@teppen/react-ui 0.7.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +58 -12
  2. package/dist/cjs/src/table/base.js +1 -1
  3. package/dist/cjs/src/table/cell.js +2 -1
  4. package/dist/cjs/src/table/cell.js.map +1 -1
  5. package/dist/cjs/src/table/edit/hooks.js +2 -0
  6. package/dist/cjs/src/table/edit/hooks.js.map +1 -0
  7. package/dist/cjs/src/table/edit/provider.js +3 -0
  8. package/dist/cjs/src/table/edit/provider.js.map +1 -0
  9. package/dist/cjs/src/table/filter/components.js +1 -1
  10. package/dist/cjs/src/table/filter/hooks.js.map +1 -1
  11. package/dist/cjs/src/table/filter/provider.js +1 -1
  12. package/dist/cjs/src/table/header.js +1 -1
  13. package/dist/cjs/src/table/header.js.map +1 -1
  14. package/dist/cjs/src/table/hook.js +1 -1
  15. package/dist/cjs/src/table/hook.js.map +1 -1
  16. package/dist/cjs/src/table/pagenation/hooks.js.map +1 -1
  17. package/dist/cjs/src/table/pagenation/providers.js +1 -1
  18. package/dist/cjs/src/table/sheet/providers.js +3 -0
  19. package/dist/cjs/src/table/sheet/providers.js.map +1 -0
  20. package/dist/cjs/src/table/sort/components.js +1 -1
  21. package/dist/cjs/src/table/sort/hooks.js.map +1 -1
  22. package/dist/esm/src/table/base.js +1 -1
  23. package/dist/esm/src/table/cell.js +2 -1
  24. package/dist/esm/src/table/cell.js.map +1 -1
  25. package/dist/esm/src/table/edit/hooks.js +2 -0
  26. package/dist/esm/src/table/edit/hooks.js.map +1 -0
  27. package/dist/esm/src/table/edit/provider.js +3 -0
  28. package/dist/esm/src/table/edit/provider.js.map +1 -0
  29. package/dist/esm/src/table/filter/components.js +1 -1
  30. package/dist/esm/src/table/filter/hooks.js.map +1 -1
  31. package/dist/esm/src/table/filter/provider.js +1 -1
  32. package/dist/esm/src/table/header.js +1 -1
  33. package/dist/esm/src/table/header.js.map +1 -1
  34. package/dist/esm/src/table/hook.js +1 -1
  35. package/dist/esm/src/table/hook.js.map +1 -1
  36. package/dist/esm/src/table/pagenation/hooks.js.map +1 -1
  37. package/dist/esm/src/table/pagenation/providers.js +1 -1
  38. package/dist/esm/src/table/sheet/providers.js +3 -0
  39. package/dist/esm/src/table/sheet/providers.js.map +1 -0
  40. package/dist/esm/src/table/sort/components.js +1 -1
  41. package/dist/esm/src/table/sort/hooks.js.map +1 -1
  42. package/dist/index.d.ts +18 -19
  43. package/package.json +1 -1
package/README.md CHANGED
@@ -6,7 +6,7 @@ This is a React component library that provides some useful UI elements for your
6
6
 
7
7
  This library includes the following components:
8
8
 
9
- - Table: A simple Table. (0.1.0 ~)
9
+ - Table: A simple Table. (1.0.0 ~) (※ Not compatible with 0.\*.\*)
10
10
 
11
11
  ## Installation
12
12
 
@@ -63,28 +63,28 @@ const App = () => {
63
63
  name: "Taro",
64
64
  age: 30,
65
65
  role: "",
66
- button: <button>Click</button>,
66
+ button: "Click",
67
67
  },
68
68
  {
69
69
  id: 2,
70
70
  name: "Yoshiko",
71
71
  age: 60,
72
72
  role: "1",
73
- button: <button>Click</button>,
73
+ button: "Click",
74
74
  },
75
75
  {
76
76
  id: 3,
77
77
  name: "Koki",
78
78
  age: 13,
79
79
  role: "2",
80
- button: <button>Click</button>,
80
+ button: "Click",
81
81
  },
82
82
  {
83
83
  id: 4,
84
84
  name: "Chisato",
85
85
  age: 34,
86
86
  role: "2",
87
- button: <button>Click</button>,
87
+ button: "Click",
88
88
  },
89
89
  ]}
90
90
  cols={[
@@ -120,8 +120,32 @@ const App = () => {
120
120
  completeEditing();
121
121
  },
122
122
  },
123
- { key: "button", type: "component" },
123
+ {
124
+ key: "button",
125
+ label: "ボタン",
126
+ type: "string",
127
+ render: (value, row) => (
128
+ <button
129
+ className="px-2 py-1 text-white bg-blue-500 rounded-md"
130
+ onClick={(e) => {
131
+ e.preventDefault();
132
+ alert(`Clicked button: (id: ${row.id})`);
133
+ }}
134
+ >
135
+ {value}
136
+ </button>
137
+ ),
138
+ },
124
139
  ]}
140
+ initialCondition={{
141
+ sort: {
142
+ key: "id",
143
+ asc: true,
144
+ },
145
+ }}
146
+ onClickRow={(row) => {
147
+ alert(`Clicked row: (id: ${row.id})`);
148
+ }}
125
149
  />
126
150
  </div>
127
151
  );
@@ -135,26 +159,27 @@ export default App;
135
159
  A component that displays a table based on the row and column information passed as arguments. The table component has the following features:
136
160
 
137
161
  - Pagination function
162
+ - Sorting function
138
163
  - Filtering function (only when `label` is set in the column information)
139
- - Sorting function (only when `label` is set in the column information)
140
164
  - Editing function (only when `editable` is true and `onCellBlur` is set in the column information)
141
165
 
142
166
  #### Arguments
143
167
 
144
- The table component only accepts the arguments `rows` and `cols`. Details for each argument are described below.
168
+ The table component only accepts the arguments `rows`, `cols`, `initialCondition` and `onClickRow`. Details for each argument are described below.
145
169
 
146
170
  ##### rows
147
171
 
148
- `rows` is an array of the following associative array (`DataObject`). Only id is required and it must be unique within the array. If onClick is set, it is possible to define the behavior when a row is clicked.
172
+ `rows` is an array of the following associative array (`DataObject`). Only id is required and it must be unique within the array.
149
173
 
150
174
  ```ts
151
175
  export type DataObject = {
152
- [key: string]: any;
176
+ [key: string]: number | string;
153
177
  id: number | string;
154
- onClick?: React.MouseEventHandler<HTMLTableRowElement>;
155
178
  };
156
179
  ```
157
180
 
181
+ ※ `onClick` property has been deprecated since version 1.0.0 in favor of the new Table argument `onClickRow`
182
+
158
183
  ##### cols
159
184
 
160
185
  In `cols`, you specify the data to be displayed in the table from left to right. The `key` here needs to match the key name in each element of rows. However, it is not necessary to always include the key `id`. `label` is optional, but it is required for some functions, so it is recommended to set it.
@@ -162,7 +187,7 @@ In `cols`, you specify the data to be displayed in the table from left to right.
162
187
  When the `type` set `component`, editing, filtering, and sorting functions are not available. However, it is possible to embed a React Component created by the user into a cell.
163
188
 
164
189
  ```ts
165
- export type TColumnType = "string" | "number" | "select" | "component";
190
+ export type TColumnType = "string" | "number" | "select";
166
191
 
167
192
  export type TTableColumn = {
168
193
  key: string;
@@ -170,6 +195,7 @@ export type TTableColumn = {
170
195
  options: { value: string; label: string }[]; // Only When "type" is "select"
171
196
  label?: string;
172
197
  editable?: boolean;
198
+ render?: (value: string | number, row: DataObject) => React.ReactNode; // Only When "editable" is false
173
199
  allowEmpty?: boolean; // Only When "type" is "select"
174
200
  constraints?: {
175
201
  maxLength?: number; // Only when "type" is "string"
@@ -187,6 +213,26 @@ export type TTableColumn = {
187
213
  };
188
214
  ```
189
215
 
216
+ ※ TColumnType no longer supports `component` since version 1.0.0. Instead, `render` is now supported, allowing for sorting and filtering functions that were not previously supported by `component`.
217
+
218
+ ##### initialCondition
219
+
220
+ In `initialCondition`, you can set initial values for each function. This is optional.
221
+
222
+ ```ts
223
+ type TInitialCondition = {
224
+ sort?: { key: string; asc?: boolean };
225
+ };
226
+ ```
227
+
228
+ ##### onClickRow
229
+
230
+ In `onClickRow`, You may define the behavior when a row is clicked. This is optional.
231
+
232
+ ```ts
233
+ type TOnClickRow = (row: DataObject) => void;
234
+ ```
235
+
190
236
  ## License
191
237
 
192
238
  This library is licensed under MIT license. See LICENSE file for more information.
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),l=require("react"),n=require("./hook.js"),i=require("./cell.js"),s=require("./header.js"),t=require("./pagenation/providers.js"),o=require("./pagenation/components.js"),a=require("./filter/provider.js"),d=require("./filter/components.js"),c=require("./sort/components.js"),u=require("./sort/provider.js");function j(t){var a=n.useTable(t),u=a.cols,j=a.rows,x=l.useState(!1),h=x[0],m=x[1];return r.jsxs("div",{className:"w-full",children:[r.jsx("div",{className:"flex justify-end",children:r.jsx(d.TableFilterRemoveButton,{children:"remove all filters"})}),r.jsx("div",{className:"relative w-full h-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:r.jsxs("table",{className:"table table-auto w-full",children:[r.jsx("thead",{children:r.jsx("tr",{className:"sticky top-0 border-gray-200 z-20",children:u.map((function(e){return r.jsx(s.TableHeaderElement,{label:e.label,sortConponent:"component"!==e.type?r.jsx(c.SortButton,{keyName:e.key}):void 0,filterComponent:"component"!==e.type?r.jsx(d.TableFilter,{keyName:e.key,onClick:function(e){e.preventDefault(),m((function(e){return!e}))}}):void 0},e.key)}))})}),r.jsxs("tbody",{children:[h&&r.jsx("tr",{children:r.jsx("td",{colSpan:u.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl py-5 px-2 z-20",children:r.jsx("div",{className:"container max-w-[768px] mx-auto",children:r.jsxs("div",{className:"relative",children:[r.jsx("div",{className:"absolute top-0 right-0",children:r.jsx("button",{onClick:function(e){e.preventDefault(),m(!1)},children:"close"})}),r.jsx("div",{children:r.jsx(d.TableFilterForm,{cols:u})})]})})})}),0===j.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:u.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),j.map((function(l){var n;return r.jsx("tr",{className:"border border-gray-200 hover:bg-gray-100 ".concat((null===(n=j[0])||void 0===n?void 0:n.onClick)?"hover:cursor-pointer":""),onClick:l.onClick,"data-testid":l.id,children:u.map((function(n){var s=n.key,t=e.__rest(n,["key"]);return r.jsx(i.TableCell,e.__assign({},t,{columnKey:null==n?void 0:n.key,currentRecord:l,children:l[null==n?void 0:n.key]}),s)}))},l.id)}))]})]})}),r.jsxs("div",{className:"mt-1",children:[r.jsx(o.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(o.Pagenation,{})})]})]})}module.exports=function(l){var n;return r.jsx(a.FilterProvider,{children:r.jsx(u.SortProvider,{initialCondition:null===(n=l.initialCondition)||void 0===n?void 0:n.sort,children:r.jsx(t.PagenationProvider,{rowCount:l.rows.length,children:r.jsx(j,e.__assign({},l))})})})};
2
+ "use strict";var e=require("../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),t=require("react"),n=require("./hook.js"),o=require("./cell.js"),i=require("./header.js"),s=require("./pagenation/providers.js"),l=require("./pagenation/components.js"),d=require("./filter/provider.js"),a=require("./filter/components.js");require("./sort/icon.js");var c=require("./sort/provider.js"),u=require("./sheet/providers.js"),v=require("./edit/provider.js");function x(e){var s=n.useTable(e),c=s.cols,x=s.rows,h=v.useFocusContext(),j=h.isFocus,m=h.isEditing,f=h.edit,p=h.moveLeft,y=h.moveRight,g=h.moveUp,w=h.moveDown,b=h.unfocus,k=h.setMaxRowNumber,q=d.useFilterContext().selectedFilterKey;return t.useEffect((function(){var e=function(e){j&&!m&&("Enter"===e.key?(e.preventDefault(),w()):"Escape"===e.key?(e.preventDefault(),b()):"ArrowRight"===e.key?(e.preventDefault(),y()):"ArrowLeft"===e.key?(e.preventDefault(),p()):"ArrowUp"===e.key?(e.preventDefault(),g()):"ArrowDown"===e.key?(e.preventDefault(),w()):"F2"===e.key&&f())};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[m,j]),t.useEffect((function(){k(x.length-1)}),[x.length]),r.jsxs("div",{className:"w-full",children:[r.jsx("div",{className:"flex justify-end mb-1 mr-3",children:r.jsx(a.TableFilterRemoveButton,{children:r.jsx("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),r.jsx("div",{className:"relative w-full h-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:r.jsxs("table",{className:"table table-auto w-full",children:[r.jsx("thead",{children:r.jsx("tr",{className:"sticky top-0 border-gray-200 z-20",children:c.map((function(e){return r.jsx(i.TableHeaderElement,{columnKey:e.key},e.key)}))})}),r.jsxs("tbody",{children:[!!q&&r.jsx("tr",{children:r.jsx("td",{colSpan:c.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r.jsx(a.TableFilterForm,{})})}),0===x.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:c.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),x.map((function(t,n){return r.jsx(u.RowProvider,{row:t,children:r.jsx("tr",{className:"border border-gray-200 hover:bg-gray-100 ".concat(e.onClickRow?"hover:cursor-pointer":""),onClick:function(r){r.preventDefault(),e.onClickRow&&e.onClickRow(t)},"data-testid":t.id,children:c.map((function(e,t){return r.jsx(u.CellProvider,{columnKey:e.key,rowIndex:n,colIndex:t,children:r.jsx(o.TableCell,{})},e.key)}))})},t.id)}))]})]})}),r.jsxs("div",{className:"mt-1",children:[r.jsx(l.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(l.Pagenation,{})})]})]})}module.exports=function(t){var n;return r.jsx(d.FilterProvider,{children:r.jsx(c.SortProvider,{initialCondition:null===(n=t.initialCondition)||void 0===n?void 0:n.sort,children:r.jsx(s.PagenationProvider,{rowCount:t.rows.length,children:r.jsx(u.ColumnsProvider,{cols:t.cols,children:r.jsx(v.FocusProvider,{columnCount:t.cols.length,children:r.jsx(x,e.__assign({},t))})})})})})};
3
3
  //# sourceMappingURL=base.js.map
@@ -1,2 +1,3 @@
1
- "use strict";var e=require("react/jsx-runtime"),n=require("react"),t=require("./edit-icon.js"),r=require("./cancel-icon.js"),c=n.forwardRef((function(n,t){return e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",children:[e.jsx("input",{ref:t,className:"w-full py-1 px-2",type:"text",value:n.value,onChange:n.onChange,onBlur:n.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(n.reset(),n.endEditing())}}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),n.reset(),n.endEditing()},children:e.jsx(r.CancelIcon,{size:16})})]})}));function l(t){var r=n.useState(t.currentRecord[t.columnKey]),l=r[0],o=r[1];return e.jsx(c,{ref:t.currentRef,value:l,onChange:function(e){e.preventDefault(),o(e.target.value)},onBlur:function(e){e.preventDefault(),l!==t.currentRecord[t.columnKey]?!function(){var e,n,r;return(null===(e=t.constraints)||void 0===e?void 0:e.maxLength)&&l.length>t.constraints.maxLength?(alert("最大文字数(".concat(t.constraints.maxLength,")を超過しています。(現在").concat(l.length,"文字)")),!1):(null===(n=t.constraints)||void 0===n?void 0:n.minLength)&&l.length<t.constraints.minLength?(alert("最小文字数(".concat(t.constraints.minLength,")を下回っています。(現在").concat(l.length,"文字)")),!1):!((null===(r=t.constraints)||void 0===r?void 0:r.pattern)&&!new RegExp(t.constraints.pattern).test(l)&&(alert("パターンに一致しません。(パターン".concat(t.constraints.pattern,")")),1))}()?setTimeout((function(){e.target.focus()}),100):(t.onCellBlur(t.columnKey,l,t.currentRecord,t.compEditing),t.setOccurredOnCellBlur()):t.compEditing()},reset:function(){return o(t.currentRecord[t.columnKey])},endEditing:t.compEditing})}function o(t){var r=n.useState(t.currentRecord[t.columnKey].toString()),l=r[0],o=r[1];return e.jsx(c,{ref:t.currentRef,value:l,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?o(e.target.value):isNaN(Number(e.target.value))||o(Number(e.target.value).toString()):o("-0"):o("0")},onBlur:function(e){e.preventDefault(),Number(l)!==t.currentRecord[t.columnKey]?!function(){var e,n,r=parseInt(l);return(null===(e=t.constraints)||void 0===e?void 0:e.max)&&r>t.constraints.max?(alert("最大値(".concat(t.constraints.max,")を超過しています。(入力値:").concat(r,")")),!1):!((null===(n=t.constraints)||void 0===n?void 0:n.min)&&r<t.constraints.min&&(alert("最小値(".concat(t.constraints.min,")を下回っています。(入力値:").concat(r,")")),1))}()?setTimeout((function(){e.target.focus()}),100):(t.onCellBlur(t.columnKey,Number(l),t.currentRecord,t.compEditing),t.setOccurredOnCellBlur()):t.compEditing()},reset:function(){return o(t.currentRecord[t.columnKey].toString())},endEditing:t.compEditing})}function u(t){var c=n.useState(t.currentRecord[t.columnKey]),l=c[0],o=c[1];return e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",children:[e.jsxs("select",{ref:t.currentRef,className:"w-full py-1 px-2",value:l,onChange:function(e){e.preventDefault(),o(e.target.value)},onBlur:function(e){e.preventDefault(),t.onCellBlur(t.columnKey,l,t.currentRecord,t.compEditing),t.setOccurredOnCellBlur()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(o(t.currentRecord[t.columnKey]),t.compEditing())},children:[t.allowEmpty&&e.jsx("option",{value:"",children:""==t.currentRecord[t.columnKey]?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),t.options.map((function(n){return e.jsx("option",{value:n.value,children:n.label},n.value)}))]}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),o(t.currentRecord[t.columnKey]),t.compEditing()},children:e.jsx(r.CancelIcon,{size:16})})]})}var i=n.memo((function(r){var c,i=n.useState(!1),a=i[0],s=i[1],d=n.useRef(null),f=n.useState(!1),p=f[0],m=f[1],v=n.useCallback((function(){s(!1)}),[s]);return n.useEffect((function(){var e;a&&(null===(e=d.current)||void 0===e||e.focus()),m(!1)}),[a,p]),e.jsx("td",{children:e.jsxs("div",{className:"relative",children:[e.jsxs("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default ".concat(a?"opacity-0":""),onClick:function(e){e.preventDefault(),e.stopPropagation()},children:["component"===r.type?r.children:e.jsx("div",{onDoubleClick:function(e){e.preventDefault(),r.editable&&s(!0)},children:e.jsx("p",{className:"text-left",children:"select"===r.type?null===(c=r.options.find((function(e){return e.value===r.children})))||void 0===c?void 0:c.label:r.children})}),r.editable&&e.jsx("button",{className:"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200",onClick:function(e){e.preventDefault(),r.editable&&s(!0)},children:e.jsx(t.EditIcon,{size:12})})]}),r.editable&&a&&e.jsxs("div",{className:"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:["string"===r.type&&e.jsx(l,{currentRef:d,columnKey:r.columnKey,currentRecord:r.currentRecord,compEditing:v,onCellBlur:r.onCellBlur,constraints:r.constraints,setOccurredOnCellBlur:function(){m(!0)}}),"number"===r.type&&e.jsx(o,{currentRef:d,columnKey:r.columnKey,currentRecord:r.currentRecord,compEditing:v,onCellBlur:r.onCellBlur,constraints:r.constraints,setOccurredOnCellBlur:function(){m(!0)}}),"select"===r.type&&e.jsx(u,{currentRef:d,columnKey:r.columnKey,currentRecord:r.currentRecord,compEditing:v,options:r.options,allowEmpty:r.allowEmpty,onCellBlur:r.onCellBlur,setOccurredOnCellBlur:function(){m(!0)}})]})]})})}));exports.TableCell=i;
1
+ "use client";
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("./edit-icon.js"),l=require("./cancel-icon.js"),r=require("./sheet/providers.js"),o=require("./edit/provider.js"),u=require("./hook.js"),i=t.forwardRef((function(t,n){return e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",children:[e.jsx("input",{ref:n,className:"w-full py-1 px-2",type:"text",value:t.value,onChange:t.onChange,onBlur:t.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(t.reset(),t.endEditing())}}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),t.reset(),t.endEditing()},children:e.jsx(l.CancelIcon,{size:16})})]})}));function a(){var n=r.useCellContext(),l=r.useColumnContext(n.columnKey),a=r.useRowContext(),s=o.useFocusContext().finishEditing,c=u.useCellFocus(),f=c.ref,v=c.callbackAfterBlur,d=t.useState(a[n.columnKey]),x=d[0],p=d[1];if(!l.editable||"string"!==l.type)throw new Error("Invalid condition");return e.jsx(i,{ref:f,value:x,onChange:function(e){e.preventDefault(),p(e.target.value)},onBlur:function(e){e.preventDefault(),x!==a[n.columnKey]?!function(){var e,t,n;return(null===(e=l.constraints)||void 0===e?void 0:e.maxLength)&&x.length>l.constraints.maxLength?(alert("最大文字数(".concat(l.constraints.maxLength,")を超過しています。(現在").concat(x.length,"文字)")),!1):(null===(t=l.constraints)||void 0===t?void 0:t.minLength)&&x.length<l.constraints.minLength?(alert("最小文字数(".concat(l.constraints.minLength,")を下回っています。(現在").concat(x.length,"文字)")),!1):!((null===(n=l.constraints)||void 0===n?void 0:n.pattern)&&!new RegExp(l.constraints.pattern).test(x)&&(alert("パターンに一致しません。(パターン".concat(l.constraints.pattern,")")),1))}()?setTimeout((function(){e.target.focus()}),100):(l.onCellBlur(n.columnKey,x,a,s),v()):s()},reset:function(){return p(a[n.columnKey].toString())},endEditing:s})}function s(){var n=r.useCellContext(),l=r.useColumnContext(n.columnKey),a=r.useRowContext(),s=o.useFocusContext().finishEditing,c=u.useCellFocus(),f=c.ref,v=c.callbackAfterBlur,d=t.useState(n.value.toString()),x=d[0],p=d[1];if(!l.editable||"number"!==l.type)throw new Error("Invalid condition");return e.jsx(i,{ref:f,value:x,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?p(e.target.value):isNaN(Number(e.target.value))||p(Number(e.target.value).toString()):p("-0"):p("0")},onBlur:function(e){e.preventDefault(),Number(x)!==n.value?!function(){var e,t,n=parseInt(x);return(null===(e=l.constraints)||void 0===e?void 0:e.max)&&n>l.constraints.max?(alert("最大値(".concat(l.constraints.max,")を超過しています。(入力値:").concat(n,")")),!1):!((null===(t=l.constraints)||void 0===t?void 0:t.min)&&n<l.constraints.min&&(alert("最小値(".concat(l.constraints.min,")を下回っています。(入力値:").concat(n,")")),1))}()?setTimeout((function(){e.target.focus()}),100):(l.onCellBlur(n.columnKey,Number(x),a,s),v()):s()},reset:function(){return p(n.value.toString())},endEditing:s})}function c(){var n=r.useCellContext(),i=r.useColumnContext(n.columnKey),a=r.useRowContext(),s=o.useFocusContext().finishEditing,c=u.useCellFocus(),f=c.ref,v=c.callbackAfterBlur,d=t.useState(n.value),x=d[0],p=d[1];if(!i.editable||"select"!==i.type)throw new Error("Invalid condition");return e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",children:[e.jsxs("select",{ref:f,className:"w-full py-1 px-2",value:x,onChange:function(e){e.preventDefault(),p(e.target.value)},onBlur:function(e){e.preventDefault(),x!==n.value?(i.onCellBlur(n.columnKey,x,a,s),v()):s()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(p(n.value),s())},children:[i.allowEmpty&&e.jsx("option",{value:"",children:""==n.value?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),i.options.map((function(t){return e.jsx("option",{value:t.value,children:t.label},t.value)}))]}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),p(n.value),s()},children:e.jsx(l.CancelIcon,{size:16})})]})}var f=t.memo((function(){var t=r.useCellContext(),l=o.useFocusContext().focusAndEdit;return e.jsx("button",{className:"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200",onClick:function(e){e.preventDefault(),l(t.rowIndex,t.colIndex)},children:e.jsx(n.EditIcon,{size:12})})}));exports.TableCell=function(){var t=u.useCell(),n=t.cell,l=t.isFocus,o=t.isEditing,i=t.onClickCellToFocus,v=t.onDoubleClickCellToEdit,d=t.preventPropagation,x=r.useRowContext();return e.jsx("td",{className:"".concat(l?"outline outline-1 -outline-offset-1 outline-gray-400":""),children:e.jsxs("div",{className:"relative",children:[e.jsxs("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default ".concat(l&&o?"opacity-0":""),onClick:i,children:[n.render?n.render(n.value,x):e.jsx("div",{onDoubleClick:v,children:e.jsx("p",{className:"text-left",children:n.label})}),n.editable&&e.jsx(f,{})]}),n.editable&&l&&o&&e.jsxs("div",{className:"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2",onClick:d,children:["string"===n.type&&e.jsx(a,{}),"number"===n.type&&e.jsx(s,{}),"select"===n.type&&e.jsx(c,{})]})]})})};
2
3
  //# sourceMappingURL=cell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cell.js","sources":["../../../../src/table/cell.tsx"],"sourcesContent":["import {\n memo,\n useEffect,\n useRef,\n useState,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { DataObject, TCellEditingCondition } from \"./type\";\nimport { EditIcon } from \"./edit-icon\";\nimport { CancelIcon } from \"./cancel-icon\";\n\ntype TPropsCell<T extends DataObject> = {\n currentRecord: T;\n columnKey: string;\n children: string | number;\n} & TCellEditingCondition<T>;\n\nconst CellInput = forwardRef(function CI<T extends string | number>(\n props: {\n value: T;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;\n reset: () => void;\n endEditing: () => void;\n },\n ref: React.ForwardedRef<HTMLInputElement>\n) {\n return (\n <div className=\"flex justify-between gap-1 w-full items-center\">\n <input\n ref={ref}\n className=\"w-full py-1 px-2\"\n type=\"text\"\n value={props.value}\n onChange={props.onChange}\n onBlur={props.onBlur}\n onKeyUp={(e: React.KeyboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n if (e.key === \"Enter\") {\n (e.target as HTMLInputElement).blur();\n } else if (e.key === \"Escape\") {\n props.reset();\n props.endEditing();\n }\n }}\n />\n <button\n onMouseDown={(e) => {\n e.preventDefault();\n props.reset();\n props.endEditing();\n }}\n >\n <CancelIcon size={16} />\n </button>\n </div>\n );\n});\n\nfunction StringCellInput<T extends DataObject>(props: {\n currentRef: React.ForwardedRef<HTMLInputElement>;\n columnKey: string;\n currentRecord: T;\n compEditing: () => void;\n onCellBlur: (\n key: string,\n value: string,\n current: T,\n completeEditing: () => void\n ) => void;\n constraints?: { maxLength?: number; minLength?: number; pattern?: string };\n setOccurredOnCellBlur: () => void;\n}) {\n const [value, setValue] = useState(\n props.currentRecord[props.columnKey] as string\n );\n\n const validate = () => {\n if (props.constraints?.maxLength) {\n if (value.length > props.constraints.maxLength) {\n alert(\n `最大文字数(${props.constraints.maxLength})を超過しています。(現在${value.length}文字)`\n );\n return false;\n }\n }\n if (props.constraints?.minLength) {\n if (value.length < props.constraints.minLength) {\n alert(\n `最小文字数(${props.constraints.minLength})を下回っています。(現在${value.length}文字)`\n );\n return false;\n }\n }\n if (props.constraints?.pattern) {\n if (!new RegExp(props.constraints.pattern).test(value)) {\n alert(`パターンに一致しません。(パターン${props.constraints.pattern})`);\n return false;\n }\n }\n return true;\n };\n\n return (\n <CellInput\n ref={props.currentRef}\n value={value}\n onChange={(e) => {\n e.preventDefault();\n setValue(e.target.value);\n }}\n onBlur={(e) => {\n e.preventDefault();\n\n if (value === props.currentRecord[props.columnKey]) {\n props.compEditing();\n return;\n }\n\n if (!validate()) {\n setTimeout(() => {\n e.target.focus();\n }, 100);\n return;\n }\n\n props.onCellBlur(\n props.columnKey,\n value,\n props.currentRecord,\n props.compEditing\n );\n\n props.setOccurredOnCellBlur();\n }}\n reset={() => setValue(props.currentRecord[props.columnKey])}\n endEditing={props.compEditing}\n />\n );\n}\n\nfunction NumberCellInput<T extends DataObject>(props: {\n currentRef: React.ForwardedRef<HTMLInputElement>;\n columnKey: string;\n currentRecord: T;\n compEditing: () => void;\n onCellBlur: (\n key: string,\n value: number,\n current: T,\n completeEditing: () => void\n ) => void;\n constraints?: { max?: number; min?: number };\n setOccurredOnCellBlur: () => void;\n}) {\n const [value, setValue] = useState(\n (props.currentRecord[props.columnKey] as number).toString()\n );\n\n const validate = () => {\n const v = parseInt(value);\n\n if (props.constraints?.max) {\n if (v > props.constraints.max) {\n alert(\n `最大値(${props.constraints.max})を超過しています。(入力値:${v})`\n );\n return false;\n }\n }\n\n if (props.constraints?.min) {\n if (v < props.constraints.min) {\n alert(\n `最小値(${props.constraints.min})を下回っています。(入力値:${v})`\n );\n return false;\n }\n }\n\n return true;\n };\n\n return (\n <CellInput\n ref={props.currentRef}\n value={value}\n onChange={(e) => {\n e.preventDefault();\n\n if (e.target.value === \"\") {\n setValue(\"0\");\n return;\n }\n\n if (e.target.value === \"-\" || e.target.value === \"0-\") {\n setValue(\"-0\");\n return;\n }\n\n if (e.target.value.match(/^-?[0-9]+\\.$/)) {\n setValue(e.target.value);\n return;\n }\n\n if (isNaN(Number(e.target.value))) {\n return;\n }\n\n setValue(Number(e.target.value).toString());\n }}\n onBlur={(e) => {\n e.preventDefault();\n\n if (Number(value) === props.currentRecord[props.columnKey]) {\n props.compEditing();\n return;\n }\n\n if (!validate()) {\n setTimeout(() => {\n e.target.focus();\n }, 100);\n return;\n }\n\n props.onCellBlur(\n props.columnKey,\n Number(value),\n props.currentRecord,\n props.compEditing\n );\n\n props.setOccurredOnCellBlur();\n }}\n reset={() =>\n setValue((props.currentRecord[props.columnKey] as number).toString())\n }\n endEditing={props.compEditing}\n />\n );\n}\n\nfunction SelectCellInput<T extends DataObject>(props: {\n currentRef: React.ForwardedRef<HTMLSelectElement>;\n columnKey: string;\n currentRecord: T;\n compEditing: () => void;\n options: { value: string; label: string }[];\n allowEmpty?: boolean;\n onCellBlur: (\n key: string,\n value: string,\n current: T,\n completeEditing: () => void\n ) => void;\n setOccurredOnCellBlur: () => void;\n}) {\n const [value, setValue] = useState(\n props.currentRecord[props.columnKey] as string\n );\n\n return (\n <div className=\"flex justify-between gap-1 w-full items-center\">\n <select\n ref={props.currentRef}\n className=\"w-full py-1 px-2\"\n value={value}\n onChange={(e) => {\n e.preventDefault();\n setValue(e.target.value);\n }}\n onBlur={(e) => {\n e.preventDefault();\n\n props.onCellBlur(\n props.columnKey,\n value,\n props.currentRecord,\n props.compEditing\n );\n\n props.setOccurredOnCellBlur();\n }}\n onKeyDown={(e: React.KeyboardEvent<HTMLSelectElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n onKeyUp={(e: React.KeyboardEvent<HTMLSelectElement>) => {\n e.preventDefault();\n if (e.key === \"Enter\") {\n (e.target as HTMLSelectElement).blur();\n } else if (e.key === \"Escape\") {\n setValue(props.currentRecord[props.columnKey] as string);\n props.compEditing();\n }\n }}\n >\n {props.allowEmpty && (\n <option key=\"TEPPEN/ReactUI Empty Option\" value=\"\">\n {props.currentRecord[props.columnKey] == \"\"\n ? \"-- 未選択 --\"\n : \"-- 選択解除 --\"}\n </option>\n )}\n {props.options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n <button\n onMouseDown={(e) => {\n e.preventDefault();\n setValue(props.currentRecord[props.columnKey] as string);\n props.compEditing();\n }}\n >\n <CancelIcon size={16} />\n </button>\n </div>\n );\n}\n\nfunction _TableCell<T extends DataObject>(props: TPropsCell<T>) {\n const [isEditing, setIsEditing] = useState(false);\n const ref = useRef<HTMLElement>(null);\n const [occurredOnCellBlur, setOccurredOnCellBlur] = useState(false);\n\n const compEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n useEffect(() => {\n if (isEditing) {\n ref.current?.focus();\n }\n setOccurredOnCellBlur(false);\n }, [isEditing, occurredOnCellBlur]);\n\n return (\n <td>\n <div className=\"relative\">\n <div\n className={`flex items-center gap-3 w-fit p-2 cursor-default ${\n isEditing ? \"opacity-0\" : \"\"\n }`}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {props.type === \"component\" ? (\n props.children\n ) : (\n <div\n onDoubleClick={(e) => {\n e.preventDefault();\n if (props.editable) {\n setIsEditing(true);\n }\n }}\n >\n <p className=\"text-left\">\n {props.type === \"select\"\n ? props.options.find((op) => op.value === props.children)\n ?.label\n : props.children}\n </p>\n </div>\n )}\n\n {props.editable && (\n <button\n className=\"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200\"\n onClick={(e) => {\n e.preventDefault();\n if (props.editable) {\n setIsEditing(true);\n }\n }}\n >\n <EditIcon size={12} />\n </button>\n )}\n </div>\n {props.editable && isEditing && (\n <div\n className=\"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {props.type === \"string\" && (\n <StringCellInput\n currentRef={ref as React.RefObject<HTMLInputElement>}\n columnKey={props.columnKey}\n currentRecord={props.currentRecord}\n compEditing={compEditing}\n onCellBlur={props.onCellBlur}\n constraints={props.constraints}\n setOccurredOnCellBlur={() => {\n setOccurredOnCellBlur(true);\n }}\n />\n )}\n {props.type === \"number\" && (\n <NumberCellInput\n currentRef={ref as React.RefObject<HTMLInputElement>}\n columnKey={props.columnKey}\n currentRecord={props.currentRecord}\n compEditing={compEditing}\n onCellBlur={props.onCellBlur}\n constraints={props.constraints}\n setOccurredOnCellBlur={() => {\n setOccurredOnCellBlur(true);\n }}\n />\n )}\n {props.type === \"select\" && (\n <SelectCellInput\n currentRef={ref as React.RefObject<HTMLSelectElement>}\n columnKey={props.columnKey}\n currentRecord={props.currentRecord}\n compEditing={compEditing}\n options={props.options}\n allowEmpty={props.allowEmpty}\n onCellBlur={props.onCellBlur}\n setOccurredOnCellBlur={() => {\n setOccurredOnCellBlur(true);\n }}\n />\n )}\n </div>\n )}\n </div>\n </td>\n );\n}\nexport const TableCell = memo(_TableCell) as typeof _TableCell;\n"],"names":["CellInput","forwardRef","props","ref","_jsxs","jsxs","className","children","_jsx","type","value","onChange","onBlur","onKeyUp","e","preventDefault","key","target","blur","reset","endEditing","onMouseDown","CancelIcon","size","StringCellInput","_a","useState","currentRecord","columnKey","setValue","currentRef","constraints","maxLength","length","alert","concat","_b","minLength","_c","pattern","RegExp","test","validate","setTimeout","focus","onCellBlur","compEditing","setOccurredOnCellBlur","NumberCellInput","toString","match","isNaN","Number","v","parseInt","max","min","SelectCellInput","onKeyDown","allowEmpty","jsx","options","map","option","label","TableCell","memo","isEditing","setIsEditing","useRef","occurredOnCellBlur","useCallback","useEffect","current","onClick","stopPropagation","onDoubleClick","editable","find","op","EditIcon"],"mappings":"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"}
1
+ {"version":3,"file":"cell.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),o=require("react"),s=function(o,s){switch(s.type){case"focus":return o.isFocus&&o.rowNumber===s.payload.rowNumber&&o.colNumber===s.payload.colNumber?o:e.__assign(e.__assign({},o),{isFocus:!0,isEditing:!1,rowNumber:s.payload.rowNumber,colNumber:s.payload.colNumber});case"edit":return!o.isFocus||o.isEditing?o:e.__assign(e.__assign({},o),{isEditing:!0});case"focusAndEdit":return o.isFocus&&o.isEditing&&o.rowNumber===s.payload.rowNumber&&o.colNumber===s.payload.colNumber?o:e.__assign(e.__assign({},o),{isFocus:!0,isEditing:!0,rowNumber:s.payload.rowNumber,colNumber:s.payload.colNumber});case"move":return!o.isFocus||o.rowNumber===s.payload.rowNumber&&o.colNumber===s.payload.colNumber?o:e.__assign(e.__assign({},o),{isEditing:!1,rowNumber:s.payload.rowNumber,colNumber:s.payload.colNumber});case"moveLeft":return o.isFocus?o.colNumber-1<0?o:e.__assign(e.__assign({},o),{isEditing:!1,colNumber:o.colNumber-1}):o;case"moveRight":return o.isFocus?o.colNumber+1>o.maxColNumber?o:e.__assign(e.__assign({},o),{isEditing:!1,colNumber:o.colNumber+1}):o;case"moveUp":return o.isFocus?o.rowNumber-1<0?o:e.__assign(e.__assign({},o),{isEditing:!1,rowNumber:o.rowNumber-1}):o;case"moveDown":return o.isFocus?o.rowNumber+1>o.maxRowNumber?o:e.__assign(e.__assign({},o),{isEditing:!1,rowNumber:o.rowNumber+1}):o;case"unfocus":return o.isFocus?{maxColNumber:o.maxColNumber,maxRowNumber:o.maxRowNumber,isFocus:!1}:o;case"finishEditing":return o.isFocus&&o.isEditing?e.__assign(e.__assign({},o),{isEditing:!1}):o;case"setMaxRowNumber":return o.maxRowNumber===s.payload.maxRowNumber?o:e.__assign(e.__assign({},o),{maxRowNumber:s.payload.maxRowNumber});case"setMaxColNumber":return o.maxColNumber===s.payload.maxColNumber?o:e.__assign(e.__assign({},o),{maxColNumber:s.payload.maxColNumber})}};exports.useFocusReducer=function(e,u){var a=o.useReducer(s,{maxRowNumber:e,maxColNumber:u,isFocus:!1}),r=a[0],i=a[1],m=o.useCallback((function(e,o){return r.isFocus&&r.rowNumber===e&&r.colNumber===o}),[r]),c=o.useCallback((function(e,o){i({type:"focus",payload:{rowNumber:e,colNumber:o}})}),[i]),n=o.useCallback((function(){i({type:"edit"})}),[i]),l=o.useCallback((function(e,o){i({type:"focusAndEdit",payload:{rowNumber:e,colNumber:o}})}),[i]),t=o.useCallback((function(e,o){i({type:"move",payload:{rowNumber:e,colNumber:o}})}),[i]),b=o.useCallback((function(){i({type:"moveLeft"})}),[i]),N=o.useCallback((function(){i({type:"moveRight"})}),[i]),d=o.useCallback((function(){i({type:"moveUp"})}),[i]),_=o.useCallback((function(){i({type:"moveDown"})}),[i]),g=o.useCallback((function(){i({type:"unfocus"})}),[i]),p=o.useCallback((function(){i({type:"finishEditing"})}),[i]),w=o.useCallback((function(e){i({type:"setMaxRowNumber",payload:{maxRowNumber:e}})}),[i]),y=o.useCallback((function(e){i({type:"setMaxColNumber",payload:{maxColNumber:e}})}),[i]);return{isFocus:r.isFocus,isEditing:r.isFocus&&r.isEditing,checkFocus:m,focus:c,edit:n,focusAndEdit:l,move:t,moveLeft:b,moveRight:N,moveUp:d,moveDown:_,unfocus:g,finishEditing:p,setMaxRowNumber:w,setMaxColNumber:y}};
2
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/edit/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TFocusReducer, TReturnFocusReducer } from \"./types\";\n\nconst reducer: TFocusReducer = (state, action) => {\n switch (action.type) {\n case \"focus\":\n if (\n state.isFocus &&\n state.rowNumber === action.payload.rowNumber &&\n state.colNumber === action.payload.colNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n isFocus: true,\n isEditing: false,\n rowNumber: action.payload.rowNumber,\n colNumber: action.payload.colNumber,\n };\n\n case \"edit\":\n if (!state.isFocus || state.isEditing) return state;\n\n return {\n ...state,\n isEditing: true,\n };\n\n case \"focusAndEdit\":\n if (\n state.isFocus &&\n state.isEditing &&\n state.rowNumber === action.payload.rowNumber &&\n state.colNumber === action.payload.colNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n isFocus: true,\n isEditing: true,\n rowNumber: action.payload.rowNumber,\n colNumber: action.payload.colNumber,\n };\n\n case \"move\":\n if (\n !state.isFocus ||\n (state.rowNumber === action.payload.rowNumber &&\n state.colNumber === action.payload.colNumber)\n ) {\n return state;\n }\n\n return {\n ...state,\n isEditing: false,\n rowNumber: action.payload.rowNumber,\n colNumber: action.payload.colNumber,\n };\n\n case \"moveLeft\": {\n if (!state.isFocus) return state;\n\n const newColNumber = state.colNumber - 1;\n\n if (newColNumber < 0) return state;\n\n return {\n ...state,\n isEditing: false,\n colNumber: state.colNumber - 1,\n };\n }\n\n case \"moveRight\": {\n if (!state.isFocus) return state;\n\n const newColNumber = state.colNumber + 1;\n\n if (newColNumber > state.maxColNumber) return state;\n\n return {\n ...state,\n isEditing: false,\n colNumber: state.colNumber + 1,\n };\n }\n\n case \"moveUp\": {\n if (!state.isFocus) return state;\n\n const newRowNumber = state.rowNumber - 1;\n\n if (newRowNumber < 0) return state;\n\n return {\n ...state,\n isEditing: false,\n rowNumber: state.rowNumber - 1,\n };\n }\n\n case \"moveDown\": {\n if (!state.isFocus) return state;\n\n const newRowNumber = state.rowNumber + 1;\n\n if (newRowNumber > state.maxRowNumber) return state;\n\n return {\n ...state,\n isEditing: false,\n rowNumber: state.rowNumber + 1,\n };\n }\n\n case \"unfocus\":\n if (!state.isFocus) return state;\n\n return {\n maxColNumber: state.maxColNumber,\n maxRowNumber: state.maxRowNumber,\n isFocus: false,\n };\n\n case \"finishEditing\":\n if (!state.isFocus || !state.isEditing) return state;\n\n return {\n ...state,\n isEditing: false,\n };\n\n case \"setMaxRowNumber\":\n if (state.maxRowNumber === action.payload.maxRowNumber) return state;\n\n return {\n ...state,\n maxRowNumber: action.payload.maxRowNumber,\n };\n\n case \"setMaxColNumber\":\n if (state.maxColNumber === action.payload.maxColNumber) return state;\n\n return {\n ...state,\n maxColNumber: action.payload.maxColNumber,\n };\n }\n};\n\nexport function useFocusReducer(\n maxRowNumber: number,\n maxColNumber: number\n): TReturnFocusReducer {\n const [state, dispatch] = useReducer(reducer, {\n maxRowNumber,\n maxColNumber,\n isFocus: false,\n });\n\n const checkFocus = useCallback(\n (rowNumber: number, colNumber: number) =>\n state.isFocus &&\n state.rowNumber === rowNumber &&\n state.colNumber === colNumber,\n [state]\n );\n\n const focus = useCallback(\n (rowNumber: number, colNumber: number) => {\n dispatch({ type: \"focus\", payload: { rowNumber, colNumber } });\n },\n [dispatch]\n );\n\n const edit = useCallback(() => {\n dispatch({ type: \"edit\" });\n }, [dispatch]);\n\n const focusAndEdit = useCallback(\n (rowNumber: number, colNumber: number) => {\n dispatch({ type: \"focusAndEdit\", payload: { rowNumber, colNumber } });\n },\n [dispatch]\n );\n\n const move = useCallback(\n (rowNumber: number, colNumber: number) => {\n dispatch({ type: \"move\", payload: { rowNumber, colNumber } });\n },\n [dispatch]\n );\n\n const moveLeft = useCallback(() => {\n dispatch({ type: \"moveLeft\" });\n }, [dispatch]);\n\n const moveRight = useCallback(() => {\n dispatch({ type: \"moveRight\" });\n }, [dispatch]);\n\n const moveUp = useCallback(() => {\n dispatch({ type: \"moveUp\" });\n }, [dispatch]);\n\n const moveDown = useCallback(() => {\n dispatch({ type: \"moveDown\" });\n }, [dispatch]);\n\n const unfocus = useCallback(() => {\n dispatch({ type: \"unfocus\" });\n }, [dispatch]);\n\n const finishEditing = useCallback(() => {\n dispatch({ type: \"finishEditing\" });\n }, [dispatch]);\n\n const setMaxRowNumber = useCallback(\n (maxRowNumber: number) => {\n dispatch({ type: \"setMaxRowNumber\", payload: { maxRowNumber } });\n },\n [dispatch]\n );\n\n const setMaxColNumber = useCallback(\n (maxColNumber: number) => {\n dispatch({ type: \"setMaxColNumber\", payload: { maxColNumber } });\n },\n [dispatch]\n );\n\n return {\n isFocus: state.isFocus,\n isEditing: state.isFocus && state.isEditing,\n checkFocus,\n focus,\n edit,\n focusAndEdit,\n move,\n moveLeft,\n moveRight,\n moveUp,\n moveDown,\n unfocus,\n finishEditing,\n setMaxRowNumber,\n setMaxColNumber,\n };\n}\n"],"names":["reducer","state","action","type","isFocus","rowNumber","payload","colNumber","__assign","isEditing","maxColNumber","maxRowNumber","_a","useReducer","dispatch","checkFocus","useCallback","focus","edit","focusAndEdit","move","moveLeft","moveRight","moveUp","moveDown","unfocus","finishEditing","setMaxRowNumber","setMaxColNumber"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ "use strict";var n=require("react/jsx-runtime"),o=require("react"),e=require("./hooks.js"),t=require("../pagenation/providers.js"),r=o.createContext({isEditing:!1,isFocus:!1,checkFocus:function(){throw new Error("Function not implemented.")},focus:function(){throw new Error("Function not implemented.")},edit:function(){throw new Error("Function not implemented.")},move:function(){throw new Error("Function not implemented.")},moveLeft:function(){throw new Error("Function not implemented.")},moveRight:function(){throw new Error("Function not implemented.")},moveUp:function(){throw new Error("Function not implemented.")},moveDown:function(){throw new Error("Function not implemented.")},unfocus:function(){throw new Error("Function not implemented.")},setMaxRowNumber:function(){throw new Error("Function not implemented.")},setMaxColNumber:function(){throw new Error("Function not implemented.")},focusAndEdit:function(){throw new Error("Function not implemented.")},finishEditing:function(){throw new Error("Function not implemented.")}});exports.FocusProvider=function(o){var i=t.usePageContext(),u=i.from,c=i.to,m=i.rowCount;return n.jsx(r.Provider,{value:e.useFocusReducer(c<m?c-u-1:m-u-1,o.columnCount-1),children:o.children})},exports.useFocusContext=function(){return o.useContext(r)};
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),n=require("./filter-icon.js"),t=require("./provider.js"),l=require("react"),r=require("../cancel-icon.js"),i=require("./constants.js");function a(n){var l=n.children,r=t.useFilterContext(),i=r.clearFilter;if(0!==r.filterConditions.length)return e.jsx("button",{onClick:function(e){e.preventDefault(),i()},children:l})}exports.TableFilter=function(l){var r=t.useFilterContext().filterConditions;return e.jsx("div",{className:"relative cursor-pointer",onClick:l.onClick,children:e.jsx(n.FIlterIcon,{isFilterActive:r.filter((function(e){return e.key===l.keyName})).length>0})})},exports.TableFilterForm=function(n){var s=t.useFilterContext(),o=s.addFilter,u=s.removeFilter,c=s.filterConditions,d=l.useState(""),f=d[0],v=d[1],x=l.useState(""),p=x[0],h=x[1],j=l.useState(""),y=j[0],m=j[1],b=l.useState("string"),g=b[0],k=b[1],C=n.cols.find((function(e){return e.key===f}));return l.useEffect((function(){m(""),h("")}),[f]),e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-2 mb-5",children:[e.jsx("p",{className:"font-bold text-lg",children:"フィルタ追加"}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[e.jsxs("select",{value:f,onChange:function(e){var t;e.preventDefault(),v(e.target.value);var l=null===(t=n.cols.find((function(n){return n.key===e.target.value})))||void 0===t?void 0:t.type;k(l)},children:[e.jsx("option",{value:"",children:"-- 列を選択 --"}),n.cols.filter((function(e){return!!e.label&&!!e.type})).map((function(n){return e.jsx("option",{value:n.key,children:n.label},n.key)}))]}),e.jsxs("select",{value:p,onChange:function(e){e.preventDefault(),h(e.target.value)},disabled:!f,children:[e.jsx("option",{value:"",children:f?"-- 条件を選択 --":"-- 列を選択してください --"}),"string"===g&&i.STRING_FILTER_OPERATOR.map((function(n){return e.jsx("option",{value:n.key,children:n.label},n.key)})),"number"===g&&i.NUMBER_FILTER_OPERATOR.map((function(n){return e.jsx("option",{value:n.key,children:n.label},n.key)})),"select"===g&&i.SELECT_FILTER_OPERATOR.map((function(n){return e.jsx("option",{value:n.key,children:n.label},n.key)}))]}),"select"===g?e.jsxs("select",{value:y,onChange:function(e){e.preventDefault(),m(e.target.value)},children:[e.jsx("option",{value:"",children:"-- 未選択 --"}),"select"===C.type&&C.options.map((function(n){return e.jsx("option",{value:n.value,children:n.label},n.value)}))]}):e.jsx("input",{type:"text",value:y,onChange:function(e){e.preventDefault(),m(e.target.value)},placeholder:"-- 値を入力 --"})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx("button",{className:"bg-gray-900 text-white py-1 px-2 rounded-md",onClick:function(e){var t;if(e.preventDefault(),f&&p&&("select"===C.type||y)){var l=n.cols.find((function(e){return e.key===f}));o("string"===g?{key:f,operator:p,value:[y]}:"select"===g?{key:f,operator:p,value:y,label:"select"===l.type?null===(t=l.options.find((function(e){return e.value===y})))||void 0===t?void 0:t.label:void 0}:{key:f,operator:p,value:Number(y)})}else alert("全ての項目を入力してください")},children:"追加"})})]}),e.jsxs("div",{children:[c.length>0&&e.jsx("p",{className:"font-bold text-lg",children:"フィルタ一覧"}),e.jsx("ul",{className:"flex flex-col gap-1 my-2",children:c.map((function(t){var l,a;return e.jsxs("li",{className:"flex justify-between",children:[e.jsxs("p",{children:["「",e.jsx("strong",{children:null===(l=n.cols.find((function(e){return e.key===t.key})))||void 0===l?void 0:l.label}),"」 は",e.jsx("span",{children:null===(a=i.FILTER_OPERATOR.find((function(e){return e.key===t.operator})))||void 0===a?void 0:a.label}),":",e.jsx("span",{children:t.label?t.label:t.value})]}),e.jsx("button",{onClick:function(e){e.preventDefault(),u(t.id)},children:e.jsx(r.CancelIcon,{size:16})})]},t.id)}))}),e.jsx("div",{className:"flex justify-center",children:e.jsx(a,{children:e.jsx("p",{className:"text-gray-600 underline hover:text-gray-800",children:"remove all filters"})})})]})]})},exports.TableFilterRemoveButton=a;
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("./filter-icon.js"),l=require("./provider.js"),n=require("react"),r=require("../cancel-icon.js"),i=require("./constants.js"),a=require("../sheet/providers.js");function s(t){var n=t.children,r=l.useFilterContext(),i=r.removeFilter,a=r.filterConditions,s=r.selectedFilterKey;if(0!==a.filter((function(e){return e.key===s})).length){return e.jsx("button",{onClick:function(e){e.preventDefault(),a.filter((function(e){return e.key===s})).forEach((function(e){i(e.id)}))},children:n})}}function o(t){var n=t.value,r=t.onChange,s=l.useFilterContext().selectedFilterKey,o=a.useColumnContext(s);return e.jsxs("select",{value:n,onChange:r,className:"px-2 py-1 rounded-md",children:[e.jsx("option",{value:"",children:s?"-- 条件を選択 --":"-- 列を選択してください --"}),"string"===o.type&&i.STRING_FILTER_OPERATOR.map((function(t){return e.jsx("option",{value:t.key,children:t.label},t.key)})),"number"===o.type&&i.NUMBER_FILTER_OPERATOR.map((function(t){return e.jsx("option",{value:t.key,children:t.label},t.key)})),"select"===o.type&&i.SELECT_FILTER_OPERATOR.map((function(t){return e.jsx("option",{value:t.key,children:t.label},t.key)}))]})}function u(t){return e.jsxs("select",{className:"w-full px-2 py-1 rounded-md min-w-32",value:t.value,onChange:function(e){e.preventDefault(),t.setValue(e.target.value)},children:[e.jsx("option",{value:"",children:"-- 未選択 --"}),t.options.map((function(t){return e.jsx("option",{value:t.value,children:t.label},t.value)}))]})}function c(t){return e.jsx("input",{className:"w-full px-2 py-1 rounded-md min-w-32",type:"text",value:t.value,onChange:function(e){e.preventDefault(),t.setValue(e.target.value)},placeholder:"-- 値を入力 --"})}function d(t){var n=l.useFilterContext(),r=n.selectedFilterKey,i=n.addFilter,s=a.useColumnContext(r);return e.jsx("button",{className:"bg-gray-900 text-white py-1 px-2 rounded-md text-nowrap",onClick:function(e){var l;e.preventDefault(),r&&t.selectingOperator&&("select"===s.type||t.value)?i("string"===s.type?{key:r,operator:t.selectingOperator,value:[t.value]}:"select"===s.type?{key:r,operator:t.selectingOperator,value:t.value,label:null===(l=s.options.find((function(e){return e.value===t.value})))||void 0===l?void 0:l.label}:{key:r,operator:t.selectingOperator,value:Number(t.value)}):alert("全ての項目を入力してください")},children:"追加"})}exports.TableFilter=function(n){var r=a.useColumnContext(n.columnKey),i=l.useFilterContext(),s=i.filterConditions,o=i.setSelectedFilterKey;return r.label?e.jsx("div",{className:"relative cursor-pointer",onClick:function(e){e.preventDefault(),o(n.columnKey)},children:e.jsx(t.FIlterIcon,{isFilterActive:s.filter((function(e){return e.key===n.columnKey})).length>0})}):e.jsx(e.Fragment,{})},exports.TableFilterForm=function(){var t=a.useColumnsContext(),x=l.useFilterContext(),f=x.removeFilter,p=x.filterConditions,v=x.selectedFilterKey,m=x.setSelectedFilterKey,y=n.useState(""),h=y[0],j=y[1],g=n.useState(""),b=g[0],C=g[1],k=a.useColumnContext(v);n.useEffect((function(){C(""),j("")}),[v]);var F=n.useCallback((function(e){e.preventDefault,j(e.target.value)}),[]);return e.jsxs("div",{className:"flex w-full max-h-[50vh] bg-gray-200",children:[e.jsx("ul",{className:"flex flex-col items-end min-w-16 md:w-[20%] max-h-full overflow-y-auto no_scrollbar bg-white",children:t.filter((function(e){return!!e.label})).map((function(t){return e.jsxs("li",{className:"relative pl-2 pr-8 md:px-8 py-3 w-full cursor-pointer border-y border-gray-300 ".concat(v===t.key?"bg-gray-200":"hover:bg-gray-100"),onClick:function(e){e.preventDefault(),m(t.key)},children:[e.jsx("p",{className:"text-right text-nowrap",children:t.label}),p.filter((function(e){return e.key===t.key})).length>0&&e.jsx("div",{className:"absolute top-1/2 right-1",children:e.jsx("div",{className:"-translate-y-1/2 rounded-full border border-gray-400 bg-gray-100 aspect-square w-5",children:e.jsx("p",{className:"text-xs text-center",children:p.filter((function(e){return e.key===t.key})).length})})})]},t.key)}))}),e.jsxs("div",{className:"relative flex flex-col gap-4 ml-4 mr-4 md:ml-16 md:mr-auto py-5",children:[e.jsx("div",{className:"absolute top-5 right-0",children:e.jsx("button",{onClick:function(e){e.preventDefault(),m(null)},children:"閉じる"})}),e.jsx("p",{className:"font-bold text-xl",children:"フィルタリング条件"}),e.jsxs("div",{className:"flex items-center gap-3 max-w-6xl",children:[e.jsxs("p",{className:"text-gray-600 text-lg text-nowrap",children:["「",e.jsx("strong",{children:k.label}),"」 は"]}),e.jsx(o,{value:h,onChange:F}),"select"===k.type?e.jsx(u,{value:b,options:k.options,setValue:C}):e.jsx(c,{value:b,setValue:C}),e.jsx(d,{value:b,selectingOperator:h})]}),e.jsx("ul",{className:"flex flex-col gap-1 my-5 max-h-32 overflow-auto",children:p.filter((function(e){return e.key===v})).map((function(l){var n,a;return e.jsxs("li",{className:"flex justify-between mr-5",children:[e.jsxs("p",{children:["「",e.jsx("strong",{children:null===(n=t.find((function(e){return e.key===l.key})))||void 0===n?void 0:n.label}),"」 は",e.jsx("span",{children:null===(a=i.FILTER_OPERATOR.find((function(e){return e.key===l.operator})))||void 0===a?void 0:a.label}),":",e.jsx("span",{children:l.label?l.label:l.value})]}),e.jsx("button",{onClick:function(e){e.preventDefault(),f(l.id)},children:e.jsx(r.CancelIcon,{size:16})})]},l.id)}))}),e.jsx("div",{className:"flex justify-center",children:e.jsx(s,{children:e.jsxs("p",{className:"text-xs text-gray-600 underline hover:text-gray-800",children:["「",k.label,"」のフィルタを全て解除"]})})})]})]})},exports.TableFilterRemoveButton=function(t){var n=t.children,r=l.useFilterContext(),i=r.clearFilter;if(0!==r.filterConditions.length)return e.jsx("button",{onClick:function(e){e.preventDefault(),i()},children:n})},exports.TableSpecifyKeyFilterRemoveButton=s;
3
3
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/filter/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TFilter, TFilterReducer, TReturnUseFilterReducer } from \"./types\";\nimport { DataObject } from \"../type\";\n\nconst reducer: TFilterReducer = (state, action) => {\n switch (action.type) {\n case \"add\":\n return {\n filters: [\n ...state.filters,\n { id: new Date().getTime(), ...action.payload.filter },\n ],\n };\n case \"remove\":\n return {\n filters: state.filters.filter((f) => f.id !== action.payload.id),\n };\n case \"clear\":\n return { filters: [] };\n }\n};\n\nexport function useFilterReducer(): TReturnUseFilterReducer {\n const [state, dispatch] = useReducer(reducer, { filters: [] });\n\n const addFilter = useCallback(\n (filter: TFilter) => dispatch({ type: \"add\", payload: { filter } }),\n [dispatch]\n );\n const removeFilter = useCallback(\n (id: number) => dispatch({ type: \"remove\", payload: { id } }),\n [dispatch]\n );\n const clearFilter = useCallback(\n () => dispatch({ type: \"clear\" }),\n [dispatch]\n );\n\n const filter = useCallback(\n <T extends DataObject>(rows: T[]): T[] => {\n return state.filters.reduce((acc, filter) => {\n switch (filter.operator) {\n case \"includeText\":\n return acc.filter((row) => {\n const value = row[filter.key];\n if (typeof value === \"string\") {\n return filter.value.some((v) => value.includes(v));\n }\n return false;\n });\n case \"eq\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"ne\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n case \"gt\":\n return acc.filter((row) => row[filter.key] > filter.value);\n case \"lt\":\n return acc.filter((row) => row[filter.key] < filter.value);\n case \"gte\":\n return acc.filter((row) => row[filter.key] >= filter.value);\n case \"lte\":\n return acc.filter((row) => row[filter.key] <= filter.value);\n case \"selected\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"notSelected\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n }\n }, rows);\n },\n [state]\n );\n\n return {\n addFilter,\n removeFilter,\n clearFilter,\n filter,\n filterConditions: state.filters,\n };\n}\n"],"names":["reducer","state","action","type","filters","__spreadArray","__assign","id","Date","getTime","payload","filter","f","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","key","some","v","includes","filterConditions"],"mappings":"0FAIMA,EAA0B,SAACC,EAAOC,GACtC,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,QAAOC,EAAAA,cAAAA,gBAAA,GACFJ,EAAMG,SAAO,GAAA,CACdE,WAAA,CAAAC,IAAI,IAAIC,MAAOC,WAAcP,EAAOQ,QAAQC,UAC/C,IAEL,IAAK,SACH,MAAO,CACLP,QAASH,EAAMG,QAAQO,QAAO,SAACC,GAAM,OAAAA,EAAEL,KAAOL,EAAOQ,QAAQH,EAAxB,KAEzC,IAAK,QACH,MAAO,CAAEH,QAAS,IAExB,sCAGQ,IAAAS,EAAoBC,EAAUA,WAACd,EAAS,CAAEI,QAAS,KAAlDH,OAAOc,OAiDd,MAAO,CACLC,UAhDgBC,EAAAA,aAChB,SAACN,GAAoB,OAAAI,EAAS,CAAEZ,KAAM,MAAOO,QAAS,CAAEC,OAAMA,OAC9D,CAACI,IA+CDG,aA7CmBD,EAAAA,aACnB,SAACV,GAAe,OAAAQ,EAAS,CAAEZ,KAAM,SAAUO,QAAS,CAAEH,GAAEA,OACxD,CAACQ,IA4CDI,YA1CkBF,EAAAA,aAClB,WAAM,OAAAF,EAAS,CAAEZ,KAAM,SAAjB,GACN,CAACY,IAyCDJ,OAtCaM,eACb,SAAuBG,GACrB,OAAOnB,EAAMG,QAAQiB,QAAO,SAACC,EAAKX,GAChC,OAAQA,EAAOY,UACb,IAAK,cACH,OAAOD,EAAIX,QAAO,SAACa,GACjB,IAAMC,EAAQD,EAAIb,EAAOe,KACzB,MAAqB,iBAAVD,GACFd,EAAOc,MAAME,MAAK,SAACC,GAAM,OAAAH,EAAMI,SAASD,EAAE,GAGrD,IACF,IAAK,KAYL,IAAK,WACH,OAAON,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,OAASf,EAAOc,KAAK,IAX7D,IAAK,KAYL,IAAK,cACH,OAAOH,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,OAASf,EAAOc,KAAK,IAX7D,IAAK,KACH,OAAOH,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,KAAOf,EAAOc,KAAK,IAC3D,IAAK,KACH,OAAOH,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,KAAOf,EAAOc,KAAK,IAC3D,IAAK,MACH,OAAOH,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,MAAQf,EAAOc,KAAK,IAC5D,IAAK,MACH,OAAOH,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,MAAQf,EAAOc,KAAK,IAM/D,GAAEL,EACL,GACA,CAACnB,IAQD6B,iBAAkB7B,EAAMG,QAE5B"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/filter/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TFilter, TFilterReducer, TReturnUseFilterReducer } from \"./types\";\nimport { DataObject } from \"../type\";\n\nconst reducer: TFilterReducer = (state, action) => {\n switch (action.type) {\n case \"add\":\n return {\n filters: [\n ...state.filters,\n { id: new Date().getTime(), ...action.payload.filter },\n ],\n };\n case \"remove\":\n return {\n filters: state.filters.filter((f) => f.id !== action.payload.id),\n };\n case \"clear\":\n return { filters: [] };\n }\n};\n\nexport function useFilterReducer(): TReturnUseFilterReducer {\n const [state, dispatch] = useReducer(reducer, { filters: [] });\n\n const addFilter = useCallback(\n (filter: TFilter) => dispatch({ type: \"add\", payload: { filter } }),\n [dispatch]\n );\n const removeFilter = useCallback(\n (id: number) => dispatch({ type: \"remove\", payload: { id } }),\n [dispatch]\n );\n const clearFilter = useCallback(\n () => dispatch({ type: \"clear\" }),\n [dispatch]\n );\n\n const filter = useCallback(\n (rows: DataObject[]): DataObject[] => {\n return state.filters.reduce((acc, filter) => {\n switch (filter.operator) {\n case \"includeText\":\n return acc.filter((row) => {\n const value = row[filter.key];\n if (typeof value === \"string\") {\n return filter.value.some((v) => value.includes(v));\n }\n return false;\n });\n case \"eq\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"ne\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n case \"gt\":\n return acc.filter(\n (row) => (row[filter.key] as number) > filter.value\n );\n case \"lt\":\n return acc.filter(\n (row) => (row[filter.key] as number) < filter.value\n );\n case \"gte\":\n return acc.filter(\n (row) => (row[filter.key] as number) >= filter.value\n );\n case \"lte\":\n return acc.filter(\n (row) => (row[filter.key] as number) <= filter.value\n );\n case \"selected\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"notSelected\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n }\n }, rows);\n },\n [state]\n );\n\n return {\n addFilter,\n removeFilter,\n clearFilter,\n filter,\n filterConditions: state.filters,\n };\n}\n"],"names":["reducer","state","action","type","filters","__spreadArray","__assign","id","Date","getTime","payload","filter","f","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","key","some","v","includes","filterConditions"],"mappings":"0FAIMA,EAA0B,SAACC,EAAOC,GACtC,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,QAAOC,EAAAA,cAAAA,gBAAA,GACFJ,EAAMG,SAAO,GAAA,CACdE,WAAA,CAAAC,IAAI,IAAIC,MAAOC,WAAcP,EAAOQ,QAAQC,UAC/C,IAEL,IAAK,SACH,MAAO,CACLP,QAASH,EAAMG,QAAQO,QAAO,SAACC,GAAM,OAAAA,EAAEL,KAAOL,EAAOQ,QAAQH,EAAxB,KAEzC,IAAK,QACH,MAAO,CAAEH,QAAS,IAExB,sCAGQ,IAAAS,EAAoBC,EAAUA,WAACd,EAAS,CAAEI,QAAS,KAAlDH,OAAOc,OAyDd,MAAO,CACLC,UAxDgBC,EAAAA,aAChB,SAACN,GAAoB,OAAAI,EAAS,CAAEZ,KAAM,MAAOO,QAAS,CAAEC,OAAMA,OAC9D,CAACI,IAuDDG,aArDmBD,EAAAA,aACnB,SAACV,GAAe,OAAAQ,EAAS,CAAEZ,KAAM,SAAUO,QAAS,CAAEH,GAAEA,OACxD,CAACQ,IAoDDI,YAlDkBF,EAAAA,aAClB,WAAM,OAAAF,EAAS,CAAEZ,KAAM,SAAjB,GACN,CAACY,IAiDDJ,OA9CaM,eACb,SAACG,GACC,OAAOnB,EAAMG,QAAQiB,QAAO,SAACC,EAAKX,GAChC,OAAQA,EAAOY,UACb,IAAK,cACH,OAAOD,EAAIX,QAAO,SAACa,GACjB,IAAMC,EAAQD,EAAIb,EAAOe,KACzB,MAAqB,iBAAVD,GACFd,EAAOc,MAAME,MAAK,SAACC,GAAM,OAAAH,EAAMI,SAASD,EAAE,GAGrD,IACF,IAAK,KAoBL,IAAK,WACH,OAAON,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,OAASf,EAAOc,KAAK,IAnB7D,IAAK,KAoBL,IAAK,cACH,OAAOH,EAAIX,QAAO,SAACa,GAAQ,OAAAA,EAAIb,EAAOe,OAASf,EAAOc,KAAK,IAnB7D,IAAK,KACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,KAAkBf,EAAOc,KAAK,IAEvD,IAAK,KACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,KAAkBf,EAAOc,KAAK,IAEvD,IAAK,MACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,MAAmBf,EAAOc,KAAK,IAExD,IAAK,MACH,OAAOH,EAAIX,QACT,SAACa,GAAQ,OAACA,EAAIb,EAAOe,MAAmBf,EAAOc,KAAK,IAO3D,GAAEL,EACL,GACA,CAACnB,IAQD6B,iBAAkB7B,EAAMG,QAE5B"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("./hooks.js"),i=r.createContext({addFilter:function(){},removeFilter:function(){},clearFilter:function(){},filter:function(){return[]},filterConditions:[]});exports.FilterProvider=function(r){var n=r.children;return e.jsx(i.Provider,{value:t.useFilterReducer(),children:n})},exports.useFilterContext=function(){return r.useContext(i)};
2
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react/jsx-runtime"),r=require("react"),i=require("./hooks.js"),n=r.createContext({addFilter:function(){},removeFilter:function(){},clearFilter:function(){},filter:function(){return[]},filterConditions:[]}),l=r.createContext({selectedFilterKey:null,setSelectedFilterKey:function(){}});exports.FilterProvider=function(e){var s=e.children,u=r.useState(null),o=u[0],c=u[1];return t.jsx(l.Provider,{value:{selectedFilterKey:o,setSelectedFilterKey:c},children:t.jsx(n.Provider,{value:i.useFilterReducer(),children:s})})},exports.useFilterContext=function(){return e.__assign(e.__assign({},r.useContext(n)),r.useContext(l))};
3
3
  //# sourceMappingURL=provider.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react/jsx-runtime");exports.TableHeaderElement=function(t){return e.jsxs("th",{className:"relative bg-gray-200 text-gray-600 h-[32px]",children:[t.label&&e.jsx("div",{className:"px-2",children:e.jsx("p",{className:"text-left font-bold text-nowrap overflow-hidden text-ellipsis ".concat(t.filterComponent&&t.sortConponent?"w-[80%] min-w-20":t.filterComponent||t.sortConponent?"w-[90%] min-w-20":"min-w-10"," "),children:t.label})}),t.label&&e.jsxs("div",{className:"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2",children:[t.filterComponent&&t.filterComponent,t.sortConponent&&t.sortConponent]})]})};
1
+ "use strict";var e=require("react/jsx-runtime");require("./filter/provider.js");var r=require("./filter/components.js"),t=require("./sheet/providers.js"),s=require("./sort/components.js");require("./sort/provider.js"),exports.TableHeaderElement=function(l){var i=t.useColumnContext(l.columnKey);return e.jsxs("th",{className:"relative bg-gray-200 text-gray-600 h-[32px]",children:[i.label&&e.jsx("div",{className:"px-2",children:e.jsx("p",{className:"text-left font-bold text-nowrap overflow-hidden text-ellipsis w-[70%] min-w-20",children:i.label})}),e.jsxs("div",{className:"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2",children:[e.jsx(s.SortButton,{columnKey:l.columnKey}),e.jsx(r.TableFilter,{columnKey:l.columnKey})]})]})};
2
2
  //# sourceMappingURL=header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","sources":["../../../../src/table/header.tsx"],"sourcesContent":["type TPropsTableHeader = {\n label?: string;\n sortConponent?: JSX.Element;\n filterComponent?: JSX.Element;\n};\n\nexport function TableHeaderElement(props: TPropsTableHeader) {\n return (\n <th className={`relative bg-gray-200 text-gray-600 h-[32px]`}>\n {props.label && (\n <div className=\"px-2\">\n <p\n className={`text-left font-bold text-nowrap overflow-hidden text-ellipsis ${\n props.filterComponent && props.sortConponent\n ? \"w-[80%] min-w-20\"\n : !props.filterComponent && !props.sortConponent\n ? \"min-w-10\"\n : \"w-[90%] min-w-20\"\n } `}\n >\n {props.label}\n </p>\n </div>\n )}\n\n {props.label && (\n <div className=\"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2\">\n {props.filterComponent && props.filterComponent}\n {props.sortConponent && props.sortConponent}\n </div>\n )}\n </th>\n );\n}\n"],"names":["props","_jsxs","className","children","label","_jsx","jsx","concat","filterComponent","sortConponent"],"mappings":"2EAMM,SAA6BA,GACjC,OACEC,OAAI,KAAA,CAAAC,UAAW,8CACZC,SAAA,CAAAH,EAAMI,OACLC,EAAKC,IAAA,MAAA,CAAAJ,UAAU,OAAMC,SACnBE,MACE,IAAA,CAAAH,UAAW,iEAAAK,OACTP,EAAMQ,iBAAmBR,EAAMS,cAC3B,mBACCT,EAAMQ,iBAAoBR,EAAMS,cAEjC,mBADA,WACkB,cAGvBT,EAAMI,UAKZJ,EAAMI,OACLH,EAAAA,KAAA,MAAA,CAAKC,UAAU,oEACZC,SAAA,CAAAH,EAAMQ,iBAAmBR,EAAMQ,gBAC/BR,EAAMS,eAAiBT,EAAMS,mBAKxC"}
1
+ {"version":3,"file":"header.js","sources":["../../../../src/table/header.tsx"],"sourcesContent":["import { TableFilter } from \"./filter\";\nimport { useColumnContext } from \"./sheet\";\nimport { SortButton } from \"./sort\";\n\ntype TPropsTableHeader = {\n columnKey: string;\n};\n\nexport function TableHeaderElement(props: TPropsTableHeader) {\n const col = useColumnContext(props.columnKey);\n\n return (\n <th className={`relative bg-gray-200 text-gray-600 h-[32px]`}>\n {col.label && (\n <div className=\"px-2\">\n <p\n className={`text-left font-bold text-nowrap overflow-hidden text-ellipsis w-[70%] min-w-20`}\n >\n {col.label}\n </p>\n </div>\n )}\n\n <div className=\"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2\">\n <SortButton columnKey={props.columnKey} />\n <TableFilter columnKey={props.columnKey} />\n </div>\n </th>\n );\n}\n"],"names":["props","col","useColumnContext","columnKey","_jsxs","jsxs","className","label","_jsx","children","jsx","SortButton","TableFilter"],"mappings":"qPAQM,SAA6BA,GACjC,IAAMC,EAAMC,EAAAA,iBAAiBF,EAAMG,WAEnC,OACEC,EAAIC,KAAA,KAAA,CAAAC,UAAW,wDACZL,EAAIM,OACHC,EAAAA,IAAA,MAAA,CAAKF,UAAU,OACbG,SAAAD,EAAAE,IAAA,IAAA,CACEJ,UAAW,iFAAgFG,SAE1FR,EAAIM,UAKXH,OAAK,MAAA,CAAAE,UAAU,oEACbG,SAAA,CAAAD,MAACG,EAAAA,WAAU,CAACR,UAAWH,EAAMG,YAC7BK,EAACE,IAAAE,cAAY,CAAAT,UAAWH,EAAMG,iBAItC"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react"),r=require("./pagenation/providers.js");require("react/jsx-runtime");var t=require("./filter/provider.js");require("./filter/constants.js"),require("./sort/icon.js");var o=require("./sort/provider.js");exports.useTable=function(s){var u=t.useFilterContext().filter,n=o.useSortContext().sort,i=r.usePageContext(),a=i.setRowCount,c=i.pageFilter,f=e.useMemo((function(){return u(s.rows)}),[u,s.rows]);e.useEffect((function(){a(f.length)}),[f.length]);var l=e.useMemo((function(){return n(f)}),[f,n]),v=e.useMemo((function(){return c(l)}),[c,l]);return{cols:s.cols,rows:v}};
1
+ "use strict";var e=require("react"),r=require("./pagenation/providers.js");require("react/jsx-runtime");var t=require("./filter/provider.js");require("./filter/constants.js");var o=require("./sheet/providers.js");require("./sort/icon.js");var n=require("./sort/provider.js"),u=require("./edit/provider.js");exports.useCell=function(){var r=o.useCellContext(),t=u.useFocusContext(),n=t.isEditing,s=t.checkFocus,i=t.focus,l=t.focusAndEdit,c=t.finishEditing,a=s(r.rowIndex,r.colIndex);e.useEffect((function(){!r.editable&&a&&n&&c()}),[r.editable,a,n,c]);var f=e.useCallback((function(e){e.preventDefault(),e.stopPropagation(),i(r.rowIndex,r.colIndex)}),[i,r.rowIndex,r.colIndex]),d=e.useCallback((function(e){e.preventDefault(),r.editable&&l(r.rowIndex,r.colIndex)}),[r.editable,l,r.rowIndex,r.colIndex]),x=e.useCallback((function(e){e.preventDefault(),e.stopPropagation()}),[]);return{cell:r,isFocus:a,isEditing:n,onClickCellToFocus:f,onDoubleClickCellToEdit:d,preventPropagation:x}},exports.useCellFocus=function(){var r=e.useRef(null),t=o.useCellContext(),n=t.rowIndex,s=t.colIndex,i=u.useFocusContext(),l=i.isEditing,c=i.checkFocus,a=e.useState(!1),f=a[0],d=a[1],x=c(n,s);e.useEffect((function(){var e;x&&l&&(null===(e=r.current)||void 0===e||e.focus()),d(!1)}),[x,l,f]);var v=e.useCallback((function(){d(!0)}),[]);return{ref:r,callbackAfterBlur:v}},exports.useTable=function(o){var u=t.useFilterContext().filter,s=n.useSortContext().sort,i=r.usePageContext(),l=i.setRowCount,c=i.pageFilter,a=e.useMemo((function(){return u(o.rows)}),[u,o.rows]);e.useEffect((function(){l(a.length)}),[a.length]);var f=e.useMemo((function(){return s(a)}),[a,s]),d=e.useMemo((function(){return c(f)}),[c,f]);return{cols:o.cols,rows:d}};
2
2
  //# sourceMappingURL=hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { DataObject, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useSortContext } from \"./sort\";\n\nexport function useTable<T extends DataObject>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort } = useSortContext();\n const { setRowCount, pageFilter } = usePageContext();\n\n const filteredRows = useMemo(() => filter(props.rows), [filter, props.rows]);\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const sortedRows = useMemo(() => sort(filteredRows), [filteredRows, sort]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n return {\n cols: props.cols,\n rows: pageRows,\n };\n}\n"],"names":["props","filter","useFilterContext","sort","useSortContext","_a","usePageContext","setRowCount","pageFilter","filteredRows","useMemo","rows","useEffect","length","sortedRows","pageRows","cols"],"mappings":"8PAMM,SAAyCA,GACrC,IAAAC,EAAWC,4BACXC,EAASC,wBACXC,EAA8BC,EAAcA,iBAA1CC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WAEzBC,EAAeC,EAAOA,SAAC,WAAM,OAAAT,EAAOD,EAAMW,KAAK,GAAE,CAACV,EAAQD,EAAMW,OAEtEC,EAAAA,WAAU,WACRL,EAAYE,EAAaI,OAC3B,GAAG,CAACJ,EAAaI,SAEjB,IAAMC,EAAaJ,EAAAA,SAAQ,WAAM,OAAAP,EAAKM,KAAe,CAACA,EAAcN,IAE9DY,EAAWL,EAAAA,SACf,WAAM,OAAAF,EAAWM,KACjB,CAACN,EAAYM,IAGf,MAAO,CACLE,KAAMhB,EAAMgB,KACZL,KAAMI,EAEV"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useSortContext } from \"./sort\";\nimport { useFocusContext } from \"./edit/provider\";\nimport { useCellContext } from \"./sheet/providers\";\n\nexport function useTable(props: TPropsTable) {\n const { filter } = useFilterContext();\n const { sort } = useSortContext();\n const { setRowCount, pageFilter } = usePageContext();\n\n const filteredRows = useMemo(() => filter(props.rows), [filter, props.rows]);\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const sortedRows = useMemo(() => sort(filteredRows), [filteredRows, sort]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n return {\n cols: props.cols,\n rows: pageRows,\n };\n}\n\nexport function useCellFocus<T extends HTMLElement>() {\n const ref = useRef<T>(null);\n const { rowIndex, colIndex } = useCellContext();\n const { isEditing, checkFocus } = useFocusContext();\n const [occurredOnCellBlur, setOccurredOnCellBlur] = useState(false);\n\n const isFocus = checkFocus(rowIndex, colIndex);\n\n useEffect(() => {\n if (isFocus && isEditing) {\n ref.current?.focus();\n }\n setOccurredOnCellBlur(false);\n }, [isFocus, isEditing, occurredOnCellBlur]);\n\n const callbackAfterBlur = useCallback(() => {\n setOccurredOnCellBlur(true);\n }, []);\n\n return { ref, callbackAfterBlur };\n}\n\nexport function useCell() {\n const cell = useCellContext();\n const { isEditing, checkFocus, focus, focusAndEdit, finishEditing } =\n useFocusContext();\n\n const isFocus = checkFocus(cell.rowIndex, cell.colIndex);\n\n useEffect(() => {\n if (!cell.editable && isFocus && isEditing) {\n finishEditing();\n }\n }, [cell.editable, isFocus, isEditing, finishEditing]);\n\n const onClickCellToFocus: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n focus(cell.rowIndex, cell.colIndex);\n },\n [focus, cell.rowIndex, cell.colIndex]\n );\n\n const onDoubleClickCellToEdit: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n e.preventDefault();\n if (cell.editable) {\n focusAndEdit(cell.rowIndex, cell.colIndex);\n }\n },\n [cell.editable, focusAndEdit, cell.rowIndex, cell.colIndex]\n );\n\n const preventPropagation: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return {\n cell,\n isFocus,\n isEditing,\n onClickCellToFocus,\n onDoubleClickCellToEdit,\n preventPropagation,\n };\n}\n"],"names":["cell","useCellContext","_a","useFocusContext","isEditing","checkFocus","focus","focusAndEdit","finishEditing","isFocus","rowIndex","colIndex","useEffect","editable","onClickCellToFocus","useCallback","e","preventDefault","stopPropagation","onDoubleClickCellToEdit","preventPropagation","ref","useRef","_b","_c","useState","occurredOnCellBlur","setOccurredOnCellBlur","current","callbackAfterBlur","props","filter","useFilterContext","sort","useSortContext","usePageContext","setRowCount","pageFilter","filteredRows","useMemo","rows","length","sortedRows","pageRows","cols"],"mappings":"8UAuDE,IAAMA,EAAOC,EAAAA,iBACPC,EACJC,EAAAA,kBADMC,EAASF,EAAAE,UAAEC,EAAUH,EAAAG,WAAEC,UAAOC,iBAAcC,kBAG9CC,EAAUJ,EAAWL,EAAKU,SAAUV,EAAKW,UAE/CC,EAAAA,WAAU,YACHZ,EAAKa,UAAYJ,GAAWL,GAC/BI,GAEJ,GAAG,CAACR,EAAKa,SAAUJ,EAASL,EAAWI,IAEvC,IAAMM,EACJC,eACE,SAACC,GACCA,EAAEC,iBACFD,EAAEE,kBACFZ,EAAMN,EAAKU,SAAUV,EAAKW,SAC5B,GACA,CAACL,EAAON,EAAKU,SAAUV,EAAKW,WAG1BQ,EACJJ,eACE,SAACC,GACCA,EAAEC,iBACEjB,EAAKa,UACPN,EAAaP,EAAKU,SAAUV,EAAKW,SAErC,GACA,CAACX,EAAKa,SAAUN,EAAcP,EAAKU,SAAUV,EAAKW,WAGhDS,EACJL,eAAY,SAACC,GACXA,EAAEC,iBACFD,EAAEE,iBACH,GAAE,IAEL,MAAO,CACLlB,KAAIA,EACJS,QAAOA,EACPL,UAASA,EACTU,mBAAkBA,EAClBK,wBAAuBA,EACvBC,mBAAkBA,EAEtB,kCArEE,IAAMC,EAAMC,SAAU,MAChBpB,EAAyBD,EAAcA,iBAArCS,EAAQR,EAAAQ,SAAEC,EAAQT,EAAAS,SACpBY,EAA4BpB,EAAeA,kBAAzCC,EAASmB,EAAAnB,UAAEC,EAAUkB,EAAAlB,WACvBmB,EAA8CC,EAAAA,UAAS,GAAtDC,EAAkBF,EAAA,GAAEG,EAAqBH,EAAA,GAE1Cf,EAAUJ,EAAWK,EAAUC,GAErCC,EAAAA,WAAU,iBACJH,GAAWL,IACA,QAAbF,EAAAmB,EAAIO,eAAS,IAAA1B,GAAAA,EAAAI,SAEfqB,GAAsB,EACvB,GAAE,CAAClB,EAASL,EAAWsB,IAExB,IAAMG,EAAoBd,EAAAA,aAAY,WACpCY,GAAsB,EACvB,GAAE,IAEH,MAAO,CAAEN,IAAGA,EAAEQ,kBAAiBA,EACjC,mBA5CM,SAAmBC,GACf,IAAAC,EAAWC,4BACXC,EAASC,wBACXhC,EAA8BiC,EAAcA,iBAA1CC,EAAWlC,EAAAkC,YAAEC,EAAUnC,EAAAmC,WAEzBC,EAAeC,EAAOA,SAAC,WAAM,OAAAR,EAAOD,EAAMU,KAAK,GAAE,CAACT,EAAQD,EAAMU,OAEtE5B,EAAAA,WAAU,WACRwB,EAAYE,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAMC,EAAaH,EAAAA,SAAQ,WAAM,OAAAN,EAAKK,KAAe,CAACA,EAAcL,IAE9DU,EAAWJ,EAAAA,SACf,WAAM,OAAAF,EAAWK,KACjB,CAACL,EAAYK,IAGf,MAAO,CACLE,KAAMd,EAAMc,KACZJ,KAAMG,EAEV"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/pagenation/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TPageAction, TPageState } from \"./types\";\nimport { INITIAL_PAGE_STATE } from \"./constants\";\n\nfunction pagenationReducer(state: TPageState, action: TPageAction): TPageState {\n switch (action.type) {\n case \"setRowCount\":\n return {\n ...state,\n currentPage: 1,\n rowCount: action.payload.rowCount,\n };\n case \"setPerPage\":\n return {\n ...state,\n perPage: action.payload.perPage,\n };\n case \"next\":\n if (state.currentPage === Math.ceil(state.rowCount / state.perPage)) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage + 1,\n };\n case \"prev\":\n if (state.currentPage === 1) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage - 1,\n };\n case \"jump\":\n if (\n action.payload.pageNumber < 1 ||\n action.payload.pageNumber > Math.ceil(state.rowCount / state.perPage) ||\n state.currentPage === action.payload.pageNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n currentPage: action.payload.pageNumber,\n };\n default:\n return state;\n }\n}\n\nexport function usePageReducer(initialState?: TPageState) {\n const [state, dispatch] = useReducer(\n pagenationReducer,\n initialState ?? INITIAL_PAGE_STATE\n );\n\n const next = useCallback(() => dispatch({ type: \"next\" }), [dispatch]);\n const prev = useCallback(() => dispatch({ type: \"prev\" }), [dispatch]);\n const jump = useCallback(\n (pageNumber: number) => dispatch({ type: \"jump\", payload: { pageNumber } }),\n [dispatch]\n );\n\n const setRowCount = useCallback(\n (rowCount: number) =>\n dispatch({ type: \"setRowCount\", payload: { rowCount } }),\n [dispatch]\n );\n\n const from = useMemo(() => (state.currentPage - 1) * state.perPage, [state]);\n const to = useMemo(() => state.currentPage * state.perPage, [state]);\n\n const pageFilter = useCallback(\n <T>(data: T[]): T[] => {\n return data.slice(from, to);\n },\n [from, to]\n );\n\n return {\n perPage: state.perPage,\n current: state.currentPage,\n rowCount: state.rowCount,\n pageCount: Math.ceil(state.rowCount / state.perPage),\n from,\n to,\n next,\n prev,\n jump,\n setRowCount,\n pageFilter,\n };\n}\n"],"names":["pagenationReducer","state","action","type","__assign","currentPage","rowCount","payload","perPage","Math","ceil","pageNumber","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"sHAIA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRI,YAAa,EACbC,SAAUJ,EAAOK,QAAQD,WAE7B,IAAK,aACH,OACKF,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHO,QAASN,EAAOK,QAAQC,UAE5B,IAAK,OACH,OAAIP,EAAMI,cAAgBI,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,SAClDP,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHI,YAAaJ,EAAMI,YAAc,IAErC,IAAK,OACH,OAA0B,IAAtBJ,EAAMI,YACDJ,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHI,YAAaJ,EAAMI,YAAc,IAErC,IAAK,OACH,OACEH,EAAOK,QAAQI,WAAa,GAC5BT,EAAOK,QAAQI,WAAaF,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,UAC7DP,EAAMI,cAAgBH,EAAOK,QAAQI,WAE9BV,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHI,YAAaH,EAAOK,QAAQI,aAEhC,QACE,OAAOV,EAEb,wBAEM,SAAyBW,GACvB,IAAAC,EAAoBC,EAAAA,WACxBd,EACAY,QAAAA,EAAgBG,EAAAA,oBAFXd,OAAOe,OAKRC,EAAOC,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEb,KAAM,QAAjB,GAA4B,CAACa,IACtDG,EAAOD,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEb,KAAM,QAAjB,GAA4B,CAACa,IACtDI,EAAOF,EAAAA,aACX,SAACP,GAAuB,OAAAK,EAAS,CAAEb,KAAM,OAAQI,QAAS,CAAEI,WAAUA,OACtE,CAACK,IAGGK,EAAcH,eAClB,SAACZ,GACC,OAAAU,EAAS,CAAEb,KAAM,cAAeI,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACU,IAGGM,EAAOC,EAAOA,SAAC,WAAM,OAACtB,EAAMI,YAAc,GAAKJ,EAAMO,OAAO,GAAE,CAACP,IAC/DuB,EAAKD,EAAAA,SAAQ,WAAM,OAAAtB,EAAMI,YAAcJ,EAAMO,UAAS,CAACP,IAEvDwB,EAAaP,eACjB,SAAIQ,GACF,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLhB,QAASP,EAAMO,QACfoB,QAAS3B,EAAMI,YACfC,SAAUL,EAAMK,SAChBuB,UAAWpB,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,SAC5Cc,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/pagenation/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TPageAction, TPageState } from \"./types\";\nimport { INITIAL_PAGE_STATE } from \"./constants\";\nimport { DataObject } from \"../type\";\n\nfunction pagenationReducer(state: TPageState, action: TPageAction): TPageState {\n switch (action.type) {\n case \"setRowCount\":\n return {\n ...state,\n currentPage: 1,\n rowCount: action.payload.rowCount,\n };\n case \"setPerPage\":\n return {\n ...state,\n perPage: action.payload.perPage,\n };\n case \"next\":\n if (state.currentPage === Math.ceil(state.rowCount / state.perPage)) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage + 1,\n };\n case \"prev\":\n if (state.currentPage === 1) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage - 1,\n };\n case \"jump\":\n if (\n action.payload.pageNumber < 1 ||\n action.payload.pageNumber > Math.ceil(state.rowCount / state.perPage) ||\n state.currentPage === action.payload.pageNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n currentPage: action.payload.pageNumber,\n };\n default:\n return state;\n }\n}\n\nexport function usePageReducer(initialState?: TPageState) {\n const [state, dispatch] = useReducer(\n pagenationReducer,\n initialState ?? INITIAL_PAGE_STATE\n );\n\n const next = useCallback(() => dispatch({ type: \"next\" }), [dispatch]);\n const prev = useCallback(() => dispatch({ type: \"prev\" }), [dispatch]);\n const jump = useCallback(\n (pageNumber: number) => dispatch({ type: \"jump\", payload: { pageNumber } }),\n [dispatch]\n );\n\n const setRowCount = useCallback(\n (rowCount: number) =>\n dispatch({ type: \"setRowCount\", payload: { rowCount } }),\n [dispatch]\n );\n\n const from = useMemo(() => (state.currentPage - 1) * state.perPage, [state]);\n const to = useMemo(() => state.currentPage * state.perPage, [state]);\n\n const pageFilter = useCallback(\n (data: DataObject[]): DataObject[] => {\n return data.slice(from, to);\n },\n [from, to]\n );\n\n return {\n perPage: state.perPage,\n current: state.currentPage,\n rowCount: state.rowCount,\n pageCount: Math.ceil(state.rowCount / state.perPage),\n from,\n to,\n next,\n prev,\n jump,\n setRowCount,\n pageFilter,\n };\n}\n"],"names":["pagenationReducer","state","action","type","__assign","currentPage","rowCount","payload","perPage","Math","ceil","pageNumber","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"sHAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRI,YAAa,EACbC,SAAUJ,EAAOK,QAAQD,WAE7B,IAAK,aACH,OACKF,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHO,QAASN,EAAOK,QAAQC,UAE5B,IAAK,OACH,OAAIP,EAAMI,cAAgBI,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,SAClDP,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHI,YAAaJ,EAAMI,YAAc,IAErC,IAAK,OACH,OAA0B,IAAtBJ,EAAMI,YACDJ,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHI,YAAaJ,EAAMI,YAAc,IAErC,IAAK,OACH,OACEH,EAAOK,QAAQI,WAAa,GAC5BT,EAAOK,QAAQI,WAAaF,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,UAC7DP,EAAMI,cAAgBH,EAAOK,QAAQI,WAE9BV,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHI,YAAaH,EAAOK,QAAQI,aAEhC,QACE,OAAOV,EAEb,wBAEM,SAAyBW,GACvB,IAAAC,EAAoBC,EAAAA,WACxBd,EACAY,QAAAA,EAAgBG,EAAAA,oBAFXd,OAAOe,OAKRC,EAAOC,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEb,KAAM,QAAjB,GAA4B,CAACa,IACtDG,EAAOD,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEb,KAAM,QAAjB,GAA4B,CAACa,IACtDI,EAAOF,EAAAA,aACX,SAACP,GAAuB,OAAAK,EAAS,CAAEb,KAAM,OAAQI,QAAS,CAAEI,WAAUA,OACtE,CAACK,IAGGK,EAAcH,eAClB,SAACZ,GACC,OAAAU,EAAS,CAAEb,KAAM,cAAeI,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACU,IAGGM,EAAOC,EAAOA,SAAC,WAAM,OAACtB,EAAMI,YAAc,GAAKJ,EAAMO,OAAO,GAAE,CAACP,IAC/DuB,EAAKD,EAAAA,SAAQ,WAAM,OAAAtB,EAAMI,YAAcJ,EAAMO,UAAS,CAACP,IAEvDwB,EAAaP,eACjB,SAACQ,GACC,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLhB,QAASP,EAAMO,QACfoB,QAAS3B,EAAMI,YACfC,SAAUL,EAAMK,SAChBuB,UAAWpB,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,SAC5Cc,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),r=require("react"),n=require("./hooks.js"),t=r.createContext({perPage:0,current:0,pageCount:0,from:0,to:0,rowCount:0,next:function(){throw new Error("Function not implemented.")},prev:function(){throw new Error("Function not implemented.")},jump:function(e){throw new Error("Function not implemented.")},setRowCount:function(e){throw new Error("Function not implemented.")},pageFilter:function(e){throw new Error("Function not implemented.")}});exports.PagenationProvider=function(r){var o,u;return e.jsx(t.Provider,{value:n.usePageReducer({perPage:null!==(o=r.perPage)&&void 0!==o?o:50,currentPage:null!==(u=r.currentPage)&&void 0!==u?u:1,rowCount:r.rowCount}),children:r.children})},exports.usePageContext=function(){return r.useContext(t)};
2
+ "use strict";var e=require("react/jsx-runtime"),r=require("react"),n=require("./hooks.js"),t=r.createContext({perPage:0,current:0,pageCount:0,from:0,to:0,rowCount:0,next:function(){throw new Error("Function not implemented.")},prev:function(){throw new Error("Function not implemented.")},jump:function(){throw new Error("Function not implemented.")},setRowCount:function(){throw new Error("Function not implemented.")},pageFilter:function(){throw new Error("Function not implemented.")}});exports.PagenationProvider=function(r){var o,u;return e.jsx(t.Provider,{value:n.usePageReducer({perPage:null!==(o=r.perPage)&&void 0!==o?o:50,currentPage:null!==(u=r.currentPage)&&void 0!==u?u:1,rowCount:r.rowCount}),children:r.children})},exports.usePageContext=function(){return r.useContext(t)};
3
3
  //# sourceMappingURL=providers.js.map
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),t=require("react"),n=t.createContext({id:""});function o(){return t.useContext(n)}var l=t.createContext({cols:[],colMaps:{}});function u(e){return t.useContext(l).colMaps[e]}var i=t.createContext({columnKey:"",value:"",label:"",type:"string",rowIndex:0,colIndex:0});exports.CellProvider=function(e){var t,n,l=e.children,s=e.columnKey,c=e.rowIndex,d=e.colIndex,x=u(s),a=o()[s];return r.jsx(i.Provider,{value:{columnKey:s,value:a,label:"select"===x.type?null===(n=null===(t=x.options)||void 0===t?void 0:t.find((function(e){return e.value===a})))||void 0===n?void 0:n.label:a,editable:x.editable,render:x.editable?void 0:x.render,type:x.type,rowIndex:c,colIndex:d},children:l})},exports.ColumnsProvider=function(t){var n=t.children,o=t.cols,u=o.reduce((function(r,t){var n=t.key,o=e.__rest(t,["key"]);return r[n]=o,r}),{});return r.jsx(l.Provider,{value:{cols:o,colMaps:u},children:n})},exports.RowProvider=function(e){var t=e.children,o=e.row;return r.jsx(n.Provider,{value:o,children:t})},exports.useCellContext=function(){return t.useContext(i)},exports.useColumnContext=u,exports.useColumnsContext=function(){return t.useContext(l).cols},exports.useRowContext=o;
3
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),r=require("./icon.js"),t=require("./provider.js");exports.SortButton=function(n){var o=t.useSortContext(),i=o.key,s=o.asc,c=o.changeKey,u=o.changeOrder,a=i===n.keyName;return e.jsx("div",{onClick:function(e){e.preventDefault(),a?u():c(n.keyName)},className:"cursor-pointer",children:e.jsx(r.SortIcon,{sortOrder:a?s?"ASC":"DESC":"ASC",isSortActive:a})})};
2
+ "use strict";var r=require("react/jsx-runtime"),e=require("./icon.js"),t=require("./provider.js");exports.SortButton=function(n){var o=t.useSortContext(),c=o.key,i=o.asc,s=o.changeKey,u=o.changeOrder,a=c===n.columnKey;return r.jsx("div",{onClick:function(r){r.preventDefault(),a?u():s(n.columnKey)},className:"cursor-pointer",children:r.jsx(e.SortIcon,{sortOrder:a?i?"ASC":"DESC":"ASC",isSortActive:a})})};
3
3
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject } from \"../type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return { key: action.payload.key, asc: true };\n case \"changeOrder\":\n return { ...state, asc: !state.asc };\n }\n};\n\nexport function useSortReducer(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const sort = useCallback(\n <T extends DataObject>(rows: T[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state]\n );\n\n return { key: state.key, asc: state.asc, changeKey, changeOrder, sort };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","__assign","initial","_c","useReducer","_a","_b","dispatch","sort","useCallback","rows","__spreadArray","a","b","changeKey","changeOrder"],"mappings":"0FAIMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CAAEC,IAAKF,EAAOG,QAAQD,IAAKE,KAAK,GACzC,IAAK,cACH,OAAYC,EAAAA,SAAAA,WAAA,CAAA,EAAAN,IAAOK,KAAML,EAAMK,MAErC,yBAEM,SAAyBE,WAIvBC,EAAoBC,EAAUA,WAACV,EAAS,CAC5CI,IAAiB,QAAZO,EAAAH,eAAAA,EAASJ,WAAG,IAAAO,EAAAA,EAAI,KACrBL,IAAiB,QAAZM,EAAAJ,eAAAA,EAASF,WAAG,IAAAM,GAAAA,IAFZX,EAAKQ,EAAA,GAAEI,OAaRC,EAAOC,eACX,SAAuBC,GACrB,OAAAC,EAAAA,cAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,OAAID,EAAEjB,EAAMG,KAAOe,EAAElB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBY,EAAEjB,EAAMG,KAAOe,EAAElB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GARA,GASF,CAACL,IAGH,MAAO,CAAEG,IAAKH,EAAMG,IAAKE,IAAKL,EAAMK,IAAKc,UAtBvB,SAAChB,GACjBS,EAAS,CAAEV,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAoBoDiB,YAlBhC,WAClBR,EAAS,CAAEV,KAAM,eACnB,EAgBiEW,KAAIA,EACvE"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject } from \"../type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return { key: action.payload.key, asc: true };\n case \"changeOrder\":\n return { ...state, asc: !state.asc };\n }\n};\n\nexport function useSortReducer(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const sort = useCallback(\n (rows: DataObject[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state]\n );\n\n return { key: state.key, asc: state.asc, changeKey, changeOrder, sort };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","__assign","initial","_c","useReducer","_a","_b","dispatch","sort","useCallback","rows","__spreadArray","a","b","changeKey","changeOrder"],"mappings":"0FAIMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CAAEC,IAAKF,EAAOG,QAAQD,IAAKE,KAAK,GACzC,IAAK,cACH,OAAYC,EAAAA,SAAAA,WAAA,CAAA,EAAAN,IAAOK,KAAML,EAAMK,MAErC,yBAEM,SAAyBE,WAIvBC,EAAoBC,EAAUA,WAACV,EAAS,CAC5CI,IAAiB,QAAZO,EAAAH,eAAAA,EAASJ,WAAG,IAAAO,EAAAA,EAAI,KACrBL,IAAiB,QAAZM,EAAAJ,eAAAA,EAASF,WAAG,IAAAM,GAAAA,IAFZX,EAAKQ,EAAA,GAAEI,OAaRC,EAAOC,eACX,SAACC,GACC,OAAAC,EAAAA,cAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,OAAID,EAAEjB,EAAMG,KAAOe,EAAElB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBY,EAAEjB,EAAMG,KAAOe,EAAElB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GARA,GASF,CAACL,IAGH,MAAO,CAAEG,IAAKH,EAAMG,IAAKE,IAAKL,EAAMK,IAAKc,UAtBvB,SAAChB,GACjBS,EAAS,CAAEV,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAoBoDiB,YAlBhC,WAClBR,EAAS,CAAEV,KAAM,eACnB,EAgBiEW,KAAIA,EACvE"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{__assign as e,__rest as r}from"../../node_modules/tslib/tslib.es6.js";import{jsx as o,jsxs as t}from"react/jsx-runtime";import{useState as l}from"react";import{useTable as n}from"./hook.js";import{TableCell as i}from"./cell.js";import{TableHeaderElement as a}from"./header.js";import{PagenationProvider as c}from"./pagenation/providers.js";import{DisplayRange as d,Pagenation as s}from"./pagenation/components.js";import{FilterProvider as m}from"./filter/provider.js";import{TableFilterRemoveButton as p,TableFilter as u,TableFilterForm as h}from"./filter/components.js";import{SortButton as f}from"./sort/components.js";import{SortProvider as v}from"./sort/provider.js";function y(r){var t;return o(m,{children:o(v,{initialCondition:null===(t=r.initialCondition)||void 0===t?void 0:t.sort,children:o(c,{rowCount:r.rows.length,children:o(b,e({},r))})})})}function b(c){var m=n(c),v=m.cols,y=m.rows,b=l(!1),k=b[0],N=b[1];return t("div",{className:"w-full",children:[o("div",{className:"flex justify-end",children:o(p,{children:"remove all filters"})}),o("div",{className:"relative w-full h-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:t("table",{className:"table table-auto w-full",children:[o("thead",{children:o("tr",{className:"sticky top-0 border-gray-200 z-20",children:v.map((function(e){return o(a,{label:e.label,sortConponent:"component"!==e.type?o(f,{keyName:e.key}):void 0,filterComponent:"component"!==e.type?o(u,{keyName:e.key,onClick:function(e){e.preventDefault(),N((function(e){return!e}))}}):void 0},e.key)}))})}),t("tbody",{children:[k&&o("tr",{children:o("td",{colSpan:v.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl py-5 px-2 z-20",children:o("div",{className:"container max-w-[768px] mx-auto",children:t("div",{className:"relative",children:[o("div",{className:"absolute top-0 right-0",children:o("button",{onClick:function(e){e.preventDefault(),N(!1)},children:"close"})}),o("div",{children:o(h,{cols:v})})]})})})}),0===y.length&&o("tr",{children:o("td",{colSpan:v.length,className:"py-5",children:o("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),y.map((function(t){var l;return o("tr",{className:"border border-gray-200 hover:bg-gray-100 ".concat((null===(l=y[0])||void 0===l?void 0:l.onClick)?"hover:cursor-pointer":""),onClick:t.onClick,"data-testid":t.id,children:v.map((function(l){var n=l.key,a=r(l,["key"]);return o(i,e({},a,{columnKey:null==l?void 0:l.key,currentRecord:t,children:t[null==l?void 0:l.key]}),n)}))},t.id)}))]})]})}),t("div",{className:"mt-1",children:[o(d,{}),o("div",{className:"mt-2",children:o(s,{})})]})]})}export{y as default};
2
+ import{__assign as e}from"../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as o}from"react/jsx-runtime";import{useEffect as t}from"react";import{useTable as n}from"./hook.js";import{TableCell as i}from"./cell.js";import{TableHeaderElement as l}from"./header.js";import{PagenationProvider as c}from"./pagenation/providers.js";import{DisplayRange as d,Pagenation as a}from"./pagenation/components.js";import{FilterProvider as s,useFilterContext as m}from"./filter/provider.js";import{TableFilterRemoveButton as u,TableFilterForm as f}from"./filter/components.js";import"./sort/icon.js";import{SortProvider as p}from"./sort/provider.js";import{ColumnsProvider as h,RowProvider as v,CellProvider as y}from"./sheet/providers.js";import{FocusProvider as w,useFocusContext as g}from"./edit/provider.js";function k(o){var t;return r(s,{children:r(p,{initialCondition:null===(t=o.initialCondition)||void 0===t?void 0:t.sort,children:r(c,{rowCount:o.rows.length,children:r(h,{cols:o.cols,children:r(w,{columnCount:o.cols.length,children:r(b,e({},o))})})})})})}function b(e){var c=n(e),s=c.cols,p=c.rows,h=g(),w=h.isFocus,k=h.isEditing,b=h.edit,j=h.moveLeft,x=h.moveRight,N=h.moveUp,D=h.moveDown,C=h.unfocus,A=h.setMaxRowNumber,R=m().selectedFilterKey;return t((function(){var e=function(e){w&&!k&&("Enter"===e.key?(e.preventDefault(),D()):"Escape"===e.key?(e.preventDefault(),C()):"ArrowRight"===e.key?(e.preventDefault(),x()):"ArrowLeft"===e.key?(e.preventDefault(),j()):"ArrowUp"===e.key?(e.preventDefault(),N()):"ArrowDown"===e.key?(e.preventDefault(),D()):"F2"===e.key&&b())};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[k,w]),t((function(){A(p.length-1)}),[p.length]),o("div",{className:"w-full",children:[r("div",{className:"flex justify-end mb-1 mr-3",children:r(u,{children:r("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),r("div",{className:"relative w-full h-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:o("table",{className:"table table-auto w-full",children:[r("thead",{children:r("tr",{className:"sticky top-0 border-gray-200 z-20",children:s.map((function(e){return r(l,{columnKey:e.key},e.key)}))})}),o("tbody",{children:[!!R&&r("tr",{children:r("td",{colSpan:s.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r(f,{})})}),0===p.length&&r("tr",{children:r("td",{colSpan:s.length,className:"py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),p.map((function(o,t){return r(v,{row:o,children:r("tr",{className:"border border-gray-200 hover:bg-gray-100 ".concat(e.onClickRow?"hover:cursor-pointer":""),onClick:function(r){r.preventDefault(),e.onClickRow&&e.onClickRow(o)},"data-testid":o.id,children:s.map((function(e,o){return r(y,{columnKey:e.key,rowIndex:t,colIndex:o,children:r(i,{})},e.key)}))})},o.id)}))]})]})}),o("div",{className:"mt-1",children:[r(d,{}),r("div",{className:"mt-2",children:r(a,{})})]})]})}export{k as default};
3
3
  //# sourceMappingURL=base.js.map
@@ -1,2 +1,3 @@
1
- import{jsxs as e,jsx as n}from"react/jsx-runtime";import{forwardRef as t,memo as r,useState as c,useRef as o,useCallback as l,useEffect as u}from"react";import{EditIcon as i}from"./edit-icon.js";import{CancelIcon as a}from"./cancel-icon.js";var s=t((function(t,r){return e("div",{className:"flex justify-between gap-1 w-full items-center",children:[n("input",{ref:r,className:"w-full py-1 px-2",type:"text",value:t.value,onChange:t.onChange,onBlur:t.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(t.reset(),t.endEditing())}}),n("button",{onMouseDown:function(e){e.preventDefault(),t.reset(),t.endEditing()},children:n(a,{size:16})})]})}));function d(e){var t=c(e.currentRecord[e.columnKey]),r=t[0],o=t[1];return n(s,{ref:e.currentRef,value:r,onChange:function(e){e.preventDefault(),o(e.target.value)},onBlur:function(n){n.preventDefault(),r!==e.currentRecord[e.columnKey]?!function(){var n,t,c;return(null===(n=e.constraints)||void 0===n?void 0:n.maxLength)&&r.length>e.constraints.maxLength?(alert("最大文字数(".concat(e.constraints.maxLength,")を超過しています。(現在").concat(r.length,"文字)")),!1):(null===(t=e.constraints)||void 0===t?void 0:t.minLength)&&r.length<e.constraints.minLength?(alert("最小文字数(".concat(e.constraints.minLength,")を下回っています。(現在").concat(r.length,"文字)")),!1):!((null===(c=e.constraints)||void 0===c?void 0:c.pattern)&&!new RegExp(e.constraints.pattern).test(r)&&(alert("パターンに一致しません。(パターン".concat(e.constraints.pattern,")")),1))}()?setTimeout((function(){n.target.focus()}),100):(e.onCellBlur(e.columnKey,r,e.currentRecord,e.compEditing),e.setOccurredOnCellBlur()):e.compEditing()},reset:function(){return o(e.currentRecord[e.columnKey])},endEditing:e.compEditing})}function f(e){var t=c(e.currentRecord[e.columnKey].toString()),r=t[0],o=t[1];return n(s,{ref:e.currentRef,value:r,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?o(e.target.value):isNaN(Number(e.target.value))||o(Number(e.target.value).toString()):o("-0"):o("0")},onBlur:function(n){n.preventDefault(),Number(r)!==e.currentRecord[e.columnKey]?!function(){var n,t,c=parseInt(r);return(null===(n=e.constraints)||void 0===n?void 0:n.max)&&c>e.constraints.max?(alert("最大値(".concat(e.constraints.max,")を超過しています。(入力値:").concat(c,")")),!1):!((null===(t=e.constraints)||void 0===t?void 0:t.min)&&c<e.constraints.min&&(alert("最小値(".concat(e.constraints.min,")を下回っています。(入力値:").concat(c,")")),1))}()?setTimeout((function(){n.target.focus()}),100):(e.onCellBlur(e.columnKey,Number(r),e.currentRecord,e.compEditing),e.setOccurredOnCellBlur()):e.compEditing()},reset:function(){return o(e.currentRecord[e.columnKey].toString())},endEditing:e.compEditing})}function m(t){var r=c(t.currentRecord[t.columnKey]),o=r[0],l=r[1];return e("div",{className:"flex justify-between gap-1 w-full items-center",children:[e("select",{ref:t.currentRef,className:"w-full py-1 px-2",value:o,onChange:function(e){e.preventDefault(),l(e.target.value)},onBlur:function(e){e.preventDefault(),t.onCellBlur(t.columnKey,o,t.currentRecord,t.compEditing),t.setOccurredOnCellBlur()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(l(t.currentRecord[t.columnKey]),t.compEditing())},children:[t.allowEmpty&&n("option",{value:"",children:""==t.currentRecord[t.columnKey]?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),t.options.map((function(e){return n("option",{value:e.value,children:e.label},e.value)}))]}),n("button",{onMouseDown:function(e){e.preventDefault(),l(t.currentRecord[t.columnKey]),t.compEditing()},children:n(a,{size:16})})]})}var p=r((function(t){var r,a=c(!1),s=a[0],p=a[1],v=o(null),g=c(!1),y=g[0],h=g[1],E=l((function(){p(!1)}),[p]);return u((function(){var e;s&&(null===(e=v.current)||void 0===e||e.focus()),h(!1)}),[s,y]),n("td",{children:e("div",{className:"relative",children:[e("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default ".concat(s?"opacity-0":""),onClick:function(e){e.preventDefault(),e.stopPropagation()},children:["component"===t.type?t.children:n("div",{onDoubleClick:function(e){e.preventDefault(),t.editable&&p(!0)},children:n("p",{className:"text-left",children:"select"===t.type?null===(r=t.options.find((function(e){return e.value===t.children})))||void 0===r?void 0:r.label:t.children})}),t.editable&&n("button",{className:"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200",onClick:function(e){e.preventDefault(),t.editable&&p(!0)},children:n(i,{size:12})})]}),t.editable&&s&&e("div",{className:"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:["string"===t.type&&n(d,{currentRef:v,columnKey:t.columnKey,currentRecord:t.currentRecord,compEditing:E,onCellBlur:t.onCellBlur,constraints:t.constraints,setOccurredOnCellBlur:function(){h(!0)}}),"number"===t.type&&n(f,{currentRef:v,columnKey:t.columnKey,currentRecord:t.currentRecord,compEditing:E,onCellBlur:t.onCellBlur,constraints:t.constraints,setOccurredOnCellBlur:function(){h(!0)}}),"select"===t.type&&n(m,{currentRef:v,columnKey:t.columnKey,currentRecord:t.currentRecord,compEditing:E,options:t.options,allowEmpty:t.allowEmpty,onCellBlur:t.onCellBlur,setOccurredOnCellBlur:function(){h(!0)}})]})]})})}));export{p as TableCell};
1
+ "use client";
2
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{forwardRef as n,memo as r,useState as l}from"react";import{EditIcon as i}from"./edit-icon.js";import{CancelIcon as o}from"./cancel-icon.js";import{useCellContext as a,useRowContext as u,useColumnContext as c}from"./sheet/providers.js";import{useFocusContext as s}from"./edit/provider.js";import{useCell as f,useCellFocus as v}from"./hook.js";var d=n((function(n,r){return e("div",{className:"flex justify-between gap-1 w-full items-center",children:[t("input",{ref:r,className:"w-full py-1 px-2",type:"text",value:n.value,onChange:n.onChange,onBlur:n.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(n.reset(),n.endEditing())}}),t("button",{onMouseDown:function(e){e.preventDefault(),n.reset(),n.endEditing()},children:t(o,{size:16})})]})}));function m(){var e=a(),n=c(e.columnKey),r=u(),i=s().finishEditing,o=v(),f=o.ref,m=o.callbackAfterBlur,p=l(r[e.columnKey]),g=p[0],h=p[1];if(!n.editable||"string"!==n.type)throw new Error("Invalid condition");return t(d,{ref:f,value:g,onChange:function(e){e.preventDefault(),h(e.target.value)},onBlur:function(t){t.preventDefault(),g!==r[e.columnKey]?!function(){var e,t,r;return(null===(e=n.constraints)||void 0===e?void 0:e.maxLength)&&g.length>n.constraints.maxLength?(alert("最大文字数(".concat(n.constraints.maxLength,")を超過しています。(現在").concat(g.length,"文字)")),!1):(null===(t=n.constraints)||void 0===t?void 0:t.minLength)&&g.length<n.constraints.minLength?(alert("最小文字数(".concat(n.constraints.minLength,")を下回っています。(現在").concat(g.length,"文字)")),!1):!((null===(r=n.constraints)||void 0===r?void 0:r.pattern)&&!new RegExp(n.constraints.pattern).test(g)&&(alert("パターンに一致しません。(パターン".concat(n.constraints.pattern,")")),1))}()?setTimeout((function(){t.target.focus()}),100):(n.onCellBlur(e.columnKey,g,r,i),m()):i()},reset:function(){return h(r[e.columnKey].toString())},endEditing:i})}function p(){var e=a(),n=c(e.columnKey),r=u(),i=s().finishEditing,o=v(),f=o.ref,m=o.callbackAfterBlur,p=l(e.value.toString()),g=p[0],h=p[1];if(!n.editable||"number"!==n.type)throw new Error("Invalid condition");return t(d,{ref:f,value:g,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?h(e.target.value):isNaN(Number(e.target.value))||h(Number(e.target.value).toString()):h("-0"):h("0")},onBlur:function(t){t.preventDefault(),Number(g)!==e.value?!function(){var e,t,r=parseInt(g);return(null===(e=n.constraints)||void 0===e?void 0:e.max)&&r>n.constraints.max?(alert("最大値(".concat(n.constraints.max,")を超過しています。(入力値:").concat(r,")")),!1):!((null===(t=n.constraints)||void 0===t?void 0:t.min)&&r<n.constraints.min&&(alert("最小値(".concat(n.constraints.min,")を下回っています。(入力値:").concat(r,")")),1))}()?setTimeout((function(){t.target.focus()}),100):(n.onCellBlur(e.columnKey,Number(g),r,i),m()):i()},reset:function(){return h(e.value.toString())},endEditing:i})}function g(){var n=a(),r=c(n.columnKey),i=u(),f=s().finishEditing,d=v(),m=d.ref,p=d.callbackAfterBlur,g=l(n.value),h=g[0],y=g[1];if(!r.editable||"select"!==r.type)throw new Error("Invalid condition");return e("div",{className:"flex justify-between gap-1 w-full items-center",children:[e("select",{ref:m,className:"w-full py-1 px-2",value:h,onChange:function(e){e.preventDefault(),y(e.target.value)},onBlur:function(e){e.preventDefault(),h!==n.value?(r.onCellBlur(n.columnKey,h,i,f),p()):f()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(y(n.value),f())},children:[r.allowEmpty&&t("option",{value:"",children:""==n.value?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),r.options.map((function(e){return t("option",{value:e.value,children:e.label},e.value)}))]}),t("button",{onMouseDown:function(e){e.preventDefault(),y(n.value),f()},children:t(o,{size:16})})]})}var h=r((function(){var e=a(),n=s().focusAndEdit;return t("button",{className:"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200",onClick:function(t){t.preventDefault(),n(e.rowIndex,e.colIndex)},children:t(i,{size:12})})}));function y(){var n=f(),r=n.cell,l=n.isFocus,i=n.isEditing,o=n.onClickCellToFocus,a=n.onDoubleClickCellToEdit,c=n.preventPropagation,s=u();return t("td",{className:"".concat(l?"outline outline-1 -outline-offset-1 outline-gray-400":""),children:e("div",{className:"relative",children:[e("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default ".concat(l&&i?"opacity-0":""),onClick:o,children:[r.render?r.render(r.value,s):t("div",{onDoubleClick:a,children:t("p",{className:"text-left",children:r.label})}),r.editable&&t(h,{})]}),r.editable&&l&&i&&e("div",{className:"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2",onClick:c,children:["string"===r.type&&t(m,{}),"number"===r.type&&t(p,{}),"select"===r.type&&t(g,{})]})]})})}export{y as TableCell};
2
3
  //# sourceMappingURL=cell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cell.js","sources":["../../../../src/table/cell.tsx"],"sourcesContent":["import {\n memo,\n useEffect,\n useRef,\n useState,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { DataObject, TCellEditingCondition } from \"./type\";\nimport { EditIcon } from \"./edit-icon\";\nimport { CancelIcon } from \"./cancel-icon\";\n\ntype TPropsCell<T extends DataObject> = {\n currentRecord: T;\n columnKey: string;\n children: string | number;\n} & TCellEditingCondition<T>;\n\nconst CellInput = forwardRef(function CI<T extends string | number>(\n props: {\n value: T;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;\n reset: () => void;\n endEditing: () => void;\n },\n ref: React.ForwardedRef<HTMLInputElement>\n) {\n return (\n <div className=\"flex justify-between gap-1 w-full items-center\">\n <input\n ref={ref}\n className=\"w-full py-1 px-2\"\n type=\"text\"\n value={props.value}\n onChange={props.onChange}\n onBlur={props.onBlur}\n onKeyUp={(e: React.KeyboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n if (e.key === \"Enter\") {\n (e.target as HTMLInputElement).blur();\n } else if (e.key === \"Escape\") {\n props.reset();\n props.endEditing();\n }\n }}\n />\n <button\n onMouseDown={(e) => {\n e.preventDefault();\n props.reset();\n props.endEditing();\n }}\n >\n <CancelIcon size={16} />\n </button>\n </div>\n );\n});\n\nfunction StringCellInput<T extends DataObject>(props: {\n currentRef: React.ForwardedRef<HTMLInputElement>;\n columnKey: string;\n currentRecord: T;\n compEditing: () => void;\n onCellBlur: (\n key: string,\n value: string,\n current: T,\n completeEditing: () => void\n ) => void;\n constraints?: { maxLength?: number; minLength?: number; pattern?: string };\n setOccurredOnCellBlur: () => void;\n}) {\n const [value, setValue] = useState(\n props.currentRecord[props.columnKey] as string\n );\n\n const validate = () => {\n if (props.constraints?.maxLength) {\n if (value.length > props.constraints.maxLength) {\n alert(\n `最大文字数(${props.constraints.maxLength})を超過しています。(現在${value.length}文字)`\n );\n return false;\n }\n }\n if (props.constraints?.minLength) {\n if (value.length < props.constraints.minLength) {\n alert(\n `最小文字数(${props.constraints.minLength})を下回っています。(現在${value.length}文字)`\n );\n return false;\n }\n }\n if (props.constraints?.pattern) {\n if (!new RegExp(props.constraints.pattern).test(value)) {\n alert(`パターンに一致しません。(パターン${props.constraints.pattern})`);\n return false;\n }\n }\n return true;\n };\n\n return (\n <CellInput\n ref={props.currentRef}\n value={value}\n onChange={(e) => {\n e.preventDefault();\n setValue(e.target.value);\n }}\n onBlur={(e) => {\n e.preventDefault();\n\n if (value === props.currentRecord[props.columnKey]) {\n props.compEditing();\n return;\n }\n\n if (!validate()) {\n setTimeout(() => {\n e.target.focus();\n }, 100);\n return;\n }\n\n props.onCellBlur(\n props.columnKey,\n value,\n props.currentRecord,\n props.compEditing\n );\n\n props.setOccurredOnCellBlur();\n }}\n reset={() => setValue(props.currentRecord[props.columnKey])}\n endEditing={props.compEditing}\n />\n );\n}\n\nfunction NumberCellInput<T extends DataObject>(props: {\n currentRef: React.ForwardedRef<HTMLInputElement>;\n columnKey: string;\n currentRecord: T;\n compEditing: () => void;\n onCellBlur: (\n key: string,\n value: number,\n current: T,\n completeEditing: () => void\n ) => void;\n constraints?: { max?: number; min?: number };\n setOccurredOnCellBlur: () => void;\n}) {\n const [value, setValue] = useState(\n (props.currentRecord[props.columnKey] as number).toString()\n );\n\n const validate = () => {\n const v = parseInt(value);\n\n if (props.constraints?.max) {\n if (v > props.constraints.max) {\n alert(\n `最大値(${props.constraints.max})を超過しています。(入力値:${v})`\n );\n return false;\n }\n }\n\n if (props.constraints?.min) {\n if (v < props.constraints.min) {\n alert(\n `最小値(${props.constraints.min})を下回っています。(入力値:${v})`\n );\n return false;\n }\n }\n\n return true;\n };\n\n return (\n <CellInput\n ref={props.currentRef}\n value={value}\n onChange={(e) => {\n e.preventDefault();\n\n if (e.target.value === \"\") {\n setValue(\"0\");\n return;\n }\n\n if (e.target.value === \"-\" || e.target.value === \"0-\") {\n setValue(\"-0\");\n return;\n }\n\n if (e.target.value.match(/^-?[0-9]+\\.$/)) {\n setValue(e.target.value);\n return;\n }\n\n if (isNaN(Number(e.target.value))) {\n return;\n }\n\n setValue(Number(e.target.value).toString());\n }}\n onBlur={(e) => {\n e.preventDefault();\n\n if (Number(value) === props.currentRecord[props.columnKey]) {\n props.compEditing();\n return;\n }\n\n if (!validate()) {\n setTimeout(() => {\n e.target.focus();\n }, 100);\n return;\n }\n\n props.onCellBlur(\n props.columnKey,\n Number(value),\n props.currentRecord,\n props.compEditing\n );\n\n props.setOccurredOnCellBlur();\n }}\n reset={() =>\n setValue((props.currentRecord[props.columnKey] as number).toString())\n }\n endEditing={props.compEditing}\n />\n );\n}\n\nfunction SelectCellInput<T extends DataObject>(props: {\n currentRef: React.ForwardedRef<HTMLSelectElement>;\n columnKey: string;\n currentRecord: T;\n compEditing: () => void;\n options: { value: string; label: string }[];\n allowEmpty?: boolean;\n onCellBlur: (\n key: string,\n value: string,\n current: T,\n completeEditing: () => void\n ) => void;\n setOccurredOnCellBlur: () => void;\n}) {\n const [value, setValue] = useState(\n props.currentRecord[props.columnKey] as string\n );\n\n return (\n <div className=\"flex justify-between gap-1 w-full items-center\">\n <select\n ref={props.currentRef}\n className=\"w-full py-1 px-2\"\n value={value}\n onChange={(e) => {\n e.preventDefault();\n setValue(e.target.value);\n }}\n onBlur={(e) => {\n e.preventDefault();\n\n props.onCellBlur(\n props.columnKey,\n value,\n props.currentRecord,\n props.compEditing\n );\n\n props.setOccurredOnCellBlur();\n }}\n onKeyDown={(e: React.KeyboardEvent<HTMLSelectElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n onKeyUp={(e: React.KeyboardEvent<HTMLSelectElement>) => {\n e.preventDefault();\n if (e.key === \"Enter\") {\n (e.target as HTMLSelectElement).blur();\n } else if (e.key === \"Escape\") {\n setValue(props.currentRecord[props.columnKey] as string);\n props.compEditing();\n }\n }}\n >\n {props.allowEmpty && (\n <option key=\"TEPPEN/ReactUI Empty Option\" value=\"\">\n {props.currentRecord[props.columnKey] == \"\"\n ? \"-- 未選択 --\"\n : \"-- 選択解除 --\"}\n </option>\n )}\n {props.options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n <button\n onMouseDown={(e) => {\n e.preventDefault();\n setValue(props.currentRecord[props.columnKey] as string);\n props.compEditing();\n }}\n >\n <CancelIcon size={16} />\n </button>\n </div>\n );\n}\n\nfunction _TableCell<T extends DataObject>(props: TPropsCell<T>) {\n const [isEditing, setIsEditing] = useState(false);\n const ref = useRef<HTMLElement>(null);\n const [occurredOnCellBlur, setOccurredOnCellBlur] = useState(false);\n\n const compEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n useEffect(() => {\n if (isEditing) {\n ref.current?.focus();\n }\n setOccurredOnCellBlur(false);\n }, [isEditing, occurredOnCellBlur]);\n\n return (\n <td>\n <div className=\"relative\">\n <div\n className={`flex items-center gap-3 w-fit p-2 cursor-default ${\n isEditing ? \"opacity-0\" : \"\"\n }`}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {props.type === \"component\" ? (\n props.children\n ) : (\n <div\n onDoubleClick={(e) => {\n e.preventDefault();\n if (props.editable) {\n setIsEditing(true);\n }\n }}\n >\n <p className=\"text-left\">\n {props.type === \"select\"\n ? props.options.find((op) => op.value === props.children)\n ?.label\n : props.children}\n </p>\n </div>\n )}\n\n {props.editable && (\n <button\n className=\"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200\"\n onClick={(e) => {\n e.preventDefault();\n if (props.editable) {\n setIsEditing(true);\n }\n }}\n >\n <EditIcon size={12} />\n </button>\n )}\n </div>\n {props.editable && isEditing && (\n <div\n className=\"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {props.type === \"string\" && (\n <StringCellInput\n currentRef={ref as React.RefObject<HTMLInputElement>}\n columnKey={props.columnKey}\n currentRecord={props.currentRecord}\n compEditing={compEditing}\n onCellBlur={props.onCellBlur}\n constraints={props.constraints}\n setOccurredOnCellBlur={() => {\n setOccurredOnCellBlur(true);\n }}\n />\n )}\n {props.type === \"number\" && (\n <NumberCellInput\n currentRef={ref as React.RefObject<HTMLInputElement>}\n columnKey={props.columnKey}\n currentRecord={props.currentRecord}\n compEditing={compEditing}\n onCellBlur={props.onCellBlur}\n constraints={props.constraints}\n setOccurredOnCellBlur={() => {\n setOccurredOnCellBlur(true);\n }}\n />\n )}\n {props.type === \"select\" && (\n <SelectCellInput\n currentRef={ref as React.RefObject<HTMLSelectElement>}\n columnKey={props.columnKey}\n currentRecord={props.currentRecord}\n compEditing={compEditing}\n options={props.options}\n allowEmpty={props.allowEmpty}\n onCellBlur={props.onCellBlur}\n setOccurredOnCellBlur={() => {\n setOccurredOnCellBlur(true);\n }}\n />\n )}\n </div>\n )}\n </div>\n </td>\n );\n}\nexport const TableCell = memo(_TableCell) as typeof _TableCell;\n"],"names":["CellInput","forwardRef","props","ref","_jsxs","className","children","_jsx","type","value","onChange","onBlur","onKeyUp","e","preventDefault","key","target","blur","reset","endEditing","onMouseDown","CancelIcon","size","StringCellInput","_a","useState","currentRecord","columnKey","setValue","currentRef","constraints","maxLength","length","alert","concat","_b","minLength","_c","pattern","RegExp","test","validate","setTimeout","focus","onCellBlur","compEditing","setOccurredOnCellBlur","NumberCellInput","toString","match","isNaN","Number","v","parseInt","max","min","SelectCellInput","onKeyDown","allowEmpty","options","map","option","label","TableCell","memo","isEditing","setIsEditing","useRef","occurredOnCellBlur","useCallback","useEffect","current","onClick","stopPropagation","onDoubleClick","editable","find","op","EditIcon"],"mappings":"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"}
1
+ {"version":3,"file":"cell.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useCallback as u}from"react";var r=function(e,u){switch(u.type){case"focus":return e.isFocus&&e.rowNumber===u.payload.rowNumber&&e.colNumber===u.payload.colNumber?e:o(o({},e),{isFocus:!0,isEditing:!1,rowNumber:u.payload.rowNumber,colNumber:u.payload.colNumber});case"edit":return!e.isFocus||e.isEditing?e:o(o({},e),{isEditing:!0});case"focusAndEdit":return e.isFocus&&e.isEditing&&e.rowNumber===u.payload.rowNumber&&e.colNumber===u.payload.colNumber?e:o(o({},e),{isFocus:!0,isEditing:!0,rowNumber:u.payload.rowNumber,colNumber:u.payload.colNumber});case"move":return!e.isFocus||e.rowNumber===u.payload.rowNumber&&e.colNumber===u.payload.colNumber?e:o(o({},e),{isEditing:!1,rowNumber:u.payload.rowNumber,colNumber:u.payload.colNumber});case"moveLeft":return e.isFocus?e.colNumber-1<0?e:o(o({},e),{isEditing:!1,colNumber:e.colNumber-1}):e;case"moveRight":return e.isFocus?e.colNumber+1>e.maxColNumber?e:o(o({},e),{isEditing:!1,colNumber:e.colNumber+1}):e;case"moveUp":return e.isFocus?e.rowNumber-1<0?e:o(o({},e),{isEditing:!1,rowNumber:e.rowNumber-1}):e;case"moveDown":return e.isFocus?e.rowNumber+1>e.maxRowNumber?e:o(o({},e),{isEditing:!1,rowNumber:e.rowNumber+1}):e;case"unfocus":return e.isFocus?{maxColNumber:e.maxColNumber,maxRowNumber:e.maxRowNumber,isFocus:!1}:e;case"finishEditing":return e.isFocus&&e.isEditing?o(o({},e),{isEditing:!1}):e;case"setMaxRowNumber":return e.maxRowNumber===u.payload.maxRowNumber?e:o(o({},e),{maxRowNumber:u.payload.maxRowNumber});case"setMaxColNumber":return e.maxColNumber===u.payload.maxColNumber?e:o(o({},e),{maxColNumber:u.payload.maxColNumber})}};function m(o,m){var i=e(r,{maxRowNumber:o,maxColNumber:m,isFocus:!1}),s=i[0],t=i[1],a=u((function(o,e){return s.isFocus&&s.rowNumber===o&&s.colNumber===e}),[s]),c=u((function(o,e){t({type:"focus",payload:{rowNumber:o,colNumber:e}})}),[t]),n=u((function(){t({type:"edit"})}),[t]),b=u((function(o,e){t({type:"focusAndEdit",payload:{rowNumber:o,colNumber:e}})}),[t]),N=u((function(o,e){t({type:"move",payload:{rowNumber:o,colNumber:e}})}),[t]),l=u((function(){t({type:"moveLeft"})}),[t]),d=u((function(){t({type:"moveRight"})}),[t]),p=u((function(){t({type:"moveUp"})}),[t]),w=u((function(){t({type:"moveDown"})}),[t]),y=u((function(){t({type:"unfocus"})}),[t]),f=u((function(){t({type:"finishEditing"})}),[t]),x=u((function(o){t({type:"setMaxRowNumber",payload:{maxRowNumber:o}})}),[t]),g=u((function(o){t({type:"setMaxColNumber",payload:{maxColNumber:o}})}),[t]);return{isFocus:s.isFocus,isEditing:s.isFocus&&s.isEditing,checkFocus:a,focus:c,edit:n,focusAndEdit:b,move:N,moveLeft:l,moveRight:d,moveUp:p,moveDown:w,unfocus:y,finishEditing:f,setMaxRowNumber:x,setMaxColNumber:g}}export{m as useFocusReducer};
2
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/edit/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TFocusReducer, TReturnFocusReducer } from \"./types\";\n\nconst reducer: TFocusReducer = (state, action) => {\n switch (action.type) {\n case \"focus\":\n if (\n state.isFocus &&\n state.rowNumber === action.payload.rowNumber &&\n state.colNumber === action.payload.colNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n isFocus: true,\n isEditing: false,\n rowNumber: action.payload.rowNumber,\n colNumber: action.payload.colNumber,\n };\n\n case \"edit\":\n if (!state.isFocus || state.isEditing) return state;\n\n return {\n ...state,\n isEditing: true,\n };\n\n case \"focusAndEdit\":\n if (\n state.isFocus &&\n state.isEditing &&\n state.rowNumber === action.payload.rowNumber &&\n state.colNumber === action.payload.colNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n isFocus: true,\n isEditing: true,\n rowNumber: action.payload.rowNumber,\n colNumber: action.payload.colNumber,\n };\n\n case \"move\":\n if (\n !state.isFocus ||\n (state.rowNumber === action.payload.rowNumber &&\n state.colNumber === action.payload.colNumber)\n ) {\n return state;\n }\n\n return {\n ...state,\n isEditing: false,\n rowNumber: action.payload.rowNumber,\n colNumber: action.payload.colNumber,\n };\n\n case \"moveLeft\": {\n if (!state.isFocus) return state;\n\n const newColNumber = state.colNumber - 1;\n\n if (newColNumber < 0) return state;\n\n return {\n ...state,\n isEditing: false,\n colNumber: state.colNumber - 1,\n };\n }\n\n case \"moveRight\": {\n if (!state.isFocus) return state;\n\n const newColNumber = state.colNumber + 1;\n\n if (newColNumber > state.maxColNumber) return state;\n\n return {\n ...state,\n isEditing: false,\n colNumber: state.colNumber + 1,\n };\n }\n\n case \"moveUp\": {\n if (!state.isFocus) return state;\n\n const newRowNumber = state.rowNumber - 1;\n\n if (newRowNumber < 0) return state;\n\n return {\n ...state,\n isEditing: false,\n rowNumber: state.rowNumber - 1,\n };\n }\n\n case \"moveDown\": {\n if (!state.isFocus) return state;\n\n const newRowNumber = state.rowNumber + 1;\n\n if (newRowNumber > state.maxRowNumber) return state;\n\n return {\n ...state,\n isEditing: false,\n rowNumber: state.rowNumber + 1,\n };\n }\n\n case \"unfocus\":\n if (!state.isFocus) return state;\n\n return {\n maxColNumber: state.maxColNumber,\n maxRowNumber: state.maxRowNumber,\n isFocus: false,\n };\n\n case \"finishEditing\":\n if (!state.isFocus || !state.isEditing) return state;\n\n return {\n ...state,\n isEditing: false,\n };\n\n case \"setMaxRowNumber\":\n if (state.maxRowNumber === action.payload.maxRowNumber) return state;\n\n return {\n ...state,\n maxRowNumber: action.payload.maxRowNumber,\n };\n\n case \"setMaxColNumber\":\n if (state.maxColNumber === action.payload.maxColNumber) return state;\n\n return {\n ...state,\n maxColNumber: action.payload.maxColNumber,\n };\n }\n};\n\nexport function useFocusReducer(\n maxRowNumber: number,\n maxColNumber: number\n): TReturnFocusReducer {\n const [state, dispatch] = useReducer(reducer, {\n maxRowNumber,\n maxColNumber,\n isFocus: false,\n });\n\n const checkFocus = useCallback(\n (rowNumber: number, colNumber: number) =>\n state.isFocus &&\n state.rowNumber === rowNumber &&\n state.colNumber === colNumber,\n [state]\n );\n\n const focus = useCallback(\n (rowNumber: number, colNumber: number) => {\n dispatch({ type: \"focus\", payload: { rowNumber, colNumber } });\n },\n [dispatch]\n );\n\n const edit = useCallback(() => {\n dispatch({ type: \"edit\" });\n }, [dispatch]);\n\n const focusAndEdit = useCallback(\n (rowNumber: number, colNumber: number) => {\n dispatch({ type: \"focusAndEdit\", payload: { rowNumber, colNumber } });\n },\n [dispatch]\n );\n\n const move = useCallback(\n (rowNumber: number, colNumber: number) => {\n dispatch({ type: \"move\", payload: { rowNumber, colNumber } });\n },\n [dispatch]\n );\n\n const moveLeft = useCallback(() => {\n dispatch({ type: \"moveLeft\" });\n }, [dispatch]);\n\n const moveRight = useCallback(() => {\n dispatch({ type: \"moveRight\" });\n }, [dispatch]);\n\n const moveUp = useCallback(() => {\n dispatch({ type: \"moveUp\" });\n }, [dispatch]);\n\n const moveDown = useCallback(() => {\n dispatch({ type: \"moveDown\" });\n }, [dispatch]);\n\n const unfocus = useCallback(() => {\n dispatch({ type: \"unfocus\" });\n }, [dispatch]);\n\n const finishEditing = useCallback(() => {\n dispatch({ type: \"finishEditing\" });\n }, [dispatch]);\n\n const setMaxRowNumber = useCallback(\n (maxRowNumber: number) => {\n dispatch({ type: \"setMaxRowNumber\", payload: { maxRowNumber } });\n },\n [dispatch]\n );\n\n const setMaxColNumber = useCallback(\n (maxColNumber: number) => {\n dispatch({ type: \"setMaxColNumber\", payload: { maxColNumber } });\n },\n [dispatch]\n );\n\n return {\n isFocus: state.isFocus,\n isEditing: state.isFocus && state.isEditing,\n checkFocus,\n focus,\n edit,\n focusAndEdit,\n move,\n moveLeft,\n moveRight,\n moveUp,\n moveDown,\n unfocus,\n finishEditing,\n setMaxRowNumber,\n setMaxColNumber,\n };\n}\n"],"names":["reducer","state","action","type","isFocus","rowNumber","payload","colNumber","__assign","isEditing","maxColNumber","maxRowNumber","useFocusReducer","_a","useReducer","dispatch","checkFocus","useCallback","focus","edit","focusAndEdit","move","moveLeft","moveRight","moveUp","moveDown","unfocus","finishEditing","setMaxRowNumber","setMaxColNumber"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as n}from"react/jsx-runtime";import{createContext as o,useContext as t}from"react";import{useFocusReducer as r}from"./hooks.js";import{usePageContext as e}from"../pagenation/providers.js";var i=o({isEditing:!1,isFocus:!1,checkFocus:function(){throw new Error("Function not implemented.")},focus:function(){throw new Error("Function not implemented.")},edit:function(){throw new Error("Function not implemented.")},move:function(){throw new Error("Function not implemented.")},moveLeft:function(){throw new Error("Function not implemented.")},moveRight:function(){throw new Error("Function not implemented.")},moveUp:function(){throw new Error("Function not implemented.")},moveDown:function(){throw new Error("Function not implemented.")},unfocus:function(){throw new Error("Function not implemented.")},setMaxRowNumber:function(){throw new Error("Function not implemented.")},setMaxColNumber:function(){throw new Error("Function not implemented.")},focusAndEdit:function(){throw new Error("Function not implemented.")},finishEditing:function(){throw new Error("Function not implemented.")}});function m(o){var t=e(),m=t.from,u=t.to,c=t.rowCount;return n(i.Provider,{value:r(u<c?u-m-1:c-m-1,o.columnCount-1),children:o.children})}function u(){return t(i)}export{m as FocusProvider,u as useFocusContext};
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as e,jsxs as n,Fragment as l}from"react/jsx-runtime";import{FIlterIcon as t}from"./filter-icon.js";import{useFilterContext as r}from"./provider.js";import{useState as i,useEffect as o}from"react";import{CancelIcon as a}from"../cancel-icon.js";import{STRING_FILTER_OPERATOR as c,NUMBER_FILTER_OPERATOR as u,SELECT_FILTER_OPERATOR as d,FILTER_OPERATOR as f}from"./constants.js";function s(n){var l=r().filterConditions;return e("div",{className:"relative cursor-pointer",onClick:n.onClick,children:e(t,{isFilterActive:l.filter((function(e){return e.key===n.keyName})).length>0})})}function v(n){var l=n.children,t=r(),i=t.clearFilter;if(0!==t.filterConditions.length)return e("button",{onClick:function(e){e.preventDefault(),i()},children:l})}function p(t){var s=r(),p=s.addFilter,h=s.removeFilter,m=s.filterConditions,y=i(""),g=y[0],k=y[1],b=i(""),x=b[0],N=b[1],C=i(""),j=C[0],D=C[1],F=i("string"),w=F[0],z=F[1],A=t.cols.find((function(e){return e.key===g}));return o((function(){D(""),N("")}),[g]),n(l,{children:[n("div",{className:"flex flex-col gap-2 mb-5",children:[e("p",{className:"font-bold text-lg",children:"フィルタ追加"}),n("div",{className:"flex flex-wrap gap-1",children:[n("select",{value:g,onChange:function(e){var n;e.preventDefault(),k(e.target.value);var l=null===(n=t.cols.find((function(n){return n.key===e.target.value})))||void 0===n?void 0:n.type;z(l)},children:[e("option",{value:"",children:"-- 列を選択 --"}),t.cols.filter((function(e){return!!e.label&&!!e.type})).map((function(n){return e("option",{value:n.key,children:n.label},n.key)}))]}),n("select",{value:x,onChange:function(e){e.preventDefault(),N(e.target.value)},disabled:!g,children:[e("option",{value:"",children:g?"-- 条件を選択 --":"-- 列を選択してください --"}),"string"===w&&c.map((function(n){return e("option",{value:n.key,children:n.label},n.key)})),"number"===w&&u.map((function(n){return e("option",{value:n.key,children:n.label},n.key)})),"select"===w&&d.map((function(n){return e("option",{value:n.key,children:n.label},n.key)}))]}),"select"===w?n("select",{value:j,onChange:function(e){e.preventDefault(),D(e.target.value)},children:[e("option",{value:"",children:"-- 未選択 --"}),"select"===A.type&&A.options.map((function(n){return e("option",{value:n.value,children:n.label},n.value)}))]}):e("input",{type:"text",value:j,onChange:function(e){e.preventDefault(),D(e.target.value)},placeholder:"-- 値を入力 --"})]}),e("div",{className:"flex justify-end",children:e("button",{className:"bg-gray-900 text-white py-1 px-2 rounded-md",onClick:function(e){var n;if(e.preventDefault(),g&&x&&("select"===A.type||j)){var l=t.cols.find((function(e){return e.key===g}));p("string"===w?{key:g,operator:x,value:[j]}:"select"===w?{key:g,operator:x,value:j,label:"select"===l.type?null===(n=l.options.find((function(e){return e.value===j})))||void 0===n?void 0:n.label:void 0}:{key:g,operator:x,value:Number(j)})}else alert("全ての項目を入力してください")},children:"追加"})})]}),n("div",{children:[m.length>0&&e("p",{className:"font-bold text-lg",children:"フィルタ一覧"}),e("ul",{className:"flex flex-col gap-1 my-2",children:m.map((function(l){var r,i;return n("li",{className:"flex justify-between",children:[n("p",{children:["「",e("strong",{children:null===(r=t.cols.find((function(e){return e.key===l.key})))||void 0===r?void 0:r.label}),"」 は",e("span",{children:null===(i=f.find((function(e){return e.key===l.operator})))||void 0===i?void 0:i.label}),":",e("span",{children:l.label?l.label:l.value})]}),e("button",{onClick:function(e){e.preventDefault(),h(l.id)},children:e(a,{size:16})})]},l.id)}))}),e("div",{className:"flex justify-center",children:e(v,{children:e("p",{className:"text-gray-600 underline hover:text-gray-800",children:"remove all filters"})})})]})]})}export{s as TableFilter,p as TableFilterForm,v as TableFilterRemoveButton};
2
+ import{jsx as e,jsxs as t,Fragment as l}from"react/jsx-runtime";import{FIlterIcon as n}from"./filter-icon.js";import{useFilterContext as r}from"./provider.js";import{useState as i,useEffect as a,useCallback as o}from"react";import{CancelIcon as c}from"../cancel-icon.js";import{FILTER_OPERATOR as u,STRING_FILTER_OPERATOR as s,NUMBER_FILTER_OPERATOR as d,SELECT_FILTER_OPERATOR as f}from"./constants.js";import{useColumnsContext as p,useColumnContext as v}from"../sheet/providers.js";function m(t){var i=v(t.columnKey),a=r(),o=a.filterConditions,c=a.setSelectedFilterKey;return i.label?e("div",{className:"relative cursor-pointer",onClick:function(e){e.preventDefault(),c(t.columnKey)},children:e(n,{isFilterActive:o.filter((function(e){return e.key===t.columnKey})).length>0})}):e(l,{})}function h(t){var l=t.children,n=r(),i=n.clearFilter;if(0!==n.filterConditions.length)return e("button",{onClick:function(e){e.preventDefault(),i()},children:l})}function y(t){var l=t.children,n=r(),i=n.removeFilter,a=n.filterConditions,o=n.selectedFilterKey;if(0!==a.filter((function(e){return e.key===o})).length){return e("button",{onClick:function(e){e.preventDefault(),a.filter((function(e){return e.key===o})).forEach((function(e){i(e.id)}))},children:l})}}function g(l){var n=l.value,i=l.onChange,a=r().selectedFilterKey,o=v(a);return t("select",{value:n,onChange:i,className:"px-2 py-1 rounded-md",children:[e("option",{value:"",children:a?"-- 条件を選択 --":"-- 列を選択してください --"}),"string"===o.type&&s.map((function(t){return e("option",{value:t.key,children:t.label},t.key)})),"number"===o.type&&d.map((function(t){return e("option",{value:t.key,children:t.label},t.key)})),"select"===o.type&&f.map((function(t){return e("option",{value:t.key,children:t.label},t.key)}))]})}function x(l){return t("select",{className:"w-full px-2 py-1 rounded-md min-w-32",value:l.value,onChange:function(e){e.preventDefault(),l.setValue(e.target.value)},children:[e("option",{value:"",children:"-- 未選択 --"}),l.options.map((function(t){return e("option",{value:t.value,children:t.label},t.value)}))]})}function b(t){return e("input",{className:"w-full px-2 py-1 rounded-md min-w-32",type:"text",value:t.value,onChange:function(e){e.preventDefault(),t.setValue(e.target.value)},placeholder:"-- 値を入力 --"})}function k(t){var l=r(),n=l.selectedFilterKey,i=l.addFilter,a=v(n);return e("button",{className:"bg-gray-900 text-white py-1 px-2 rounded-md text-nowrap",onClick:function(e){var l;e.preventDefault(),n&&t.selectingOperator&&("select"===a.type||t.value)?i("string"===a.type?{key:n,operator:t.selectingOperator,value:[t.value]}:"select"===a.type?{key:n,operator:t.selectingOperator,value:t.value,label:null===(l=a.options.find((function(e){return e.value===t.value})))||void 0===l?void 0:l.label}:{key:n,operator:t.selectingOperator,value:Number(t.value)}):alert("全ての項目を入力してください")},children:"追加"})}function N(){var l=p(),n=r(),s=n.removeFilter,d=n.filterConditions,f=n.selectedFilterKey,m=n.setSelectedFilterKey,h=i(""),N=h[0],w=h[1],C=i(""),F=C[0],D=C[1],K=v(f);a((function(){D(""),w("")}),[f]);var j=o((function(e){e.preventDefault,w(e.target.value)}),[]);return t("div",{className:"flex w-full max-h-[50vh] bg-gray-200",children:[e("ul",{className:"flex flex-col items-end min-w-16 md:w-[20%] max-h-full overflow-y-auto no_scrollbar bg-white",children:l.filter((function(e){return!!e.label})).map((function(l){return t("li",{className:"relative pl-2 pr-8 md:px-8 py-3 w-full cursor-pointer border-y border-gray-300 ".concat(f===l.key?"bg-gray-200":"hover:bg-gray-100"),onClick:function(e){e.preventDefault(),m(l.key)},children:[e("p",{className:"text-right text-nowrap",children:l.label}),d.filter((function(e){return e.key===l.key})).length>0&&e("div",{className:"absolute top-1/2 right-1",children:e("div",{className:"-translate-y-1/2 rounded-full border border-gray-400 bg-gray-100 aspect-square w-5",children:e("p",{className:"text-xs text-center",children:d.filter((function(e){return e.key===l.key})).length})})})]},l.key)}))}),t("div",{className:"relative flex flex-col gap-4 ml-4 mr-4 md:ml-16 md:mr-auto py-5",children:[e("div",{className:"absolute top-5 right-0",children:e("button",{onClick:function(e){e.preventDefault(),m(null)},children:"閉じる"})}),e("p",{className:"font-bold text-xl",children:"フィルタリング条件"}),t("div",{className:"flex items-center gap-3 max-w-6xl",children:[t("p",{className:"text-gray-600 text-lg text-nowrap",children:["「",e("strong",{children:K.label}),"」 は"]}),e(g,{value:N,onChange:j}),"select"===K.type?e(x,{value:F,options:K.options,setValue:D}):e(b,{value:F,setValue:D}),e(k,{value:F,selectingOperator:N})]}),e("ul",{className:"flex flex-col gap-1 my-5 max-h-32 overflow-auto",children:d.filter((function(e){return e.key===f})).map((function(n){var r,i;return t("li",{className:"flex justify-between mr-5",children:[t("p",{children:["「",e("strong",{children:null===(r=l.find((function(e){return e.key===n.key})))||void 0===r?void 0:r.label}),"」 は",e("span",{children:null===(i=u.find((function(e){return e.key===n.operator})))||void 0===i?void 0:i.label}),":",e("span",{children:n.label?n.label:n.value})]}),e("button",{onClick:function(e){e.preventDefault(),s(n.id)},children:e(c,{size:16})})]},n.id)}))}),e("div",{className:"flex justify-center",children:e(y,{children:t("p",{className:"text-xs text-gray-600 underline hover:text-gray-800",children:["「",K.label,"」のフィルタを全て解除"]})})})]})]})}export{m as TableFilter,N as TableFilterForm,h as TableFilterRemoveButton,y as TableSpecifyKeyFilterRemoveButton};
3
3
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/filter/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TFilter, TFilterReducer, TReturnUseFilterReducer } from \"./types\";\nimport { DataObject } from \"../type\";\n\nconst reducer: TFilterReducer = (state, action) => {\n switch (action.type) {\n case \"add\":\n return {\n filters: [\n ...state.filters,\n { id: new Date().getTime(), ...action.payload.filter },\n ],\n };\n case \"remove\":\n return {\n filters: state.filters.filter((f) => f.id !== action.payload.id),\n };\n case \"clear\":\n return { filters: [] };\n }\n};\n\nexport function useFilterReducer(): TReturnUseFilterReducer {\n const [state, dispatch] = useReducer(reducer, { filters: [] });\n\n const addFilter = useCallback(\n (filter: TFilter) => dispatch({ type: \"add\", payload: { filter } }),\n [dispatch]\n );\n const removeFilter = useCallback(\n (id: number) => dispatch({ type: \"remove\", payload: { id } }),\n [dispatch]\n );\n const clearFilter = useCallback(\n () => dispatch({ type: \"clear\" }),\n [dispatch]\n );\n\n const filter = useCallback(\n <T extends DataObject>(rows: T[]): T[] => {\n return state.filters.reduce((acc, filter) => {\n switch (filter.operator) {\n case \"includeText\":\n return acc.filter((row) => {\n const value = row[filter.key];\n if (typeof value === \"string\") {\n return filter.value.some((v) => value.includes(v));\n }\n return false;\n });\n case \"eq\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"ne\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n case \"gt\":\n return acc.filter((row) => row[filter.key] > filter.value);\n case \"lt\":\n return acc.filter((row) => row[filter.key] < filter.value);\n case \"gte\":\n return acc.filter((row) => row[filter.key] >= filter.value);\n case \"lte\":\n return acc.filter((row) => row[filter.key] <= filter.value);\n case \"selected\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"notSelected\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n }\n }, rows);\n },\n [state]\n );\n\n return {\n addFilter,\n removeFilter,\n clearFilter,\n filter,\n filterConditions: state.filters,\n };\n}\n"],"names":["reducer","state","action","type","filters","__spreadArray","__assign","id","Date","getTime","payload","filter","f","useFilterReducer","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","key","some","v","includes","filterConditions"],"mappings":"2IAIA,IAAMA,EAA0B,SAACC,EAAOC,GACtC,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,QAAOC,EAAAA,EAAA,GACFJ,EAAMG,SAAO,GAAA,CACdE,EAAA,CAAAC,IAAI,IAAIC,MAAOC,WAAcP,EAAOQ,QAAQC,UAC/C,IAEL,IAAK,SACH,MAAO,CACLP,QAASH,EAAMG,QAAQO,QAAO,SAACC,GAAM,OAAAA,EAAEL,KAAOL,EAAOQ,QAAQH,EAAxB,KAEzC,IAAK,QACH,MAAO,CAAEH,QAAS,IAExB,WAEgBS,IACR,IAAAC,EAAoBC,EAAWf,EAAS,CAAEI,QAAS,KAAlDH,OAAOe,OAERC,EAAYC,GAChB,SAACP,GAAoB,OAAAK,EAAS,CAAEb,KAAM,MAAOO,QAAS,CAAEC,OAAMA,OAC9D,CAACK,IA6CH,MAAO,CACLC,UAASA,EACTE,aA7CmBD,GACnB,SAACX,GAAe,OAAAS,EAAS,CAAEb,KAAM,SAAUO,QAAS,CAAEH,GAAEA,OACxD,CAACS,IA4CDI,YA1CkBF,GAClB,WAAM,OAAAF,EAAS,CAAEb,KAAM,SAAjB,GACN,CAACa,IAyCDL,OAtCaO,GACb,SAAuBG,GACrB,OAAOpB,EAAMG,QAAQkB,QAAO,SAACC,EAAKZ,GAChC,OAAQA,EAAOa,UACb,IAAK,cACH,OAAOD,EAAIZ,QAAO,SAACc,GACjB,IAAMC,EAAQD,EAAId,EAAOgB,KACzB,MAAqB,iBAAVD,GACFf,EAAOe,MAAME,MAAK,SAACC,GAAM,OAAAH,EAAMI,SAASD,EAAE,GAGrD,IACF,IAAK,KAYL,IAAK,WACH,OAAON,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,OAAShB,EAAOe,KAAK,IAX7D,IAAK,KAYL,IAAK,cACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,OAAShB,EAAOe,KAAK,IAX7D,IAAK,KACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,KAAOhB,EAAOe,KAAK,IAC3D,IAAK,KACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,KAAOhB,EAAOe,KAAK,IAC3D,IAAK,MACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,MAAQhB,EAAOe,KAAK,IAC5D,IAAK,MACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,MAAQhB,EAAOe,KAAK,IAM/D,GAAEL,EACL,GACA,CAACpB,IAQD8B,iBAAkB9B,EAAMG,QAE5B"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/filter/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TFilter, TFilterReducer, TReturnUseFilterReducer } from \"./types\";\nimport { DataObject } from \"../type\";\n\nconst reducer: TFilterReducer = (state, action) => {\n switch (action.type) {\n case \"add\":\n return {\n filters: [\n ...state.filters,\n { id: new Date().getTime(), ...action.payload.filter },\n ],\n };\n case \"remove\":\n return {\n filters: state.filters.filter((f) => f.id !== action.payload.id),\n };\n case \"clear\":\n return { filters: [] };\n }\n};\n\nexport function useFilterReducer(): TReturnUseFilterReducer {\n const [state, dispatch] = useReducer(reducer, { filters: [] });\n\n const addFilter = useCallback(\n (filter: TFilter) => dispatch({ type: \"add\", payload: { filter } }),\n [dispatch]\n );\n const removeFilter = useCallback(\n (id: number) => dispatch({ type: \"remove\", payload: { id } }),\n [dispatch]\n );\n const clearFilter = useCallback(\n () => dispatch({ type: \"clear\" }),\n [dispatch]\n );\n\n const filter = useCallback(\n (rows: DataObject[]): DataObject[] => {\n return state.filters.reduce((acc, filter) => {\n switch (filter.operator) {\n case \"includeText\":\n return acc.filter((row) => {\n const value = row[filter.key];\n if (typeof value === \"string\") {\n return filter.value.some((v) => value.includes(v));\n }\n return false;\n });\n case \"eq\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"ne\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n case \"gt\":\n return acc.filter(\n (row) => (row[filter.key] as number) > filter.value\n );\n case \"lt\":\n return acc.filter(\n (row) => (row[filter.key] as number) < filter.value\n );\n case \"gte\":\n return acc.filter(\n (row) => (row[filter.key] as number) >= filter.value\n );\n case \"lte\":\n return acc.filter(\n (row) => (row[filter.key] as number) <= filter.value\n );\n case \"selected\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"notSelected\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n }\n }, rows);\n },\n [state]\n );\n\n return {\n addFilter,\n removeFilter,\n clearFilter,\n filter,\n filterConditions: state.filters,\n };\n}\n"],"names":["reducer","state","action","type","filters","__spreadArray","__assign","id","Date","getTime","payload","filter","f","useFilterReducer","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","key","some","v","includes","filterConditions"],"mappings":"2IAIA,IAAMA,EAA0B,SAACC,EAAOC,GACtC,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,QAAOC,EAAAA,EAAA,GACFJ,EAAMG,SAAO,GAAA,CACdE,EAAA,CAAAC,IAAI,IAAIC,MAAOC,WAAcP,EAAOQ,QAAQC,UAC/C,IAEL,IAAK,SACH,MAAO,CACLP,QAASH,EAAMG,QAAQO,QAAO,SAACC,GAAM,OAAAA,EAAEL,KAAOL,EAAOQ,QAAQH,EAAxB,KAEzC,IAAK,QACH,MAAO,CAAEH,QAAS,IAExB,WAEgBS,IACR,IAAAC,EAAoBC,EAAWf,EAAS,CAAEI,QAAS,KAAlDH,OAAOe,OAERC,EAAYC,GAChB,SAACP,GAAoB,OAAAK,EAAS,CAAEb,KAAM,MAAOO,QAAS,CAAEC,OAAMA,OAC9D,CAACK,IAqDH,MAAO,CACLC,UAASA,EACTE,aArDmBD,GACnB,SAACX,GAAe,OAAAS,EAAS,CAAEb,KAAM,SAAUO,QAAS,CAAEH,GAAEA,OACxD,CAACS,IAoDDI,YAlDkBF,GAClB,WAAM,OAAAF,EAAS,CAAEb,KAAM,SAAjB,GACN,CAACa,IAiDDL,OA9CaO,GACb,SAACG,GACC,OAAOpB,EAAMG,QAAQkB,QAAO,SAACC,EAAKZ,GAChC,OAAQA,EAAOa,UACb,IAAK,cACH,OAAOD,EAAIZ,QAAO,SAACc,GACjB,IAAMC,EAAQD,EAAId,EAAOgB,KACzB,MAAqB,iBAAVD,GACFf,EAAOe,MAAME,MAAK,SAACC,GAAM,OAAAH,EAAMI,SAASD,EAAE,GAGrD,IACF,IAAK,KAoBL,IAAK,WACH,OAAON,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,OAAShB,EAAOe,KAAK,IAnB7D,IAAK,KAoBL,IAAK,cACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,OAAShB,EAAOe,KAAK,IAnB7D,IAAK,KACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,KAAkBhB,EAAOe,KAAK,IAEvD,IAAK,KACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,KAAkBhB,EAAOe,KAAK,IAEvD,IAAK,MACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,MAAmBhB,EAAOe,KAAK,IAExD,IAAK,MACH,OAAOH,EAAIZ,QACT,SAACc,GAAQ,OAACA,EAAId,EAAOgB,MAAmBhB,EAAOe,KAAK,IAO3D,GAAEL,EACL,GACA,CAACpB,IAQD8B,iBAAkB9B,EAAMG,QAE5B"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as r}from"react/jsx-runtime";import{createContext as t,useContext as i}from"react";import{useFilterReducer as n}from"./hooks.js";var e=t({addFilter:function(){},removeFilter:function(){},clearFilter:function(){},filter:function(){return[]},filterConditions:[]});function o(t){var i=t.children;return r(e.Provider,{value:n(),children:i})}function c(){return i(e)}export{o as FilterProvider,c as useFilterContext};
2
+ import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r}from"react/jsx-runtime";import{createContext as t,useState as i,useContext as l}from"react";import{useFilterReducer as n}from"./hooks.js";var o=t({addFilter:function(){},removeFilter:function(){},clearFilter:function(){},filter:function(){return[]},filterConditions:[]}),c=t({selectedFilterKey:null,setSelectedFilterKey:function(){}});function u(e){var t=e.children,l=i(null),u=l[0],d=l[1];return r(c.Provider,{value:{selectedFilterKey:u,setSelectedFilterKey:d},children:r(o.Provider,{value:n(),children:t})})}function d(){return e(e({},l(o)),l(c))}export{u as FilterProvider,d as useFilterContext};
3
3
  //# sourceMappingURL=provider.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";function n(n){return e("th",{className:"relative bg-gray-200 text-gray-600 h-[32px]",children:[n.label&&t("div",{className:"px-2",children:t("p",{className:"text-left font-bold text-nowrap overflow-hidden text-ellipsis ".concat(n.filterComponent&&n.sortConponent?"w-[80%] min-w-20":n.filterComponent||n.sortConponent?"w-[90%] min-w-20":"min-w-10"," "),children:n.label})}),n.label&&e("div",{className:"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2",children:[n.filterComponent&&n.filterComponent,n.sortConponent&&n.sortConponent]})]})}export{n as TableHeaderElement};
1
+ import{jsxs as e,jsx as r}from"react/jsx-runtime";import"./filter/provider.js";import{TableFilter as t}from"./filter/components.js";import{useColumnContext as o}from"./sheet/providers.js";import{SortButton as l}from"./sort/components.js";import"./sort/provider.js";function i(i){var s=o(i.columnKey);return e("th",{className:"relative bg-gray-200 text-gray-600 h-[32px]",children:[s.label&&r("div",{className:"px-2",children:r("p",{className:"text-left font-bold text-nowrap overflow-hidden text-ellipsis w-[70%] min-w-20",children:s.label})}),e("div",{className:"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2",children:[r(l,{columnKey:i.columnKey}),r(t,{columnKey:i.columnKey})]})]})}export{i as TableHeaderElement};
2
2
  //# sourceMappingURL=header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","sources":["../../../../src/table/header.tsx"],"sourcesContent":["type TPropsTableHeader = {\n label?: string;\n sortConponent?: JSX.Element;\n filterComponent?: JSX.Element;\n};\n\nexport function TableHeaderElement(props: TPropsTableHeader) {\n return (\n <th className={`relative bg-gray-200 text-gray-600 h-[32px]`}>\n {props.label && (\n <div className=\"px-2\">\n <p\n className={`text-left font-bold text-nowrap overflow-hidden text-ellipsis ${\n props.filterComponent && props.sortConponent\n ? \"w-[80%] min-w-20\"\n : !props.filterComponent && !props.sortConponent\n ? \"min-w-10\"\n : \"w-[90%] min-w-20\"\n } `}\n >\n {props.label}\n </p>\n </div>\n )}\n\n {props.label && (\n <div className=\"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2\">\n {props.filterComponent && props.filterComponent}\n {props.sortConponent && props.sortConponent}\n </div>\n )}\n </th>\n );\n}\n"],"names":["TableHeaderElement","props","_jsxs","className","children","label","_jsx","concat","filterComponent","sortConponent"],"mappings":"kDAMM,SAAUA,EAAmBC,GACjC,OACEC,EAAI,KAAA,CAAAC,UAAW,8CACZC,SAAA,CAAAH,EAAMI,OACLC,EAAK,MAAA,CAAAH,UAAU,OAAMC,SACnBE,EACE,IAAA,CAAAH,UAAW,iEAAAI,OACTN,EAAMO,iBAAmBP,EAAMQ,cAC3B,mBACCR,EAAMO,iBAAoBP,EAAMQ,cAEjC,mBADA,WACkB,cAGvBR,EAAMI,UAKZJ,EAAMI,OACLH,EAAA,MAAA,CAAKC,UAAU,oEACZC,SAAA,CAAAH,EAAMO,iBAAmBP,EAAMO,gBAC/BP,EAAMQ,eAAiBR,EAAMQ,mBAKxC"}
1
+ {"version":3,"file":"header.js","sources":["../../../../src/table/header.tsx"],"sourcesContent":["import { TableFilter } from \"./filter\";\nimport { useColumnContext } from \"./sheet\";\nimport { SortButton } from \"./sort\";\n\ntype TPropsTableHeader = {\n columnKey: string;\n};\n\nexport function TableHeaderElement(props: TPropsTableHeader) {\n const col = useColumnContext(props.columnKey);\n\n return (\n <th className={`relative bg-gray-200 text-gray-600 h-[32px]`}>\n {col.label && (\n <div className=\"px-2\">\n <p\n className={`text-left font-bold text-nowrap overflow-hidden text-ellipsis w-[70%] min-w-20`}\n >\n {col.label}\n </p>\n </div>\n )}\n\n <div className=\"absolute flex items-center gap-1 top-1/2 right-1 -translate-y-1/2\">\n <SortButton columnKey={props.columnKey} />\n <TableFilter columnKey={props.columnKey} />\n </div>\n </th>\n );\n}\n"],"names":["TableHeaderElement","props","col","useColumnContext","columnKey","_jsxs","className","label","_jsx","children","SortButton","TableFilter"],"mappings":"yQAQM,SAAUA,EAAmBC,GACjC,IAAMC,EAAMC,EAAiBF,EAAMG,WAEnC,OACEC,EAAI,KAAA,CAAAC,UAAW,wDACZJ,EAAIK,OACHC,EAAA,MAAA,CAAKF,UAAU,OACbG,SAAAD,EAAA,IAAA,CACEF,UAAW,iFAAgFG,SAE1FP,EAAIK,UAKXF,EAAK,MAAA,CAAAC,UAAU,oEACbG,SAAA,CAAAD,EAACE,EAAU,CAACN,UAAWH,EAAMG,YAC7BI,EAACG,EAAY,CAAAP,UAAWH,EAAMG,iBAItC"}
@@ -1,2 +1,2 @@
1
- import{useMemo as r,useEffect as t}from"react";import{usePageContext as o}from"./pagenation/providers.js";import"react/jsx-runtime";import{useFilterContext as n}from"./filter/provider.js";import"./filter/constants.js";import"./sort/icon.js";import{useSortContext as i}from"./sort/provider.js";function e(e){var s=n().filter,p=i().sort,f=o(),m=f.setRowCount,c=f.pageFilter,u=r((function(){return s(e.rows)}),[s,e.rows]);t((function(){m(u.length)}),[u.length]);var a=r((function(){return p(u)}),[u,p]),l=r((function(){return c(a)}),[c,a]);return{cols:e.cols,rows:l}}export{e as useTable};
1
+ import{useMemo as o,useEffect as r,useCallback as t,useRef as n,useState as e}from"react";import{usePageContext as i}from"./pagenation/providers.js";import"react/jsx-runtime";import{useFilterContext as c}from"./filter/provider.js";import"./filter/constants.js";import{useCellContext as l}from"./sheet/providers.js";import"./sort/icon.js";import{useSortContext as s}from"./sort/provider.js";import{useFocusContext as u}from"./edit/provider.js";function f(t){var n=c().filter,e=s().sort,l=i(),u=l.setRowCount,f=l.pageFilter,d=o((function(){return n(t.rows)}),[n,t.rows]);r((function(){u(d.length)}),[d.length]);var a=o((function(){return e(d)}),[d,e]),p=o((function(){return f(a)}),[f,a]);return{cols:t.cols,rows:p}}function d(){var o=n(null),i=l(),c=i.rowIndex,s=i.colIndex,f=u(),d=f.isEditing,a=f.checkFocus,p=e(!1),v=p[0],m=p[1],x=a(c,s);r((function(){var r;x&&d&&(null===(r=o.current)||void 0===r||r.focus()),m(!1)}),[x,d,v]);var I=t((function(){m(!0)}),[]);return{ref:o,callbackAfterBlur:I}}function a(){var o=l(),n=u(),e=n.isEditing,i=n.checkFocus,c=n.focus,s=n.focusAndEdit,f=n.finishEditing,d=i(o.rowIndex,o.colIndex);r((function(){!o.editable&&d&&e&&f()}),[o.editable,d,e,f]);var a=t((function(r){r.preventDefault(),r.stopPropagation(),c(o.rowIndex,o.colIndex)}),[c,o.rowIndex,o.colIndex]),p=t((function(r){r.preventDefault(),o.editable&&s(o.rowIndex,o.colIndex)}),[o.editable,s,o.rowIndex,o.colIndex]),v=t((function(o){o.preventDefault(),o.stopPropagation()}),[]);return{cell:o,isFocus:d,isEditing:e,onClickCellToFocus:a,onDoubleClickCellToEdit:p,preventPropagation:v}}export{a as useCell,d as useCellFocus,f as useTable};
2
2
  //# sourceMappingURL=hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { DataObject, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useSortContext } from \"./sort\";\n\nexport function useTable<T extends DataObject>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort } = useSortContext();\n const { setRowCount, pageFilter } = usePageContext();\n\n const filteredRows = useMemo(() => filter(props.rows), [filter, props.rows]);\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const sortedRows = useMemo(() => sort(filteredRows), [filteredRows, sort]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n return {\n cols: props.cols,\n rows: pageRows,\n };\n}\n"],"names":["useTable","props","filter","useFilterContext","sort","useSortContext","_a","usePageContext","setRowCount","pageFilter","filteredRows","useMemo","rows","useEffect","length","sortedRows","pageRows","cols"],"mappings":"qSAMM,SAAUA,EAA+BC,GACrC,IAAAC,EAAWC,WACXC,EAASC,SACXC,EAA8BC,IAA5BC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WAEzBC,EAAeC,GAAQ,WAAM,OAAAT,EAAOD,EAAMW,KAAK,GAAE,CAACV,EAAQD,EAAMW,OAEtEC,GAAU,WACRL,EAAYE,EAAaI,OAC3B,GAAG,CAACJ,EAAaI,SAEjB,IAAMC,EAAaJ,GAAQ,WAAM,OAAAP,EAAKM,KAAe,CAACA,EAAcN,IAE9DY,EAAWL,GACf,WAAM,OAAAF,EAAWM,KACjB,CAACN,EAAYM,IAGf,MAAO,CACLE,KAAMhB,EAAMgB,KACZL,KAAMI,EAEV"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useSortContext } from \"./sort\";\nimport { useFocusContext } from \"./edit/provider\";\nimport { useCellContext } from \"./sheet/providers\";\n\nexport function useTable(props: TPropsTable) {\n const { filter } = useFilterContext();\n const { sort } = useSortContext();\n const { setRowCount, pageFilter } = usePageContext();\n\n const filteredRows = useMemo(() => filter(props.rows), [filter, props.rows]);\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const sortedRows = useMemo(() => sort(filteredRows), [filteredRows, sort]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n return {\n cols: props.cols,\n rows: pageRows,\n };\n}\n\nexport function useCellFocus<T extends HTMLElement>() {\n const ref = useRef<T>(null);\n const { rowIndex, colIndex } = useCellContext();\n const { isEditing, checkFocus } = useFocusContext();\n const [occurredOnCellBlur, setOccurredOnCellBlur] = useState(false);\n\n const isFocus = checkFocus(rowIndex, colIndex);\n\n useEffect(() => {\n if (isFocus && isEditing) {\n ref.current?.focus();\n }\n setOccurredOnCellBlur(false);\n }, [isFocus, isEditing, occurredOnCellBlur]);\n\n const callbackAfterBlur = useCallback(() => {\n setOccurredOnCellBlur(true);\n }, []);\n\n return { ref, callbackAfterBlur };\n}\n\nexport function useCell() {\n const cell = useCellContext();\n const { isEditing, checkFocus, focus, focusAndEdit, finishEditing } =\n useFocusContext();\n\n const isFocus = checkFocus(cell.rowIndex, cell.colIndex);\n\n useEffect(() => {\n if (!cell.editable && isFocus && isEditing) {\n finishEditing();\n }\n }, [cell.editable, isFocus, isEditing, finishEditing]);\n\n const onClickCellToFocus: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n focus(cell.rowIndex, cell.colIndex);\n },\n [focus, cell.rowIndex, cell.colIndex]\n );\n\n const onDoubleClickCellToEdit: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n e.preventDefault();\n if (cell.editable) {\n focusAndEdit(cell.rowIndex, cell.colIndex);\n }\n },\n [cell.editable, focusAndEdit, cell.rowIndex, cell.colIndex]\n );\n\n const preventPropagation: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return {\n cell,\n isFocus,\n isEditing,\n onClickCellToFocus,\n onDoubleClickCellToEdit,\n preventPropagation,\n };\n}\n"],"names":["useTable","props","filter","useFilterContext","sort","useSortContext","_a","usePageContext","setRowCount","pageFilter","filteredRows","useMemo","rows","useEffect","length","sortedRows","pageRows","cols","useCellFocus","ref","useRef","useCellContext","rowIndex","colIndex","_b","useFocusContext","isEditing","checkFocus","_c","useState","occurredOnCellBlur","setOccurredOnCellBlur","isFocus","current","focus","callbackAfterBlur","useCallback","useCell","cell","focusAndEdit","finishEditing","editable","onClickCellToFocus","e","preventDefault","stopPropagation","onDoubleClickCellToEdit","preventPropagation"],"mappings":"2bAQM,SAAUA,EAASC,GACf,IAAAC,EAAWC,WACXC,EAASC,SACXC,EAA8BC,IAA5BC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WAEzBC,EAAeC,GAAQ,WAAM,OAAAT,EAAOD,EAAMW,KAAK,GAAE,CAACV,EAAQD,EAAMW,OAEtEC,GAAU,WACRL,EAAYE,EAAaI,OAC3B,GAAG,CAACJ,EAAaI,SAEjB,IAAMC,EAAaJ,GAAQ,WAAM,OAAAP,EAAKM,KAAe,CAACA,EAAcN,IAE9DY,EAAWL,GACf,WAAM,OAAAF,EAAWM,KACjB,CAACN,EAAYM,IAGf,MAAO,CACLE,KAAMhB,EAAMgB,KACZL,KAAMI,EAEV,UAEgBE,IACd,IAAMC,EAAMC,EAAU,MAChBd,EAAyBe,IAAvBC,EAAQhB,EAAAgB,SAAEC,EAAQjB,EAAAiB,SACpBC,EAA4BC,IAA1BC,EAASF,EAAAE,UAAEC,EAAUH,EAAAG,WACvBC,EAA8CC,GAAS,GAAtDC,EAAkBF,EAAA,GAAEG,EAAqBH,EAAA,GAE1CI,EAAUL,EAAWL,EAAUC,GAErCV,GAAU,iBACJmB,GAAWN,IACA,QAAbpB,EAAAa,EAAIc,eAAS,IAAA3B,GAAAA,EAAA4B,SAEfH,GAAsB,EACvB,GAAE,CAACC,EAASN,EAAWI,IAExB,IAAMK,EAAoBC,GAAY,WACpCL,GAAsB,EACvB,GAAE,IAEH,MAAO,CAAEZ,IAAGA,EAAEgB,kBAAiBA,EACjC,UAEgBE,IACd,IAAMC,EAAOjB,IACPf,EACJmB,IADMC,EAASpB,EAAAoB,UAAEC,EAAUrB,EAAAqB,WAAEO,UAAOK,iBAAcC,kBAG9CR,EAAUL,EAAWW,EAAKhB,SAAUgB,EAAKf,UAE/CV,GAAU,YACHyB,EAAKG,UAAYT,GAAWN,GAC/Bc,GAEJ,GAAG,CAACF,EAAKG,SAAUT,EAASN,EAAWc,IAEvC,IAAME,EACJN,GACE,SAACO,GACCA,EAAEC,iBACFD,EAAEE,kBACFX,EAAMI,EAAKhB,SAAUgB,EAAKf,SAC5B,GACA,CAACW,EAAOI,EAAKhB,SAAUgB,EAAKf,WAG1BuB,EACJV,GACE,SAACO,GACCA,EAAEC,iBACEN,EAAKG,UACPF,EAAaD,EAAKhB,SAAUgB,EAAKf,SAErC,GACA,CAACe,EAAKG,SAAUF,EAAcD,EAAKhB,SAAUgB,EAAKf,WAGhDwB,EACJX,GAAY,SAACO,GACXA,EAAEC,iBACFD,EAAEE,iBACH,GAAE,IAEL,MAAO,CACLP,KAAIA,EACJN,QAAOA,EACPN,UAASA,EACTgB,mBAAkBA,EAClBI,wBAAuBA,EACvBC,mBAAkBA,EAEtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/pagenation/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TPageAction, TPageState } from \"./types\";\nimport { INITIAL_PAGE_STATE } from \"./constants\";\n\nfunction pagenationReducer(state: TPageState, action: TPageAction): TPageState {\n switch (action.type) {\n case \"setRowCount\":\n return {\n ...state,\n currentPage: 1,\n rowCount: action.payload.rowCount,\n };\n case \"setPerPage\":\n return {\n ...state,\n perPage: action.payload.perPage,\n };\n case \"next\":\n if (state.currentPage === Math.ceil(state.rowCount / state.perPage)) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage + 1,\n };\n case \"prev\":\n if (state.currentPage === 1) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage - 1,\n };\n case \"jump\":\n if (\n action.payload.pageNumber < 1 ||\n action.payload.pageNumber > Math.ceil(state.rowCount / state.perPage) ||\n state.currentPage === action.payload.pageNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n currentPage: action.payload.pageNumber,\n };\n default:\n return state;\n }\n}\n\nexport function usePageReducer(initialState?: TPageState) {\n const [state, dispatch] = useReducer(\n pagenationReducer,\n initialState ?? INITIAL_PAGE_STATE\n );\n\n const next = useCallback(() => dispatch({ type: \"next\" }), [dispatch]);\n const prev = useCallback(() => dispatch({ type: \"prev\" }), [dispatch]);\n const jump = useCallback(\n (pageNumber: number) => dispatch({ type: \"jump\", payload: { pageNumber } }),\n [dispatch]\n );\n\n const setRowCount = useCallback(\n (rowCount: number) =>\n dispatch({ type: \"setRowCount\", payload: { rowCount } }),\n [dispatch]\n );\n\n const from = useMemo(() => (state.currentPage - 1) * state.perPage, [state]);\n const to = useMemo(() => state.currentPage * state.perPage, [state]);\n\n const pageFilter = useCallback(\n <T>(data: T[]): T[] => {\n return data.slice(from, to);\n },\n [from, to]\n );\n\n return {\n perPage: state.perPage,\n current: state.currentPage,\n rowCount: state.rowCount,\n pageCount: Math.ceil(state.rowCount / state.perPage),\n from,\n to,\n next,\n prev,\n jump,\n setRowCount,\n pageFilter,\n };\n}\n"],"names":["pagenationReducer","state","action","type","__assign","currentPage","rowCount","payload","perPage","Math","ceil","pageNumber","usePageReducer","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"yLAIA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAAC,EAAAA,EAAA,GACKH,GAAK,CACRI,YAAa,EACbC,SAAUJ,EAAOK,QAAQD,WAE7B,IAAK,aACH,OACKF,EAAAA,EAAA,CAAA,EAAAH,IACHO,QAASN,EAAOK,QAAQC,UAE5B,IAAK,OACH,OAAIP,EAAMI,cAAgBI,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,SAClDP,EAIJG,EAAAA,EAAA,CAAA,EAAAH,IACHI,YAAaJ,EAAMI,YAAc,IAErC,IAAK,OACH,OAA0B,IAAtBJ,EAAMI,YACDJ,EAIJG,EAAAA,EAAA,CAAA,EAAAH,IACHI,YAAaJ,EAAMI,YAAc,IAErC,IAAK,OACH,OACEH,EAAOK,QAAQI,WAAa,GAC5BT,EAAOK,QAAQI,WAAaF,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,UAC7DP,EAAMI,cAAgBH,EAAOK,QAAQI,WAE9BV,EAIJG,EAAAA,EAAA,CAAA,EAAAH,IACHI,YAAaH,EAAOK,QAAQI,aAEhC,QACE,OAAOV,EAEb,CAEM,SAAUW,EAAeC,GACvB,IAAAC,EAAoBC,EACxBf,EACAa,QAAAA,EAAgBG,GAFXf,OAAOgB,OAKRC,EAAOC,GAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDG,EAAOD,GAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDI,EAAOF,GACX,SAACR,GAAuB,OAAAM,EAAS,CAAEd,KAAM,OAAQI,QAAS,CAAEI,WAAUA,OACtE,CAACM,IAGGK,EAAcH,GAClB,SAACb,GACC,OAAAW,EAAS,CAAEd,KAAM,cAAeI,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACW,IAGGM,EAAOC,GAAQ,WAAM,OAACvB,EAAMI,YAAc,GAAKJ,EAAMO,OAAO,GAAE,CAACP,IAC/DwB,EAAKD,GAAQ,WAAM,OAAAvB,EAAMI,YAAcJ,EAAMO,UAAS,CAACP,IAEvDyB,EAAaP,GACjB,SAAIQ,GACF,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLjB,QAASP,EAAMO,QACfqB,QAAS5B,EAAMI,YACfC,SAAUL,EAAMK,SAChBwB,UAAWrB,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,SAC5Ce,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/pagenation/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TPageAction, TPageState } from \"./types\";\nimport { INITIAL_PAGE_STATE } from \"./constants\";\nimport { DataObject } from \"../type\";\n\nfunction pagenationReducer(state: TPageState, action: TPageAction): TPageState {\n switch (action.type) {\n case \"setRowCount\":\n return {\n ...state,\n currentPage: 1,\n rowCount: action.payload.rowCount,\n };\n case \"setPerPage\":\n return {\n ...state,\n perPage: action.payload.perPage,\n };\n case \"next\":\n if (state.currentPage === Math.ceil(state.rowCount / state.perPage)) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage + 1,\n };\n case \"prev\":\n if (state.currentPage === 1) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage - 1,\n };\n case \"jump\":\n if (\n action.payload.pageNumber < 1 ||\n action.payload.pageNumber > Math.ceil(state.rowCount / state.perPage) ||\n state.currentPage === action.payload.pageNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n currentPage: action.payload.pageNumber,\n };\n default:\n return state;\n }\n}\n\nexport function usePageReducer(initialState?: TPageState) {\n const [state, dispatch] = useReducer(\n pagenationReducer,\n initialState ?? INITIAL_PAGE_STATE\n );\n\n const next = useCallback(() => dispatch({ type: \"next\" }), [dispatch]);\n const prev = useCallback(() => dispatch({ type: \"prev\" }), [dispatch]);\n const jump = useCallback(\n (pageNumber: number) => dispatch({ type: \"jump\", payload: { pageNumber } }),\n [dispatch]\n );\n\n const setRowCount = useCallback(\n (rowCount: number) =>\n dispatch({ type: \"setRowCount\", payload: { rowCount } }),\n [dispatch]\n );\n\n const from = useMemo(() => (state.currentPage - 1) * state.perPage, [state]);\n const to = useMemo(() => state.currentPage * state.perPage, [state]);\n\n const pageFilter = useCallback(\n (data: DataObject[]): DataObject[] => {\n return data.slice(from, to);\n },\n [from, to]\n );\n\n return {\n perPage: state.perPage,\n current: state.currentPage,\n rowCount: state.rowCount,\n pageCount: Math.ceil(state.rowCount / state.perPage),\n from,\n to,\n next,\n prev,\n jump,\n setRowCount,\n pageFilter,\n };\n}\n"],"names":["pagenationReducer","state","action","type","__assign","currentPage","rowCount","payload","perPage","Math","ceil","pageNumber","usePageReducer","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"yLAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAAC,EAAAA,EAAA,GACKH,GAAK,CACRI,YAAa,EACbC,SAAUJ,EAAOK,QAAQD,WAE7B,IAAK,aACH,OACKF,EAAAA,EAAA,CAAA,EAAAH,IACHO,QAASN,EAAOK,QAAQC,UAE5B,IAAK,OACH,OAAIP,EAAMI,cAAgBI,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,SAClDP,EAIJG,EAAAA,EAAA,CAAA,EAAAH,IACHI,YAAaJ,EAAMI,YAAc,IAErC,IAAK,OACH,OAA0B,IAAtBJ,EAAMI,YACDJ,EAIJG,EAAAA,EAAA,CAAA,EAAAH,IACHI,YAAaJ,EAAMI,YAAc,IAErC,IAAK,OACH,OACEH,EAAOK,QAAQI,WAAa,GAC5BT,EAAOK,QAAQI,WAAaF,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,UAC7DP,EAAMI,cAAgBH,EAAOK,QAAQI,WAE9BV,EAIJG,EAAAA,EAAA,CAAA,EAAAH,IACHI,YAAaH,EAAOK,QAAQI,aAEhC,QACE,OAAOV,EAEb,CAEM,SAAUW,EAAeC,GACvB,IAAAC,EAAoBC,EACxBf,EACAa,QAAAA,EAAgBG,GAFXf,OAAOgB,OAKRC,EAAOC,GAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDG,EAAOD,GAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDI,EAAOF,GACX,SAACR,GAAuB,OAAAM,EAAS,CAAEd,KAAM,OAAQI,QAAS,CAAEI,WAAUA,OACtE,CAACM,IAGGK,EAAcH,GAClB,SAACb,GACC,OAAAW,EAAS,CAAEd,KAAM,cAAeI,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACW,IAGGM,EAAOC,GAAQ,WAAM,OAACvB,EAAMI,YAAc,GAAKJ,EAAMO,OAAO,GAAE,CAACP,IAC/DwB,EAAKD,GAAQ,WAAM,OAAAvB,EAAMI,YAAcJ,EAAMO,UAAS,CAACP,IAEvDyB,EAAaP,GACjB,SAACQ,GACC,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLjB,QAASP,EAAMO,QACfqB,QAAS5B,EAAMI,YACfC,SAAUL,EAAMK,SAChBwB,UAAWrB,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,SAC5Ce,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as n}from"react/jsx-runtime";import{createContext as r,useContext as o}from"react";import{usePageReducer as t}from"./hooks.js";var e=r({perPage:0,current:0,pageCount:0,from:0,to:0,rowCount:0,next:function(){throw new Error("Function not implemented.")},prev:function(){throw new Error("Function not implemented.")},jump:function(n){throw new Error("Function not implemented.")},setRowCount:function(n){throw new Error("Function not implemented.")},pageFilter:function(n){throw new Error("Function not implemented.")}});function i(r){var o,i;return n(e.Provider,{value:t({perPage:null!==(o=r.perPage)&&void 0!==o?o:50,currentPage:null!==(i=r.currentPage)&&void 0!==i?i:1,rowCount:r.rowCount}),children:r.children})}function u(){return o(e)}export{i as PagenationProvider,u as usePageContext};
2
+ import{jsx as n}from"react/jsx-runtime";import{createContext as r,useContext as o}from"react";import{usePageReducer as t}from"./hooks.js";var e=r({perPage:0,current:0,pageCount:0,from:0,to:0,rowCount:0,next:function(){throw new Error("Function not implemented.")},prev:function(){throw new Error("Function not implemented.")},jump:function(){throw new Error("Function not implemented.")},setRowCount:function(){throw new Error("Function not implemented.")},pageFilter:function(){throw new Error("Function not implemented.")}});function i(r){var o,i;return n(e.Provider,{value:t({perPage:null!==(o=r.perPage)&&void 0!==o?o:50,currentPage:null!==(i=r.currentPage)&&void 0!==i?i:1,rowCount:r.rowCount}),children:r.children})}function u(){return o(e)}export{i as PagenationProvider,u as usePageContext};
3
3
  //# sourceMappingURL=providers.js.map
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{__rest as e}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r}from"react/jsx-runtime";import{createContext as n,useContext as o}from"react";var l=n({id:""});function t(e){var n=e.children,o=e.row;return r(l.Provider,{value:o,children:n})}function i(){return o(l)}var c=n({cols:[],colMaps:{}});function u(n){var o=n.children,l=n.cols,t=l.reduce((function(r,n){var o=n.key,l=e(n,["key"]);return r[o]=l,r}),{});return r(c.Provider,{value:{cols:l,colMaps:t},children:o})}function d(e){return o(c).colMaps[e]}function a(){return o(c).cols}var v=n({columnKey:"",value:"",label:"",type:"string",rowIndex:0,colIndex:0});function s(e){var n,o,l=e.children,t=e.columnKey,c=e.rowIndex,u=e.colIndex,a=d(t),s=i()[t];return r(v.Provider,{value:{columnKey:t,value:s,label:"select"===a.type?null===(o=null===(n=a.options)||void 0===n?void 0:n.find((function(e){return e.value===s})))||void 0===o?void 0:o.label:s,editable:a.editable,render:a.editable?void 0:a.render,type:a.type,rowIndex:c,colIndex:u},children:l})}function f(){return o(v)}export{s as CellProvider,u as ColumnsProvider,t as RowProvider,f as useCellContext,d as useColumnContext,a as useColumnsContext,i as useRowContext};
3
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as r}from"react/jsx-runtime";import{SortIcon as e}from"./icon.js";import{useSortContext as o}from"./provider.js";function t(t){var i=o(),n=i.key,c=i.asc,a=i.changeKey,m=i.changeOrder,s=n===t.keyName;return r("div",{onClick:function(r){r.preventDefault(),s?m():a(t.keyName)},className:"cursor-pointer",children:r(e,{sortOrder:s?c?"ASC":"DESC":"ASC",isSortActive:s})})}export{t as SortButton};
2
+ import{jsx as r}from"react/jsx-runtime";import{SortIcon as e}from"./icon.js";import{useSortContext as o}from"./provider.js";function n(n){var t=o(),c=t.key,i=t.asc,m=t.changeKey,s=t.changeOrder,a=c===n.columnKey;return r("div",{onClick:function(r){r.preventDefault(),a?s():m(n.columnKey)},className:"cursor-pointer",children:r(e,{sortOrder:a?i?"ASC":"DESC":"ASC",isSortActive:a})})}export{n as SortButton};
3
3
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject } from \"../type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return { key: action.payload.key, asc: true };\n case \"changeOrder\":\n return { ...state, asc: !state.asc };\n }\n};\n\nexport function useSortReducer(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const sort = useCallback(\n <T extends DataObject>(rows: T[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state]\n );\n\n return { key: state.key, asc: state.asc, changeKey, changeOrder, sort };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","__assign","useSortReducer","initial","_c","useReducer","_a","_b","dispatch","sort","useCallback","rows","__spreadArray","a","b","changeKey","changeOrder"],"mappings":"2IAIA,IAAMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CAAEC,IAAKF,EAAOG,QAAQD,IAAKE,KAAK,GACzC,IAAK,cACH,OAAYC,EAAAA,EAAA,CAAA,EAAAN,IAAOK,KAAML,EAAMK,MAErC,EAEM,SAAUE,EAAeC,WAIvBC,EAAoBC,EAAWX,EAAS,CAC5CI,IAAiB,QAAZQ,EAAAH,eAAAA,EAASL,WAAG,IAAAQ,EAAAA,EAAI,KACrBN,IAAiB,QAAZO,EAAAJ,eAAAA,EAASH,WAAG,IAAAO,GAAAA,IAFZZ,EAAKS,EAAA,GAAEI,OAaRC,EAAOC,GACX,SAAuBC,GACrB,OAAAC,EAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,OAAID,EAAElB,EAAMG,KAAOgB,EAAEnB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBa,EAAElB,EAAMG,KAAOgB,EAAEnB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GARA,GASF,CAACL,IAGH,MAAO,CAAEG,IAAKH,EAAMG,IAAKE,IAAKL,EAAMK,IAAKe,UAtBvB,SAACjB,GACjBU,EAAS,CAAEX,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAoBoDkB,YAlBhC,WAClBR,EAAS,CAAEX,KAAM,eACnB,EAgBiEY,KAAIA,EACvE"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject } from \"../type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return { key: action.payload.key, asc: true };\n case \"changeOrder\":\n return { ...state, asc: !state.asc };\n }\n};\n\nexport function useSortReducer(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const sort = useCallback(\n (rows: DataObject[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state]\n );\n\n return { key: state.key, asc: state.asc, changeKey, changeOrder, sort };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","__assign","useSortReducer","initial","_c","useReducer","_a","_b","dispatch","sort","useCallback","rows","__spreadArray","a","b","changeKey","changeOrder"],"mappings":"2IAIA,IAAMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CAAEC,IAAKF,EAAOG,QAAQD,IAAKE,KAAK,GACzC,IAAK,cACH,OAAYC,EAAAA,EAAA,CAAA,EAAAN,IAAOK,KAAML,EAAMK,MAErC,EAEM,SAAUE,EAAeC,WAIvBC,EAAoBC,EAAWX,EAAS,CAC5CI,IAAiB,QAAZQ,EAAAH,eAAAA,EAASL,WAAG,IAAAQ,EAAAA,EAAI,KACrBN,IAAiB,QAAZO,EAAAJ,eAAAA,EAASH,WAAG,IAAAO,GAAAA,IAFZZ,EAAKS,EAAA,GAAEI,OAaRC,EAAOC,GACX,SAACC,GACC,OAAAC,EAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,OAAID,EAAElB,EAAMG,KAAOgB,EAAEnB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBa,EAAElB,EAAMG,KAAOgB,EAAEnB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GARA,GASF,CAACL,IAGH,MAAO,CAAEG,IAAKH,EAAMG,IAAKE,IAAKL,EAAMK,IAAKe,UAtBvB,SAACjB,GACjBU,EAAS,CAAEX,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAoBoDkB,YAlBhC,WAClBR,EAAS,CAAEX,KAAM,eACnB,EAgBiEY,KAAIA,EACvE"}
package/dist/index.d.ts CHANGED
@@ -1,36 +1,37 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
 
3
3
  type DataObject = {
4
- [key: string]: any;
4
+ [key: string]: number | string;
5
5
  id: number | string;
6
- onClick?: React.MouseEventHandler<HTMLTableRowElement>;
7
6
  };
8
- type TStringCellEditingCondition<T extends DataObject> = ({
7
+ type TStringCellEditingCondition = ({
9
8
  type: "string";
10
9
  } & ({
11
10
  editable?: false;
11
+ render?: (value: string, row: DataObject) => React.ReactNode;
12
12
  } | {
13
13
  editable: true;
14
- onCellBlur: (key: string, value: string, current: T, completeEditing: () => void) => void;
14
+ onCellBlur: (key: string, value: string, current: DataObject, completeEditing: () => void) => void;
15
15
  constraints?: {
16
16
  maxLength?: number;
17
17
  minLength?: number;
18
18
  pattern?: string;
19
19
  };
20
20
  }));
21
- type TNumberCellEditingCondition<T extends DataObject> = ({
21
+ type TNumberCellEditingCondition = ({
22
22
  type: "number";
23
23
  } & ({
24
24
  editable?: false;
25
+ render?: (value: number, row: DataObject) => React.ReactNode;
25
26
  } | {
26
27
  editable: true;
27
- onCellBlur: (key: string, value: number, current: T, completeEditing: () => void) => void;
28
+ onCellBlur: (key: string, value: number, current: DataObject, completeEditing: () => void) => void;
28
29
  constraints?: {
29
30
  max?: number;
30
31
  min?: number;
31
32
  };
32
33
  }));
33
- type TSelectCellEditingCondition<T extends DataObject> = ({
34
+ type TSelectCellEditingCondition = ({
34
35
  type: "select";
35
36
  options: {
36
37
  value: string;
@@ -38,23 +39,21 @@ type TSelectCellEditingCondition<T extends DataObject> = ({
38
39
  }[];
39
40
  } & ({
40
41
  editable?: false;
42
+ render?: (value: string, row: DataObject) => React.ReactNode;
41
43
  } | {
42
44
  editable: true;
43
45
  allowEmpty?: boolean;
44
- onCellBlur: (key: string, value: string, current: T, completeEditing: () => void) => void;
46
+ onCellBlur: (key: string, value: string, current: DataObject, completeEditing: () => void) => void;
45
47
  }));
46
- type TComponentCellEditingCondition = {
47
- type: "component";
48
- editable?: false;
49
- };
50
- type TCellEditingCondition<T extends DataObject> = TStringCellEditingCondition<T> | TNumberCellEditingCondition<T> | TSelectCellEditingCondition<T> | TComponentCellEditingCondition;
51
- type TTableColumn<T extends DataObject> = {
48
+ type TCellEditingCondition = TStringCellEditingCondition | TNumberCellEditingCondition | TSelectCellEditingCondition;
49
+ type TTableColumn = {
52
50
  key: string;
53
51
  label?: string;
54
- } & TCellEditingCondition<T>;
55
- type TPropsTable<T extends DataObject> = {
56
- cols: TTableColumn<T>[];
57
- rows: T[];
52
+ } & TCellEditingCondition;
53
+ type TPropsTable = {
54
+ cols: TTableColumn[];
55
+ rows: DataObject[];
56
+ onClickRow?: (row: DataObject) => void;
58
57
  initialCondition?: {
59
58
  sort?: {
60
59
  key: string;
@@ -63,6 +62,6 @@ type TPropsTable<T extends DataObject> = {
63
62
  };
64
63
  };
65
64
 
66
- declare function Table<T extends DataObject>(props: TPropsTable<T>): react_jsx_runtime.JSX.Element;
65
+ declare function Table(props: TPropsTable): react_jsx_runtime.JSX.Element;
67
66
 
68
67
  export { Table };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "0.7.5",
3
+ "version": "1.0.0",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",