@teppen/react-ui 0.7.4 → 0.7.6

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 (96) hide show
  1. package/dist/cjs/src/table/base.js +1 -1
  2. package/dist/cjs/src/table/cell.js +2 -1
  3. package/dist/cjs/src/table/cell.js.map +1 -1
  4. package/dist/cjs/src/table/edit/hooks.js +2 -0
  5. package/dist/cjs/src/table/edit/hooks.js.map +1 -0
  6. package/dist/cjs/src/table/edit/provider.js +3 -0
  7. package/dist/cjs/src/table/edit/provider.js.map +1 -0
  8. package/dist/cjs/src/table/filter/components.js +3 -0
  9. package/dist/cjs/src/table/filter/components.js.map +1 -0
  10. package/dist/cjs/src/table/filter/constants.js +2 -0
  11. package/dist/cjs/src/table/filter/constants.js.map +1 -0
  12. package/dist/cjs/src/table/filter/filter-icon.js.map +1 -0
  13. package/dist/cjs/src/table/filter/hooks.js +2 -0
  14. package/dist/cjs/src/table/filter/hooks.js.map +1 -0
  15. package/dist/cjs/src/table/filter/provider.js +3 -0
  16. package/dist/cjs/src/table/filter/provider.js.map +1 -0
  17. package/dist/cjs/src/table/hook.js +1 -1
  18. package/dist/cjs/src/table/hook.js.map +1 -1
  19. package/dist/cjs/src/table/pagenation/components.js +3 -0
  20. package/dist/cjs/src/table/pagenation/components.js.map +1 -0
  21. package/dist/cjs/src/table/pagenation/constants.js +2 -0
  22. package/dist/cjs/src/table/pagenation/constants.js.map +1 -0
  23. package/dist/cjs/src/table/pagenation/hooks.js +2 -0
  24. package/dist/cjs/src/table/pagenation/hooks.js.map +1 -0
  25. package/dist/cjs/src/table/pagenation/providers.js +3 -0
  26. package/dist/cjs/src/table/pagenation/providers.js.map +1 -0
  27. package/dist/cjs/src/table/sheet/providers.js +3 -0
  28. package/dist/cjs/src/table/sheet/providers.js.map +1 -0
  29. package/dist/cjs/src/table/sort/components.js +3 -0
  30. package/dist/cjs/src/table/sort/components.js.map +1 -0
  31. package/dist/cjs/src/table/sort/hooks.js +2 -0
  32. package/dist/cjs/src/table/sort/hooks.js.map +1 -0
  33. package/dist/cjs/src/table/{sort-icon.js → sort/icon.js} +1 -1
  34. package/dist/cjs/src/table/sort/icon.js.map +1 -0
  35. package/dist/cjs/src/table/sort/provider.js +3 -0
  36. package/dist/cjs/src/table/sort/provider.js.map +1 -0
  37. package/dist/esm/src/table/base.js +1 -1
  38. package/dist/esm/src/table/cell.js +2 -1
  39. package/dist/esm/src/table/cell.js.map +1 -1
  40. package/dist/esm/src/table/edit/hooks.js +2 -0
  41. package/dist/esm/src/table/edit/hooks.js.map +1 -0
  42. package/dist/esm/src/table/edit/provider.js +3 -0
  43. package/dist/esm/src/table/edit/provider.js.map +1 -0
  44. package/dist/esm/src/table/filter/components.js +3 -0
  45. package/dist/esm/src/table/filter/components.js.map +1 -0
  46. package/dist/esm/src/table/filter/constants.js +2 -0
  47. package/dist/esm/src/table/filter/constants.js.map +1 -0
  48. package/dist/esm/src/table/filter/filter-icon.js.map +1 -0
  49. package/dist/esm/src/table/filter/hooks.js +2 -0
  50. package/dist/esm/src/table/filter/hooks.js.map +1 -0
  51. package/dist/esm/src/table/filter/provider.js +3 -0
  52. package/dist/esm/src/table/filter/provider.js.map +1 -0
  53. package/dist/esm/src/table/hook.js +1 -1
  54. package/dist/esm/src/table/hook.js.map +1 -1
  55. package/dist/esm/src/table/pagenation/components.js +3 -0
  56. package/dist/esm/src/table/pagenation/components.js.map +1 -0
  57. package/dist/esm/src/table/pagenation/constants.js +2 -0
  58. package/dist/esm/src/table/pagenation/constants.js.map +1 -0
  59. package/dist/esm/src/table/pagenation/hooks.js +2 -0
  60. package/dist/esm/src/table/pagenation/hooks.js.map +1 -0
  61. package/dist/esm/src/table/pagenation/providers.js +3 -0
  62. package/dist/esm/src/table/pagenation/providers.js.map +1 -0
  63. package/dist/esm/src/table/sheet/providers.js +3 -0
  64. package/dist/esm/src/table/sheet/providers.js.map +1 -0
  65. package/dist/esm/src/table/sort/components.js +3 -0
  66. package/dist/esm/src/table/sort/components.js.map +1 -0
  67. package/dist/esm/src/table/sort/hooks.js +2 -0
  68. package/dist/esm/src/table/sort/hooks.js.map +1 -0
  69. package/dist/esm/src/table/{sort-icon.js → sort/icon.js} +1 -1
  70. package/dist/esm/src/table/sort/icon.js.map +1 -0
  71. package/dist/esm/src/table/sort/provider.js +3 -0
  72. package/dist/esm/src/table/sort/provider.js.map +1 -0
  73. package/dist/index.d.ts +19 -13
  74. package/package.json +1 -2
  75. package/dist/cjs/src/table/filter-form.js +0 -2
  76. package/dist/cjs/src/table/filter-form.js.map +0 -1
  77. package/dist/cjs/src/table/filter-icon.js.map +0 -1
  78. package/dist/cjs/src/table/filter.js +0 -2
  79. package/dist/cjs/src/table/filter.js.map +0 -1
  80. package/dist/cjs/src/table/page.js +0 -2
  81. package/dist/cjs/src/table/page.js.map +0 -1
  82. package/dist/cjs/src/table/sort-icon.js.map +0 -1
  83. package/dist/cjs/src/table/sort.js +0 -2
  84. package/dist/cjs/src/table/sort.js.map +0 -1
  85. package/dist/esm/src/table/filter-form.js +0 -2
  86. package/dist/esm/src/table/filter-form.js.map +0 -1
  87. package/dist/esm/src/table/filter-icon.js.map +0 -1
  88. package/dist/esm/src/table/filter.js +0 -2
  89. package/dist/esm/src/table/filter.js.map +0 -1
  90. package/dist/esm/src/table/page.js +0 -2
  91. package/dist/esm/src/table/page.js.map +0 -1
  92. package/dist/esm/src/table/sort-icon.js.map +0 -1
  93. package/dist/esm/src/table/sort.js +0 -2
  94. package/dist/esm/src/table/sort.js.map +0 -1
  95. /package/dist/cjs/src/table/{filter-icon.js → filter/filter-icon.js} +0 -0
  96. /package/dist/esm/src/table/{filter-icon.js → filter/filter-icon.js} +0 -0
@@ -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("./hook.js"),t=require("./cell.js"),s=require("./sort.js"),n=require("./header.js"),i=require("./page.js"),o=require("./filter.js"),a=require("react"),c=require("./filter-form.js");function d(d){var u=l.useTable(d),x=u.cols,j=u.rows,m=u.rowCount,h=u.sortKey,v=u.sortOrder,p=u.page,f=p.count,b=p.current,y=p.from,g=p.to,k=p.next,N=p.prev,C=p.jump,q=a.useState(!1),w=q[0],T=q[1];return r.jsxs("div",{className:"w-full",children:[r.jsx("div",{className:"flex justify-end",children:r.jsx(o.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:x.map((function(e){return r.jsx(n.TableHeaderElement,{label:e.label,sortConponent:"component"!==e.type?r.jsx(s.Sort,{onClick:e.onClick,isSortedByThis:h===e.key,sortOrder:v}):void 0,filterComponent:"component"!==e.type?r.jsx(o.TableFilter,{keyName:e.key,onClick:function(e){e.preventDefault(),T((function(e){return!e}))}}):void 0},e.key)}))})}),r.jsxs("tbody",{children:[w&&r.jsx("tr",{children:r.jsx("td",{colSpan:x.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(),T(!1)},children:"close"})}),r.jsx("div",{children:r.jsx(c.TableFilterForm,{cols:x})})]})})})}),0===j.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:x.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),j.map((function(l){var s;return r.jsx("tr",{className:"border border-gray-200 hover:bg-gray-100 ".concat((null===(s=j[0])||void 0===s?void 0:s.onClick)?"hover:cursor-pointer":""),onClick:l.onClick,"data-testid":l.id,children:x.map((function(s){var n=s.key,i=e.__rest(s,["key"]);return r.jsx(t.TableCell,e.__assign({},i,{columnKey:null==s?void 0:s.key,currentRecord:l,children:l[null==s?void 0:s.key]}),n)}))},l.id)}))]})]})}),r.jsxs("div",{className:"mt-1",children:[r.jsxs("p",{className:"text-center text-sm text-gray-600",children:[y+1," - ",g<m?g:m," of ",m]}),r.jsx("div",{className:"mt-2",children:r.jsx(i.Pagenation,{count:f,current:b,jump:C,next:k,prev:N})})]})]})}module.exports=function(l){return r.jsx(o.TableFilterProvider,{children:r.jsx(d,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"),l=require("./header.js"),s=require("./pagenation/providers.js"),i=require("./pagenation/components.js"),a=require("./filter/provider.js"),d=require("./filter/components.js"),c=require("./sort/components.js"),u=require("./sort/provider.js"),v=require("./sheet/providers.js"),x=require("./edit/provider.js");function j(e){var s=n.useTable(e),u=s.cols,j=s.rows,m=x.useFocusContext(),h=m.isFocus,p=m.isEditing,f=m.edit,y=m.moveLeft,g=m.moveRight,b=m.moveUp,k=m.moveDown,w=m.unfocus,N=m.setMaxRowNumber,C=a.useFilterContext(),q=C.selectedFilterKey,F=C.setSelectedFilterKey;return t.useState(!1)[0],t.useEffect((function(){var e=function(e){h&&!p&&("Enter"===e.key?(e.preventDefault(),k()):"Escape"===e.key?(e.preventDefault(),w()):"ArrowRight"===e.key?(e.preventDefault(),g()):"ArrowLeft"===e.key?(e.preventDefault(),y()):"ArrowUp"===e.key?(e.preventDefault(),b()):"ArrowDown"===e.key?(e.preventDefault(),k()):"F2"===e.key?f():console.log(e.key))};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[p,h]),t.useEffect((function(){N(j.length-1)}),[j.length]),r.jsxs("div",{className:"w-full",children:[r.jsx("div",{className:"flex justify-end mb-1 mr-3",children:r.jsx(d.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:u.map((function(e){return r.jsx(l.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(r){r.preventDefault(),F(e.key)}}):void 0},e.key)}))})}),r.jsxs("tbody",{children:[!!q&&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 z-20 p-0 overflow-hidden",children:r.jsx(d.TableFilterForm,{})})}),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(e,t){var n;return r.jsx(v.RowProvider,{row:e,children: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:e.onClick,"data-testid":e.id,children:u.map((function(e,n){return r.jsx(v.CellProvider,{columnKey:e.key,rowIndex:t,colIndex:n,children:r.jsx(o.TableCell,{})},e.key)}))})},e.id)}))]})]})}),r.jsxs("div",{className:"mt-1",children:[r.jsx(i.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(i.Pagenation,{})})]})]})}module.exports=function(t){var n;return r.jsx(a.FilterProvider,{children:r.jsx(u.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(v.ColumnsProvider,{cols:t.cols,children:r.jsx(x.FocusProvider,{columnCount:t.cols.length,children:r.jsx(j,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"),o=require("./sheet/providers.js"),r=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=o.useCellContext(),l=o.useColumnContext(n.columnKey),a=o.useRowContext(),s=r.useFocusContext().finishEditing,c=u.useCellFocus(),f=c.ref,v=c.callbackAfterBlur,d=t.useState(a[n.columnKey]),p=d[0],x=d[1];if(!l.editable||"string"!==l.type)throw new Error("Invalid condition");return e.jsx(i,{ref:f,value:p,onChange:function(e){e.preventDefault(),x(e.target.value)},onBlur:function(e){e.preventDefault(),p!==a[n.columnKey]?!function(){var e,t,n;return(null===(e=l.constraints)||void 0===e?void 0:e.maxLength)&&p.length>l.constraints.maxLength?(alert("最大文字数(".concat(l.constraints.maxLength,")を超過しています。(現在").concat(p.length,"文字)")),!1):(null===(t=l.constraints)||void 0===t?void 0:t.minLength)&&p.length<l.constraints.minLength?(alert("最小文字数(".concat(l.constraints.minLength,")を下回っています。(現在").concat(p.length,"文字)")),!1):!((null===(n=l.constraints)||void 0===n?void 0:n.pattern)&&!new RegExp(l.constraints.pattern).test(p)&&(alert("パターンに一致しません。(パターン".concat(l.constraints.pattern,")")),1))}()?setTimeout((function(){e.target.focus()}),100):(l.onCellBlur(n.columnKey,p,a,s),v()):s()},reset:function(){return x(a[n.columnKey])},endEditing:s})}function s(){var n=o.useCellContext(),l=o.useColumnContext(n.columnKey),a=o.useRowContext(),s=r.useFocusContext().finishEditing,c=u.useCellFocus(),f=c.ref,v=c.callbackAfterBlur,d=t.useState(n.value.toString()),p=d[0],x=d[1];if(!l.editable||"number"!==l.type)throw new Error("Invalid condition");return e.jsx(i,{ref:f,value:p,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?x(e.target.value):isNaN(Number(e.target.value))||x(Number(e.target.value).toString()):x("-0"):x("0")},onBlur:function(e){e.preventDefault(),Number(p)!==n.value?!function(){var e,t,n=parseInt(p);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(p),a,s),v()):s()},reset:function(){return x(n.value.toString())},endEditing:s})}function c(){var n=o.useCellContext(),i=o.useColumnContext(n.columnKey),a=o.useRowContext(),s=r.useFocusContext().finishEditing,c=u.useCellFocus(),f=c.ref,v=c.callbackAfterBlur,d=t.useState(n.value),p=d[0],x=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:p,onChange:function(e){e.preventDefault(),x(e.target.value)},onBlur:function(e){e.preventDefault(),p!==n.value?(i.onCellBlur(n.columnKey,p,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&&(x(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(),x(n.value),s()},children:e.jsx(l.CancelIcon,{size:16})})]})}var f=t.memo((function(){var t=o.useCellContext(),l=r.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,r=t.onClickCellToFocus,i=t.onDoubleClickCellToEdit,v=t.preventPropagation;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:r,children:["component"===n.type?n.label:e.jsx("div",{onDoubleClick:i,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:v,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":";"}
@@ -0,0 +1,3 @@
1
+ "use client";
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=l.useFilterContext().filterConditions;return e.jsx("div",{className:"relative cursor-pointer",onClick:n.onClick,children:e.jsx(t.FIlterIcon,{isFilterActive:r.filter((function(e){return e.key===n.keyName})).length>0})})},exports.TableFilterForm=function(){var t=a.useColumnsContext(),x=l.useFilterContext(),f=x.removeFilter,p=x.filterConditions,v=x.selectedFilterKey,m=x.setSelectedFilterKey,h=n.useState(""),y=h[0],j=h[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&&"component"!==e.type})).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:y,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:y})]}),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
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),l=[{key:"includeText",label:"次の値を含む"}],r=[{key:"eq",label:"次の値と等しい"},{key:"ne",label:"次の値と等しくない"},{key:"gt",label:"次の値より大きい"},{key:"lt",label:"次の値より小さい"},{key:"gte",label:"次の値以上"},{key:"lte",label:"次の値以下"}],a=[{key:"selected",label:"次の値と等しい"},{key:"notSelected",label:"次の値と等しくない"}],t=e.__spreadArray(e.__spreadArray(e.__spreadArray([],l,!0),r,!0),a,!0);exports.FILTER_OPERATOR=t,exports.NUMBER_FILTER_OPERATOR=r,exports.SELECT_FILTER_OPERATOR=a,exports.STRING_FILTER_OPERATOR=l;
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../../../../src/table/filter/constants.ts"],"sourcesContent":["export const STRING_FILTER_OPERATOR = [\n { key: \"includeText\", label: \"次の値を含む\" },\n] as const;\n\nexport const NUMBER_FILTER_OPERATOR = [\n { key: \"eq\", label: \"次の値と等しい\" },\n { key: \"ne\", label: \"次の値と等しくない\" },\n { key: \"gt\", label: \"次の値より大きい\" },\n { key: \"lt\", label: \"次の値より小さい\" },\n { key: \"gte\", label: \"次の値以上\" },\n { key: \"lte\", label: \"次の値以下\" },\n] as const;\n\nexport const SELECT_FILTER_OPERATOR = [\n { key: \"selected\", label: \"次の値と等しい\" },\n { key: \"notSelected\", label: \"次の値と等しくない\" },\n] as const;\n\nexport const FILTER_OPERATOR = [\n ...STRING_FILTER_OPERATOR,\n ...NUMBER_FILTER_OPERATOR,\n ...SELECT_FILTER_OPERATOR,\n] as const;\n"],"names":["STRING_FILTER_OPERATOR","key","label","NUMBER_FILTER_OPERATOR","SELECT_FILTER_OPERATOR","FILTER_OPERATOR","__spreadArray"],"mappings":"uEAAaA,EAAyB,CACpC,CAAEC,IAAK,cAAeC,MAAO,WAGlBC,EAAyB,CACpC,CAAEF,IAAK,KAAMC,MAAO,WACpB,CAAED,IAAK,KAAMC,MAAO,aACpB,CAAED,IAAK,KAAMC,MAAO,YACpB,CAAED,IAAK,KAAMC,MAAO,YACpB,CAAED,IAAK,MAAOC,MAAO,SACrB,CAAED,IAAK,MAAOC,MAAO,UAGVE,EAAyB,CACpC,CAAEH,IAAK,WAAYC,MAAO,WAC1B,CAAED,IAAK,cAAeC,MAAO,cAGlBG,EAAkBC,EAAAA,cAAAA,gBAAAA,EAAAA,cAAA,GAC1BN,GAAsB,GACtBG,GAAsB,GACtBC,GAAsB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-icon.js","sources":["../../../../../src/table/filter/filter-icon.tsx"],"sourcesContent":["type TPropsFIlterIcon = {\n size?: number;\n isFilterActive?: boolean;\n};\n\nexport function FIlterIcon(props: TPropsFIlterIcon) {\n const size = props.size ?? 16;\n return (\n <div\n className={`duration-300 ${\n props.isFilterActive ? \"text-gray-700\" : \"text-gray-500\"\n }`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n width={`${size}px`}\n height={`${size}px`}\n viewBox=\"0 0 256 256\"\n xmlSpace=\"preserve\"\n >\n <defs></defs>\n {props.isFilterActive ? (\n <g\n style={{\n stroke: \"none\",\n strokeWidth: 0,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"none\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\"translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)\"\n >\n <path\n d=\"M 52.537 80.466 V 45.192 L 84.53 2.999 C 85.464 1.768 84.586 0 83.041 0 H 6.959 C 5.414 0 4.536 1.768 5.47 2.999 l 31.994 42.192 v 43.441 c 0 1.064 1.163 1.719 2.073 1.167 l 11.758 -7.127 C 52.065 82.205 52.537 81.368 52.537 80.466 z\"\n style={{\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\" matrix(1 0 0 1 0 0) \"\n strokeLinecap=\"round\"\n />\n </g>\n ) : (\n <g\n style={{\n stroke: \"none\",\n strokeWidth: 0,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"none\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\"translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)\"\n >\n <path\n d=\"M 37.882 90 c -0.338 0 -0.676 -0.086 -0.981 -0.258 c -0.629 -0.354 -1.019 -1.02 -1.019 -1.742 V 45.354 L 3.923 3.208 C 3.464 2.604 3.388 1.791 3.726 1.11 S 4.758 0 5.517 0 h 78.966 c 0.76 0 1.453 0.43 1.791 1.11 s 0.262 1.493 -0.197 2.098 L 54.118 45.354 V 79.37 c 0 0.699 -0.365 1.348 -0.963 1.71 l -14.237 8.63 C 38.601 89.903 38.241 90 37.882 90 z M 9.543 4 l 29.932 39.474 c 0.264 0.348 0.406 0.772 0.406 1.208 v 39.767 l 10.236 -6.205 V 44.682 c 0 -0.437 0.143 -0.861 0.406 -1.208 L 80.457 4 H 9.543 z M 52.118 79.37 h 0.01 H 52.118 z\"\n style={{\n stroke: \"none\",\n strokeWidth: 1,\n strokeDasharray: \"none\",\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n strokeMiterlimit: 10,\n fill: \"currentColor\",\n fillRule: \"nonzero\",\n opacity: 1,\n }}\n transform=\" matrix(1 0 0 1 0 0) \"\n strokeLinecap=\"round\"\n />\n </g>\n )}\n </svg>\n </div>\n );\n}\n"],"names":["props","size","_a","_jsx","jsx","className","concat","isFilterActive","children","_jsxs","xmlns","xmlnsXlink","version","width","height","viewBox","xmlSpace","style","stroke","strokeWidth","strokeDasharray","strokeLinecap","strokeLinejoin","strokeMiterlimit","fill","fillRule","opacity","transform","d"],"mappings":"mEAKM,SAAqBA,SACnBC,EAAiB,QAAVC,EAAAF,EAAMC,YAAI,IAAAC,EAAAA,EAAI,GAC3B,OACEC,EAAAC,IAAA,MAAA,CACEC,UAAW,gBACTC,OAAAN,EAAMO,eAAiB,gBAAkB,iBACzCC,SAEFC,EAAAA,KACE,MAAA,CAAAC,MAAM,6BACNC,WAAW,+BACXC,QAAQ,MACRC,MAAO,GAAGP,OAAAL,EAAQ,MAClBa,OAAQ,GAAGR,OAAAL,EAAQ,MACnBc,QAAQ,cACRC,SAAS,WAAUR,SAAA,CAEnBL,EAAAA,IAAa,OAAA,IACZH,EAAMO,eACLJ,EAAAC,IAAA,IAAA,CACEa,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,OACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,oEAEVnB,SAAAL,EAAAA,IAAA,OAAA,CACEyB,EAAE,4OACFX,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,eACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,wBACVN,cAAc,YAIlBlB,EAAAC,IAAA,IAAA,CACEa,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,OACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,oEAEVnB,SAAAL,EAAAA,IAAA,OAAA,CACEyB,EAAE,8hBACFX,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,eACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,wBACVN,cAAc,gBAO5B"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react"),t=function(r,t){switch(t.type){case"add":return{filters:e.__spreadArray(e.__spreadArray([],r.filters,!0),[e.__assign({id:(new Date).getTime()},t.payload.filter)],!1)};case"remove":return{filters:r.filters.filter((function(e){return e.id!==t.payload.id}))};case"clear":return{filters:[]}}};exports.useFilterReducer=function(){var e=r.useReducer(t,{filters:[]}),n=e[0],u=e[1];return{addFilter:r.useCallback((function(e){return u({type:"add",payload:{filter:e}})}),[u]),removeFilter:r.useCallback((function(e){return u({type:"remove",payload:{id:e}})}),[u]),clearFilter:r.useCallback((function(){return u({type:"clear"})}),[u]),filter:r.useCallback((function(e){return n.filters.reduce((function(e,r){switch(r.operator){case"includeText":return e.filter((function(e){var t=e[r.key];return"string"==typeof t&&r.value.some((function(e){return t.includes(e)}))}));case"eq":case"selected":return e.filter((function(e){return e[r.key]===r.value}));case"ne":case"notSelected":return e.filter((function(e){return e[r.key]!==r.value}));case"gt":return e.filter((function(e){return e[r.key]>r.value}));case"lt":return e.filter((function(e){return e[r.key]<r.value}));case"gte":return e.filter((function(e){return e[r.key]>=r.value}));case"lte":return e.filter((function(e){return e[r.key]<=r.value}))}}),e)}),[n]),filterConditions:n.filters}};
2
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +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 (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((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,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,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"}
@@ -0,0 +1,3 @@
1
+ "use client";
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
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../node_modules/tslib/tslib.es6.js"),r=require("react"),t=require("./page.js"),o=require("./filter.js");exports.useTable=function(n){var u=r.useState({key:"id",order:"ASC"}),s=u[0],i=u[1],a=o.useTableFilterContext(),l=a.filter,c=a.addFilter,d=a.removeFilter,f=a.clearFilter,y=a.filterConditions,k=t.usePageReducer({perPage:50,currentPage:1,rowCount:n.rows.length}),C=k.currentPage,g=k.pageCount,p=k.from,m=k.to,v=k.next,S=k.prev,w=k.jump,A=k.setRowCount,_=n.cols,j=r.useMemo((function(){return l(n.rows)}),[l,n.rows]);r.useEffect((function(){A(j.length)}),[j.length]);var b=r.useMemo((function(){return e.__spreadArray([],j,!0).sort((function(e,r){return e[s.key]<r[s.key]?"ASC"===s.order?-1:1:e[s.key]>r[s.key]?"ASC"===s.order?1:-1:0}))}),[j,s.key,s.order]),h=r.useMemo((function(){return b.slice(p,m)}),[p,m,b]);return{cols:_.map((function(r){return e.__assign(e.__assign({},r),{onClick:function(e){e.preventDefault(),s.key===r.key?i({key:r.key,order:"ASC"===s.order?"DESC":"ASC"}):i({key:r.key,order:"ASC"})}})})),rows:h,rowCount:j.length,sortKey:s.key,sortOrder:s.order,page:{from:p,to:m,count:g,current:C,next:v,prev:S,jump:w},filter:{add:c,remove:d,clear:f,conditions:y}}};
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, useState } from \"react\";\nimport { DataObject, TPropsTable } from \"./type\";\nimport { usePageReducer } from \"./page\";\nimport { useTableFilterContext } from \"./filter\";\n\ntype State = {\n key: string;\n order: \"ASC\" | \"DESC\";\n};\n\nexport function useTable<T extends DataObject>(props: TPropsTable<T>) {\n const [key, changeKey] = useState<State>({ key: \"id\", order: \"ASC\" });\n const { filter, addFilter, removeFilter, clearFilter, filterConditions } =\n useTableFilterContext();\n const { currentPage, pageCount, from, to, next, prev, jump, setRowCount } =\n usePageReducer({\n perPage: 50,\n currentPage: 1,\n rowCount: props.rows.length,\n });\n\n const { cols } = props;\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(\n () =>\n [...filteredRows].sort((a, b) => {\n if (a[key.key] < b[key.key]) {\n return key.order === \"ASC\" ? -1 : 1;\n }\n if (a[key.key] > b[key.key]) {\n return key.order === \"ASC\" ? 1 : -1;\n }\n return 0;\n }),\n [filteredRows, key.key, key.order]\n );\n\n const pagedRows = useMemo(\n () => sortedRows.slice(from, to),\n [from, to, sortedRows]\n );\n\n const colsWithSort = cols.map((col) => ({\n ...col,\n onClick: (e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault();\n if (key.key === col.key) {\n changeKey({\n key: col.key,\n order: key.order === \"ASC\" ? \"DESC\" : \"ASC\",\n });\n } else {\n changeKey({ key: col.key, order: \"ASC\" });\n }\n },\n }));\n\n return {\n cols: colsWithSort,\n rows: pagedRows,\n rowCount: filteredRows.length,\n sortKey: key.key,\n sortOrder: key.order,\n page: {\n from,\n to,\n count: pageCount,\n current: currentPage,\n next,\n prev,\n jump,\n },\n filter: {\n add: addFilter,\n remove: removeFilter,\n clear: clearFilter,\n conditions: filterConditions,\n },\n };\n}\n"],"names":["props","_a","useState","key","order","changeKey","_b","useTableFilterContext","filter","addFilter","removeFilter","clearFilter","filterConditions","_c","usePageReducer","perPage","currentPage","rowCount","rows","length","pageCount","from","to","next","prev","jump","setRowCount","cols","filteredRows","useMemo","useEffect","sortedRows","__spreadArray","sort","a","b","pagedRows","slice","map","col","onClick","e","preventDefault","sortKey","sortOrder","page","count","current","add","remove","clear","conditions"],"mappings":"wJAUM,SAAyCA,GACvC,IAAAC,EAAmBC,EAAAA,SAAgB,CAAEC,IAAK,KAAMC,MAAO,QAAtDD,OAAKE,OACNC,EACJC,EAAAA,wBADMC,EAAMF,EAAAE,OAAEC,EAASH,EAAAG,UAAEC,iBAAcC,gBAAaC,qBAEhDC,EACJC,EAAAA,eAAe,CACbC,QAAS,GACTC,YAAa,EACbC,SAAUjB,EAAMkB,KAAKC,SAJjBH,EAAWH,EAAAG,YAAEI,cAAWC,EAAIR,EAAAQ,KAAEC,EAAET,EAAAS,GAAEC,EAAIV,EAAAU,KAAEC,EAAIX,EAAAW,KAAEC,EAAIZ,EAAAY,KAAEC,EAAWb,EAAAa,YAO/DC,EAAS3B,EAAK2B,KAEhBC,EAAeC,EAAOA,SAAC,WAAM,OAAArB,EAAOR,EAAMkB,KAAK,GAAE,CAACV,EAAQR,EAAMkB,OAEtEY,EAAAA,WAAU,WACRJ,EAAYE,EAAaT,OAC3B,GAAG,CAACS,EAAaT,SAEjB,IAAMY,EAAaF,EAAAA,SACjB,WACE,OAAAG,EAAAA,cAAA,GAAIJ,GAAc,GAAAK,MAAK,SAACC,EAAGC,GACzB,OAAID,EAAE/B,EAAIA,KAAOgC,EAAEhC,EAAIA,KACA,QAAdA,EAAIC,OAAmB,EAAI,EAEhC8B,EAAE/B,EAAIA,KAAOgC,EAAEhC,EAAIA,KACA,QAAdA,EAAIC,MAAkB,GAAK,EAE7B,CACT,GARA,GASF,CAACwB,EAAczB,EAAIA,IAAKA,EAAIC,QAGxBgC,EAAYP,EAAOA,SACvB,WAAM,OAAAE,EAAWM,MAAMhB,EAAMC,EAAG,GAChC,CAACD,EAAMC,EAAIS,IAkBb,MAAO,CACLJ,KAhBmBA,EAAKW,KAAI,SAACC,GAAQ,gCAClCA,GAAG,CACNC,QAAS,SAACC,GACRA,EAAEC,iBACEvC,EAAIA,MAAQoC,EAAIpC,IAClBE,EAAU,CACRF,IAAKoC,EAAIpC,IACTC,MAAqB,QAAdD,EAAIC,MAAkB,OAAS,QAGxCC,EAAU,CAAEF,IAAKoC,EAAIpC,IAAKC,MAAO,OAErC,GACA,IAIAc,KAAMkB,EACNnB,SAAUW,EAAaT,OACvBwB,QAASxC,EAAIA,IACbyC,UAAWzC,EAAIC,MACfyC,KAAM,CACJxB,KAAIA,EACJC,GAAEA,EACFwB,MAAO1B,EACP2B,QAAS/B,EACTO,KAAIA,EACJC,KAAIA,EACJC,KAAIA,GAENjB,OAAQ,CACNwC,IAAKvC,EACLwC,OAAQvC,EACRwC,MAAOvC,EACPwC,WAAYvC,GAGlB"}
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"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ "use strict";var t=require("react/jsx-runtime"),e=require("./providers.js");exports.DisplayRange=function(){var n=e.usePageContext(),r=n.from,s=n.to,u=n.rowCount;return t.jsxs("p",{className:"text-center text-sm text-gray-600",children:[r+1," - ",s<u?s:u," of ",u]})},exports.Pagenation=function(){var n=e.usePageContext(),r=n.current,s=n.pageCount,u=n.jump,c=n.prev,i=n.next;return t.jsxs("div",{className:"flex justify-center gap-2",children:[t.jsx("button",{className:"text-sm",onClick:function(){return u(1)},disabled:1===r,children:"≪"}),t.jsx("button",{className:"text-sm",onClick:function(){return c()},disabled:1===r,children:"<"}),Array.from({length:s},(function(t,e){return e+1})).filter((function(t){return r-2<=t&&t<=r+2})).map((function(e){return t.jsx("button",{className:"text-sm ".concat(r===e?"text-blue-600":""),onClick:function(){return u(e)},children:e},e)})),t.jsx("button",{className:"text-sm",onClick:function(){return i()},disabled:r===s,children:">"}),t.jsx("button",{className:"text-sm",onClick:function(){return u(s)},disabled:r===s,children:"≫"})]})};
3
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ "use strict";exports.INITIAL_PAGE_STATE={perPage:50,currentPage:1,rowCount:0};
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../../../../src/table/pagenation/constants.ts"],"sourcesContent":["import { TPageState } from \"./types\";\n\nexport const INITIAL_PAGE_STATE: TPageState = {\n perPage: 50,\n currentPage: 1,\n rowCount: 0,\n};\n"],"names":["perPage","currentPage","rowCount"],"mappings":"wCAE8C,CAC5CA,QAAS,GACTC,YAAa,EACbC,SAAU"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react"),a=require("./constants.js");function t(r,a){switch(a.type){case"setRowCount":return e.__assign(e.__assign({},r),{currentPage:1,rowCount:a.payload.rowCount});case"setPerPage":return e.__assign(e.__assign({},r),{perPage:a.payload.perPage});case"next":return r.currentPage===Math.ceil(r.rowCount/r.perPage)?r:e.__assign(e.__assign({},r),{currentPage:r.currentPage+1});case"prev":return 1===r.currentPage?r:e.__assign(e.__assign({},r),{currentPage:r.currentPage-1});case"jump":return a.payload.pageNumber<1||a.payload.pageNumber>Math.ceil(r.rowCount/r.perPage)||r.currentPage===a.payload.pageNumber?r:e.__assign(e.__assign({},r),{currentPage:a.payload.pageNumber});default:return r}}exports.usePageReducer=function(e){var n=r.useReducer(t,null!=e?e:a.INITIAL_PAGE_STATE),u=n[0],s=n[1],o=r.useCallback((function(){return s({type:"next"})}),[s]),c=r.useCallback((function(){return s({type:"prev"})}),[s]),g=r.useCallback((function(e){return s({type:"jump",payload:{pageNumber:e}})}),[s]),p=r.useCallback((function(e){return s({type:"setRowCount",payload:{rowCount:e}})}),[s]),i=r.useMemo((function(){return(u.currentPage-1)*u.perPage}),[u]),l=r.useMemo((function(){return u.currentPage*u.perPage}),[u]),P=r.useCallback((function(e){return e.slice(i,l)}),[i,l]);return{perPage:u.perPage,current:u.currentPage,rowCount:u.rowCount,pageCount:Math.ceil(u.rowCount/u.perPage),from:i,to:l,next:o,prev:c,jump:g,setRowCount:p,pageFilter:P}};
2
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +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\";\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"}
@@ -0,0 +1,3 @@
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(){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
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -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 s=t.createContext({columnKey:"",value:"",label:"",type:"string",rowIndex:0,colIndex:0});exports.CellProvider=function(e){var t,n,l=e.children,i=e.columnKey,c=e.rowIndex,d=e.colIndex,x=u(i),a=o()[i];return r.jsx(s.Provider,{value:{columnKey:i,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,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(s)},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":";"}
@@ -0,0 +1,3 @@
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})})};
3
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react"),a=function(r,a){switch(a.type){case"changeKey":return{key:a.payload.key,asc:!0};case"changeOrder":return e.__assign(e.__assign({},r),{asc:!r.asc})}};exports.useSortReducer=function(n){var s,c,t=r.useReducer(a,{key:null!==(s=null==n?void 0:n.key)&&void 0!==s?s:"id",asc:null===(c=null==n?void 0:n.asc)||void 0===c||c}),u=t[0],y=t[1],i=r.useCallback((function(r){return e.__spreadArray([],r,!0).sort((function(e,r){return e[u.key]<r[u.key]?u.asc?-1:1:e[u.key]>r[u.key]?u.asc?1:-1:0}))}),[u]);return{key:u.key,asc:u.asc,changeKey:function(e){y({type:"changeKey",payload:{key:e}})},changeOrder:function(){y({type:"changeOrder"})},sort:i}};
2
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +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 (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,2 +1,2 @@
1
1
  "use strict";var r=require("react/jsx-runtime"),t=require("react").memo((function(t){var a=t.size||16,e=t.sortOrder||"ASC";return r.jsxs("div",{className:"relative",style:{width:"".concat(a,"px"),height:"".concat(a,"px")},children:[r.jsx("div",{className:"absolute top-1/2 right-0 w-[40%] h-[20%] duration-300 ".concat("ASC"===e?"-translate-y-[250%]":"translate-y-[150%]"," ").concat(t.isSortActive?"bg-gray-700":"bg-gray-200 border border-gray-500")}),r.jsx("div",{className:"absolute top-1/2 right-0 w-[70%] h-[20%] duration-300 -translate-y-1/2 ".concat(t.isSortActive?"bg-gray-700":"bg-gray-200 border border-gray-500")}),r.jsx("div",{className:"absolute top-1/2 right-0 w-full h-[20%] duration-300 ".concat("ASC"===e?"translate-y-[150%]":"-translate-y-[250%]"," ").concat(t.isSortActive?"bg-gray-700":"bg-gray-200 border border-gray-500")})]})}));exports.SortIcon=t;
2
- //# sourceMappingURL=sort-icon.js.map
2
+ //# sourceMappingURL=icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.js","sources":["../../../../../src/table/sort/icon.tsx"],"sourcesContent":["import { memo } from \"react\";\n\ntype TPropsSortIcon = {\n sortOrder?: \"ASC\" | \"DESC\";\n isSortActive?: boolean;\n size?: number;\n};\n\nconst SortIcon = memo(function SI(props: TPropsSortIcon) {\n const size = props.size || 16;\n const order = props.sortOrder || \"ASC\";\n\n return (\n <div\n className=\"relative\"\n style={{ width: `${size}px`, height: `${size}px` }}\n >\n <div\n className={`absolute top-1/2 right-0 w-[40%] h-[20%] duration-300 ${\n order === \"ASC\" ? \"-translate-y-[250%]\" : \"translate-y-[150%]\"\n } ${\n props.isSortActive\n ? \"bg-gray-700\"\n : \"bg-gray-200 border border-gray-500\"\n }`}\n ></div>\n <div\n className={`absolute top-1/2 right-0 w-[70%] h-[20%] duration-300 -translate-y-1/2 ${\n props.isSortActive\n ? \"bg-gray-700\"\n : \"bg-gray-200 border border-gray-500\"\n }`}\n ></div>\n <div\n className={`absolute top-1/2 right-0 w-full h-[20%] duration-300 ${\n order === \"ASC\" ? \"translate-y-[150%]\" : \"-translate-y-[250%]\"\n } ${\n props.isSortActive\n ? \"bg-gray-700\"\n : \"bg-gray-200 border border-gray-500\"\n }`}\n ></div>\n </div>\n );\n});\n\nexport { SortIcon };\n"],"names":["SortIcon","memo","props","size","order","sortOrder","_jsxs","className","style","width","height","children","_jsx","concat","isSortActive"],"mappings":"gDAQMA,mBAAeC,MAAC,SAAYC,GAChC,IAAMC,EAAOD,EAAMC,MAAQ,GACrBC,EAAQF,EAAMG,WAAa,MAEjC,OACEC,EAAAA,KACE,MAAA,CAAAC,UAAU,WACVC,MAAO,CAAEC,MAAO,UAAGN,EAAI,MAAMO,OAAQ,UAAGP,EAAI,OAAMQ,SAAA,CAElDC,EAAAA,WACEL,UAAW,gEACC,QAAVH,EAAkB,sBAAwB,qBAE1C,KAAAS,OAAAX,EAAMY,aACF,cACA,wCAGRF,EAAAA,IACE,MAAA,CAAAL,UAAW,2EAAAM,OACTX,EAAMY,aACF,cACA,wCAGRF,EAAAA,IACE,MAAA,CAAAL,UAAW,wDAAAM,OACC,QAAVT,EAAkB,qBAAuB,sBAAqB,MAAAS,OAE9DX,EAAMY,aACF,cACA,0CAKd"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ "use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("./hooks.js"),n=r.createContext({key:"",asc:!1,changeKey:function(){throw new Error("Function not implemented.")},changeOrder:function(){throw new Error("Function not implemented.")},sort:function(){throw new Error("Function not implemented.")}});exports.SortProvider=function(r){return e.jsx(n.Provider,{value:t.useSortReducer(r.initialCondition),children:r.children})},exports.useSortContext=function(){return r.useContext(n)};
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{__assign as e,__rest as r}from"../../node_modules/tslib/tslib.es6.js";import{jsx as t,jsxs as o}from"react/jsx-runtime";import{useTable as l}from"./hook.js";import{TableCell as n}from"./cell.js";import{Sort as i}from"./sort.js";import{TableHeaderElement as c}from"./header.js";import{Pagenation as a}from"./page.js";import{TableFilterProvider as d,TableFilterRemoveButton as s,TableFilter as m}from"./filter.js";import{useState as u}from"react";import{TableFilterForm as p}from"./filter-form.js";function f(r){return t(d,{children:t(h,e({},r))})}function h(d){var f=l(d),h=f.cols,v=f.rows,y=f.rowCount,b=f.sortKey,k=f.sortOrder,N=f.page,g=N.count,x=N.current,j=N.from,C=N.to,w=N.next,D=N.prev,O=N.jump,S=u(!1),z=S[0],A=S[1];return o("div",{className:"w-full",children:[t("div",{className:"flex justify-end",children:t(s,{children:"remove all filters"})}),t("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:[t("thead",{children:t("tr",{className:"sticky top-0 border-gray-200 z-20",children:h.map((function(e){return t(c,{label:e.label,sortConponent:"component"!==e.type?t(i,{onClick:e.onClick,isSortedByThis:b===e.key,sortOrder:k}):void 0,filterComponent:"component"!==e.type?t(m,{keyName:e.key,onClick:function(e){e.preventDefault(),A((function(e){return!e}))}}):void 0},e.key)}))})}),o("tbody",{children:[z&&t("tr",{children:t("td",{colSpan:h.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl py-5 px-2 z-20",children:t("div",{className:"container max-w-[768px] mx-auto",children:o("div",{className:"relative",children:[t("div",{className:"absolute top-0 right-0",children:t("button",{onClick:function(e){e.preventDefault(),A(!1)},children:"close"})}),t("div",{children:t(p,{cols:h})})]})})})}),0===v.length&&t("tr",{children:t("td",{colSpan:h.length,className:"py-5",children:t("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),v.map((function(o){var l;return t("tr",{className:"border border-gray-200 hover:bg-gray-100 ".concat((null===(l=v[0])||void 0===l?void 0:l.onClick)?"hover:cursor-pointer":""),onClick:o.onClick,"data-testid":o.id,children:h.map((function(l){var i=l.key,c=r(l,["key"]);return t(n,e({},c,{columnKey:null==l?void 0:l.key,currentRecord:o,children:o[null==l?void 0:l.key]}),i)}))},o.id)}))]})]})}),o("div",{className:"mt-1",children:[o("p",{className:"text-center text-sm text-gray-600",children:[j+1," - ",C<y?C:y," of ",y]}),t("div",{className:"mt-2",children:t(a,{count:g,current:x,jump:O,next:w,prev:D})})]})]})}export{f 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{useState as t,useEffect as n}from"react";import{useTable as l}from"./hook.js";import{TableCell as i}from"./cell.js";import{TableHeaderElement as d}from"./header.js";import{PagenationProvider as c}from"./pagenation/providers.js";import{DisplayRange as a,Pagenation as s}from"./pagenation/components.js";import{FilterProvider as m,useFilterContext as p}from"./filter/provider.js";import{TableFilterRemoveButton as u,TableFilter as f,TableFilterForm as h}from"./filter/components.js";import{SortButton as v}from"./sort/components.js";import{SortProvider as y}from"./sort/provider.js";import{ColumnsProvider as k,RowProvider as g,CellProvider as w}from"./sheet/providers.js";import{FocusProvider as b,useFocusContext as N}from"./edit/provider.js";function j(o){var t;return r(m,{children:r(y,{initialCondition:null===(t=o.initialCondition)||void 0===t?void 0:t.sort,children:r(c,{rowCount:o.rows.length,children:r(k,{cols:o.cols,children:r(b,{columnCount:o.cols.length,children:r(x,e({},o))})})})})})}function x(e){var c=l(e),m=c.cols,y=c.rows,k=N(),b=k.isFocus,j=k.isEditing,x=k.edit,C=k.moveLeft,D=k.moveRight,A=k.moveUp,E=k.moveDown,F=k.unfocus,L=k.setMaxRowNumber,K=p(),R=K.selectedFilterKey,S=K.setSelectedFilterKey;return t(!1)[0],n((function(){var e=function(e){b&&!j&&("Enter"===e.key?(e.preventDefault(),E()):"Escape"===e.key?(e.preventDefault(),F()):"ArrowRight"===e.key?(e.preventDefault(),D()):"ArrowLeft"===e.key?(e.preventDefault(),C()):"ArrowUp"===e.key?(e.preventDefault(),A()):"ArrowDown"===e.key?(e.preventDefault(),E()):"F2"===e.key?x():console.log(e.key))};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[j,b]),n((function(){L(y.length-1)}),[y.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:m.map((function(e){return r(d,{label:e.label,sortConponent:"component"!==e.type?r(v,{keyName:e.key}):void 0,filterComponent:"component"!==e.type?r(f,{keyName:e.key,onClick:function(r){r.preventDefault(),S(e.key)}}):void 0},e.key)}))})}),o("tbody",{children:[!!R&&r("tr",{children:r("td",{colSpan:m.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(h,{})})}),0===y.length&&r("tr",{children:r("td",{colSpan:m.length,className:"py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),y.map((function(e,o){var t;return r(g,{row:e,children:r("tr",{className:"border border-gray-200 hover:bg-gray-100 ".concat((null===(t=y[0])||void 0===t?void 0:t.onClick)?"hover:cursor-pointer":""),onClick:e.onClick,"data-testid":e.id,children:m.map((function(e,t){return r(w,{columnKey:e.key,rowIndex:o,colIndex:t,children:r(i,{})},e.key)}))})},e.id)}))]})]})}),o("div",{className:"mt-1",children:[r(a,{}),r("div",{className:"mt-2",children:r(s,{})})]})]})}export{j 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 o}from"./edit-icon.js";import{CancelIcon as i}from"./cancel-icon.js";import{useCellContext as a,useColumnContext as u,useRowContext 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(i,{size:16})})]})}));function p(){var e=a(),n=u(e.columnKey),r=c(),o=s().finishEditing,i=v(),f=i.ref,p=i.callbackAfterBlur,m=l(r[e.columnKey]),g=m[0],h=m[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,o),p()):o()},reset:function(){return h(r[e.columnKey])},endEditing:o})}function m(){var e=a(),n=u(e.columnKey),r=c(),o=s().finishEditing,i=v(),f=i.ref,p=i.callbackAfterBlur,m=l(e.value.toString()),g=m[0],h=m[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,o),p()):o()},reset:function(){return h(e.value.toString())},endEditing:o})}function g(){var n=a(),r=u(n.columnKey),o=c(),f=s().finishEditing,d=v(),p=d.ref,m=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:p,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,o,f),m()):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(i,{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(o,{size:12})})}));function y(){var n=f(),r=n.cell,l=n.isFocus,o=n.isEditing,i=n.onClickCellToFocus,a=n.onDoubleClickCellToEdit,u=n.preventPropagation;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&&o?"opacity-0":""),onClick:i,children:["component"===r.type?r.label:t("div",{onDoubleClick:a,children:t("p",{className:"text-left",children:r.label})}),r.editable&&t(h,{})]}),r.editable&&l&&o&&e("div",{className:"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2",onClick:u,children:["string"===r.type&&t(p,{}),"number"===r.type&&t(m,{}),"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":"iPAkBA,IAAMA,EAAYC,GAAW,SAC3BC,EAOAC,GAEA,OACEC,EAAK,MAAA,CAAAC,UAAU,iDAAgDC,SAAA,CAC7DC,WACEJ,IAAKA,EACLE,UAAU,mBACVG,KAAK,OACLC,MAAOP,EAAMO,MACbC,SAAUR,EAAMQ,SAChBC,OAAQT,EAAMS,OACdC,QAAS,SAACC,GACRA,EAAEC,iBACY,UAAVD,EAAEE,IACHF,EAAEG,OAA4BC,OACZ,WAAVJ,EAAEE,MACXb,EAAMgB,QACNhB,EAAMiB,aAEV,IAEFZ,EAAA,SAAA,CACEa,YAAa,SAACP,GACZA,EAAEC,iBACFZ,EAAMgB,QACNhB,EAAMiB,cACPb,SAEDC,EAACc,EAAW,CAAAC,KAAM,SAI1B,IAEA,SAASC,EAAsCrB,GAcvC,IAAAsB,EAAoBC,EACxBvB,EAAMwB,cAAcxB,EAAMyB,YADrBlB,OAAOmB,OA8Bd,OACErB,EAACP,EACC,CAAAG,IAAKD,EAAM2B,WACXpB,MAAOA,EACPC,SAAU,SAACG,GACTA,EAAEC,iBACFc,EAASf,EAAEG,OAAOP,MACpB,EACAE,OAAQ,SAACE,GACPA,EAAEC,iBAEEL,IAAUP,EAAMwB,cAAcxB,EAAMyB,YArC7B,qBACf,OAAuB,UAAnBzB,EAAM4B,mBAAa,IAAAN,OAAA,EAAAA,EAAAO,YACjBtB,EAAMuB,OAAS9B,EAAM4B,YAAYC,WACnCE,MACE,SAAAC,OAAShC,EAAM4B,YAAYC,UAAS,iBAAAG,OAAgBzB,EAAMuB,OAAM,SAE3D,IAGY,UAAnB9B,EAAM4B,mBAAa,IAAAK,OAAA,EAAAA,EAAAC,YACjB3B,EAAMuB,OAAS9B,EAAM4B,YAAYM,WACnCH,MACE,SAAAC,OAAShC,EAAM4B,YAAYM,UAAS,iBAAAF,OAAgBzB,EAAMuB,OAAM,SAE3D,MAGY,UAAnB9B,EAAM4B,mBAAa,IAAAO,OAAA,EAAAA,EAAAC,WAChB,IAAIC,OAAOrC,EAAM4B,YAAYQ,SAASE,KAAK/B,KAC9CwB,MAAM,2BAAoB/B,EAAM4B,YAAYQ,QAAU,MAC/C,GAIb,CAkBWG,GACHC,YAAW,WACT7B,EAAEG,OAAO2B,OACV,GAAE,MAILzC,EAAM0C,WACJ1C,EAAMyB,UACNlB,EACAP,EAAMwB,cACNxB,EAAM2C,aAGR3C,EAAM4C,yBAlBJ5C,EAAM2C,aAmBT,EACD3B,MAAO,WAAM,OAAAU,EAAS1B,EAAMwB,cAAcxB,EAAMyB,WAAnC,EACbR,WAAYjB,EAAM2C,aAGxB,CAEA,SAASE,EAAsC7C,GAcvC,IAAAsB,EAAoBC,EACvBvB,EAAMwB,cAAcxB,EAAMyB,WAAsBqB,YAD5CvC,EAAKe,EAAA,GAAEI,EAAQJ,EAAA,GA4BtB,OACEjB,EAACP,EACC,CAAAG,IAAKD,EAAM2B,WACXpB,MAAOA,EACPC,SAAU,SAACG,GACTA,EAAEC,iBAEqB,KAAnBD,EAAEG,OAAOP,MAKU,MAAnBI,EAAEG,OAAOP,OAAoC,OAAnBI,EAAEG,OAAOP,MAKnCI,EAAEG,OAAOP,MAAMwC,MAAM,gBACvBrB,EAASf,EAAEG,OAAOP,OAIhByC,MAAMC,OAAOtC,EAAEG,OAAOP,SAI1BmB,EAASuB,OAAOtC,EAAEG,OAAOP,OAAOuC,YAb9BpB,EAAS,MALTA,EAAS,IAmBb,EACAjB,OAAQ,SAACE,GACPA,EAAEC,iBAEEqC,OAAO1C,KAAWP,EAAMwB,cAAcxB,EAAMyB,YAvDrC,mBACTyB,EAAIC,SAAS5C,GAEnB,OAAuB,UAAnBP,EAAM4B,mBAAa,IAAAN,OAAA,EAAAA,EAAA8B,MACjBF,EAAIlD,EAAM4B,YAAYwB,KACxBrB,MACE,OAAOC,OAAAhC,EAAM4B,YAAYwB,IAAqB,mBAAApB,OAAAkB,EAAI,OAE7C,MAIY,UAAnBlD,EAAM4B,mBAAa,IAAAK,OAAA,EAAAA,EAAAoB,MACjBH,EAAIlD,EAAM4B,YAAYyB,MACxBtB,MACE,OAAOC,OAAAhC,EAAM4B,YAAYyB,IAAqB,mBAAArB,OAAAkB,EAAI,MAE7C,GAKb,CAsCWX,GACHC,YAAW,WACT7B,EAAEG,OAAO2B,OACV,GAAE,MAILzC,EAAM0C,WACJ1C,EAAMyB,UACNwB,OAAO1C,GACPP,EAAMwB,cACNxB,EAAM2C,aAGR3C,EAAM4C,yBAlBJ5C,EAAM2C,aAmBT,EACD3B,MAAO,WACL,OAAAU,EAAU1B,EAAMwB,cAAcxB,EAAMyB,WAAsBqB,WAAW,EAEvE7B,WAAYjB,EAAM2C,aAGxB,CAEA,SAASW,EAAsCtD,GAevC,IAAAsB,EAAoBC,EACxBvB,EAAMwB,cAAcxB,EAAMyB,YADrBlB,OAAOmB,OAId,OACExB,EAAK,MAAA,CAAAC,UAAU,2DACbD,EACE,SAAA,CAAAD,IAAKD,EAAM2B,WACXxB,UAAU,mBACVI,MAAOA,EACPC,SAAU,SAACG,GACTA,EAAEC,iBACFc,EAASf,EAAEG,OAAOP,MACpB,EACAE,OAAQ,SAACE,GACPA,EAAEC,iBAEFZ,EAAM0C,WACJ1C,EAAMyB,UACNlB,EACAP,EAAMwB,cACNxB,EAAM2C,aAGR3C,EAAM4C,uBACR,EACAW,UAAW,SAAC5C,GACI,UAAVA,EAAEE,KACJF,EAAEC,gBAEN,EACAF,QAAS,SAACC,GACRA,EAAEC,iBACY,UAAVD,EAAEE,IACHF,EAAEG,OAA6BC,OACb,WAAVJ,EAAEE,MACXa,EAAS1B,EAAMwB,cAAcxB,EAAMyB,YACnCzB,EAAM2C,gBAETvC,SAAA,CAEAJ,EAAMwD,YACLnD,EAAA,SAAA,CAA0CE,MAAM,YACL,IAAxCP,EAAMwB,cAAcxB,EAAMyB,WACvB,YACA,cAHM,+BAMbzB,EAAMyD,QAAQC,KAAI,SAACC,GAAW,OAC7BtD,YAA2BE,MAAOoD,EAAOpD,eACtCoD,EAAOC,OADGD,EAAOpD,MAGrB,OAEHF,YACEa,YAAa,SAACP,GACZA,EAAEC,iBACFc,EAAS1B,EAAMwB,cAAcxB,EAAMyB,YACnCzB,EAAM2C,eACPvC,SAEDC,EAACc,EAAW,CAAAC,KAAM,SAI1B,KAsHayC,EAAYC,GApHzB,SAA0C9D,SAClCiC,EAA4BV,GAAS,GAApCwC,EAAS9B,EAAA,GAAE+B,EAAY/B,EAAA,GACxBhC,EAAMgE,EAAoB,MAC1B9B,EAA8CZ,GAAS,GAAtD2C,EAAkB/B,EAAA,GAAES,EAAqBT,EAAA,GAE1CQ,EAAcwB,GAAY,WAC9BH,GAAa,EACf,GAAG,CAACA,IASJ,OAPAI,GAAU,iBACJL,IACW,QAAbzC,EAAArB,EAAIoE,eAAS,IAAA/C,GAAAA,EAAAmB,SAEfG,GAAsB,EACxB,GAAG,CAACmB,EAAWG,IAGb7D,EACE,KAAA,CAAAD,SAAAF,EAAA,MAAA,CAAKC,UAAU,WACbC,SAAA,CAAAF,EAAA,MAAA,CACEC,UAAW,oDACT6B,OAAA+B,EAAY,YAAc,IAE5BO,QAAS,SAAC3D,GACRA,EAAEC,iBACFD,EAAE4D,iBACH,EAAAnE,SAAA,CAEe,cAAfJ,EAAMM,KACLN,EAAc,SAEdK,EACE,MAAA,CAAAmE,cAAe,SAAC7D,GACdA,EAAEC,iBACEZ,EAAMyE,UACRT,GAAa,IAEhB5D,SAEDC,EAAG,IAAA,CAAAF,UAAU,qBACK,WAAfH,EAAMM,KACoD,UAAvDN,EAAMyD,QAAQiB,MAAK,SAACC,GAAO,OAAAA,EAAGpE,QAAUP,EAAMI,QAAnB,WAA4B,IAAAkB,OAAA,EAAAA,EACnDsC,MACJ5D,EAAMI,aAKfJ,EAAMyE,UACLpE,YACEF,UAAU,+DACVmE,QAAS,SAAC3D,GACRA,EAAEC,iBACEZ,EAAMyE,UACRT,GAAa,IAEhB5D,SAEDC,EAACuE,EAAS,CAAAxD,KAAM,UAIrBpB,EAAMyE,UAAYV,GACjB7D,EACE,MAAA,CAAAC,UAAU,wEACVmE,QAAS,SAAC3D,GACRA,EAAEC,iBACFD,EAAE4D,iBACH,EAAAnE,SAAA,CAEe,WAAfJ,EAAMM,MACLD,EAACgB,GACCM,WAAY1B,EACZwB,UAAWzB,EAAMyB,UACjBD,cAAexB,EAAMwB,cACrBmB,YAAaA,EACbD,WAAY1C,EAAM0C,WAClBd,YAAa5B,EAAM4B,YACnBgB,sBAAuB,WACrBA,GAAsB,EACvB,IAGW,WAAf5C,EAAMM,MACLD,EAACwC,EAAe,CACdlB,WAAY1B,EACZwB,UAAWzB,EAAMyB,UACjBD,cAAexB,EAAMwB,cACrBmB,YAAaA,EACbD,WAAY1C,EAAM0C,WAClBd,YAAa5B,EAAM4B,YACnBgB,sBAAuB,WACrBA,GAAsB,EACvB,IAGW,WAAf5C,EAAMM,MACLD,EAACiD,GACC3B,WAAY1B,EACZwB,UAAWzB,EAAMyB,UACjBD,cAAexB,EAAMwB,cACrBmB,YAAaA,EACbc,QAASzD,EAAMyD,QACfD,WAAYxD,EAAMwD,WAClBd,WAAY1C,EAAM0C,WAClBE,sBAAuB,WACrBA,GAAsB,EACxB,WAQhB"}
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