@veeqo/ui 13.6.1 → 13.7.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 (108) hide show
  1. package/dist/components/Anchor/index.d.ts +1 -1
  2. package/dist/components/Calendars/components/subcomponents/CalendarHeader.cjs +0 -1
  3. package/dist/components/Calendars/components/subcomponents/CalendarHeader.cjs.map +1 -1
  4. package/dist/components/Calendars/components/subcomponents/CalendarHeader.js +0 -1
  5. package/dist/components/Calendars/components/subcomponents/CalendarHeader.js.map +1 -1
  6. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  7. package/dist/components/Checkbox/Checkbox.d.ts +3 -1
  8. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  9. package/dist/components/Choice/Choice.cjs +0 -1
  10. package/dist/components/Choice/Choice.cjs.map +1 -1
  11. package/dist/components/Choice/Choice.js +0 -1
  12. package/dist/components/Choice/Choice.js.map +1 -1
  13. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.cjs +0 -1
  14. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.cjs.map +1 -1
  15. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js +0 -1
  16. package/dist/components/DataGrid/components/Body/BodyCell/BodyCell.js.map +1 -1
  17. package/dist/components/DataGrid/components/Body/LoadingBody/LoadingBodyCell.cjs +0 -1
  18. package/dist/components/DataGrid/components/Body/LoadingBody/LoadingBodyCell.cjs.map +1 -1
  19. package/dist/components/DataGrid/components/Body/LoadingBody/LoadingBodyCell.js +0 -1
  20. package/dist/components/DataGrid/components/Body/LoadingBody/LoadingBodyCell.js.map +1 -1
  21. package/dist/components/DataGrid/components/GridContainer/GridContainer.cjs +0 -1
  22. package/dist/components/DataGrid/components/GridContainer/GridContainer.cjs.map +1 -1
  23. package/dist/components/DataGrid/components/GridContainer/GridContainer.js +0 -1
  24. package/dist/components/DataGrid/components/GridContainer/GridContainer.js.map +1 -1
  25. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs +0 -1
  26. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.cjs.map +1 -1
  27. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js +0 -1
  28. package/dist/components/DataGrid/components/Header/HeaderCell/HeaderCell.js.map +1 -1
  29. package/dist/components/DataGrid/index.d.ts +1 -1
  30. package/dist/components/DataGrid/types/index.d.ts +9 -9
  31. package/dist/components/DataTable/DataTable.cjs +0 -1
  32. package/dist/components/DataTable/DataTable.cjs.map +1 -1
  33. package/dist/components/DataTable/DataTable.js +0 -1
  34. package/dist/components/DataTable/DataTable.js.map +1 -1
  35. package/dist/components/DataTable/components/ColumnMenu.cjs +0 -1
  36. package/dist/components/DataTable/components/ColumnMenu.cjs.map +1 -1
  37. package/dist/components/DataTable/components/ColumnMenu.js +0 -1
  38. package/dist/components/DataTable/components/ColumnMenu.js.map +1 -1
  39. package/dist/components/DataTable/components/SelectionCell.cjs +11 -2
  40. package/dist/components/DataTable/components/SelectionCell.cjs.map +1 -1
  41. package/dist/components/DataTable/components/SelectionCell.d.ts +2 -2
  42. package/dist/components/DataTable/components/SelectionCell.js +12 -3
  43. package/dist/components/DataTable/components/SelectionCell.js.map +1 -1
  44. package/dist/components/DataTable/hooks/useSelection.cjs +40 -17
  45. package/dist/components/DataTable/hooks/useSelection.cjs.map +1 -1
  46. package/dist/components/DataTable/hooks/useSelection.js +41 -18
  47. package/dist/components/DataTable/hooks/useSelection.js.map +1 -1
  48. package/dist/components/DataTable/types.cjs.map +1 -1
  49. package/dist/components/DataTable/types.d.ts +4 -1
  50. package/dist/components/DataTable/types.js.map +1 -1
  51. package/dist/components/DataTable/utils/getRangeSelection.cjs +18 -0
  52. package/dist/components/DataTable/utils/getRangeSelection.cjs.map +1 -0
  53. package/dist/components/DataTable/utils/getRangeSelection.d.ts +10 -0
  54. package/dist/components/DataTable/utils/getRangeSelection.js +16 -0
  55. package/dist/components/DataTable/utils/getRangeSelection.js.map +1 -0
  56. package/dist/components/DateInputField/DateInputField.cjs +0 -1
  57. package/dist/components/DateInputField/DateInputField.cjs.map +1 -1
  58. package/dist/components/DateInputField/DateInputField.js +0 -1
  59. package/dist/components/DateInputField/DateInputField.js.map +1 -1
  60. package/dist/components/DatePicker/DatePicker.cjs +0 -1
  61. package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
  62. package/dist/components/DatePicker/DatePicker.js +0 -1
  63. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  64. package/dist/components/DateRangePicker/DateRangePicker.cjs +0 -1
  65. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
  66. package/dist/components/DateRangePicker/DateRangePicker.js +0 -1
  67. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  68. package/dist/components/DimensionsInput/DimensionsInput.cjs +0 -1
  69. package/dist/components/DimensionsInput/DimensionsInput.cjs.map +1 -1
  70. package/dist/components/DimensionsInput/DimensionsInput.js +0 -1
  71. package/dist/components/DimensionsInput/DimensionsInput.js.map +1 -1
  72. package/dist/components/Modal/Modal.cjs +0 -1
  73. package/dist/components/Modal/Modal.cjs.map +1 -1
  74. package/dist/components/Modal/Modal.js +0 -1
  75. package/dist/components/Modal/Modal.js.map +1 -1
  76. package/dist/components/Modal/index.d.ts +1 -1
  77. package/dist/components/Search/index.d.ts +1 -1
  78. package/dist/components/Select/index.d.ts +2 -1
  79. package/dist/components/Stack/index.d.ts +1 -1
  80. package/dist/components/Stepper/styled.cjs +0 -1
  81. package/dist/components/Stepper/styled.cjs.map +1 -1
  82. package/dist/components/Stepper/styled.js +0 -1
  83. package/dist/components/Stepper/styled.js.map +1 -1
  84. package/dist/components/TextField/index.cjs.map +1 -1
  85. package/dist/components/TextField/index.d.ts +1 -1
  86. package/dist/components/TextField/index.js.map +1 -1
  87. package/dist/components/ToastsLayout/components/styled.cjs +0 -1
  88. package/dist/components/ToastsLayout/components/styled.cjs.map +1 -1
  89. package/dist/components/ToastsLayout/components/styled.js +0 -1
  90. package/dist/components/ToastsLayout/components/styled.js.map +1 -1
  91. package/dist/components/WeightInput/WeightInput.cjs +0 -1
  92. package/dist/components/WeightInput/WeightInput.cjs.map +1 -1
  93. package/dist/components/WeightInput/WeightInput.js +0 -1
  94. package/dist/components/WeightInput/WeightInput.js.map +1 -1
  95. package/dist/components/index.d.ts +11 -11
  96. package/dist/hoc/withLabels/styled.cjs +0 -1
  97. package/dist/hoc/withLabels/styled.cjs.map +1 -1
  98. package/dist/hoc/withLabels/styled.js +0 -1
  99. package/dist/hoc/withLabels/styled.js.map +1 -1
  100. package/dist/index.cjs +0 -14
  101. package/dist/index.cjs.map +1 -1
  102. package/dist/index.js +1 -3
  103. package/dist/index.js.map +1 -1
  104. package/package.json +2 -2
  105. package/dist/components/Stack/types.cjs +0 -38
  106. package/dist/components/Stack/types.cjs.map +0 -1
  107. package/dist/components/Stack/types.js +0 -36
  108. package/dist/components/Stack/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.cjs","sources":["../../../src/components/DataTable/DataTable.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-redundant-roles */\n\nimport React, { useRef } from 'react';\nimport { Stack } from '../Stack';\nimport { Text } from '../Text';\n\nimport { useDragToScroll } from '../../hooks';\n\nimport { generateTableCss } from './utils';\nimport { DataTableProps, CustomState, TableRow } from './types';\n\nimport { useCellWidths, useColumns, useScrollPosition, useSelection } from './hooks';\n\nimport {\n renderCell,\n renderFooter,\n renderHeader,\n renderLoadingCell,\n renderNestedCell,\n} from './renderers';\n\nimport { ActionBar } from './components/ActionBar';\nimport { Cell } from './components/Cell';\nimport { ColumnMenu } from './components/ColumnMenu';\nimport { EmptyBodyContent, EmptyBodyGlyphWrapper } from './components/EmptyBodyContent';\nimport { Header } from './components/Header';\nimport { NoWrap } from './components/NoWrap';\nimport { Row } from './components/Row';\nimport { ScrollContainer } from './components/ScrollContainer';\nimport { TableGrid } from './components/TableGrid';\nimport { Truncate } from './components/Truncate';\nimport { Wrapper } from './components/Wrapper';\nimport { SelectionCell } from './components/SelectionCell';\nimport { SelectionHeader } from './components/SelectionHeader';\nimport { StickyHead } from './components/StickyHead';\n\nimport { getRowState } from './utils/getRowState';\nimport { InfoIcon } from '../../icons';\n\nconst defaultEmptyState: CustomState = {\n iconSlot: <InfoIcon width={48} height={48} />,\n heading: 'No results',\n};\n\nconst emptyAction = () => {};\n\nexport const DataTable = ({\n actionBarSlot,\n borderMode,\n columns: initialColumns,\n emptyState = defaultEmptyState,\n expandedRowIds,\n loading,\n loadingRowCount,\n onChangeSort,\n rows,\n disabledRowIds,\n selectionMode,\n selectionState,\n setExpanded,\n sortState,\n stripingMode,\n enableStickyHeader,\n resizeableColumns,\n onResizeColumns,\n columnWidths,\n stickyHeaderTop,\n}: DataTableProps) => {\n // Refs\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const tableRef = useRef<HTMLTableElement>(null);\n const intersectionTargetRef = useRef<HTMLDivElement>(null);\n\n useDragToScroll({ targetRef: scrollContainerRef, ignoreClassName: 'th-divider' });\n\n // Configure row selection\n\n const enabledRowIds = rows.map((row) => row.id).filter((id) => !disabledRowIds?.includes(id));\n\n const { selectionEnabled, selectedRowIds, selectionColumn, setSelected } = useSelection({\n selectionMode,\n selectionState,\n enabledRowIds,\n });\n\n // Assign actions\n\n const actions = {\n setSelected: setSelected || emptyAction,\n setExpanded: setExpanded || emptyAction,\n };\n\n // Process columns\n\n const columnsWithSelection = [selectionColumn, ...initialColumns];\n const allColumns = selectionEnabled ? columnsWithSelection : initialColumns;\n\n const cellWidths = useCellWidths(tableRef, scrollContainerRef);\n const {\n visible,\n pinnedLeft,\n pinnedRight,\n setColumnWidth,\n columnWidths: calcColumnWidths,\n } = useColumns(allColumns, tableRef, onResizeColumns, columnWidths);\n const adjustedCellWidths =\n cellWidths.length === visible.length\n ? (visible.map((col, i) =>\n Number.isNaN(calcColumnWidths[col.id] || '') ? cellWidths[i] : calcColumnWidths[col.id],\n ) as number[])\n : cellWidths;\n\n // Generate styles\n const { scrollPosition } = useScrollPosition(scrollContainerRef);\n const tableCss = generateTableCss({\n pinnedLeft,\n pinnedRight,\n cellWidths: adjustedCellWidths,\n scrollPosition,\n columnWidths: calcColumnWidths,\n columns: visible,\n stripingMode,\n });\n\n // Render states\n\n if (loading) {\n const loadingRows: Array<TableRow> = new Array(loadingRowCount).fill(true).map(() => ({\n // generate random ID forcing all rows to re-render avoid animation de-sync\n id: Math.random() * 1000,\n data: null,\n }));\n\n return (\n <Wrapper borderMode={borderMode}>\n <ScrollContainer ref={scrollContainerRef}>\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n </thead>\n <tbody role=\"rowgroup\">\n {loadingRows.map((row) => (\n <Row key={row.id}>{visible.map((col) => renderLoadingCell(row, col))}</Row>\n ))}\n </tbody>\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n }\n\n if (rows.length === 0) {\n return (\n <Wrapper borderMode={borderMode}>\n <ScrollContainer ref={scrollContainerRef}>\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n </thead>\n <tbody role=\"rowgroup\">\n <EmptyBodyContent columnCount={visible.length}>\n <EmptyBodyGlyphWrapper>\n {/* Should be 48x48px */}\n {emptyState.iconSlot}\n </EmptyBodyGlyphWrapper>\n <Stack spacing=\"sm\" alignX=\"center\">\n <Text variant=\"headingMedium\">{emptyState.heading}</Text>\n {emptyState.subheading && (\n <Text variant=\"subheadingMedium\">{emptyState.subheading}</Text>\n )}\n </Stack>\n </EmptyBodyContent>\n </tbody>\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n }\n\n const renderRow = (row: TableRow) => {\n const { e2eClassName = '', accentColor } = row;\n const rowState = getRowState(row.id, { selectedRowIds, expandedRowIds, disabledRowIds });\n\n return (\n <Row role=\"row\" key={row.id} accentColor={accentColor} className={e2eClassName} {...rowState}>\n {visible.map((col) => renderCell(row, col, actions, rowState))}\n </Row>\n );\n };\n\n const renderNestedRow = (nestedRow: TableRow, rowId: TableRow['id']) => {\n const nestedRowE2eClassName = nestedRow?.data?.e2eClassNames?.row;\n const rowState = getRowState(rowId, { selectedRowIds, expandedRowIds, disabledRowIds });\n return (\n <Row role=\"row\" key={nestedRow.id} className={nestedRowE2eClassName}>\n {visible.map((col) => renderNestedCell(nestedRow, col, rowState))}\n </Row>\n );\n };\n\n const renderSection = (row: TableRow) => {\n const isExpanded = expandedRowIds?.includes(row.id);\n return (\n <tbody role=\"rowgroup\" key={row.id}>\n {renderRow(row)}\n {isExpanded && row.nestedRows?.map((nestedRow) => renderNestedRow(nestedRow, row.id))}\n </tbody>\n );\n };\n\n const renderBody = () => {\n const hasNestedRows = !!expandedRowIds;\n const hasMultipleSections = hasNestedRows && stripingMode === 'nested';\n\n if (hasMultipleSections) {\n return rows.map(renderSection);\n }\n\n if (hasNestedRows) {\n return (\n <tbody role=\"rowgroup\">\n {rows.map((row) => {\n const rowElement = renderRow(row);\n const isExpanded = expandedRowIds?.includes(row.id);\n const nestedRowElements =\n (isExpanded &&\n row.nestedRows?.map((nestedRow) => renderNestedRow(nestedRow, row.id))) ||\n [];\n return [rowElement, ...nestedRowElements];\n })}\n </tbody>\n );\n }\n\n return <tbody role=\"rowgroup\">{rows.map(renderRow)}</tbody>;\n };\n\n const headersMarkup = (\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n );\n\n const shouldRenderFooter = initialColumns.some((column) => !!column.renderFooter);\n const shouldRenderActionBar = selectedRowIds.length > 0 && !!actionBarSlot;\n\n return (\n <Wrapper borderMode={borderMode}>\n {shouldRenderActionBar && (\n <ActionBar\n selectionColumn={selectionColumn}\n intersectionTargetRef={intersectionTargetRef}\n containerRef={scrollContainerRef}\n >\n {actionBarSlot}\n </ActionBar>\n )}\n <ScrollContainer ref={scrollContainerRef}>\n {enableStickyHeader && (\n <StickyHead\n tableCss={tableCss}\n intersectionTargetRef={intersectionTargetRef}\n containerRef={scrollContainerRef}\n cellWidths={adjustedCellWidths}\n stickyHeaderTop={stickyHeaderTop}\n >\n {headersMarkup}\n </StickyHead>\n )}\n <div ref={intersectionTargetRef} style={{ height: 0 }} />\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">{headersMarkup}</thead>\n {renderBody()}\n {shouldRenderFooter && (\n <tfoot role=\"rowgroup\">\n <Row role=\"row\">{visible.map((column) => renderFooter({ column }))}</Row>\n </tfoot>\n )}\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n};\n\nDataTable.defaultProps = {\n loading: false,\n loadingRowCount: 5,\n selectionMode: 'multiple',\n stripingMode: 'row',\n enableStickyHeader: true,\n};\n\nDataTable.Cell = Cell;\nDataTable.ColumnMenu = ColumnMenu;\nDataTable.SelectionCell = SelectionCell;\nDataTable.SelectionHeader = SelectionHeader;\nDataTable.Header = Header;\nDataTable.Truncate = Truncate;\nDataTable.NoWrap = NoWrap;\n"],"names":["React","InfoIcon","useRef","useDragToScroll","useSelection","useCellWidths","useColumns","useScrollPosition","generateTableCss","Wrapper","ScrollContainer","TableGrid","Row","renderHeader","renderLoadingCell","EmptyBodyContent","EmptyBodyGlyphWrapper","Stack","Text","getRowState","renderCell","renderNestedCell","ActionBar","StickyHead","renderFooter","Cell","ColumnMenu","SelectionCell","SelectionHeader","Header","Truncate","NoWrap"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.cjs","sources":["../../../src/components/DataTable/DataTable.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-redundant-roles */\n\nimport React, { useRef } from 'react';\nimport { Stack } from '../Stack';\nimport { Text } from '../Text';\n\nimport { useDragToScroll } from '../../hooks';\n\nimport { generateTableCss } from './utils';\nimport { DataTableProps, CustomState, TableRow } from './types';\n\nimport { useCellWidths, useColumns, useScrollPosition, useSelection } from './hooks';\n\nimport {\n renderCell,\n renderFooter,\n renderHeader,\n renderLoadingCell,\n renderNestedCell,\n} from './renderers';\n\nimport { ActionBar } from './components/ActionBar';\nimport { Cell } from './components/Cell';\nimport { ColumnMenu } from './components/ColumnMenu';\nimport { EmptyBodyContent, EmptyBodyGlyphWrapper } from './components/EmptyBodyContent';\nimport { Header } from './components/Header';\nimport { NoWrap } from './components/NoWrap';\nimport { Row } from './components/Row';\nimport { ScrollContainer } from './components/ScrollContainer';\nimport { TableGrid } from './components/TableGrid';\nimport { Truncate } from './components/Truncate';\nimport { Wrapper } from './components/Wrapper';\nimport { SelectionCell } from './components/SelectionCell';\nimport { SelectionHeader } from './components/SelectionHeader';\nimport { StickyHead } from './components/StickyHead';\n\nimport { getRowState } from './utils/getRowState';\nimport { InfoIcon } from '../../icons';\n\nconst defaultEmptyState: CustomState = {\n iconSlot: <InfoIcon width={48} height={48} />,\n heading: 'No results',\n};\n\nconst emptyAction = () => {};\n\nexport const DataTable = ({\n actionBarSlot,\n borderMode,\n columns: initialColumns,\n emptyState = defaultEmptyState,\n expandedRowIds,\n loading,\n loadingRowCount,\n onChangeSort,\n rows,\n disabledRowIds,\n selectionMode,\n selectionState,\n setExpanded,\n sortState,\n stripingMode,\n enableStickyHeader,\n resizeableColumns,\n onResizeColumns,\n columnWidths,\n stickyHeaderTop,\n}: DataTableProps) => {\n // Refs\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const tableRef = useRef<HTMLTableElement>(null);\n const intersectionTargetRef = useRef<HTMLDivElement>(null);\n\n useDragToScroll({ targetRef: scrollContainerRef, ignoreClassName: 'th-divider' });\n\n // Configure row selection\n\n const enabledRowIds = rows.map((row) => row.id).filter((id) => !disabledRowIds?.includes(id));\n\n const { selectionEnabled, selectedRowIds, selectionColumn, setSelected } = useSelection({\n selectionMode,\n selectionState,\n enabledRowIds,\n });\n\n // Assign actions\n\n const actions = {\n setSelected: setSelected || emptyAction,\n setExpanded: setExpanded || emptyAction,\n };\n\n // Process columns\n\n const columnsWithSelection = [selectionColumn, ...initialColumns];\n const allColumns = selectionEnabled ? columnsWithSelection : initialColumns;\n\n const cellWidths = useCellWidths(tableRef, scrollContainerRef);\n const {\n visible,\n pinnedLeft,\n pinnedRight,\n setColumnWidth,\n columnWidths: calcColumnWidths,\n } = useColumns(allColumns, tableRef, onResizeColumns, columnWidths);\n const adjustedCellWidths =\n cellWidths.length === visible.length\n ? (visible.map((col, i) =>\n Number.isNaN(calcColumnWidths[col.id] || '') ? cellWidths[i] : calcColumnWidths[col.id],\n ) as number[])\n : cellWidths;\n\n // Generate styles\n const { scrollPosition } = useScrollPosition(scrollContainerRef);\n const tableCss = generateTableCss({\n pinnedLeft,\n pinnedRight,\n cellWidths: adjustedCellWidths,\n scrollPosition,\n columnWidths: calcColumnWidths,\n columns: visible,\n stripingMode,\n });\n\n // Render states\n\n if (loading) {\n const loadingRows: Array<TableRow> = new Array(loadingRowCount).fill(true).map(() => ({\n // generate random ID forcing all rows to re-render avoid animation de-sync\n id: Math.random() * 1000,\n data: null,\n }));\n\n return (\n <Wrapper borderMode={borderMode}>\n <ScrollContainer ref={scrollContainerRef}>\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n </thead>\n <tbody role=\"rowgroup\">\n {loadingRows.map((row) => (\n <Row key={row.id}>{visible.map((col) => renderLoadingCell(row, col))}</Row>\n ))}\n </tbody>\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n }\n\n if (rows.length === 0) {\n return (\n <Wrapper borderMode={borderMode}>\n <ScrollContainer ref={scrollContainerRef}>\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n </thead>\n <tbody role=\"rowgroup\">\n <EmptyBodyContent columnCount={visible.length}>\n <EmptyBodyGlyphWrapper>\n {/* Should be 48x48px */}\n {emptyState.iconSlot}\n </EmptyBodyGlyphWrapper>\n <Stack spacing=\"sm\" alignX=\"center\">\n <Text variant=\"headingMedium\">{emptyState.heading}</Text>\n {emptyState.subheading && (\n <Text variant=\"subheadingMedium\">{emptyState.subheading}</Text>\n )}\n </Stack>\n </EmptyBodyContent>\n </tbody>\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n }\n\n const renderRow = (row: TableRow) => {\n const { e2eClassName = '', accentColor } = row;\n const rowState = getRowState(row.id, { selectedRowIds, expandedRowIds, disabledRowIds });\n\n return (\n <Row role=\"row\" key={row.id} accentColor={accentColor} className={e2eClassName} {...rowState}>\n {visible.map((col) => renderCell(row, col, actions, rowState))}\n </Row>\n );\n };\n\n const renderNestedRow = (nestedRow: TableRow, rowId: TableRow['id']) => {\n const nestedRowE2eClassName = nestedRow?.data?.e2eClassNames?.row;\n const rowState = getRowState(rowId, { selectedRowIds, expandedRowIds, disabledRowIds });\n return (\n <Row role=\"row\" key={nestedRow.id} className={nestedRowE2eClassName}>\n {visible.map((col) => renderNestedCell(nestedRow, col, rowState))}\n </Row>\n );\n };\n\n const renderSection = (row: TableRow) => {\n const isExpanded = expandedRowIds?.includes(row.id);\n return (\n <tbody role=\"rowgroup\" key={row.id}>\n {renderRow(row)}\n {isExpanded && row.nestedRows?.map((nestedRow) => renderNestedRow(nestedRow, row.id))}\n </tbody>\n );\n };\n\n const renderBody = () => {\n const hasNestedRows = !!expandedRowIds;\n const hasMultipleSections = hasNestedRows && stripingMode === 'nested';\n\n if (hasMultipleSections) {\n return rows.map(renderSection);\n }\n\n if (hasNestedRows) {\n return (\n <tbody role=\"rowgroup\">\n {rows.map((row) => {\n const rowElement = renderRow(row);\n const isExpanded = expandedRowIds?.includes(row.id);\n const nestedRowElements =\n (isExpanded &&\n row.nestedRows?.map((nestedRow) => renderNestedRow(nestedRow, row.id))) ||\n [];\n return [rowElement, ...nestedRowElements];\n })}\n </tbody>\n );\n }\n\n return <tbody role=\"rowgroup\">{rows.map(renderRow)}</tbody>;\n };\n\n const headersMarkup = (\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n );\n\n const shouldRenderFooter = initialColumns.some((column) => !!column.renderFooter);\n const shouldRenderActionBar = selectedRowIds.length > 0 && !!actionBarSlot;\n\n return (\n <Wrapper borderMode={borderMode}>\n {shouldRenderActionBar && (\n <ActionBar\n selectionColumn={selectionColumn}\n intersectionTargetRef={intersectionTargetRef}\n containerRef={scrollContainerRef}\n >\n {actionBarSlot}\n </ActionBar>\n )}\n <ScrollContainer ref={scrollContainerRef}>\n {enableStickyHeader && (\n <StickyHead\n tableCss={tableCss}\n intersectionTargetRef={intersectionTargetRef}\n containerRef={scrollContainerRef}\n cellWidths={adjustedCellWidths}\n stickyHeaderTop={stickyHeaderTop}\n >\n {headersMarkup}\n </StickyHead>\n )}\n <div ref={intersectionTargetRef} style={{ height: 0 }} />\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">{headersMarkup}</thead>\n {renderBody()}\n {shouldRenderFooter && (\n <tfoot role=\"rowgroup\">\n <Row role=\"row\">{visible.map((column) => renderFooter({ column }))}</Row>\n </tfoot>\n )}\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n};\n\nDataTable.defaultProps = {\n loading: false,\n loadingRowCount: 5,\n selectionMode: 'multiple',\n stripingMode: 'row',\n enableStickyHeader: true,\n};\n\nDataTable.Cell = Cell;\nDataTable.ColumnMenu = ColumnMenu;\nDataTable.SelectionCell = SelectionCell;\nDataTable.SelectionHeader = SelectionHeader;\nDataTable.Header = Header;\nDataTable.Truncate = Truncate;\nDataTable.NoWrap = NoWrap;\n"],"names":["React","InfoIcon","useRef","useDragToScroll","useSelection","useCellWidths","useColumns","useScrollPosition","generateTableCss","Wrapper","ScrollContainer","TableGrid","Row","renderHeader","renderLoadingCell","EmptyBodyContent","EmptyBodyGlyphWrapper","Stack","Text","getRowState","renderCell","renderNestedCell","ActionBar","StickyHead","renderFooter","Cell","ColumnMenu","SelectionCell","SelectionHeader","Header","Truncate","NoWrap"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import React__default, { useRef } from 'react';
2
2
  import { Stack } from '../Stack/Stack.js';
3
- import '../Stack/types.js';
4
3
  import { Text } from '../Text/Text.js';
5
4
  import '../../hooks/useFocusVisible.js';
6
5
  import 'uid/secure';
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","sources":["../../../src/components/DataTable/DataTable.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-redundant-roles */\n\nimport React, { useRef } from 'react';\nimport { Stack } from '../Stack';\nimport { Text } from '../Text';\n\nimport { useDragToScroll } from '../../hooks';\n\nimport { generateTableCss } from './utils';\nimport { DataTableProps, CustomState, TableRow } from './types';\n\nimport { useCellWidths, useColumns, useScrollPosition, useSelection } from './hooks';\n\nimport {\n renderCell,\n renderFooter,\n renderHeader,\n renderLoadingCell,\n renderNestedCell,\n} from './renderers';\n\nimport { ActionBar } from './components/ActionBar';\nimport { Cell } from './components/Cell';\nimport { ColumnMenu } from './components/ColumnMenu';\nimport { EmptyBodyContent, EmptyBodyGlyphWrapper } from './components/EmptyBodyContent';\nimport { Header } from './components/Header';\nimport { NoWrap } from './components/NoWrap';\nimport { Row } from './components/Row';\nimport { ScrollContainer } from './components/ScrollContainer';\nimport { TableGrid } from './components/TableGrid';\nimport { Truncate } from './components/Truncate';\nimport { Wrapper } from './components/Wrapper';\nimport { SelectionCell } from './components/SelectionCell';\nimport { SelectionHeader } from './components/SelectionHeader';\nimport { StickyHead } from './components/StickyHead';\n\nimport { getRowState } from './utils/getRowState';\nimport { InfoIcon } from '../../icons';\n\nconst defaultEmptyState: CustomState = {\n iconSlot: <InfoIcon width={48} height={48} />,\n heading: 'No results',\n};\n\nconst emptyAction = () => {};\n\nexport const DataTable = ({\n actionBarSlot,\n borderMode,\n columns: initialColumns,\n emptyState = defaultEmptyState,\n expandedRowIds,\n loading,\n loadingRowCount,\n onChangeSort,\n rows,\n disabledRowIds,\n selectionMode,\n selectionState,\n setExpanded,\n sortState,\n stripingMode,\n enableStickyHeader,\n resizeableColumns,\n onResizeColumns,\n columnWidths,\n stickyHeaderTop,\n}: DataTableProps) => {\n // Refs\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const tableRef = useRef<HTMLTableElement>(null);\n const intersectionTargetRef = useRef<HTMLDivElement>(null);\n\n useDragToScroll({ targetRef: scrollContainerRef, ignoreClassName: 'th-divider' });\n\n // Configure row selection\n\n const enabledRowIds = rows.map((row) => row.id).filter((id) => !disabledRowIds?.includes(id));\n\n const { selectionEnabled, selectedRowIds, selectionColumn, setSelected } = useSelection({\n selectionMode,\n selectionState,\n enabledRowIds,\n });\n\n // Assign actions\n\n const actions = {\n setSelected: setSelected || emptyAction,\n setExpanded: setExpanded || emptyAction,\n };\n\n // Process columns\n\n const columnsWithSelection = [selectionColumn, ...initialColumns];\n const allColumns = selectionEnabled ? columnsWithSelection : initialColumns;\n\n const cellWidths = useCellWidths(tableRef, scrollContainerRef);\n const {\n visible,\n pinnedLeft,\n pinnedRight,\n setColumnWidth,\n columnWidths: calcColumnWidths,\n } = useColumns(allColumns, tableRef, onResizeColumns, columnWidths);\n const adjustedCellWidths =\n cellWidths.length === visible.length\n ? (visible.map((col, i) =>\n Number.isNaN(calcColumnWidths[col.id] || '') ? cellWidths[i] : calcColumnWidths[col.id],\n ) as number[])\n : cellWidths;\n\n // Generate styles\n const { scrollPosition } = useScrollPosition(scrollContainerRef);\n const tableCss = generateTableCss({\n pinnedLeft,\n pinnedRight,\n cellWidths: adjustedCellWidths,\n scrollPosition,\n columnWidths: calcColumnWidths,\n columns: visible,\n stripingMode,\n });\n\n // Render states\n\n if (loading) {\n const loadingRows: Array<TableRow> = new Array(loadingRowCount).fill(true).map(() => ({\n // generate random ID forcing all rows to re-render avoid animation de-sync\n id: Math.random() * 1000,\n data: null,\n }));\n\n return (\n <Wrapper borderMode={borderMode}>\n <ScrollContainer ref={scrollContainerRef}>\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n </thead>\n <tbody role=\"rowgroup\">\n {loadingRows.map((row) => (\n <Row key={row.id}>{visible.map((col) => renderLoadingCell(row, col))}</Row>\n ))}\n </tbody>\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n }\n\n if (rows.length === 0) {\n return (\n <Wrapper borderMode={borderMode}>\n <ScrollContainer ref={scrollContainerRef}>\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n </thead>\n <tbody role=\"rowgroup\">\n <EmptyBodyContent columnCount={visible.length}>\n <EmptyBodyGlyphWrapper>\n {/* Should be 48x48px */}\n {emptyState.iconSlot}\n </EmptyBodyGlyphWrapper>\n <Stack spacing=\"sm\" alignX=\"center\">\n <Text variant=\"headingMedium\">{emptyState.heading}</Text>\n {emptyState.subheading && (\n <Text variant=\"subheadingMedium\">{emptyState.subheading}</Text>\n )}\n </Stack>\n </EmptyBodyContent>\n </tbody>\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n }\n\n const renderRow = (row: TableRow) => {\n const { e2eClassName = '', accentColor } = row;\n const rowState = getRowState(row.id, { selectedRowIds, expandedRowIds, disabledRowIds });\n\n return (\n <Row role=\"row\" key={row.id} accentColor={accentColor} className={e2eClassName} {...rowState}>\n {visible.map((col) => renderCell(row, col, actions, rowState))}\n </Row>\n );\n };\n\n const renderNestedRow = (nestedRow: TableRow, rowId: TableRow['id']) => {\n const nestedRowE2eClassName = nestedRow?.data?.e2eClassNames?.row;\n const rowState = getRowState(rowId, { selectedRowIds, expandedRowIds, disabledRowIds });\n return (\n <Row role=\"row\" key={nestedRow.id} className={nestedRowE2eClassName}>\n {visible.map((col) => renderNestedCell(nestedRow, col, rowState))}\n </Row>\n );\n };\n\n const renderSection = (row: TableRow) => {\n const isExpanded = expandedRowIds?.includes(row.id);\n return (\n <tbody role=\"rowgroup\" key={row.id}>\n {renderRow(row)}\n {isExpanded && row.nestedRows?.map((nestedRow) => renderNestedRow(nestedRow, row.id))}\n </tbody>\n );\n };\n\n const renderBody = () => {\n const hasNestedRows = !!expandedRowIds;\n const hasMultipleSections = hasNestedRows && stripingMode === 'nested';\n\n if (hasMultipleSections) {\n return rows.map(renderSection);\n }\n\n if (hasNestedRows) {\n return (\n <tbody role=\"rowgroup\">\n {rows.map((row) => {\n const rowElement = renderRow(row);\n const isExpanded = expandedRowIds?.includes(row.id);\n const nestedRowElements =\n (isExpanded &&\n row.nestedRows?.map((nestedRow) => renderNestedRow(nestedRow, row.id))) ||\n [];\n return [rowElement, ...nestedRowElements];\n })}\n </tbody>\n );\n }\n\n return <tbody role=\"rowgroup\">{rows.map(renderRow)}</tbody>;\n };\n\n const headersMarkup = (\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n );\n\n const shouldRenderFooter = initialColumns.some((column) => !!column.renderFooter);\n const shouldRenderActionBar = selectedRowIds.length > 0 && !!actionBarSlot;\n\n return (\n <Wrapper borderMode={borderMode}>\n {shouldRenderActionBar && (\n <ActionBar\n selectionColumn={selectionColumn}\n intersectionTargetRef={intersectionTargetRef}\n containerRef={scrollContainerRef}\n >\n {actionBarSlot}\n </ActionBar>\n )}\n <ScrollContainer ref={scrollContainerRef}>\n {enableStickyHeader && (\n <StickyHead\n tableCss={tableCss}\n intersectionTargetRef={intersectionTargetRef}\n containerRef={scrollContainerRef}\n cellWidths={adjustedCellWidths}\n stickyHeaderTop={stickyHeaderTop}\n >\n {headersMarkup}\n </StickyHead>\n )}\n <div ref={intersectionTargetRef} style={{ height: 0 }} />\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">{headersMarkup}</thead>\n {renderBody()}\n {shouldRenderFooter && (\n <tfoot role=\"rowgroup\">\n <Row role=\"row\">{visible.map((column) => renderFooter({ column }))}</Row>\n </tfoot>\n )}\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n};\n\nDataTable.defaultProps = {\n loading: false,\n loadingRowCount: 5,\n selectionMode: 'multiple',\n stripingMode: 'row',\n enableStickyHeader: true,\n};\n\nDataTable.Cell = Cell;\nDataTable.ColumnMenu = ColumnMenu;\nDataTable.SelectionCell = SelectionCell;\nDataTable.SelectionHeader = SelectionHeader;\nDataTable.Header = Header;\nDataTable.Truncate = Truncate;\nDataTable.NoWrap = NoWrap;\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","sources":["../../../src/components/DataTable/DataTable.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-redundant-roles */\n\nimport React, { useRef } from 'react';\nimport { Stack } from '../Stack';\nimport { Text } from '../Text';\n\nimport { useDragToScroll } from '../../hooks';\n\nimport { generateTableCss } from './utils';\nimport { DataTableProps, CustomState, TableRow } from './types';\n\nimport { useCellWidths, useColumns, useScrollPosition, useSelection } from './hooks';\n\nimport {\n renderCell,\n renderFooter,\n renderHeader,\n renderLoadingCell,\n renderNestedCell,\n} from './renderers';\n\nimport { ActionBar } from './components/ActionBar';\nimport { Cell } from './components/Cell';\nimport { ColumnMenu } from './components/ColumnMenu';\nimport { EmptyBodyContent, EmptyBodyGlyphWrapper } from './components/EmptyBodyContent';\nimport { Header } from './components/Header';\nimport { NoWrap } from './components/NoWrap';\nimport { Row } from './components/Row';\nimport { ScrollContainer } from './components/ScrollContainer';\nimport { TableGrid } from './components/TableGrid';\nimport { Truncate } from './components/Truncate';\nimport { Wrapper } from './components/Wrapper';\nimport { SelectionCell } from './components/SelectionCell';\nimport { SelectionHeader } from './components/SelectionHeader';\nimport { StickyHead } from './components/StickyHead';\n\nimport { getRowState } from './utils/getRowState';\nimport { InfoIcon } from '../../icons';\n\nconst defaultEmptyState: CustomState = {\n iconSlot: <InfoIcon width={48} height={48} />,\n heading: 'No results',\n};\n\nconst emptyAction = () => {};\n\nexport const DataTable = ({\n actionBarSlot,\n borderMode,\n columns: initialColumns,\n emptyState = defaultEmptyState,\n expandedRowIds,\n loading,\n loadingRowCount,\n onChangeSort,\n rows,\n disabledRowIds,\n selectionMode,\n selectionState,\n setExpanded,\n sortState,\n stripingMode,\n enableStickyHeader,\n resizeableColumns,\n onResizeColumns,\n columnWidths,\n stickyHeaderTop,\n}: DataTableProps) => {\n // Refs\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const tableRef = useRef<HTMLTableElement>(null);\n const intersectionTargetRef = useRef<HTMLDivElement>(null);\n\n useDragToScroll({ targetRef: scrollContainerRef, ignoreClassName: 'th-divider' });\n\n // Configure row selection\n\n const enabledRowIds = rows.map((row) => row.id).filter((id) => !disabledRowIds?.includes(id));\n\n const { selectionEnabled, selectedRowIds, selectionColumn, setSelected } = useSelection({\n selectionMode,\n selectionState,\n enabledRowIds,\n });\n\n // Assign actions\n\n const actions = {\n setSelected: setSelected || emptyAction,\n setExpanded: setExpanded || emptyAction,\n };\n\n // Process columns\n\n const columnsWithSelection = [selectionColumn, ...initialColumns];\n const allColumns = selectionEnabled ? columnsWithSelection : initialColumns;\n\n const cellWidths = useCellWidths(tableRef, scrollContainerRef);\n const {\n visible,\n pinnedLeft,\n pinnedRight,\n setColumnWidth,\n columnWidths: calcColumnWidths,\n } = useColumns(allColumns, tableRef, onResizeColumns, columnWidths);\n const adjustedCellWidths =\n cellWidths.length === visible.length\n ? (visible.map((col, i) =>\n Number.isNaN(calcColumnWidths[col.id] || '') ? cellWidths[i] : calcColumnWidths[col.id],\n ) as number[])\n : cellWidths;\n\n // Generate styles\n const { scrollPosition } = useScrollPosition(scrollContainerRef);\n const tableCss = generateTableCss({\n pinnedLeft,\n pinnedRight,\n cellWidths: adjustedCellWidths,\n scrollPosition,\n columnWidths: calcColumnWidths,\n columns: visible,\n stripingMode,\n });\n\n // Render states\n\n if (loading) {\n const loadingRows: Array<TableRow> = new Array(loadingRowCount).fill(true).map(() => ({\n // generate random ID forcing all rows to re-render avoid animation de-sync\n id: Math.random() * 1000,\n data: null,\n }));\n\n return (\n <Wrapper borderMode={borderMode}>\n <ScrollContainer ref={scrollContainerRef}>\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n </thead>\n <tbody role=\"rowgroup\">\n {loadingRows.map((row) => (\n <Row key={row.id}>{visible.map((col) => renderLoadingCell(row, col))}</Row>\n ))}\n </tbody>\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n }\n\n if (rows.length === 0) {\n return (\n <Wrapper borderMode={borderMode}>\n <ScrollContainer ref={scrollContainerRef}>\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n </thead>\n <tbody role=\"rowgroup\">\n <EmptyBodyContent columnCount={visible.length}>\n <EmptyBodyGlyphWrapper>\n {/* Should be 48x48px */}\n {emptyState.iconSlot}\n </EmptyBodyGlyphWrapper>\n <Stack spacing=\"sm\" alignX=\"center\">\n <Text variant=\"headingMedium\">{emptyState.heading}</Text>\n {emptyState.subheading && (\n <Text variant=\"subheadingMedium\">{emptyState.subheading}</Text>\n )}\n </Stack>\n </EmptyBodyContent>\n </tbody>\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n }\n\n const renderRow = (row: TableRow) => {\n const { e2eClassName = '', accentColor } = row;\n const rowState = getRowState(row.id, { selectedRowIds, expandedRowIds, disabledRowIds });\n\n return (\n <Row role=\"row\" key={row.id} accentColor={accentColor} className={e2eClassName} {...rowState}>\n {visible.map((col) => renderCell(row, col, actions, rowState))}\n </Row>\n );\n };\n\n const renderNestedRow = (nestedRow: TableRow, rowId: TableRow['id']) => {\n const nestedRowE2eClassName = nestedRow?.data?.e2eClassNames?.row;\n const rowState = getRowState(rowId, { selectedRowIds, expandedRowIds, disabledRowIds });\n return (\n <Row role=\"row\" key={nestedRow.id} className={nestedRowE2eClassName}>\n {visible.map((col) => renderNestedCell(nestedRow, col, rowState))}\n </Row>\n );\n };\n\n const renderSection = (row: TableRow) => {\n const isExpanded = expandedRowIds?.includes(row.id);\n return (\n <tbody role=\"rowgroup\" key={row.id}>\n {renderRow(row)}\n {isExpanded && row.nestedRows?.map((nestedRow) => renderNestedRow(nestedRow, row.id))}\n </tbody>\n );\n };\n\n const renderBody = () => {\n const hasNestedRows = !!expandedRowIds;\n const hasMultipleSections = hasNestedRows && stripingMode === 'nested';\n\n if (hasMultipleSections) {\n return rows.map(renderSection);\n }\n\n if (hasNestedRows) {\n return (\n <tbody role=\"rowgroup\">\n {rows.map((row) => {\n const rowElement = renderRow(row);\n const isExpanded = expandedRowIds?.includes(row.id);\n const nestedRowElements =\n (isExpanded &&\n row.nestedRows?.map((nestedRow) => renderNestedRow(nestedRow, row.id))) ||\n [];\n return [rowElement, ...nestedRowElements];\n })}\n </tbody>\n );\n }\n\n return <tbody role=\"rowgroup\">{rows.map(renderRow)}</tbody>;\n };\n\n const headersMarkup = (\n <Row role=\"row\">\n {visible.map((column, i) =>\n renderHeader({\n column,\n sortState,\n onChangeSort,\n resizeableColumns,\n setColumnWidth,\n columnCount: visible.length,\n columnI: i,\n }),\n )}\n </Row>\n );\n\n const shouldRenderFooter = initialColumns.some((column) => !!column.renderFooter);\n const shouldRenderActionBar = selectedRowIds.length > 0 && !!actionBarSlot;\n\n return (\n <Wrapper borderMode={borderMode}>\n {shouldRenderActionBar && (\n <ActionBar\n selectionColumn={selectionColumn}\n intersectionTargetRef={intersectionTargetRef}\n containerRef={scrollContainerRef}\n >\n {actionBarSlot}\n </ActionBar>\n )}\n <ScrollContainer ref={scrollContainerRef}>\n {enableStickyHeader && (\n <StickyHead\n tableCss={tableCss}\n intersectionTargetRef={intersectionTargetRef}\n containerRef={scrollContainerRef}\n cellWidths={adjustedCellWidths}\n stickyHeaderTop={stickyHeaderTop}\n >\n {headersMarkup}\n </StickyHead>\n )}\n <div ref={intersectionTargetRef} style={{ height: 0 }} />\n <TableGrid css={tableCss} ref={tableRef} role=\"table\">\n <thead role=\"rowgroup\">{headersMarkup}</thead>\n {renderBody()}\n {shouldRenderFooter && (\n <tfoot role=\"rowgroup\">\n <Row role=\"row\">{visible.map((column) => renderFooter({ column }))}</Row>\n </tfoot>\n )}\n </TableGrid>\n </ScrollContainer>\n </Wrapper>\n );\n};\n\nDataTable.defaultProps = {\n loading: false,\n loadingRowCount: 5,\n selectionMode: 'multiple',\n stripingMode: 'row',\n enableStickyHeader: true,\n};\n\nDataTable.Cell = Cell;\nDataTable.ColumnMenu = ColumnMenu;\nDataTable.SelectionCell = SelectionCell;\nDataTable.SelectionHeader = SelectionHeader;\nDataTable.Header = Header;\nDataTable.Truncate = Truncate;\nDataTable.NoWrap = NoWrap;\n"],"names":["React"],"mappings":"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"}
@@ -5,7 +5,6 @@ var Button = require('../../Button/Button.cjs');
5
5
  var Card = require('../../Card/Card.cjs');
6
6
  var Popover = require('../../Popover/Popover.cjs');
7
7
  var Stack = require('../../Stack/Stack.cjs');
8
- require('../../Stack/types.cjs');
9
8
  var index = require('../../../theme/index.cjs');
10
9
  var ReorderIcon = require('../../../icons/design-system/components/ReorderIcon.cjs');
11
10
  var VisibilityIcon = require('../../../icons/design-system/components/VisibilityIcon.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnMenu.cjs","sources":["../../../../src/components/DataTable/components/ColumnMenu.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Button } from '../../Button';\nimport { Card } from '../../Card';\nimport { Popover } from '../../Popover';\nimport { Stack } from '../../Stack';\nimport { theme } from '../../../theme';\nimport { ColumnConfig, ColumnConfigs, ColumnId } from '../types';\n\nimport { VisibilityIcon, VisibilityOffIcon, ReorderIcon } from '../../../icons';\n\ntype ColumnsMap = {\n [index: string]: ColumnConfig;\n};\n\nexport interface ColumnMenuProps {\n columns: ColumnConfigs;\n columnGroups: ColumnId[][];\n setColumns: (columns: ColumnConfigs) => void;\n}\n\nexport function ColumnMenu({ columns, columnGroups, setColumns }: ColumnMenuProps) {\n const [popoverAnchor, setPopoverAnchor] = useState<HTMLButtonElement | null>(null);\n const [showPopover, setShowPopover] = useState(false);\n\n const columnEntries = columns.map((column) => [column.id, column]);\n const columnsMap: ColumnsMap = Object.fromEntries(columnEntries);\n const groups = columnGroups.map((group) => group.map((columnId) => columnsMap[columnId]));\n\n const setHidden = (groupIndex: number, hidden: boolean) => {\n const columnIds = groups[groupIndex].map((column) => column.id);\n const newColumns = [...columns];\n columnIds.forEach((columnId) => {\n const index = newColumns.findIndex((column) => column.id === columnId);\n if (index < 0) return;\n newColumns[index] = {\n ...newColumns[index],\n hidden,\n };\n });\n setColumns(newColumns);\n };\n\n return (\n <>\n <Button ref={setPopoverAnchor} dropdown onClick={() => setShowPopover(true)}>\n Columns\n </Button>\n {showPopover && (\n <Popover anchorElement={popoverAnchor} onShouldClose={() => setShowPopover(false)}>\n <Card style={{ width: 600 }}>\n <Stack alignX=\"stretch\" spacing=\"sm\">\n {groups.map((group, groupIndex) => (\n <Stack\n key={group[0].id}\n direction=\"horizontal\"\n alignY=\"center\"\n spacing=\"sm\"\n style={{\n border: '1px solid black',\n padding: 8,\n }}\n >\n <Button variant=\"flat\" iconSlot={<ReorderIcon />} />\n <Stack spacing=\"sm\" style={{ flex: 1 }}>\n {group.map((column) => (\n <div key={column.id}>{column.title}</div>\n ))}\n </Stack>\n <Stack direction=\"horizontal\" spacing=\"sm\">\n {group[0].hidden ? (\n <Button\n variant=\"flat\"\n iconSlot={<VisibilityOffIcon />}\n onClick={() => setHidden(groupIndex, false)}\n style={{ color: theme.colors.neutral.ink.lightest }}\n />\n ) : (\n <Button\n variant=\"flat\"\n iconSlot={<VisibilityIcon />}\n onClick={() => setHidden(groupIndex, true)}\n />\n )}\n </Stack>\n </Stack>\n ))}\n </Stack>\n </Card>\n </Popover>\n )}\n </>\n );\n}\n"],"names":["useState","React","Button","Popover","Card","Stack","ReorderIcon","VisibilityOffIcon","theme","VisibilityIcon"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnMenu.cjs","sources":["../../../../src/components/DataTable/components/ColumnMenu.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Button } from '../../Button';\nimport { Card } from '../../Card';\nimport { Popover } from '../../Popover';\nimport { Stack } from '../../Stack';\nimport { theme } from '../../../theme';\nimport { ColumnConfig, ColumnConfigs, ColumnId } from '../types';\n\nimport { VisibilityIcon, VisibilityOffIcon, ReorderIcon } from '../../../icons';\n\ntype ColumnsMap = {\n [index: string]: ColumnConfig;\n};\n\nexport interface ColumnMenuProps {\n columns: ColumnConfigs;\n columnGroups: ColumnId[][];\n setColumns: (columns: ColumnConfigs) => void;\n}\n\nexport function ColumnMenu({ columns, columnGroups, setColumns }: ColumnMenuProps) {\n const [popoverAnchor, setPopoverAnchor] = useState<HTMLButtonElement | null>(null);\n const [showPopover, setShowPopover] = useState(false);\n\n const columnEntries = columns.map((column) => [column.id, column]);\n const columnsMap: ColumnsMap = Object.fromEntries(columnEntries);\n const groups = columnGroups.map((group) => group.map((columnId) => columnsMap[columnId]));\n\n const setHidden = (groupIndex: number, hidden: boolean) => {\n const columnIds = groups[groupIndex].map((column) => column.id);\n const newColumns = [...columns];\n columnIds.forEach((columnId) => {\n const index = newColumns.findIndex((column) => column.id === columnId);\n if (index < 0) return;\n newColumns[index] = {\n ...newColumns[index],\n hidden,\n };\n });\n setColumns(newColumns);\n };\n\n return (\n <>\n <Button ref={setPopoverAnchor} dropdown onClick={() => setShowPopover(true)}>\n Columns\n </Button>\n {showPopover && (\n <Popover anchorElement={popoverAnchor} onShouldClose={() => setShowPopover(false)}>\n <Card style={{ width: 600 }}>\n <Stack alignX=\"stretch\" spacing=\"sm\">\n {groups.map((group, groupIndex) => (\n <Stack\n key={group[0].id}\n direction=\"horizontal\"\n alignY=\"center\"\n spacing=\"sm\"\n style={{\n border: '1px solid black',\n padding: 8,\n }}\n >\n <Button variant=\"flat\" iconSlot={<ReorderIcon />} />\n <Stack spacing=\"sm\" style={{ flex: 1 }}>\n {group.map((column) => (\n <div key={column.id}>{column.title}</div>\n ))}\n </Stack>\n <Stack direction=\"horizontal\" spacing=\"sm\">\n {group[0].hidden ? (\n <Button\n variant=\"flat\"\n iconSlot={<VisibilityOffIcon />}\n onClick={() => setHidden(groupIndex, false)}\n style={{ color: theme.colors.neutral.ink.lightest }}\n />\n ) : (\n <Button\n variant=\"flat\"\n iconSlot={<VisibilityIcon />}\n onClick={() => setHidden(groupIndex, true)}\n />\n )}\n </Stack>\n </Stack>\n ))}\n </Stack>\n </Card>\n </Popover>\n )}\n </>\n );\n}\n"],"names":["useState","React","Button","Popover","Card","Stack","ReorderIcon","VisibilityOffIcon","theme","VisibilityIcon"],"mappings":"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"}
@@ -3,7 +3,6 @@ import { Button } from '../../Button/Button.js';
3
3
  import { Card } from '../../Card/Card.js';
4
4
  import { Popover } from '../../Popover/Popover.js';
5
5
  import { Stack } from '../../Stack/Stack.js';
6
- import '../../Stack/types.js';
7
6
  import { theme } from '../../../theme/index.js';
8
7
  import { ReactComponent as ReorderIcon } from '../../../icons/design-system/components/ReorderIcon.js';
9
8
  import { ReactComponent as VisibilityIcon } from '../../../icons/design-system/components/VisibilityIcon.js';
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnMenu.js","sources":["../../../../src/components/DataTable/components/ColumnMenu.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Button } from '../../Button';\nimport { Card } from '../../Card';\nimport { Popover } from '../../Popover';\nimport { Stack } from '../../Stack';\nimport { theme } from '../../../theme';\nimport { ColumnConfig, ColumnConfigs, ColumnId } from '../types';\n\nimport { VisibilityIcon, VisibilityOffIcon, ReorderIcon } from '../../../icons';\n\ntype ColumnsMap = {\n [index: string]: ColumnConfig;\n};\n\nexport interface ColumnMenuProps {\n columns: ColumnConfigs;\n columnGroups: ColumnId[][];\n setColumns: (columns: ColumnConfigs) => void;\n}\n\nexport function ColumnMenu({ columns, columnGroups, setColumns }: ColumnMenuProps) {\n const [popoverAnchor, setPopoverAnchor] = useState<HTMLButtonElement | null>(null);\n const [showPopover, setShowPopover] = useState(false);\n\n const columnEntries = columns.map((column) => [column.id, column]);\n const columnsMap: ColumnsMap = Object.fromEntries(columnEntries);\n const groups = columnGroups.map((group) => group.map((columnId) => columnsMap[columnId]));\n\n const setHidden = (groupIndex: number, hidden: boolean) => {\n const columnIds = groups[groupIndex].map((column) => column.id);\n const newColumns = [...columns];\n columnIds.forEach((columnId) => {\n const index = newColumns.findIndex((column) => column.id === columnId);\n if (index < 0) return;\n newColumns[index] = {\n ...newColumns[index],\n hidden,\n };\n });\n setColumns(newColumns);\n };\n\n return (\n <>\n <Button ref={setPopoverAnchor} dropdown onClick={() => setShowPopover(true)}>\n Columns\n </Button>\n {showPopover && (\n <Popover anchorElement={popoverAnchor} onShouldClose={() => setShowPopover(false)}>\n <Card style={{ width: 600 }}>\n <Stack alignX=\"stretch\" spacing=\"sm\">\n {groups.map((group, groupIndex) => (\n <Stack\n key={group[0].id}\n direction=\"horizontal\"\n alignY=\"center\"\n spacing=\"sm\"\n style={{\n border: '1px solid black',\n padding: 8,\n }}\n >\n <Button variant=\"flat\" iconSlot={<ReorderIcon />} />\n <Stack spacing=\"sm\" style={{ flex: 1 }}>\n {group.map((column) => (\n <div key={column.id}>{column.title}</div>\n ))}\n </Stack>\n <Stack direction=\"horizontal\" spacing=\"sm\">\n {group[0].hidden ? (\n <Button\n variant=\"flat\"\n iconSlot={<VisibilityOffIcon />}\n onClick={() => setHidden(groupIndex, false)}\n style={{ color: theme.colors.neutral.ink.lightest }}\n />\n ) : (\n <Button\n variant=\"flat\"\n iconSlot={<VisibilityIcon />}\n onClick={() => setHidden(groupIndex, true)}\n />\n )}\n </Stack>\n </Stack>\n ))}\n </Stack>\n </Card>\n </Popover>\n )}\n </>\n );\n}\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnMenu.js","sources":["../../../../src/components/DataTable/components/ColumnMenu.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Button } from '../../Button';\nimport { Card } from '../../Card';\nimport { Popover } from '../../Popover';\nimport { Stack } from '../../Stack';\nimport { theme } from '../../../theme';\nimport { ColumnConfig, ColumnConfigs, ColumnId } from '../types';\n\nimport { VisibilityIcon, VisibilityOffIcon, ReorderIcon } from '../../../icons';\n\ntype ColumnsMap = {\n [index: string]: ColumnConfig;\n};\n\nexport interface ColumnMenuProps {\n columns: ColumnConfigs;\n columnGroups: ColumnId[][];\n setColumns: (columns: ColumnConfigs) => void;\n}\n\nexport function ColumnMenu({ columns, columnGroups, setColumns }: ColumnMenuProps) {\n const [popoverAnchor, setPopoverAnchor] = useState<HTMLButtonElement | null>(null);\n const [showPopover, setShowPopover] = useState(false);\n\n const columnEntries = columns.map((column) => [column.id, column]);\n const columnsMap: ColumnsMap = Object.fromEntries(columnEntries);\n const groups = columnGroups.map((group) => group.map((columnId) => columnsMap[columnId]));\n\n const setHidden = (groupIndex: number, hidden: boolean) => {\n const columnIds = groups[groupIndex].map((column) => column.id);\n const newColumns = [...columns];\n columnIds.forEach((columnId) => {\n const index = newColumns.findIndex((column) => column.id === columnId);\n if (index < 0) return;\n newColumns[index] = {\n ...newColumns[index],\n hidden,\n };\n });\n setColumns(newColumns);\n };\n\n return (\n <>\n <Button ref={setPopoverAnchor} dropdown onClick={() => setShowPopover(true)}>\n Columns\n </Button>\n {showPopover && (\n <Popover anchorElement={popoverAnchor} onShouldClose={() => setShowPopover(false)}>\n <Card style={{ width: 600 }}>\n <Stack alignX=\"stretch\" spacing=\"sm\">\n {groups.map((group, groupIndex) => (\n <Stack\n key={group[0].id}\n direction=\"horizontal\"\n alignY=\"center\"\n spacing=\"sm\"\n style={{\n border: '1px solid black',\n padding: 8,\n }}\n >\n <Button variant=\"flat\" iconSlot={<ReorderIcon />} />\n <Stack spacing=\"sm\" style={{ flex: 1 }}>\n {group.map((column) => (\n <div key={column.id}>{column.title}</div>\n ))}\n </Stack>\n <Stack direction=\"horizontal\" spacing=\"sm\">\n {group[0].hidden ? (\n <Button\n variant=\"flat\"\n iconSlot={<VisibilityOffIcon />}\n onClick={() => setHidden(groupIndex, false)}\n style={{ color: theme.colors.neutral.ink.lightest }}\n />\n ) : (\n <Button\n variant=\"flat\"\n iconSlot={<VisibilityIcon />}\n onClick={() => setHidden(groupIndex, true)}\n />\n )}\n </Stack>\n </Stack>\n ))}\n </Stack>\n </Card>\n </Popover>\n )}\n </>\n );\n}\n"],"names":["React"],"mappings":"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"}
@@ -10,12 +10,21 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
10
10
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
11
11
 
12
12
  function SelectionCell({ selected, rowId, onChange, selectionMode, disabled, ...cellProps }) {
13
+ const shiftKeyRef = React.useRef(false);
14
+ // Detect shift on click OR space checks
15
+ const handleInteraction = React.useCallback((e) => {
16
+ shiftKeyRef.current = e.shiftKey;
17
+ }, []);
18
+ const handleChange = React.useCallback((checked) => {
19
+ onChange(checked, rowId, shiftKeyRef.current ? { shiftKey: true } : undefined);
20
+ shiftKeyRef.current = false;
21
+ }, [onChange, rowId]);
13
22
  if (selectionMode === 'single') {
14
23
  return (React__default.default.createElement(Cell.Cell, { ...cellProps },
15
24
  React__default.default.createElement(Radio.Radio, { value: rowId, checked: selected, disabled: disabled, onChange: onChange })));
16
25
  }
17
- return (React__default.default.createElement(Cell.Cell, { ...cellProps },
18
- React__default.default.createElement(Checkbox.Checkbox, { value: rowId, checked: selected, disabled: disabled, onChange: onChange })));
26
+ return (React__default.default.createElement(Cell.Cell, { ...cellProps, onMouseDown: handleInteraction, onKeyDown: handleInteraction },
27
+ React__default.default.createElement(Checkbox.Checkbox, { value: rowId, checked: selected, disabled: disabled, onChange: handleChange })));
19
28
  }
20
29
 
21
30
  exports.SelectionCell = SelectionCell;
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionCell.cjs","sources":["../../../../src/components/DataTable/components/SelectionCell.tsx"],"sourcesContent":["import React from 'react';\nimport { Checkbox } from '../../Checkbox';\nimport { Radio } from '../../Radio';\nimport { Cell, CellProps } from './Cell';\nimport { RowId, SelectionMode } from '../types';\n\nexport interface SelectionCellProps extends CellProps {\n rowId: RowId;\n selected: boolean;\n onChange: (selected: boolean, value: RowId | undefined) => void;\n selectionMode: SelectionMode;\n disabled: boolean;\n}\n\nexport function SelectionCell({\n selected,\n rowId,\n onChange,\n selectionMode,\n disabled,\n ...cellProps\n}: SelectionCellProps) {\n if (selectionMode === 'single') {\n return (\n <Cell {...cellProps}>\n <Radio value={rowId} checked={selected} disabled={disabled} onChange={onChange} />\n </Cell>\n );\n }\n\n return (\n <Cell {...cellProps}>\n <Checkbox value={rowId} checked={selected} disabled={disabled} onChange={onChange} />\n </Cell>\n );\n}\n"],"names":["React","Cell","Radio","Checkbox"],"mappings":";;;;;;;;;;;SAcgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,GAAG,SAAS,EACO,EAAA;IACnB,IAAI,aAAa,KAAK,QAAQ,EAAE;AAC9B,QAAA,QACEA,sBAAA,CAAA,aAAA,CAACC,SAAI,EAAA,EAAA,GAAK,SAAS,EAAA;YACjBD,sBAAC,CAAA,aAAA,CAAAE,WAAK,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAI,CAAA,CAC7E;AAEV;AAED,IAAA,QACEF,sBAAA,CAAA,aAAA,CAACC,SAAI,EAAA,EAAA,GAAK,SAAS,EAAA;QACjBD,sBAAC,CAAA,aAAA,CAAAG,iBAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAI,CAAA,CAChF;AAEX;;;;"}
1
+ {"version":3,"file":"SelectionCell.cjs","sources":["../../../../src/components/DataTable/components/SelectionCell.tsx"],"sourcesContent":["import React, { useRef, useCallback } from 'react';\nimport { Checkbox } from '../../Checkbox';\nimport { Radio } from '../../Radio';\nimport { Cell, CellProps } from './Cell';\nimport { RowId, SelectionMode, SetSelectedAction } from '../types';\n\nexport interface SelectionCellProps extends CellProps {\n rowId: RowId;\n selected: boolean;\n onChange: SetSelectedAction;\n selectionMode: SelectionMode;\n disabled: boolean;\n}\n\nexport function SelectionCell({\n selected,\n rowId,\n onChange,\n selectionMode,\n disabled,\n ...cellProps\n}: SelectionCellProps) {\n const shiftKeyRef = useRef(false);\n\n // Detect shift on click OR space checks\n const handleInteraction = useCallback((e: React.MouseEvent | React.KeyboardEvent) => {\n shiftKeyRef.current = e.shiftKey;\n }, []);\n\n const handleChange = useCallback(\n (checked: boolean) => {\n onChange(checked, rowId, shiftKeyRef.current ? { shiftKey: true } : undefined);\n shiftKeyRef.current = false;\n },\n [onChange, rowId],\n );\n\n if (selectionMode === 'single') {\n return (\n <Cell {...cellProps}>\n <Radio value={rowId} checked={selected} disabled={disabled} onChange={onChange} />\n </Cell>\n );\n }\n\n return (\n <Cell {...cellProps} onMouseDown={handleInteraction} onKeyDown={handleInteraction}>\n <Checkbox value={rowId} checked={selected} disabled={disabled} onChange={handleChange} />\n </Cell>\n );\n}\n"],"names":["useRef","useCallback","React","Cell","Radio","Checkbox"],"mappings":";;;;;;;;;;;SAcgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,GAAG,SAAS,EACO,EAAA;AACnB,IAAA,MAAM,WAAW,GAAGA,YAAM,CAAC,KAAK,CAAC;;AAGjC,IAAA,MAAM,iBAAiB,GAAGC,iBAAW,CAAC,CAAC,CAAyC,KAAI;AAClF,QAAA,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ;KACjC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,YAAY,GAAGA,iBAAW,CAC9B,CAAC,OAAgB,KAAI;QACnB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;AAC9E,QAAA,WAAW,CAAC,OAAO,GAAG,KAAK;AAC7B,KAAC,EACD,CAAC,QAAQ,EAAE,KAAK,CAAC,CAClB;IAED,IAAI,aAAa,KAAK,QAAQ,EAAE;AAC9B,QAAA,QACEC,sBAAA,CAAA,aAAA,CAACC,SAAI,EAAA,EAAA,GAAK,SAAS,EAAA;YACjBD,sBAAC,CAAA,aAAA,CAAAE,WAAK,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAI,CAAA,CAC7E;AAEV;AAED,IAAA,QACEF,sBAAA,CAAA,aAAA,CAACC,SAAI,EAAA,EAAA,GAAK,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAA;QAC/ED,sBAAC,CAAA,aAAA,CAAAG,iBAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAI,CAAA,CACpF;AAEX;;;;"}
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import { CellProps } from './Cell';
3
- import { RowId, SelectionMode } from '../types';
3
+ import { RowId, SelectionMode, SetSelectedAction } from '../types';
4
4
  export interface SelectionCellProps extends CellProps {
5
5
  rowId: RowId;
6
6
  selected: boolean;
7
- onChange: (selected: boolean, value: RowId | undefined) => void;
7
+ onChange: SetSelectedAction;
8
8
  selectionMode: SelectionMode;
9
9
  disabled: boolean;
10
10
  }
@@ -1,15 +1,24 @@
1
- import React__default from 'react';
1
+ import React__default, { useRef, useCallback } from 'react';
2
2
  import { Checkbox } from '../../Checkbox/Checkbox.js';
3
3
  import { Radio } from '../../Radio/Radio.js';
4
4
  import { Cell } from './Cell.js';
5
5
 
6
6
  function SelectionCell({ selected, rowId, onChange, selectionMode, disabled, ...cellProps }) {
7
+ const shiftKeyRef = useRef(false);
8
+ // Detect shift on click OR space checks
9
+ const handleInteraction = useCallback((e) => {
10
+ shiftKeyRef.current = e.shiftKey;
11
+ }, []);
12
+ const handleChange = useCallback((checked) => {
13
+ onChange(checked, rowId, shiftKeyRef.current ? { shiftKey: true } : undefined);
14
+ shiftKeyRef.current = false;
15
+ }, [onChange, rowId]);
7
16
  if (selectionMode === 'single') {
8
17
  return (React__default.createElement(Cell, { ...cellProps },
9
18
  React__default.createElement(Radio, { value: rowId, checked: selected, disabled: disabled, onChange: onChange })));
10
19
  }
11
- return (React__default.createElement(Cell, { ...cellProps },
12
- React__default.createElement(Checkbox, { value: rowId, checked: selected, disabled: disabled, onChange: onChange })));
20
+ return (React__default.createElement(Cell, { ...cellProps, onMouseDown: handleInteraction, onKeyDown: handleInteraction },
21
+ React__default.createElement(Checkbox, { value: rowId, checked: selected, disabled: disabled, onChange: handleChange })));
13
22
  }
14
23
 
15
24
  export { SelectionCell };
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionCell.js","sources":["../../../../src/components/DataTable/components/SelectionCell.tsx"],"sourcesContent":["import React from 'react';\nimport { Checkbox } from '../../Checkbox';\nimport { Radio } from '../../Radio';\nimport { Cell, CellProps } from './Cell';\nimport { RowId, SelectionMode } from '../types';\n\nexport interface SelectionCellProps extends CellProps {\n rowId: RowId;\n selected: boolean;\n onChange: (selected: boolean, value: RowId | undefined) => void;\n selectionMode: SelectionMode;\n disabled: boolean;\n}\n\nexport function SelectionCell({\n selected,\n rowId,\n onChange,\n selectionMode,\n disabled,\n ...cellProps\n}: SelectionCellProps) {\n if (selectionMode === 'single') {\n return (\n <Cell {...cellProps}>\n <Radio value={rowId} checked={selected} disabled={disabled} onChange={onChange} />\n </Cell>\n );\n }\n\n return (\n <Cell {...cellProps}>\n <Checkbox value={rowId} checked={selected} disabled={disabled} onChange={onChange} />\n </Cell>\n );\n}\n"],"names":["React"],"mappings":";;;;;SAcgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,GAAG,SAAS,EACO,EAAA;IACnB,IAAI,aAAa,KAAK,QAAQ,EAAE;AAC9B,QAAA,QACEA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAA,GAAK,SAAS,EAAA;YACjBA,cAAC,CAAA,aAAA,CAAA,KAAK,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAI,CAAA,CAC7E;AAEV;AAED,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAA,GAAK,SAAS,EAAA;QACjBA,cAAC,CAAA,aAAA,CAAA,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAI,CAAA,CAChF;AAEX;;;;"}
1
+ {"version":3,"file":"SelectionCell.js","sources":["../../../../src/components/DataTable/components/SelectionCell.tsx"],"sourcesContent":["import React, { useRef, useCallback } from 'react';\nimport { Checkbox } from '../../Checkbox';\nimport { Radio } from '../../Radio';\nimport { Cell, CellProps } from './Cell';\nimport { RowId, SelectionMode, SetSelectedAction } from '../types';\n\nexport interface SelectionCellProps extends CellProps {\n rowId: RowId;\n selected: boolean;\n onChange: SetSelectedAction;\n selectionMode: SelectionMode;\n disabled: boolean;\n}\n\nexport function SelectionCell({\n selected,\n rowId,\n onChange,\n selectionMode,\n disabled,\n ...cellProps\n}: SelectionCellProps) {\n const shiftKeyRef = useRef(false);\n\n // Detect shift on click OR space checks\n const handleInteraction = useCallback((e: React.MouseEvent | React.KeyboardEvent) => {\n shiftKeyRef.current = e.shiftKey;\n }, []);\n\n const handleChange = useCallback(\n (checked: boolean) => {\n onChange(checked, rowId, shiftKeyRef.current ? { shiftKey: true } : undefined);\n shiftKeyRef.current = false;\n },\n [onChange, rowId],\n );\n\n if (selectionMode === 'single') {\n return (\n <Cell {...cellProps}>\n <Radio value={rowId} checked={selected} disabled={disabled} onChange={onChange} />\n </Cell>\n );\n }\n\n return (\n <Cell {...cellProps} onMouseDown={handleInteraction} onKeyDown={handleInteraction}>\n <Checkbox value={rowId} checked={selected} disabled={disabled} onChange={handleChange} />\n </Cell>\n );\n}\n"],"names":["React"],"mappings":";;;;;SAcgB,aAAa,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,GAAG,SAAS,EACO,EAAA;AACnB,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;;AAGjC,IAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAyC,KAAI;AAClF,QAAA,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ;KACjC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,OAAgB,KAAI;QACnB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;AAC9E,QAAA,WAAW,CAAC,OAAO,GAAG,KAAK;AAC7B,KAAC,EACD,CAAC,QAAQ,EAAE,KAAK,CAAC,CAClB;IAED,IAAI,aAAa,KAAK,QAAQ,EAAE;AAC9B,QAAA,QACEA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAA,GAAK,SAAS,EAAA;YACjBA,cAAC,CAAA,aAAA,CAAA,KAAK,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAI,CAAA,CAC7E;AAEV;AAED,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAA,GAAK,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAA;QAC/EA,cAAC,CAAA,aAAA,CAAA,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAI,CAAA,CACpF;AAEX;;;;"}
@@ -3,6 +3,7 @@
3
3
  var React = require('react');
4
4
  var SelectionHeader = require('../components/SelectionHeader.cjs');
5
5
  var SelectionCell = require('../components/SelectionCell.cjs');
6
+ var getRangeSelection = require('../utils/getRangeSelection.cjs');
6
7
 
7
8
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
8
9
 
@@ -13,31 +14,53 @@ const emptySelectionState = [[], () => { }];
13
14
  function useSelection({ selectionMode = 'multiple', selectionState, enabledRowIds, }) {
14
15
  const selectionEnabled = !!selectionState;
15
16
  const [selectedRowIds, setSelectedRowIds] = selectionState || emptySelectionState;
17
+ const lastClickedRef = React.useRef(null);
16
18
  // TODO: Memoise this
17
- const setSelected = (selected, rowId) => {
19
+ const setSelected = (selected, rowId, options) => {
18
20
  if (rowId === undefined || rowId === null)
19
21
  return; // Can't use falsey, must allow number 0
20
- if (selected && selectionMode === 'single') {
21
- // Replace selectedRowIds with only the current rowId
22
- setSelectedRowIds([rowId]);
23
- return;
22
+ let newRowIds;
23
+ let intent;
24
+ const isShiftPressed = options === null || options === undefined ? undefined : options.shiftKey;
25
+ const lastClicked = lastClickedRef.current;
26
+ if (isShiftPressed && lastClicked && selectionMode === 'multiple') {
27
+ intent = 'range';
24
28
  }
25
- if (selected) {
26
- // Add rowId to selectedRowIds
27
- if (selectedRowIds.includes(rowId))
28
- return;
29
- const rowIds = [...selectedRowIds, rowId];
30
- setSelectedRowIds(rowIds);
29
+ else if (selected && selectionMode === 'single') {
30
+ intent = 'single';
31
+ }
32
+ else if (selected) {
33
+ intent = 'add';
31
34
  }
32
35
  else {
33
- // Remove rowIds from selectedRowIds
34
- const index = selectedRowIds.findIndex((id) => id === rowId);
35
- if (index < 0)
36
+ intent = 'remove';
37
+ }
38
+ switch (intent) {
39
+ case 'range':
40
+ newRowIds = getRangeSelection.getRangeSelection({
41
+ rowId,
42
+ lastClicked: lastClicked,
43
+ selected,
44
+ enabledRowIds,
45
+ selectedRowIds,
46
+ });
47
+ break;
48
+ case 'single':
49
+ newRowIds = [rowId];
50
+ break;
51
+ case 'add':
52
+ if (selectedRowIds.includes(rowId))
53
+ return;
54
+ newRowIds = [...selectedRowIds, rowId];
55
+ break;
56
+ case 'remove':
57
+ newRowIds = selectedRowIds.filter((id) => id !== rowId);
58
+ break;
59
+ default:
36
60
  return;
37
- const rowIds = [...selectedRowIds];
38
- rowIds.splice(index, 1);
39
- setSelectedRowIds(rowIds);
40
61
  }
62
+ setSelectedRowIds(newRowIds);
63
+ lastClickedRef.current = rowId;
41
64
  };
42
65
  // TODO: Memoise this
43
66
  const toggleAllSelected = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useSelection.cjs","sources":["../../../../src/components/DataTable/hooks/useSelection.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n\nimport React from 'react';\n\nimport { ColumnConfig, RowId, SelectionState, SelectionMode, SetSelectedAction } from '../types';\n\nimport { SelectionHeader } from '../components/SelectionHeader';\nimport { SelectionCell } from '../components/SelectionCell';\n\nexport type UseSelectionConfig = {\n selectionMode?: SelectionMode;\n selectionState?: SelectionState;\n enabledRowIds: RowId[];\n};\n\nconst emptySelectionState: SelectionState = [[], () => {}];\n\nexport function useSelection({\n selectionMode = 'multiple',\n selectionState,\n enabledRowIds,\n}: UseSelectionConfig) {\n const selectionEnabled = !!selectionState;\n const [selectedRowIds, setSelectedRowIds] = selectionState || emptySelectionState;\n\n // TODO: Memoise this\n const setSelected: SetSelectedAction = (selected, rowId) => {\n if (rowId === undefined || rowId === null) return; // Can't use falsey, must allow number 0\n if (selected && selectionMode === 'single') {\n // Replace selectedRowIds with only the current rowId\n setSelectedRowIds([rowId]);\n return;\n }\n if (selected) {\n // Add rowId to selectedRowIds\n if (selectedRowIds.includes(rowId)) return;\n const rowIds = [...selectedRowIds, rowId];\n setSelectedRowIds(rowIds);\n } else {\n // Remove rowIds from selectedRowIds\n const index = selectedRowIds.findIndex((id) => id === rowId);\n if (index < 0) return;\n const rowIds = [...selectedRowIds];\n rowIds.splice(index, 1);\n setSelectedRowIds(rowIds);\n }\n };\n\n // TODO: Memoise this\n const toggleAllSelected = () => {\n if (selectedRowIds.length === enabledRowIds.length) {\n setSelectedRowIds([]);\n return;\n }\n setSelectedRowIds(enabledRowIds);\n };\n\n // TODO: Memoise this\n const selectionColumn: ColumnConfig = {\n id: 'selection',\n title: 'Selection',\n width: '40px',\n align: 'center',\n pinned: 'left',\n renderHeader: (column, headerProps) => (\n <SelectionHeader\n {...headerProps}\n selected={selectedRowIds.length === enabledRowIds.length}\n indeterminate={selectedRowIds.length > 0 && selectedRowIds.length < enabledRowIds.length}\n onChange={toggleAllSelected}\n selectionMode={selectionMode}\n />\n ),\n renderCell: (row, cellProps, actions, rowState) => (\n <SelectionCell\n {...cellProps}\n rowId={row.id}\n selected={rowState.selected}\n onChange={actions.setSelected}\n selectionMode={selectionMode}\n disabled={rowState.disabled}\n />\n ),\n };\n\n return {\n selectionEnabled,\n selectedRowIds,\n selectionColumn,\n setSelected,\n };\n}\n"],"names":["React","SelectionHeader","SelectionCell"],"mappings":";;;;;;;;;;AAAA;AAeA,MAAM,mBAAmB,GAAmB,CAAC,EAAE,EAAE,MAAK,GAAG,CAAC;AAEpD,SAAU,YAAY,CAAC,EAC3B,aAAa,GAAG,UAAU,EAC1B,cAAc,EACd,aAAa,GACM,EAAA;AACnB,IAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC,cAAc;IACzC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,cAAc,IAAI,mBAAmB;;AAGjF,IAAA,MAAM,WAAW,GAAsB,CAAC,QAAQ,EAAE,KAAK,KAAI;AACzD,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO;AAClD,QAAA,IAAI,QAAQ,IAAI,aAAa,KAAK,QAAQ,EAAE;;AAE1C,YAAA,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1B;AACD;AACD,QAAA,IAAI,QAAQ,EAAE;;AAEZ,YAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE;YACpC,MAAM,MAAM,GAAG,CAAC,GAAG,cAAc,EAAE,KAAK,CAAC;YACzC,iBAAiB,CAAC,MAAM,CAAC;AAC1B;AAAM,aAAA;;AAEL,YAAA,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC;YAC5D,IAAI,KAAK,GAAG,CAAC;gBAAE;AACf,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC;AAClC,YAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACvB,iBAAiB,CAAC,MAAM,CAAC;AAC1B;AACH,KAAC;;IAGD,MAAM,iBAAiB,GAAG,MAAK;AAC7B,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE;YAClD,iBAAiB,CAAC,EAAE,CAAC;YACrB;AACD;QACD,iBAAiB,CAAC,aAAa,CAAC;AAClC,KAAC;;AAGD,IAAA,MAAM,eAAe,GAAiB;AACpC,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,MAChCA,sBAAC,CAAA,aAAA,CAAAC,+BAAe,OACV,WAAW,EACf,QAAQ,EAAE,cAAc,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EACxD,aAAa,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,EACxF,QAAQ,EAAE,iBAAiB,EAC3B,aAAa,EAAE,aAAa,EAAA,CAC5B,CACH;QACD,UAAU,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,MAC5CD,qCAACE,2BAAa,EAAA,EAAA,GACR,SAAS,EACb,KAAK,EAAE,GAAG,CAAC,EAAE,EACb,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,QAAQ,EAAE,OAAO,CAAC,WAAW,EAC7B,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAA,CAC3B,CACH;KACF;IAED,OAAO;QACL,gBAAgB;QAChB,cAAc;QACd,eAAe;QACf,WAAW;KACZ;AACH;;;;"}
1
+ {"version":3,"file":"useSelection.cjs","sources":["../../../../src/components/DataTable/hooks/useSelection.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n\nimport React, { useRef } from 'react';\n\nimport {\n ColumnConfig,\n RowId,\n SelectionState,\n SelectionMode,\n SetSelectedAction,\n SelectionIntent,\n} from '../types';\n\nimport { SelectionHeader } from '../components/SelectionHeader';\nimport { SelectionCell } from '../components/SelectionCell';\nimport { getRangeSelection } from '../utils/getRangeSelection';\n\nexport type UseSelectionConfig = {\n selectionMode?: SelectionMode;\n selectionState?: SelectionState;\n enabledRowIds: RowId[];\n};\n\nconst emptySelectionState: SelectionState = [[], () => {}];\n\nexport function useSelection({\n selectionMode = 'multiple',\n selectionState,\n enabledRowIds,\n}: UseSelectionConfig) {\n const selectionEnabled = !!selectionState;\n const [selectedRowIds, setSelectedRowIds] = selectionState || emptySelectionState;\n const lastClickedRef = useRef<RowId | null>(null);\n\n // TODO: Memoise this\n const setSelected: SetSelectedAction = (\n selected: boolean,\n rowId: RowId | undefined,\n options?: { shiftKey?: boolean },\n ) => {\n if (rowId === undefined || rowId === null) return; // Can't use falsey, must allow number 0\n\n let newRowIds;\n let intent: SelectionIntent;\n const isShiftPressed = options?.shiftKey;\n const lastClicked = lastClickedRef.current;\n\n if (isShiftPressed && lastClicked && selectionMode === 'multiple') {\n intent = 'range';\n } else if (selected && selectionMode === 'single') {\n intent = 'single';\n } else if (selected) {\n intent = 'add';\n } else {\n intent = 'remove';\n }\n\n switch (intent) {\n case 'range':\n newRowIds = getRangeSelection({\n rowId,\n lastClicked: lastClicked!,\n selected,\n enabledRowIds,\n selectedRowIds,\n });\n break;\n case 'single':\n newRowIds = [rowId];\n break;\n case 'add':\n if (selectedRowIds.includes(rowId)) return;\n newRowIds = [...selectedRowIds, rowId];\n break;\n case 'remove':\n newRowIds = selectedRowIds.filter((id) => id !== rowId);\n break;\n default:\n return;\n }\n\n setSelectedRowIds(newRowIds);\n lastClickedRef.current = rowId;\n };\n\n // TODO: Memoise this\n const toggleAllSelected = () => {\n if (selectedRowIds.length === enabledRowIds.length) {\n setSelectedRowIds([]);\n return;\n }\n setSelectedRowIds(enabledRowIds);\n };\n\n // TODO: Memoise this\n const selectionColumn: ColumnConfig = {\n id: 'selection',\n title: 'Selection',\n width: '40px',\n align: 'center',\n pinned: 'left',\n renderHeader: (column, headerProps) => (\n <SelectionHeader\n {...headerProps}\n selected={selectedRowIds.length === enabledRowIds.length}\n indeterminate={selectedRowIds.length > 0 && selectedRowIds.length < enabledRowIds.length}\n onChange={toggleAllSelected}\n selectionMode={selectionMode}\n />\n ),\n renderCell: (row, cellProps, actions, rowState) => (\n <SelectionCell\n {...cellProps}\n rowId={row.id}\n selected={rowState.selected}\n onChange={actions.setSelected}\n selectionMode={selectionMode}\n disabled={rowState.disabled}\n />\n ),\n };\n\n return {\n selectionEnabled,\n selectedRowIds,\n selectionColumn,\n setSelected,\n };\n}\n"],"names":["useRef","getRangeSelection","React","SelectionHeader","SelectionCell"],"mappings":"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"}
@@ -1,37 +1,60 @@
1
- import React__default from 'react';
1
+ import React__default, { useRef } from 'react';
2
2
  import { SelectionHeader } from '../components/SelectionHeader.js';
3
3
  import { SelectionCell } from '../components/SelectionCell.js';
4
+ import { getRangeSelection } from '../utils/getRangeSelection.js';
4
5
 
5
6
  /* eslint-disable react/destructuring-assignment */
6
7
  const emptySelectionState = [[], () => { }];
7
8
  function useSelection({ selectionMode = 'multiple', selectionState, enabledRowIds, }) {
8
9
  const selectionEnabled = !!selectionState;
9
10
  const [selectedRowIds, setSelectedRowIds] = selectionState || emptySelectionState;
11
+ const lastClickedRef = useRef(null);
10
12
  // TODO: Memoise this
11
- const setSelected = (selected, rowId) => {
13
+ const setSelected = (selected, rowId, options) => {
12
14
  if (rowId === undefined || rowId === null)
13
15
  return; // Can't use falsey, must allow number 0
14
- if (selected && selectionMode === 'single') {
15
- // Replace selectedRowIds with only the current rowId
16
- setSelectedRowIds([rowId]);
17
- return;
16
+ let newRowIds;
17
+ let intent;
18
+ const isShiftPressed = options === null || options === undefined ? undefined : options.shiftKey;
19
+ const lastClicked = lastClickedRef.current;
20
+ if (isShiftPressed && lastClicked && selectionMode === 'multiple') {
21
+ intent = 'range';
18
22
  }
19
- if (selected) {
20
- // Add rowId to selectedRowIds
21
- if (selectedRowIds.includes(rowId))
22
- return;
23
- const rowIds = [...selectedRowIds, rowId];
24
- setSelectedRowIds(rowIds);
23
+ else if (selected && selectionMode === 'single') {
24
+ intent = 'single';
25
+ }
26
+ else if (selected) {
27
+ intent = 'add';
25
28
  }
26
29
  else {
27
- // Remove rowIds from selectedRowIds
28
- const index = selectedRowIds.findIndex((id) => id === rowId);
29
- if (index < 0)
30
+ intent = 'remove';
31
+ }
32
+ switch (intent) {
33
+ case 'range':
34
+ newRowIds = getRangeSelection({
35
+ rowId,
36
+ lastClicked: lastClicked,
37
+ selected,
38
+ enabledRowIds,
39
+ selectedRowIds,
40
+ });
41
+ break;
42
+ case 'single':
43
+ newRowIds = [rowId];
44
+ break;
45
+ case 'add':
46
+ if (selectedRowIds.includes(rowId))
47
+ return;
48
+ newRowIds = [...selectedRowIds, rowId];
49
+ break;
50
+ case 'remove':
51
+ newRowIds = selectedRowIds.filter((id) => id !== rowId);
52
+ break;
53
+ default:
30
54
  return;
31
- const rowIds = [...selectedRowIds];
32
- rowIds.splice(index, 1);
33
- setSelectedRowIds(rowIds);
34
55
  }
56
+ setSelectedRowIds(newRowIds);
57
+ lastClickedRef.current = rowId;
35
58
  };
36
59
  // TODO: Memoise this
37
60
  const toggleAllSelected = () => {