@economic/taco 1.20.0 → 1.21.1

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 (37) hide show
  1. package/dist/components/Provider/Localization.d.ts +21 -5
  2. package/dist/components/Table2/Table2.d.ts +21 -5
  3. package/dist/components/Table2/components/row/Context.d.ts +3 -2
  4. package/dist/components/Table2/hooks/useTable.d.ts +2 -1
  5. package/dist/components/Table2/types.d.ts +2 -1
  6. package/dist/esm/packages/taco/src/components/Provider/Localization.js +21 -5
  7. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  8. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
  9. package/dist/esm/packages/taco/src/components/Table2/components/ShortcutsGuideButton.js +20 -14
  10. package/dist/esm/packages/taco/src/components/Table2/components/ShortcutsGuideButton.js.map +1 -1
  11. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +60 -42
  12. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
  13. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +3 -3
  14. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +1 -1
  15. package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js +7 -7
  16. package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js +2 -2
  18. package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js +3 -3
  20. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +4 -1
  22. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
  23. package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js +5 -1
  24. package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/Table2/hooks/useSeparatedChildren.js +2 -1
  26. package/dist/esm/packages/taco/src/components/Table2/hooks/useSeparatedChildren.js.map +1 -1
  27. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +4 -2
  28. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
  29. package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +15 -13
  31. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
  32. package/dist/taco.cjs.development.js +145 -94
  33. package/dist/taco.cjs.development.js.map +1 -1
  34. package/dist/taco.cjs.production.min.js +1 -1
  35. package/dist/taco.cjs.production.min.js.map +1 -1
  36. package/package.json +2 -2
  37. package/types.json +99 -22
@@ -1 +1 @@
1
- {"version":3,"file":"Indicator.js","sources":["../../../../../../../../../src/components/Table2/components/column/Indicator.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Icon } from '../../../Icon/Icon';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Tooltip } from '../../../Tooltip/Tooltip';\nimport { useRowContext } from '../row/Context';\n\nexport enum IndicatorReason {\n SEARCH = 'SEARCH',\n SORTING = 'SORTING',\n FILTER = 'FILTER',\n}\n\nexport const useIndicatorText = reason => {\n let title = '';\n let description = '';\n\n const {\n texts: { table2: tableTexts },\n } = useLocalization();\n\n switch (reason) {\n case IndicatorReason.SEARCH:\n title = tableTexts.rowWillBeFiltered;\n description = tableTexts.searchFilterMovementReason;\n break;\n case IndicatorReason.SORTING:\n title = tableTexts.rowWillMove;\n description = tableTexts.sortingMovementReason;\n break;\n case IndicatorReason.FILTER:\n title = tableTexts.rowWillBeFiltered;\n description = tableTexts.tableFilterMovementReason;\n break;\n }\n\n return { title, description };\n};\n\nexport type IndicatorProps = {\n reason: IndicatorReason;\n columnName: string;\n mountNode: Element | null;\n};\nexport const Indicator = ({ reason, columnName, mountNode }: IndicatorProps) => {\n const container = React.useMemo(() => {\n const element = document.createElement('div');\n element.className +=\n '-translate-y-1/2 z-[13] rounded-full items-center wcag-blue-500 absolute left-0 top-full ml-1 whitespace-nowrap px-1 py-0.5 text-xs font-bold shadow-sm';\n\n return element;\n }, []);\n\n const indicatorText = useIndicatorText(reason);\n\n const { validationErrors } = useRowContext();\n const hasValidationErrorsInRow = !!validationErrors;\n\n React.useEffect(() => {\n // mountNode could be null when rows are filtered\n mountNode?.classList.add('relative');\n mountNode?.appendChild(container);\n\n return () => {\n mountNode?.classList.remove('relative');\n mountNode?.removeChild(container);\n };\n }, [hasValidationErrorsInRow]);\n\n // Using react portal inside a react tree component is an unorthodox way, but in order to avoid much code refactoring\n // and being able to use Taco Tooltip component in side the visual indicator, portal is used.\n return ReactDOM.createPortal(\n <Tooltip title={indicatorText.description.replace('[COLUMN]', columnName)}>\n <span className=\"flex gap-1 hover:cursor-pointer\">\n <Icon name=\"info\" className=\"!h-4 !w-4 rounded-full bg-white !p-0 text-blue-500\" />\n {indicatorText.title}\n </span>\n </Tooltip>,\n container\n );\n};\n"],"names":["IndicatorReason","useIndicatorText","reason","title","description","texts","table2","tableTexts","useLocalization","SEARCH","rowWillBeFiltered","searchFilterMovementReason","SORTING","rowWillMove","sortingMovementReason","FILTER","tableFilterMovementReason","Indicator","columnName","mountNode","container","React","useMemo","element","document","createElement","className","indicatorText","validationErrors","useRowContext","hasValidationErrorsInRow","useEffect","classList","add","appendChild","remove","removeChild","ReactDOM","createPortal","Tooltip","replace","Icon","name"],"mappings":";;;;;;;IAQYA;AAAZ,WAAYA,eAAe;EACvBA,oCAAiB;EACjBA,sCAAmB;EACnBA,oCAAiB;AACrB,CAAC,EAJWA,eAAe,KAAfA,eAAe;MAMdC,gBAAgB,GAAGC,MAAM;EAClC,IAAIC,KAAK,GAAG,EAAE;EACd,IAAIC,WAAW,GAAG,EAAE;EAEpB,MAAM;IACFC,KAAK,EAAE;MAAEC,MAAM,EAAEC;;GACpB,GAAGC,eAAe,EAAE;EAErB,QAAQN,MAAM;IACV,KAAKF,eAAe,CAACS,MAAM;MACvBN,KAAK,GAAGI,UAAU,CAACG,iBAAiB;MACpCN,WAAW,GAAGG,UAAU,CAACI,0BAA0B;MACnD;IACJ,KAAKX,eAAe,CAACY,OAAO;MACxBT,KAAK,GAAGI,UAAU,CAACM,WAAW;MAC9BT,WAAW,GAAGG,UAAU,CAACO,qBAAqB;MAC9C;IACJ,KAAKd,eAAe,CAACe,MAAM;MACvBZ,KAAK,GAAGI,UAAU,CAACG,iBAAiB;MACpCN,WAAW,GAAGG,UAAU,CAACS,yBAAyB;MAClD;;EAGR,OAAO;IAAEb,KAAK;IAAEC;GAAa;AACjC;MAOaa,SAAS,GAAG,CAAC;EAAEf,MAAM;EAAEgB,UAAU;EAAEC;CAA2B;EACvE,MAAMC,SAAS,GAAGC,cAAK,CAACC,OAAO,CAAC;IAC5B,MAAMC,OAAO,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAC7CF,OAAO,CAACG,SAAS,IACb,yJAAyJ;IAE7J,OAAOH,OAAO;GACjB,EAAE,EAAE,CAAC;EAEN,MAAMI,aAAa,GAAG1B,gBAAgB,CAACC,MAAM,CAAC;EAE9C,MAAM;IAAE0B;GAAkB,GAAGC,aAAa,EAAE;EAC5C,MAAMC,wBAAwB,GAAG,CAAC,CAACF,gBAAgB;EAEnDP,cAAK,CAACU,SAAS,CAAC;;IAEZZ,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEa,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC;IACpCd,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEe,WAAW,CAACd,SAAS,CAAC;IAEjC,OAAO;MACHD,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEa,SAAS,CAACG,MAAM,CAAC,UAAU,CAAC;MACvChB,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEiB,WAAW,CAAChB,SAAS,CAAC;KACpC;GACJ,EAAE,CAACU,wBAAwB,CAAC,CAAC;;;EAI9B,oBAAOO,QAAQ,CAACC,YAAY,eACxBjB,6BAACkB,OAAO;IAACpC,KAAK,EAAEwB,aAAa,CAACvB,WAAW,CAACoC,OAAO,CAAC,UAAU,EAAEtB,UAAU;kBACpEG;IAAMK,SAAS,EAAC;kBACZL,6BAACoB,IAAI;IAACC,IAAI,EAAC,MAAM;IAAChB,SAAS,EAAC;IAAuD,EAClFC,aAAa,CAACxB,KAAK,CACjB,CACD,EACViB,SAAS,CACZ;AACL;;;;"}
1
+ {"version":3,"file":"Indicator.js","sources":["../../../../../../../../../src/components/Table2/components/column/Indicator.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Icon } from '../../../Icon/Icon';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Tooltip } from '../../../Tooltip/Tooltip';\nimport { useRowContext } from '../row/Context';\n\nexport enum IndicatorReason {\n SEARCH = 'SEARCH',\n SORTING = 'SORTING',\n FILTER = 'FILTER',\n}\n\nexport const useIndicatorText = reason => {\n let title = '';\n let description = '';\n\n const {\n texts: { table2: tableTexts },\n } = useLocalization();\n\n switch (reason) {\n case IndicatorReason.SEARCH:\n title = tableTexts.rowIndicator.rowWillBeFiltered;\n description = tableTexts.rowIndicator.searchFilterMovementReason;\n break;\n case IndicatorReason.SORTING:\n title = tableTexts.rowIndicator.rowWillMove;\n description = tableTexts.rowIndicator.sortingMovementReason;\n break;\n case IndicatorReason.FILTER:\n title = tableTexts.rowIndicator.rowWillBeFiltered;\n description = tableTexts.rowIndicator.tableFilterMovementReason;\n break;\n }\n\n return { title, description };\n};\n\nexport type IndicatorProps = {\n reason: IndicatorReason;\n columnName: string;\n mountNode: Element | null;\n};\nexport const Indicator = ({ reason, columnName, mountNode }: IndicatorProps) => {\n const container = React.useMemo(() => {\n const element = document.createElement('div');\n element.className +=\n '-translate-y-1/2 z-[3] rounded-full items-center wcag-blue-500 absolute left-0 top-full ml-1 whitespace-nowrap px-1 py-0.5 text-xs font-bold shadow-sm';\n\n return element;\n }, []);\n\n const indicatorText = useIndicatorText(reason);\n\n const { validationErrors } = useRowContext();\n const hasValidationErrorsInRow = !!validationErrors;\n\n React.useEffect(() => {\n // mountNode could be null when rows are filtered\n mountNode?.classList.add('relative');\n mountNode?.appendChild(container);\n\n return () => {\n mountNode?.classList.remove('relative');\n mountNode?.removeChild(container);\n };\n }, [hasValidationErrorsInRow]);\n\n // Using react portal inside a react tree component is an unorthodox way, but in order to avoid much code refactoring\n // and being able to use Taco Tooltip component in side the visual indicator, portal is used.\n return ReactDOM.createPortal(\n <Tooltip title={indicatorText.description.replace('[COLUMN]', columnName)}>\n <span className=\"flex gap-1 hover:cursor-pointer\">\n <Icon name=\"info\" className=\"!h-4 !w-4 rounded-full bg-white !p-0 text-blue-500\" />\n {indicatorText.title}\n </span>\n </Tooltip>,\n container\n );\n};\n"],"names":["IndicatorReason","useIndicatorText","reason","title","description","texts","table2","tableTexts","useLocalization","SEARCH","rowIndicator","rowWillBeFiltered","searchFilterMovementReason","SORTING","rowWillMove","sortingMovementReason","FILTER","tableFilterMovementReason","Indicator","columnName","mountNode","container","React","useMemo","element","document","createElement","className","indicatorText","validationErrors","useRowContext","hasValidationErrorsInRow","useEffect","classList","add","appendChild","remove","removeChild","ReactDOM","createPortal","Tooltip","replace","Icon","name"],"mappings":";;;;;;;IAQYA;AAAZ,WAAYA,eAAe;EACvBA,oCAAiB;EACjBA,sCAAmB;EACnBA,oCAAiB;AACrB,CAAC,EAJWA,eAAe,KAAfA,eAAe;MAMdC,gBAAgB,GAAGC,MAAM;EAClC,IAAIC,KAAK,GAAG,EAAE;EACd,IAAIC,WAAW,GAAG,EAAE;EAEpB,MAAM;IACFC,KAAK,EAAE;MAAEC,MAAM,EAAEC;;GACpB,GAAGC,eAAe,EAAE;EAErB,QAAQN,MAAM;IACV,KAAKF,eAAe,CAACS,MAAM;MACvBN,KAAK,GAAGI,UAAU,CAACG,YAAY,CAACC,iBAAiB;MACjDP,WAAW,GAAGG,UAAU,CAACG,YAAY,CAACE,0BAA0B;MAChE;IACJ,KAAKZ,eAAe,CAACa,OAAO;MACxBV,KAAK,GAAGI,UAAU,CAACG,YAAY,CAACI,WAAW;MAC3CV,WAAW,GAAGG,UAAU,CAACG,YAAY,CAACK,qBAAqB;MAC3D;IACJ,KAAKf,eAAe,CAACgB,MAAM;MACvBb,KAAK,GAAGI,UAAU,CAACG,YAAY,CAACC,iBAAiB;MACjDP,WAAW,GAAGG,UAAU,CAACG,YAAY,CAACO,yBAAyB;MAC/D;;EAGR,OAAO;IAAEd,KAAK;IAAEC;GAAa;AACjC;MAOac,SAAS,GAAG,CAAC;EAAEhB,MAAM;EAAEiB,UAAU;EAAEC;CAA2B;EACvE,MAAMC,SAAS,GAAGC,cAAK,CAACC,OAAO,CAAC;IAC5B,MAAMC,OAAO,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAC7CF,OAAO,CAACG,SAAS,IACb,wJAAwJ;IAE5J,OAAOH,OAAO;GACjB,EAAE,EAAE,CAAC;EAEN,MAAMI,aAAa,GAAG3B,gBAAgB,CAACC,MAAM,CAAC;EAE9C,MAAM;IAAE2B;GAAkB,GAAGC,aAAa,EAAE;EAC5C,MAAMC,wBAAwB,GAAG,CAAC,CAACF,gBAAgB;EAEnDP,cAAK,CAACU,SAAS,CAAC;;IAEZZ,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEa,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC;IACpCd,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEe,WAAW,CAACd,SAAS,CAAC;IAEjC,OAAO;MACHD,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEa,SAAS,CAACG,MAAM,CAAC,UAAU,CAAC;MACvChB,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEiB,WAAW,CAAChB,SAAS,CAAC;KACpC;GACJ,EAAE,CAACU,wBAAwB,CAAC,CAAC;;;EAI9B,oBAAOO,QAAQ,CAACC,YAAY,eACxBjB,6BAACkB,OAAO;IAACrC,KAAK,EAAEyB,aAAa,CAACxB,WAAW,CAACqC,OAAO,CAAC,UAAU,EAAEtB,UAAU;kBACpEG;IAAMK,SAAS,EAAC;kBACZL,6BAACoB,IAAI;IAACC,IAAI,EAAC,MAAM;IAAChB,SAAS,EAAC;IAAuD,EAClFC,aAAa,CAACzB,KAAK,CACjB,CACD,EACVkB,SAAS,CACZ;AACL;;;;"}
@@ -3,8 +3,8 @@ import React__default from 'react';
3
3
  const RowContext = /*#__PURE__*/React__default.createContext({
4
4
  validationErrors: null,
5
5
  setValidationErrors: () => undefined,
6
- isRowIndicatorVisible: false,
7
- setIsRowIndicatorVisible: () => undefined
6
+ rowMoveReason: {},
7
+ setRowMoveReason: () => undefined
8
8
  });
9
9
  const useRowContext = () => {
10
10
  const context = React__default.useContext(RowContext);
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","sources":["../../../../../../../../../src/components/Table2/components/row/Context.tsx"],"sourcesContent":["import React from 'react';\nimport { SaveHandlerErrorResponse } from '../../types';\n\ntype RowContext = {\n validationErrors: SaveHandlerErrorResponse;\n setValidationErrors: React.Dispatch<React.SetStateAction<SaveHandlerErrorResponse>>;\n isRowIndicatorVisible: boolean;\n setIsRowIndicatorVisible: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nconst RowContext = React.createContext<RowContext>({\n validationErrors: null,\n setValidationErrors: () => undefined,\n isRowIndicatorVisible: false,\n setIsRowIndicatorVisible: () => undefined,\n});\n\nexport const useRowContext = () => {\n const context = React.useContext(RowContext);\n\n if (context === undefined) {\n throw new Error('useRowContext must be used within a RowProvider');\n }\n\n return context;\n};\n\ntype RowProviderProps = RowContext & { children: React.ReactNode };\n\nexport const RowProvider = ({ children, ...providerProps }: RowProviderProps) => {\n return <RowContext.Provider value={providerProps}>{children}</RowContext.Provider>;\n};\n"],"names":["RowContext","React","createContext","validationErrors","setValidationErrors","undefined","isRowIndicatorVisible","setIsRowIndicatorVisible","useRowContext","context","useContext","Error","RowProvider","children","providerProps","Provider","value"],"mappings":";;AAUA,MAAMA,UAAU,gBAAGC,cAAK,CAACC,aAAa,CAAa;EAC/CC,gBAAgB,EAAE,IAAI;EACtBC,mBAAmB,EAAE,MAAMC,SAAS;EACpCC,qBAAqB,EAAE,KAAK;EAC5BC,wBAAwB,EAAE,MAAMF;CACnC,CAAC;MAEWG,aAAa,GAAG;EACzB,MAAMC,OAAO,GAAGR,cAAK,CAACS,UAAU,CAACV,UAAU,CAAC;EAE5C,IAAIS,OAAO,KAAKJ,SAAS,EAAE;IACvB,MAAM,IAAIM,KAAK,CAAC,iDAAiD,CAAC;;EAGtE,OAAOF,OAAO;AAClB;MAIaG,WAAW,GAAG,CAAC;EAAEC,QAAQ;EAAE,GAAGC;CAAiC;EACxE,oBAAOb,6BAACD,UAAU,CAACe,QAAQ;IAACC,KAAK,EAAEF;KAAgBD,QAAQ,CAAuB;AACtF;;;;"}
1
+ {"version":3,"file":"Context.js","sources":["../../../../../../../../../src/components/Table2/components/row/Context.tsx"],"sourcesContent":["import React from 'react';\nimport { SaveHandlerErrorResponse } from '../../types';\nimport { IndicatorReason } from '../column/Indicator';\n\ntype RowContext = {\n validationErrors: SaveHandlerErrorResponse;\n setValidationErrors: React.Dispatch<React.SetStateAction<SaveHandlerErrorResponse>>;\n rowMoveReason: Record<string, IndicatorReason | null>;\n setRowMoveReason: React.Dispatch<React.SetStateAction<Record<string, IndicatorReason | null>>>;\n};\n\nconst RowContext = React.createContext<RowContext>({\n validationErrors: null,\n setValidationErrors: () => undefined,\n rowMoveReason: {},\n setRowMoveReason: () => undefined,\n});\n\nexport const useRowContext = () => {\n const context = React.useContext(RowContext);\n\n if (context === undefined) {\n throw new Error('useRowContext must be used within a RowProvider');\n }\n\n return context;\n};\n\ntype RowProviderProps = RowContext & { children: React.ReactNode };\n\nexport const RowProvider = ({ children, ...providerProps }: RowProviderProps) => {\n return <RowContext.Provider value={providerProps}>{children}</RowContext.Provider>;\n};\n"],"names":["RowContext","React","createContext","validationErrors","setValidationErrors","undefined","rowMoveReason","setRowMoveReason","useRowContext","context","useContext","Error","RowProvider","children","providerProps","Provider","value"],"mappings":";;AAWA,MAAMA,UAAU,gBAAGC,cAAK,CAACC,aAAa,CAAa;EAC/CC,gBAAgB,EAAE,IAAI;EACtBC,mBAAmB,EAAE,MAAMC,SAAS;EACpCC,aAAa,EAAE,EAAE;EACjBC,gBAAgB,EAAE,MAAMF;CAC3B,CAAC;MAEWG,aAAa,GAAG;EACzB,MAAMC,OAAO,GAAGR,cAAK,CAACS,UAAU,CAACV,UAAU,CAAC;EAE5C,IAAIS,OAAO,KAAKJ,SAAS,EAAE;IACvB,MAAM,IAAIM,KAAK,CAAC,iDAAiD,CAAC;;EAGtE,OAAOF,OAAO;AAClB;MAIaG,WAAW,GAAG,CAAC;EAAEC,QAAQ;EAAE,GAAGC;CAAiC;EACxE,oBAAOb,6BAACD,UAAU,CAACe,QAAQ;IAACC,KAAK,EAAEF;KAAgBD,QAAQ,CAAuB;AACtF;;;;"}
@@ -12,7 +12,7 @@ const Row = ({
12
12
  const isActiveRow = meta.activeRowIndex === rowIndex;
13
13
  const isDragging = meta.dragging[row.id];
14
14
  const [validationErrors, setValidationErrors] = React__default.useState(null);
15
- const [isRowIndicatorVisible, setIsRowIndicatorVisible] = React__default.useState(false);
15
+ const [rowMoveReason, setRowMoveReason] = React__default.useState({});
16
16
  // This effect aims to focus the first focussable cell when edit mode is turned on.
17
17
  React__default.useEffect(() => {
18
18
  var _meta$tableRef$curren;
@@ -42,8 +42,8 @@ const Row = ({
42
42
  return /*#__PURE__*/React__default.createElement(RowProvider, {
43
43
  validationErrors: validationErrors,
44
44
  setValidationErrors: handleSetValidationErrors,
45
- isRowIndicatorVisible: isRowIndicatorVisible,
46
- setIsRowIndicatorVisible: setIsRowIndicatorVisible
45
+ rowMoveReason: rowMoveReason,
46
+ setRowMoveReason: setRowMoveReason
47
47
  }, /*#__PURE__*/React__default.createElement("div", Object.assign({}, props, {
48
48
  role: "row",
49
49
  draggable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"Row.js","sources":["../../../../../../../../../src/components/Table2/components/row/Row.tsx"],"sourcesContent":["import { TableMeta } from '@tanstack/react-table';\nimport React from 'react';\nimport { SaveHandlerErrorResponse } from '../../types';\nimport { RowProvider } from './Context';\n\nconst HOVER_THRESHOLD_MS = 50;\n\nexport const Row = ({ row, rowIndex, table, ...props }) => {\n const meta = table.options.meta as TableMeta<any>;\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isDragging = meta.dragging[row.id];\n\n const [validationErrors, setValidationErrors] = React.useState<SaveHandlerErrorResponse | null>(null);\n const [isRowIndicatorVisible, setIsRowIndicatorVisible] = React.useState(false);\n\n // This effect aims to focus the first focussable cell when edit mode is turned on.\n React.useEffect(() => {\n const isFocusInsideTable = meta.tableRef.current?.contains(document.activeElement);\n\n // If the foucs is outside the table i.e., table action popups, search etc., then don't focus the first cell.\n if (meta.editMode.isEditing && isActiveRow && isFocusInsideTable) {\n meta.editMode.moveToFirstColumn(meta.focussableColumnIndexes);\n }\n // We are intentionally not adding activeRow to the depency variable so that everytime active row is changed,\n // first focussable cell is not focussed.\n }, [meta.editMode.isEditing, meta.focussableColumnIndexes]);\n\n const handleSetValidationErrors = (errors: React.SetStateAction<SaveHandlerErrorResponse>) => {\n if (errors !== null) {\n meta.setShouldDisableTableActions(true);\n }\n\n setValidationErrors(errors);\n };\n\n const hoverTimerRef = React.useRef<ReturnType<typeof setTimeout>>();\n\n const handleEnter = () => {\n hoverTimerRef.current = setTimeout(() => meta.setHoveredRowIndex(rowIndex), HOVER_THRESHOLD_MS);\n };\n const handleLeave = () => {\n clearTimeout(hoverTimerRef.current);\n hoverTimerRef.current = undefined;\n meta.setHoveredRowIndex(undefined);\n };\n\n return (\n <RowProvider\n validationErrors={validationErrors}\n setValidationErrors={handleSetValidationErrors}\n isRowIndicatorVisible={isRowIndicatorVisible}\n setIsRowIndicatorVisible={setIsRowIndicatorVisible}>\n <div\n {...props}\n role=\"row\"\n draggable\n aria-current={isActiveRow ? 'true' : undefined}\n aria-grabbed={isDragging ? 'true' : undefined}\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n />\n </RowProvider>\n );\n};\n"],"names":["HOVER_THRESHOLD_MS","Row","row","rowIndex","table","props","meta","options","isActiveRow","activeRowIndex","isDragging","dragging","id","validationErrors","setValidationErrors","React","useState","isRowIndicatorVisible","setIsRowIndicatorVisible","useEffect","isFocusInsideTable","tableRef","current","contains","document","activeElement","editMode","isEditing","moveToFirstColumn","focussableColumnIndexes","handleSetValidationErrors","errors","setShouldDisableTableActions","hoverTimerRef","useRef","handleEnter","setTimeout","setHoveredRowIndex","handleLeave","clearTimeout","undefined","RowProvider","role","draggable","onMouseEnter","onMouseLeave"],"mappings":";;;AAKA,MAAMA,kBAAkB,GAAG,EAAE;MAEhBC,GAAG,GAAG,CAAC;EAAEC,GAAG;EAAEC,QAAQ;EAAEC,KAAK;EAAE,GAAGC;CAAO;EAClD,MAAMC,IAAI,GAAGF,KAAK,CAACG,OAAO,CAACD,IAAsB;EACjD,MAAME,WAAW,GAAGF,IAAI,CAACG,cAAc,KAAKN,QAAQ;EACpD,MAAMO,UAAU,GAAGJ,IAAI,CAACK,QAAQ,CAACT,GAAG,CAACU,EAAE,CAAC;EAExC,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAkC,IAAI,CAAC;EACrG,MAAM,CAACC,qBAAqB,EAAEC,wBAAwB,CAAC,GAAGH,cAAK,CAACC,QAAQ,CAAC,KAAK,CAAC;;EAG/ED,cAAK,CAACI,SAAS,CAAC;;IACZ,MAAMC,kBAAkB,4BAAGd,IAAI,CAACe,QAAQ,CAACC,OAAO,0DAArB,sBAAuBC,QAAQ,CAACC,QAAQ,CAACC,aAAa,CAAC;;IAGlF,IAAInB,IAAI,CAACoB,QAAQ,CAACC,SAAS,IAAInB,WAAW,IAAIY,kBAAkB,EAAE;MAC9Dd,IAAI,CAACoB,QAAQ,CAACE,iBAAiB,CAACtB,IAAI,CAACuB,uBAAuB,CAAC;;;;GAIpE,EAAE,CAACvB,IAAI,CAACoB,QAAQ,CAACC,SAAS,EAAErB,IAAI,CAACuB,uBAAuB,CAAC,CAAC;EAE3D,MAAMC,yBAAyB,GAAIC,MAAsD;IACrF,IAAIA,MAAM,KAAK,IAAI,EAAE;MACjBzB,IAAI,CAAC0B,4BAA4B,CAAC,IAAI,CAAC;;IAG3ClB,mBAAmB,CAACiB,MAAM,CAAC;GAC9B;EAED,MAAME,aAAa,GAAGlB,cAAK,CAACmB,MAAM,EAAiC;EAEnE,MAAMC,WAAW,GAAG;IAChBF,aAAa,CAACX,OAAO,GAAGc,UAAU,CAAC,MAAM9B,IAAI,CAAC+B,kBAAkB,CAAClC,QAAQ,CAAC,EAAEH,kBAAkB,CAAC;GAClG;EACD,MAAMsC,WAAW,GAAG;IAChBC,YAAY,CAACN,aAAa,CAACX,OAAO,CAAC;IACnCW,aAAa,CAACX,OAAO,GAAGkB,SAAS;IACjClC,IAAI,CAAC+B,kBAAkB,CAACG,SAAS,CAAC;GACrC;EAED,oBACIzB,6BAAC0B,WAAW;IACR5B,gBAAgB,EAAEA,gBAAgB;IAClCC,mBAAmB,EAAEgB,yBAAyB;IAC9Cb,qBAAqB,EAAEA,qBAAqB;IAC5CC,wBAAwB,EAAEA;kBAC1BH,sDACQV,KAAK;IACTqC,IAAI,EAAC,KAAK;IACVC,SAAS;oBACKnC,WAAW,GAAG,MAAM,GAAGgC,SAAS;oBAChC9B,UAAU,GAAG,MAAM,GAAG8B,SAAS;IAC7CI,YAAY,EAAET,WAAW;IACzBU,YAAY,EAAEP;KAChB,CACQ;AAEtB;;;;"}
1
+ {"version":3,"file":"Row.js","sources":["../../../../../../../../../src/components/Table2/components/row/Row.tsx"],"sourcesContent":["import { TableMeta } from '@tanstack/react-table';\nimport React from 'react';\nimport { SaveHandlerErrorResponse } from '../../types';\nimport { IndicatorReason } from '../column/Indicator';\nimport { RowProvider } from './Context';\n\nconst HOVER_THRESHOLD_MS = 50;\n\nexport const Row = ({ row, rowIndex, table, ...props }) => {\n const meta = table.options.meta as TableMeta<any>;\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isDragging = meta.dragging[row.id];\n\n const [validationErrors, setValidationErrors] = React.useState<SaveHandlerErrorResponse | null>(null);\n const [rowMoveReason, setRowMoveReason] = React.useState<Record<string, IndicatorReason | null>>({});\n\n // This effect aims to focus the first focussable cell when edit mode is turned on.\n React.useEffect(() => {\n const isFocusInsideTable = meta.tableRef.current?.contains(document.activeElement);\n\n // If the foucs is outside the table i.e., table action popups, search etc., then don't focus the first cell.\n if (meta.editMode.isEditing && isActiveRow && isFocusInsideTable) {\n meta.editMode.moveToFirstColumn(meta.focussableColumnIndexes);\n }\n // We are intentionally not adding activeRow to the depency variable so that everytime active row is changed,\n // first focussable cell is not focussed.\n }, [meta.editMode.isEditing, meta.focussableColumnIndexes]);\n\n const handleSetValidationErrors = (errors: React.SetStateAction<SaveHandlerErrorResponse>) => {\n if (errors !== null) {\n meta.setShouldDisableTableActions(true);\n }\n\n setValidationErrors(errors);\n };\n\n const hoverTimerRef = React.useRef<ReturnType<typeof setTimeout>>();\n\n const handleEnter = () => {\n hoverTimerRef.current = setTimeout(() => meta.setHoveredRowIndex(rowIndex), HOVER_THRESHOLD_MS);\n };\n const handleLeave = () => {\n clearTimeout(hoverTimerRef.current);\n hoverTimerRef.current = undefined;\n meta.setHoveredRowIndex(undefined);\n };\n\n return (\n <RowProvider\n validationErrors={validationErrors}\n setValidationErrors={handleSetValidationErrors}\n rowMoveReason={rowMoveReason}\n setRowMoveReason={setRowMoveReason}>\n <div\n {...props}\n role=\"row\"\n draggable\n aria-current={isActiveRow ? 'true' : undefined}\n aria-grabbed={isDragging ? 'true' : undefined}\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n />\n </RowProvider>\n );\n};\n"],"names":["HOVER_THRESHOLD_MS","Row","row","rowIndex","table","props","meta","options","isActiveRow","activeRowIndex","isDragging","dragging","id","validationErrors","setValidationErrors","React","useState","rowMoveReason","setRowMoveReason","useEffect","isFocusInsideTable","tableRef","current","contains","document","activeElement","editMode","isEditing","moveToFirstColumn","focussableColumnIndexes","handleSetValidationErrors","errors","setShouldDisableTableActions","hoverTimerRef","useRef","handleEnter","setTimeout","setHoveredRowIndex","handleLeave","clearTimeout","undefined","RowProvider","role","draggable","onMouseEnter","onMouseLeave"],"mappings":";;;AAMA,MAAMA,kBAAkB,GAAG,EAAE;MAEhBC,GAAG,GAAG,CAAC;EAAEC,GAAG;EAAEC,QAAQ;EAAEC,KAAK;EAAE,GAAGC;CAAO;EAClD,MAAMC,IAAI,GAAGF,KAAK,CAACG,OAAO,CAACD,IAAsB;EACjD,MAAME,WAAW,GAAGF,IAAI,CAACG,cAAc,KAAKN,QAAQ;EACpD,MAAMO,UAAU,GAAGJ,IAAI,CAACK,QAAQ,CAACT,GAAG,CAACU,EAAE,CAAC;EAExC,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAkC,IAAI,CAAC;EACrG,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGH,cAAK,CAACC,QAAQ,CAAyC,EAAE,CAAC;;EAGpGD,cAAK,CAACI,SAAS,CAAC;;IACZ,MAAMC,kBAAkB,4BAAGd,IAAI,CAACe,QAAQ,CAACC,OAAO,0DAArB,sBAAuBC,QAAQ,CAACC,QAAQ,CAACC,aAAa,CAAC;;IAGlF,IAAInB,IAAI,CAACoB,QAAQ,CAACC,SAAS,IAAInB,WAAW,IAAIY,kBAAkB,EAAE;MAC9Dd,IAAI,CAACoB,QAAQ,CAACE,iBAAiB,CAACtB,IAAI,CAACuB,uBAAuB,CAAC;;;;GAIpE,EAAE,CAACvB,IAAI,CAACoB,QAAQ,CAACC,SAAS,EAAErB,IAAI,CAACuB,uBAAuB,CAAC,CAAC;EAE3D,MAAMC,yBAAyB,GAAIC,MAAsD;IACrF,IAAIA,MAAM,KAAK,IAAI,EAAE;MACjBzB,IAAI,CAAC0B,4BAA4B,CAAC,IAAI,CAAC;;IAG3ClB,mBAAmB,CAACiB,MAAM,CAAC;GAC9B;EAED,MAAME,aAAa,GAAGlB,cAAK,CAACmB,MAAM,EAAiC;EAEnE,MAAMC,WAAW,GAAG;IAChBF,aAAa,CAACX,OAAO,GAAGc,UAAU,CAAC,MAAM9B,IAAI,CAAC+B,kBAAkB,CAAClC,QAAQ,CAAC,EAAEH,kBAAkB,CAAC;GAClG;EACD,MAAMsC,WAAW,GAAG;IAChBC,YAAY,CAACN,aAAa,CAACX,OAAO,CAAC;IACnCW,aAAa,CAACX,OAAO,GAAGkB,SAAS;IACjClC,IAAI,CAAC+B,kBAAkB,CAACG,SAAS,CAAC;GACrC;EAED,oBACIzB,6BAAC0B,WAAW;IACR5B,gBAAgB,EAAEA,gBAAgB;IAClCC,mBAAmB,EAAEgB,yBAAyB;IAC9Cb,aAAa,EAAEA,aAAa;IAC5BC,gBAAgB,EAAEA;kBAClBH,sDACQV,KAAK;IACTqC,IAAI,EAAC,KAAK;IACVC,SAAS;oBACKnC,WAAW,GAAG,MAAM,GAAGgC,SAAS;oBAChC9B,UAAU,GAAG,MAAM,GAAG8B,SAAS;IAC7CI,YAAY,EAAET,WAAW;IACzBU,YAAY,EAAEP;KAChB,CACQ;AAEtB;;;;"}
@@ -39,10 +39,13 @@ function useColumnDefinitions(children, options, tableRef) {
39
39
  accessorKey: child.props.accessor,
40
40
  id: child.props.accessor,
41
41
  cell: props => {
42
+ var _props$getValue;
42
43
  if (typeof child.props.renderer === 'function') {
43
44
  return child.props.renderer(props.getValue(), props.row.original);
44
45
  }
45
- return props.getValue();
46
+ // If value is undefined then return null because cell is a react component, and undefined is not
47
+ // a valid child value.
48
+ return (_props$getValue = props.getValue()) !== null && _props$getValue !== void 0 ? _props$getValue : null;
46
49
  },
47
50
  header: child.props.header,
48
51
  meta: {
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnDefinitions.js","sources":["../../../../../../../../src/components/Table2/hooks/useColumnDefinitions.ts"],"sourcesContent":["import React from 'react';\nimport {\n createColumnHelper,\n ColumnSort,\n ColumnSizingState,\n Row,\n RowData,\n VisibilityState,\n SortingFnOption,\n} from '@tanstack/react-table';\nimport {\n CellAlignment,\n ColumnDataType,\n RowDragHandler,\n Table2ColumnControlRenderer,\n Table2ColumnFooterRenderer,\n Table2ColumnHeaderMenu,\n Table2ColumnProps,\n Table2RowActionProps,\n} from '../types';\nimport {\n COLUMN_ID_FOR_DRAGGABLE,\n COLUMN_ID_FOR_EXPANSION,\n COLUMN_ID_FOR_SELECTION,\n createRowActionsColumn,\n createRowDraggableColumn,\n createRowExpansionColumn,\n createRowSelectionColumn,\n MIN_COLUMN_SIZE,\n} from '../utilities/columns';\n\ndeclare module '@tanstack/table-core' {\n interface ColumnMeta<TData extends RowData, TValue> {\n align?: CellAlignment;\n className?: string | ((row: Row<TData>) => string);\n control?: Table2ColumnControlRenderer;\n dataType?: ColumnDataType;\n disableReordering?: boolean;\n disableTruncation?: boolean;\n defaultWidth?: number;\n headerClassName?: string;\n menu?: Table2ColumnHeaderMenu;\n tooltip?: string;\n }\n}\n\ntype useColumnDefinitionsOptions<TType> = {\n actionsForRow: Table2RowActionProps<TType>[];\n enableColumnFiltering: boolean;\n enableColumnHiding: boolean;\n enableColumnPinning: boolean;\n enableRowExpansion: boolean;\n enableRowSelection: boolean;\n enableMultipleRowSelection: boolean;\n onRowDrag?: RowDragHandler<TType>;\n};\n\nexport function useColumnDefinitions<TType = any>(\n children: React.ReactElement<Table2ColumnProps<TType>>[],\n options: useColumnDefinitionsOptions<TType>,\n tableRef: React.RefObject<HTMLDivElement>\n) {\n const lastSelectedRowIndex = React.useRef<number>();\n const columnHelper = createColumnHelper<TType>();\n\n return React.useMemo(() => {\n // cannot be typed correctly until https://github.com/TanStack/table/discussions/4530 is resolved\n const columns: any[] = [];\n const defaultColumnPinning: string[] = [];\n const defaultColumnSizing: ColumnSizingState = {};\n const defaultColumnVisibility: VisibilityState = {};\n const defaultSorting: ColumnSort[] = [];\n const footers: Record<string, Table2ColumnFooterRenderer> = {};\n\n (React.Children.toArray(children) as React.ReactElement<Table2ColumnProps<TType>>[]).forEach(child => {\n if (React.isValidElement(child)) {\n if (child.props.defaultPinned && options.enableColumnPinning) {\n defaultColumnPinning.push(child.props.accessor);\n }\n\n if (child.props.defaultWidth) {\n defaultColumnSizing[child.props.accessor] = child.props.defaultWidth;\n }\n\n if (child.props.defaultHidden && options.enableColumnHiding) {\n defaultColumnVisibility[child.props.accessor] = false;\n }\n\n if (child.props.sort !== undefined) {\n defaultSorting.push({\n id: child.props.accessor,\n desc: child.props.sort === 'desc',\n });\n }\n\n if (child.props.footer) {\n footers[child.props.accessor] = child.props.footer;\n }\n\n columns.push({\n accessorKey: child.props.accessor,\n id: child.props.accessor,\n cell: props => {\n if (typeof child.props.renderer === 'function') {\n return child.props.renderer(props.getValue(), props.row.original);\n }\n\n return props.getValue();\n },\n header: child.props.header,\n meta: {\n align: child.props.align,\n className: child.props.className,\n control: child.props.control,\n dataType: child.props.dataType,\n defaultWidth: child.props.defaultWidth,\n disableReordering: child.props.disableReordering,\n disableTruncation: child.props.disableTruncation,\n menu: child.props.menu,\n tooltip: child.props.tooltip,\n },\n enableHiding: !child.props.disableHiding,\n // filtering\n enableColumnFilter: !child.props.disableFiltering,\n filterFn: options.enableColumnFiltering && !child.props.disableFiltering ? ('tacoFilter' as any) : undefined,\n // sizing\n enableResizing: !child.props.disableResizing,\n minSize: child.props.minWidth ?? MIN_COLUMN_SIZE,\n size: child.props.defaultWidth,\n // sorting\n enableSorting: !child.props.disableSorting,\n sortingFn: getSortingFn(child.props.dataType),\n });\n }\n });\n\n if (options.enableRowExpansion) {\n columns.unshift(columnHelper.display(createRowExpansionColumn()));\n defaultColumnPinning.unshift(COLUMN_ID_FOR_EXPANSION);\n }\n\n if (options.enableRowSelection) {\n columns.unshift(\n columnHelper.display(\n createRowSelectionColumn(\n options.enableMultipleRowSelection,\n lastSelectedRowIndex,\n options.onRowDrag,\n tableRef\n )\n )\n );\n defaultColumnPinning.unshift(COLUMN_ID_FOR_SELECTION);\n }\n\n if (options.onRowDrag) {\n columns.unshift(columnHelper.display(createRowDraggableColumn(options.onRowDrag)));\n defaultColumnPinning.unshift(COLUMN_ID_FOR_DRAGGABLE);\n }\n\n if (options.actionsForRow?.length) {\n columns.push(columnHelper.display(createRowActionsColumn(options.actionsForRow)));\n }\n\n return { columns, defaultColumnPinning, defaultColumnSizing, defaultColumnVisibility, defaultSorting, footers };\n }, [children]);\n}\n\nconst getSortingFn = (dataType?: ColumnDataType): SortingFnOption<any> => {\n if (dataType && dataType !== 'boolean') {\n return dataType;\n }\n\n return 'auto';\n};\n"],"names":["useColumnDefinitions","children","options","tableRef","lastSelectedRowIndex","React","useRef","columnHelper","createColumnHelper","useMemo","columns","defaultColumnPinning","defaultColumnSizing","defaultColumnVisibility","defaultSorting","footers","Children","toArray","forEach","child","isValidElement","props","defaultPinned","enableColumnPinning","push","accessor","defaultWidth","defaultHidden","enableColumnHiding","sort","undefined","id","desc","footer","accessorKey","cell","renderer","getValue","row","original","header","meta","align","className","control","dataType","disableReordering","disableTruncation","menu","tooltip","enableHiding","disableHiding","enableColumnFilter","disableFiltering","filterFn","enableColumnFiltering","enableResizing","disableResizing","minSize","minWidth","MIN_COLUMN_SIZE","size","enableSorting","disableSorting","sortingFn","getSortingFn","enableRowExpansion","unshift","display","createRowExpansionColumn","COLUMN_ID_FOR_EXPANSION","enableRowSelection","createRowSelectionColumn","enableMultipleRowSelection","onRowDrag","COLUMN_ID_FOR_SELECTION","createRowDraggableColumn","COLUMN_ID_FOR_DRAGGABLE","actionsForRow","length","createRowActionsColumn"],"mappings":"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"}
1
+ {"version":3,"file":"useColumnDefinitions.js","sources":["../../../../../../../../src/components/Table2/hooks/useColumnDefinitions.ts"],"sourcesContent":["import React from 'react';\nimport {\n createColumnHelper,\n ColumnSort,\n ColumnSizingState,\n Row,\n RowData,\n VisibilityState,\n SortingFnOption,\n} from '@tanstack/react-table';\nimport {\n CellAlignment,\n ColumnDataType,\n RowDragHandler,\n Table2ColumnControlRenderer,\n Table2ColumnFooterRenderer,\n Table2ColumnHeaderMenu,\n Table2ColumnProps,\n Table2RowActionProps,\n} from '../types';\nimport {\n COLUMN_ID_FOR_DRAGGABLE,\n COLUMN_ID_FOR_EXPANSION,\n COLUMN_ID_FOR_SELECTION,\n createRowActionsColumn,\n createRowDraggableColumn,\n createRowExpansionColumn,\n createRowSelectionColumn,\n MIN_COLUMN_SIZE,\n} from '../utilities/columns';\n\ndeclare module '@tanstack/table-core' {\n interface ColumnMeta<TData extends RowData, TValue> {\n align?: CellAlignment;\n className?: string | ((row: Row<TData>) => string);\n control?: Table2ColumnControlRenderer;\n dataType?: ColumnDataType;\n disableReordering?: boolean;\n disableTruncation?: boolean;\n defaultWidth?: number;\n headerClassName?: string;\n menu?: Table2ColumnHeaderMenu;\n tooltip?: string;\n }\n}\n\ntype useColumnDefinitionsOptions<TType> = {\n actionsForRow: Table2RowActionProps<TType>[];\n enableColumnFiltering: boolean;\n enableColumnHiding: boolean;\n enableColumnPinning: boolean;\n enableRowExpansion: boolean;\n enableRowSelection: boolean;\n enableMultipleRowSelection: boolean;\n onRowDrag?: RowDragHandler<TType>;\n};\n\nexport function useColumnDefinitions<TType = any>(\n children: React.ReactElement<Table2ColumnProps<TType>>[],\n options: useColumnDefinitionsOptions<TType>,\n tableRef: React.RefObject<HTMLDivElement>\n) {\n const lastSelectedRowIndex = React.useRef<number>();\n const columnHelper = createColumnHelper<TType>();\n\n return React.useMemo(() => {\n // cannot be typed correctly until https://github.com/TanStack/table/discussions/4530 is resolved\n const columns: any[] = [];\n const defaultColumnPinning: string[] = [];\n const defaultColumnSizing: ColumnSizingState = {};\n const defaultColumnVisibility: VisibilityState = {};\n const defaultSorting: ColumnSort[] = [];\n const footers: Record<string, Table2ColumnFooterRenderer> = {};\n\n (React.Children.toArray(children) as React.ReactElement<Table2ColumnProps<TType>>[]).forEach(child => {\n if (React.isValidElement(child)) {\n if (child.props.defaultPinned && options.enableColumnPinning) {\n defaultColumnPinning.push(child.props.accessor);\n }\n\n if (child.props.defaultWidth) {\n defaultColumnSizing[child.props.accessor] = child.props.defaultWidth;\n }\n\n if (child.props.defaultHidden && options.enableColumnHiding) {\n defaultColumnVisibility[child.props.accessor] = false;\n }\n\n if (child.props.sort !== undefined) {\n defaultSorting.push({\n id: child.props.accessor,\n desc: child.props.sort === 'desc',\n });\n }\n\n if (child.props.footer) {\n footers[child.props.accessor] = child.props.footer;\n }\n\n columns.push({\n accessorKey: child.props.accessor,\n id: child.props.accessor,\n cell: props => {\n if (typeof child.props.renderer === 'function') {\n return child.props.renderer(props.getValue(), props.row.original);\n }\n\n // If value is undefined then return null because cell is a react component, and undefined is not\n // a valid child value.\n return props.getValue() ?? null;\n },\n header: child.props.header,\n meta: {\n align: child.props.align,\n className: child.props.className,\n control: child.props.control,\n dataType: child.props.dataType,\n defaultWidth: child.props.defaultWidth,\n disableReordering: child.props.disableReordering,\n disableTruncation: child.props.disableTruncation,\n menu: child.props.menu,\n tooltip: child.props.tooltip,\n },\n enableHiding: !child.props.disableHiding,\n // filtering\n enableColumnFilter: !child.props.disableFiltering,\n filterFn: options.enableColumnFiltering && !child.props.disableFiltering ? ('tacoFilter' as any) : undefined,\n // sizing\n enableResizing: !child.props.disableResizing,\n minSize: child.props.minWidth ?? MIN_COLUMN_SIZE,\n size: child.props.defaultWidth,\n // sorting\n enableSorting: !child.props.disableSorting,\n sortingFn: getSortingFn(child.props.dataType),\n });\n }\n });\n\n if (options.enableRowExpansion) {\n columns.unshift(columnHelper.display(createRowExpansionColumn()));\n defaultColumnPinning.unshift(COLUMN_ID_FOR_EXPANSION);\n }\n\n if (options.enableRowSelection) {\n columns.unshift(\n columnHelper.display(\n createRowSelectionColumn(\n options.enableMultipleRowSelection,\n lastSelectedRowIndex,\n options.onRowDrag,\n tableRef\n )\n )\n );\n defaultColumnPinning.unshift(COLUMN_ID_FOR_SELECTION);\n }\n\n if (options.onRowDrag) {\n columns.unshift(columnHelper.display(createRowDraggableColumn(options.onRowDrag)));\n defaultColumnPinning.unshift(COLUMN_ID_FOR_DRAGGABLE);\n }\n\n if (options.actionsForRow?.length) {\n columns.push(columnHelper.display(createRowActionsColumn(options.actionsForRow)));\n }\n\n return { columns, defaultColumnPinning, defaultColumnSizing, defaultColumnVisibility, defaultSorting, footers };\n }, [children]);\n}\n\nconst getSortingFn = (dataType?: ColumnDataType): SortingFnOption<any> => {\n if (dataType && dataType !== 'boolean') {\n return dataType;\n }\n\n return 'auto';\n};\n"],"names":["useColumnDefinitions","children","options","tableRef","lastSelectedRowIndex","React","useRef","columnHelper","createColumnHelper","useMemo","columns","defaultColumnPinning","defaultColumnSizing","defaultColumnVisibility","defaultSorting","footers","Children","toArray","forEach","child","isValidElement","props","defaultPinned","enableColumnPinning","push","accessor","defaultWidth","defaultHidden","enableColumnHiding","sort","undefined","id","desc","footer","accessorKey","cell","renderer","getValue","row","original","header","meta","align","className","control","dataType","disableReordering","disableTruncation","menu","tooltip","enableHiding","disableHiding","enableColumnFilter","disableFiltering","filterFn","enableColumnFiltering","enableResizing","disableResizing","minSize","minWidth","MIN_COLUMN_SIZE","size","enableSorting","disableSorting","sortingFn","getSortingFn","enableRowExpansion","unshift","display","createRowExpansionColumn","COLUMN_ID_FOR_EXPANSION","enableRowSelection","createRowSelectionColumn","enableMultipleRowSelection","onRowDrag","COLUMN_ID_FOR_SELECTION","createRowDraggableColumn","COLUMN_ID_FOR_DRAGGABLE","actionsForRow","length","createRowActionsColumn"],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { COLUMN_ID_FOR_ACTIONS, isInternalColumn } from '../utilities/columns.js';
2
2
 
3
3
  const useGridTemplate = table => {
4
+ var _table$options$meta$t, _table$options$meta, _table$options$meta$t2, _table$options$meta$t3, _table$options$meta2, _table$options$meta2$;
4
5
  const allVisibleColumns = table.getVisibleLeafColumns();
6
+ let scrollbarWidth = ((_table$options$meta$t = (_table$options$meta = table.options.meta) === null || _table$options$meta === void 0 ? void 0 : (_table$options$meta$t2 = _table$options$meta.tableRef.current) === null || _table$options$meta$t2 === void 0 ? void 0 : _table$options$meta$t2.offsetWidth) !== null && _table$options$meta$t !== void 0 ? _table$options$meta$t : 0) - ((_table$options$meta$t3 = (_table$options$meta2 = table.options.meta) === null || _table$options$meta2 === void 0 ? void 0 : (_table$options$meta2$ = _table$options$meta2.tableRef.current) === null || _table$options$meta2$ === void 0 ? void 0 : _table$options$meta2$.clientWidth) !== null && _table$options$meta$t3 !== void 0 ? _table$options$meta$t3 : 0);
7
+ scrollbarWidth = scrollbarWidth < 0 ? 0 : scrollbarWidth;
5
8
  return allVisibleColumns.reduce((accum, column, index) => {
6
9
  let size;
7
10
  const isLastColumn = index === allVisibleColumns.length - 1;
@@ -12,7 +15,8 @@ const useGridTemplate = table => {
12
15
  size = `${column.getSize()}px`;
13
16
  } else if (width) {
14
17
  if (isLastColumn) {
15
- size = `minmax(${width}px, auto)`;
18
+ // Remove the scrollbar width from the last column
19
+ size = `minmax(${width - scrollbarWidth}px, auto)`;
16
20
  } else if (column.columnDef.minSize && width < column.columnDef.minSize) {
17
21
  // react-table is supposed to handle minSize itself but it is really buggy
18
22
  size = `${column.columnDef.minSize}px`;
@@ -1 +1 @@
1
- {"version":3,"file":"useGridTemplate.js","sources":["../../../../../../../../src/components/Table2/hooks/useGridTemplate.ts"],"sourcesContent":["import { Table } from '@tanstack/react-table';\nimport { COLUMN_ID_FOR_ACTIONS, isInternalColumn } from '../utilities/columns';\n\nexport const useGridTemplate = (table: Table<any>) => {\n const allVisibleColumns = table.getVisibleLeafColumns();\n\n return allVisibleColumns.reduce((accum, column, index) => {\n let size;\n const isLastColumn = index === allVisibleColumns.length - 1;\n const width = table.getState().columnSizing[column.id];\n\n if (column.id === COLUMN_ID_FOR_ACTIONS) {\n size = `minmax(max-content, auto)`;\n } else if (isInternalColumn(column.id)) {\n size = `${column.getSize()}px`;\n } else if (width) {\n if (isLastColumn) {\n size = `minmax(${width}px, auto)`;\n } else if (column.columnDef.minSize && width < column.columnDef.minSize) {\n // react-table is supposed to handle minSize itself but it is really buggy\n size = `${column.columnDef.minSize}px`;\n } else {\n size = `${width}px`;\n }\n } else if (column.getCanResize()) {\n size = 'minmax(max-content, auto)';\n } else {\n size = 'max-content';\n }\n\n return `${accum} ${size}`;\n }, '');\n};\n"],"names":["useGridTemplate","table","allVisibleColumns","getVisibleLeafColumns","reduce","accum","column","index","size","isLastColumn","length","width","getState","columnSizing","id","COLUMN_ID_FOR_ACTIONS","isInternalColumn","getSize","columnDef","minSize","getCanResize"],"mappings":";;MAGaA,eAAe,GAAIC,KAAiB;EAC7C,MAAMC,iBAAiB,GAAGD,KAAK,CAACE,qBAAqB,EAAE;EAEvD,OAAOD,iBAAiB,CAACE,MAAM,CAAC,CAACC,KAAK,EAAEC,MAAM,EAAEC,KAAK;IACjD,IAAIC,IAAI;IACR,MAAMC,YAAY,GAAGF,KAAK,KAAKL,iBAAiB,CAACQ,MAAM,GAAG,CAAC;IAC3D,MAAMC,KAAK,GAAGV,KAAK,CAACW,QAAQ,EAAE,CAACC,YAAY,CAACP,MAAM,CAACQ,EAAE,CAAC;IAEtD,IAAIR,MAAM,CAACQ,EAAE,KAAKC,qBAAqB,EAAE;MACrCP,IAAI,8BAA8B;KACrC,MAAM,IAAIQ,gBAAgB,CAACV,MAAM,CAACQ,EAAE,CAAC,EAAE;MACpCN,IAAI,MAAMF,MAAM,CAACW,OAAO,MAAM;KACjC,MAAM,IAAIN,KAAK,EAAE;MACd,IAAIF,YAAY,EAAE;QACdD,IAAI,aAAaG,gBAAgB;OACpC,MAAM,IAAIL,MAAM,CAACY,SAAS,CAACC,OAAO,IAAIR,KAAK,GAAGL,MAAM,CAACY,SAAS,CAACC,OAAO,EAAE;;QAErEX,IAAI,MAAMF,MAAM,CAACY,SAAS,CAACC,WAAW;OACzC,MAAM;QACHX,IAAI,MAAMG,SAAS;;KAE1B,MAAM,IAAIL,MAAM,CAACc,YAAY,EAAE,EAAE;MAC9BZ,IAAI,GAAG,2BAA2B;KACrC,MAAM;MACHA,IAAI,GAAG,aAAa;;IAGxB,UAAUH,SAASG,MAAM;GAC5B,EAAE,EAAE,CAAC;AACV;;;;"}
1
+ {"version":3,"file":"useGridTemplate.js","sources":["../../../../../../../../src/components/Table2/hooks/useGridTemplate.ts"],"sourcesContent":["import { Table } from '@tanstack/react-table';\nimport { COLUMN_ID_FOR_ACTIONS, isInternalColumn } from '../utilities/columns';\n\nexport const useGridTemplate = (table: Table<any>) => {\n const allVisibleColumns = table.getVisibleLeafColumns();\n\n let scrollbarWidth =\n (table.options.meta?.tableRef.current?.offsetWidth ?? 0) - (table.options.meta?.tableRef.current?.clientWidth ?? 0);\n scrollbarWidth = scrollbarWidth < 0 ? 0 : scrollbarWidth;\n\n return allVisibleColumns.reduce((accum, column, index) => {\n let size;\n const isLastColumn = index === allVisibleColumns.length - 1;\n const width = table.getState().columnSizing[column.id];\n\n if (column.id === COLUMN_ID_FOR_ACTIONS) {\n size = `minmax(max-content, auto)`;\n } else if (isInternalColumn(column.id)) {\n size = `${column.getSize()}px`;\n } else if (width) {\n if (isLastColumn) {\n // Remove the scrollbar width from the last column\n size = `minmax(${width - scrollbarWidth}px, auto)`;\n } else if (column.columnDef.minSize && width < column.columnDef.minSize) {\n // react-table is supposed to handle minSize itself but it is really buggy\n size = `${column.columnDef.minSize}px`;\n } else {\n size = `${width}px`;\n }\n } else if (column.getCanResize()) {\n size = 'minmax(max-content, auto)';\n } else {\n size = 'max-content';\n }\n\n return `${accum} ${size}`;\n }, '');\n};\n"],"names":["useGridTemplate","table","allVisibleColumns","getVisibleLeafColumns","scrollbarWidth","options","meta","tableRef","current","offsetWidth","clientWidth","reduce","accum","column","index","size","isLastColumn","length","width","getState","columnSizing","id","COLUMN_ID_FOR_ACTIONS","isInternalColumn","getSize","columnDef","minSize","getCanResize"],"mappings":";;MAGaA,eAAe,GAAIC,KAAiB;;EAC7C,MAAMC,iBAAiB,GAAGD,KAAK,CAACE,qBAAqB,EAAE;EAEvD,IAAIC,cAAc,GACd,iDAACH,KAAK,CAACI,OAAO,CAACC,IAAI,kFAAlB,oBAAoBC,QAAQ,CAACC,OAAO,2DAApC,uBAAsCC,WAAW,yEAAI,CAAC,uDAAKR,KAAK,CAACI,OAAO,CAACC,IAAI,kFAAlB,qBAAoBC,QAAQ,CAACC,OAAO,0DAApC,sBAAsCE,WAAW,2EAAI,CAAC,CAAC;EACvHN,cAAc,GAAGA,cAAc,GAAG,CAAC,GAAG,CAAC,GAAGA,cAAc;EAExD,OAAOF,iBAAiB,CAACS,MAAM,CAAC,CAACC,KAAK,EAAEC,MAAM,EAAEC,KAAK;IACjD,IAAIC,IAAI;IACR,MAAMC,YAAY,GAAGF,KAAK,KAAKZ,iBAAiB,CAACe,MAAM,GAAG,CAAC;IAC3D,MAAMC,KAAK,GAAGjB,KAAK,CAACkB,QAAQ,EAAE,CAACC,YAAY,CAACP,MAAM,CAACQ,EAAE,CAAC;IAEtD,IAAIR,MAAM,CAACQ,EAAE,KAAKC,qBAAqB,EAAE;MACrCP,IAAI,8BAA8B;KACrC,MAAM,IAAIQ,gBAAgB,CAACV,MAAM,CAACQ,EAAE,CAAC,EAAE;MACpCN,IAAI,MAAMF,MAAM,CAACW,OAAO,MAAM;KACjC,MAAM,IAAIN,KAAK,EAAE;MACd,IAAIF,YAAY,EAAE;;QAEdD,IAAI,aAAaG,KAAK,GAAGd,yBAAyB;OACrD,MAAM,IAAIS,MAAM,CAACY,SAAS,CAACC,OAAO,IAAIR,KAAK,GAAGL,MAAM,CAACY,SAAS,CAACC,OAAO,EAAE;;QAErEX,IAAI,MAAMF,MAAM,CAACY,SAAS,CAACC,WAAW;OACzC,MAAM;QACHX,IAAI,MAAMG,SAAS;;KAE1B,MAAM,IAAIL,MAAM,CAACc,YAAY,EAAE,EAAE;MAC9BZ,IAAI,GAAG,2BAA2B;KACrC,MAAM;MACHA,IAAI,GAAG,aAAa;;IAGxB,UAAUH,SAASG,MAAM;GAC5B,EAAE,EAAE,CAAC;AACV;;;;"}
@@ -4,7 +4,8 @@ const useSeparatedChildren = initialChildren => {
4
4
  return React__default.useMemo(() => {
5
5
  const columns = [];
6
6
  let toolbar;
7
- React__default.Children.toArray(initialChildren).forEach(child => {
7
+ React__default.Children.toArray(initialChildren).filter(child => !!child) // skip falsey columns
8
+ .forEach(child => {
8
9
  var _child$type, _child$type2;
9
10
  if (((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.displayName) === 'Table2Column') {
10
11
  columns.push(child);
@@ -1 +1 @@
1
- {"version":3,"file":"useSeparatedChildren.js","sources":["../../../../../../../../src/components/Table2/hooks/useSeparatedChildren.ts"],"sourcesContent":["import React from 'react';\n\nexport const useSeparatedChildren = initialChildren => {\n return React.useMemo(() => {\n const columns: any[] = [];\n let toolbar;\n\n React.Children.toArray(initialChildren).forEach((child: any) => {\n if (child.type?.displayName === 'Table2Column') {\n columns.push(child);\n } else if (child.type?.displayName === 'Table2Toolbar') {\n toolbar = child;\n }\n });\n\n return [columns, toolbar];\n }, [initialChildren]);\n};\n"],"names":["useSeparatedChildren","initialChildren","React","useMemo","columns","toolbar","Children","toArray","forEach","child","type","displayName","push"],"mappings":";;MAEaA,oBAAoB,GAAGC,eAAe;EAC/C,OAAOC,cAAK,CAACC,OAAO,CAAC;IACjB,MAAMC,OAAO,GAAU,EAAE;IACzB,IAAIC,OAAO;IAEXH,cAAK,CAACI,QAAQ,CAACC,OAAO,CAACN,eAAe,CAAC,CAACO,OAAO,CAAEC,KAAU;;MACvD,IAAI,gBAAAA,KAAK,CAACC,IAAI,gDAAV,YAAYC,WAAW,MAAK,cAAc,EAAE;QAC5CP,OAAO,CAACQ,IAAI,CAACH,KAAK,CAAC;OACtB,MAAM,IAAI,iBAAAA,KAAK,CAACC,IAAI,iDAAV,aAAYC,WAAW,MAAK,eAAe,EAAE;QACpDN,OAAO,GAAGI,KAAK;;KAEtB,CAAC;IAEF,OAAO,CAACL,OAAO,EAAEC,OAAO,CAAC;GAC5B,EAAE,CAACJ,eAAe,CAAC,CAAC;AACzB;;;;"}
1
+ {"version":3,"file":"useSeparatedChildren.js","sources":["../../../../../../../../src/components/Table2/hooks/useSeparatedChildren.ts"],"sourcesContent":["import React from 'react';\n\nexport const useSeparatedChildren = initialChildren => {\n return React.useMemo(() => {\n const columns: any[] = [];\n let toolbar;\n\n React.Children.toArray(initialChildren)\n .filter((child: any) => !!child) // skip falsey columns\n .forEach((child: any) => {\n if (child.type?.displayName === 'Table2Column') {\n columns.push(child);\n } else if (child.type?.displayName === 'Table2Toolbar') {\n toolbar = child;\n }\n });\n\n return [columns, toolbar];\n }, [initialChildren]);\n};\n"],"names":["useSeparatedChildren","initialChildren","React","useMemo","columns","toolbar","Children","toArray","filter","child","forEach","type","displayName","push"],"mappings":";;MAEaA,oBAAoB,GAAGC,eAAe;EAC/C,OAAOC,cAAK,CAACC,OAAO,CAAC;IACjB,MAAMC,OAAO,GAAU,EAAE;IACzB,IAAIC,OAAO;IAEXH,cAAK,CAACI,QAAQ,CAACC,OAAO,CAACN,eAAe,CAAC,CAClCO,MAAM,CAAEC,KAAU,IAAK,CAAC,CAACA,KAAK,CAAC;KAC/BC,OAAO,CAAED,KAAU;;MAChB,IAAI,gBAAAA,KAAK,CAACE,IAAI,gDAAV,YAAYC,WAAW,MAAK,cAAc,EAAE;QAC5CR,OAAO,CAACS,IAAI,CAACJ,KAAK,CAAC;OACtB,MAAM,IAAI,iBAAAA,KAAK,CAACE,IAAI,iDAAV,aAAYC,WAAW,MAAK,eAAe,EAAE;QACpDP,OAAO,GAAGI,KAAK;;KAEtB,CAAC;IAEN,OAAO,CAACL,OAAO,EAAEC,OAAO,CAAC;GAC5B,EAAE,CAACJ,eAAe,CAAC,CAAC;AACzB;;;;"}
@@ -59,6 +59,7 @@ function useTable(children, props, ref) {
59
59
  enableMultipleRowSelection,
60
60
  onRowDrag
61
61
  }, ref);
62
+ const lastSortedOrFilteredRows = React__default.useRef(null);
62
63
  // defaults
63
64
  const initialState = {
64
65
  columnOrder: (_settings$columnOrder = settings === null || settings === void 0 ? void 0 : settings.columnOrder) !== null && _settings$columnOrder !== void 0 ? _settings$columnOrder : columns.map(column => column.id),
@@ -175,11 +176,12 @@ function useTable(children, props, ref) {
175
176
  focussableColumnIndexes.current = [];
176
177
  },
177
178
  // table ref
178
- tableRef: ref
179
+ tableRef: ref,
180
+ // last sorted or filtered rows
181
+ lastSortedOrFilteredRows
179
182
  }
180
183
  });
181
184
  const tableRows = table.getRowModel().rows;
182
- const lastSortedOrFilteredRows = React__default.useRef(tableRows);
183
185
  if (!shouldPauseSortingAndFiltering) {
184
186
  lastSortedOrFilteredRows.current = tableRows;
185
187
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTable.js","sources":["../../../../../../../../src/components/Table2/hooks/useTable.ts"],"sourcesContent":["import React from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n OnChangeFn,\n getSortedRowModel,\n getFilteredRowModel,\n RowData,\n TableState,\n ColumnPinningState,\n VisibilityState,\n ColumnSizingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { RowClickHandler, RowDensity, Table2ColumnProps, Table2Props } from '../types';\nimport { useColumnDefinitions } from './useColumnDefinitions';\nimport { getOffsetsFromSize, useColumnOffsetStateListener } from './listeners/useColumnOffsetStateListener';\nimport { ColumnOffsetState } from '../types';\nimport { useRowSelectionListener } from './listeners/useRowSelectionListener';\nimport { useSettingsStateListener } from './listeners/useSettingsStateListener';\nimport { columnFilterFn, globalFilterFn } from '../utilities/filterFn';\nimport { ActiveRowHandler, ActiveRowMoveHandler, useActiveRow } from './useActiveRow';\nimport { useActiveRowStateListener } from './listeners/useActiveRowStateListener';\nimport { useEditMode } from './useEditMode';\n\ndeclare module '@tanstack/table-core' {\n interface TableMeta<TData extends RowData> {\n // active row\n activeRowIndex: number;\n setActiveRowIndex: ActiveRowHandler;\n moveToPreviousRow: ActiveRowMoveHandler<TData>;\n moveToNextRow: ActiveRowMoveHandler<TData>;\n // offsets\n columnOffsets: ColumnOffsetState;\n // density\n enableRowDensity: boolean;\n rowDensity: RowDensity;\n setRowDensity: OnChangeFn<RowDensity>;\n // dragging\n dragging: Record<string, boolean>;\n setDragging: OnChangeFn<Record<string, boolean>>;\n // computed\n enableColumnReordering: boolean;\n shouldPauseSortingAndFiltering: boolean;\n setShouldPauseSortingAndFiltering: OnChangeFn<boolean>;\n // other\n onRowClick?: RowClickHandler<TData>;\n hoveredRowIndex: number | undefined;\n setHoveredRowIndex: OnChangeFn<number | undefined>;\n // editing\n editMode: useEditMode;\n // used to determine first and last data column position\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n // disable table actions\n shouldDisableTableActions: boolean;\n setShouldDisableTableActions: OnChangeFn<boolean>;\n // active row column indexes\n focussableColumnIndexes: number[];\n addFocussableColumnIndex: (index: number) => void;\n resetFocussableColumnIndexes: () => void;\n // table ref\n tableRef: React.RefObject<HTMLDivElement>;\n }\n}\n\nexport function useTable<TType = any>(\n children: React.ReactElement<Table2ColumnProps<TType>>[],\n props: Table2Props<TType>,\n ref: React.RefObject<HTMLDivElement>\n) {\n const {\n actionsForRow = [],\n data,\n defaultActiveRowIndex,\n disableColumnFiltering = false,\n disableColumnHiding = false,\n disableColumnPinning = false,\n disableColumnReordering = false,\n disableColumnResizing = false,\n disableRowDensity = false,\n disableRowExpansion = false,\n disableRowSelection = false,\n disableMultipleRowSelection = false,\n disableSearch = false,\n disableSorting = false,\n expandedRowRenderer,\n manualColumnFiltering = false,\n manualSearch = false,\n manualSorting = false,\n onChangeSettings,\n onRowClick,\n onRowDrag,\n onRowSelect,\n onSave,\n settings = {},\n // experimental\n _experimentalActionsForTable,\n } = props;\n const enableRowExpansion = !disableRowExpansion && !!expandedRowRenderer;\n const enableRowSelection = !disableRowSelection && (!!onRowSelect || !!_experimentalActionsForTable?.length);\n const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;\n\n const { columns, defaultColumnPinning, defaultColumnSizing, defaultSorting, defaultColumnVisibility, footers } =\n useColumnDefinitions<TType>(\n children,\n {\n actionsForRow,\n enableColumnFiltering: !disableColumnFiltering,\n enableColumnHiding: !disableColumnHiding,\n enableColumnPinning: !disableColumnPinning,\n enableRowExpansion,\n enableRowSelection,\n enableMultipleRowSelection,\n onRowDrag,\n },\n ref\n );\n\n // defaults\n const initialState: Partial<TableState> = {\n columnOrder: settings?.columnOrder ?? columns.map(column => column.id as string),\n columnPinning: {\n left: settings?.columnPinning?.left ?? defaultColumnPinning ?? [],\n right: [],\n },\n columnSizing: settings?.columnSizing ?? defaultColumnSizing,\n columnVisibility: settings?.columnVisibility ?? defaultColumnVisibility,\n };\n\n // Data column index - these are needed to make sure left and right arrow key shortcuts focuses only the data columns\n const dataColumnStartOffset = [!!onRowDrag, !!enableRowExpansion, !!enableRowSelection].reduce((t, e) => t + (e ? 1 : 0), 0);\n const dataColumnEndOffset = actionsForRow.length ? 1 : 0;\n\n // custom\n const activeRow = useActiveRow<TType>(defaultActiveRowIndex);\n const [hoveredRowIndex, setHoveredRowIndex] = React.useState<number | undefined>(undefined);\n const editMode = useEditMode(onSave);\n const [columnOffsets, setColumnOffsets] = React.useState(\n getOffsetsFromSize(\n initialState.columnPinning as ColumnPinningState,\n initialState.columnVisibility as VisibilityState,\n initialState.columnSizing as ColumnSizingState\n )\n );\n const [rowDensity, setRowDensity] = React.useState<RowDensity>(settings?.rowDensity ?? 'normal');\n const [dragging, setDragging] = React.useState<Record<string, boolean>>({});\n const [shouldPauseSortingAndFiltering, setShouldPauseSortingAndFiltering] = React.useState<boolean>(false);\n const [shouldDisableTableActions, setShouldDisableTableActions] = React.useState<boolean>(false);\n // For some reason, using state instead of ref didn't work as expected, that's why ref is used\n const focussableColumnIndexes = React.useRef<number[]>([]);\n\n // some options get set even if they are undefined, so we have to do it conditionally\n const options: Partial<TableOptions<any>> = {\n enableExpanding: enableRowExpansion,\n enableColumnFilters: !disableColumnFiltering,\n enableColumnResizing: !disableColumnResizing,\n enableGlobalFilter: !disableSearch,\n enableHiding: !disableColumnHiding,\n enablePinning: !disableColumnPinning,\n enableRowSelection: enableRowSelection,\n enableMultiRowSelection: enableMultipleRowSelection,\n enableSorting: !disableSorting,\n };\n\n // resizing\n if (options.enableColumnResizing) {\n options.columnResizeMode = 'onChange';\n }\n\n // sorting\n if (options.enableSorting) {\n initialState.sorting = settings?.sorting ?? defaultSorting;\n\n if (manualSorting) {\n options.manualSorting = true;\n } else {\n options.getSortedRowModel = getSortedRowModel();\n }\n }\n\n // filtering\n if (options.enableColumnFilters) {\n initialState.columnFilters = settings?.columnFilters ?? [];\n\n if (manualColumnFiltering) {\n options.manualFiltering = true;\n } else {\n options.filterFns = {\n tacoFilter: (row, columnId, filter) => columnFilterFn(row.getValue(columnId), filter),\n };\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n // search\n if (options.enableGlobalFilter) {\n if (manualSearch) {\n options.manualFiltering = true;\n } else {\n options.globalFilterFn = (row, columnId, query) => globalFilterFn(row.getValue(columnId), query);\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n const table = useReactTable({\n data,\n columns: columns as any,\n getCoreRowModel: getCoreRowModel(),\n initialState,\n ...options,\n meta: {\n ...activeRow,\n editMode,\n // offsets\n columnOffsets,\n // density\n enableRowDensity: !disableRowDensity,\n rowDensity,\n setRowDensity,\n // dragging\n dragging,\n setDragging,\n // computed\n enableColumnReordering: !disableColumnReordering,\n // resorting\n shouldPauseSortingAndFiltering,\n setShouldPauseSortingAndFiltering,\n // other\n onRowClick,\n hoveredRowIndex,\n setHoveredRowIndex,\n // data column positions\n dataColumnStartOffset,\n dataColumnEndOffset,\n // disable table actions\n shouldDisableTableActions,\n setShouldDisableTableActions,\n // active row column indexes\n focussableColumnIndexes: focussableColumnIndexes.current,\n addFocussableColumnIndex: (index: number) => {\n if (!focussableColumnIndexes.current.includes(index)) {\n focussableColumnIndexes.current = [...focussableColumnIndexes.current, index].sort((a, b) => a - b);\n }\n },\n resetFocussableColumnIndexes: () => {\n focussableColumnIndexes.current = [];\n },\n // table ref\n tableRef: ref,\n },\n });\n\n const tableRows = table.getRowModel().rows;\n const lastSortedOrFilteredRows = React.useRef(tableRows);\n\n if (!shouldPauseSortingAndFiltering) {\n lastSortedOrFilteredRows.current = tableRows;\n }\n\n const rows = shouldPauseSortingAndFiltering ? lastSortedOrFilteredRows.current : tableRows;\n\n // state listeners\n useActiveRowStateListener<TType>(table, rows, activeRow);\n useColumnOffsetStateListener(table, setColumnOffsets);\n useRowSelectionListener<TType>(table, onRowSelect);\n useSettingsStateListener(table, onChangeSettings);\n\n return { rows, table, footers };\n}\n"],"names":["useTable","children","props","ref","actionsForRow","data","defaultActiveRowIndex","disableColumnFiltering","disableColumnHiding","disableColumnPinning","disableColumnReordering","disableColumnResizing","disableRowDensity","disableRowExpansion","disableRowSelection","disableMultipleRowSelection","disableSearch","disableSorting","expandedRowRenderer","manualColumnFiltering","manualSearch","manualSorting","onChangeSettings","onRowClick","onRowDrag","onRowSelect","onSave","settings","_experimentalActionsForTable","enableRowExpansion","enableRowSelection","length","enableMultipleRowSelection","columns","defaultColumnPinning","defaultColumnSizing","defaultSorting","defaultColumnVisibility","footers","useColumnDefinitions","enableColumnFiltering","enableColumnHiding","enableColumnPinning","initialState","columnOrder","map","column","id","columnPinning","left","right","columnSizing","columnVisibility","dataColumnStartOffset","reduce","t","e","dataColumnEndOffset","activeRow","useActiveRow","hoveredRowIndex","setHoveredRowIndex","React","useState","undefined","editMode","useEditMode","columnOffsets","setColumnOffsets","getOffsetsFromSize","rowDensity","setRowDensity","dragging","setDragging","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","shouldDisableTableActions","setShouldDisableTableActions","focussableColumnIndexes","useRef","options","enableExpanding","enableColumnFilters","enableColumnResizing","enableGlobalFilter","enableHiding","enablePinning","enableMultiRowSelection","enableSorting","columnResizeMode","sorting","getSortedRowModel","columnFilters","manualFiltering","filterFns","tacoFilter","row","columnId","filter","columnFilterFn","getValue","getFilteredRowModel","globalFilterFn","query","table","useReactTable","getCoreRowModel","meta","enableRowDensity","enableColumnReordering","current","addFocussableColumnIndex","index","includes","sort","a","b","resetFocussableColumnIndexes","tableRef","tableRows","getRowModel","rows","lastSortedOrFilteredRows","useActiveRowStateListener","useColumnOffsetStateListener","useRowSelectionListener","useSettingsStateListener"],"mappings":"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"}
1
+ {"version":3,"file":"useTable.js","sources":["../../../../../../../../src/components/Table2/hooks/useTable.ts"],"sourcesContent":["import React from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n OnChangeFn,\n getSortedRowModel,\n getFilteredRowModel,\n RowData,\n TableState,\n ColumnPinningState,\n VisibilityState,\n ColumnSizingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { RowClickHandler, RowDensity, Table2ColumnProps, Table2Props } from '../types';\nimport { useColumnDefinitions } from './useColumnDefinitions';\nimport { getOffsetsFromSize, useColumnOffsetStateListener } from './listeners/useColumnOffsetStateListener';\nimport { ColumnOffsetState } from '../types';\nimport { useRowSelectionListener } from './listeners/useRowSelectionListener';\nimport { useSettingsStateListener } from './listeners/useSettingsStateListener';\nimport { columnFilterFn, globalFilterFn } from '../utilities/filterFn';\nimport { ActiveRowHandler, ActiveRowMoveHandler, useActiveRow } from './useActiveRow';\nimport { useActiveRowStateListener } from './listeners/useActiveRowStateListener';\nimport { useEditMode } from './useEditMode';\n\ndeclare module '@tanstack/table-core' {\n interface TableMeta<TData extends RowData> {\n // active row\n activeRowIndex: number;\n setActiveRowIndex: ActiveRowHandler;\n moveToPreviousRow: ActiveRowMoveHandler<TData>;\n moveToNextRow: ActiveRowMoveHandler<TData>;\n // offsets\n columnOffsets: ColumnOffsetState;\n // density\n enableRowDensity: boolean;\n rowDensity: RowDensity;\n setRowDensity: OnChangeFn<RowDensity>;\n // dragging\n dragging: Record<string, boolean>;\n setDragging: OnChangeFn<Record<string, boolean>>;\n // computed\n enableColumnReordering: boolean;\n shouldPauseSortingAndFiltering: boolean;\n setShouldPauseSortingAndFiltering: OnChangeFn<boolean>;\n // other\n onRowClick?: RowClickHandler<TData>;\n hoveredRowIndex: number | undefined;\n setHoveredRowIndex: OnChangeFn<number | undefined>;\n // editing\n editMode: useEditMode;\n // used to determine first and last data column position\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n // disable table actions\n shouldDisableTableActions: boolean;\n setShouldDisableTableActions: OnChangeFn<boolean>;\n // active row column indexes\n focussableColumnIndexes: number[];\n addFocussableColumnIndex: (index: number) => void;\n resetFocussableColumnIndexes: () => void;\n // table ref\n tableRef: React.RefObject<HTMLDivElement>;\n // last sorted or filtered rows\n lastSortedOrFilteredRows: React.MutableRefObject<Array<any>>;\n }\n}\n\nexport function useTable<TType = any>(\n children: React.ReactElement<Table2ColumnProps<TType>>[],\n props: Table2Props<TType>,\n ref: React.RefObject<HTMLDivElement>\n) {\n const {\n actionsForRow = [],\n data,\n defaultActiveRowIndex,\n disableColumnFiltering = false,\n disableColumnHiding = false,\n disableColumnPinning = false,\n disableColumnReordering = false,\n disableColumnResizing = false,\n disableRowDensity = false,\n disableRowExpansion = false,\n disableRowSelection = false,\n disableMultipleRowSelection = false,\n disableSearch = false,\n disableSorting = false,\n expandedRowRenderer,\n manualColumnFiltering = false,\n manualSearch = false,\n manualSorting = false,\n onChangeSettings,\n onRowClick,\n onRowDrag,\n onRowSelect,\n onSave,\n settings = {},\n // experimental\n _experimentalActionsForTable,\n } = props;\n const enableRowExpansion = !disableRowExpansion && !!expandedRowRenderer;\n const enableRowSelection = !disableRowSelection && (!!onRowSelect || !!_experimentalActionsForTable?.length);\n const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;\n\n const { columns, defaultColumnPinning, defaultColumnSizing, defaultSorting, defaultColumnVisibility, footers } =\n useColumnDefinitions<TType>(\n children,\n {\n actionsForRow,\n enableColumnFiltering: !disableColumnFiltering,\n enableColumnHiding: !disableColumnHiding,\n enableColumnPinning: !disableColumnPinning,\n enableRowExpansion,\n enableRowSelection,\n enableMultipleRowSelection,\n onRowDrag,\n },\n ref\n );\n\n const lastSortedOrFilteredRows = React.useRef<any>(null);\n\n // defaults\n const initialState: Partial<TableState> = {\n columnOrder: settings?.columnOrder ?? columns.map(column => column.id as string),\n columnPinning: {\n left: settings?.columnPinning?.left ?? defaultColumnPinning ?? [],\n right: [],\n },\n columnSizing: settings?.columnSizing ?? defaultColumnSizing,\n columnVisibility: settings?.columnVisibility ?? defaultColumnVisibility,\n };\n\n // Data column index - these are needed to make sure left and right arrow key shortcuts focuses only the data columns\n const dataColumnStartOffset = [!!onRowDrag, !!enableRowExpansion, !!enableRowSelection].reduce((t, e) => t + (e ? 1 : 0), 0);\n const dataColumnEndOffset = actionsForRow.length ? 1 : 0;\n\n // custom\n const activeRow = useActiveRow<TType>(defaultActiveRowIndex);\n const [hoveredRowIndex, setHoveredRowIndex] = React.useState<number | undefined>(undefined);\n const editMode = useEditMode(onSave);\n const [columnOffsets, setColumnOffsets] = React.useState(\n getOffsetsFromSize(\n initialState.columnPinning as ColumnPinningState,\n initialState.columnVisibility as VisibilityState,\n initialState.columnSizing as ColumnSizingState\n )\n );\n const [rowDensity, setRowDensity] = React.useState<RowDensity>(settings?.rowDensity ?? 'normal');\n const [dragging, setDragging] = React.useState<Record<string, boolean>>({});\n const [shouldPauseSortingAndFiltering, setShouldPauseSortingAndFiltering] = React.useState<boolean>(false);\n const [shouldDisableTableActions, setShouldDisableTableActions] = React.useState<boolean>(false);\n // For some reason, using state instead of ref didn't work as expected, that's why ref is used\n const focussableColumnIndexes = React.useRef<number[]>([]);\n\n // some options get set even if they are undefined, so we have to do it conditionally\n const options: Partial<TableOptions<any>> = {\n enableExpanding: enableRowExpansion,\n enableColumnFilters: !disableColumnFiltering,\n enableColumnResizing: !disableColumnResizing,\n enableGlobalFilter: !disableSearch,\n enableHiding: !disableColumnHiding,\n enablePinning: !disableColumnPinning,\n enableRowSelection: enableRowSelection,\n enableMultiRowSelection: enableMultipleRowSelection,\n enableSorting: !disableSorting,\n };\n\n // resizing\n if (options.enableColumnResizing) {\n options.columnResizeMode = 'onChange';\n }\n\n // sorting\n if (options.enableSorting) {\n initialState.sorting = settings?.sorting ?? defaultSorting;\n\n if (manualSorting) {\n options.manualSorting = true;\n } else {\n options.getSortedRowModel = getSortedRowModel();\n }\n }\n\n // filtering\n if (options.enableColumnFilters) {\n initialState.columnFilters = settings?.columnFilters ?? [];\n\n if (manualColumnFiltering) {\n options.manualFiltering = true;\n } else {\n options.filterFns = {\n tacoFilter: (row, columnId, filter) => columnFilterFn(row.getValue(columnId), filter),\n };\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n // search\n if (options.enableGlobalFilter) {\n if (manualSearch) {\n options.manualFiltering = true;\n } else {\n options.globalFilterFn = (row, columnId, query) => globalFilterFn(row.getValue(columnId), query);\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n const table = useReactTable({\n data,\n columns: columns as any,\n getCoreRowModel: getCoreRowModel(),\n initialState,\n ...options,\n meta: {\n ...activeRow,\n editMode,\n // offsets\n columnOffsets,\n // density\n enableRowDensity: !disableRowDensity,\n rowDensity,\n setRowDensity,\n // dragging\n dragging,\n setDragging,\n // computed\n enableColumnReordering: !disableColumnReordering,\n // resorting\n shouldPauseSortingAndFiltering,\n setShouldPauseSortingAndFiltering,\n // other\n onRowClick,\n hoveredRowIndex,\n setHoveredRowIndex,\n // data column positions\n dataColumnStartOffset,\n dataColumnEndOffset,\n // disable table actions\n shouldDisableTableActions,\n setShouldDisableTableActions,\n // active row column indexes\n focussableColumnIndexes: focussableColumnIndexes.current,\n addFocussableColumnIndex: (index: number) => {\n if (!focussableColumnIndexes.current.includes(index)) {\n focussableColumnIndexes.current = [...focussableColumnIndexes.current, index].sort((a, b) => a - b);\n }\n },\n resetFocussableColumnIndexes: () => {\n focussableColumnIndexes.current = [];\n },\n // table ref\n tableRef: ref,\n // last sorted or filtered rows\n lastSortedOrFilteredRows,\n },\n });\n\n const tableRows = table.getRowModel().rows;\n\n if (!shouldPauseSortingAndFiltering) {\n lastSortedOrFilteredRows.current = tableRows;\n }\n\n const rows = shouldPauseSortingAndFiltering ? lastSortedOrFilteredRows.current : tableRows;\n\n // state listeners\n useActiveRowStateListener<TType>(table, rows, activeRow);\n useColumnOffsetStateListener(table, setColumnOffsets);\n useRowSelectionListener<TType>(table, onRowSelect);\n useSettingsStateListener(table, onChangeSettings);\n\n return { rows, table, footers };\n}\n"],"names":["useTable","children","props","ref","actionsForRow","data","defaultActiveRowIndex","disableColumnFiltering","disableColumnHiding","disableColumnPinning","disableColumnReordering","disableColumnResizing","disableRowDensity","disableRowExpansion","disableRowSelection","disableMultipleRowSelection","disableSearch","disableSorting","expandedRowRenderer","manualColumnFiltering","manualSearch","manualSorting","onChangeSettings","onRowClick","onRowDrag","onRowSelect","onSave","settings","_experimentalActionsForTable","enableRowExpansion","enableRowSelection","length","enableMultipleRowSelection","columns","defaultColumnPinning","defaultColumnSizing","defaultSorting","defaultColumnVisibility","footers","useColumnDefinitions","enableColumnFiltering","enableColumnHiding","enableColumnPinning","lastSortedOrFilteredRows","React","useRef","initialState","columnOrder","map","column","id","columnPinning","left","right","columnSizing","columnVisibility","dataColumnStartOffset","reduce","t","e","dataColumnEndOffset","activeRow","useActiveRow","hoveredRowIndex","setHoveredRowIndex","useState","undefined","editMode","useEditMode","columnOffsets","setColumnOffsets","getOffsetsFromSize","rowDensity","setRowDensity","dragging","setDragging","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","shouldDisableTableActions","setShouldDisableTableActions","focussableColumnIndexes","options","enableExpanding","enableColumnFilters","enableColumnResizing","enableGlobalFilter","enableHiding","enablePinning","enableMultiRowSelection","enableSorting","columnResizeMode","sorting","getSortedRowModel","columnFilters","manualFiltering","filterFns","tacoFilter","row","columnId","filter","columnFilterFn","getValue","getFilteredRowModel","globalFilterFn","query","table","useReactTable","getCoreRowModel","meta","enableRowDensity","enableColumnReordering","current","addFocussableColumnIndex","index","includes","sort","a","b","resetFocussableColumnIndexes","tableRef","tableRows","getRowModel","rows","useActiveRowStateListener","useColumnOffsetStateListener","useRowSelectionListener","useSettingsStateListener"],"mappings":";;;;;;;;;;;SAoEgBA,QAAQ,CACpBC,QAAwD,EACxDC,KAAyB,EACzBC,GAAoC;;EAEpC,MAAM;IACFC,aAAa,GAAG,EAAE;IAClBC,IAAI;IACJC,qBAAqB;IACrBC,sBAAsB,GAAG,KAAK;IAC9BC,mBAAmB,GAAG,KAAK;IAC3BC,oBAAoB,GAAG,KAAK;IAC5BC,uBAAuB,GAAG,KAAK;IAC/BC,qBAAqB,GAAG,KAAK;IAC7BC,iBAAiB,GAAG,KAAK;IACzBC,mBAAmB,GAAG,KAAK;IAC3BC,mBAAmB,GAAG,KAAK;IAC3BC,2BAA2B,GAAG,KAAK;IACnCC,aAAa,GAAG,KAAK;IACrBC,cAAc,GAAG,KAAK;IACtBC,mBAAmB;IACnBC,qBAAqB,GAAG,KAAK;IAC7BC,YAAY,GAAG,KAAK;IACpBC,aAAa,GAAG,KAAK;IACrBC,gBAAgB;IAChBC,UAAU;IACVC,SAAS;IACTC,WAAW;IACXC,MAAM;IACNC,QAAQ,GAAG,EAAE;;IAEbC;GACH,GAAG1B,KAAK;EACT,MAAM2B,kBAAkB,GAAG,CAAChB,mBAAmB,IAAI,CAAC,CAACK,mBAAmB;EACxE,MAAMY,kBAAkB,GAAG,CAAChB,mBAAmB,KAAK,CAAC,CAACW,WAAW,IAAI,CAAC,EAACG,4BAA4B,aAA5BA,4BAA4B,eAA5BA,4BAA4B,CAAEG,MAAM,EAAC;EAC5G,MAAMC,0BAA0B,GAAG,CAACjB,2BAA2B,IAAIe,kBAAkB;EAErF,MAAM;IAAEG,OAAO;IAAEC,oBAAoB;IAAEC,mBAAmB;IAAEC,cAAc;IAAEC,uBAAuB;IAAEC;GAAS,GAC1GC,oBAAoB,CAChBtC,QAAQ,EACR;IACIG,aAAa;IACboC,qBAAqB,EAAE,CAACjC,sBAAsB;IAC9CkC,kBAAkB,EAAE,CAACjC,mBAAmB;IACxCkC,mBAAmB,EAAE,CAACjC,oBAAoB;IAC1CoB,kBAAkB;IAClBC,kBAAkB;IAClBE,0BAA0B;IAC1BR;GACH,EACDrB,GAAG,CACN;EAEL,MAAMwC,wBAAwB,GAAGC,cAAK,CAACC,MAAM,CAAM,IAAI,CAAC;;EAGxD,MAAMC,YAAY,GAAwB;IACtCC,WAAW,2BAAEpB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEoB,WAAW,yEAAId,OAAO,CAACe,GAAG,CAACC,MAAM,IAAIA,MAAM,CAACC,EAAY,CAAC;IAChFC,aAAa,EAAE;MACXC,IAAI,mCAAEzB,QAAQ,aAARA,QAAQ,iDAARA,QAAQ,CAAEwB,aAAa,2DAAvB,uBAAyBC,IAAI,yEAAIlB,oBAAoB,uCAAI,EAAE;MACjEmB,KAAK,EAAE;KACV;IACDC,YAAY,2BAAE3B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE2B,YAAY,yEAAInB,mBAAmB;IAC3DoB,gBAAgB,2BAAE5B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE4B,gBAAgB,yEAAIlB;GACnD;;EAGD,MAAMmB,qBAAqB,GAAG,CAAC,CAAC,CAAChC,SAAS,EAAE,CAAC,CAACK,kBAAkB,EAAE,CAAC,CAACC,kBAAkB,CAAC,CAAC2B,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,IAAIC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EAC5H,MAAMC,mBAAmB,GAAGxD,aAAa,CAAC2B,MAAM,GAAG,CAAC,GAAG,CAAC;;EAGxD,MAAM8B,SAAS,GAAGC,YAAY,CAAQxD,qBAAqB,CAAC;EAC5D,MAAM,CAACyD,eAAe,EAAEC,kBAAkB,CAAC,GAAGpB,cAAK,CAACqB,QAAQ,CAAqBC,SAAS,CAAC;EAC3F,MAAMC,QAAQ,GAAGC,WAAW,CAAC1C,MAAM,CAAC;EACpC,MAAM,CAAC2C,aAAa,EAAEC,gBAAgB,CAAC,GAAG1B,cAAK,CAACqB,QAAQ,CACpDM,kBAAkB,CACdzB,YAAY,CAACK,aAAmC,EAChDL,YAAY,CAACS,gBAAmC,EAChDT,YAAY,CAACQ,YAAiC,CACjD,CACJ;EACD,MAAM,CAACkB,UAAU,EAAEC,aAAa,CAAC,GAAG7B,cAAK,CAACqB,QAAQ,yBAAatC,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE6C,UAAU,uEAAI,QAAQ,CAAC;EAChG,MAAM,CAACE,QAAQ,EAAEC,WAAW,CAAC,GAAG/B,cAAK,CAACqB,QAAQ,CAA0B,EAAE,CAAC;EAC3E,MAAM,CAACW,8BAA8B,EAAEC,iCAAiC,CAAC,GAAGjC,cAAK,CAACqB,QAAQ,CAAU,KAAK,CAAC;EAC1G,MAAM,CAACa,yBAAyB,EAAEC,4BAA4B,CAAC,GAAGnC,cAAK,CAACqB,QAAQ,CAAU,KAAK,CAAC;;EAEhG,MAAMe,uBAAuB,GAAGpC,cAAK,CAACC,MAAM,CAAW,EAAE,CAAC;;EAG1D,MAAMoC,OAAO,GAA+B;IACxCC,eAAe,EAAErD,kBAAkB;IACnCsD,mBAAmB,EAAE,CAAC5E,sBAAsB;IAC5C6E,oBAAoB,EAAE,CAACzE,qBAAqB;IAC5C0E,kBAAkB,EAAE,CAACrE,aAAa;IAClCsE,YAAY,EAAE,CAAC9E,mBAAmB;IAClC+E,aAAa,EAAE,CAAC9E,oBAAoB;IACpCqB,kBAAkB,EAAEA,kBAAkB;IACtC0D,uBAAuB,EAAExD,0BAA0B;IACnDyD,aAAa,EAAE,CAACxE;GACnB;;EAGD,IAAIgE,OAAO,CAACG,oBAAoB,EAAE;IAC9BH,OAAO,CAACS,gBAAgB,GAAG,UAAU;;;EAIzC,IAAIT,OAAO,CAACQ,aAAa,EAAE;IAAA;IACvB3C,YAAY,CAAC6C,OAAO,wBAAGhE,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEgE,OAAO,iEAAIvD,cAAc;IAE1D,IAAIf,aAAa,EAAE;MACf4D,OAAO,CAAC5D,aAAa,GAAG,IAAI;KAC/B,MAAM;MACH4D,OAAO,CAACW,iBAAiB,GAAGA,iBAAiB,EAAE;;;;EAKvD,IAAIX,OAAO,CAACE,mBAAmB,EAAE;IAAA;IAC7BrC,YAAY,CAAC+C,aAAa,4BAAGlE,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEkE,aAAa,yEAAI,EAAE;IAE1D,IAAI1E,qBAAqB,EAAE;MACvB8D,OAAO,CAACa,eAAe,GAAG,IAAI;KACjC,MAAM;MACHb,OAAO,CAACc,SAAS,GAAG;QAChBC,UAAU,EAAE,CAACC,GAAG,EAAEC,QAAQ,EAAEC,MAAM,KAAKC,cAAc,CAACH,GAAG,CAACI,QAAQ,CAACH,QAAQ,CAAC,EAAEC,MAAM;OACvF;MACDlB,OAAO,CAACqB,mBAAmB,GAAGA,mBAAmB,EAAE;;;;EAK3D,IAAIrB,OAAO,CAACI,kBAAkB,EAAE;IAC5B,IAAIjE,YAAY,EAAE;MACd6D,OAAO,CAACa,eAAe,GAAG,IAAI;KACjC,MAAM;MACHb,OAAO,CAACsB,cAAc,GAAG,CAACN,GAAG,EAAEC,QAAQ,EAAEM,KAAK,KAAKD,cAAc,CAACN,GAAG,CAACI,QAAQ,CAACH,QAAQ,CAAC,EAAEM,KAAK,CAAC;MAChGvB,OAAO,CAACqB,mBAAmB,GAAGA,mBAAmB,EAAE;;;EAI3D,MAAMG,KAAK,GAAGC,aAAa,CAAC;IACxBrG,IAAI;IACJ4B,OAAO,EAAEA,OAAc;IACvB0E,eAAe,EAAEA,eAAe,EAAE;IAClC7D,YAAY;IACZ,GAAGmC,OAAO;IACV2B,IAAI,EAAE;MACF,GAAG/C,SAAS;MACZM,QAAQ;;MAERE,aAAa;;MAEbwC,gBAAgB,EAAE,CAACjG,iBAAiB;MACpC4D,UAAU;MACVC,aAAa;;MAEbC,QAAQ;MACRC,WAAW;;MAEXmC,sBAAsB,EAAE,CAACpG,uBAAuB;;MAEhDkE,8BAA8B;MAC9BC,iCAAiC;;MAEjCtD,UAAU;MACVwC,eAAe;MACfC,kBAAkB;;MAElBR,qBAAqB;MACrBI,mBAAmB;;MAEnBkB,yBAAyB;MACzBC,4BAA4B;;MAE5BC,uBAAuB,EAAEA,uBAAuB,CAAC+B,OAAO;MACxDC,wBAAwB,EAAGC,KAAa;QACpC,IAAI,CAACjC,uBAAuB,CAAC+B,OAAO,CAACG,QAAQ,CAACD,KAAK,CAAC,EAAE;UAClDjC,uBAAuB,CAAC+B,OAAO,GAAG,CAAC,GAAG/B,uBAAuB,CAAC+B,OAAO,EAAEE,KAAK,CAAC,CAACE,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;;OAE1G;MACDC,4BAA4B,EAAE;QAC1BtC,uBAAuB,CAAC+B,OAAO,GAAG,EAAE;OACvC;;MAEDQ,QAAQ,EAAEpH,GAAG;;MAEbwC;;GAEP,CAAC;EAEF,MAAM6E,SAAS,GAAGf,KAAK,CAACgB,WAAW,EAAE,CAACC,IAAI;EAE1C,IAAI,CAAC9C,8BAA8B,EAAE;IACjCjC,wBAAwB,CAACoE,OAAO,GAAGS,SAAS;;EAGhD,MAAME,IAAI,GAAG9C,8BAA8B,GAAGjC,wBAAwB,CAACoE,OAAO,GAAGS,SAAS;;EAG1FG,yBAAyB,CAAQlB,KAAK,EAAEiB,IAAI,EAAE7D,SAAS,CAAC;EACxD+D,4BAA4B,CAACnB,KAAK,EAAEnC,gBAAgB,CAAC;EACrDuD,uBAAuB,CAAQpB,KAAK,EAAEhF,WAAW,CAAC;EAClDqG,wBAAwB,CAACrB,KAAK,EAAEnF,gBAAgB,CAAC;EAEjD,OAAO;IAAEoG,IAAI;IAAEjB,KAAK;IAAEnE;GAAS;AACnC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table2/types.ts"],"sourcesContent":["import React from 'react';\nimport {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n OnChangeFn,\n Row,\n SortingState,\n VisibilityState,\n} from '@tanstack/react-table';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { IconName } from '../Icon/Icon';\nimport { MenuProps } from '../Menu/Menu';\n\nexport enum Table2FilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsOneOf,\n IsNoneOf,\n IsAllOf,\n}\n\nexport type Table2Filter<TType = any> = {\n comparator?: Table2FilterComparator;\n value: TType | TType[];\n};\n\nexport type ColumnOffsetState = Record<string, number | undefined>;\nexport type RowDensity = 'compact' | 'normal' | 'comfortable' | 'spacious';\nexport type CellAlignment = 'left' | 'center' | 'right';\n\nexport type SortDirection = 'asc' | 'desc';\nexport type ColumnDataType = 'auto' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\n\nexport type Table2ToolbarProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport type Table2ColumnHeaderRenderer<TType = any> = (value: any, row: TType) => JSX.Element | string | null;\nexport type Table2ColumnHeaderMenu = (props: Partial<MenuProps>) => JSX.Element;\nexport type Table2ColumnFooterRenderer = (values: any[]) => JSX.Element | string | null;\n\nexport type Table2ColumnControlProps = {\n onBlur: (newValue?: any) => Promise<void>;\n onFocus: React.FocusEventHandler;\n ref: React.RefObject<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n disabled?: boolean;\n readOnly?: boolean;\n // This is a temporary fix to enable up/down arrow key shortcuts on input in quick mode. For some reason,\n // the preventDefault is true on Taco Input, so the keyboard shortcuts doesn't work. By adding this\n // data attribute we make sure the event is coming from a control component, and then we can make sure\n // keyboard shortcut works as expected.\n 'data-inline-editing-component'?: 'true';\n};\nexport type Table2ColumnControlRenderer<TType = any> =\n | ((props: Table2ColumnControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch';\n\nexport type Table2ColumnProps<TType = any> = {\n accessor: string;\n align?: CellAlignment;\n className?: string | ((row: Row<TType>) => string);\n control?: Table2ColumnControlRenderer<TType>;\n dataType?: ColumnDataType;\n defaultActiveColumnIndex?: number;\n defaultActiveRowIndex?: number;\n defaultHidden?: boolean;\n defaultPinned?: boolean;\n disableFiltering?: boolean;\n disableHiding?: boolean;\n disableReordering?: boolean;\n disableResizing?: boolean;\n disableSorting?: boolean;\n disableTruncation?: boolean;\n defaultWidth?: number;\n header: string;\n headerClassName?: string;\n footer?: Table2ColumnFooterRenderer;\n renderer?: Table2ColumnHeaderRenderer<TType>;\n menu?: Table2ColumnHeaderMenu;\n minWidth?: number;\n sort?: SortDirection;\n tooltip?: string;\n};\n\nexport type Table2ActionProps<TType> = {\n dialog?: (rows: TType[], resetSelectedRows: () => void) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((rows: TType[]) => boolean);\n icon: IconName | ((rows: TType[]) => IconName);\n onClick?: (rows: TType[], resetSelectedRows: () => void) => void;\n text: string | ((rows: TType[]) => string);\n visible?: boolean | ((rows: TType[]) => boolean);\n};\n\nexport type Table2RowActionProps<TType> = {\n ariaLabel: string | ((row: TType) => string);\n dialog?: (row: TType) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((row: TType) => boolean);\n icon: IconName | ((row: TType) => IconName);\n onClick?: (row: TType) => void;\n text: string | ((row: TType) => string);\n visible?: boolean | ((row: TType) => boolean);\n};\n\nexport type Table2Settings = {\n columnFilters?: ColumnFiltersState;\n columnOrder?: ColumnOrderState;\n columnPinning?: ColumnPinningState;\n columnSizing?: ColumnSizingState;\n columnVisibility?: VisibilityState;\n globalFilter?: string;\n rowDensity?: RowDensity;\n sorting?: SortingState;\n};\n\nexport type RowClickHandler<TType = any> = (row: TType) => void;\nexport type RowDragHandler<TType = any> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type RowSelectionHandler<TType = any> = (rows: TType[]) => void;\nexport type SortHandler = OnChangeFn<SortingState>;\nexport type SettingsHandler = OnChangeFn<Table2Settings>;\nexport type SaveHandlerErrorResponse = Record<string, string | undefined | null> | null;\nexport type SaveHandler<TType = any> = (row: TType, accessor: string) => Promise<SaveHandlerErrorResponse | void>;\n\nexport type DataColumnIndexes = {\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n};\n\nexport type Table2Props<TType = any> = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {\n actionsForRow?: Table2RowActionProps<TType>[];\n children: React.ReactElement<Table2ColumnProps<TType>>[];\n className?: string;\n data: TType[];\n defaultActiveRowIndex?: number;\n disableColumnFiltering?: boolean;\n disableColumnHiding?: boolean;\n disableColumnPinning?: boolean;\n disableColumnReordering?: boolean;\n disableColumnResizing?: boolean;\n disableRowDensity?: boolean;\n disableRowExpansion?: boolean;\n disableRowSelection?: boolean;\n disableMultipleRowSelection?: boolean;\n disableSearch?: boolean;\n disableSorting?: boolean;\n emptyState?: () => JSX.Element;\n expandedRowRenderer?: (row: TType) => JSX.Element;\n length?: number;\n loadMore?: () => Promise<void>;\n manualColumnFiltering?: boolean;\n manualSearch?: boolean;\n manualSorting?: boolean;\n onChangeSettings?: SettingsHandler;\n onRowClick?: RowClickHandler<TType>;\n onRowDrag?: RowDragHandler<TType>;\n onRowSelect?: RowSelectionHandler<TType>;\n onSave?: SaveHandler<TType>;\n settings?: Table2Settings;\n _experimentalActionsForTable?: Table2ActionProps<TType>[];\n _experimentalActionsForTableSummary?: (rows: TType[]) => JSX.Element | string;\n};\n"],"names":["Table2FilterComparator"],"mappings":"IAeYA;AAAZ,WAAYA,sBAAsB;EAC9BA,2EAAQ;EACRA,uFAAc;EACdA,6EAAS;EACTA,mFAAY;EACZA,qFAAa;EACbA,+EAAU;EACVA,6EAAS;EACTA,yEAAO;EACPA,2EAAQ;EACRA,yEAAO;AACX,CAAC,EAXWA,sBAAsB,KAAtBA,sBAAsB;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table2/types.ts"],"sourcesContent":["import React from 'react';\nimport {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n OnChangeFn,\n Row,\n SortingState,\n VisibilityState,\n} from '@tanstack/react-table';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { IconName } from '../Icon/Icon';\nimport { MenuProps } from '../Menu/Menu';\n\nexport enum Table2FilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsOneOf,\n IsNoneOf,\n IsAllOf,\n}\n\nexport type Table2Filter<TType = any> = {\n comparator?: Table2FilterComparator;\n value: TType | TType[];\n};\n\nexport type ColumnOffsetState = Record<string, number | undefined>;\nexport type RowDensity = 'compact' | 'normal' | 'comfortable' | 'spacious';\nexport type CellAlignment = 'left' | 'center' | 'right';\n\nexport type SortDirection = 'asc' | 'desc';\nexport type ColumnDataType = 'auto' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\n\nexport type Table2ToolbarProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport type Table2ColumnHeaderRenderer<TType = any> = (value: any, row: TType) => JSX.Element | string | null;\nexport type Table2ColumnHeaderMenu = (props: Partial<MenuProps>) => JSX.Element;\nexport type Table2ColumnFooterRenderer = (values: any[]) => JSX.Element | string | null;\n\nexport type Table2ColumnControlProps = {\n onBlur: (newValue?: any) => Promise<void>;\n onFocus: React.FocusEventHandler;\n ref: React.RefObject<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n disabled?: boolean;\n readOnly?: boolean;\n // This is a temporary fix to enable up/down arrow key shortcuts on input in quick mode. For some reason,\n // the preventDefault is true on Taco Input, so the keyboard shortcuts doesn't work. By adding this\n // data attribute we make sure the event is coming from a control component, and then we can make sure\n // keyboard shortcut works as expected.\n 'data-inline-editing-component'?: 'true';\n className?: string;\n};\nexport type Table2ColumnControlRenderer<TType = any> =\n | ((props: Table2ColumnControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch';\n\nexport type Table2ColumnProps<TType = any> = {\n accessor: string;\n align?: CellAlignment;\n className?: string | ((row: Row<TType>) => string);\n control?: Table2ColumnControlRenderer<TType>;\n dataType?: ColumnDataType;\n defaultActiveColumnIndex?: number;\n defaultActiveRowIndex?: number;\n defaultHidden?: boolean;\n defaultPinned?: boolean;\n disableFiltering?: boolean;\n disableHiding?: boolean;\n disableReordering?: boolean;\n disableResizing?: boolean;\n disableSorting?: boolean;\n disableTruncation?: boolean;\n defaultWidth?: number;\n header: string;\n headerClassName?: string;\n footer?: Table2ColumnFooterRenderer;\n renderer?: Table2ColumnHeaderRenderer<TType>;\n menu?: Table2ColumnHeaderMenu;\n minWidth?: number;\n sort?: SortDirection;\n tooltip?: string;\n};\n\nexport type Table2ActionProps<TType> = {\n dialog?: (rows: TType[], resetSelectedRows: () => void) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((rows: TType[]) => boolean);\n icon: IconName | ((rows: TType[]) => IconName);\n onClick?: (rows: TType[], resetSelectedRows: () => void) => void;\n text: string | ((rows: TType[]) => string);\n visible?: boolean | ((rows: TType[]) => boolean);\n};\n\nexport type Table2RowActionProps<TType> = {\n ariaLabel: string | ((row: TType) => string);\n dialog?: (row: TType) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((row: TType) => boolean);\n icon: IconName | ((row: TType) => IconName);\n onClick?: (row: TType) => void;\n text: string | ((row: TType) => string);\n visible?: boolean | ((row: TType) => boolean);\n};\n\nexport type Table2Settings = {\n columnFilters?: ColumnFiltersState;\n columnOrder?: ColumnOrderState;\n columnPinning?: ColumnPinningState;\n columnSizing?: ColumnSizingState;\n columnVisibility?: VisibilityState;\n globalFilter?: string;\n rowDensity?: RowDensity;\n sorting?: SortingState;\n};\n\nexport type RowClickHandler<TType = any> = (row: TType) => void;\nexport type RowDragHandler<TType = any> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type RowSelectionHandler<TType = any> = (rows: TType[]) => void;\nexport type SortHandler = OnChangeFn<SortingState>;\nexport type SettingsHandler = OnChangeFn<Table2Settings>;\nexport type SaveHandlerErrorResponse = Record<string, string | undefined | null> | null;\nexport type SaveHandler<TType = any> = (row: TType, accessor: string) => Promise<SaveHandlerErrorResponse | void>;\n\nexport type DataColumnIndexes = {\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n};\n\nexport type Table2Props<TType = any> = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {\n actionsForRow?: Table2RowActionProps<TType>[];\n children: (React.ReactElement<Table2ColumnProps<TType>> | boolean | null)[];\n className?: string;\n data: TType[];\n defaultActiveRowIndex?: number;\n disableColumnFiltering?: boolean;\n disableColumnHiding?: boolean;\n disableColumnPinning?: boolean;\n disableColumnReordering?: boolean;\n disableColumnResizing?: boolean;\n disableRowDensity?: boolean;\n disableRowExpansion?: boolean;\n disableRowSelection?: boolean;\n disableMultipleRowSelection?: boolean;\n disableSearch?: boolean;\n disableSorting?: boolean;\n emptyState?: () => JSX.Element;\n expandedRowRenderer?: (row: TType) => JSX.Element;\n length?: number;\n loadMore?: () => Promise<void>;\n manualColumnFiltering?: boolean;\n manualSearch?: boolean;\n manualSorting?: boolean;\n onChangeSettings?: SettingsHandler;\n onRowClick?: RowClickHandler<TType>;\n onRowDrag?: RowDragHandler<TType>;\n onRowSelect?: RowSelectionHandler<TType>;\n onSave?: SaveHandler<TType>;\n settings?: Table2Settings;\n _experimentalActionsForTable?: Table2ActionProps<TType>[];\n _experimentalActionsForTableSummary?: (rows: TType[]) => JSX.Element | string;\n};\n"],"names":["Table2FilterComparator"],"mappings":"IAeYA;AAAZ,WAAYA,sBAAsB;EAC9BA,2EAAQ;EACRA,uFAAc;EACdA,6EAAS;EACTA,mFAAY;EACZA,qFAAa;EACbA,+EAAU;EACVA,6EAAS;EACTA,yEAAO;EACPA,2EAAQ;EACRA,yEAAO;AACX,CAAC,EAXWA,sBAAsB,KAAtBA,sBAAsB;;;;"}
@@ -219,31 +219,34 @@ function createRowExpansionColumn() {
219
219
  const getActionPropertyValue = (property, row) => typeof property === 'function' ? property(row) : property;
220
220
  function RowActionCell({
221
221
  row,
222
- table,
223
222
  actions,
224
223
  moreActions
225
224
  }) {
226
225
  const isVisible = action => typeof action.visible !== 'undefined' ? typeof action.visible === 'function' ? action.visible(row.original) : action.visible : true;
227
226
  const visibleActions = actions.filter(isVisible);
228
227
  const visibleMoreActions = moreActions.filter(isVisible);
229
- if (table.options.meta.activeRowIndex !== row.index && table.options.meta.hoveredRowIndex !== row.index) {
228
+ const rowActionCellWidth = React__default.useMemo(() => {
230
229
  const totalButtons = visibleActions.length + (visibleMoreActions.length ? 1 : 0);
231
230
  // this is necessary because row actions is has this mount hover delay, which makes the
232
231
  // size calculation in the header get set before rendering - meaning the size doesn't include the buttons
233
232
  // when we cache icons this can go
234
233
  const paddingSize = 8;
235
234
  const buttonSize = 32;
236
- return /*#__PURE__*/React__default.createElement("span", {
237
- className: "flex",
238
- style: {
239
- width: paddingSize + totalButtons * buttonSize
240
- }
241
- });
242
- }
235
+ return paddingSize + totalButtons * buttonSize;
236
+ }, [visibleActions.length, visibleMoreActions.length]);
237
+ // Instead of relying on row.index to figure out whether the row is being hovered or is active. We should rely on a
238
+ // CSS fix. The reason behind this is that row data or index is the initial data or index that is passed to the
239
+ // table on the first render, the indexes of row changes when sorting or filtering is applied.
240
+ // If the row is not the active row or the hovered row then actions are hidden.
241
+ const actionClassName = 'group-hover/row:flex group-[[aria-current]]/row:flex hidden';
243
242
  return /*#__PURE__*/React__default.createElement("span", {
244
- className: "-mb-2 -mt-1.5 text-right"
243
+ className: "-mb-2 -mt-1.5 flex justify-end text-right",
244
+ style: {
245
+ width: rowActionCellWidth
246
+ }
245
247
  }, visibleActions.map((action, i) => /*#__PURE__*/React__default.createElement(IconButton, {
246
248
  key: i,
249
+ className: actionClassName,
247
250
  "aria-label": getActionPropertyValue(action.ariaLabel, row.original),
248
251
  appearance: "discrete",
249
252
  dialog: action.dialog ? action.dialog(row.original) : undefined,
@@ -257,6 +260,7 @@ function RowActionCell({
257
260
  },
258
261
  tooltip: getActionPropertyValue(action.text, row.original)
259
262
  })), visibleMoreActions.length ? /*#__PURE__*/React__default.createElement(IconButton, {
263
+ className: actionClassName,
260
264
  "aria-label": "View other actions",
261
265
  appearance: "discrete",
262
266
  icon: "more",
@@ -283,11 +287,9 @@ function createRowActionsColumn(rowActions) {
283
287
  return {
284
288
  id: COLUMN_ID_FOR_ACTIONS,
285
289
  cell: ({
286
- row,
287
- table
290
+ row
288
291
  }) => /*#__PURE__*/React__default.createElement(RowActionCell, {
289
292
  row: row,
290
- table: table,
291
293
  actions: actions,
292
294
  moreActions: moreActions
293
295
  }),