@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/edit/hooks.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TFocusReducer, TReturnFocusReducer } from \"./types\";\n\nconst reducer: TFocusReducer = (state, action) => {\n switch (action.type) {\n case \"focus\":\n if (\n state.isFocus &&\n state.rowNumber === action.payload.rowNumber &&\n state.colNumber === action.payload.colNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n isFocus: true,\n isEditing: false,\n rowNumber: action.payload.rowNumber,\n colNumber: action.payload.colNumber,\n };\n\n case \"edit\":\n if (!state.isFocus || state.isEditing) return state;\n\n return {\n ...state,\n isEditing: true,\n };\n\n case \"focusAndEdit\":\n if (\n state.isFocus &&\n state.isEditing &&\n state.rowNumber === action.payload.rowNumber &&\n state.colNumber === action.payload.colNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n isFocus: true,\n isEditing: true,\n rowNumber: action.payload.rowNumber,\n colNumber: action.payload.colNumber,\n };\n\n case \"move\":\n if (\n !state.isFocus ||\n (state.rowNumber === action.payload.rowNumber &&\n state.colNumber === action.payload.colNumber)\n ) {\n return state;\n }\n\n return {\n ...state,\n isEditing: false,\n rowNumber: action.payload.rowNumber,\n colNumber: action.payload.colNumber,\n };\n\n case \"moveLeft\": {\n if (!state.isFocus) return state;\n\n const newColNumber = state.colNumber - 1;\n\n if (newColNumber < 0) return state;\n\n return {\n ...state,\n isEditing: false,\n colNumber: state.colNumber - 1,\n };\n }\n\n case \"moveRight\": {\n if (!state.isFocus) return state;\n\n const newColNumber = state.colNumber + 1;\n\n if (newColNumber > state.maxColNumber) return state;\n\n return {\n ...state,\n isEditing: false,\n colNumber: state.colNumber + 1,\n };\n }\n\n case \"moveUp\": {\n if (!state.isFocus) return state;\n\n const newRowNumber = state.rowNumber - 1;\n\n if (newRowNumber < 0) return state;\n\n return {\n ...state,\n isEditing: false,\n rowNumber: state.rowNumber - 1,\n };\n }\n\n case \"moveDown\": {\n if (!state.isFocus) return state;\n\n const newRowNumber = state.rowNumber + 1;\n\n if (newRowNumber > state.maxRowNumber) return state;\n\n return {\n ...state,\n isEditing: false,\n rowNumber: state.rowNumber + 1,\n };\n }\n\n case \"unfocus\":\n if (!state.isFocus) return state;\n\n return {\n maxColNumber: state.maxColNumber,\n maxRowNumber: state.maxRowNumber,\n isFocus: false,\n };\n\n case \"finishEditing\":\n if (!state.isFocus || !state.isEditing) return state;\n\n return {\n ...state,\n isEditing: false,\n };\n\n case \"setMaxRowNumber\":\n if (state.maxRowNumber === action.payload.maxRowNumber) return state;\n\n return {\n ...state,\n maxRowNumber: action.payload.maxRowNumber,\n };\n\n case \"setMaxColNumber\":\n if (state.maxColNumber === action.payload.maxColNumber) return state;\n\n return {\n ...state,\n maxColNumber: action.payload.maxColNumber,\n };\n }\n};\n\nexport function useFocusReducer(\n maxRowNumber: number,\n maxColNumber: number\n): TReturnFocusReducer {\n const [state, dispatch] = useReducer(reducer, {\n maxRowNumber,\n maxColNumber,\n isFocus: false,\n });\n\n const checkFocus = useCallback(\n (rowNumber: number, colNumber: number) =>\n state.isFocus &&\n state.rowNumber === rowNumber &&\n state.colNumber === colNumber,\n [state]\n );\n\n const focus = useCallback(\n (rowNumber: number, colNumber: number) => {\n dispatch({ type: \"focus\", payload: { rowNumber, colNumber } });\n },\n [dispatch]\n );\n\n const edit = useCallback(() => {\n dispatch({ type: \"edit\" });\n }, [dispatch]);\n\n const focusAndEdit = useCallback(\n (rowNumber: number, colNumber: number) => {\n dispatch({ type: \"focusAndEdit\", payload: { rowNumber, colNumber } });\n },\n [dispatch]\n );\n\n const move = useCallback(\n (rowNumber: number, colNumber: number) => {\n dispatch({ type: \"move\", payload: { rowNumber, colNumber } });\n },\n [dispatch]\n );\n\n const moveLeft = useCallback(() => {\n dispatch({ type: \"moveLeft\" });\n }, [dispatch]);\n\n const moveRight = useCallback(() => {\n dispatch({ type: \"moveRight\" });\n }, [dispatch]);\n\n const moveUp = useCallback(() => {\n dispatch({ type: \"moveUp\" });\n }, [dispatch]);\n\n const moveDown = useCallback(() => {\n dispatch({ type: \"moveDown\" });\n }, [dispatch]);\n\n const unfocus = useCallback(() => {\n dispatch({ type: \"unfocus\" });\n }, [dispatch]);\n\n const finishEditing = useCallback(() => {\n dispatch({ type: \"finishEditing\" });\n }, [dispatch]);\n\n const setMaxRowNumber = useCallback(\n (maxRowNumber: number) => {\n dispatch({ type: \"setMaxRowNumber\", payload: { maxRowNumber } });\n },\n [dispatch]\n );\n\n const setMaxColNumber = useCallback(\n (maxColNumber: number) => {\n dispatch({ type: \"setMaxColNumber\", payload: { maxColNumber } });\n },\n [dispatch]\n );\n\n return {\n isFocus: state.isFocus,\n isEditing: state.isFocus && state.isEditing,\n checkFocus,\n focus,\n edit,\n focusAndEdit,\n move,\n moveLeft,\n moveRight,\n moveUp,\n moveDown,\n unfocus,\n finishEditing,\n setMaxRowNumber,\n setMaxColNumber,\n };\n}\n"],"names":["reducer","state","action","type","isFocus","rowNumber","payload","colNumber","__assign","isEditing","maxColNumber","maxRowNumber","useFocusReducer","_a","useReducer","dispatch","checkFocus","useCallback","focus","edit","focusAndEdit","move","moveLeft","moveRight","moveUp","moveDown","unfocus","finishEditing","setMaxRowNumber","setMaxColNumber"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as n}from"react/jsx-runtime";import{createContext as o,useContext as t}from"react";import{useFocusReducer as r}from"./hooks.js";import{usePageContext as e}from"../pagenation/providers.js";var i=o({isEditing:!1,isFocus:!1,checkFocus:function(){throw new Error("Function not implemented.")},focus:function(){throw new Error("Function not implemented.")},edit:function(){throw new Error("Function not implemented.")},move:function(){throw new Error("Function not implemented.")},moveLeft:function(){throw new Error("Function not implemented.")},moveRight:function(){throw new Error("Function not implemented.")},moveUp:function(){throw new Error("Function not implemented.")},moveDown:function(){throw new Error("Function not implemented.")},unfocus:function(){throw new Error("Function not implemented.")},setMaxRowNumber:function(){throw new Error("Function not implemented.")},setMaxColNumber:function(){throw new Error("Function not implemented.")},focusAndEdit:function(){throw new Error("Function not implemented.")},finishEditing:function(){throw new Error("Function not implemented.")}});function m(o){var t=e(),m=t.from,u=t.to,c=t.rowCount;return n(i.Provider,{value:r(u<c?u-m-1:c-m-1,o.columnCount-1),children:o.children})}function u(){return t(i)}export{m as FocusProvider,u as useFocusContext};
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{FIlterIcon as l}from"./filter-icon.js";import{useFilterContext as n}from"./provider.js";import{useState as r,useEffect as i,useCallback as a}from"react";import{CancelIcon as o}from"../cancel-icon.js";import{FILTER_OPERATOR as c,STRING_FILTER_OPERATOR as u,NUMBER_FILTER_OPERATOR as s,SELECT_FILTER_OPERATOR as d}from"./constants.js";import{useColumnsContext as f,useColumnContext as p}from"../sheet/providers.js";function v(t){var r=n().filterConditions;return e("div",{className:"relative cursor-pointer",onClick:t.onClick,children:e(l,{isFilterActive:r.filter((function(e){return e.key===t.keyName})).length>0})})}function m(t){var l=t.children,r=n(),i=r.clearFilter;if(0!==r.filterConditions.length)return e("button",{onClick:function(e){e.preventDefault(),i()},children:l})}function h(t){var l=t.children,r=n(),i=r.removeFilter,a=r.filterConditions,o=r.selectedFilterKey;if(0!==a.filter((function(e){return e.key===o})).length){return e("button",{onClick:function(e){e.preventDefault(),a.filter((function(e){return e.key===o})).forEach((function(e){i(e.id)}))},children:l})}}function y(l){var r=l.value,i=l.onChange,a=n().selectedFilterKey,o=p(a);return t("select",{value:r,onChange:i,className:"px-2 py-1 rounded-md",children:[e("option",{value:"",children:a?"-- 条件を選択 --":"-- 列を選択してください --"}),"string"===o.type&&u.map((function(t){return e("option",{value:t.key,children:t.label},t.key)})),"number"===o.type&&s.map((function(t){return e("option",{value:t.key,children:t.label},t.key)})),"select"===o.type&&d.map((function(t){return e("option",{value:t.key,children:t.label},t.key)}))]})}function g(l){return t("select",{className:"w-full px-2 py-1 rounded-md min-w-32",value:l.value,onChange:function(e){e.preventDefault(),l.setValue(e.target.value)},children:[e("option",{value:"",children:"-- 未選択 --"}),l.options.map((function(t){return e("option",{value:t.value,children:t.label},t.value)}))]})}function x(t){return e("input",{className:"w-full px-2 py-1 rounded-md min-w-32",type:"text",value:t.value,onChange:function(e){e.preventDefault(),t.setValue(e.target.value)},placeholder:"-- 値を入力 --"})}function b(t){var l=n(),r=l.selectedFilterKey,i=l.addFilter,a=p(r);return e("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"===a.type||t.value)?i("string"===a.type?{key:r,operator:t.selectingOperator,value:[t.value]}:"select"===a.type?{key:r,operator:t.selectingOperator,value:t.value,label:null===(l=a.options.find((function(e){return e.value===t.value})))||void 0===l?void 0:l.label}:{key:r,operator:t.selectingOperator,value:Number(t.value)}):alert("全ての項目を入力してください")},children:"追加"})}function k(){var l=f(),u=n(),s=u.removeFilter,d=u.filterConditions,v=u.selectedFilterKey,m=u.setSelectedFilterKey,k=r(""),N=k[0],w=k[1],C=r(""),F=C[0],D=C[1],j=p(v);i((function(){D(""),w("")}),[v]);var K=a((function(e){e.preventDefault,w(e.target.value)}),[]);return t("div",{className:"flex w-full max-h-[50vh] bg-gray-200",children:[e("ul",{className:"flex flex-col items-end min-w-16 md:w-[20%] max-h-full overflow-y-auto no_scrollbar bg-white",children:l.filter((function(e){return!!e.label&&"component"!==e.type})).map((function(l){return t("li",{className:"relative pl-2 pr-8 md:px-8 py-3 w-full cursor-pointer border-y border-gray-300 ".concat(v===l.key?"bg-gray-200":"hover:bg-gray-100"),onClick:function(e){e.preventDefault(),m(l.key)},children:[e("p",{className:"text-right text-nowrap",children:l.label}),d.filter((function(e){return e.key===l.key})).length>0&&e("div",{className:"absolute top-1/2 right-1",children:e("div",{className:"-translate-y-1/2 rounded-full border border-gray-400 bg-gray-100 aspect-square w-5",children:e("p",{className:"text-xs text-center",children:d.filter((function(e){return e.key===l.key})).length})})})]},l.key)}))}),t("div",{className:"relative flex flex-col gap-4 ml-4 mr-4 md:ml-16 md:mr-auto py-5",children:[e("div",{className:"absolute top-5 right-0",children:e("button",{onClick:function(e){e.preventDefault(),m(null)},children:"閉じる"})}),e("p",{className:"font-bold text-xl",children:"フィルタリング条件"}),t("div",{className:"flex items-center gap-3 max-w-6xl",children:[t("p",{className:"text-gray-600 text-lg text-nowrap",children:["「",e("strong",{children:j.label}),"」 は"]}),e(y,{value:N,onChange:K}),"select"===j.type?e(g,{value:F,options:j.options,setValue:D}):e(x,{value:F,setValue:D}),e(b,{value:F,selectingOperator:N})]}),e("ul",{className:"flex flex-col gap-1 my-5 max-h-32 overflow-auto",children:d.filter((function(e){return e.key===v})).map((function(n){var r,i;return t("li",{className:"flex justify-between mr-5",children:[t("p",{children:["「",e("strong",{children:null===(r=l.find((function(e){return e.key===n.key})))||void 0===r?void 0:r.label}),"」 は",e("span",{children:null===(i=c.find((function(e){return e.key===n.operator})))||void 0===i?void 0:i.label}),":",e("span",{children:n.label?n.label:n.value})]}),e("button",{onClick:function(e){e.preventDefault(),s(n.id)},children:e(o,{size:16})})]},n.id)}))}),e("div",{className:"flex justify-center",children:e(h,{children:t("p",{className:"text-xs text-gray-600 underline hover:text-gray-800",children:["「",j.label,"」のフィルタを全て解除"]})})})]})]})}export{v as TableFilter,k as TableFilterForm,m as TableFilterRemoveButton,h as TableSpecifyKeyFilterRemoveButton};
3
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ import{__spreadArray as e}from"../../../node_modules/tslib/tslib.es6.js";var l=[{key:"includeText",label:"次の値を含む"}],t=[{key:"eq",label:"次の値と等しい"},{key:"ne",label:"次の値と等しくない"},{key:"gt",label:"次の値より大きい"},{key:"lt",label:"次の値より小さい"},{key:"gte",label:"次の値以上"},{key:"lte",label:"次の値以下"}],b=[{key:"selected",label:"次の値と等しい"},{key:"notSelected",label:"次の値と等しくない"}],a=e(e(e([],l,!0),t,!0),b,!0);export{a as FILTER_OPERATOR,t as NUMBER_FILTER_OPERATOR,b as SELECT_FILTER_OPERATOR,l as STRING_FILTER_OPERATOR};
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":"yEAAa,IAAAA,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,EAAAA,EAAA,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":["FIlterIcon","props","size","_a","_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":"kDAKM,SAAUA,EAAWC,SACnBC,EAAiB,QAAVC,EAAAF,EAAMC,YAAI,IAAAC,EAAAA,EAAI,GAC3B,OACEC,EAAA,MAAA,CACEC,UAAW,gBACTC,OAAAL,EAAMM,eAAiB,gBAAkB,iBACzCC,SAEFC,EACE,MAAA,CAAAC,MAAM,6BACNC,WAAW,+BACXC,QAAQ,MACRC,MAAO,GAAGP,OAAAJ,EAAQ,MAClBY,OAAQ,GAAGR,OAAAJ,EAAQ,MACnBa,QAAQ,cACRC,SAAS,WAAUR,SAAA,CAEnBJ,EAAa,OAAA,IACZH,EAAMM,eACLH,EAAA,IAAA,CACEa,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,OACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,oEAEVnB,SAAAJ,EAAA,OAAA,CACEwB,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,YAIlBjB,EAAA,IAAA,CACEa,MAAO,CACLC,OAAQ,OACRC,YAAa,EACbC,gBAAiB,OACjBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,GAClBC,KAAM,OACNC,SAAU,UACVC,QAAS,GAEXC,UAAU,oEAEVnB,SAAAJ,EAAA,OAAA,CACEwB,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
+ import{__spreadArray as e,__assign as r}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as t,useCallback as n}from"react";var i=function(t,n){switch(n.type){case"add":return{filters:e(e([],t.filters,!0),[r({id:(new Date).getTime()},n.payload.filter)],!1)};case"remove":return{filters:t.filters.filter((function(e){return e.id!==n.payload.id}))};case"clear":return{filters:[]}}};function u(){var e=t(i,{filters:[]}),r=e[0],u=e[1],l=n((function(e){return u({type:"add",payload:{filter:e}})}),[u]);return{addFilter:l,removeFilter:n((function(e){return u({type:"remove",payload:{id:e}})}),[u]),clearFilter:n((function(){return u({type:"clear"})}),[u]),filter:n((function(e){return r.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)}),[r]),filterConditions:r.filters}}export{u as useFilterReducer};
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","useFilterReducer","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","key","some","v","includes","filterConditions"],"mappings":"2IAIA,IAAMA,EAA0B,SAACC,EAAOC,GACtC,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,QAAOC,EAAAA,EAAA,GACFJ,EAAMG,SAAO,GAAA,CACdE,EAAA,CAAAC,IAAI,IAAIC,MAAOC,WAAcP,EAAOQ,QAAQC,UAC/C,IAEL,IAAK,SACH,MAAO,CACLP,QAASH,EAAMG,QAAQO,QAAO,SAACC,GAAM,OAAAA,EAAEL,KAAOL,EAAOQ,QAAQH,EAAxB,KAEzC,IAAK,QACH,MAAO,CAAEH,QAAS,IAExB,WAEgBS,IACR,IAAAC,EAAoBC,EAAWf,EAAS,CAAEI,QAAS,KAAlDH,OAAOe,OAERC,EAAYC,GAChB,SAACP,GAAoB,OAAAK,EAAS,CAAEb,KAAM,MAAOO,QAAS,CAAEC,OAAMA,OAC9D,CAACK,IA6CH,MAAO,CACLC,UAASA,EACTE,aA7CmBD,GACnB,SAACX,GAAe,OAAAS,EAAS,CAAEb,KAAM,SAAUO,QAAS,CAAEH,GAAEA,OACxD,CAACS,IA4CDI,YA1CkBF,GAClB,WAAM,OAAAF,EAAS,CAAEb,KAAM,SAAjB,GACN,CAACa,IAyCDL,OAtCaO,GACb,SAACG,GACC,OAAOpB,EAAMG,QAAQkB,QAAO,SAACC,EAAKZ,GAChC,OAAQA,EAAOa,UACb,IAAK,cACH,OAAOD,EAAIZ,QAAO,SAACc,GACjB,IAAMC,EAAQD,EAAId,EAAOgB,KACzB,MAAqB,iBAAVD,GACFf,EAAOe,MAAME,MAAK,SAACC,GAAM,OAAAH,EAAMI,SAASD,EAAE,GAGrD,IACF,IAAK,KAYL,IAAK,WACH,OAAON,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,OAAShB,EAAOe,KAAK,IAX7D,IAAK,KAYL,IAAK,cACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,OAAShB,EAAOe,KAAK,IAX7D,IAAK,KACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,KAAOhB,EAAOe,KAAK,IAC3D,IAAK,KACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,KAAOhB,EAAOe,KAAK,IAC3D,IAAK,MACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,MAAQhB,EAAOe,KAAK,IAC5D,IAAK,MACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOgB,MAAQhB,EAAOe,KAAK,IAM/D,GAAEL,EACL,GACA,CAACpB,IAQD8B,iBAAkB9B,EAAMG,QAE5B"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r}from"react/jsx-runtime";import{createContext as t,useState as i,useContext as l}from"react";import{useFilterReducer as n}from"./hooks.js";var o=t({addFilter:function(){},removeFilter:function(){},clearFilter:function(){},filter:function(){return[]},filterConditions:[]}),c=t({selectedFilterKey:null,setSelectedFilterKey:function(){}});function u(e){var t=e.children,l=i(null),u=l[0],d=l[1];return r(c.Provider,{value:{selectedFilterKey:u,setSelectedFilterKey:d},children:r(o.Provider,{value:n(),children:t})})}function d(){return e(e({},l(o)),l(c))}export{u as FilterProvider,d as useFilterContext};
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,2 +1,2 @@
1
- import{__spreadArray as r,__assign as e}from"../../node_modules/tslib/tslib.es6.js";import{useState as o,useMemo as t,useEffect as n}from"react";import{usePageReducer as i}from"./page.js";import{useTableFilterContext as u}from"./filter.js";function l(l){var c=o({key:"id",order:"ASC"}),s=c[0],f=c[1],d=u(),m=d.filter,a=d.addFilter,p=d.removeFilter,k=d.clearFilter,y=d.filterConditions,C=i({perPage:50,currentPage:1,rowCount:l.rows.length}),g=C.currentPage,v=C.pageCount,w=C.from,S=C.to,A=C.next,j=C.prev,h=C.jump,x=C.setRowCount,F=l.cols,P=t((function(){return m(l.rows)}),[m,l.rows]);n((function(){x(P.length)}),[P.length]);var b=t((function(){return r([],P,!0).sort((function(r,e){return r[s.key]<e[s.key]?"ASC"===s.order?-1:1:r[s.key]>e[s.key]?"ASC"===s.order?1:-1:0}))}),[P,s.key,s.order]),D=t((function(){return b.slice(w,S)}),[w,S,b]);return{cols:F.map((function(r){return e(e({},r),{onClick:function(e){e.preventDefault(),s.key===r.key?f({key:r.key,order:"ASC"===s.order?"DESC":"ASC"}):f({key:r.key,order:"ASC"})}})})),rows:D,rowCount:P.length,sortKey:s.key,sortOrder:s.order,page:{from:w,to:S,count:v,current:g,next:A,prev:j,jump:h},filter:{add:a,remove:p,clear:k,conditions:y}}}export{l as useTable};
1
+ import{useMemo as o,useEffect as r,useCallback as t,useRef as n,useState as e}from"react";import{usePageContext as i}from"./pagenation/providers.js";import"react/jsx-runtime";import{useFilterContext as c}from"./filter/provider.js";import"./filter/constants.js";import{useCellContext as l}from"./sheet/providers.js";import"./sort/icon.js";import{useSortContext as s}from"./sort/provider.js";import{useFocusContext as u}from"./edit/provider.js";function f(t){var n=c().filter,e=s().sort,l=i(),u=l.setRowCount,f=l.pageFilter,d=o((function(){return n(t.rows)}),[n,t.rows]);r((function(){u(d.length)}),[d.length]);var a=o((function(){return e(d)}),[d,e]),p=o((function(){return f(a)}),[f,a]);return{cols:t.cols,rows:p}}function d(){var o=n(null),i=l(),c=i.rowIndex,s=i.colIndex,f=u(),d=f.isEditing,a=f.checkFocus,p=e(!1),v=p[0],m=p[1],x=a(c,s);r((function(){var r;x&&d&&(null===(r=o.current)||void 0===r||r.focus()),m(!1)}),[x,d,v]);var I=t((function(){m(!0)}),[]);return{ref:o,callbackAfterBlur:I}}function a(){var o=l(),n=u(),e=n.isEditing,i=n.checkFocus,c=n.focus,s=n.focusAndEdit,f=n.finishEditing,d=i(o.rowIndex,o.colIndex);r((function(){!o.editable&&d&&e&&f()}),[o.editable,d,e,f]);var a=t((function(r){r.preventDefault(),r.stopPropagation(),c(o.rowIndex,o.colIndex)}),[c,o.rowIndex,o.colIndex]),p=t((function(r){r.preventDefault(),o.editable&&s(o.rowIndex,o.colIndex)}),[o.editable,s,o.rowIndex,o.colIndex]),v=t((function(o){o.preventDefault(),o.stopPropagation()}),[]);return{cell:o,isFocus:d,isEditing:e,onClickCellToFocus:a,onDoubleClickCellToEdit:p,preventPropagation:v}}export{a as useCell,d as useCellFocus,f as useTable};
2
2
  //# sourceMappingURL=hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo, 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":["useTable","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":"gPAUM,SAAUA,EAA+BC,GACvC,IAAAC,EAAmBC,EAAgB,CAAEC,IAAK,KAAMC,MAAO,QAAtDD,OAAKE,OACNC,EACJC,IADMC,EAAMF,EAAAE,OAAEC,EAASH,EAAAG,UAAEC,iBAAcC,gBAAaC,qBAEhDC,EACJC,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,GAAQ,WAAM,OAAArB,EAAOR,EAAMkB,KAAK,GAAE,CAACV,EAAQR,EAAMkB,OAEtEY,GAAU,WACRJ,EAAYE,EAAaT,OAC3B,GAAG,CAACS,EAAaT,SAEjB,IAAMY,EAAaF,GACjB,WACE,OAAAG,EAAA,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,GAChB,WAAM,OAAAE,EAAWM,MAAMhB,EAAMC,EAAG,GAChC,CAACD,EAAMC,EAAIS,IAkBb,MAAO,CACLJ,KAhBmBA,EAAKW,KAAI,SAACC,GAAQ,cAClCA,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":["useTable","props","filter","useFilterContext","sort","useSortContext","_a","usePageContext","setRowCount","pageFilter","filteredRows","useMemo","rows","useEffect","length","sortedRows","pageRows","cols","useCellFocus","ref","useRef","useCellContext","rowIndex","colIndex","_b","useFocusContext","isEditing","checkFocus","_c","useState","occurredOnCellBlur","setOccurredOnCellBlur","isFocus","current","focus","callbackAfterBlur","useCallback","useCell","cell","focusAndEdit","finishEditing","editable","onClickCellToFocus","e","preventDefault","stopPropagation","onDoubleClickCellToEdit","preventPropagation"],"mappings":"2bAQM,SAAUA,EAASC,GACf,IAAAC,EAAWC,WACXC,EAASC,SACXC,EAA8BC,IAA5BC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WAEzBC,EAAeC,GAAQ,WAAM,OAAAT,EAAOD,EAAMW,KAAK,GAAE,CAACV,EAAQD,EAAMW,OAEtEC,GAAU,WACRL,EAAYE,EAAaI,OAC3B,GAAG,CAACJ,EAAaI,SAEjB,IAAMC,EAAaJ,GAAQ,WAAM,OAAAP,EAAKM,KAAe,CAACA,EAAcN,IAE9DY,EAAWL,GACf,WAAM,OAAAF,EAAWM,KACjB,CAACN,EAAYM,IAGf,MAAO,CACLE,KAAMhB,EAAMgB,KACZL,KAAMI,EAEV,UAEgBE,IACd,IAAMC,EAAMC,EAAU,MAChBd,EAAyBe,IAAvBC,EAAQhB,EAAAgB,SAAEC,EAAQjB,EAAAiB,SACpBC,EAA4BC,IAA1BC,EAASF,EAAAE,UAAEC,EAAUH,EAAAG,WACvBC,EAA8CC,GAAS,GAAtDC,EAAkBF,EAAA,GAAEG,EAAqBH,EAAA,GAE1CI,EAAUL,EAAWL,EAAUC,GAErCV,GAAU,iBACJmB,GAAWN,IACA,QAAbpB,EAAAa,EAAIc,eAAS,IAAA3B,GAAAA,EAAA4B,SAEfH,GAAsB,EACvB,GAAE,CAACC,EAASN,EAAWI,IAExB,IAAMK,EAAoBC,GAAY,WACpCL,GAAsB,EACvB,GAAE,IAEH,MAAO,CAAEZ,IAAGA,EAAEgB,kBAAiBA,EACjC,UAEgBE,IACd,IAAMC,EAAOjB,IACPf,EACJmB,IADMC,EAASpB,EAAAoB,UAAEC,EAAUrB,EAAAqB,WAAEO,UAAOK,iBAAcC,kBAG9CR,EAAUL,EAAWW,EAAKhB,SAAUgB,EAAKf,UAE/CV,GAAU,YACHyB,EAAKG,UAAYT,GAAWN,GAC/Bc,GAEJ,GAAG,CAACF,EAAKG,SAAUT,EAASN,EAAWc,IAEvC,IAAME,EACJN,GACE,SAACO,GACCA,EAAEC,iBACFD,EAAEE,kBACFX,EAAMI,EAAKhB,SAAUgB,EAAKf,SAC5B,GACA,CAACW,EAAOI,EAAKhB,SAAUgB,EAAKf,WAG1BuB,EACJV,GACE,SAACO,GACCA,EAAEC,iBACEN,EAAKG,UACPF,EAAaD,EAAKhB,SAAUgB,EAAKf,SAErC,GACA,CAACe,EAAKG,SAAUF,EAAcD,EAAKhB,SAAUgB,EAAKf,WAGhDwB,EACJX,GAAY,SAACO,GACXA,EAAEC,iBACFD,EAAEE,iBACH,GAAE,IAEL,MAAO,CACLP,KAAIA,EACJN,QAAOA,EACPN,UAASA,EACTgB,mBAAkBA,EAClBI,wBAAuBA,EACvBC,mBAAkBA,EAEtB"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsxs as t,jsx as n}from"react/jsx-runtime";import{usePageContext as e}from"./providers.js";function r(){var r=e(),c=r.current,o=r.pageCount,i=r.jump,u=r.prev,s=r.next;return t("div",{className:"flex justify-center gap-2",children:[n("button",{className:"text-sm",onClick:function(){return i(1)},disabled:1===c,children:"≪"}),n("button",{className:"text-sm",onClick:function(){return u()},disabled:1===c,children:"<"}),Array.from({length:o},(function(t,n){return n+1})).filter((function(t){return c-2<=t&&t<=c+2})).map((function(t){return n("button",{className:"text-sm ".concat(c===t?"text-blue-600":""),onClick:function(){return i(t)},children:t},t)})),n("button",{className:"text-sm",onClick:function(){return s()},disabled:c===o,children:">"}),n("button",{className:"text-sm",onClick:function(){return i(o)},disabled:c===o,children:"≫"})]})}function c(){var n=e(),r=n.from,c=n.to,o=n.rowCount;return t("p",{className:"text-center text-sm text-gray-600",children:[r+1," - ",c<o?c:o," of ",o]})}export{c as DisplayRange,r as Pagenation};
3
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ var r={perPage:50,currentPage:1,rowCount:0};export{r as INITIAL_PAGE_STATE};
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":["INITIAL_PAGE_STATE","perPage","currentPage","rowCount"],"mappings":"AAEa,IAAAA,EAAiC,CAC5CC,QAAS,GACTC,YAAa,EACbC,SAAU"}
@@ -0,0 +1,2 @@
1
+ import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as r,useCallback as t,useMemo as n}from"react";import{INITIAL_PAGE_STATE as u}from"./constants.js";function a(r,t){switch(t.type){case"setRowCount":return e(e({},r),{currentPage:1,rowCount:t.payload.rowCount});case"setPerPage":return e(e({},r),{perPage:t.payload.perPage});case"next":return r.currentPage===Math.ceil(r.rowCount/r.perPage)?r:e(e({},r),{currentPage:r.currentPage+1});case"prev":return 1===r.currentPage?r:e(e({},r),{currentPage:r.currentPage-1});case"jump":return t.payload.pageNumber<1||t.payload.pageNumber>Math.ceil(r.rowCount/r.perPage)||r.currentPage===t.payload.pageNumber?r:e(e({},r),{currentPage:t.payload.pageNumber});default:return r}}function o(e){var o=r(a,null!=e?e:u),p=o[0],c=o[1],g=t((function(){return c({type:"next"})}),[c]),P=t((function(){return c({type:"prev"})}),[c]),i=t((function(e){return c({type:"jump",payload:{pageNumber:e}})}),[c]),l=t((function(e){return c({type:"setRowCount",payload:{rowCount:e}})}),[c]),s=n((function(){return(p.currentPage-1)*p.perPage}),[p]),m=n((function(){return p.currentPage*p.perPage}),[p]),f=t((function(e){return e.slice(s,m)}),[s,m]);return{perPage:p.perPage,current:p.currentPage,rowCount:p.rowCount,pageCount:Math.ceil(p.rowCount/p.perPage),from:s,to:m,next:g,prev:P,jump:i,setRowCount:l,pageFilter:f}}export{o as usePageReducer};
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","usePageReducer","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"yLAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAAC,EAAAA,EAAA,GACKH,GAAK,CACRI,YAAa,EACbC,SAAUJ,EAAOK,QAAQD,WAE7B,IAAK,aACH,OACKF,EAAAA,EAAA,CAAA,EAAAH,IACHO,QAASN,EAAOK,QAAQC,UAE5B,IAAK,OACH,OAAIP,EAAMI,cAAgBI,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,SAClDP,EAIJG,EAAAA,EAAA,CAAA,EAAAH,IACHI,YAAaJ,EAAMI,YAAc,IAErC,IAAK,OACH,OAA0B,IAAtBJ,EAAMI,YACDJ,EAIJG,EAAAA,EAAA,CAAA,EAAAH,IACHI,YAAaJ,EAAMI,YAAc,IAErC,IAAK,OACH,OACEH,EAAOK,QAAQI,WAAa,GAC5BT,EAAOK,QAAQI,WAAaF,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,UAC7DP,EAAMI,cAAgBH,EAAOK,QAAQI,WAE9BV,EAIJG,EAAAA,EAAA,CAAA,EAAAH,IACHI,YAAaH,EAAOK,QAAQI,aAEhC,QACE,OAAOV,EAEb,CAEM,SAAUW,EAAeC,GACvB,IAAAC,EAAoBC,EACxBf,EACAa,QAAAA,EAAgBG,GAFXf,OAAOgB,OAKRC,EAAOC,GAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDG,EAAOD,GAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDI,EAAOF,GACX,SAACR,GAAuB,OAAAM,EAAS,CAAEd,KAAM,OAAQI,QAAS,CAAEI,WAAUA,OACtE,CAACM,IAGGK,EAAcH,GAClB,SAACb,GACC,OAAAW,EAAS,CAAEd,KAAM,cAAeI,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACW,IAGGM,EAAOC,GAAQ,WAAM,OAACvB,EAAMI,YAAc,GAAKJ,EAAMO,OAAO,GAAE,CAACP,IAC/DwB,EAAKD,GAAQ,WAAM,OAAAvB,EAAMI,YAAcJ,EAAMO,UAAS,CAACP,IAEvDyB,EAAaP,GACjB,SAACQ,GACC,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLjB,QAASP,EAAMO,QACfqB,QAAS5B,EAAMI,YACfC,SAAUL,EAAMK,SAChBwB,UAAWrB,KAAKC,KAAKT,EAAMK,SAAWL,EAAMO,SAC5Ce,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as n}from"react/jsx-runtime";import{createContext as r,useContext as o}from"react";import{usePageReducer as t}from"./hooks.js";var e=r({perPage:0,current:0,pageCount:0,from:0,to:0,rowCount:0,next:function(){throw new Error("Function not implemented.")},prev:function(){throw new Error("Function not implemented.")},jump:function(){throw new Error("Function not implemented.")},setRowCount:function(){throw new Error("Function not implemented.")},pageFilter:function(){throw new Error("Function not implemented.")}});function i(r){var o,i;return n(e.Provider,{value:t({perPage:null!==(o=r.perPage)&&void 0!==o?o:50,currentPage:null!==(i=r.currentPage)&&void 0!==i?i:1,rowCount:r.rowCount}),children:r.children})}function u(){return o(e)}export{i as PagenationProvider,u as usePageContext};
3
+ //# 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
+ import{__rest as e}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r}from"react/jsx-runtime";import{createContext as n,useContext as o}from"react";var l=n({id:""});function t(e){var n=e.children,o=e.row;return r(l.Provider,{value:o,children:n})}function i(){return o(l)}var c=n({cols:[],colMaps:{}});function u(n){var o=n.children,l=n.cols,t=l.reduce((function(r,n){var o=n.key,l=e(n,["key"]);return r[o]=l,r}),{});return r(c.Provider,{value:{cols:l,colMaps:t},children:o})}function d(e){return o(c).colMaps[e]}function a(){return o(c).cols}var v=n({columnKey:"",value:"",label:"",type:"string",rowIndex:0,colIndex:0});function s(e){var n,o,l=e.children,t=e.columnKey,c=e.rowIndex,u=e.colIndex,a=d(t),s=i()[t];return r(v.Provider,{value:{columnKey:t,value:s,label:"select"===a.type?null===(o=null===(n=a.options)||void 0===n?void 0:n.find((function(e){return e.value===s})))||void 0===o?void 0:o.label:s,editable:a.editable,type:a.type,rowIndex:c,colIndex:u},children:l})}function f(){return o(v)}export{s as CellProvider,u as ColumnsProvider,t as RowProvider,f as useCellContext,d as useColumnContext,a as useColumnsContext,i as useRowContext};
3
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as r}from"react/jsx-runtime";import{SortIcon as e}from"./icon.js";import{useSortContext as o}from"./provider.js";function t(t){var i=o(),n=i.key,c=i.asc,a=i.changeKey,m=i.changeOrder,s=n===t.keyName;return r("div",{onClick:function(r){r.preventDefault(),s?m():a(t.keyName)},className:"cursor-pointer",children:r(e,{sortOrder:s?c?"ASC":"DESC":"ASC",isSortActive:s})})}export{t as SortButton};
3
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ import{__spreadArray as e,__assign as n}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as r,useCallback as c}from"react";var a=function(e,r){switch(r.type){case"changeKey":return{key:r.payload.key,asc:!0};case"changeOrder":return n(n({},e),{asc:!e.asc})}};function t(n){var t,o,s=r(a,{key:null!==(t=null==n?void 0:n.key)&&void 0!==t?t:"id",asc:null===(o=null==n?void 0:n.asc)||void 0===o||o}),y=s[0],i=s[1],u=c((function(n){return e([],n,!0).sort((function(e,n){return e[y.key]<n[y.key]?y.asc?-1:1:e[y.key]>n[y.key]?y.asc?1:-1:0}))}),[y]);return{key:y.key,asc:y.asc,changeKey:function(e){i({type:"changeKey",payload:{key:e}})},changeOrder:function(){i({type:"changeOrder"})},sort:u}}export{t as useSortReducer};
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","useSortReducer","initial","_c","useReducer","_a","_b","dispatch","sort","useCallback","rows","__spreadArray","a","b","changeKey","changeOrder"],"mappings":"2IAIA,IAAMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CAAEC,IAAKF,EAAOG,QAAQD,IAAKE,KAAK,GACzC,IAAK,cACH,OAAYC,EAAAA,EAAA,CAAA,EAAAN,IAAOK,KAAML,EAAMK,MAErC,EAEM,SAAUE,EAAeC,WAIvBC,EAAoBC,EAAWX,EAAS,CAC5CI,IAAiB,QAAZQ,EAAAH,eAAAA,EAASL,WAAG,IAAAQ,EAAAA,EAAI,KACrBN,IAAiB,QAAZO,EAAAJ,eAAAA,EAASH,WAAG,IAAAO,GAAAA,IAFZZ,EAAKS,EAAA,GAAEI,OAaRC,EAAOC,GACX,SAACC,GACC,OAAAC,EAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,OAAID,EAAElB,EAAMG,KAAOgB,EAAEnB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBa,EAAElB,EAAMG,KAAOgB,EAAEnB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GARA,GASF,CAACL,IAGH,MAAO,CAAEG,IAAKH,EAAMG,IAAKE,IAAKL,EAAMK,IAAKe,UAtBvB,SAACjB,GACjBU,EAAS,CAAEX,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAoBoDkB,YAlBhC,WAClBR,EAAS,CAAEX,KAAM,eACnB,EAgBiEY,KAAIA,EACvE"}
@@ -1,2 +1,2 @@
1
1
  import{jsxs as r,jsx as t}from"react/jsx-runtime";import{memo as a}from"react";var e=a((function(a){var e=a.size||16,o=a.sortOrder||"ASC";return r("div",{className:"relative",style:{width:"".concat(e,"px"),height:"".concat(e,"px")},children:[t("div",{className:"absolute top-1/2 right-0 w-[40%] h-[20%] duration-300 ".concat("ASC"===o?"-translate-y-[250%]":"translate-y-[150%]"," ").concat(a.isSortActive?"bg-gray-700":"bg-gray-200 border border-gray-500")}),t("div",{className:"absolute top-1/2 right-0 w-[70%] h-[20%] duration-300 -translate-y-1/2 ".concat(a.isSortActive?"bg-gray-700":"bg-gray-200 border border-gray-500")}),t("div",{className:"absolute top-1/2 right-0 w-full h-[20%] duration-300 ".concat("ASC"===o?"translate-y-[150%]":"-translate-y-[250%]"," ").concat(a.isSortActive?"bg-gray-700":"bg-gray-200 border border-gray-500")})]})}));export{e as SortIcon};
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":"+EAQA,IAAMA,EAAWC,GAAK,SAAYC,GAChC,IAAMC,EAAOD,EAAMC,MAAQ,GACrBC,EAAQF,EAAMG,WAAa,MAEjC,OACEC,EACE,MAAA,CAAAC,UAAU,WACVC,MAAO,CAAEC,MAAO,UAAGN,EAAI,MAAMO,OAAQ,UAAGP,EAAI,OAAMQ,SAAA,CAElDC,SACEL,UAAW,gEACC,QAAVH,EAAkB,sBAAwB,qBAE1C,KAAAS,OAAAX,EAAMY,aACF,cACA,wCAGRF,EACE,MAAA,CAAAL,UAAW,2EAAAM,OACTX,EAAMY,aACF,cACA,wCAGRF,EACE,MAAA,CAAAL,UAAW,wDAAAM,OACC,QAAVT,EAAkB,qBAAuB,sBAAqB,MAAAS,OAE9DX,EAAMY,aACF,cACA,0CAKd"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as n}from"react/jsx-runtime";import{createContext as r,useContext as o}from"react";import{useSortReducer as t}from"./hooks.js";var e=r({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.")}});function i(r){return n(e.Provider,{value:t(r.initialCondition),children:r.children})}function c(){return o(e)}export{i as SortProvider,c as useSortContext};
3
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index.d.ts CHANGED
@@ -5,32 +5,32 @@ type DataObject = {
5
5
  id: number | string;
6
6
  onClick?: React.MouseEventHandler<HTMLTableRowElement>;
7
7
  };
8
- type TStringCellEditingCondition<T extends DataObject> = ({
8
+ type TStringCellEditingCondition = ({
9
9
  type: "string";
10
10
  } & ({
11
11
  editable?: false;
12
12
  } | {
13
13
  editable: true;
14
- onCellBlur: (key: string, value: string, current: T, completeEditing: () => void) => void;
14
+ onCellBlur: (key: string, value: string, current: DataObject, completeEditing: () => void) => void;
15
15
  constraints?: {
16
16
  maxLength?: number;
17
17
  minLength?: number;
18
18
  pattern?: string;
19
19
  };
20
20
  }));
21
- type TNumberCellEditingCondition<T extends DataObject> = ({
21
+ type TNumberCellEditingCondition = ({
22
22
  type: "number";
23
23
  } & ({
24
24
  editable?: false;
25
25
  } | {
26
26
  editable: true;
27
- onCellBlur: (key: string, value: number, current: T, completeEditing: () => void) => void;
27
+ onCellBlur: (key: string, value: number, current: DataObject, completeEditing: () => void) => void;
28
28
  constraints?: {
29
29
  max?: number;
30
30
  min?: number;
31
31
  };
32
32
  }));
33
- type TSelectCellEditingCondition<T extends DataObject> = ({
33
+ type TSelectCellEditingCondition = ({
34
34
  type: "select";
35
35
  options: {
36
36
  value: string;
@@ -41,22 +41,28 @@ type TSelectCellEditingCondition<T extends DataObject> = ({
41
41
  } | {
42
42
  editable: true;
43
43
  allowEmpty?: boolean;
44
- onCellBlur: (key: string, value: string, current: T, completeEditing: () => void) => void;
44
+ onCellBlur: (key: string, value: string, current: DataObject, completeEditing: () => void) => void;
45
45
  }));
46
46
  type TComponentCellEditingCondition = {
47
47
  type: "component";
48
48
  editable?: false;
49
49
  };
50
- type TCellEditingCondition<T extends DataObject> = TStringCellEditingCondition<T> | TNumberCellEditingCondition<T> | TSelectCellEditingCondition<T> | TComponentCellEditingCondition;
51
- type TTableColumn<T extends DataObject> = {
50
+ type TCellEditingCondition = TStringCellEditingCondition | TNumberCellEditingCondition | TSelectCellEditingCondition | TComponentCellEditingCondition;
51
+ type TTableColumn = {
52
52
  key: string;
53
53
  label?: string;
54
- } & TCellEditingCondition<T>;
55
- type TPropsTable<T extends DataObject> = {
56
- cols: TTableColumn<T>[];
57
- rows: T[];
54
+ } & TCellEditingCondition;
55
+ type TPropsTable = {
56
+ cols: TTableColumn[];
57
+ rows: DataObject[];
58
+ initialCondition?: {
59
+ sort?: {
60
+ key: string;
61
+ asc?: boolean;
62
+ };
63
+ };
58
64
  };
59
65
 
60
- declare function Table<T extends DataObject>(props: TPropsTable<T>): react_jsx_runtime.JSX.Element;
66
+ declare function Table(props: TPropsTable): react_jsx_runtime.JSX.Element;
61
67
 
62
68
  export { Table };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "0.7.4",
3
+ "version": "0.7.6",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",
@@ -26,7 +26,6 @@
26
26
  "@storybook/addon-essentials": "^7.6.17",
27
27
  "@storybook/addon-interactions": "^7.6.17",
28
28
  "@storybook/addon-links": "^7.6.17",
29
- "@storybook/addon-onboarding": "^1.0.11",
30
29
  "@storybook/blocks": "^7.6.17",
31
30
  "@storybook/react": "^7.6.17",
32
31
  "@storybook/react-vite": "^7.6.17",
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("react/jsx-runtime"),l=require("react"),n=require("./filter.js"),t=require("./cancel-icon.js");exports.TableFilterForm=function(r){var i=n.useTableFilterContext(),a=i.addFilter,s=i.removeFilter,u=i.filterConditions,o=l.useState(""),c=o[0],d=o[1],v=l.useState(""),f=v[0],x=v[1],p=l.useState(""),h=p[0],j=p[1],y=l.useState("string"),m=y[0],b=y[1],g=r.cols.find((function(e){return e.key===c}));return l.useEffect((function(){j(""),x("")}),[c]),e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-2 mb-5",children:[e.jsx("p",{className:"font-bold text-lg",children:"フィルタ追加"}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[e.jsxs("select",{value:c,onChange:function(e){var l;e.preventDefault(),d(e.target.value);var n=null===(l=r.cols.find((function(l){return l.key===e.target.value})))||void 0===l?void 0:l.type;b(n)},children:[e.jsx("option",{value:"",children:"-- 列を選択 --"}),r.cols.filter((function(e){return!!e.label&&!!e.type})).map((function(l){return e.jsx("option",{value:l.key,children:l.label},l.key)}))]}),e.jsxs("select",{value:f,onChange:function(e){e.preventDefault(),x(e.target.value)},disabled:!c,children:[e.jsx("option",{value:"",children:c?"-- 条件を選択 --":"-- 列を選択してください --"}),"string"===m&&n.STRING_FILTER_OPERATOR.map((function(l){return e.jsx("option",{value:l.key,children:l.label},l.key)})),"number"===m&&n.NUMBER_FILTER_OPERATOR.map((function(l){return e.jsx("option",{value:l.key,children:l.label},l.key)})),"select"===m&&n.SELECT_FILTER_OPERATOR.map((function(l){return e.jsx("option",{value:l.key,children:l.label},l.key)}))]}),"select"===m?e.jsxs("select",{value:h,onChange:function(e){e.preventDefault(),j(e.target.value)},children:[e.jsx("option",{value:"",children:"-- 未選択 --"}),"select"===g.type&&g.options.map((function(l){return e.jsx("option",{value:l.value,children:l.label},l.value)}))]}):e.jsx("input",{type:"text",value:h,onChange:function(e){e.preventDefault(),j(e.target.value)},placeholder:"-- 値を入力 --"})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx("button",{className:"bg-gray-900 text-white py-1 px-2 rounded-md",onClick:function(e){var l;if(e.preventDefault(),c&&f&&("select"===g.type||h)){var n=r.cols.find((function(e){return e.key===c}));a("string"===m?{key:c,operator:f,value:[h]}:"select"===m?{key:c,operator:f,value:h,label:"select"===n.type?null===(l=n.options.find((function(e){return e.value===h})))||void 0===l?void 0:l.label:void 0}:{key:c,operator:f,value:Number(h)})}else alert("全ての項目を入力してください")},children:"追加"})})]}),e.jsxs("div",{children:[u.length>0&&e.jsx("p",{className:"font-bold text-lg",children:"フィルタ一覧"}),e.jsx("ul",{className:"flex flex-col gap-1 my-2",children:u.map((function(l){var i,a;return e.jsxs("li",{className:"flex justify-between",children:[e.jsxs("p",{children:["「",e.jsx("strong",{children:null===(i=r.cols.find((function(e){return e.key===l.key})))||void 0===i?void 0:i.label}),"」 は",e.jsx("span",{children:null===(a=n.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(),s(l.id)},children:e.jsx(t.CancelIcon,{size:16})})]},l.id)}))}),e.jsx("div",{className:"flex justify-center",children:e.jsx(n.TableFilterRemoveButton,{children:e.jsx("p",{className:"text-gray-600 underline hover:text-gray-800",children:"remove all filters"})})})]})]})};
2
- //# sourceMappingURL=filter-form.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filter-form.js","sources":["../../../../src/table/filter-form.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport {\n FILTER_OPERATOR,\n NUMBER_FILTER_OPERATOR,\n SELECT_FILTER_OPERATOR,\n STRING_FILTER_OPERATOR,\n TNumberFilterOperator,\n TSelectFilterOperator,\n TStringFilterOperator,\n TableFilterRemoveButton,\n useTableFilterContext,\n} from \"./filter\";\nimport { DataObject, TColumnType, TTableColumn } from \"./type\";\nimport { CancelIcon } from \"./cancel-icon\";\n\ntype TPropsFilterForm<T extends DataObject> = {\n cols: TTableColumn<T>[];\n};\n\nexport function TableFilterForm<T extends DataObject>(\n props: TPropsFilterForm<T>\n) {\n const { addFilter, removeFilter, filterConditions } = useTableFilterContext();\n const [selectingKey, setSelectingKey] = useState<string>(\"\");\n const [selectingOperator, setSelectingOperator] = useState<string>(\"\");\n const [value, setValue] = useState<string>(\"\");\n const [filterType, setFilterType] = useState<TColumnType>(\"string\");\n\n const filterColumn = props.cols.find((col) => col.key === selectingKey)!;\n\n useEffect(() => {\n setValue(\"\");\n setSelectingOperator(\"\");\n }, [selectingKey]);\n\n return (\n <>\n <div className=\"flex flex-col gap-2 mb-5\">\n <p className=\"font-bold text-lg\">フィルタ追加</p>\n <div className=\"flex flex-wrap gap-1\">\n <select\n value={selectingKey}\n onChange={(e) => {\n e.preventDefault();\n setSelectingKey(e.target.value);\n const columnType = props.cols.find(\n (col) => col.key === e.target.value\n )?.type as TColumnType;\n setFilterType(columnType);\n }}\n >\n <option value=\"\">-- 列を選択 --</option>\n {props.cols\n .filter((col) => !!col.label && !!col.type)\n .map((col) => (\n <option key={col.key} value={col.key}>\n {col.label}\n </option>\n ))}\n </select>\n <select\n value={selectingOperator}\n onChange={(e) => {\n e.preventDefault();\n setSelectingOperator(e.target.value);\n }}\n disabled={!selectingKey}\n >\n <option value=\"\">\n {selectingKey ? \"-- 条件を選択 --\" : \"-- 列を選択してください --\"}\n </option>\n {filterType === \"string\" &&\n STRING_FILTER_OPERATOR.map((op) => (\n <option key={op.key} value={op.key}>\n {op.label}\n </option>\n ))}\n {filterType === \"number\" &&\n NUMBER_FILTER_OPERATOR.map((op) => (\n <option key={op.key} value={op.key}>\n {op.label}\n </option>\n ))}\n {filterType === \"select\" &&\n SELECT_FILTER_OPERATOR.map((op) => (\n <option key={op.key} value={op.key}>\n {op.label}\n </option>\n ))}\n </select>\n {filterType === \"select\" ? (\n <select\n value={value}\n onChange={(e) => {\n e.preventDefault();\n setValue(e.target.value);\n }}\n >\n <option value=\"\">-- 未選択 --</option>\n {filterColumn.type === \"select\" &&\n filterColumn.options.map((op) => (\n <option key={op.value} value={op.value}>\n {op.label}\n </option>\n ))}\n </select>\n ) : (\n <input\n type=\"text\"\n value={value}\n onChange={(e) => {\n e.preventDefault();\n setValue(e.target.value);\n }}\n placeholder=\"-- 値を入力 --\"\n />\n )}\n </div>\n <div className=\"flex justify-end\">\n <button\n className=\"bg-gray-900 text-white py-1 px-2 rounded-md\"\n onClick={(e) => {\n e.preventDefault();\n if (\n !selectingKey ||\n !selectingOperator ||\n (filterColumn.type !== \"select\" && !value)\n ) {\n alert(\"全ての項目を入力してください\");\n return;\n }\n\n const addFilterColumn = props.cols.find(\n (col) => col.key === selectingKey\n )!;\n\n addFilter(\n filterType === \"string\"\n ? {\n key: selectingKey,\n operator: selectingOperator as TStringFilterOperator,\n value: [value],\n }\n : filterType === \"select\"\n ? {\n key: selectingKey,\n operator: selectingOperator as TSelectFilterOperator,\n value: value,\n label:\n addFilterColumn.type === \"select\"\n ? addFilterColumn.options.find(\n (op) => op.value === value\n )?.label\n : undefined,\n }\n : {\n key: selectingKey,\n operator: selectingOperator as TNumberFilterOperator,\n value: Number(value),\n }\n );\n }}\n >\n 追加\n </button>\n </div>\n </div>\n <div>\n {filterConditions.length > 0 && (\n <p className=\"font-bold text-lg\">フィルタ一覧</p>\n )}\n <ul className=\"flex flex-col gap-1 my-2\">\n {filterConditions.map((f) => (\n <li key={f.id} className=\"flex justify-between\">\n <p>\n 「\n <strong>\n {props.cols.find((col) => col.key === f.key)?.label}\n </strong>\n 」 は\n <span>\n {FILTER_OPERATOR.find((op) => op.key === f.operator)?.label}\n </span>\n :<span>{f.label ? f.label : f.value}</span>\n </p>\n <button\n onClick={(e) => {\n e.preventDefault();\n removeFilter(f.id);\n }}\n >\n <CancelIcon size={16} />\n </button>\n </li>\n ))}\n </ul>\n <div className=\"flex justify-center\">\n <TableFilterRemoveButton>\n <p className=\"text-gray-600 underline hover:text-gray-800\">\n remove all filters\n </p>\n </TableFilterRemoveButton>\n </div>\n </div>\n </>\n );\n}\n"],"names":["props","_a","useTableFilterContext","addFilter","removeFilter","filterConditions","_b","useState","selectingKey","setSelectingKey","_c","selectingOperator","setSelectingOperator","_d","value","setValue","_e","filterType","setFilterType","filterColumn","cols","find","col","key","useEffect","_jsxs","_Fragment","children","className","_jsx","jsxs","onChange","e","preventDefault","target","columnType","type","filter","label","map","jsx","disabled","STRING_FILTER_OPERATOR","op","NUMBER_FILTER_OPERATOR","SELECT_FILTER_OPERATOR","options","placeholder","onClick","addFilterColumn","operator","undefined","Number","alert","length","f","FILTER_OPERATOR","id","CancelIcon","size","TableFilterRemoveButton"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"filter-icon.js","sources":["../../../../src/table/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"}
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),t=require("react"),n=require("./filter-icon.js"),l=[{key:"includeText",label:"次の値を含む"}],i=[{key:"eq",label:"次の値と等しい"},{key:"ne",label:"次の値と等しくない"},{key:"gt",label:"次の値より大きい"},{key:"lt",label:"次の値より小さい"},{key:"gte",label:"次の値以上"},{key:"lte",label:"次の値以下"}],u=[{key:"selected",label:"次の値と等しい"},{key:"notSelected",label:"次の値と等しくない"}],a=e.__spreadArray(e.__spreadArray(e.__spreadArray([],l,!0),i,!0),u,!0);function c(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:[]}}}function o(){var e=t.useReducer(c,{filters:[]}),r=e[0],n=e[1],l=t.useCallback((function(e){return n({type:"add",payload:{filter:e}})}),[n]);return{addFilter:l,removeFilter:t.useCallback((function(e){return n({type:"remove",payload:{id:e}})}),[n]),clearFilter:t.useCallback((function(){return n({type:"clear"})}),[n]),filter:t.useCallback((function(e){return r.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)}),[r]),filterConditions:r.filters}}var s=t.createContext({addFilter:function(){},removeFilter:function(){},clearFilter:function(){},filter:function(){return[]},filterConditions:[]});function f(){return t.useContext(s)}exports.FILTER_OPERATOR=a,exports.NUMBER_FILTER_OPERATOR=i,exports.SELECT_FILTER_OPERATOR=u,exports.STRING_FILTER_OPERATOR=l,exports.TableFilter=function(e){var t=f().filterConditions;return r.jsx("div",{className:"relative cursor-pointer",onClick:e.onClick,children:r.jsx(n.FIlterIcon,{isFilterActive:t.filter((function(r){return r.key===e.keyName})).length>0})})},exports.TableFilterProvider=function(e){var t=e.children;return r.jsx(s.Provider,{value:o(),children:t})},exports.TableFilterRemoveButton=function(e){var t=e.children,n=f(),l=n.clearFilter;if(0!==n.filterConditions.length)return r.jsx("button",{onClick:function(e){e.preventDefault(),l()},children:t})},exports.filterReducer=c,exports.useTableFilterContext=f;
2
- //# sourceMappingURL=filter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filter.js","sources":["../../../../src/table/filter.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useReducer } from \"react\";\nimport { DataObject } from \"./type\";\nimport { FIlterIcon } from \"./filter-icon\";\n\nexport 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\nexport type TStringFilterOperator =\n (typeof STRING_FILTER_OPERATOR)[number][\"key\"];\nexport type TNumberFilterOperator =\n (typeof NUMBER_FILTER_OPERATOR)[number][\"key\"];\nexport type TSelectFilterOperator =\n (typeof SELECT_FILTER_OPERATOR)[number][\"key\"];\nexport type TFilterOperator =\n | TStringFilterOperator\n | TNumberFilterOperator\n | TSelectFilterOperator;\n\ntype TStringFilter = {\n key: string;\n operator: TStringFilterOperator;\n value: string[];\n label?: string;\n};\n\ntype TNumberFilter = {\n key: string;\n operator: TNumberFilterOperator;\n value: number;\n label?: string;\n};\n\ntype TSelectFilter = {\n key: string;\n operator: TSelectFilterOperator;\n value: string;\n label?: string;\n};\n\ntype TFilter = TStringFilter | TNumberFilter | TSelectFilter;\n\ntype TFilterState = {\n filters: ({ id: number } & TFilter)[];\n};\n\ntype TFilterAction =\n | { type: \"add\"; payload: { filter: TFilter } }\n | { type: \"remove\"; payload: { id: number } }\n | { type: \"clear\" };\n\nexport function filterReducer(\n state: TFilterState,\n action: TFilterAction\n): TFilterState {\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\nfunction useFilterReducer() {\n const [state, dispatch] = useReducer(filterReducer, { filters: [] });\n\n const addFilter = useCallback(\n (filter: TFilter) => dispatch({ type: \"add\", payload: { filter } }),\n [dispatch]\n );\n const removeFilter = useCallback(\n (id: number) => dispatch({ type: \"remove\", payload: { id } }),\n [dispatch]\n );\n const clearFilter = useCallback(\n () => dispatch({ type: \"clear\" }),\n [dispatch]\n );\n\n const filter = useCallback(\n <T extends DataObject>(rows: T[]): T[] => {\n return state.filters.reduce((acc, filter) => {\n switch (filter.operator) {\n case \"includeText\":\n return acc.filter((row) => {\n const value = row[filter.key];\n if (typeof value === \"string\") {\n return filter.value.some((v) => value.includes(v));\n }\n return false;\n });\n case \"eq\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"ne\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n case \"gt\":\n return acc.filter((row) => row[filter.key] > filter.value);\n case \"lt\":\n return acc.filter((row) => row[filter.key] < filter.value);\n case \"gte\":\n return acc.filter((row) => row[filter.key] >= filter.value);\n case \"lte\":\n return acc.filter((row) => row[filter.key] <= filter.value);\n case \"selected\":\n return acc.filter((row) => row[filter.key] === filter.value);\n case \"notSelected\":\n return acc.filter((row) => row[filter.key] !== filter.value);\n }\n }, rows);\n },\n [state]\n );\n\n return {\n addFilter,\n removeFilter,\n clearFilter,\n filter,\n filterConditions: state.filters,\n };\n}\n\nconst TableFilterContext = createContext<ReturnType<typeof useFilterReducer>>({\n addFilter: () => {},\n removeFilter: () => {},\n clearFilter: () => {},\n filter: () => [],\n filterConditions: [],\n});\n\nexport function TableFilterProvider({\n children,\n}: {\n children: JSX.Element | JSX.Element[];\n}) {\n return (\n <TableFilterContext.Provider value={useFilterReducer()}>\n {children}\n </TableFilterContext.Provider>\n );\n}\n\nexport function useTableFilterContext() {\n return useContext(TableFilterContext);\n}\n\ntype TPropsTableFilter = {\n keyName: string;\n onClick: React.MouseEventHandler<HTMLDivElement>;\n};\n\nexport function TableFilter(props: TPropsTableFilter) {\n const { filterConditions } = useTableFilterContext();\n\n return (\n <div className=\"relative cursor-pointer\" onClick={props.onClick}>\n <FIlterIcon\n isFilterActive={\n filterConditions.filter((f) => f.key === props.keyName).length > 0\n }\n />\n </div>\n );\n}\n\nexport function TableFilterRemoveButton({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const { clearFilter, filterConditions } = useTableFilterContext();\n\n if (filterConditions.length === 0) {\n return;\n }\n\n return (\n <button\n onClick={(e) => {\n e.preventDefault();\n clearFilter();\n }}\n >\n {children}\n </button>\n );\n}\n"],"names":["STRING_FILTER_OPERATOR","key","label","NUMBER_FILTER_OPERATOR","SELECT_FILTER_OPERATOR","FILTER_OPERATOR","__spreadArray","filterReducer","state","action","type","filters","__assign","id","Date","getTime","payload","filter","f","useFilterReducer","_a","useReducer","dispatch","addFilter","useCallback","removeFilter","clearFilter","rows","reduce","acc","operator","row","value","some","v","includes","filterConditions","TableFilterContext","createContext","useTableFilterContext","useContext","props","_jsx","jsx","className","onClick","children","FIlterIcon","isFilterActive","keyName","length","Provider","_b","e","preventDefault"],"mappings":"oJAIaA,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,GA8CX,SAAAG,EACdC,EACAC,GAEA,OAAQA,EAAOC,MACb,IAAK,MACH,MAAO,CACLC,QAAOL,EAAAA,cAAAA,gBAAA,GACFE,EAAMG,SAAO,GAAA,CACdC,WAAA,CAAAC,IAAI,IAAIC,MAAOC,WAAcN,EAAOO,QAAQC,UAC/C,IAEL,IAAK,SACH,MAAO,CACLN,QAASH,EAAMG,QAAQM,QAAO,SAACC,GAAM,OAAAA,EAAEL,KAAOJ,EAAOO,QAAQH,EAAxB,KAEzC,IAAK,QACH,MAAO,CAAEF,QAAS,IAExB,CAEA,SAASQ,IACD,IAAAC,EAAoBC,EAAUA,WAACd,EAAe,CAAEI,QAAS,KAAxDH,OAAOc,OAERC,EAAYC,EAAAA,aAChB,SAACP,GAAoB,OAAAK,EAAS,CAAEZ,KAAM,MAAOM,QAAS,CAAEC,OAAMA,OAC9D,CAACK,IA6CH,MAAO,CACLC,UAASA,EACTE,aA7CmBD,EAAAA,aACnB,SAACX,GAAe,OAAAS,EAAS,CAAEZ,KAAM,SAAUM,QAAS,CAAEH,GAAEA,OACxD,CAACS,IA4CDI,YA1CkBF,EAAAA,aAClB,WAAM,OAAAF,EAAS,CAAEZ,KAAM,SAAjB,GACN,CAACY,IAyCDL,OAtCaO,eACb,SAAuBG,GACrB,OAAOnB,EAAMG,QAAQiB,QAAO,SAACC,EAAKZ,GAChC,OAAQA,EAAOa,UACb,IAAK,cACH,OAAOD,EAAIZ,QAAO,SAACc,GACjB,IAAMC,EAAQD,EAAId,EAAOhB,KACzB,MAAqB,iBAAV+B,GACFf,EAAOe,MAAMC,MAAK,SAACC,GAAM,OAAAF,EAAMG,SAASD,EAAE,GAGrD,IACF,IAAK,KAYL,IAAK,WACH,OAAOL,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOhB,OAASgB,EAAOe,KAAK,IAX7D,IAAK,KAYL,IAAK,cACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOhB,OAASgB,EAAOe,KAAK,IAX7D,IAAK,KACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOhB,KAAOgB,EAAOe,KAAK,IAC3D,IAAK,KACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOhB,KAAOgB,EAAOe,KAAK,IAC3D,IAAK,MACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOhB,MAAQgB,EAAOe,KAAK,IAC5D,IAAK,MACH,OAAOH,EAAIZ,QAAO,SAACc,GAAQ,OAAAA,EAAId,EAAOhB,MAAQgB,EAAOe,KAAK,IAM/D,GAAEL,EACL,GACA,CAACnB,IAQD4B,iBAAkB5B,EAAMG,QAE5B,CAEA,IAAM0B,EAAqBC,EAAAA,cAAmD,CAC5Ef,UAAW,WAAQ,EACnBE,aAAc,WAAQ,EACtBC,YAAa,WAAQ,EACrBT,OAAQ,WAAM,MAAA,EAAE,EAChBmB,iBAAkB,cAeJG,IACd,OAAOC,EAAAA,WAAWH,EACpB,kJAOM,SAAsBI,GAClB,IAAAL,EAAqBG,qBAE7B,OACEG,EAAKC,IAAA,MAAA,CAAAC,UAAU,0BAA0BC,QAASJ,EAAMI,QAAOC,SAC7DJ,EAAAA,IAACK,EAAUA,WAAA,CACTC,eACEZ,EAAiBnB,QAAO,SAACC,GAAM,OAAAA,EAAEjB,MAAQwC,EAAMQ,WAASC,OAAS,KAK3E,8BAjCM,SAA8B9B,GAClC,IAAA0B,EAAQ1B,EAAA0B,SAIR,OACEJ,EAAAC,IAACN,EAAmBc,SAAS,CAAAnB,MAAOb,IAAkB2B,SACnDA,GAGP,kCAyBM,SAAkC1B,GACtC,IAAA0B,EAAQ1B,EAAA0B,SAIFM,EAAoCb,IAAlCb,EAAW0B,EAAA1B,YAEnB,GAAgC,IAFK0B,EAAAhB,iBAEhBc,OAIrB,OACER,EAAAC,IAAA,SAAA,CACEE,QAAS,SAACQ,GACRA,EAAEC,iBACF5B,GACF,EAECoB,SAAAA,GAGP"}
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),t=require("react");function n(r,t){switch(t.type){case"setRowCount":return e.__assign(e.__assign({},r),{rowCount:t.payload.rouCount});case"setPerPage":return e.__assign(e.__assign({},r),{perPage:t.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 t.payload.pageNumber<1||t.payload.pageNumber>Math.ceil(r.rowCount/r.perPage)||r.currentPage===t.payload.pageNumber?r:e.__assign(e.__assign({},r),{currentPage:t.payload.pageNumber});default:return r}}var u={perPage:50,currentPage:1,rowCount:0};var a=t.memo((function(e){return r.jsxs("div",{className:"flex justify-center gap-2",children:[r.jsx("button",{className:"text-sm",onClick:function(){return e.jump(1)},disabled:1===e.current,children:"≪"}),r.jsx("button",{className:"text-sm",onClick:function(){return e.prev()},disabled:1===e.current,children:"<"}),Array.from({length:e.count},(function(e,r){return r+1})).filter((function(r){return e.current-2<=r&&r<=e.current+2})).map((function(t){return r.jsx("button",{className:"text-sm ".concat(e.current===t?"text-blue-600":""),onClick:function(){return e.jump(t)},children:t},t)})),r.jsx("button",{className:"text-sm",onClick:function(){return e.next()},disabled:e.current===e.count,children:">"}),r.jsx("button",{className:"text-sm",onClick:function(){return e.jump(e.count)},disabled:e.current===e.count,children:"≫"})]})}));exports.Pagenation=a,exports.usePageReducer=function(e){var r=t.useReducer(n,null!=e?e:u),a=r[0],c=r[1],s=t.useCallback((function(){return c({type:"next"})}),[c]),o=t.useCallback((function(){return c({type:"prev"})}),[c]),i=t.useCallback((function(e){return c({type:"jump",payload:{pageNumber:e}})}),[c]),l=t.useCallback((function(e){return c({type:"setRowCount",payload:{rouCount:e}})}),[c]);return{perPage:a.perPage,currentPage:a.currentPage,rowCount:a.rowCount,pageCount:Math.ceil(a.rowCount/a.perPage),from:(a.currentPage-1)*a.perPage,to:a.currentPage*a.perPage,next:s,prev:o,jump:i,setRowCount:l}};
2
- //# sourceMappingURL=page.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page.js","sources":["../../../../src/table/page.tsx"],"sourcesContent":["import { memo, useCallback, useReducer } from \"react\";\n\ntype TPage = {\n perPage: number;\n currentPage: number;\n rowCount: number;\n};\n\ntype TPageMoveAction =\n | { type: \"setRowCount\"; payload: { rouCount: number } }\n | { type: \"setPerPage\"; payload: { perPage: number } }\n | {\n type: \"next\";\n }\n | {\n type: \"prev\";\n }\n | {\n type: \"jump\";\n payload: { pageNumber: number };\n };\n\nfunction pageReducer(state: TPage, action: TPageMoveAction): TPage {\n switch (action.type) {\n case \"setRowCount\":\n return {\n ...state,\n rowCount: action.payload.rouCount,\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\nconst InitialPageState: TPage = {\n perPage: 50,\n currentPage: 1,\n rowCount: 0,\n};\n\nexport function usePageReducer(initialState?: TPage) {\n const [state, dispatch] = useReducer(\n pageReducer,\n initialState ?? InitialPageState\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 const setRowCount = useCallback(\n (rouCount: number) =>\n dispatch({ type: \"setRowCount\", payload: { rouCount } }),\n [dispatch]\n );\n\n return {\n perPage: state.perPage,\n currentPage: state.currentPage,\n rowCount: state.rowCount,\n pageCount: Math.ceil(state.rowCount / state.perPage),\n from: (state.currentPage - 1) * state.perPage,\n to: state.currentPage * state.perPage,\n next,\n prev,\n jump,\n setRowCount,\n };\n}\n\ntype TPropsPagenation = {\n count: number;\n current: number;\n jump: (pageNumber: number) => void;\n next: () => void;\n prev: () => void;\n};\n\nexport const Pagenation = memo(function TablePagenation(\n props: TPropsPagenation\n) {\n return (\n <div className=\"flex justify-center gap-2\">\n <button\n className=\"text-sm\"\n onClick={() => props.jump(1)}\n disabled={props.current === 1}\n >\n &#x226A;\n </button>\n <button\n className=\"text-sm\"\n onClick={() => props.prev()}\n disabled={props.current === 1}\n >\n &lt;\n </button>\n {Array.from({ length: props.count }, (_, i) => i + 1)\n .filter((i) => props.current - 2 <= i && i <= props.current + 2)\n .map((i) => (\n <button\n key={i}\n className={`text-sm ${props.current === i ? \"text-blue-600\" : \"\"}`}\n onClick={() => props.jump(i)}\n >\n {i}\n </button>\n ))}\n <button\n className=\"text-sm\"\n onClick={() => props.next()}\n disabled={props.current === props.count}\n >\n &gt;\n </button>\n <button\n className=\"text-sm\"\n onClick={() => props.jump(props.count)}\n disabled={props.current === props.count}\n >\n &#x226B;\n </button>\n </div>\n );\n});\n"],"names":["pageReducer","state","action","type","__assign","rowCount","payload","rouCount","perPage","currentPage","Math","ceil","pageNumber","InitialPageState","Pagenation","memo","props","_jsxs","jsxs","className","_jsx","jsx","onClick","jump","disabled","current","prev","children","Array","from","length","count","_","i","filter","map","concat","next","initialState","_a","useReducer","dispatch","useCallback","setRowCount","pageCount","to"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sort-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"}
@@ -1,2 +0,0 @@
1
- "use strict";var r=require("react/jsx-runtime"),s=require("./sort-icon.js");exports.Sort=function(e){return r.jsx("div",{onClick:e.onClick,className:"cursor-pointer",children:r.jsx(s.SortIcon,{sortOrder:e.isSortedByThis?e.sortOrder:"ASC",isSortActive:e.isSortedByThis})})};
2
- //# sourceMappingURL=sort.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sort.js","sources":["../../../../src/table/sort.tsx"],"sourcesContent":["import { SortIcon } from \"./sort-icon\";\n\ntype TPropsSort = {\n onClick: (e: React.MouseEvent<HTMLDivElement>) => void;\n isSortedByThis: boolean;\n sortOrder: \"ASC\" | \"DESC\";\n};\n\nexport function Sort(props: TPropsSort) {\n return (\n <div onClick={props.onClick} className=\"cursor-pointer\">\n <SortIcon\n sortOrder={props.isSortedByThis ? props.sortOrder : \"ASC\"}\n isSortActive={props.isSortedByThis}\n />\n </div>\n );\n}\n"],"names":["props","_jsx","onClick","className","children","SortIcon","sortOrder","isSortedByThis","isSortActive"],"mappings":"yFAQM,SAAeA,GACnB,OACEC,MAAK,MAAA,CAAAC,QAASF,EAAME,QAASC,UAAU,iBACrCC,SAAAH,EAAAA,IAACI,EAAQA,SACP,CAAAC,UAAWN,EAAMO,eAAiBP,EAAMM,UAAY,MACpDE,aAAcR,EAAMO,kBAI5B"}
@@ -1,2 +0,0 @@
1
- import{jsxs as e,Fragment as l,jsx as n}from"react/jsx-runtime";import{useState as t,useEffect as r}from"react";import{useTableFilterContext as i,STRING_FILTER_OPERATOR as a,NUMBER_FILTER_OPERATOR as o,SELECT_FILTER_OPERATOR as c,FILTER_OPERATOR as u,TableFilterRemoveButton as d}from"./filter.js";import{CancelIcon as f}from"./cancel-icon.js";function s(s){var v=i(),p=v.addFilter,h=v.removeFilter,m=v.filterConditions,y=t(""),g=y[0],b=y[1],k=t(""),x=k[0],N=k[1],C=t(""),j=C[0],D=C[1],w=t("string"),F=w[0],z=w[1],q=s.cols.find((function(e){return e.key===g}));return r((function(){D(""),N("")}),[g]),e(l,{children:[e("div",{className:"flex flex-col gap-2 mb-5",children:[n("p",{className:"font-bold text-lg",children:"フィルタ追加"}),e("div",{className:"flex flex-wrap gap-1",children:[e("select",{value:g,onChange:function(e){var l;e.preventDefault(),b(e.target.value);var n=null===(l=s.cols.find((function(l){return l.key===e.target.value})))||void 0===l?void 0:l.type;z(n)},children:[n("option",{value:"",children:"-- 列を選択 --"}),s.cols.filter((function(e){return!!e.label&&!!e.type})).map((function(e){return n("option",{value:e.key,children:e.label},e.key)}))]}),e("select",{value:x,onChange:function(e){e.preventDefault(),N(e.target.value)},disabled:!g,children:[n("option",{value:"",children:g?"-- 条件を選択 --":"-- 列を選択してください --"}),"string"===F&&a.map((function(e){return n("option",{value:e.key,children:e.label},e.key)})),"number"===F&&o.map((function(e){return n("option",{value:e.key,children:e.label},e.key)})),"select"===F&&c.map((function(e){return n("option",{value:e.key,children:e.label},e.key)}))]}),"select"===F?e("select",{value:j,onChange:function(e){e.preventDefault(),D(e.target.value)},children:[n("option",{value:"",children:"-- 未選択 --"}),"select"===q.type&&q.options.map((function(e){return n("option",{value:e.value,children:e.label},e.value)}))]}):n("input",{type:"text",value:j,onChange:function(e){e.preventDefault(),D(e.target.value)},placeholder:"-- 値を入力 --"})]}),n("div",{className:"flex justify-end",children:n("button",{className:"bg-gray-900 text-white py-1 px-2 rounded-md",onClick:function(e){var l;if(e.preventDefault(),g&&x&&("select"===q.type||j)){var n=s.cols.find((function(e){return e.key===g}));p("string"===F?{key:g,operator:x,value:[j]}:"select"===F?{key:g,operator:x,value:j,label:"select"===n.type?null===(l=n.options.find((function(e){return e.value===j})))||void 0===l?void 0:l.label:void 0}:{key:g,operator:x,value:Number(j)})}else alert("全ての項目を入力してください")},children:"追加"})})]}),e("div",{children:[m.length>0&&n("p",{className:"font-bold text-lg",children:"フィルタ一覧"}),n("ul",{className:"flex flex-col gap-1 my-2",children:m.map((function(l){var t,r;return e("li",{className:"flex justify-between",children:[e("p",{children:["「",n("strong",{children:null===(t=s.cols.find((function(e){return e.key===l.key})))||void 0===t?void 0:t.label}),"」 は",n("span",{children:null===(r=u.find((function(e){return e.key===l.operator})))||void 0===r?void 0:r.label}),":",n("span",{children:l.label?l.label:l.value})]}),n("button",{onClick:function(e){e.preventDefault(),h(l.id)},children:n(f,{size:16})})]},l.id)}))}),n("div",{className:"flex justify-center",children:n(d,{children:n("p",{className:"text-gray-600 underline hover:text-gray-800",children:"remove all filters"})})})]})]})}export{s as TableFilterForm};
2
- //# sourceMappingURL=filter-form.js.map