@economic/taco 2.5.0 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. package/dist/components/Icon/components/ChartArea.d.ts +3 -0
  2. package/dist/components/Icon/components/ChartBar.d.ts +3 -0
  3. package/dist/components/Icon/components/ChartLine.d.ts +3 -0
  4. package/dist/components/Icon/components/ChartPie.d.ts +3 -0
  5. package/dist/components/Icon/components/ChartTable.d.ts +3 -0
  6. package/dist/components/Icon/components/index.d.ts +1 -1
  7. package/dist/components/Input/Input.d.ts +1 -1
  8. package/dist/components/Menu/components/Item.d.ts +1 -1
  9. package/dist/components/Menu/components/Link.d.ts +1 -1
  10. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  11. package/dist/components/Select2/components/Option.d.ts +1 -1
  12. package/dist/components/Select2/components/Search.d.ts +1 -1
  13. package/dist/components/Tag/Tag.d.ts +1 -1
  14. package/dist/esm/packages/taco/src/components/Icon/components/ChartArea.js +19 -0
  15. package/dist/esm/packages/taco/src/components/Icon/components/ChartArea.js.map +1 -0
  16. package/dist/esm/packages/taco/src/components/Icon/components/ChartBar.js +19 -0
  17. package/dist/esm/packages/taco/src/components/Icon/components/ChartBar.js.map +1 -0
  18. package/dist/esm/packages/taco/src/components/Icon/components/ChartLine.js +19 -0
  19. package/dist/esm/packages/taco/src/components/Icon/components/ChartLine.js.map +1 -0
  20. package/dist/esm/packages/taco/src/components/Icon/components/ChartPie.js +17 -0
  21. package/dist/esm/packages/taco/src/components/Icon/components/ChartPie.js.map +1 -0
  22. package/dist/esm/packages/taco/src/components/Icon/components/ChartTable.js +19 -0
  23. package/dist/esm/packages/taco/src/components/Icon/components/ChartTable.js.map +1 -0
  24. package/dist/esm/packages/taco/src/components/Icon/components/index.js +10 -0
  25. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +6 -1
  27. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Drag.js +2 -2
  29. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Drag.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js +3 -3
  31. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js +0 -5
  33. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +3 -1
  35. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
  36. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js +14 -5
  37. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js.map +1 -1
  38. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js +4 -1
  39. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js.map +1 -1
  40. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js +82 -78
  41. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js.map +1 -1
  42. package/dist/esm/packages/taco/src/components/Table3/hooks/useCssGrid.js +2 -0
  43. package/dist/esm/packages/taco/src/components/Table3/hooks/useCssGrid.js.map +1 -1
  44. package/dist/esm/packages/taco/src/hooks/useLocalStorage.js +11 -1
  45. package/dist/esm/packages/taco/src/hooks/useLocalStorage.js.map +1 -1
  46. package/dist/hooks/useLocalStorage.d.ts +1 -1
  47. package/dist/taco.cjs.development.js +205 -96
  48. package/dist/taco.cjs.development.js.map +1 -1
  49. package/dist/taco.cjs.production.min.js +1 -1
  50. package/dist/taco.cjs.production.min.js.map +1 -1
  51. package/package.json +2 -2
  52. package/types.json +21533 -11793
@@ -1 +1 @@
1
- {"version":3,"file":"Drag.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Drag.tsx"],"sourcesContent":["import React from 'react';\nimport { CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Table3RowDragHandler } from '../../../types';\nimport { Icon } from '../../../../Icon/Icon';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Footer } from '../footer/Footer';\n\nexport const COLUMN_ID = '__drag';\nconst GHOST_ELEMENT_ID = 'taco_table_dragging';\n\ntype CellProps<TType = unknown> = CellContext<TType, unknown> & {\n isSelected: boolean;\n onRowDrag: Table3RowDragHandler<TType>;\n};\n\nconst Cell = React.memo(function MemoedCell<TType = unknown>(props: CellProps<TType>) {\n const { isSelected, onRowDrag: handleRowDrag, row, table } = props;\n const { texts } = useLocalization();\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n const onDragStart = (event: React.DragEvent): void => {\n let rows = [row];\n\n if (table.options.enableRowSelection) {\n rows = isSelected ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n }\n\n const data = rows.map(row => row.original);\n\n tableMeta.rowDrag.setDragging(\n rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})\n );\n\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.appendChild(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n handleRowDrag(data, showPlaceholder, setDataTransfer);\n };\n\n const handleDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n tableMeta.rowDrag.setDragging({});\n };\n\n return (\n <DisplayCell {...props}>\n <div draggable onDragStart={onDragStart} onDragOver={event => event.preventDefault()} onDragEnd={handleDragEnd}>\n <Icon\n aria-label={texts.table3.columns.drag.tooltip}\n name=\"drag\"\n className=\"text-grey-darkest invisible -mt-1 w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed='true']]/row:text-white\"\n />\n </div>\n </DisplayCell>\n );\n}) as <TType = unknown>(props: CellProps<TType>) => JSX.Element;\n\nexport function createRowDragColumn<TType = unknown>(onRowDrag: Table3RowDragHandler<TType>): DisplayColumnDef<TType, unknown> {\n return {\n id: COLUMN_ID,\n header: ColumnHeader,\n cell: (context: CellContext<TType, unknown>) => (\n <Cell {...context} isSelected={context.row.getIsSelected()} onRowDrag={onRowDrag} />\n ),\n footer: Footer,\n meta: {\n align: 'center',\n className: '!p-0 !pt-[var(--table3-row-padding)]',\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: 'items-center !p-0',\n },\n // options\n enableResizing: false,\n size: 15,\n minSize: 15,\n };\n}\n"],"names":["COLUMN_ID","GHOST_ELEMENT_ID","Cell","React","memo","MemoedCell","props","isSelected","onRowDrag","handleRowDrag","row","table","texts","useLocalization","tableMeta","options","meta","onDragStart","event","rows","enableRowSelection","getSelectedRowModel","data","map","original","rowDrag","setDragging","reduce","dragging","rowBeingDragged","id","dataTransfer","setData","JSON","stringify","showPlaceholder","text","ghost","document","createElement","className","innerText","body","appendChild","setDragImage","setDataTransfer","handleDragEnd","_document$getElementB","getElementById","remove","DisplayCell","draggable","onDragOver","preventDefault","onDragEnd","Icon","table3","columns","drag","tooltip","name","createRowDragColumn","header","ColumnHeader","cell","context","getIsSelected","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","size","minSize"],"mappings":"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"}
1
+ {"version":3,"file":"Drag.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Drag.tsx"],"sourcesContent":["import React from 'react';\nimport { CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Table3RowDragHandler } from '../../../types';\nimport { Icon } from '../../../../Icon/Icon';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Footer } from '../footer/Footer';\n\nexport const COLUMN_ID = '__drag';\nconst GHOST_ELEMENT_ID = 'taco_table_dragging';\n\ntype CellProps<TType = unknown> = CellContext<TType, unknown> & {\n isSelected: boolean;\n onRowDrag: Table3RowDragHandler<TType>;\n};\n\nconst Cell = React.memo(function MemoedCell<TType = unknown>(props: CellProps<TType>) {\n const { isSelected, onRowDrag: handleRowDrag, row, table } = props;\n const { texts } = useLocalization();\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n const onDragStart = (event: React.DragEvent): void => {\n let rows = [row];\n\n if (table.options.enableRowSelection) {\n rows = isSelected ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n }\n\n const data = rows.map(row => row.original);\n\n tableMeta.rowDrag.setDragging(\n rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})\n );\n\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.appendChild(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n handleRowDrag(data, showPlaceholder, setDataTransfer);\n };\n\n const handleDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n tableMeta.rowDrag.setDragging({});\n };\n\n return (\n <DisplayCell {...props}>\n <div draggable onDragStart={onDragStart} onDragOver={event => event.preventDefault()} onDragEnd={handleDragEnd}>\n <Icon\n aria-label={texts.table3.columns.drag.tooltip}\n name=\"drag\"\n className=\"text-grey-darkest invisible -mt-1 w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed='true']]/row:text-white\"\n />\n </div>\n </DisplayCell>\n );\n}) as <TType = unknown>(props: CellProps<TType>) => JSX.Element;\n\nexport function createRowDragColumn<TType = unknown>(onRowDrag: Table3RowDragHandler<TType>): DisplayColumnDef<TType, unknown> {\n return {\n id: COLUMN_ID,\n header: ColumnHeader,\n cell: (context: CellContext<TType, unknown>) => (\n <Cell {...context} isSelected={context.row.getIsSelected()} onRowDrag={onRowDrag} />\n ),\n footer: Footer,\n meta: {\n align: 'center',\n className: '!p-0 !pt-[var(--table3-row-padding)]',\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: 'items-center !p-0',\n },\n // options\n enableResizing: false,\n size: 20,\n minSize: 20,\n };\n}\n"],"names":["COLUMN_ID","GHOST_ELEMENT_ID","Cell","React","memo","MemoedCell","props","isSelected","onRowDrag","handleRowDrag","row","table","texts","useLocalization","tableMeta","options","meta","onDragStart","event","rows","enableRowSelection","getSelectedRowModel","data","map","original","rowDrag","setDragging","reduce","dragging","rowBeingDragged","id","dataTransfer","setData","JSON","stringify","showPlaceholder","text","ghost","document","createElement","className","innerText","body","appendChild","setDragImage","setDataTransfer","handleDragEnd","_document$getElementB","getElementById","remove","DisplayCell","draggable","onDragOver","preventDefault","onDragEnd","Icon","table3","columns","drag","tooltip","name","createRowDragColumn","header","ColumnHeader","cell","context","getIsSelected","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","size","minSize"],"mappings":"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"}
@@ -103,7 +103,7 @@ const Cell = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
103
103
  return newTableMeta.currentRow.currentRowIndex === oldTableMeta.currentRow.currentRowIndex && newProps.row.getIsSelected() !== oldProps.row.getIsSelected();
104
104
  });
105
105
  function createRowSelectionColumn(hasDrag, hasExpansion) {
106
- const size = hasDrag ? 22 : 40;
106
+ const size = hasDrag && hasExpansion ? 22 : 40;
107
107
  return {
108
108
  id: COLUMN_ID,
109
109
  header: Header,
@@ -113,7 +113,7 @@ function createRowSelectionColumn(hasDrag, hasExpansion) {
113
113
  align: 'center',
114
114
  className: cn('!pt-[var(--table3-row-padding)] !justify-end !p-0', {
115
115
  '!pr-0.5': hasExpansion,
116
- '!pr-2.5': !hasExpansion
116
+ '!pr-3': !hasExpansion
117
117
  }),
118
118
  enableOrdering: false,
119
119
  enableSearch: false,
@@ -121,7 +121,7 @@ function createRowSelectionColumn(hasDrag, hasExpansion) {
121
121
  header: '',
122
122
  headerClassName: cn('items-center !justify-end !p-0', {
123
123
  '!pr-0.5': hasExpansion,
124
- '!pr-2.5': !hasExpansion
124
+ '!pr-3': !hasExpansion
125
125
  })
126
126
  },
127
127
  // options
@@ -1 +1 @@
1
- {"version":3,"file":"Selection.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport { HeaderContext, CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport cn from 'classnames';\nimport { Checkbox } from '../../../../Checkbox/Checkbox';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Tooltip } from '../../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { RowContext } from '../../rows/RowContext';\nimport { Footer } from '../footer/Footer';\nimport { getRadioClassnames } from '../../../../RadioGroup/util';\nimport { Shortcut } from '../../../../Shortcut/Shortcut';\n\nexport const COLUMN_ID = '__select';\n\nfunction Header<TType = unknown>(context: HeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n\n if (context.table.options.enableMultiRowSelection) {\n const isAllRowsSelected = context.table.getIsAllRowsSelected();\n const isSomeRowsSelected = context.table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table3.columns.select.deselectAll : texts.table3.columns.select.selectAll;\n\n return (\n <ColumnHeader {...context}>\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !mt-0\"\n key={String(`${isAllRowsSelected}_${isSomeRowsSelected}`)}\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected}\n onChange={context.table.toggleAllRowsSelected}\n tabIndex={-1}\n />\n </Tooltip>\n </ColumnHeader>\n );\n } else {\n return <ColumnHeader {...context}></ColumnHeader>;\n }\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nconst Cell = React.memo(\n function MemoedCell<TType = unknown>(context: CellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { rowIndex } = React.useContext(RowContext);\n const tableMeta = context.table.options.meta as TableMeta<TType>;\n\n const isCurrentRow = tableMeta.currentRow.currentRowIndex === rowIndex;\n const isSelected = context.row.getIsSelected();\n const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;\n\n if (context.table.options.enableMultiRowSelection) {\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(\n tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0,\n rowIndex\n );\n\n context.table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n context.row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <Tooltip\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={isCurrentRow ? 0 : -1}\n />\n </Tooltip>\n </DisplayCell>\n );\n } else {\n const className = cn('!mt-0', getRadioClassnames());\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n context.row.toggleSelected();\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <button\n className={className}\n aria-checked={isSelected}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {isSelected ? <span className=\"h-2 w-2 rounded-full bg-white\" /> : null}\n </button>\n </DisplayCell>\n );\n }\n },\n function arePropsEqual(oldProps: CellContext<unknown, unknown>, newProps: CellContext<unknown, unknown>) {\n const oldTableMeta = oldProps.table.options.meta as TableMeta<unknown>;\n const newTableMeta = newProps.table.options.meta as TableMeta<unknown>;\n\n // we memo because we don't want the row re-rendering and removing focus from the checkbox\n // we can't default to the standard comparison because we need currentRow off the table meta\n // and we don't really care about re-rendering in any other scenario\n return (\n newTableMeta.currentRow.currentRowIndex === oldTableMeta.currentRow.currentRowIndex &&\n newProps.row.getIsSelected() !== oldProps.row.getIsSelected()\n );\n }\n) as <TType = unknown>(context: CellContext<TType, unknown>) => JSX.Element;\n\nexport function createRowSelectionColumn<TType = unknown>(\n hasDrag: boolean,\n hasExpansion: boolean\n): DisplayColumnDef<TType, unknown> {\n const size = hasDrag ? 22 : 40;\n return {\n id: COLUMN_ID,\n header: Header,\n cell: Cell,\n footer: Footer,\n meta: {\n align: 'center',\n className: cn('!pt-[var(--table3-row-padding)] !justify-end !p-0', {\n '!pr-0.5': hasExpansion,\n '!pr-2.5': !hasExpansion,\n }),\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: cn('items-center !justify-end !p-0', { '!pr-0.5': hasExpansion, '!pr-2.5': !hasExpansion }),\n },\n // options\n enableResizing: false,\n size,\n minSize: size,\n };\n}\n"],"names":["COLUMN_ID","Header","context","texts","useLocalization","table","options","enableMultiRowSelection","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","table3","columns","select","deselectAll","selectAll","React","ColumnHeader","Tooltip","Checkbox","className","key","String","checked","indeterminate","onChange","toggleAllRowsSelected","tabIndex","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","memo","MemoedCell","rowIndex","useContext","RowContext","tableMeta","meta","isCurrentRow","currentRow","currentRowIndex","isSelected","row","getIsSelected","deselect","handleClick","event","stopPropagation","shiftKey","_tableMeta$rowSelecti","rowSelection","lastSelectedRowIndex","current","getRowModel","rows","slice","forEach","toggleSelected","DisplayCell","Shortcut","keys","onClick","cn","getRadioClassnames","role","type","arePropsEqual","oldProps","newProps","oldTableMeta","newTableMeta","createRowSelectionColumn","hasDrag","hasExpansion","size","id","header","cell","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","minSize"],"mappings":"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"}
1
+ {"version":3,"file":"Selection.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport { HeaderContext, CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport cn from 'classnames';\nimport { Checkbox } from '../../../../Checkbox/Checkbox';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Tooltip } from '../../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { RowContext } from '../../rows/RowContext';\nimport { Footer } from '../footer/Footer';\nimport { getRadioClassnames } from '../../../../RadioGroup/util';\nimport { Shortcut } from '../../../../Shortcut/Shortcut';\n\nexport const COLUMN_ID = '__select';\n\nfunction Header<TType = unknown>(context: HeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n\n if (context.table.options.enableMultiRowSelection) {\n const isAllRowsSelected = context.table.getIsAllRowsSelected();\n const isSomeRowsSelected = context.table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table3.columns.select.deselectAll : texts.table3.columns.select.selectAll;\n\n return (\n <ColumnHeader {...context}>\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !mt-0\"\n key={String(`${isAllRowsSelected}_${isSomeRowsSelected}`)}\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected}\n onChange={context.table.toggleAllRowsSelected}\n tabIndex={-1}\n />\n </Tooltip>\n </ColumnHeader>\n );\n } else {\n return <ColumnHeader {...context}></ColumnHeader>;\n }\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nconst Cell = React.memo(\n function MemoedCell<TType = unknown>(context: CellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { rowIndex } = React.useContext(RowContext);\n const tableMeta = context.table.options.meta as TableMeta<TType>;\n\n const isCurrentRow = tableMeta.currentRow.currentRowIndex === rowIndex;\n const isSelected = context.row.getIsSelected();\n const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;\n\n if (context.table.options.enableMultiRowSelection) {\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(\n tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0,\n rowIndex\n );\n\n context.table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n context.row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <Tooltip\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={isCurrentRow ? 0 : -1}\n />\n </Tooltip>\n </DisplayCell>\n );\n } else {\n const className = cn('!mt-0', getRadioClassnames());\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n context.row.toggleSelected();\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <button\n className={className}\n aria-checked={isSelected}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {isSelected ? <span className=\"h-2 w-2 rounded-full bg-white\" /> : null}\n </button>\n </DisplayCell>\n );\n }\n },\n function arePropsEqual(oldProps: CellContext<unknown, unknown>, newProps: CellContext<unknown, unknown>) {\n const oldTableMeta = oldProps.table.options.meta as TableMeta<unknown>;\n const newTableMeta = newProps.table.options.meta as TableMeta<unknown>;\n\n // we memo because we don't want the row re-rendering and removing focus from the checkbox\n // we can't default to the standard comparison because we need currentRow off the table meta\n // and we don't really care about re-rendering in any other scenario\n return (\n newTableMeta.currentRow.currentRowIndex === oldTableMeta.currentRow.currentRowIndex &&\n newProps.row.getIsSelected() !== oldProps.row.getIsSelected()\n );\n }\n) as <TType = unknown>(context: CellContext<TType, unknown>) => JSX.Element;\n\nexport function createRowSelectionColumn<TType = unknown>(\n hasDrag: boolean,\n hasExpansion: boolean\n): DisplayColumnDef<TType, unknown> {\n const size = hasDrag && hasExpansion ? 22 : 40;\n return {\n id: COLUMN_ID,\n header: Header,\n cell: Cell,\n footer: Footer,\n meta: {\n align: 'center',\n className: cn('!pt-[var(--table3-row-padding)] !justify-end !p-0', {\n '!pr-0.5': hasExpansion,\n '!pr-3': !hasExpansion,\n }),\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: cn('items-center !justify-end !p-0', { '!pr-0.5': hasExpansion, '!pr-3': !hasExpansion }),\n },\n // options\n enableResizing: false,\n size,\n minSize: size,\n };\n}\n"],"names":["COLUMN_ID","Header","context","texts","useLocalization","table","options","enableMultiRowSelection","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","table3","columns","select","deselectAll","selectAll","React","ColumnHeader","Tooltip","Checkbox","className","key","String","checked","indeterminate","onChange","toggleAllRowsSelected","tabIndex","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","memo","MemoedCell","rowIndex","useContext","RowContext","tableMeta","meta","isCurrentRow","currentRow","currentRowIndex","isSelected","row","getIsSelected","deselect","handleClick","event","stopPropagation","shiftKey","_tableMeta$rowSelecti","rowSelection","lastSelectedRowIndex","current","getRowModel","rows","slice","forEach","toggleSelected","DisplayCell","Shortcut","keys","onClick","cn","getRadioClassnames","role","type","arePropsEqual","oldProps","newProps","oldTableMeta","newTableMeta","createRowSelectionColumn","hasDrag","hasExpansion","size","id","header","cell","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","minSize"],"mappings":"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"}
@@ -4,7 +4,6 @@ import { IconButton } from '../../../../IconButton/IconButton.js';
4
4
  import { useLocalization } from '../../../../Provider/Localization.js';
5
5
  import { useToast } from '../../../../Toast/Toaster.js';
6
6
  import { _catch } from '../../../../../../../../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js';
7
- import { useUniqueTableId } from '../../../hooks/features/useSettings.js';
8
7
  import { PrintIFrame } from './PrintIFrame.js';
9
8
  import { WarningDialog } from './WarningDialog.js';
10
9
 
@@ -28,7 +27,6 @@ function PrintButton(props) {
28
27
  printWarningDialogVisibility
29
28
  } = tableMeta.printing;
30
29
  const printTableId = `${tableProps.id}_print`;
31
- const printTableLocalStorageKey = useUniqueTableId(printTableId);
32
30
  const defaultSettings = React__default.useMemo(() => ({
33
31
  columnFreezingIndex: tableMeta.columnFreezing.frozenColumnIndex,
34
32
  columnOrder: state.columnOrder,
@@ -61,9 +59,6 @@ function PrintButton(props) {
61
59
  var _loadingToastRef$curr;
62
60
  setIsPrinting(false);
63
61
  (_loadingToastRef$curr = loadingToastRef.current) === null || _loadingToastRef$curr === void 0 ? void 0 : _loadingToastRef$curr.close();
64
- // Remove print table settings after printing. Doing this will not only remove unwanted localstorage space, but
65
- // will also make sure that the table that is getting printed will always have the fresh table settings
66
- localStorage.removeItem(printTableLocalStorageKey);
67
62
  };
68
63
  const handleBeforePrint = () => {
69
64
  var _loadingToastRef$curr2;
@@ -1 +1 @@
1
- {"version":3,"file":"PrintButton.js","sources":["../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/PrintButton.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as RTable, TableMeta } from '@tanstack/react-table';\n\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { ToastReference, useToast } from '../../../../Toast/Toaster';\nimport { PrintIFrame } from './PrintIFrame';\nimport { Table3Props } from '../../../types';\nimport { useGlobalKeyDown } from '../../../../../hooks/useGlobalKeyDown';\nimport { WarningDialog } from './WarningDialog';\nimport { useUniqueTableId } from '../../../hooks/features/useSettings';\n\nconst SAFE_PRINT_CELL_COUNT = 10000;\n\nexport type PrintButtonProps<TType = unknown> = React.HTMLAttributes<HTMLButtonElement> & {\n table: RTable<TType>;\n tableProps: Table3Props<TType>;\n};\n\nexport function PrintButton<TType = unknown>(props: PrintButtonProps<TType>) {\n const { table, tableProps } = props;\n const { texts } = useLocalization();\n const toast = useToast();\n\n const [isPrinting, setIsPrinting] = React.useState(false);\n const [showWarningDialog, setShowWarningDialog] = React.useState(false);\n const loadingToastRef = React.useRef<ToastReference | null>(null);\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n const state = table.getState();\n const { printWarningDialogVisibility } = tableMeta.printing;\n\n const printTableId = `${tableProps.id}_print`;\n const printTableLocalStorageKey = useUniqueTableId(printTableId);\n\n const defaultSettings = React.useMemo(\n () => ({\n columnFreezingIndex: tableMeta.columnFreezing.frozenColumnIndex,\n columnOrder: state.columnOrder,\n columnSizing: state.columnSizing,\n columnVisibility: state.columnVisibility,\n excludeUnmatchedRecordsInSearch: tableMeta.search.excludeUnmatchedResults,\n fontSize: tableMeta.fontSize.size,\n rowHeight: tableMeta.rowHeight.height,\n sorting: state.sorting,\n // we don't save these, but we must pass them to print\n columnFilters: state.columnFilters,\n globalFilter: state.globalFilter,\n }),\n [\n tableMeta.columnFreezing.frozenColumnIndex,\n state.columnOrder,\n state.columnSizing,\n state.columnVisibility,\n tableMeta.search.excludeUnmatchedResults,\n tableMeta.fontSize.size,\n tableMeta.rowHeight.height,\n state.sorting,\n state.columnFilters,\n state.globalFilter,\n ]\n );\n\n const iframeTableProps = { ...tableProps, defaultSettings, id: printTableId };\n\n useGlobalKeyDown({ key: 'p', meta: true, shift: false }, (event: KeyboardEvent) => {\n event.preventDefault();\n // Starts custom printing\n buttonRef.current?.click();\n });\n\n const handleAfterPrint = () => {\n setIsPrinting(false);\n loadingToastRef.current?.close();\n\n // Remove print table settings after printing. Doing this will not only remove unwanted localstorage space, but\n // will also make sure that the table that is getting printed will always have the fresh table settings\n localStorage.removeItem(printTableLocalStorageKey);\n };\n\n const handleBeforePrint = () => {\n loadingToastRef.current?.close();\n };\n\n const handlePrint = async () => {\n loadingToastRef.current = toast.loading(texts.table3.print.loading as any);\n\n const getCellCount = (data: TType[]) => (data.length ? data.length * Object.keys(data[0]).length : 0);\n let hasNonSafeCellCount = false;\n\n // if loadAll is not defined, just print with what we've got\n // don't compare length to data.length because the api might be choosing not to return all for performance\n if (!tableMeta.printing.loadAll) {\n const { data } = tableProps;\n const cellCount = getCellCount(data);\n\n hasNonSafeCellCount = cellCount > SAFE_PRINT_CELL_COUNT;\n } else {\n try {\n await tableMeta.printing.loadAll(\n table.getState().sorting,\n table.getState().columnFilters,\n tableMeta.search.query\n );\n\n // After the loadAll call above, the data changes. Hence, it becomes essential to acquire the data after\n // this call rather than before it.\n const { data } = tableProps;\n const cellCount = getCellCount(data);\n\n hasNonSafeCellCount = cellCount > SAFE_PRINT_CELL_COUNT;\n } catch (error) {\n const errorMessage = `${texts.table3.print.error}: ${error}`;\n\n console.error(errorMessage);\n loadingToastRef.current?.error(errorMessage);\n\n // in case of error, we return early\n return;\n }\n }\n\n if (hasNonSafeCellCount && printWarningDialogVisibility) {\n setShowWarningDialog(true);\n } else {\n // only set printing (mount the iframe) when the data has loaded, it prevents repaint performance slow downs\n setIsPrinting(true);\n }\n };\n\n const handleWarningDialogAccept = () => {\n setIsPrinting(true);\n };\n\n const handleWarningDialogClose = () => {\n loadingToastRef.current?.close();\n setShowWarningDialog(false);\n };\n\n return (\n <>\n <IconButton\n disabled={isPrinting}\n icon=\"print\"\n onClick={handlePrint}\n aria-label={texts.table3.print.tooltip}\n tooltip={texts.table3.print.tooltip}\n ref={buttonRef}\n />\n {isPrinting && iframeTableProps.data !== null && (\n <PrintIFrame\n onAfterPrint={handleAfterPrint}\n onBeforePrint={handleBeforePrint}\n tableProps={iframeTableProps as Table3Props<TType>}\n />\n )}\n <WarningDialog\n open={showWarningDialog}\n onAccept={handleWarningDialogAccept}\n onClose={handleWarningDialogClose}\n onVisibilityChange={tableMeta.printing.setPrintWarningDialogVisibility}\n />\n </>\n );\n}\n"],"names":["SAFE_PRINT_CELL_COUNT","PrintButton","props","table","tableProps","texts","useLocalization","toast","useToast","isPrinting","setIsPrinting","React","useState","showWarningDialog","setShowWarningDialog","loadingToastRef","useRef","buttonRef","tableMeta","options","meta","state","getState","printWarningDialogVisibility","printing","printTableId","id","printTableLocalStorageKey","useUniqueTableId","defaultSettings","useMemo","columnFreezingIndex","columnFreezing","frozenColumnIndex","columnOrder","columnSizing","columnVisibility","excludeUnmatchedRecordsInSearch","search","excludeUnmatchedResults","fontSize","size","rowHeight","height","sorting","columnFilters","globalFilter","iframeTableProps","useGlobalKeyDown","key","shift","event","preventDefault","_buttonRef$current","current","click","handleAfterPrint","_loadingToastRef$curr","close","localStorage","removeItem","handleBeforePrint","_loadingToastRef$curr2","handlePrint","hasNonSafeCellCount","loading","table3","print","getCellCount","data","length","Object","keys","_temp2","loadAll","cellCount","_temp","_catch","Promise","resolve","query","then","error","_loadingToastRef$curr3","errorMessage","console","_exit","_temp3","e","reject","handleWarningDialogAccept","handleWarningDialogClose","_loadingToastRef$curr4","IconButton","disabled","icon","onClick","tooltip","ref","PrintIFrame","onAfterPrint","onBeforePrint","WarningDialog","open","onAccept","onClose","onVisibilityChange","setPrintWarningDialogVisibility"],"mappings":"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"}
1
+ {"version":3,"file":"PrintButton.js","sources":["../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/PrintButton.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as RTable, TableMeta } from '@tanstack/react-table';\n\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { ToastReference, useToast } from '../../../../Toast/Toaster';\nimport { PrintIFrame } from './PrintIFrame';\nimport { Table3Props } from '../../../types';\nimport { useGlobalKeyDown } from '../../../../../hooks/useGlobalKeyDown';\nimport { WarningDialog } from './WarningDialog';\n\nconst SAFE_PRINT_CELL_COUNT = 10000;\n\nexport type PrintButtonProps<TType = unknown> = React.HTMLAttributes<HTMLButtonElement> & {\n table: RTable<TType>;\n tableProps: Table3Props<TType>;\n};\n\nexport function PrintButton<TType = unknown>(props: PrintButtonProps<TType>) {\n const { table, tableProps } = props;\n const { texts } = useLocalization();\n const toast = useToast();\n\n const [isPrinting, setIsPrinting] = React.useState(false);\n const [showWarningDialog, setShowWarningDialog] = React.useState(false);\n const loadingToastRef = React.useRef<ToastReference | null>(null);\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n const state = table.getState();\n const { printWarningDialogVisibility } = tableMeta.printing;\n\n const printTableId = `${tableProps.id}_print`;\n\n const defaultSettings = React.useMemo(\n () => ({\n columnFreezingIndex: tableMeta.columnFreezing.frozenColumnIndex,\n columnOrder: state.columnOrder,\n columnSizing: state.columnSizing,\n columnVisibility: state.columnVisibility,\n excludeUnmatchedRecordsInSearch: tableMeta.search.excludeUnmatchedResults,\n fontSize: tableMeta.fontSize.size,\n rowHeight: tableMeta.rowHeight.height,\n sorting: state.sorting,\n // we don't save these, but we must pass them to print\n columnFilters: state.columnFilters,\n globalFilter: state.globalFilter,\n }),\n [\n tableMeta.columnFreezing.frozenColumnIndex,\n state.columnOrder,\n state.columnSizing,\n state.columnVisibility,\n tableMeta.search.excludeUnmatchedResults,\n tableMeta.fontSize.size,\n tableMeta.rowHeight.height,\n state.sorting,\n state.columnFilters,\n state.globalFilter,\n ]\n );\n\n const iframeTableProps = { ...tableProps, defaultSettings, id: printTableId };\n\n useGlobalKeyDown({ key: 'p', meta: true, shift: false }, (event: KeyboardEvent) => {\n event.preventDefault();\n // Starts custom printing\n buttonRef.current?.click();\n });\n\n const handleAfterPrint = () => {\n setIsPrinting(false);\n loadingToastRef.current?.close();\n };\n\n const handleBeforePrint = () => {\n loadingToastRef.current?.close();\n };\n\n const handlePrint = async () => {\n loadingToastRef.current = toast.loading(texts.table3.print.loading as any);\n\n const getCellCount = (data: TType[]) => (data.length ? data.length * Object.keys(data[0]).length : 0);\n let hasNonSafeCellCount = false;\n\n // if loadAll is not defined, just print with what we've got\n // don't compare length to data.length because the api might be choosing not to return all for performance\n if (!tableMeta.printing.loadAll) {\n const { data } = tableProps;\n const cellCount = getCellCount(data);\n\n hasNonSafeCellCount = cellCount > SAFE_PRINT_CELL_COUNT;\n } else {\n try {\n await tableMeta.printing.loadAll(\n table.getState().sorting,\n table.getState().columnFilters,\n tableMeta.search.query\n );\n\n // After the loadAll call above, the data changes. Hence, it becomes essential to acquire the data after\n // this call rather than before it.\n const { data } = tableProps;\n const cellCount = getCellCount(data);\n\n hasNonSafeCellCount = cellCount > SAFE_PRINT_CELL_COUNT;\n } catch (error) {\n const errorMessage = `${texts.table3.print.error}: ${error}`;\n\n console.error(errorMessage);\n loadingToastRef.current?.error(errorMessage);\n\n // in case of error, we return early\n return;\n }\n }\n\n if (hasNonSafeCellCount && printWarningDialogVisibility) {\n setShowWarningDialog(true);\n } else {\n // only set printing (mount the iframe) when the data has loaded, it prevents repaint performance slow downs\n setIsPrinting(true);\n }\n };\n\n const handleWarningDialogAccept = () => {\n setIsPrinting(true);\n };\n\n const handleWarningDialogClose = () => {\n loadingToastRef.current?.close();\n setShowWarningDialog(false);\n };\n\n return (\n <>\n <IconButton\n disabled={isPrinting}\n icon=\"print\"\n onClick={handlePrint}\n aria-label={texts.table3.print.tooltip}\n tooltip={texts.table3.print.tooltip}\n ref={buttonRef}\n />\n {isPrinting && iframeTableProps.data !== null && (\n <PrintIFrame\n onAfterPrint={handleAfterPrint}\n onBeforePrint={handleBeforePrint}\n tableProps={iframeTableProps as Table3Props<TType>}\n />\n )}\n <WarningDialog\n open={showWarningDialog}\n onAccept={handleWarningDialogAccept}\n onClose={handleWarningDialogClose}\n onVisibilityChange={tableMeta.printing.setPrintWarningDialogVisibility}\n />\n </>\n );\n}\n"],"names":["SAFE_PRINT_CELL_COUNT","PrintButton","props","table","tableProps","texts","useLocalization","toast","useToast","isPrinting","setIsPrinting","React","useState","showWarningDialog","setShowWarningDialog","loadingToastRef","useRef","buttonRef","tableMeta","options","meta","state","getState","printWarningDialogVisibility","printing","printTableId","id","defaultSettings","useMemo","columnFreezingIndex","columnFreezing","frozenColumnIndex","columnOrder","columnSizing","columnVisibility","excludeUnmatchedRecordsInSearch","search","excludeUnmatchedResults","fontSize","size","rowHeight","height","sorting","columnFilters","globalFilter","iframeTableProps","useGlobalKeyDown","key","shift","event","preventDefault","_buttonRef$current","current","click","handleAfterPrint","_loadingToastRef$curr","close","handleBeforePrint","_loadingToastRef$curr2","handlePrint","hasNonSafeCellCount","loading","table3","print","getCellCount","data","length","Object","keys","_temp2","loadAll","cellCount","_temp","_catch","Promise","resolve","query","then","error","_loadingToastRef$curr3","errorMessage","console","_exit","_temp3","e","reject","handleWarningDialogAccept","handleWarningDialogClose","_loadingToastRef$curr4","IconButton","disabled","icon","onClick","tooltip","ref","PrintIFrame","onAfterPrint","onBeforePrint","WarningDialog","open","onAccept","onClose","onVisibilityChange","setPrintWarningDialogVisibility"],"mappings":"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"}
@@ -200,7 +200,9 @@ function PrintIFrame({
200
200
  enableRowDrag: false,
201
201
  enableRowDrop: false,
202
202
  enableRowSelectionSingle: false,
203
- preset: undefined
203
+ preset: undefined,
204
+ // The presence of the onChangeSettings prop ensures that settings won't be stored in local storage.
205
+ onChangeSettings: () => undefined
204
206
  };
205
207
  // -top-60 -left-60 styles make sure that iframe is added outside of the viewport
206
208
  return /*#__PURE__*/React__default.createElement("iframe", {
@@ -1 +1 @@
1
- {"version":3,"file":"PrintIFrame.js","sources":["../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/PrintIFrame.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Table3 } from '../../../../..';\nimport { Table3Props } from '../../../types';\nimport { useParentStylesheets } from './hooks/useParentStylesheets';\n\nexport type PrintIFrameProps<TType = unknown> = {\n onAfterPrint?: () => void;\n onBeforePrint?: () => void;\n tableProps: Table3Props<TType>;\n};\n\nexport function PrintIFrame<TType = unknown>({ onAfterPrint, onBeforePrint, tableProps }: PrintIFrameProps<TType>) {\n const [contentRef, setContentRef] = React.useState<HTMLIFrameElement | null>(null);\n const [mountNode, setMountNode] = React.useState<HTMLElement | null>(null);\n\n const isFirefoxBrowser = React.useMemo(() => navigator.userAgent.toLowerCase().includes('firefox'), []);\n\n const iframeWindow = contentRef?.contentWindow;\n\n const stylesReady = useParentStylesheets(iframeWindow);\n\n // Calls print method when table has loaded in the iframe.\n React.useEffect(() => {\n let intervalId: NodeJS.Timer;\n let timeoutId: NodeJS.Timer;\n\n // Invoke the print functionality on the window once the table has finished rendering and all print styles are\n // added.\n if (mountNode && stylesReady) {\n intervalId = setInterval(async () => {\n const tableWrapper = mountNode;\n const table = tableWrapper.querySelector('[role=\"table\"]') as HTMLElement;\n const hasTableRendered = !!table;\n\n if (hasTableRendered && intervalId) {\n clearInterval(intervalId);\n\n // Calling the onBeforePrint method here as a fallback because certain browsers, like Safari,\n // do not call the beforeprint event.\n // Bug - Even though onBeforePrint is called before printing, the execution doesn't finish before\n // the print dialog shows up, which results into having a visible loading toast.\n onBeforePrint?.();\n\n // By adding height to the tableWrapper, we make sure the content below absolutely positioned table\n // doesn't hide\n if (isFirefoxBrowser) {\n const tableHeight = `${table.offsetHeight}px`;\n tableWrapper.style.height = tableHeight;\n }\n\n contentRef?.contentWindow?.print();\n\n // Calling the onAfterPrint method here as a fallback to do the cleanup, as certain browsers,\n // like Safari, do not trigger the beforeprint or afterprint events when a confirmation dialog\n // asking if the user wants to print the document, is cancelled.\n\n // Added a setTimeout to prevent calling onAfterPrint immediately after the print function\n // to ensure that the print dialog doesn't close abruptly. Although this behavior is uncommon,\n // there are cases where the print function may not run synchronously, causing onAfterPrint to be\n // invoked right after it.\n timeoutId = setTimeout(() => {\n onAfterPrint?.();\n }, 0);\n }\n }, 1000);\n }\n\n return () => {\n clearInterval(intervalId);\n clearTimeout(timeoutId);\n };\n }, [mountNode, stylesReady]);\n\n React.useEffect(() => {\n if (!iframeWindow || !stylesReady) {\n return;\n }\n\n const iframeDocument = iframeWindow.document;\n // Only the content inside the main element will get printed along with the table.\n const parentDocumentContent =\n iframeWindow.parent.document.querySelector('main')?.innerHTML || iframeWindow.parent.document.body?.innerHTML || '';\n\n iframeDocument.body.innerHTML = parentDocumentContent;\n\n const tableElement = iframeDocument.querySelector('[role=\"table\"]');\n const tableColumnFreezingStyles = iframeDocument.querySelector('[data-taco=\"table3-column-freezing-styles\"]');\n const tableWrapper = iframeDocument.createElement('div');\n\n tableWrapper.setAttribute('data-role', 'table-wrapper');\n // Adding h-fit class makes sure that table is rendered with the whole content.\n tableWrapper.classList.add('h-fit');\n tableWrapper.classList.add('[&>[role=\"table\"]]:!h-fit');\n\n if (isFirefoxBrowser) {\n // Fix for firefox bug which adds page-long whitespace between page's top content and table\n tableWrapper.classList.add('[&>[role=\"table\"]]:!absolute');\n }\n\n // Safari print preview assigns no width to the table when w-screen class is used.\n // By assigning table a big static width and hiding the horizontal scrollbar, the table on chrome\n // and safari will always take full page width.\n tableWrapper.classList.add('w-[10000px]');\n\n if (tableElement) {\n tableElement.parentNode?.insertBefore(tableWrapper, tableElement);\n tableElement.remove();\n } else {\n iframeDocument.body.append(tableWrapper);\n }\n\n // Remove the already existing column freezing styles.\n if (tableColumnFreezingStyles) {\n tableColumnFreezingStyles.remove();\n }\n\n let currentNode = tableWrapper.parentNode as HTMLElement | null;\n\n while (currentNode !== null && currentNode !== iframeDocument.body) {\n // Add the 'h-fit' class to the 'table-wrapper' element's parent chain.\n // This ensures that the table is not cropped and fits within its container.\n currentNode?.classList.add('!h-fit');\n currentNode = currentNode.parentNode as HTMLElement | null;\n }\n\n setMountNode(tableWrapper);\n }, [iframeWindow, stylesReady]);\n\n const printTableProps: Table3Props<TType> = {\n ...tableProps,\n actionsForRow: undefined,\n // Not the best way to remove the active/current row styles, but a temporary solution for now\n defaultCurrentRowIndex: -1,\n defaultSettings: {\n ...tableProps?.defaultSettings,\n rowHeight: 'short',\n },\n enableColumnFreezing: false,\n enableRowHeight: true,\n enableRowSelection: false,\n enableEditing: false,\n enablePrinting: false,\n enableRowDrag: false,\n enableRowDrop: false,\n enableRowSelectionSingle: false,\n preset: undefined,\n };\n\n // -top-60 -left-60 styles make sure that iframe is added outside of the viewport\n return (\n <iframe\n className=\"fixed -left-60 -top-60 !h-0 !w-0\"\n ref={setContentRef}\n // Temporary fix to support printing in firefox: Find another solution while upgrading React\n src=\"javascript:void(0);\">\n {mountNode && stylesReady ? ReactDOM.createPortal(<Table3 {...printTableProps} />, mountNode) : null}\n </iframe>\n );\n}\n"],"names":["PrintIFrame","onAfterPrint","onBeforePrint","tableProps","contentRef","setContentRef","React","useState","mountNode","setMountNode","isFirefoxBrowser","useMemo","navigator","userAgent","toLowerCase","includes","iframeWindow","contentWindow","stylesReady","useParentStylesheets","useEffect","intervalId","timeoutId","setInterval","tableWrapper","table","querySelector","hasTableRendered","_contentRef$contentWi","clearInterval","tableHeight","offsetHeight","style","height","print","setTimeout","Promise","resolve","e","reject","clearTimeout","iframeDocument","document","parentDocumentContent","_iframeWindow$parent$","parent","innerHTML","_iframeWindow$parent$2","body","tableElement","tableColumnFreezingStyles","createElement","setAttribute","classList","add","_tableElement$parentN","parentNode","insertBefore","remove","append","currentNode","_currentNode","printTableProps","actionsForRow","undefined","defaultCurrentRowIndex","defaultSettings","rowHeight","enableColumnFreezing","enableRowHeight","enableRowSelection","enableEditing","enablePrinting","enableRowDrag","enableRowDrop","enableRowSelectionSingle","preset","className","ref","src","ReactDOM","createPortal","Table3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAagBA,WAAWA,CAAkB;EAAEC,YAAY;EAAEC,aAAa;EAAEC;CAAqC;EAC7G,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAA2B,IAAI,CAAC;EAClF,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGH,cAAK,CAACC,QAAQ,CAAqB,IAAI,CAAC;EAE1E,MAAMG,gBAAgB,GAAGJ,cAAK,CAACK,OAAO,CAAC,MAAMC,SAAS,CAACC,SAAS,CAACC,WAAW,EAAE,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;EAEvG,MAAMC,YAAY,GAAGZ,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEa,aAAa;EAE9C,MAAMC,WAAW,GAAGC,oBAAoB,CAACH,YAAY,CAAC;;EAGtDV,cAAK,CAACc,SAAS,CAAC;IACZ,IAAIC,UAAwB;IAC5B,IAAIC,SAAuB;;;IAI3B,IAAId,SAAS,IAAIU,WAAW,EAAE;MAC1BG,UAAU,GAAGE,WAAW;QAAA;UACpB,MAAMC,YAAY,GAAGhB,SAAS;UAC9B,MAAMiB,KAAK,GAAGD,YAAY,CAACE,aAAa,CAAC,gBAAgB,CAAgB;UACzE,MAAMC,gBAAgB,GAAG,CAAC,CAACF,KAAK;UAEhC,IAAIE,gBAAgB,IAAIN,UAAU,EAAE;YAAA,IAAAO,qBAAA;YAChCC,aAAa,CAACR,UAAU,CAAC;;;;;YAMzBnB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,EAAI;;;YAIjB,IAAIQ,gBAAgB,EAAE;cAClB,MAAMoB,WAAW,MAAML,KAAK,CAACM,gBAAgB;cAC7CP,YAAY,CAACQ,KAAK,CAACC,MAAM,GAAGH,WAAW;;YAG3C1B,UAAU,aAAVA,UAAU,wBAAAwB,qBAAA,GAAVxB,UAAU,CAAEa,aAAa,cAAAW,qBAAA,uBAAzBA,qBAAA,CAA2BM,KAAK,EAAE;;;;;;;;YAUlCZ,SAAS,GAAGa,UAAU,CAAC;cACnBlC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,EAAI;aACnB,EAAE,CAAC,CAAC;;UACR,OAAAmC,OAAA,CAAAC,OAAA;SACJ,QAAAC,CAAA;UAAA,OAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA;;SAAE,IAAI,CAAC;;IAGZ,OAAO;MACHT,aAAa,CAACR,UAAU,CAAC;MACzBmB,YAAY,CAAClB,SAAS,CAAC;KAC1B;GACJ,EAAE,CAACd,SAAS,EAAEU,WAAW,CAAC,CAAC;EAE5BZ,cAAK,CAACc,SAAS,CAAC;;IACZ,IAAI,CAACJ,YAAY,IAAI,CAACE,WAAW,EAAE;MAC/B;;IAGJ,MAAMuB,cAAc,GAAGzB,YAAY,CAAC0B,QAAQ;;IAE5C,MAAMC,qBAAqB,GACvB,EAAAC,qBAAA,GAAA5B,YAAY,CAAC6B,MAAM,CAACH,QAAQ,CAAChB,aAAa,CAAC,MAAM,CAAC,cAAAkB,qBAAA,uBAAlDA,qBAAA,CAAoDE,SAAS,OAAAC,sBAAA,GAAI/B,YAAY,CAAC6B,MAAM,CAACH,QAAQ,CAACM,IAAI,cAAAD,sBAAA,uBAAjCA,sBAAA,CAAmCD,SAAS,KAAI,EAAE;IAEvHL,cAAc,CAACO,IAAI,CAACF,SAAS,GAAGH,qBAAqB;IAErD,MAAMM,YAAY,GAAGR,cAAc,CAACf,aAAa,CAAC,gBAAgB,CAAC;IACnE,MAAMwB,yBAAyB,GAAGT,cAAc,CAACf,aAAa,CAAC,6CAA6C,CAAC;IAC7G,MAAMF,YAAY,GAAGiB,cAAc,CAACU,aAAa,CAAC,KAAK,CAAC;IAExD3B,YAAY,CAAC4B,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC;;IAEvD5B,YAAY,CAAC6B,SAAS,CAACC,GAAG,CAAC,OAAO,CAAC;IACnC9B,YAAY,CAAC6B,SAAS,CAACC,GAAG,CAAC,2BAA2B,CAAC;IAEvD,IAAI5C,gBAAgB,EAAE;;MAElBc,YAAY,CAAC6B,SAAS,CAACC,GAAG,CAAC,8BAA8B,CAAC;;;;;IAM9D9B,YAAY,CAAC6B,SAAS,CAACC,GAAG,CAAC,aAAa,CAAC;IAEzC,IAAIL,YAAY,EAAE;MAAA,IAAAM,qBAAA;MACd,CAAAA,qBAAA,GAAAN,YAAY,CAACO,UAAU,cAAAD,qBAAA,uBAAvBA,qBAAA,CAAyBE,YAAY,CAACjC,YAAY,EAAEyB,YAAY,CAAC;MACjEA,YAAY,CAACS,MAAM,EAAE;KACxB,MAAM;MACHjB,cAAc,CAACO,IAAI,CAACW,MAAM,CAACnC,YAAY,CAAC;;;IAI5C,IAAI0B,yBAAyB,EAAE;MAC3BA,yBAAyB,CAACQ,MAAM,EAAE;;IAGtC,IAAIE,WAAW,GAAGpC,YAAY,CAACgC,UAAgC;IAE/D,OAAOI,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAKnB,cAAc,CAACO,IAAI,EAAE;MAAA,IAAAa,YAAA;;;MAGhE,CAAAA,YAAA,GAAAD,WAAW,cAAAC,YAAA,uBAAXA,YAAA,CAAaR,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MACpCM,WAAW,GAAGA,WAAW,CAACJ,UAAgC;;IAG9D/C,YAAY,CAACe,YAAY,CAAC;GAC7B,EAAE,CAACR,YAAY,EAAEE,WAAW,CAAC,CAAC;EAE/B,MAAM4C,eAAe,GAAuB;IACxC,GAAG3D,UAAU;IACb4D,aAAa,EAAEC,SAAS;;IAExBC,sBAAsB,EAAE,CAAC,CAAC;IAC1BC,eAAe,EAAE;MACb,IAAG/D,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE+D,eAAe;MAC9BC,SAAS,EAAE;KACd;IACDC,oBAAoB,EAAE,KAAK;IAC3BC,eAAe,EAAE,IAAI;IACrBC,kBAAkB,EAAE,KAAK;IACzBC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,KAAK;IACrBC,aAAa,EAAE,KAAK;IACpBC,aAAa,EAAE,KAAK;IACpBC,wBAAwB,EAAE,KAAK;IAC/BC,MAAM,EAAEZ;GACX;;EAGD,oBACI1D;IACIuE,SAAS,EAAC,kCAAkC;IAC5CC,GAAG,EAAEzE,aAAa;;IAElB0E,GAAG,EAAC;KACHvE,SAAS,IAAIU,WAAW,gBAAG8D,QAAQ,CAACC,YAAY,eAAC3E,6BAAC4E,MAAM,oBAAKpB,eAAe,EAAI,EAAEtD,SAAS,CAAC,GAAG,IAAI,CAC/F;AAEjB;;;;"}
1
+ {"version":3,"file":"PrintIFrame.js","sources":["../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/PrintIFrame.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Table3 } from '../../../../..';\nimport { Table3Props } from '../../../types';\nimport { useParentStylesheets } from './hooks/useParentStylesheets';\n\nexport type PrintIFrameProps<TType = unknown> = {\n onAfterPrint?: () => void;\n onBeforePrint?: () => void;\n tableProps: Table3Props<TType>;\n};\n\nexport function PrintIFrame<TType = unknown>({ onAfterPrint, onBeforePrint, tableProps }: PrintIFrameProps<TType>) {\n const [contentRef, setContentRef] = React.useState<HTMLIFrameElement | null>(null);\n const [mountNode, setMountNode] = React.useState<HTMLElement | null>(null);\n\n const isFirefoxBrowser = React.useMemo(() => navigator.userAgent.toLowerCase().includes('firefox'), []);\n\n const iframeWindow = contentRef?.contentWindow;\n\n const stylesReady = useParentStylesheets(iframeWindow);\n\n // Calls print method when table has loaded in the iframe.\n React.useEffect(() => {\n let intervalId: NodeJS.Timer;\n let timeoutId: NodeJS.Timer;\n\n // Invoke the print functionality on the window once the table has finished rendering and all print styles are\n // added.\n if (mountNode && stylesReady) {\n intervalId = setInterval(async () => {\n const tableWrapper = mountNode;\n const table = tableWrapper.querySelector('[role=\"table\"]') as HTMLElement;\n const hasTableRendered = !!table;\n\n if (hasTableRendered && intervalId) {\n clearInterval(intervalId);\n\n // Calling the onBeforePrint method here as a fallback because certain browsers, like Safari,\n // do not call the beforeprint event.\n // Bug - Even though onBeforePrint is called before printing, the execution doesn't finish before\n // the print dialog shows up, which results into having a visible loading toast.\n onBeforePrint?.();\n\n // By adding height to the tableWrapper, we make sure the content below absolutely positioned table\n // doesn't hide\n if (isFirefoxBrowser) {\n const tableHeight = `${table.offsetHeight}px`;\n tableWrapper.style.height = tableHeight;\n }\n\n contentRef?.contentWindow?.print();\n\n // Calling the onAfterPrint method here as a fallback to do the cleanup, as certain browsers,\n // like Safari, do not trigger the beforeprint or afterprint events when a confirmation dialog\n // asking if the user wants to print the document, is cancelled.\n\n // Added a setTimeout to prevent calling onAfterPrint immediately after the print function\n // to ensure that the print dialog doesn't close abruptly. Although this behavior is uncommon,\n // there are cases where the print function may not run synchronously, causing onAfterPrint to be\n // invoked right after it.\n timeoutId = setTimeout(() => {\n onAfterPrint?.();\n }, 0);\n }\n }, 1000);\n }\n\n return () => {\n clearInterval(intervalId);\n clearTimeout(timeoutId);\n };\n }, [mountNode, stylesReady]);\n\n React.useEffect(() => {\n if (!iframeWindow || !stylesReady) {\n return;\n }\n\n const iframeDocument = iframeWindow.document;\n // Only the content inside the main element will get printed along with the table.\n const parentDocumentContent =\n iframeWindow.parent.document.querySelector('main')?.innerHTML || iframeWindow.parent.document.body?.innerHTML || '';\n\n iframeDocument.body.innerHTML = parentDocumentContent;\n\n const tableElement = iframeDocument.querySelector('[role=\"table\"]');\n const tableColumnFreezingStyles = iframeDocument.querySelector('[data-taco=\"table3-column-freezing-styles\"]');\n const tableWrapper = iframeDocument.createElement('div');\n\n tableWrapper.setAttribute('data-role', 'table-wrapper');\n // Adding h-fit class makes sure that table is rendered with the whole content.\n tableWrapper.classList.add('h-fit');\n tableWrapper.classList.add('[&>[role=\"table\"]]:!h-fit');\n\n if (isFirefoxBrowser) {\n // Fix for firefox bug which adds page-long whitespace between page's top content and table\n tableWrapper.classList.add('[&>[role=\"table\"]]:!absolute');\n }\n\n // Safari print preview assigns no width to the table when w-screen class is used.\n // By assigning table a big static width and hiding the horizontal scrollbar, the table on chrome\n // and safari will always take full page width.\n tableWrapper.classList.add('w-[10000px]');\n\n if (tableElement) {\n tableElement.parentNode?.insertBefore(tableWrapper, tableElement);\n tableElement.remove();\n } else {\n iframeDocument.body.append(tableWrapper);\n }\n\n // Remove the already existing column freezing styles.\n if (tableColumnFreezingStyles) {\n tableColumnFreezingStyles.remove();\n }\n\n let currentNode = tableWrapper.parentNode as HTMLElement | null;\n\n while (currentNode !== null && currentNode !== iframeDocument.body) {\n // Add the 'h-fit' class to the 'table-wrapper' element's parent chain.\n // This ensures that the table is not cropped and fits within its container.\n currentNode?.classList.add('!h-fit');\n currentNode = currentNode.parentNode as HTMLElement | null;\n }\n\n setMountNode(tableWrapper);\n }, [iframeWindow, stylesReady]);\n\n const printTableProps: Table3Props<TType> = {\n ...tableProps,\n actionsForRow: undefined,\n // Not the best way to remove the active/current row styles, but a temporary solution for now\n defaultCurrentRowIndex: -1,\n defaultSettings: {\n ...tableProps?.defaultSettings,\n rowHeight: 'short',\n },\n enableColumnFreezing: false,\n enableRowHeight: true,\n enableRowSelection: false,\n enableEditing: false,\n enablePrinting: false,\n enableRowDrag: false,\n enableRowDrop: false,\n enableRowSelectionSingle: false,\n preset: undefined,\n // The presence of the onChangeSettings prop ensures that settings won't be stored in local storage.\n onChangeSettings: () => undefined,\n };\n\n // -top-60 -left-60 styles make sure that iframe is added outside of the viewport\n return (\n <iframe\n className=\"fixed -left-60 -top-60 !h-0 !w-0\"\n ref={setContentRef}\n // Temporary fix to support printing in firefox: Find another solution while upgrading React\n src=\"javascript:void(0);\">\n {mountNode && stylesReady ? ReactDOM.createPortal(<Table3 {...printTableProps} />, mountNode) : null}\n </iframe>\n );\n}\n"],"names":["PrintIFrame","onAfterPrint","onBeforePrint","tableProps","contentRef","setContentRef","React","useState","mountNode","setMountNode","isFirefoxBrowser","useMemo","navigator","userAgent","toLowerCase","includes","iframeWindow","contentWindow","stylesReady","useParentStylesheets","useEffect","intervalId","timeoutId","setInterval","tableWrapper","table","querySelector","hasTableRendered","_contentRef$contentWi","clearInterval","tableHeight","offsetHeight","style","height","print","setTimeout","Promise","resolve","e","reject","clearTimeout","iframeDocument","document","parentDocumentContent","_iframeWindow$parent$","parent","innerHTML","_iframeWindow$parent$2","body","tableElement","tableColumnFreezingStyles","createElement","setAttribute","classList","add","_tableElement$parentN","parentNode","insertBefore","remove","append","currentNode","_currentNode","printTableProps","actionsForRow","undefined","defaultCurrentRowIndex","defaultSettings","rowHeight","enableColumnFreezing","enableRowHeight","enableRowSelection","enableEditing","enablePrinting","enableRowDrag","enableRowDrop","enableRowSelectionSingle","preset","onChangeSettings","className","ref","src","ReactDOM","createPortal","Table3"],"mappings":"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"}
@@ -51,17 +51,26 @@ function useColumnFreezingStyle(tableId, table) {
51
51
  columnVisibility
52
52
  } = table.getState();
53
53
  const tableMeta = table.options.meta;
54
- const frozenColumnIndex = ((_tableMeta$columnFree = tableMeta.columnFreezing.frozenColumnIndex) !== null && _tableMeta$columnFree !== void 0 ? _tableMeta$columnFree : -1) + tableMeta.columnFreezing.frozenInternalColumnCount;
54
+ const frozenColumnIndex =
55
+ // If column freezing is not enabled then only internal frozen column should be frozen.
56
+ (tableMeta.columnFreezing.isEnabled ? (_tableMeta$columnFree = tableMeta.columnFreezing.frozenColumnIndex) !== null && _tableMeta$columnFree !== void 0 ? _tableMeta$columnFree : -1 : -1) + tableMeta.columnFreezing.frozenInternalColumnCount;
55
57
  const style = React__default.useMemo(() => {
56
58
  if (tableMeta.columnFreezing.frozenInternalColumnCount > 0 || tableMeta.columnFreezing.isEnabled && frozenColumnIndex !== undefined) {
57
- const visibleFrozenColumns = table.getVisibleLeafColumns().slice(0, frozenColumnIndex + 1).map(column => column.id);
59
+ var _visibleFrozenColumns;
60
+ const visibleFrozenColumns = table.getVisibleLeafColumns().slice(0, frozenColumnIndex + 1);
58
61
  // if all frozen columns haven't had their size set yet, then abort
59
- if (visibleFrozenColumns.every(id => columnSizing[id] === undefined)) {
62
+ if (visibleFrozenColumns.every(column => columnSizing[column.id] === undefined)) {
60
63
  return undefined;
61
64
  }
62
65
  const offsets = {};
63
- visibleFrozenColumns.reduce((offset, columnId) => {
66
+ visibleFrozenColumns.reduce((offset, column) => {
67
+ const columnId = column.id;
64
68
  offsets[columnId] = offset;
69
+ if (isInternalColumn(columnId)) {
70
+ // getSize method is used instead of columnSizing state because columnSizing state doesn't have
71
+ // sizes of internal columns.
72
+ return offset + column.getSize();
73
+ }
65
74
  return offset + columnSizing[columnId];
66
75
  }, 0);
67
76
  const styles = [Object.values(offsets).map((offset, index) => `#${tableId} [role="row"] > :nth-child(${index + 1}) { left: ${offset}px }`).join('\n'), `#${tableId} [role="row"] > :not(:nth-child(n+${frozenColumnIndex + 2})) {
@@ -70,7 +79,7 @@ function useColumnFreezingStyle(tableId, table) {
70
79
  }`, `#${tableId}[data-horizontally-scrolled="true"] [role="row"] > :nth-child(${frozenColumnIndex + 1}) {
71
80
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 6px 0px 6px rgb(0 0 0/8%), 1px 0px 0px #DDDDDD;
72
81
  }`];
73
- const columnId = visibleFrozenColumns[frozenColumnIndex];
82
+ const columnId = (_visibleFrozenColumns = visibleFrozenColumns[frozenColumnIndex]) === null || _visibleFrozenColumns === void 0 ? void 0 : _visibleFrozenColumns.id;
74
83
  // frozenColumnIndex could not be in the visible frozen column so it is important to check if columnId
75
84
  // exists before checking if it is internal.
76
85
  //
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnFreezing.js","sources":["../../../../../../../../../src/components/Table3/hooks/features/useColumnFreezing.ts"],"sourcesContent":["import { Table, TableMeta } from '@tanstack/react-table';\nimport React from 'react';\nimport { Table3Options } from '../../types';\nimport { isInternalColumn } from '../../util/columns';\n\nexport function getFrozenInternalColumnCount(options: Table3Options) {\n let index = 0;\n\n if (options.enableRowDrag) {\n index++;\n }\n\n if (options.enableRowSelection) {\n index++;\n }\n\n if (options.enableRowExpansion) {\n index++;\n }\n\n return index;\n}\n\n/*\nBecause of the desired behaviour of column freezing we use custom state and just an index.\nIf a frozen column is, for example, hidden, then the desired behaviour is that the next available column gets frozen.\nIf this behaviour were different we would just use the native column pinning functionality\n*/\nexport function useColumnFreezing(defaultFrozenIndex: number | undefined, options: Table3Options) {\n const [frozenColumnIndex, _setFrozenColumnIndex] = React.useState<number | undefined>(() => defaultFrozenIndex);\n const [horizontallyScrolled, setHorizontallyScrolled] = React.useState(false);\n\n const onScroll = (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.currentTarget.scrollLeft > 0 && !horizontallyScrolled) {\n setHorizontallyScrolled(true);\n } else if (event.currentTarget.scrollLeft === 0 && horizontallyScrolled) {\n setHorizontallyScrolled(false);\n }\n };\n\n const frozenInternalColumnCount = React.useMemo(() => getFrozenInternalColumnCount(options), []);\n // we must set a value when undefined is explicitly set, otherwise nothing is saved to settings\n // and the next time the table loads it will fall back to the initial value even though the user changed it\n const setFrozenColumnIndex = (index: number | undefined) => _setFrozenColumnIndex(index ?? -1);\n\n return {\n isEnabled: options.enableColumnFreezing,\n frozenInternalColumnCount,\n frozenColumnIndex,\n setFrozenColumnIndex,\n horizontallyScrolled,\n handleScroll: onScroll,\n };\n}\n\nexport function useColumnFreezingStyle<TType = unknown>(tableId: string, table: Table<TType>) {\n const { columnOrder, columnSizing, columnSizingInfo, columnVisibility } = table.getState();\n const tableMeta = table.options.meta as TableMeta<TType>;\n const frozenColumnIndex =\n (tableMeta.columnFreezing.frozenColumnIndex ?? -1) + tableMeta.columnFreezing.frozenInternalColumnCount;\n\n const style = React.useMemo(() => {\n if (\n tableMeta.columnFreezing.frozenInternalColumnCount > 0 ||\n (tableMeta.columnFreezing.isEnabled && frozenColumnIndex !== undefined)\n ) {\n const visibleFrozenColumns = table\n .getVisibleLeafColumns()\n .slice(0, frozenColumnIndex + 1)\n .map(column => column.id);\n\n // if all frozen columns haven't had their size set yet, then abort\n if (visibleFrozenColumns.every(id => columnSizing[id] === undefined)) {\n return undefined;\n }\n\n const offsets = {};\n\n visibleFrozenColumns.reduce((offset, columnId) => {\n offsets[columnId] = offset;\n return offset + columnSizing[columnId];\n }, 0);\n\n const styles = [\n Object.values(offsets)\n .map((offset, index) => `#${tableId} [role=\"row\"] > :nth-child(${index + 1}) { left: ${offset}px }`)\n .join('\\n'),\n `#${tableId} [role=\"row\"] > :not(:nth-child(n+${frozenColumnIndex + 2})) {\n position: sticky;\n z-index: 20;\n }`,\n `#${tableId}[data-horizontally-scrolled=\"true\"] [role=\"row\"] > :nth-child(${frozenColumnIndex + 1}) {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 6px 0px 6px rgb(0 0 0/8%), 1px 0px 0px #DDDDDD;\n }`,\n ];\n\n const columnId = visibleFrozenColumns[frozenColumnIndex];\n\n // frozenColumnIndex could not be in the visible frozen column so it is important to check if columnId\n // exists before checking if it is internal.\n //\n // only add a border to the edge column if it isn't an internal column\n if (columnId && !isInternalColumn(columnId)) {\n styles.push(`#${tableId}[data-horizontally-scrolled=\"false\"] [role=\"row\"] > :nth-child(${frozenColumnIndex + 1}) {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 1px 0px 0px #DDDDDD;\n }`);\n }\n\n return styles.join('\\n');\n }\n\n return undefined;\n }, [columnOrder, columnSizing, columnSizingInfo, columnVisibility, tableMeta.columnFreezing.isEnabled, frozenColumnIndex]);\n\n return style;\n}\n"],"names":["getFrozenInternalColumnCount","options","index","enableRowDrag","enableRowSelection","enableRowExpansion","useColumnFreezing","defaultFrozenIndex","frozenColumnIndex","_setFrozenColumnIndex","React","useState","horizontallyScrolled","setHorizontallyScrolled","onScroll","event","currentTarget","scrollLeft","frozenInternalColumnCount","useMemo","setFrozenColumnIndex","isEnabled","enableColumnFreezing","handleScroll","useColumnFreezingStyle","tableId","table","columnOrder","columnSizing","columnSizingInfo","columnVisibility","getState","tableMeta","meta","_tableMeta$columnFree","columnFreezing","style","undefined","visibleFrozenColumns","getVisibleLeafColumns","slice","map","column","id","every","offsets","reduce","offset","columnId","styles","Object","values","join","isInternalColumn","push"],"mappings":"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"}
1
+ {"version":3,"file":"useColumnFreezing.js","sources":["../../../../../../../../../src/components/Table3/hooks/features/useColumnFreezing.ts"],"sourcesContent":["import { Table, TableMeta } from '@tanstack/react-table';\nimport React from 'react';\nimport { Table3Options } from '../../types';\nimport { isInternalColumn } from '../../util/columns';\n\nexport function getFrozenInternalColumnCount(options: Table3Options) {\n let index = 0;\n\n if (options.enableRowDrag) {\n index++;\n }\n\n if (options.enableRowSelection) {\n index++;\n }\n\n if (options.enableRowExpansion) {\n index++;\n }\n\n return index;\n}\n\n/*\nBecause of the desired behaviour of column freezing we use custom state and just an index.\nIf a frozen column is, for example, hidden, then the desired behaviour is that the next available column gets frozen.\nIf this behaviour were different we would just use the native column pinning functionality\n*/\nexport function useColumnFreezing(defaultFrozenIndex: number | undefined, options: Table3Options) {\n const [frozenColumnIndex, _setFrozenColumnIndex] = React.useState<number | undefined>(() => defaultFrozenIndex);\n const [horizontallyScrolled, setHorizontallyScrolled] = React.useState(false);\n\n const onScroll = (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.currentTarget.scrollLeft > 0 && !horizontallyScrolled) {\n setHorizontallyScrolled(true);\n } else if (event.currentTarget.scrollLeft === 0 && horizontallyScrolled) {\n setHorizontallyScrolled(false);\n }\n };\n\n const frozenInternalColumnCount = React.useMemo(() => getFrozenInternalColumnCount(options), []);\n // we must set a value when undefined is explicitly set, otherwise nothing is saved to settings\n // and the next time the table loads it will fall back to the initial value even though the user changed it\n const setFrozenColumnIndex = (index: number | undefined) => _setFrozenColumnIndex(index ?? -1);\n\n return {\n isEnabled: options.enableColumnFreezing,\n frozenInternalColumnCount,\n frozenColumnIndex,\n setFrozenColumnIndex,\n horizontallyScrolled,\n handleScroll: onScroll,\n };\n}\n\nexport function useColumnFreezingStyle<TType = unknown>(tableId: string, table: Table<TType>) {\n const { columnOrder, columnSizing, columnSizingInfo, columnVisibility } = table.getState();\n const tableMeta = table.options.meta as TableMeta<TType>;\n const frozenColumnIndex =\n // If column freezing is not enabled then only internal frozen column should be frozen.\n (tableMeta.columnFreezing.isEnabled ? tableMeta.columnFreezing.frozenColumnIndex ?? -1 : -1) +\n tableMeta.columnFreezing.frozenInternalColumnCount;\n\n const style = React.useMemo(() => {\n if (\n tableMeta.columnFreezing.frozenInternalColumnCount > 0 ||\n (tableMeta.columnFreezing.isEnabled && frozenColumnIndex !== undefined)\n ) {\n const visibleFrozenColumns = table.getVisibleLeafColumns().slice(0, frozenColumnIndex + 1);\n\n // if all frozen columns haven't had their size set yet, then abort\n if (visibleFrozenColumns.every(column => columnSizing[column.id] === undefined)) {\n return undefined;\n }\n\n const offsets = {};\n\n visibleFrozenColumns.reduce((offset, column) => {\n const columnId = column.id;\n\n offsets[columnId] = offset;\n\n if (isInternalColumn(columnId)) {\n // getSize method is used instead of columnSizing state because columnSizing state doesn't have\n // sizes of internal columns.\n return offset + column.getSize();\n }\n\n return offset + columnSizing[columnId];\n }, 0);\n\n const styles = [\n Object.values(offsets)\n .map((offset, index) => `#${tableId} [role=\"row\"] > :nth-child(${index + 1}) { left: ${offset}px }`)\n .join('\\n'),\n `#${tableId} [role=\"row\"] > :not(:nth-child(n+${frozenColumnIndex + 2})) {\n position: sticky;\n z-index: 20;\n }`,\n `#${tableId}[data-horizontally-scrolled=\"true\"] [role=\"row\"] > :nth-child(${frozenColumnIndex + 1}) {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 6px 0px 6px rgb(0 0 0/8%), 1px 0px 0px #DDDDDD;\n }`,\n ];\n\n const columnId = visibleFrozenColumns[frozenColumnIndex]?.id;\n\n // frozenColumnIndex could not be in the visible frozen column so it is important to check if columnId\n // exists before checking if it is internal.\n //\n // only add a border to the edge column if it isn't an internal column\n if (columnId && !isInternalColumn(columnId)) {\n styles.push(`#${tableId}[data-horizontally-scrolled=\"false\"] [role=\"row\"] > :nth-child(${frozenColumnIndex + 1}) {\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 1px 0px 0px #DDDDDD;\n }`);\n }\n\n return styles.join('\\n');\n }\n\n return undefined;\n }, [columnOrder, columnSizing, columnSizingInfo, columnVisibility, tableMeta.columnFreezing.isEnabled, frozenColumnIndex]);\n\n return style;\n}\n"],"names":["getFrozenInternalColumnCount","options","index","enableRowDrag","enableRowSelection","enableRowExpansion","useColumnFreezing","defaultFrozenIndex","frozenColumnIndex","_setFrozenColumnIndex","React","useState","horizontallyScrolled","setHorizontallyScrolled","onScroll","event","currentTarget","scrollLeft","frozenInternalColumnCount","useMemo","setFrozenColumnIndex","isEnabled","enableColumnFreezing","handleScroll","useColumnFreezingStyle","tableId","table","columnOrder","columnSizing","columnSizingInfo","columnVisibility","getState","tableMeta","meta","columnFreezing","_tableMeta$columnFree","style","undefined","_visibleFrozenColumns","visibleFrozenColumns","getVisibleLeafColumns","slice","every","column","id","offsets","reduce","offset","columnId","isInternalColumn","getSize","styles","Object","values","map","join","push"],"mappings":"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"}
@@ -8,7 +8,10 @@ function useUniqueTableId(tableId) {
8
8
  }
9
9
  function useSettings(id, defaultSettings = {}, onChangeSettings) {
10
10
  const uniqueId = useUniqueTableId(id);
11
- const [persistedSettings, setPersistedSettings] = useLocalStorage(uniqueId, defaultSettings);
11
+ // If the onChangeSettings prop is provided, we intend to handle settings changes externally rather than saving them
12
+ // to local storage.
13
+ const key = !onChangeSettings ? uniqueId : undefined;
14
+ const [persistedSettings, setPersistedSettings] = useLocalStorage(key, defaultSettings);
12
15
  return React__default.useMemo(() => {
13
16
  if (onChangeSettings) {
14
17
  return [defaultSettings, onChangeSettings];
@@ -1 +1 @@
1
- {"version":3,"file":"useSettings.js","sources":["../../../../../../../../../src/components/Table3/hooks/features/useSettings.ts"],"sourcesContent":["import React from 'react';\nimport { useLocalStorage } from '../../../../hooks/useLocalStorage';\nimport { useTacoSettings } from '../../../../hooks/useTacoSettings';\nimport { Table3Settings, Table3SettingsHandler } from '../../types';\n\nexport function useUniqueTableId(tableId: string) {\n const tacoSettings = useTacoSettings();\n\n return `taco.${tacoSettings.uniqueUserIdentifier}.table3.${tableId}.settings`;\n}\n\nexport function useSettings(\n id: string,\n defaultSettings: Table3Settings | undefined = {},\n onChangeSettings: Table3SettingsHandler | undefined\n): [Table3Settings, Table3SettingsHandler] {\n const uniqueId = useUniqueTableId(id);\n const [persistedSettings, setPersistedSettings] = useLocalStorage<Table3Settings>(uniqueId, defaultSettings);\n\n return React.useMemo(() => {\n if (onChangeSettings) {\n return [defaultSettings, onChangeSettings];\n }\n\n return [persistedSettings, setPersistedSettings];\n }, []);\n}\n"],"names":["useUniqueTableId","tableId","tacoSettings","useTacoSettings","uniqueUserIdentifier","useSettings","id","defaultSettings","onChangeSettings","uniqueId","persistedSettings","setPersistedSettings","useLocalStorage","React","useMemo"],"mappings":";;;;SAKgBA,gBAAgBA,CAACC,OAAe;EAC5C,MAAMC,YAAY,GAAGC,eAAe,EAAE;EAEtC,eAAeD,YAAY,CAACE,+BAA+BH,kBAAkB;AACjF;SAEgBI,WAAWA,CACvBC,EAAU,EACVC,kBAA8C,EAAE,EAChDC,gBAAmD;EAEnD,MAAMC,QAAQ,GAAGT,gBAAgB,CAACM,EAAE,CAAC;EACrC,MAAM,CAACI,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGC,eAAe,CAAiBH,QAAQ,EAAEF,eAAe,CAAC;EAE5G,OAAOM,cAAK,CAACC,OAAO,CAAC;IACjB,IAAIN,gBAAgB,EAAE;MAClB,OAAO,CAACD,eAAe,EAAEC,gBAAgB,CAAC;;IAG9C,OAAO,CAACE,iBAAiB,EAAEC,oBAAoB,CAAC;GACnD,EAAE,EAAE,CAAC;AACV;;;;"}
1
+ {"version":3,"file":"useSettings.js","sources":["../../../../../../../../../src/components/Table3/hooks/features/useSettings.ts"],"sourcesContent":["import React from 'react';\nimport { useLocalStorage } from '../../../../hooks/useLocalStorage';\nimport { useTacoSettings } from '../../../../hooks/useTacoSettings';\nimport { Table3Settings, Table3SettingsHandler } from '../../types';\n\nexport function useUniqueTableId(tableId: string) {\n const tacoSettings = useTacoSettings();\n\n return `taco.${tacoSettings.uniqueUserIdentifier}.table3.${tableId}.settings`;\n}\n\nexport function useSettings(\n id: string,\n defaultSettings: Table3Settings | undefined = {},\n onChangeSettings: Table3SettingsHandler | undefined\n): [Table3Settings, Table3SettingsHandler] {\n const uniqueId = useUniqueTableId(id);\n // If the onChangeSettings prop is provided, we intend to handle settings changes externally rather than saving them\n // to local storage.\n const key = !onChangeSettings ? uniqueId : undefined;\n const [persistedSettings, setPersistedSettings] = useLocalStorage<Table3Settings>(key, defaultSettings);\n\n return React.useMemo(() => {\n if (onChangeSettings) {\n return [defaultSettings, onChangeSettings];\n }\n\n return [persistedSettings, setPersistedSettings];\n }, []);\n}\n"],"names":["useUniqueTableId","tableId","tacoSettings","useTacoSettings","uniqueUserIdentifier","useSettings","id","defaultSettings","onChangeSettings","uniqueId","key","undefined","persistedSettings","setPersistedSettings","useLocalStorage","React","useMemo"],"mappings":";;;;SAKgBA,gBAAgBA,CAACC,OAAe;EAC5C,MAAMC,YAAY,GAAGC,eAAe,EAAE;EAEtC,eAAeD,YAAY,CAACE,+BAA+BH,kBAAkB;AACjF;SAEgBI,WAAWA,CACvBC,EAAU,EACVC,kBAA8C,EAAE,EAChDC,gBAAmD;EAEnD,MAAMC,QAAQ,GAAGT,gBAAgB,CAACM,EAAE,CAAC;;;EAGrC,MAAMI,GAAG,GAAG,CAACF,gBAAgB,GAAGC,QAAQ,GAAGE,SAAS;EACpD,MAAM,CAACC,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGC,eAAe,CAAiBJ,GAAG,EAAEH,eAAe,CAAC;EAEvG,OAAOQ,cAAK,CAACC,OAAO,CAAC;IACjB,IAAIR,gBAAgB,EAAE;MAClB,OAAO,CAACD,eAAe,EAAEC,gBAAgB,CAAC;;IAG9C,OAAO,CAACI,iBAAiB,EAAEC,oBAAoB,CAAC;GACnD,EAAE,EAAE,CAAC;AACV;;;;"}
@@ -26,88 +26,92 @@ function getSortingFn(dataType, customFnOrBuiltIn) {
26
26
  return 'auto';
27
27
  }
28
28
  function useConvertChildrenToColumns(props, options, editing) {
29
- var _props$actionsForRow;
30
- const columnHelper = createColumnHelper();
31
- const columns = [];
32
- const defaultColumnSizing = {};
33
- const defaultColumnVisibility = {};
34
- const defaultSorting = [];
35
- React__default.Children.toArray(props.children).filter(child => !!child) // remove falsey children
36
- .forEach(child => {
37
- if ( /*#__PURE__*/React__default.isValidElement(child) && child.props.accessor) {
38
- var _child$props$enableRe, _child$props$enableFi, _child$props$enableSo, _child$props$enableHi, _child$props$enableOr, _child$props$enableSe, _child$props$enableTr;
39
- if (child.props.defaultWidth) {
40
- defaultColumnSizing[child.props.accessor] = child.props.defaultWidth === 'grow' ? '1fr' : child.props.defaultWidth;
41
- }
42
- if (child.props.defaultHidden && options.enableColumnHiding) {
43
- defaultColumnVisibility[child.props.accessor] = false;
44
- }
45
- if (child.props.sort !== undefined) {
46
- defaultSorting.push({
29
+ // It's important to memoise column definitions, because it prevents columns like "Drag column" to re-render on every state change,
30
+ // and break dragging at the moment it happens.
31
+ return React__default.useMemo(() => {
32
+ var _props$actionsForRow;
33
+ const columnHelper = createColumnHelper();
34
+ const columns = [];
35
+ const defaultColumnSizing = {};
36
+ const defaultColumnVisibility = {};
37
+ const defaultSorting = [];
38
+ React__default.Children.toArray(props.children).filter(child => !!child) // remove falsey children
39
+ .forEach(child => {
40
+ if ( /*#__PURE__*/React__default.isValidElement(child) && child.props.accessor) {
41
+ var _child$props$enableRe, _child$props$enableFi, _child$props$enableSo, _child$props$enableHi, _child$props$enableOr, _child$props$enableSe, _child$props$enableTr;
42
+ if (child.props.defaultWidth) {
43
+ defaultColumnSizing[child.props.accessor] = child.props.defaultWidth === 'grow' ? '1fr' : child.props.defaultWidth;
44
+ }
45
+ if (child.props.defaultHidden && options.enableColumnHiding) {
46
+ defaultColumnVisibility[child.props.accessor] = false;
47
+ }
48
+ if (child.props.sort !== undefined) {
49
+ defaultSorting.push({
50
+ id: child.props.accessor,
51
+ desc: child.props.sort === 'desc'
52
+ });
53
+ }
54
+ columns.push({
55
+ accessorKey: child.props.accessor,
47
56
  id: child.props.accessor,
48
- desc: child.props.sort === 'desc'
57
+ header: Header,
58
+ cell: Cell,
59
+ footer: Footer,
60
+ // sizing
61
+ minSize: MIN_COLUMN_SIZE,
62
+ enableResizing: (_child$props$enableRe = child.props.enableResizing) !== null && _child$props$enableRe !== void 0 ? _child$props$enableRe : true,
63
+ // filtering
64
+ enableColumnFilter: (_child$props$enableFi = child.props.enableFiltering) !== null && _child$props$enableFi !== void 0 ? _child$props$enableFi : true,
65
+ filterFn: 'tacoFilter',
66
+ // sorting
67
+ enableSorting: (_child$props$enableSo = child.props.enableSorting) !== null && _child$props$enableSo !== void 0 ? _child$props$enableSo : true,
68
+ sortingFn: getSortingFn(child.props.dataType, child.props.sortFn),
69
+ sortDescFirst: false,
70
+ sortUndefined: 1,
71
+ // visibility
72
+ enableHiding: (_child$props$enableHi = child.props.enableHiding) !== null && _child$props$enableHi !== void 0 ? _child$props$enableHi : true,
73
+ // custom options
74
+ meta: {
75
+ align: child.props.align,
76
+ className: child.props.className,
77
+ control: child.props.control,
78
+ dataType: child.props.dataType,
79
+ enableOrdering: (_child$props$enableOr = child.props.enableOrdering) !== null && _child$props$enableOr !== void 0 ? _child$props$enableOr : true,
80
+ enableSearch: (_child$props$enableSe = child.props.enableSearch) !== null && _child$props$enableSe !== void 0 ? _child$props$enableSe : true,
81
+ enableTruncate: (_child$props$enableTr = child.props.enableTruncate) !== null && _child$props$enableTr !== void 0 ? _child$props$enableTr : false,
82
+ filters: child.props.filters,
83
+ footer: child.props.footer,
84
+ header: child.props.header,
85
+ headerClassName: child.props.headerClassName,
86
+ menu: child.props.menu,
87
+ renderer: child.props.renderer,
88
+ tooltip: child.props.tooltip
89
+ }
49
90
  });
50
91
  }
51
- columns.push({
52
- accessorKey: child.props.accessor,
53
- id: child.props.accessor,
54
- header: Header,
55
- cell: Cell,
56
- footer: Footer,
57
- // sizing
58
- minSize: MIN_COLUMN_SIZE,
59
- enableResizing: (_child$props$enableRe = child.props.enableResizing) !== null && _child$props$enableRe !== void 0 ? _child$props$enableRe : true,
60
- // filtering
61
- enableColumnFilter: (_child$props$enableFi = child.props.enableFiltering) !== null && _child$props$enableFi !== void 0 ? _child$props$enableFi : true,
62
- filterFn: 'tacoFilter',
63
- // sorting
64
- enableSorting: (_child$props$enableSo = child.props.enableSorting) !== null && _child$props$enableSo !== void 0 ? _child$props$enableSo : true,
65
- sortingFn: getSortingFn(child.props.dataType, child.props.sortFn),
66
- sortDescFirst: false,
67
- sortUndefined: 1,
68
- // visibility
69
- enableHiding: (_child$props$enableHi = child.props.enableHiding) !== null && _child$props$enableHi !== void 0 ? _child$props$enableHi : true,
70
- // custom options
71
- meta: {
72
- align: child.props.align,
73
- className: child.props.className,
74
- control: child.props.control,
75
- dataType: child.props.dataType,
76
- enableOrdering: (_child$props$enableOr = child.props.enableOrdering) !== null && _child$props$enableOr !== void 0 ? _child$props$enableOr : true,
77
- enableSearch: (_child$props$enableSe = child.props.enableSearch) !== null && _child$props$enableSe !== void 0 ? _child$props$enableSe : true,
78
- enableTruncate: (_child$props$enableTr = child.props.enableTruncate) !== null && _child$props$enableTr !== void 0 ? _child$props$enableTr : false,
79
- filters: child.props.filters,
80
- footer: child.props.footer,
81
- header: child.props.header,
82
- headerClassName: child.props.headerClassName,
83
- menu: child.props.menu,
84
- renderer: child.props.renderer,
85
- tooltip: child.props.tooltip
86
- }
87
- });
92
+ });
93
+ if (options.enableRowExpansion && props.expandedRowRenderer) {
94
+ columns.unshift(columnHelper.display(createRowExpansionColumn(props.expandedRowRenderer)));
88
95
  }
89
- });
90
- if (options.enableRowExpansion && props.expandedRowRenderer) {
91
- columns.unshift(columnHelper.display(createRowExpansionColumn(props.expandedRowRenderer)));
92
- }
93
- if (options.enableRowSelection) {
94
- columns.unshift(columnHelper.display(createRowSelectionColumn(!!(options.enableRowDrag && props.onRowDrag), !!props.expandedRowRenderer)));
95
- }
96
- if (options.enableRowDrag && props.onRowDrag) {
97
- columns.unshift(columnHelper.display(createRowDragColumn(props.onRowDrag)));
98
- }
99
- if ((_props$actionsForRow = props.actionsForRow) !== null && _props$actionsForRow !== void 0 && _props$actionsForRow.length) {
100
- columns.push(columnHelper.display(createRowActionsColumn()));
101
- }
102
- if (editing.isEnabled && editing.isEditing) {
103
- columns.push(columnHelper.display(createRowEditingActionsColumn()));
104
- }
105
- return {
106
- columns,
107
- defaultColumnSizing,
108
- defaultColumnVisibility,
109
- defaultSorting
110
- };
96
+ if (options.enableRowSelection) {
97
+ columns.unshift(columnHelper.display(createRowSelectionColumn(!!(options.enableRowDrag && props.onRowDrag), !!props.expandedRowRenderer)));
98
+ }
99
+ if (options.enableRowDrag && props.onRowDrag) {
100
+ columns.unshift(columnHelper.display(createRowDragColumn(props.onRowDrag)));
101
+ }
102
+ if ((_props$actionsForRow = props.actionsForRow) !== null && _props$actionsForRow !== void 0 && _props$actionsForRow.length) {
103
+ columns.push(columnHelper.display(createRowActionsColumn()));
104
+ }
105
+ if (editing.isEnabled && editing.isEditing) {
106
+ columns.push(columnHelper.display(createRowEditingActionsColumn()));
107
+ }
108
+ return {
109
+ columns,
110
+ defaultColumnSizing,
111
+ defaultColumnVisibility,
112
+ defaultSorting
113
+ };
114
+ }, [props.children]);
111
115
  }
112
116
 
113
117
  export { useConvertChildrenToColumns };