@teppen/react-ui 2.0.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +15 -3
  2. package/dist/cjs/src/table/copy/components.js +1 -1
  3. package/dist/cjs/src/table/copy/components.js.map +1 -1
  4. package/dist/cjs/src/table/edit/ui/base-input.js +1 -1
  5. package/dist/cjs/src/table/edit/ui/base-input.js.map +1 -1
  6. package/dist/cjs/src/table/edit/ui/select-input.js +1 -1
  7. package/dist/cjs/src/table/edit/ui/select-input.js.map +1 -1
  8. package/dist/cjs/src/table/libs/generate-validate-function.js +1 -1
  9. package/dist/cjs/src/table/libs/generate-validate-function.js.map +1 -1
  10. package/dist/cjs/src/table/locale/messages.js +2 -0
  11. package/dist/cjs/src/table/locale/messages.js.map +1 -0
  12. package/dist/cjs/src/table/locale/provider.js +2 -0
  13. package/dist/cjs/src/table/locale/provider.js.map +1 -0
  14. package/dist/cjs/src/table/operation/components/key-catcher.js +2 -0
  15. package/dist/cjs/src/table/operation/components/key-catcher.js.map +1 -0
  16. package/dist/cjs/src/table/operation/components/keyboard-setting.js +1 -1
  17. package/dist/cjs/src/table/operation/components/keyboard-setting.js.map +1 -1
  18. package/dist/cjs/src/table/operation/editor-input.js +2 -0
  19. package/dist/cjs/src/table/operation/editor-input.js.map +1 -0
  20. package/dist/cjs/src/table/operation/event-target.js +1 -1
  21. package/dist/cjs/src/table/operation/event-target.js.map +1 -1
  22. package/dist/cjs/src/table/paste/hooks.js +1 -1
  23. package/dist/cjs/src/table/paste/hooks.js.map +1 -1
  24. package/dist/cjs/src/table/paste/logic.js +1 -1
  25. package/dist/cjs/src/table/paste/logic.js.map +1 -1
  26. package/dist/cjs/src/table/sheet/providers.js +1 -1
  27. package/dist/cjs/src/table/sheet/providers.js.map +1 -1
  28. package/dist/cjs/src/table/table/base.js +1 -1
  29. package/dist/cjs/src/table/table/base.js.map +1 -1
  30. package/dist/esm/src/table/copy/components.js +1 -1
  31. package/dist/esm/src/table/copy/components.js.map +1 -1
  32. package/dist/esm/src/table/edit/ui/base-input.js +1 -1
  33. package/dist/esm/src/table/edit/ui/base-input.js.map +1 -1
  34. package/dist/esm/src/table/edit/ui/select-input.js +1 -1
  35. package/dist/esm/src/table/edit/ui/select-input.js.map +1 -1
  36. package/dist/esm/src/table/libs/generate-validate-function.js +1 -1
  37. package/dist/esm/src/table/libs/generate-validate-function.js.map +1 -1
  38. package/dist/esm/src/table/locale/messages.js +2 -0
  39. package/dist/esm/src/table/locale/messages.js.map +1 -0
  40. package/dist/esm/src/table/locale/provider.js +2 -0
  41. package/dist/esm/src/table/locale/provider.js.map +1 -0
  42. package/dist/esm/src/table/operation/components/key-catcher.js +2 -0
  43. package/dist/esm/src/table/operation/components/key-catcher.js.map +1 -0
  44. package/dist/esm/src/table/operation/components/keyboard-setting.js +1 -1
  45. package/dist/esm/src/table/operation/components/keyboard-setting.js.map +1 -1
  46. package/dist/esm/src/table/operation/editor-input.js +2 -0
  47. package/dist/esm/src/table/operation/editor-input.js.map +1 -0
  48. package/dist/esm/src/table/operation/event-target.js +1 -1
  49. package/dist/esm/src/table/operation/event-target.js.map +1 -1
  50. package/dist/esm/src/table/paste/hooks.js +1 -1
  51. package/dist/esm/src/table/paste/hooks.js.map +1 -1
  52. package/dist/esm/src/table/paste/logic.js +1 -1
  53. package/dist/esm/src/table/paste/logic.js.map +1 -1
  54. package/dist/esm/src/table/sheet/providers.js +1 -1
  55. package/dist/esm/src/table/sheet/providers.js.map +1 -1
  56. package/dist/esm/src/table/table/base.js +1 -1
  57. package/dist/esm/src/table/table/base.js.map +1 -1
  58. package/dist/index.d.ts +45 -29
  59. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"logic.js","sources":["../../../../../src/table/paste/logic.ts"],"sourcesContent":["import { TTableColumn } from \"../table/type\";\n\ntype TPasteArgument = {\n pasteData: string[][];\n currentRows: any[];\n currentCols: TTableColumn<any>[];\n tableArea?: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n pasteArea: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n validators: {\n [key: string]: (value: any) => boolean;\n };\n};\n\ntype TPasteResult =\n | {\n isError: true;\n type:\n | \"ValidationError\"\n | \"NoPasteData\"\n | \"NOT_ENOUGH_ROWS\"\n | \"NOT_ENOUGH_COLUMNS\"\n | \"NOT_EDITABLE_COLUMN\";\n message: string;\n }\n | {\n isError: false;\n updateArgument: {\n newRow: any;\n oldRow: any;\n }[];\n pasteRange: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n };\n\n// A number with thousands separators, as Excel copies formatted numbers.\nconst GROUPED_NUMBER = /^-?\\d{1,3}(,\\d{3})+(\\.\\d+)?$/;\n\n/**\n * Turns pasted text into the form the column's validator expects. For number\n * columns, surrounding spaces and thousands separators (\"1,000\") are removed.\n */\nfunction normalizePastedValue(col: TTableColumn<any>, value: string): string {\n if (col.type !== \"number\") {\n return value;\n }\n\n const trimmed = value.trim();\n return GROUPED_NUMBER.test(trimmed) ? trimmed.replace(/,/g, \"\") : trimmed;\n}\n\nexport function paste(args: TPasteArgument): TPasteResult {\n // ペーストデータの行数と列数を取得\n const pasteDataRowLength = args.pasteData.length;\n const pasteDataColLength = Math.max(\n ...args.pasteData.map((row) => row.length)\n );\n\n // ペーストデータが空の場合は何もしない\n if (pasteDataRowLength === 0 || pasteDataColLength === 0) {\n return {\n isError: true,\n type: \"NoPasteData\",\n message: \"ペーストデータがありません。\",\n };\n }\n\n // Rangeの種類を取得\n const rangeRowLength =\n args.pasteArea.end.rowIndex - args.pasteArea.start.rowIndex + 1;\n const rangeColLength =\n args.pasteArea.end.colIndex - args.pasteArea.start.colIndex + 1;\n\n const pasteRowLength =\n rangeRowLength < pasteDataRowLength ? pasteDataRowLength : rangeRowLength;\n const pasteColLength =\n rangeColLength < pasteDataColLength ? pasteDataColLength : rangeColLength;\n\n // ペースト先の行数が足りない場合はエラー\n if (\n pasteRowLength + args.pasteArea.start.rowIndex >\n args.currentRows.length\n ) {\n return {\n isError: true,\n type: \"NOT_ENOUGH_ROWS\",\n message: \"貼り付け先の行数が足りません。\",\n };\n }\n // ペースト先の列数が足りない場合はエラー\n if (\n pasteColLength + args.pasteArea.start.colIndex >\n args.currentCols.length\n ) {\n return {\n isError: true,\n type: \"NOT_ENOUGH_COLUMNS\",\n message: \"貼り付け先の列数が足りません。\",\n };\n }\n\n // ペースト先の列に編集不可列が含まれている場合はエラー\n for (let i = 0; i < pasteColLength; i++) {\n const col = args.currentCols[args.pasteArea.start.colIndex + i];\n\n if (!col.editable) {\n return {\n isError: true,\n type: \"NOT_EDITABLE_COLUMN\",\n message: `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`,\n };\n }\n }\n\n // ペーストデータのバリデーション\n for (let i = 0; i < pasteDataRowLength; i++) {\n const pasteRow = args.pasteData[i];\n\n for (let j = 0; j < pasteColLength; j++) {\n const colIndexForData = j % pasteRow.length;\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\n const pasteValue = normalizePastedValue(col, pasteRow[colIndexForData]);\n const validate = args.validators[col.key as string];\n\n if (!validate(pasteValue)) {\n return {\n isError: true,\n type: \"ValidationError\",\n message: `バリデーションエラー: ${pasteValue}`,\n };\n }\n }\n }\n\n const updateArguments: { newRow: any; oldRow: any }[] = [];\n\n // ペーストデータを反映\n for (let i = 0; i < pasteRowLength; i++) {\n const pasteRow = args.pasteData[i % pasteDataRowLength];\n const newRow = { ...args.currentRows[args.pasteArea.start.rowIndex + i] };\n let checkUpdatedRow = false;\n\n for (let j = 0; j < pasteColLength; j++) {\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\n const pasteValue = normalizePastedValue(col, pasteRow[j % pasteRow.length]);\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!.value\n : pasteValue;\n if (newRow[col.key] !== value) {\n checkUpdatedRow = true;\n newRow[col.key] = value;\n }\n }\n\n if (checkUpdatedRow) {\n updateArguments.push({\n newRow,\n oldRow: args.currentRows[args.pasteArea.start.rowIndex + i],\n });\n }\n }\n\n return {\n isError: false,\n updateArgument: updateArguments,\n pasteRange: {\n start: {\n rowIndex: args.pasteArea.start.rowIndex,\n colIndex: args.pasteArea.start.colIndex,\n },\n end: {\n rowIndex: args.pasteArea.start.rowIndex + pasteRowLength - 1,\n colIndex: args.pasteArea.start.colIndex + pasteColLength - 1,\n },\n },\n };\n}\n"],"names":["GROUPED_NUMBER","normalizePastedValue","col","value","type","trimmed","trim","test","replace","paste","args","pasteDataRowLength","pasteData","length","pasteDataColLength","Math","max","map","row","isError","message","rangeRowLength","pasteArea","end","rowIndex","start","rangeColLength","colIndex","pasteRowLength","pasteColLength","currentRows","currentCols","i","editable","concat","_a","label","key","pasteRow","j","colIndexForData","pasteValue","validate","validators","updateArguments","newRow","__assign","checkUpdatedRow","Number","options","find","option","push","oldRow","updateArgument","pasteRange"],"mappings":"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"}
1
+ {"version":3,"file":"logic.js","sources":["../../../../../src/table/paste/logic.ts"],"sourcesContent":["import { MESSAGES, TMessages } from \"../locale/messages\";\nimport { TTableColumn } from \"../table/type\";\n\ntype TPasteArgument = {\n pasteData: string[][];\n currentRows: any[];\n currentCols: TTableColumn<any>[];\n tableArea?: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n pasteArea: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n validators: {\n [key: string]: (value: any) => boolean;\n };\n /** Messages for the errors. Japanese when omitted. */\n messages?: TMessages[\"paste\"];\n};\n\ntype TPasteResult =\n | {\n isError: true;\n type:\n | \"ValidationError\"\n | \"NoPasteData\"\n | \"NOT_ENOUGH_ROWS\"\n | \"NOT_ENOUGH_COLUMNS\"\n | \"NOT_EDITABLE_COLUMN\";\n message: string;\n }\n | {\n isError: false;\n updateArgument: {\n newRow: any;\n oldRow: any;\n }[];\n pasteRange: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n };\n\n// A number with thousands separators, as Excel copies formatted numbers.\nconst GROUPED_NUMBER = /^-?\\d{1,3}(,\\d{3})+(\\.\\d+)?$/;\n\n/**\n * Turns pasted text into the form the column's validator expects. For number\n * columns, surrounding spaces and thousands separators (\"1,000\") are removed.\n */\nfunction normalizePastedValue(col: TTableColumn<any>, value: string): string {\n if (col.type !== \"number\") {\n return value;\n }\n\n const trimmed = value.trim();\n return GROUPED_NUMBER.test(trimmed) ? trimmed.replace(/,/g, \"\") : trimmed;\n}\n\nexport function paste(args: TPasteArgument): TPasteResult {\n const messages = args.messages ?? MESSAGES.ja.paste;\n\n // ペーストデータの行数と列数を取得\n const pasteDataRowLength = args.pasteData.length;\n const pasteDataColLength = Math.max(\n ...args.pasteData.map((row) => row.length)\n );\n\n // ペーストデータが空の場合は何もしない\n if (pasteDataRowLength === 0 || pasteDataColLength === 0) {\n return {\n isError: true,\n type: \"NoPasteData\",\n message: messages.noData,\n };\n }\n\n // Rangeの種類を取得\n const rangeRowLength =\n args.pasteArea.end.rowIndex - args.pasteArea.start.rowIndex + 1;\n const rangeColLength =\n args.pasteArea.end.colIndex - args.pasteArea.start.colIndex + 1;\n\n const pasteRowLength =\n rangeRowLength < pasteDataRowLength ? pasteDataRowLength : rangeRowLength;\n const pasteColLength =\n rangeColLength < pasteDataColLength ? pasteDataColLength : rangeColLength;\n\n // ペースト先の行数が足りない場合はエラー\n if (\n pasteRowLength + args.pasteArea.start.rowIndex >\n args.currentRows.length\n ) {\n return {\n isError: true,\n type: \"NOT_ENOUGH_ROWS\",\n message: messages.notEnoughRows,\n };\n }\n // ペースト先の列数が足りない場合はエラー\n if (\n pasteColLength + args.pasteArea.start.colIndex >\n args.currentCols.length\n ) {\n return {\n isError: true,\n type: \"NOT_ENOUGH_COLUMNS\",\n message: messages.notEnoughColumns,\n };\n }\n\n // ペースト先の列に編集不可列が含まれている場合はエラー\n for (let i = 0; i < pasteColLength; i++) {\n const col = args.currentCols[args.pasteArea.start.colIndex + i];\n\n if (!col.editable) {\n return {\n isError: true,\n type: \"NOT_EDITABLE_COLUMN\",\n message: messages.notEditableColumn(\n col.label ?? (col.key as string)\n ),\n };\n }\n }\n\n // ペーストデータのバリデーション\n for (let i = 0; i < pasteDataRowLength; i++) {\n const pasteRow = args.pasteData[i];\n\n for (let j = 0; j < pasteColLength; j++) {\n const colIndexForData = j % pasteRow.length;\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\n const pasteValue = normalizePastedValue(col, pasteRow[colIndexForData]);\n const validate = args.validators[col.key as string];\n\n if (!validate(pasteValue)) {\n return {\n isError: true,\n type: \"ValidationError\",\n message: messages.invalidValue(pasteValue),\n };\n }\n }\n }\n\n const updateArguments: { newRow: any; oldRow: any }[] = [];\n\n // ペーストデータを反映\n for (let i = 0; i < pasteRowLength; i++) {\n const pasteRow = args.pasteData[i % pasteDataRowLength];\n const newRow = { ...args.currentRows[args.pasteArea.start.rowIndex + i] };\n let checkUpdatedRow = false;\n\n for (let j = 0; j < pasteColLength; j++) {\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\n const pasteValue = normalizePastedValue(col, pasteRow[j % pasteRow.length]);\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!.value\n : pasteValue;\n if (newRow[col.key] !== value) {\n checkUpdatedRow = true;\n newRow[col.key] = value;\n }\n }\n\n if (checkUpdatedRow) {\n updateArguments.push({\n newRow,\n oldRow: args.currentRows[args.pasteArea.start.rowIndex + i],\n });\n }\n }\n\n return {\n isError: false,\n updateArgument: updateArguments,\n pasteRange: {\n start: {\n rowIndex: args.pasteArea.start.rowIndex,\n colIndex: args.pasteArea.start.colIndex,\n },\n end: {\n rowIndex: args.pasteArea.start.rowIndex + pasteRowLength - 1,\n colIndex: args.pasteArea.start.colIndex + pasteColLength - 1,\n },\n },\n };\n}\n"],"names":["GROUPED_NUMBER","normalizePastedValue","col","value","type","trimmed","trim","test","replace","paste","args","messages","_a","MESSAGES","ja","pasteDataRowLength","pasteData","length","pasteDataColLength","Math","max","map","row","isError","message","noData","rangeRowLength","pasteArea","end","rowIndex","start","rangeColLength","colIndex","pasteRowLength","pasteColLength","currentRows","notEnoughRows","currentCols","notEnoughColumns","i","editable","notEditableColumn","_b","label","key","pasteRow","j","colIndexForData","pasteValue","validate","validators","invalidValue","updateArguments","newRow","__assign","checkUpdatedRow","Number","options","find","option","push","oldRow","updateArgument","pasteRange"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as r}from"react/jsx-runtime";import{createContext as e,useContext as n,useMemo as t}from"react";import{generateValidateFunction as i}from"../libs/generate-validate-function.js";var o=e({cols:[],validates:{}});function u(e){var n=e.children,u=e.cols,c=e.errorHandler,a=t((function(){return u.reduce((function(r,e){return r[e.key]=i(e,c),r}),{})}),[u]),l=t((function(){return{cols:u,validates:a}}),[u]);return r(o.Provider,{value:l,children:n})}function c(){return n(o).cols}function a(r){return n(o).validates[r]}function l(){return n(o).validates}export{u as ColumnsProvider,a as useColumnValidateContext,l as useColumnValidatesContext,c as useColumnsContext};
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import{createContext as n,useContext as t,useRef as e,useEffect as i,useMemo as o}from"react";import{generateValidateFunction as c}from"../libs/generate-validate-function.js";import{useMessages as u}from"../locale/provider.js";var a=n({cols:[],validates:{}});function l(n){var t=n.children,l=n.cols,f=n.errorHandler,s=u(),v=e(f);i((function(){v.current=f}));var d=o((function(){var r=function(r){v.current?v.current(r):alert(s.validation(r))};return l.reduce((function(n,t){return n[t.key]=c(t,r),n}),{})}),[l,s]),m=o((function(){return{cols:l,validates:d}}),[l,d]);return r(a.Provider,{value:m,children:t})}function f(){return t(a).cols}function s(r){return t(a).validates[r]}function v(){return t(a).validates}export{l as ColumnsProvider,s as useColumnValidateContext,v as useColumnValidatesContext,f as useColumnsContext};
2
2
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sources":["../../../../../src/table/sheet/providers.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport {\n generateValidateFunction,\n TErrorValidation,\n} from \"../libs/generate-validate-function\";\n\nconst ColsContext = createContext<{\n cols: TTableColumn<DataRecord>[];\n validates: { [key: string]: (value: any) => boolean };\n}>({\n cols: [],\n validates: {},\n});\n\nexport function ColumnsProvider<T extends DataRecord>({\n children,\n cols,\n errorHandler,\n}: {\n children: React.ReactNode;\n cols: TTableColumn<T>[];\n errorHandler?: (errors: TErrorValidation[]) => void;\n}) {\n const validates = useMemo(\n () =>\n cols.reduce((acc, col) => {\n const { key } = col;\n\n acc[key] = generateValidateFunction(col as any, errorHandler);\n\n return acc;\n }, {} as { [key in keyof T]: (value: any) => boolean }),\n [cols]\n );\n\n const state = useMemo(() => ({ cols, validates }), [cols]);\n\n return (\n <ColsContext.Provider\n value={\n state as {\n cols: TTableColumn<DataRecord>[];\n validates: { [key: string]: (value: any) => boolean };\n }\n }\n >\n {children}\n </ColsContext.Provider>\n );\n}\n\nexport function useColumnsContext() {\n return useContext(ColsContext).cols;\n}\n\nexport function useColumnValidateContext(key: string) {\n return useContext(ColsContext).validates[key];\n}\n\nexport function useColumnValidatesContext() {\n return useContext(ColsContext).validates;\n}\n"],"names":["ColsContext","createContext","cols","validates","ColumnsProvider","_a","children","errorHandler","useMemo","reduce","acc","col","key","generateValidateFunction","state","_jsx","Provider","value","useColumnsContext","useContext","useColumnValidateContext","useColumnValidatesContext"],"mappings":"yMASA,IAAMA,EAAcC,EAGjB,CACDC,KAAM,GACNC,UAAW,CAAA,IAGP,SAAUC,EAAsCC,GACpD,IAAAC,aACAJ,EAAIG,EAAAH,KACJK,EAAYF,EAAAE,aAMNJ,EAAYK,GAChB,WACE,OAAAN,EAAKO,QAAO,SAACC,EAAKC,GAKhB,OAFAD,EAFgBC,EAAGC,KAERC,EAAyBF,EAAYJ,GAEzCG,CACT,GAAG,CAAA,EANH,GAOF,CAACR,IAGGY,EAAQN,GAAQ,WAAM,MAAA,CAAGN,KAAIA,EAAEC,UAASA,EAAlB,GAAuB,CAACD,IAEpD,OACEa,EAACf,EAAYgB,SAAQ,CACnBC,MACEH,EAGCR,SAGFA,GAGP,UAEgBY,IACd,OAAOC,EAAWnB,GAAaE,IACjC,CAEM,SAAUkB,EAAyBR,GACvC,OAAOO,EAAWnB,GAAaG,UAAUS,EAC3C,UAEgBS,IACd,OAAOF,EAAWnB,GAAaG,SACjC"}
1
+ {"version":3,"file":"providers.js","sources":["../../../../../src/table/sheet/providers.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { createContext, useContext, useEffect, useMemo, useRef } from \"react\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport {\n generateValidateFunction,\n TErrorValidation,\n} from \"../libs/generate-validate-function\";\nimport { useMessages } from \"../locale/provider\";\n\nconst ColsContext = createContext<{\n cols: TTableColumn<DataRecord>[];\n validates: { [key: string]: (value: any) => boolean };\n}>({\n cols: [],\n validates: {},\n});\n\nexport function ColumnsProvider<T extends DataRecord>({\n children,\n cols,\n errorHandler,\n}: {\n children: React.ReactNode;\n cols: TTableColumn<T>[];\n errorHandler?: (errors: TErrorValidation[]) => void;\n}) {\n const messages = useMessages();\n\n // Call the latest errorHandler without rebuilding the validators (and\n // re-rendering every cell) when the app passes a new function.\n const errorHandlerRef = useRef(errorHandler);\n useEffect(() => {\n errorHandlerRef.current = errorHandler;\n });\n\n const validates = useMemo(() => {\n const handleErrors = (errors: TErrorValidation[]) => {\n if (errorHandlerRef.current) {\n errorHandlerRef.current(errors);\n } else {\n alert(messages.validation(errors));\n }\n };\n\n return cols.reduce((acc, col) => {\n const { key } = col;\n\n acc[key] = generateValidateFunction(col as any, handleErrors);\n\n return acc;\n }, {} as { [key in keyof T]: (value: any) => boolean });\n }, [cols, messages]);\n\n const state = useMemo(() => ({ cols, validates }), [cols, validates]);\n\n return (\n <ColsContext.Provider\n value={\n state as {\n cols: TTableColumn<DataRecord>[];\n validates: { [key: string]: (value: any) => boolean };\n }\n }\n >\n {children}\n </ColsContext.Provider>\n );\n}\n\nexport function useColumnsContext() {\n return useContext(ColsContext).cols;\n}\n\nexport function useColumnValidateContext(key: string) {\n return useContext(ColsContext).validates[key];\n}\n\nexport function useColumnValidatesContext() {\n return useContext(ColsContext).validates;\n}\n"],"names":["ColsContext","createContext","cols","validates","ColumnsProvider","_a","children","errorHandler","messages","useMessages","errorHandlerRef","useRef","useEffect","current","useMemo","handleErrors","errors","alert","validation","reduce","acc","col","key","generateValidateFunction","state","_jsx","Provider","value","useColumnsContext","useContext","useColumnValidateContext","useColumnValidatesContext"],"mappings":"wRAUA,IAAMA,EAAcC,EAGjB,CACDC,KAAM,GACNC,UAAW,CAAA,IAGP,SAAUC,EAAsCC,GACpD,IAAAC,aACAJ,EAAIG,EAAAH,KACJK,EAAYF,EAAAE,aAMNC,EAAWC,IAIXC,EAAkBC,EAAOJ,GAC/BK,GAAU,WACRF,EAAgBG,QAAUN,CAC5B,IAEA,IAAMJ,EAAYW,GAAQ,WACxB,IAAMC,EAAe,SAACC,GAChBN,EAAgBG,QAClBH,EAAgBG,QAAQG,GAExBC,MAAMT,EAASU,WAAWF,GAE9B,EAEA,OAAOd,EAAKiB,QAAO,SAACC,EAAKC,GAKvB,OAFAD,EAFgBC,EAAGC,KAERC,EAAyBF,EAAYN,GAEzCK,CACT,GAAG,CAAA,EACL,GAAG,CAAClB,EAAMM,IAEJgB,EAAQV,GAAQ,WAAM,MAAA,CAAGZ,KAAIA,EAAEC,YAAT,GAAuB,CAACD,EAAMC,IAE1D,OACEsB,EAACzB,EAAY0B,SAAQ,CACnBC,MACEH,EAGClB,SAGFA,GAGP,UAEgBsB,IACd,OAAOC,EAAW7B,GAAaE,IACjC,CAEM,SAAU4B,EAAyBR,GACvC,OAAOO,EAAW7B,GAAaG,UAAUmB,EAC3C,UAEgBS,IACd,OAAOF,EAAW7B,GAAaG,SACjC"}
@@ -1,2 +1,2 @@
1
- "use client";import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useTable as i}from"./hook.js";import{TableHeaderElement as t}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as d,Pagenation as l}from"../pagenation/components.js";import"../filter-v2/context.js";import{FilterProvider as s}from"../filter-v2/provider.js";import"../sort/icon.js";import{SortProvider as c}from"../sort/provider.js";import{ColumnsProvider as a}from"../sheet/providers.js";import{CheckboxProvider as m,CheckboxStatusProvider as p}from"../checkbox/provider.js";import{EditProvider as h}from"../edit/provider.js";import{TablePropertyProvider as f}from"../table-property/provider.js";import{KeyboardSetting as v}from"../operation/components/keyboard-setting.js";import{Row as x}from"../sheet/components.js";import{PasteProvider as j}from"../paste/provider.js";import{generateFormattingString as g}from"../libs/conditional-formatting.js";import{Editor as u}from"../edit/ui/editor.js";import{RangeProvider as w,TestRange as b}from"../range/provider.js";import{CopyProvider as k}from"../copy/provider.js";import{CopiedMessage as y}from"../copy/components.js";import{TableIdGeneratorProvider as C,useTableIdGenerator as N}from"../id/provider.js";import{TableHeader as R}from"../header/header-v2.js";import"../header/columns-width/context.js";import{ColumnsWidthProvider as I,ColumnsWidthStyle as S}from"../header/columns-width/provider.js";import"../header/x-scroll-position/context.js";import{ScrollXPositionProvider as F}from"../header/x-scroll-position/provider.js";import{Frame as P}from"../frame/frame.js";import{ComponentProvider as H,useGenerateSortButton as W}from"./component-provider/provider.js";import{SelectBoxProvider as D}from"../../select-box/provider.js";function T(i){var t,d,l,x;return r(H,{children:r(C,{id:i.id,children:r(I,{cols:i.cols,children:r(s,{initialConditions:[],children:r(c,{initialCondition:null===(t=i.initialCondition)||void 0===t?void 0:t.sort,children:r(n,{rowCount:i.rows.length,perPage:null===(l=null===(d=i.initialCondition)||void 0===d?void 0:d.pagenation)||void 0===l?void 0:l.rowCountPerPage,children:r(m,{checkbox:i.checkbox,children:r(p,{checkboxCount:i.rows.length,children:r(a,{cols:i.cols,errorHandler:i.errorHandler,children:r(h,{children:r(f,{children:r(w,{children:e(k,{rows:i.rows,cols:i.cols,children:[r(y,{}),e(j,{rows:i.rows,cols:i.cols,onUpdateRowFunction:i.onUpdateRow,onPasteError:i.onPasteError,children:[r(v,{enableDeprecatedCopy:null===(x=i.deprecatedOptions)||void 0===x?void 0:x.enableDeprecatedCopy}),r(F,{children:r(A,o({},i))})]})]})})})})})})})})})})})})})}function A(o){var n=i(o),s=n.cols,c=n.rowMaps,a=n.pageRowIds,m=N(),p=W();return e("div",{className:"w-full max-w-full max-h-full",children:[e("div",{children:[r(R,{cols:s,checkbox:!!o.checkbox,rows:o.rows,maxWidth:o.maxWidth,generateSortButton:p}),r(S,{scopeId:m.getTableId()}),r(D,{children:e(P,{id:m.getTableId(),maxHeight:o.maxHeight,maxWidth:o.maxWidth,displayScroll:!1,children:[e("table",{className:"table",children:[r("thead",{children:e("tr",{children:[o.checkbox&&r("th",{className:"p-px"}),s.map((function(o){return r(t,{keyname:o.key.toString()},o.key.toString())}))]})}),e("tbody",{children:[0===a.length&&r("tr",{children:r("td",{colSpan:s.length+(o.checkbox?1:0),className:"px-px py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),a.map((function(e,i){return r(x,{existCheckbox:!!o.checkbox,rowIndex:i,row:c[e].data,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:g(c[e].data,s,o.conditionalFormattings)},e)}))]})]}),r(b,{}),r(u,{rowMaps:c,pageRowIds:a})]})})]}),e("div",{className:"mt-1",children:[r(d,{}),r("div",{className:"mt-2",children:r(l,{})})]})]})}export{T as default};
1
+ "use client";import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useTable as i}from"./hook.js";import{TableHeaderElement as t}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as l,Pagenation as d}from"../pagenation/components.js";import"../filter-v2/context.js";import{FilterProvider as c}from"../filter-v2/provider.js";import"../sort/icon.js";import{SortProvider as s}from"../sort/provider.js";import{ColumnsProvider as a}from"../sheet/providers.js";import{CheckboxProvider as m,CheckboxStatusProvider as p}from"../checkbox/provider.js";import{EditProvider as h}from"../edit/provider.js";import{TablePropertyProvider as f}from"../table-property/provider.js";import{KeyboardSetting as v}from"../operation/components/keyboard-setting.js";import{KeyCatcher as j}from"../operation/components/key-catcher.js";import{Row as x}from"../sheet/components.js";import{PasteProvider as u}from"../paste/provider.js";import{generateFormattingString as g}from"../libs/conditional-formatting.js";import{Editor as w}from"../edit/ui/editor.js";import{RangeProvider as b,TestRange as k}from"../range/provider.js";import{CopyProvider as y}from"../copy/provider.js";import{CopiedMessage as C}from"../copy/components.js";import{TableIdGeneratorProvider as N,useTableIdGenerator as R}from"../id/provider.js";import{TableHeader as I}from"../header/header-v2.js";import"../header/columns-width/context.js";import{ColumnsWidthProvider as S,ColumnsWidthStyle as F}from"../header/columns-width/provider.js";import"../header/x-scroll-position/context.js";import{ScrollXPositionProvider as P}from"../header/x-scroll-position/provider.js";import{Frame as H}from"../frame/frame.js";import{ComponentProvider as W,useGenerateSortButton as D}from"./component-provider/provider.js";import{SelectBoxProvider as T}from"../../select-box/provider.js";import{LocaleProvider as A}from"../locale/provider.js";function E(i){var t,l,d,j,x,g;return r(A,{locale:i.locale,children:r(W,{children:r(N,{id:i.id,children:r(S,{cols:i.cols,children:r(c,{initialConditions:[],children:r(s,{initialCondition:null===(t=i.initialCondition)||void 0===t?void 0:t.sort,children:r(n,{rowCount:i.rows.length,perPage:null===(x=null!==(d=null===(l=i.initialCondition)||void 0===l?void 0:l.pagination)&&void 0!==d?d:null===(j=i.initialCondition)||void 0===j?void 0:j.pagenation)||void 0===x?void 0:x.rowCountPerPage,children:r(m,{checkbox:i.checkbox,children:r(p,{checkboxCount:i.rows.length,children:r(a,{cols:i.cols,errorHandler:i.errorHandler,children:r(h,{children:r(f,{children:r(b,{children:e(y,{rows:i.rows,cols:i.cols,children:[r(C,{}),e(u,{rows:i.rows,cols:i.cols,onUpdateRowFunction:i.onUpdateRow,onPasteError:i.onPasteError,children:[r(v,{enableDeprecatedCopy:null===(g=i.deprecatedOptions)||void 0===g?void 0:g.enableDeprecatedCopy}),r(P,{children:r(M,o({},i))})]})]})})})})})})})})})})})})})})}function M(o){var n=i(o),c=n.cols,s=n.rowMaps,a=n.pageRowIds,m=R(),p=D();return e("div",{className:"w-full max-w-full max-h-full",children:[e("div",{children:[r(I,{cols:c,checkbox:!!o.checkbox,rows:o.rows,maxWidth:o.maxWidth,generateSortButton:p}),r(F,{scopeId:m.getTableId()}),r(T,{children:e(H,{id:m.getTableId(),maxHeight:o.maxHeight,maxWidth:o.maxWidth,displayScroll:!1,children:[e("table",{className:"table",children:[r("thead",{children:e("tr",{children:[o.checkbox&&r("th",{className:"p-px"}),c.map((function(o){return r(t,{keyname:o.key.toString()},o.key.toString())}))]})}),e("tbody",{children:[0===a.length&&r("tr",{children:r("td",{colSpan:c.length+(o.checkbox?1:0),className:"px-px py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),a.map((function(e,i){return r(x,{existCheckbox:!!o.checkbox,rowIndex:i,row:s[e].data,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:g(s[e].data,c,o.conditionalFormattings)},e)}))]})]}),r(k,{}),r(j,{}),r(w,{rowMaps:s,pageRowIds:a})]})})]}),e("div",{className:"mt-1",children:[r(l,{}),r("div",{className:"mt-2",children:r(d,{})})]})]})}export{E as default};
2
2
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sources":["../../../../../src/table/table/base.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTable } from \"./hook\";\nimport { TableHeaderElement } from \"../header/header\";\nimport {\n DataRecord,\n TConditionalFormatting,\n TPropsTable,\n TTableColumn,\n} from \"./type\";\nimport { PagenationProvider, DisplayRange, Pagenation } from \"../pagenation\";\nimport { FilterProvider } from \"../filter-v2\";\nimport { SortProvider } from \"../sort\";\nimport { ColumnsProvider } from \"../sheet/providers\";\nimport { CheckboxProvider, CheckboxStatusProvider } from \"../checkbox/provider\";\nimport { EditProvider } from \"../edit/provider\";\nimport { TablePropertyProvider } from \"../table-property/provider\";\nimport { KeyboardSetting } from \"../operation/components/keyboard-setting\";\nimport { Row } from \"../sheet/components\";\nimport { PasteProvider } from \"../paste/provider\";\nimport { generateFormattingString } from \"../libs/conditional-formatting\";\nimport { Editor } from \"../edit/ui/editor\";\nimport { RangeProvider, TestRange } from \"../range/provider\";\nimport { CopyProvider } from \"../copy/provider\";\nimport { CopiedMessage } from \"../copy/components\";\nimport { TableIdGeneratorProvider, useTableIdGenerator } from \"../id\";\nimport { TableHeader } from \"../header/header-v2\";\nimport {\n ColumnsWidthProvider,\n ColumnsWidthStyle,\n ScrollXPositionProvider,\n} from \"../header\";\nimport { Frame } from \"../frame\";\nimport { ComponentProvider } from \"./component-provider\";\nimport { useGenerateSortButton } from \"./component-provider/provider\";\nimport { SelectBoxProvider } from \"../../select-box/provider\";\n\nexport default function Table<T extends DataRecord>(props: TPropsTable<T>) {\n return (\n <ComponentProvider>\n <TableIdGeneratorProvider id={props.id}>\n <ColumnsWidthProvider cols={props.cols as TTableColumn<DataRecord>[]}>\n <FilterProvider initialConditions={[]}>\n <SortProvider initialCondition={props.initialCondition?.sort}>\n <PagenationProvider\n rowCount={props.rows.length}\n perPage={props.initialCondition?.pagenation?.rowCountPerPage}\n >\n <CheckboxProvider checkbox={props.checkbox}>\n <CheckboxStatusProvider checkboxCount={props.rows.length}>\n <ColumnsProvider\n cols={props.cols}\n errorHandler={props.errorHandler}\n >\n <EditProvider>\n <TablePropertyProvider>\n <RangeProvider>\n <CopyProvider rows={props.rows} cols={props.cols}>\n <CopiedMessage />\n <PasteProvider\n rows={props.rows}\n cols={props.cols}\n onUpdateRowFunction={props.onUpdateRow}\n onPasteError={props.onPasteError}\n >\n <KeyboardSetting\n enableDeprecatedCopy={\n props.deprecatedOptions\n ?.enableDeprecatedCopy\n }\n />\n <ScrollXPositionProvider>\n <BaseTable {...props} />\n </ScrollXPositionProvider>\n </PasteProvider>\n </CopyProvider>\n </RangeProvider>\n </TablePropertyProvider>\n </EditProvider>\n </ColumnsProvider>\n </CheckboxStatusProvider>\n </CheckboxProvider>\n </PagenationProvider>\n </SortProvider>\n </FilterProvider>\n </ColumnsWidthProvider>\n </TableIdGeneratorProvider>\n </ComponentProvider>\n );\n}\n\nfunction BaseTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { cols, rowMaps, pageRowIds } = useTable<T>(props);\n const IdGenerator = useTableIdGenerator();\n const generateSortButton = useGenerateSortButton();\n\n return (\n <div className=\"w-full max-w-full max-h-full\">\n <div>\n <TableHeader\n cols={cols}\n checkbox={!!props.checkbox}\n rows={props.rows}\n maxWidth={props.maxWidth}\n generateSortButton={generateSortButton}\n />\n\n <ColumnsWidthStyle scopeId={IdGenerator.getTableId()} />\n <SelectBoxProvider>\n <Frame\n id={IdGenerator.getTableId()}\n maxHeight={props.maxHeight}\n maxWidth={props.maxWidth}\n displayScroll={false}\n >\n <table className={`table`}>\n <thead>\n <tr>\n {props.checkbox && <th className=\"p-px\"></th>}\n {cols.map((col) => (\n <TableHeaderElement\n key={col.key.toString()}\n keyname={col.key.toString()}\n />\n ))}\n </tr>\n </thead>\n <tbody>\n {pageRowIds.length === 0 && (\n <tr>\n <td\n colSpan={cols.length + (props.checkbox ? 1 : 0)}\n className=\"px-px py-5\"\n >\n <p className=\"text-center font-bold text-lg\">NO DATA</p>\n </td>\n </tr>\n )}\n {pageRowIds.map((rowId, i) => (\n <Row\n key={rowId}\n existCheckbox={!!props.checkbox}\n rowIndex={i}\n row={rowMaps[rowId].data}\n cols={props.cols as TTableColumn<DataRecord>[]}\n onClickRow={props.onClickRow}\n applyRowFormatting={props.applyRowFormatting}\n conditionalFormattingString={generateFormattingString(\n rowMaps[rowId].data,\n cols as TTableColumn<DataRecord>[],\n props.conditionalFormattings as TConditionalFormatting<DataRecord>[]\n )}\n />\n ))}\n </tbody>\n </table>\n <TestRange />\n <Editor rowMaps={rowMaps} pageRowIds={pageRowIds} />\n </Frame>\n </SelectBoxProvider>\n </div>\n <div className=\"mt-1\">\n <DisplayRange />\n <div className=\"mt-2\">\n <Pagenation />\n </div>\n </div>\n </div>\n );\n}\n"],"names":["Table","props","_jsx","ComponentProvider","children","TableIdGeneratorProvider","id","ColumnsWidthProvider","cols","FilterProvider","initialConditions","SortProvider","initialCondition","_a","sort","PagenationProvider","rowCount","rows","length","perPage","_c","_b","pagenation","rowCountPerPage","CheckboxProvider","checkbox","CheckboxStatusProvider","checkboxCount","ColumnsProvider","errorHandler","EditProvider","TablePropertyProvider","RangeProvider","_jsxs","CopyProvider","CopiedMessage","PasteProvider","onUpdateRowFunction","onUpdateRow","onPasteError","KeyboardSetting","enableDeprecatedCopy","deprecatedOptions","_d","ScrollXPositionProvider","BaseTable","__assign","useTable","rowMaps","pageRowIds","IdGenerator","useTableIdGenerator","generateSortButton","useGenerateSortButton","className","TableHeader","maxWidth","ColumnsWidthStyle","scopeId","getTableId","SelectBoxProvider","Frame","maxHeight","displayScroll","map","col","TableHeaderElement","keyname","key","toString","colSpan","rowId","i","Row","existCheckbox","rowIndex","row","data","onClickRow","applyRowFormatting","conditionalFormattingString","generateFormattingString","conditionalFormattings","TestRange","Editor","DisplayRange","Pagenation"],"mappings":"q1DAqCc,SAAUA,EAA4BC,eAClD,OACEC,EAACC,EAAiB,CAAAC,SAChBF,EAACG,EAAwB,CAACC,GAAIL,EAAMK,GAAEF,SACpCF,EAACK,EAAoB,CAACC,KAAMP,EAAMO,KAAkCJ,SAClEF,EAACO,EAAc,CAACC,kBAAmB,YACjCR,EAACS,GAAaC,iBAAwC,UAAtBX,EAAMW,wBAAgB,IAAAC,OAAA,EAAAA,EAAEC,cACtDZ,EAACa,GACCC,SAAUf,EAAMgB,KAAKC,OACrBC,gBAASC,EAAsB,UAAtBnB,EAAMW,wBAAgB,IAAAS,OAAA,EAAAA,EAAEC,iCAAYC,gBAAenB,SAE5DF,EAACsB,EAAgB,CAACC,SAAUxB,EAAMwB,SAAQrB,SACxCF,EAACwB,EAAsB,CAACC,cAAe1B,EAAMgB,KAAKC,OAAMd,SACtDF,EAAC0B,EAAe,CACdpB,KAAMP,EAAMO,KACZqB,aAAc5B,EAAM4B,sBAEpB3B,EAAC4B,YACC5B,EAAC6B,YACC7B,EAAC8B,YACCC,EAACC,GAAajB,KAAMhB,EAAMgB,KAAMT,KAAMP,EAAMO,eAC1CN,EAACiC,MACDF,EAACG,EAAa,CACZnB,KAAMhB,EAAMgB,KACZT,KAAMP,EAAMO,KACZ6B,oBAAqBpC,EAAMqC,YAC3BC,aAActC,EAAMsC,uBAEpBrC,EAACsC,GACCC,qBACyB,UAAvBxC,EAAMyC,yBAAiB,IAAAC,OAAA,EAAAA,EACnBF,uBAGRvC,EAAC0C,EAAuB,CAAAxC,SACtBF,EAAC2C,EAASC,EAAA,CAAA,EAAK7C,mCAiBjD,CAEA,SAAS4C,EAAgC5C,GACjC,IAAAY,EAAgCkC,EAAY9C,GAA1CO,EAAIK,EAAAL,KAAEwC,EAAOnC,EAAAmC,QAAEC,eACjBC,EAAcC,IACdC,EAAqBC,IAE3B,OACEpB,EAAA,MAAA,CAAKqB,UAAU,+BAA8BlD,SAAA,CAC3C6B,EAAA,MAAA,CAAA7B,SAAA,CACEF,EAACqD,EAAW,CACV/C,KAAMA,EACNiB,WAAYxB,EAAMwB,SAClBR,KAAMhB,EAAMgB,KACZuC,SAAUvD,EAAMuD,SAChBJ,mBAAoBA,IAGtBlD,EAACuD,GAAkBC,QAASR,EAAYS,eACxCzD,EAAC0D,EAAiB,CAAAxD,SAChB6B,EAAC4B,EAAK,CACJvD,GAAI4C,EAAYS,aAChBG,UAAW7D,EAAM6D,UACjBN,SAAUvD,EAAMuD,SAChBO,eAAe,YAEf9B,EAAA,QAAA,CAAOqB,UAAW,QAAOlD,SAAA,CACvBF,EAAA,QAAA,CAAAE,SACE6B,EAAA,KAAA,CAAA7B,SAAA,CACGH,EAAMwB,UAAYvB,EAAA,KAAA,CAAIoD,UAAU,SAChC9C,EAAKwD,KAAI,SAACC,GAAQ,OACjB/D,EAACgE,EAAkB,CAEjBC,QAASF,EAAIG,IAAIC,YADZJ,EAAIG,IAAIC,WAFE,SAQvBpC,EAAA,QAAA,CAAA7B,SAAA,CACyB,IAAtB6C,EAAW/B,QACVhB,iBACEA,EAAA,KAAA,CACEoE,QAAS9D,EAAKU,QAAUjB,EAAMwB,SAAW,EAAI,GAC7C6B,UAAU,aAAYlD,SAEtBF,EAAA,IAAA,CAAGoD,UAAU,gCAA+BlD,SAAA,gBAIjD6C,EAAWe,KAAI,SAACO,EAAOC,GAAM,OAC5BtE,EAACuE,EAAG,CAEFC,gBAAiBzE,EAAMwB,SACvBkD,SAAUH,EACVI,IAAK5B,EAAQuB,GAAOM,KACpBrE,KAAMP,EAAMO,KACZsE,WAAY7E,EAAM6E,WAClBC,mBAAoB9E,EAAM8E,mBAC1BC,4BAA6BC,EAC3BjC,EAAQuB,GAAOM,KACfrE,EACAP,EAAMiF,yBAVHX,EAFqB,UAkBlCrE,EAACiF,EAAS,CAAA,GACVjF,EAACkF,EAAM,CAACpC,QAASA,EAASC,WAAYA,YAI5ChB,EAAA,MAAA,CAAKqB,UAAU,OAAMlD,SAAA,CACnBF,EAACmF,EAAY,CAAA,GACbnF,EAAA,MAAA,CAAKoD,UAAU,OAAMlD,SACnBF,EAACoF,EAAU,CAAA,UAKrB"}
1
+ {"version":3,"file":"base.js","sources":["../../../../../src/table/table/base.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTable } from \"./hook\";\nimport { TableHeaderElement } from \"../header/header\";\nimport {\n DataRecord,\n TConditionalFormatting,\n TPropsTable,\n TTableColumn,\n} from \"./type\";\nimport { PagenationProvider, DisplayRange, Pagenation } from \"../pagenation\";\nimport { FilterProvider } from \"../filter-v2\";\nimport { SortProvider } from \"../sort\";\nimport { ColumnsProvider } from \"../sheet/providers\";\nimport { CheckboxProvider, CheckboxStatusProvider } from \"../checkbox/provider\";\nimport { EditProvider } from \"../edit/provider\";\nimport { TablePropertyProvider } from \"../table-property/provider\";\nimport { KeyboardSetting } from \"../operation/components/keyboard-setting\";\nimport { KeyCatcher } from \"../operation/components/key-catcher\";\nimport { Row } from \"../sheet/components\";\nimport { PasteProvider } from \"../paste/provider\";\nimport { generateFormattingString } from \"../libs/conditional-formatting\";\nimport { Editor } from \"../edit/ui/editor\";\nimport { RangeProvider, TestRange } from \"../range/provider\";\nimport { CopyProvider } from \"../copy/provider\";\nimport { CopiedMessage } from \"../copy/components\";\nimport { TableIdGeneratorProvider, useTableIdGenerator } from \"../id\";\nimport { TableHeader } from \"../header/header-v2\";\nimport {\n ColumnsWidthProvider,\n ColumnsWidthStyle,\n ScrollXPositionProvider,\n} from \"../header\";\nimport { Frame } from \"../frame\";\nimport { ComponentProvider } from \"./component-provider\";\nimport { useGenerateSortButton } from \"./component-provider/provider\";\nimport { SelectBoxProvider } from \"../../select-box/provider\";\nimport { LocaleProvider } from \"../locale/provider\";\n\nexport default function Table<T extends DataRecord>(props: TPropsTable<T>) {\n return (\n <LocaleProvider locale={props.locale}>\n <ComponentProvider>\n <TableIdGeneratorProvider id={props.id}>\n <ColumnsWidthProvider cols={props.cols as TTableColumn<DataRecord>[]}>\n <FilterProvider initialConditions={[]}>\n <SortProvider initialCondition={props.initialCondition?.sort}>\n <PagenationProvider\n rowCount={props.rows.length}\n perPage={\n (\n props.initialCondition?.pagination ??\n props.initialCondition?.pagenation\n )?.rowCountPerPage\n }\n >\n <CheckboxProvider checkbox={props.checkbox}>\n <CheckboxStatusProvider checkboxCount={props.rows.length}>\n <ColumnsProvider\n cols={props.cols}\n errorHandler={props.errorHandler}\n >\n <EditProvider>\n <TablePropertyProvider>\n <RangeProvider>\n <CopyProvider rows={props.rows} cols={props.cols}>\n <CopiedMessage />\n <PasteProvider\n rows={props.rows}\n cols={props.cols}\n onUpdateRowFunction={props.onUpdateRow}\n onPasteError={props.onPasteError}\n >\n <KeyboardSetting\n enableDeprecatedCopy={\n props.deprecatedOptions\n ?.enableDeprecatedCopy\n }\n />\n <ScrollXPositionProvider>\n <BaseTable {...props} />\n </ScrollXPositionProvider>\n </PasteProvider>\n </CopyProvider>\n </RangeProvider>\n </TablePropertyProvider>\n </EditProvider>\n </ColumnsProvider>\n </CheckboxStatusProvider>\n </CheckboxProvider>\n </PagenationProvider>\n </SortProvider>\n </FilterProvider>\n </ColumnsWidthProvider>\n </TableIdGeneratorProvider>\n </ComponentProvider>\n </LocaleProvider>\n );\n}\n\nfunction BaseTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { cols, rowMaps, pageRowIds } = useTable<T>(props);\n const IdGenerator = useTableIdGenerator();\n const generateSortButton = useGenerateSortButton();\n\n return (\n <div className=\"w-full max-w-full max-h-full\">\n <div>\n <TableHeader\n cols={cols}\n checkbox={!!props.checkbox}\n rows={props.rows}\n maxWidth={props.maxWidth}\n generateSortButton={generateSortButton}\n />\n\n <ColumnsWidthStyle scopeId={IdGenerator.getTableId()} />\n <SelectBoxProvider>\n <Frame\n id={IdGenerator.getTableId()}\n maxHeight={props.maxHeight}\n maxWidth={props.maxWidth}\n displayScroll={false}\n >\n <table className={`table`}>\n <thead>\n <tr>\n {props.checkbox && <th className=\"p-px\"></th>}\n {cols.map((col) => (\n <TableHeaderElement\n key={col.key.toString()}\n keyname={col.key.toString()}\n />\n ))}\n </tr>\n </thead>\n <tbody>\n {pageRowIds.length === 0 && (\n <tr>\n <td\n colSpan={cols.length + (props.checkbox ? 1 : 0)}\n className=\"px-px py-5\"\n >\n <p className=\"text-center font-bold text-lg\">NO DATA</p>\n </td>\n </tr>\n )}\n {pageRowIds.map((rowId, i) => (\n <Row\n key={rowId}\n existCheckbox={!!props.checkbox}\n rowIndex={i}\n row={rowMaps[rowId].data}\n cols={props.cols as TTableColumn<DataRecord>[]}\n onClickRow={props.onClickRow}\n applyRowFormatting={props.applyRowFormatting}\n conditionalFormattingString={generateFormattingString(\n rowMaps[rowId].data,\n cols as TTableColumn<DataRecord>[],\n props.conditionalFormattings as TConditionalFormatting<DataRecord>[]\n )}\n />\n ))}\n </tbody>\n </table>\n <TestRange />\n <KeyCatcher />\n <Editor rowMaps={rowMaps} pageRowIds={pageRowIds} />\n </Frame>\n </SelectBoxProvider>\n </div>\n <div className=\"mt-1\">\n <DisplayRange />\n <div className=\"mt-2\">\n <Pagenation />\n </div>\n </div>\n </div>\n );\n}\n"],"names":["Table","props","_jsx","LocaleProvider","locale","children","ComponentProvider","TableIdGeneratorProvider","id","ColumnsWidthProvider","cols","FilterProvider","initialConditions","SortProvider","initialCondition","_a","sort","PagenationProvider","rowCount","rows","length","perPage","_e","_c","_b","pagination","_d","pagenation","rowCountPerPage","CheckboxProvider","checkbox","CheckboxStatusProvider","checkboxCount","ColumnsProvider","errorHandler","EditProvider","TablePropertyProvider","RangeProvider","_jsxs","CopyProvider","CopiedMessage","PasteProvider","onUpdateRowFunction","onUpdateRow","onPasteError","KeyboardSetting","enableDeprecatedCopy","_f","deprecatedOptions","ScrollXPositionProvider","BaseTable","__assign","useTable","rowMaps","pageRowIds","IdGenerator","useTableIdGenerator","generateSortButton","useGenerateSortButton","className","TableHeader","maxWidth","ColumnsWidthStyle","scopeId","getTableId","SelectBoxProvider","Frame","maxHeight","displayScroll","map","col","TableHeaderElement","keyname","key","toString","colSpan","rowId","i","Row","existCheckbox","rowIndex","row","data","onClickRow","applyRowFormatting","conditionalFormattingString","generateFormattingString","conditionalFormattings","TestRange","KeyCatcher","Editor","DisplayRange","Pagenation"],"mappings":"g9DAuCc,SAAUA,EAA4BC,mBAClD,OACEC,EAACC,EAAc,CAACC,OAAQH,EAAMG,OAAMC,SAClCH,EAACI,EAAiB,CAAAD,SAChBH,EAACK,EAAwB,CAACC,GAAIP,EAAMO,GAAEH,SACpCH,EAACO,GAAqBC,KAAMT,EAAMS,cAChCR,EAACS,EAAc,CAACC,kBAAmB,YACjCV,EAACW,EAAY,CAACC,iBAAwC,QAAtBC,EAAAd,EAAMa,wBAAgB,IAAAC,OAAA,EAAAA,EAAEC,KAAIX,SAC1DH,EAACe,EAAkB,CACjBC,SAAUjB,EAAMkB,KAAKC,OACrBC,QAIG,QAHDC,EACoC,QAAlCC,EAAsB,QAAtBC,EAAAvB,EAAMa,wBAAgB,IAAAU,OAAA,EAAAA,EAAEC,kBAAU,IAAAF,EAAAA,EACZ,QAAtBG,EAAAzB,EAAMa,wBAAgB,IAAAY,OAAA,EAAAA,EAAEC,kBACzB,IAAAL,OAAA,EAAAA,EAAEM,gBAAevB,SAGpBH,EAAC2B,EAAgB,CAACC,SAAU7B,EAAM6B,kBAChC5B,EAAC6B,EAAsB,CAACC,cAAe/B,EAAMkB,KAAKC,OAAMf,SACtDH,EAAC+B,GACCvB,KAAMT,EAAMS,KACZwB,aAAcjC,EAAMiC,aAAY7B,SAEhCH,EAACiC,EAAY,CAAA9B,SACXH,EAACkC,EAAqB,CAAA/B,SACpBH,EAACmC,EAAa,CAAAhC,SACZiC,EAACC,EAAY,CAACpB,KAAMlB,EAAMkB,KAAMT,KAAMT,EAAMS,KAAIL,SAAA,CAC9CH,EAACsC,EAAa,IACdF,EAACG,EAAa,CACZtB,KAAMlB,EAAMkB,KACZT,KAAMT,EAAMS,KACZgC,oBAAqBzC,EAAM0C,YAC3BC,aAAc3C,EAAM2C,uBAEpB1C,EAAC2C,EAAe,CACdC,qBACyB,QAAvBC,EAAA9C,EAAM+C,yBAAiB,IAAAD,OAAA,EAAAA,EACnBD,uBAGR5C,EAAC+C,EAAuB,CAAA5C,SACtBH,EAACgD,EAASC,EAAA,CAAA,EAAKlD,qCAkBnD,CAEA,SAASiD,EAAgCjD,GACjC,IAAAc,EAAgCqC,EAAYnD,GAA1CS,EAAIK,EAAAL,KAAE2C,EAAOtC,EAAAsC,QAAEC,eACjBC,EAAcC,IACdC,EAAqBC,IAE3B,OACEpB,EAAA,MAAA,CAAKqB,UAAU,+BAA8BtD,SAAA,CAC3CiC,EAAA,MAAA,CAAAjC,SAAA,CACEH,EAAC0D,EAAW,CACVlD,KAAMA,EACNoB,WAAY7B,EAAM6B,SAClBX,KAAMlB,EAAMkB,KACZ0C,SAAU5D,EAAM4D,SAChBJ,mBAAoBA,IAGtBvD,EAAC4D,GAAkBC,QAASR,EAAYS,eACxC9D,EAAC+D,EAAiB,CAAA5D,SAChBiC,EAAC4B,EAAK,CACJ1D,GAAI+C,EAAYS,aAChBG,UAAWlE,EAAMkE,UACjBN,SAAU5D,EAAM4D,SAChBO,eAAe,EAAK/D,SAAA,CAEpBiC,WAAOqB,UAAW,QAAOtD,SAAA,CACvBH,oBACEoC,EAAA,KAAA,CAAAjC,SAAA,CACGJ,EAAM6B,UAAY5B,EAAA,KAAA,CAAIyD,UAAU,SAChCjD,EAAK2D,KAAI,SAACC,GAAQ,OACjBpE,EAACqE,EAAkB,CAEjBC,QAASF,EAAIG,IAAIC,YADZJ,EAAIG,IAAIC,WAFE,SAQvBpC,EAAA,QAAA,CAAAjC,SAAA,CACyB,IAAtBiD,EAAWlC,QACVlB,EAAA,KAAA,CAAAG,SACEH,EAAA,KAAA,CACEyE,QAASjE,EAAKU,QAAUnB,EAAM6B,SAAW,EAAI,GAC7C6B,UAAU,sBAEVzD,EAAA,IAAA,CAAGyD,UAAU,gCAA+BtD,SAAA,gBAIjDiD,EAAWe,KAAI,SAACO,EAAOC,GAAM,OAC5B3E,EAAC4E,EAAG,CAEFC,gBAAiB9E,EAAM6B,SACvBkD,SAAUH,EACVI,IAAK5B,EAAQuB,GAAOM,KACpBxE,KAAMT,EAAMS,KACZyE,WAAYlF,EAAMkF,WAClBC,mBAAoBnF,EAAMmF,mBAC1BC,4BAA6BC,EAC3BjC,EAAQuB,GAAOM,KACfxE,EACAT,EAAMsF,yBAVHX,EAFqB,UAkBlC1E,EAACsF,EAAS,IACVtF,EAACuF,EAAU,CAAA,GACXvF,EAACwF,EAAM,CAACrC,QAASA,EAASC,WAAYA,YAI5ChB,EAAA,MAAA,CAAKqB,UAAU,OAAMtD,SAAA,CACnBH,EAACyF,EAAY,CAAA,GACbzF,EAAA,MAAA,CAAKyD,UAAU,OAAMtD,SACnBH,EAAC0F,EAAU,CAAA,UAKrB"}
package/dist/index.d.ts CHANGED
@@ -7,31 +7,6 @@ type TPasteError = {
7
7
  message: string;
8
8
  };
9
9
 
10
- interface Options {
11
- /**
12
- * The label is the string that will be displayed for the option.
13
- */
14
- label: string;
15
- /**
16
- * The value is the value of the option and will not be displayed.
17
- */
18
- value: string;
19
- /**
20
- * The searchLabel is the string that will be displayed in the list of options when the user is selecting an option.
21
- * The difference between label and searchLabel is that label is the string displayed when the option is selected,
22
- * while searchLabel is the string displayed in the list of options during selection.
23
- * If searchLabel is undefined, the list of options will display the label.
24
- */
25
- searchLabel?: string;
26
- /**
27
- * The searchText is the string used for searching and filtering the list of options.
28
- * For example, in the case of Japanese options, you can use hiragana or katakana readings in searchText,
29
- * allowing users to search using hiragana even if the displayed label is in kanji.
30
- * If searchText is undefined, the search will use searchLabel if defined, otherwise it will use label.
31
- */
32
- searchText?: string;
33
- }
34
-
35
10
  type TStringValidateOption = {
36
11
  maxLength?: number;
37
12
  minLength?: number;
@@ -72,6 +47,34 @@ type TErrorValidation = {
72
47
  type: "NOT_DATETIME";
73
48
  });
74
49
 
50
+ /** Language of the messages the table shows by itself. */
51
+ type TLocale = "ja" | "en";
52
+
53
+ interface Options {
54
+ /**
55
+ * The label is the string that will be displayed for the option.
56
+ */
57
+ label: string;
58
+ /**
59
+ * The value is the value of the option and will not be displayed.
60
+ */
61
+ value: string;
62
+ /**
63
+ * The searchLabel is the string that will be displayed in the list of options when the user is selecting an option.
64
+ * The difference between label and searchLabel is that label is the string displayed when the option is selected,
65
+ * while searchLabel is the string displayed in the list of options during selection.
66
+ * If searchLabel is undefined, the list of options will display the label.
67
+ */
68
+ searchLabel?: string;
69
+ /**
70
+ * The searchText is the string used for searching and filtering the list of options.
71
+ * For example, in the case of Japanese options, you can use hiragana or katakana readings in searchText,
72
+ * allowing users to search using hiragana even if the displayed label is in kanji.
73
+ * If searchText is undefined, the search will use searchLabel if defined, otherwise it will use label.
74
+ */
75
+ searchText?: string;
76
+ }
77
+
75
78
  type DataRecord = Record<string, string | number | Date>;
76
79
  type DataObject<T extends DataRecord> = T & {
77
80
  id: number | string;
@@ -143,6 +146,14 @@ type TConditionalFormatting<T extends DataRecord> = {
143
146
  style: TailwindCssStyle;
144
147
  };
145
148
  type TailwindCssStyle = string;
149
+ type TPaginationCondition = {
150
+ /**
151
+ * Rows per page. Defaults to 50.
152
+ * "all" renders every row at once and gets slow with many rows; use
153
+ * pagination for more than about 1,000 rows.
154
+ */
155
+ rowCountPerPage?: 20 | 50 | 100 | "all";
156
+ };
146
157
  type TPropsTable<T extends DataRecord> = {
147
158
  id?: string;
148
159
  cols: TTableColumn<T>[];
@@ -156,9 +167,9 @@ type TPropsTable<T extends DataRecord> = {
156
167
  key: string;
157
168
  asc?: boolean;
158
169
  };
159
- pagenation?: {
160
- rowCountPerPage?: 20 | 50 | 100 | "all";
161
- };
170
+ pagination?: TPaginationCondition;
171
+ /** @deprecated Use `pagination`. Kept for compatibility. */
172
+ pagenation?: TPaginationCondition;
162
173
  };
163
174
  applyRowFormatting?: (row: DataObject<T>) => TailwindCssStyle;
164
175
  conditionalFormattings?: TConditionalFormatting<T>[];
@@ -168,6 +179,11 @@ type TPropsTable<T extends DataRecord> = {
168
179
  * table or targets a read-only column. Defaults to window.alert.
169
180
  */
170
181
  onPasteError?: (error: TPasteError) => void;
182
+ /**
183
+ * Language of the messages the table shows by itself, such as the default
184
+ * validation alert and the "copied" notice. Defaults to "ja".
185
+ */
186
+ locale?: TLocale;
171
187
  deprecatedOptions?: {
172
188
  enableDeprecatedCopy?: boolean;
173
189
  };
@@ -289,4 +305,4 @@ interface IReturnFileUploader {
289
305
  }
290
306
  declare function useFileUploader(props: IPropsFileUploader): IReturnFileUploader;
291
307
 
292
- export { type DataObject, type DataRecord, FileUploader, type FileUploaderProps, type Options, type TColumnType, type TConditionalFormatting, type TErrorValidation, type TNumberValidateOption, type TPasteError, type TPropsTable, type TStringValidateOption, type TTableColumn, Table, useFileUploader };
308
+ export { type DataObject, type DataRecord, FileUploader, type FileUploaderProps, type Options, type TColumnType, type TConditionalFormatting, type TErrorValidation, type TLocale, type TNumberValidateOption, type TPasteError, type TPropsTable, type TStringValidateOption, type TTableColumn, Table, useFileUploader };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "2.0.1",
3
+ "version": "2.2.0",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",
@@ -11,7 +11,8 @@
11
11
  "storybook": "storybook dev -p 6006",
12
12
  "build-storybook": "storybook build",
13
13
  "test": "jest",
14
- "test:lint": "tsc --noEmit"
14
+ "test:lint": "tsc --noEmit",
15
+ "test:package": "npm run rollup && node scripts/check-package.mjs"
15
16
  },
16
17
  "author": "Yasufumi Kamiyama <yk.iteppen@gmail.com>",
17
18
  "license": "MIT",