diff --git a/README.md b/README.md index 826aadb..72b3abb 100644 --- a/README.md +++ b/README.md @@ -85,5 +85,3 @@ function App() { ); } ``` - -![SHOW](./show.png) diff --git a/dist/formItem.d.ts b/dist/formItem.d.ts new file mode 100644 index 0000000..0e53a7b --- /dev/null +++ b/dist/formItem.d.ts @@ -0,0 +1,2 @@ +import { IRenderFormItem } from "./interface"; +export declare const FInputNumber: IRenderFormItem; diff --git a/dist/formItem.umd.js b/dist/formItem.umd.js new file mode 100644 index 0000000..151c59d --- /dev/null +++ b/dist/formItem.umd.js @@ -0,0 +1 @@ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("react"),require("antd"));else if("function"==typeof define&&define.amd)define(["react","antd"],t);else{var r="object"==typeof exports?t(require("react"),require("antd")):t(e.React,e.antd);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(this,(function(e,t){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=132)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},132:function(e,t,r){"use strict";r.r(t),r.d(t,"FInputNumber",(function(){return f}));var n=r(0),o=r.n(n),u=r(1),f=Object(n.forwardRef)((function(e,t){var r=e.id,f=e.value,i=e.onChange,c=e.save;"number"!=typeof f&&(f=0);var a=Object(n.useRef)(null);Object(n.useImperativeHandle)(t,(function(){return{focus:function(){var e;null===(e=a.current)||void 0===e||e.input.focus()}}}),[]);return o.a.createElement(u.InputNumber,{id:r,value:f,onChange:function(e){"number"==typeof e&&i&&i(e)},onPressEnter:c,onBlur:c,ref:a,size:"small",style:{width:"100%"}})}))}})})); \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index a0f96ab..2b74c61 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,4 +1,5 @@ -/// import "./style.less"; +import React from "react"; import { IEditTableProps, IDefaultRecordType } from "./interface"; +export declare const EditableContext: React.Context; export default function EditTable(props: IEditTableProps): JSX.Element; diff --git a/dist/index.jsx b/dist/index.jsx deleted file mode 100644 index a571363..0000000 --- a/dist/index.jsx +++ /dev/null @@ -1,290 +0,0 @@ -import "./style.less"; -const ExportJsonExcel = require("js-export-excel"); -import React, { useCallback, useMemo, useState, useRef } from "react"; -import { Table, Button, Space, Popconfirm, Input, Dropdown, Menu, Checkbox, Select, message } from "antd"; -import { SearchOutlined, FilterOutlined, PushpinOutlined } from "@ant-design/icons"; -import { Resizable } from "react-resizable"; -import Highlighter from "react-highlight-words"; -function ResizableCell(props) { - const { onResize, width, ...restProps } = props; - if (!width) { - return ; - } - const [offset, setOffset] = useState(0); - return ( { - e.stopPropagation(); - e.preventDefault(); - }}/>)} draggableOpts={{ enableUserSelectHack: false }} onResize={(e, { size }) => { - setOffset(size.width - width); - }} onResizeStop={(e, data) => { - setOffset(0); - onResize(e, data); - }}> - - ); -} -export default function EditTable(props) { - const { data, title, exportFileName, loading, onAdd, onEdit, onView, onDelete, onResize, onChangeHide, onChangePin } = props; - const { columns } = props; - let etColumns; - let summaryNode = undefined; - const searchInput = useRef(null); - const [selectedRows, setSelectedRows] = useState([]); - const [searchedColumn, setSearchedColumn] = useState(""); - const [searchedText, setSearchedText] = useState(""); - const [displayColDropdownVisible, setDisplayColDropdownVisible] = useState(false); - const [pinDropdownVisible, setPinDropdownVisible] = useState(false); - const addRow = () => { - onAdd && onAdd(); - }; - const editRow = (record, index) => { - onEdit && onEdit(); - }; - const viewRow = (record, index) => { - onView && onView(); - }; - const deleteRow = (record, index) => { - onDelete && onDelete(); - }; - const components = { - header: { - cell: ResizableCell - } - }; - // 表格行ClassName设置 - const rowClassName = (record, index) => { - return index ? index % 2 === 0 ? "even" : "odd" : "even"; - }; - // 导出excel表格,deps: [exportFileName, selectedRows] - const exportExcel = useCallback(() => { - if (!data || data.length === 0) { - message.info("没有可导出的数据"); - return; - } - const exportData = selectedRows.length === 0 ? data : data.filter((d) => (selectedRows.indexOf(d["key"]) !== -1)); - const sheetFilter = ["index"]; - const sheetHeader = ["行号"]; - columns.forEach((c) => { - sheetFilter.push(c.dataIndex); - sheetHeader.push(c.title); - }); - new ExportJsonExcel({ - fileName: "数据" || exportFileName, - sheetFilter: ["index", "name"], - sheetHeader: ["行号", "姓名"], - datas: [ - { - sheetData: exportData, - sheetName: "sheet", - sheetFilter: sheetFilter, - sheetHeader: sheetHeader - } - ] - }).saveExcel(); - }, [exportFileName, selectedRows]); - // 选择显示列下拉组件 - const displayColMenu = () => { - return ( - {columns.map((c, i) => { - return ( - { - onChangeHide && onChangeHide(i, !e.target.checked); - }}>{c.title} - ); - })} - ); - }; - // 选择固定列下拉组件 - const pinColMenu = () => { - return ( - {columns.map((c, i) => { - return ( - {c.title} - searchInput.current = node} style={{ width: 188, marginBottom: 8, display: "block" }} placeholder={"输入关键字"} onPressEnter={() => handleSearch(selectedKeys, confirm, filterKey.toString())} onChange={(e) => setSelectedKeys(e.target.value ? [e.target.value] : [])}/> - - - - - ); - }, - onFilter: (value, record) => { - return record[filterKey] ? record[filterKey] - .toString().toLowerCase().includes(value.toLowerCase()) : false; - }, - render(text) { - return (searchedColumn === filterKey ? () : text); - } - }; - } - return {}; - }, [handleReset, searchedColumn, searchedText]); - // 计算列属性,deps: [columns, getColumnSearchProps] - etColumns = useMemo(() => { - // 处理特殊设置属性 - etColumns = columns.map((col, idx) => { - if (col.sortKey) { - col.sortDirections = ["descend", "ascend"]; - col.sorter = (a, b) => { - const A = a[col.sortKey]; - const B = b[col.sortKey]; - if (A < B) { - return -1; - } - else if (A > B) { - return 1; - } - else { - return 0; - } - }; - } - if (col.width) { - col.onHeaderCell = (column) => { - let w = 0; - if (typeof column.width === "number") { - w = column.width; - } - return { - width: w, - onResize: (e, data) => { - onResize && onResize(e, data, idx); - } - }; - }; - } - return { - ...col, - ...getColumnSearchProps(col.filterKey) - }; - }); - // 获得所有非隐藏的内容列 - etColumns = etColumns.filter((col) => !col.hide); - // 增加一列行号 - etColumns.unshift({ - key: "lineNum", - title: "行号", - width: "46px", - fixed: "left", - render(valuetext, record, index) { - const i = index + 1; - // eslint-disable-next-line react/prop-types - data[index].index = i; - return ({i}); - } - }); - // 增加可操作列 - etColumns.push({ - key: "options", - title: "操作", - width: "166px", - fixed: "right", - render(valuetext, record, index) { - return ( - - - deleteRow(record, index)}> - - - ); - } - }); - return etColumns; - }, [columns, getColumnSearchProps]); - // 选中行操作属性配置对象,deps: [selectedRows] - const rowSelection = useMemo(() => ({ - selections: [ - Table.SELECTION_ALL, - Table.SELECTION_INVERT - ], - columnWidth: "35px", - fixed: true, - selectedRowKeys: selectedRows, - onChange: (selectedRowKeys, selectedRows) => setSelectedRows(selectedRowKeys) - }), [selectedRows]); - // 汇总合计节点 - summaryNode = (pageData) => { - const total = []; - let haveTotal = false; - // eslint-disable-next-line react/prop-types - columns.forEach((c, i) => { - let result = 0; - if (c.totalKey) { - haveTotal = true; - pageData.forEach((data) => { - // @ts-ignore - result += data[c.totalKey]; - }); - } - total.push(result); - }); - if (!haveTotal) { - return (<>); - } - return ( - 合计: - - {columns.map((c, i) => { - return ( - {c.totalKey ? total[i] : ""} - ); - })} - - ); - }; - return (
- - ); -} diff --git a/dist/index.umd.js b/dist/index.umd.js index c7ccb10..2d597c6 100644 --- a/dist/index.umd.js +++ b/dist/index.umd.js @@ -1 +1 @@ -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("react"),require("antd"),require("@ant-design/icons"),require("react-resizable"),require("react-highlight-words"),require("js-export-excel"));else if("function"==typeof define&&define.amd)define(["react","antd","@ant-design/icons","react-resizable","react-highlight-words","js-export-excel"],e);else{var n="object"==typeof exports?e(require("react"),require("antd"),require("@ant-design/icons"),require("react-resizable"),require("react-highlight-words"),require("js-export-excel")):e(t.React,t.antd,t["@ant-design/icons"],t.Resizable,t.Highlighter,t.ExportJsonExcell);for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(this,(function(t,e,n,r,o,i){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=72)}([function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e,n){var r=n(4),o=n(34),i=n(6),a=n(35),c=n(41),u=n(57),f=o("wks"),s=r.Symbol,l=u?s:s&&s.withoutSetter||a;t.exports=function(t){return i(f,t)||(c&&i(s,t)?f[t]=s[t]:f[t]=l("Symbol."+t)),f[t]}},function(t,e,n){var r=n(4),o=n(15).f,i=n(11),a=n(18),c=n(33),u=n(52),f=n(76);t.exports=function(t,e){var n,s,l,p,d,v=t.target,y=t.global,h=t.stat;if(n=y?r:h?r[v]||c(v,{}):(r[v]||{}).prototype)for(s in e){if(p=e[s],l=t.noTargetGet?(d=o(n,s))&&d.value:n[s],!f(y?s:v+(h?".":"#")+s,t.forced)&&void 0!==l){if(typeof p==typeof l)continue;u(p,l)}(t.sham||l&&l.sham)&&i(p,"sham",!0),a(n,s,p,t)}}},function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")()}).call(this,n(74))},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(5);t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(7),o=n(48),i=n(12),a=n(22),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return c(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(32),o=n(17);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(7),o=n(9),i=n(16);t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(8);t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},function(t,e,n){var r=n(17);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(7),o=n(5),i=n(6),a=Object.defineProperty,c={},u=function(t){throw t};t.exports=function(t,e){if(i(c,t))return c[t];e||(e={});var n=[][t],f=!!i(e,"ACCESSORS")&&e.ACCESSORS,s=i(e,0)?e[0]:u,l=i(e,1)?e[1]:void 0;return c[t]=!!n&&!o((function(){if(f&&!r)return!0;var t={length:-1};f?a(t,1,{enumerable:!0,get:u}):t[1]=1,n.call(t,s,l)}))}},function(t,e,n){var r=n(7),o=n(31),i=n(16),a=n(10),c=n(22),u=n(6),f=n(48),s=Object.getOwnPropertyDescriptor;e.f=r?s:function(t,e){if(t=a(t),e=c(e,!0),f)try{return s(t,e)}catch(t){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(4),o=n(11),i=n(6),a=n(33),c=n(50),u=n(23),f=u.get,s=u.enforce,l=String(String).split("String");(t.exports=function(t,e,n,c){var u=!!c&&!!c.unsafe,f=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),s(n).source=l.join("string"==typeof e?e:"")),t!==r?(u?!p&&t[e]&&(f=!0):delete t[e],f?t[e]=n:o(t,e,n)):f?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&f(this).source||c(this)}))},function(t,e){t.exports={}},function(t,e){t.exports=n},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var r=n(8);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){var r,o,i,a=n(75),c=n(4),u=n(8),f=n(11),s=n(6),l=n(24),p=n(26),d=c.WeakMap;if(a){var v=new d,y=v.get,h=v.has,g=v.set;r=function(t,e){return g.call(v,t,e),e},o=function(t){return y.call(v,t)||{}},i=function(t){return h.call(v,t)}}else{var b=l("state");p[b]=!0,r=function(t,e){return f(t,b,e),e},o=function(t){return s(t,b)?t[b]:{}},i=function(t){return s(t,b)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!u(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},function(t,e,n){var r=n(34),o=n(35),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e){t.exports=!1},function(t,e){t.exports={}},function(t,e,n){var r=n(54),o=n(4),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},function(t,e,n){var r=n(38),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(55),o=n(39);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e,n){var r=n(60),o=n(32),i=n(13),a=n(28),c=n(81),u=[].push,f=function(t){var e=1==t,n=2==t,f=3==t,s=4==t,l=6==t,p=5==t||l;return function(d,v,y,h){for(var g,b,m=i(d),x=o(m),S=r(v,y,3),O=a(x.length),w=0,j=h||c,E=e?j(d,O):n?j(d,0):void 0;O>w;w++)if((p||w in x)&&(b=S(g=x[w],w,m),t))if(e)E[w]=b;else if(b)switch(t){case 3:return!0;case 5:return g;case 6:return w;case 2:u.call(E,g)}else if(s)return!1;return l?-1:f||s?s:E}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6)}},function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},function(t,e,n){var r=n(5),o=n(21),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,e,n){var r=n(4),o=n(11);t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},function(t,e,n){var r=n(25),o=n(51);(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},function(t,e,n){var r=n(55),o=n(39).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){var r=n(10),o=n(28),i=n(56),a=function(t){return function(e,n,a){var c,u=r(e),f=o(u.length),s=i(a,f);if(t&&n!=n){for(;f>s;)if((c=u[s++])!=c)return!0}else for(;f>s;s++)if((t||s in u)&&u[s]===n)return t||s||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(5);t.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},function(t,e,n){var r=n(21);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r,o=n(12),i=n(77),a=n(39),c=n(26),u=n(78),f=n(49),s=n(24),l=s("IE_PROTO"),p=function(){},d=function(t){return"