@rio-cloud/rio-uikit 2.3.0 → 2.4.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.
- package/MapPreviousViewportButton.d.ts +2 -0
- package/MapPreviousViewportButton.js +5 -0
- package/MapPreviousViewportButton.js.map +1 -0
- package/Table.js +15 -14
- package/TableNext.js +15 -14
- package/components/map/components/Map.js +175 -157
- package/components/map/components/Map.js.map +1 -1
- package/components/map/components/MapContext.d.ts +2 -0
- package/components/map/components/MapContext.js +8 -6
- package/components/map/components/MapContext.js.map +1 -1
- package/components/map/components/MapPosition.d.ts +1 -1
- package/components/map/components/MapPosition.js +20 -13
- package/components/map/components/MapPosition.js.map +1 -1
- package/components/map/components/features/MapZoom.d.ts +0 -1
- package/components/map/components/features/MapZoom.js +12 -20
- package/components/map/components/features/MapZoom.js.map +1 -1
- package/components/map/components/features/layers/overlayLayers/IncidentsLayer.d.ts +1 -0
- package/components/map/components/features/layers/overlayLayers/IncidentsLayer.js +64 -62
- package/components/map/components/features/layers/overlayLayers/IncidentsLayer.js.map +1 -1
- package/components/map/components/features/layers/overlayLayers/TrafficLayer.js +1 -1
- package/components/map/components/features/layers/overlayLayers/TrafficLayer.js.map +1 -1
- package/components/map/components/features/settings/MapSettingsTile.d.ts +27 -0
- package/components/map/components/features/settings/MapSettingsTile.js +17 -17
- package/components/map/components/features/settings/MapSettingsTile.js.map +1 -1
- package/components/map/components/features/settings/buttons/MapPreviousViewportButton.d.ts +10 -0
- package/components/map/components/features/settings/buttons/MapPreviousViewportButton.js +23 -0
- package/components/map/components/features/settings/buttons/MapPreviousViewportButton.js.map +1 -0
- package/components/map/hooks/useMapViewportHistory.d.ts +19 -0
- package/components/map/hooks/useMapViewportHistory.js +116 -0
- package/components/map/hooks/useMapViewportHistory.js.map +1 -0
- package/components/map/icons/MapIcon.d.ts +1 -0
- package/components/map/icons/MapIcon.js +46 -37
- package/components/map/icons/MapIcon.js.map +1 -1
- package/components/map/utils/mapTypes.d.ts +6 -0
- package/components/map/utils/mapTypes.js.map +1 -1
- package/components/selects/BaseSelectDropdown.js +72 -76
- package/components/selects/BaseSelectDropdown.js.map +1 -1
- package/components/selects/Multiselect.d.ts +6 -0
- package/components/selects/Multiselect.js +131 -125
- package/components/selects/Multiselect.js.map +1 -1
- package/components/selects/Select.d.ts +6 -0
- package/components/selects/Select.js +79 -71
- package/components/selects/Select.js.map +1 -1
- package/components/table/Table.d.ts +2 -0
- package/components/table/Table.js +162 -158
- package/components/table/Table.js.map +1 -1
- package/components/table/Table.types.d.ts +6 -0
- package/components/table/TableExpandAllGroupsButton.d.ts +25 -0
- package/components/table/TableExpandAllGroupsButton.js +27 -0
- package/components/table/TableExpandAllGroupsButton.js.map +1 -0
- package/components/table/TableExpandedRow.js +77 -63
- package/components/table/TableExpandedRow.js.map +1 -1
- package/components/table/TableExpanderButton.js +11 -11
- package/components/table/TableExpanderButton.js.map +1 -1
- package/components/table/TableGroupRow.d.ts +13 -1
- package/components/table/TableGroupRow.js +57 -23
- package/components/table/TableGroupRow.js.map +1 -1
- package/components/table/TableHeader.js +40 -39
- package/components/table/TableHeader.js.map +1 -1
- package/components/table/TableRow.js +66 -52
- package/components/table/TableRow.js.map +1 -1
- package/components/table/context/TableRenderConfigContext.d.ts +2 -1
- package/components/table/context/TableRenderConfigContext.js.map +1 -1
- package/components/table/render/header/TableHeaderCellContent.js +4 -4
- package/components/table/render/header/TableHeaderCellContent.js.map +1 -1
- package/components/table/render/header/TableHeaderSelectionCell.d.ts +2 -0
- package/components/table/render/header/TableHeaderSelectionCell.js +22 -12
- package/components/table/render/header/TableHeaderSelectionCell.js.map +1 -1
- package/components/table/runtime/useRenderDraftState.js +1 -0
- package/components/table/runtime/useRenderDraftState.js.map +1 -1
- package/components/table/selection/useInternalTableSelectionState.js +12 -10
- package/components/table/selection/useInternalTableSelectionState.js.map +1 -1
- package/package.json +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
|
@@ -1,34 +1,44 @@
|
|
|
1
1
|
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import m from "../../../checkbox/Checkbox.js";
|
|
3
3
|
import d from "../../../../utils/classNames.js";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import { getVerticalAlignClassName as p } from "../../shared/getAlignClassName.js";
|
|
5
|
+
import { resolveAriaSpan as g } from "../../shared/resolveTableAria.js";
|
|
6
|
+
const w = (n) => {
|
|
7
|
+
const {
|
|
8
|
+
isAllSelected: l,
|
|
9
|
+
isSomeRowsSelected: i,
|
|
10
|
+
onToggleAllSelection: r,
|
|
11
|
+
disabled: c,
|
|
12
|
+
rowCount: t,
|
|
13
|
+
selectionHeaderContent: a,
|
|
14
|
+
selectionCheckboxVerticalAlignment: s
|
|
15
|
+
} = n;
|
|
7
16
|
return /* @__PURE__ */ o(
|
|
8
17
|
"div",
|
|
9
18
|
{
|
|
10
19
|
className: d(
|
|
11
20
|
"table-head-cell table-selection-cell table-align-center",
|
|
12
|
-
|
|
21
|
+
p(s),
|
|
22
|
+
a && "table-selection-cell-custom-content"
|
|
13
23
|
),
|
|
14
24
|
role: "columnheader",
|
|
15
25
|
"aria-colindex": 1,
|
|
16
26
|
"aria-rowindex": 1,
|
|
17
|
-
"aria-rowspan":
|
|
18
|
-
style: { gridColumn: "1 / span 1", gridRow: `1 / span ${
|
|
27
|
+
"aria-rowspan": g(t),
|
|
28
|
+
style: { gridColumn: "1 / span 1", gridRow: `1 / span ${t}` },
|
|
19
29
|
children: /* @__PURE__ */ o(
|
|
20
30
|
"div",
|
|
21
31
|
{
|
|
22
32
|
className: "table-selection-control",
|
|
23
33
|
onClick: (e) => e.stopPropagation(),
|
|
24
34
|
onKeyDown: (e) => e.stopPropagation(),
|
|
25
|
-
children:
|
|
26
|
-
|
|
35
|
+
children: a ?? /* @__PURE__ */ o(
|
|
36
|
+
m,
|
|
27
37
|
{
|
|
28
38
|
checked: l,
|
|
29
39
|
disabled: c,
|
|
30
|
-
indeterminate: !l && !!
|
|
31
|
-
onChange: () =>
|
|
40
|
+
indeterminate: !l && !!i,
|
|
41
|
+
onChange: () => r?.()
|
|
32
42
|
}
|
|
33
43
|
)
|
|
34
44
|
}
|
|
@@ -37,6 +47,6 @@ const C = (t) => {
|
|
|
37
47
|
);
|
|
38
48
|
};
|
|
39
49
|
export {
|
|
40
|
-
|
|
50
|
+
w as default
|
|
41
51
|
};
|
|
42
52
|
//# sourceMappingURL=TableHeaderSelectionCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeaderSelectionCell.js","sources":["../../../../../src/components/table/render/header/TableHeaderSelectionCell.tsx"],"sourcesContent":["import Checkbox from '../../../checkbox/Checkbox';\nimport classNames from '../../../../utils/classNames';\nimport { resolveAriaSpan } from '../../shared/resolveTableAria';\n\ntype TableHeaderSelectionCellProps = {\n isAllSelected?: boolean;\n isSomeRowsSelected?: boolean;\n onToggleAllSelection?: () => void;\n disabled?: boolean;\n rowCount: number;\n selectionHeaderContent?: React.ReactNode;\n};\n\nconst TableHeaderSelectionCell = (props: TableHeaderSelectionCellProps) => {\n const {
|
|
1
|
+
{"version":3,"file":"TableHeaderSelectionCell.js","sources":["../../../../../src/components/table/render/header/TableHeaderSelectionCell.tsx"],"sourcesContent":["import Checkbox from '../../../checkbox/Checkbox';\nimport classNames from '../../../../utils/classNames';\nimport { getVerticalAlignClassName } from '../../shared/getAlignClassName';\nimport { resolveAriaSpan } from '../../shared/resolveTableAria';\nimport type { TableVerticalAlign } from '../../Table.types';\n\ntype TableHeaderSelectionCellProps = {\n isAllSelected?: boolean;\n isSomeRowsSelected?: boolean;\n onToggleAllSelection?: () => void;\n disabled?: boolean;\n rowCount: number;\n selectionHeaderContent?: React.ReactNode;\n selectionCheckboxVerticalAlignment?: TableVerticalAlign;\n};\n\nconst TableHeaderSelectionCell = (props: TableHeaderSelectionCellProps) => {\n const {\n isAllSelected,\n isSomeRowsSelected,\n onToggleAllSelection,\n disabled,\n rowCount,\n selectionHeaderContent,\n selectionCheckboxVerticalAlignment,\n } = props;\n\n return (\n <div\n className={classNames(\n 'table-head-cell table-selection-cell table-align-center',\n getVerticalAlignClassName(selectionCheckboxVerticalAlignment),\n selectionHeaderContent && 'table-selection-cell-custom-content'\n )}\n role='columnheader'\n aria-colindex={1}\n aria-rowindex={1}\n aria-rowspan={resolveAriaSpan(rowCount)}\n style={{ gridColumn: '1 / span 1', gridRow: `1 / span ${rowCount}` }}\n >\n <div\n className='table-selection-control'\n onClick={event => event.stopPropagation()}\n onKeyDown={event => event.stopPropagation()}\n >\n {selectionHeaderContent ?? (\n <Checkbox\n checked={isAllSelected}\n disabled={disabled}\n indeterminate={!isAllSelected && !!isSomeRowsSelected}\n onChange={() => onToggleAllSelection?.()}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default TableHeaderSelectionCell;\n"],"names":["TableHeaderSelectionCell","props","isAllSelected","isSomeRowsSelected","onToggleAllSelection","disabled","rowCount","selectionHeaderContent","selectionCheckboxVerticalAlignment","jsx","classNames","getVerticalAlignClassName","resolveAriaSpan","event","Checkbox"],"mappings":";;;;;AAgBA,MAAMA,IAA2B,CAACC,MAAyC;AACvE,QAAM;AAAA,IACF,eAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,oCAAAC;AAAA,EAAA,IACAP;AAEJ,SACI,gBAAAQ;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAWC;AAAA,QACP;AAAA,QACAC,EAA0BH,CAAkC;AAAA,QAC5DD,KAA0B;AAAA,MAAA;AAAA,MAE9B,MAAK;AAAA,MACL,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,gBAAcK,EAAgBN,CAAQ;AAAA,MACtC,OAAO,EAAE,YAAY,cAAc,SAAS,YAAYA,CAAQ,GAAA;AAAA,MAEhE,UAAA,gBAAAG;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,SAAS,CAAAI,MAASA,EAAM,gBAAA;AAAA,UACxB,WAAW,CAAAA,MAASA,EAAM,gBAAA;AAAA,UAEzB,UAAAN,KACG,gBAAAE;AAAA,YAACK;AAAA,YAAA;AAAA,cACG,SAASZ;AAAA,cACT,UAAAG;AAAA,cACA,eAAe,CAACH,KAAiB,CAAC,CAACC;AAAA,cACnC,UAAU,MAAMC,IAAA;AAAA,YAAuB;AAAA,UAAA;AAAA,QAC3C;AAAA,MAAA;AAAA,IAER;AAAA,EAAA;AAGZ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRenderDraftState.js","sources":["../../../../src/components/table/runtime/useRenderDraftState.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useRef, useState, type ReactNode, type RefObject } from 'react';\n\nimport type { RenderBodyRow, RenderHeaderColumn, TableRenderDraft } from '../context/TableRenderContext';\nimport type { TableRowData } from '../Table.types';\n\ntype RenderDraftState<RowType extends TableRowData> = {\n headerColumns: RenderHeaderColumn<RowType>[];\n bodyRows: RenderBodyRow<RowType>[];\n bodyMaxHeight?: string;\n hasFooter: boolean;\n hasFooterCells?: boolean;\n hasExpandableRows?: boolean;\n};\n\nconst getRenderBodyRowRendererKey = <RowType extends TableRowData>(\n row: Pick<TableRenderDraft<RowType>['bodyRows'][number], 'kind' | 'rowId'>\n) => `${row.kind}-${String(row.rowId)}`;\n\nconst renderHeaderColumnComparisonKeys = [\n 'id',\n 'columnKey',\n 'width',\n 'mobileLabel',\n 'horizontalAlign',\n 'verticalAlign',\n 'headerClassName',\n 'hideOnMobile',\n 'sortable',\n 'draggable',\n 'resizeable',\n 'minResizeWidth',\n 'maxResizeWidth',\n 'row',\n 'colSpan',\n 'rowSpan',\n] as const satisfies ReadonlyArray<keyof RenderHeaderColumn<TableRowData>>;\n\nconst renderBodyRowComparisonKeys = ['rowId', 'rowIndex', 'kind', 'disabled'] as const satisfies ReadonlyArray<\n keyof RenderBodyRow<TableRowData>\n>;\n\nconst haveSameRenderHeaderColumns = <RowType extends TableRowData>(\n currentColumns: RenderHeaderColumn<RowType>[],\n nextColumns: RenderHeaderColumn<RowType>[]\n) =>\n currentColumns.length === nextColumns.length &&\n currentColumns.every((currentColumn, index) => {\n const nextColumn = nextColumns[index];\n\n return (\n nextColumn !== undefined &&\n renderHeaderColumnComparisonKeys.every(key => currentColumn[key] === nextColumn[key])\n );\n });\n\nconst haveSameRenderBodyRows = <RowType extends TableRowData>(\n currentRows: RenderBodyRow<RowType>[],\n nextRows: RenderBodyRow<RowType>[]\n) =>\n currentRows.length === nextRows.length &&\n currentRows.every((currentRow, index) => {\n const nextRow = nextRows[index];\n\n return nextRow !== undefined && renderBodyRowComparisonKeys.every(key => currentRow[key] === nextRow[key]);\n });\n\nconst dedupeRenderHeaderColumns = <RowType extends TableRowData>(headerColumns: RenderHeaderColumn<RowType>[]) => {\n const seenColumnIds = new Set<string>();\n\n return headerColumns.filter(column => {\n if (seenColumnIds.has(column.id)) {\n return false;\n }\n\n seenColumnIds.add(column.id);\n return true;\n });\n};\n\nconst dedupeRenderBodyRows = <RowType extends TableRowData>(bodyRows: TableRenderDraft<RowType>['bodyRows']) => {\n const seenRowKeys = new Set<string>();\n\n return bodyRows.filter(row => {\n const rowKey = `${row.kind}-${String(row.rowId)}`;\n\n if (seenRowKeys.has(rowKey)) {\n return false;\n }\n\n seenRowKeys.add(rowKey);\n return true;\n });\n};\n\nconst createRenderBodyRowRendererMap = <RowType extends TableRowData>(\n bodyRows: TableRenderDraft<RowType>['bodyRows']\n) => new Map(bodyRows.map(row => [getRenderBodyRowRendererKey(row), row.render] as const));\n\nexport type UseRenderDraftStateReturn<RowType extends TableRowData> = {\n renderHeaderColumns: RenderHeaderColumn<RowType>[];\n renderBodyRows: RenderBodyRow<RowType>[];\n renderBodyMaxHeight?: string;\n renderHasFooter: boolean;\n renderHasFooterCells?: boolean;\n renderHasExpandableRows?: boolean;\n renderBodyRow: (row: RenderBodyRow<RowType>) => ReactNode;\n};\n\nexport const useRenderDraftState = <RowType extends TableRowData>(\n renderDraftRef: RefObject<TableRenderDraft<RowType>>\n): UseRenderDraftStateReturn<RowType> => {\n const bodyRowRenderersRef = useRef(new Map<string, () => ReactNode>());\n const [renderDraftState, setRenderDraftState] = useState<RenderDraftState<RowType>>({\n headerColumns: [],\n bodyRows: [],\n bodyMaxHeight: undefined,\n hasFooter: false,\n hasFooterCells: undefined,\n hasExpandableRows: undefined,\n });\n\n useLayoutEffect(() => {\n const draft = renderDraftRef.current;\n\n if (!draft) {\n return;\n }\n\n const nextHeaderColumns = dedupeRenderHeaderColumns(draft.headerColumns);\n const nextBodyRowsWithRenderers = dedupeRenderBodyRows(draft.bodyRows);\n const nextBodyRows = nextBodyRowsWithRenderers.map(({ render: _render, ...bodyRow }) => bodyRow);\n const nextBodyRowRenderers = createRenderBodyRowRendererMap(nextBodyRowsWithRenderers);\n const nextBodyMaxHeight = draft.bodyMaxHeight;\n const nextHasFooter = draft.hasFooter === true;\n const nextHasFooterCells = draft.hasFooterCells;\n const nextHasExpandableRows = draft.hasExpandableRows;\n\n // Keep render functions out of React state. The draft state only tracks structural row\n // metadata, while the latest row render callbacks stay available via this ref.\n bodyRowRenderersRef.current = nextBodyRowRenderers;\n\n const resolvedHeaderColumns = haveSameRenderHeaderColumns(renderDraftState.headerColumns, nextHeaderColumns)\n ? renderDraftState.headerColumns\n : nextHeaderColumns;\n const resolvedBodyRows = haveSameRenderBodyRows(renderDraftState.bodyRows, nextBodyRows)\n ? renderDraftState.bodyRows\n : nextBodyRows;\n const resolvedBodyMaxHeight =\n renderDraftState.bodyMaxHeight === nextBodyMaxHeight ? renderDraftState.bodyMaxHeight : nextBodyMaxHeight;\n const resolvedHasFooter =\n renderDraftState.hasFooter === nextHasFooter ? renderDraftState.hasFooter : nextHasFooter;\n const resolvedHasFooterCells =\n renderDraftState.hasFooterCells === nextHasFooterCells\n ? renderDraftState.hasFooterCells\n : nextHasFooterCells;\n const resolvedHasExpandableRows =\n renderDraftState.hasExpandableRows === nextHasExpandableRows\n ? renderDraftState.hasExpandableRows\n : nextHasExpandableRows;\n\n // Avoid scheduling a layout-state update when the normalized draft did not\n // actually change. This keeps the render/register cycle stable in StrictMode\n // and prevents resize-reset flows from bouncing through nested updates.\n if (\n renderDraftState.headerColumns === resolvedHeaderColumns &&\n renderDraftState.bodyRows === resolvedBodyRows &&\n renderDraftState.bodyMaxHeight === resolvedBodyMaxHeight &&\n renderDraftState.hasFooter === resolvedHasFooter &&\n renderDraftState.hasFooterCells === resolvedHasFooterCells &&\n renderDraftState.hasExpandableRows === resolvedHasExpandableRows\n ) {\n return;\n }\n\n setRenderDraftState({\n headerColumns: resolvedHeaderColumns,\n bodyRows: resolvedBodyRows,\n bodyMaxHeight: resolvedBodyMaxHeight,\n hasFooter: resolvedHasFooter,\n hasFooterCells: resolvedHasFooterCells,\n hasExpandableRows: resolvedHasExpandableRows,\n });\n });\n\n const renderBodyRow = useCallback(\n (row: RenderBodyRow<RowType>) => {\n const draft = renderDraftRef.current;\n const draftRowRenderers = draft\n ? createRenderBodyRowRendererMap(dedupeRenderBodyRows(draft.bodyRows))\n : undefined;\n const rowRenderer =\n draftRowRenderers?.get(getRenderBodyRowRendererKey(row)) ??\n bodyRowRenderersRef.current.get(getRenderBodyRowRendererKey(row));\n\n return rowRenderer?.() ?? null;\n },\n [renderDraftRef]\n );\n\n return {\n renderHeaderColumns: renderDraftState.headerColumns,\n renderBodyRows: renderDraftState.bodyRows,\n renderBodyMaxHeight: renderDraftState.bodyMaxHeight,\n renderHasFooter: renderDraftState.hasFooter,\n renderHasFooterCells: renderDraftState.hasFooterCells,\n renderHasExpandableRows: renderDraftState.hasExpandableRows,\n renderBodyRow,\n };\n};\n\nexport default useRenderDraftState;\n"],"names":["getRenderBodyRowRendererKey","row","renderHeaderColumnComparisonKeys","renderBodyRowComparisonKeys","haveSameRenderHeaderColumns","currentColumns","nextColumns","currentColumn","index","nextColumn","key","haveSameRenderBodyRows","currentRows","nextRows","currentRow","nextRow","dedupeRenderHeaderColumns","headerColumns","seenColumnIds","column","dedupeRenderBodyRows","bodyRows","seenRowKeys","rowKey","createRenderBodyRowRendererMap","useRenderDraftState","renderDraftRef","bodyRowRenderersRef","useRef","renderDraftState","setRenderDraftState","useState","useLayoutEffect","draft","nextHeaderColumns","nextBodyRowsWithRenderers","nextBodyRows","_render","bodyRow","nextBodyRowRenderers","nextBodyMaxHeight","nextHasFooter","nextHasFooterCells","nextHasExpandableRows","resolvedHeaderColumns","resolvedBodyRows","resolvedBodyMaxHeight","resolvedHasFooter","resolvedHasFooterCells","resolvedHasExpandableRows","renderBodyRow","useCallback"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useRenderDraftState.js","sources":["../../../../src/components/table/runtime/useRenderDraftState.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useRef, useState, type ReactNode, type RefObject } from 'react';\n\nimport type { RenderBodyRow, RenderHeaderColumn, TableRenderDraft } from '../context/TableRenderContext';\nimport type { TableRowData } from '../Table.types';\n\ntype RenderDraftState<RowType extends TableRowData> = {\n headerColumns: RenderHeaderColumn<RowType>[];\n bodyRows: RenderBodyRow<RowType>[];\n bodyMaxHeight?: string;\n hasFooter: boolean;\n hasFooterCells?: boolean;\n hasExpandableRows?: boolean;\n};\n\nconst getRenderBodyRowRendererKey = <RowType extends TableRowData>(\n row: Pick<TableRenderDraft<RowType>['bodyRows'][number], 'kind' | 'rowId'>\n) => `${row.kind}-${String(row.rowId)}`;\n\nconst renderHeaderColumnComparisonKeys = [\n 'id',\n 'columnKey',\n 'label',\n 'width',\n 'mobileLabel',\n 'horizontalAlign',\n 'verticalAlign',\n 'headerClassName',\n 'hideOnMobile',\n 'sortable',\n 'draggable',\n 'resizeable',\n 'minResizeWidth',\n 'maxResizeWidth',\n 'row',\n 'colSpan',\n 'rowSpan',\n] as const satisfies ReadonlyArray<keyof RenderHeaderColumn<TableRowData>>;\n\nconst renderBodyRowComparisonKeys = ['rowId', 'rowIndex', 'kind', 'disabled'] as const satisfies ReadonlyArray<\n keyof RenderBodyRow<TableRowData>\n>;\n\nconst haveSameRenderHeaderColumns = <RowType extends TableRowData>(\n currentColumns: RenderHeaderColumn<RowType>[],\n nextColumns: RenderHeaderColumn<RowType>[]\n) =>\n currentColumns.length === nextColumns.length &&\n currentColumns.every((currentColumn, index) => {\n const nextColumn = nextColumns[index];\n\n return (\n nextColumn !== undefined &&\n renderHeaderColumnComparisonKeys.every(key => currentColumn[key] === nextColumn[key])\n );\n });\n\nconst haveSameRenderBodyRows = <RowType extends TableRowData>(\n currentRows: RenderBodyRow<RowType>[],\n nextRows: RenderBodyRow<RowType>[]\n) =>\n currentRows.length === nextRows.length &&\n currentRows.every((currentRow, index) => {\n const nextRow = nextRows[index];\n\n return nextRow !== undefined && renderBodyRowComparisonKeys.every(key => currentRow[key] === nextRow[key]);\n });\n\nconst dedupeRenderHeaderColumns = <RowType extends TableRowData>(headerColumns: RenderHeaderColumn<RowType>[]) => {\n const seenColumnIds = new Set<string>();\n\n return headerColumns.filter(column => {\n if (seenColumnIds.has(column.id)) {\n return false;\n }\n\n seenColumnIds.add(column.id);\n return true;\n });\n};\n\nconst dedupeRenderBodyRows = <RowType extends TableRowData>(bodyRows: TableRenderDraft<RowType>['bodyRows']) => {\n const seenRowKeys = new Set<string>();\n\n return bodyRows.filter(row => {\n const rowKey = `${row.kind}-${String(row.rowId)}`;\n\n if (seenRowKeys.has(rowKey)) {\n return false;\n }\n\n seenRowKeys.add(rowKey);\n return true;\n });\n};\n\nconst createRenderBodyRowRendererMap = <RowType extends TableRowData>(\n bodyRows: TableRenderDraft<RowType>['bodyRows']\n) => new Map(bodyRows.map(row => [getRenderBodyRowRendererKey(row), row.render] as const));\n\nexport type UseRenderDraftStateReturn<RowType extends TableRowData> = {\n renderHeaderColumns: RenderHeaderColumn<RowType>[];\n renderBodyRows: RenderBodyRow<RowType>[];\n renderBodyMaxHeight?: string;\n renderHasFooter: boolean;\n renderHasFooterCells?: boolean;\n renderHasExpandableRows?: boolean;\n renderBodyRow: (row: RenderBodyRow<RowType>) => ReactNode;\n};\n\nexport const useRenderDraftState = <RowType extends TableRowData>(\n renderDraftRef: RefObject<TableRenderDraft<RowType>>\n): UseRenderDraftStateReturn<RowType> => {\n const bodyRowRenderersRef = useRef(new Map<string, () => ReactNode>());\n const [renderDraftState, setRenderDraftState] = useState<RenderDraftState<RowType>>({\n headerColumns: [],\n bodyRows: [],\n bodyMaxHeight: undefined,\n hasFooter: false,\n hasFooterCells: undefined,\n hasExpandableRows: undefined,\n });\n\n useLayoutEffect(() => {\n const draft = renderDraftRef.current;\n\n if (!draft) {\n return;\n }\n\n const nextHeaderColumns = dedupeRenderHeaderColumns(draft.headerColumns);\n const nextBodyRowsWithRenderers = dedupeRenderBodyRows(draft.bodyRows);\n const nextBodyRows = nextBodyRowsWithRenderers.map(({ render: _render, ...bodyRow }) => bodyRow);\n const nextBodyRowRenderers = createRenderBodyRowRendererMap(nextBodyRowsWithRenderers);\n const nextBodyMaxHeight = draft.bodyMaxHeight;\n const nextHasFooter = draft.hasFooter === true;\n const nextHasFooterCells = draft.hasFooterCells;\n const nextHasExpandableRows = draft.hasExpandableRows;\n\n // Keep render functions out of React state. The draft state only tracks structural row\n // metadata, while the latest row render callbacks stay available via this ref.\n bodyRowRenderersRef.current = nextBodyRowRenderers;\n\n const resolvedHeaderColumns = haveSameRenderHeaderColumns(renderDraftState.headerColumns, nextHeaderColumns)\n ? renderDraftState.headerColumns\n : nextHeaderColumns;\n const resolvedBodyRows = haveSameRenderBodyRows(renderDraftState.bodyRows, nextBodyRows)\n ? renderDraftState.bodyRows\n : nextBodyRows;\n const resolvedBodyMaxHeight =\n renderDraftState.bodyMaxHeight === nextBodyMaxHeight ? renderDraftState.bodyMaxHeight : nextBodyMaxHeight;\n const resolvedHasFooter =\n renderDraftState.hasFooter === nextHasFooter ? renderDraftState.hasFooter : nextHasFooter;\n const resolvedHasFooterCells =\n renderDraftState.hasFooterCells === nextHasFooterCells\n ? renderDraftState.hasFooterCells\n : nextHasFooterCells;\n const resolvedHasExpandableRows =\n renderDraftState.hasExpandableRows === nextHasExpandableRows\n ? renderDraftState.hasExpandableRows\n : nextHasExpandableRows;\n\n // Avoid scheduling a layout-state update when the normalized draft did not\n // actually change. This keeps the render/register cycle stable in StrictMode\n // and prevents resize-reset flows from bouncing through nested updates.\n if (\n renderDraftState.headerColumns === resolvedHeaderColumns &&\n renderDraftState.bodyRows === resolvedBodyRows &&\n renderDraftState.bodyMaxHeight === resolvedBodyMaxHeight &&\n renderDraftState.hasFooter === resolvedHasFooter &&\n renderDraftState.hasFooterCells === resolvedHasFooterCells &&\n renderDraftState.hasExpandableRows === resolvedHasExpandableRows\n ) {\n return;\n }\n\n setRenderDraftState({\n headerColumns: resolvedHeaderColumns,\n bodyRows: resolvedBodyRows,\n bodyMaxHeight: resolvedBodyMaxHeight,\n hasFooter: resolvedHasFooter,\n hasFooterCells: resolvedHasFooterCells,\n hasExpandableRows: resolvedHasExpandableRows,\n });\n });\n\n const renderBodyRow = useCallback(\n (row: RenderBodyRow<RowType>) => {\n const draft = renderDraftRef.current;\n const draftRowRenderers = draft\n ? createRenderBodyRowRendererMap(dedupeRenderBodyRows(draft.bodyRows))\n : undefined;\n const rowRenderer =\n draftRowRenderers?.get(getRenderBodyRowRendererKey(row)) ??\n bodyRowRenderersRef.current.get(getRenderBodyRowRendererKey(row));\n\n return rowRenderer?.() ?? null;\n },\n [renderDraftRef]\n );\n\n return {\n renderHeaderColumns: renderDraftState.headerColumns,\n renderBodyRows: renderDraftState.bodyRows,\n renderBodyMaxHeight: renderDraftState.bodyMaxHeight,\n renderHasFooter: renderDraftState.hasFooter,\n renderHasFooterCells: renderDraftState.hasFooterCells,\n renderHasExpandableRows: renderDraftState.hasExpandableRows,\n renderBodyRow,\n };\n};\n\nexport default useRenderDraftState;\n"],"names":["getRenderBodyRowRendererKey","row","renderHeaderColumnComparisonKeys","renderBodyRowComparisonKeys","haveSameRenderHeaderColumns","currentColumns","nextColumns","currentColumn","index","nextColumn","key","haveSameRenderBodyRows","currentRows","nextRows","currentRow","nextRow","dedupeRenderHeaderColumns","headerColumns","seenColumnIds","column","dedupeRenderBodyRows","bodyRows","seenRowKeys","rowKey","createRenderBodyRowRendererMap","useRenderDraftState","renderDraftRef","bodyRowRenderersRef","useRef","renderDraftState","setRenderDraftState","useState","useLayoutEffect","draft","nextHeaderColumns","nextBodyRowsWithRenderers","nextBodyRows","_render","bodyRow","nextBodyRowRenderers","nextBodyMaxHeight","nextHasFooter","nextHasFooterCells","nextHasExpandableRows","resolvedHeaderColumns","resolvedBodyRows","resolvedBodyMaxHeight","resolvedHasFooter","resolvedHasFooterCells","resolvedHasExpandableRows","renderBodyRow","useCallback"],"mappings":"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"}
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
import { useMemo as s } from "react";
|
|
2
2
|
const k = (b) => {
|
|
3
|
-
const { bodyRows: n, selectedRowIds:
|
|
3
|
+
const { bodyRows: n, selectedRowIds: g, onSelectionChange: o } = b, d = s(
|
|
4
4
|
() => n.filter(
|
|
5
|
-
(e) => (e.kind === "data" || e.kind === "expanded") && !e.disabled && e.selectable !== !1
|
|
5
|
+
(e) => (e.kind === "data" || e.kind === "expanded" || e.kind === "group") && !e.disabled && e.selectable !== !1
|
|
6
6
|
).map((e) => e.rowId),
|
|
7
7
|
[n]
|
|
8
8
|
), a = s(() => new Set(d), [d]), t = s(
|
|
9
|
-
() => n.filter(
|
|
9
|
+
() => n.filter(
|
|
10
|
+
(e) => (e.kind === "data" || e.kind === "group") && !e.disabled && e.selectable !== !1
|
|
11
|
+
).map((e) => e.rowId),
|
|
10
12
|
[n]
|
|
11
|
-
), l =
|
|
13
|
+
), l = g ?? [], i = s(() => new Set(l), [l]), S = s(
|
|
12
14
|
() => l.filter((e) => t.includes(e)),
|
|
13
15
|
[l, t]
|
|
14
16
|
), R = s(
|
|
15
|
-
() => new Set(
|
|
16
|
-
[
|
|
17
|
-
), c = t.length > 0 && t.every((e) => R.has(e)),
|
|
17
|
+
() => new Set(S),
|
|
18
|
+
[S]
|
|
19
|
+
), c = t.length > 0 && t.every((e) => R.has(e)), u = R.size > 0 && !c, h = t.length > 0;
|
|
18
20
|
return {
|
|
19
21
|
currentSelectedRowIds: l,
|
|
20
|
-
selectedRowIdSet:
|
|
22
|
+
selectedRowIdSet: i,
|
|
21
23
|
selectableRowIdSet: a,
|
|
22
24
|
isAllRowsSelected: c,
|
|
23
|
-
isSomeRowsSelected:
|
|
25
|
+
isSomeRowsSelected: u,
|
|
24
26
|
hasSelectableRows: h,
|
|
25
27
|
handleToggleAllSelection: () => {
|
|
26
28
|
o?.(c ? [] : t);
|
|
27
29
|
},
|
|
28
30
|
handleToggleRowSelection: (e) => {
|
|
29
31
|
!o || !a.has(e) || o(
|
|
30
|
-
|
|
32
|
+
i.has(e) ? l.filter((r) => r !== e) : [...l, e]
|
|
31
33
|
);
|
|
32
34
|
}
|
|
33
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInternalTableSelectionState.js","sources":["../../../../src/components/table/selection/useInternalTableSelectionState.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport type { RenderBodyRow } from '../context/TableRenderContext';\nimport type { TableRowData, TableRowId } from '../Table.types';\n\ntype UseInternalTableSelectionStateOptions<RowType extends TableRowData> = {\n bodyRows: RenderBodyRow<RowType>[];\n selectedRowIds?: TableRowId[];\n onSelectionChange?: (rowIds: TableRowId[]) => void;\n};\n\ntype UseInternalTableSelectionStateReturn = {\n currentSelectedRowIds: TableRowId[];\n selectedRowIdSet: Set<TableRowId>;\n selectableRowIdSet: Set<TableRowId>;\n isAllRowsSelected: boolean;\n isSomeRowsSelected: boolean;\n hasSelectableRows: boolean;\n handleToggleAllSelection: () => void;\n handleToggleRowSelection: (rowId: TableRowId) => void;\n};\n\nconst useInternalTableSelectionState = <RowType extends TableRowData>(\n props: UseInternalTableSelectionStateOptions<RowType>\n): UseInternalTableSelectionStateReturn => {\n const { bodyRows, selectedRowIds, onSelectionChange } = props;\n\n const selectableRowIds = useMemo(\n () =>\n bodyRows\n .filter(\n row
|
|
1
|
+
{"version":3,"file":"useInternalTableSelectionState.js","sources":["../../../../src/components/table/selection/useInternalTableSelectionState.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport type { RenderBodyRow } from '../context/TableRenderContext';\nimport type { TableRowData, TableRowId } from '../Table.types';\n\ntype UseInternalTableSelectionStateOptions<RowType extends TableRowData> = {\n bodyRows: RenderBodyRow<RowType>[];\n selectedRowIds?: TableRowId[];\n onSelectionChange?: (rowIds: TableRowId[]) => void;\n};\n\ntype UseInternalTableSelectionStateReturn = {\n currentSelectedRowIds: TableRowId[];\n selectedRowIdSet: Set<TableRowId>;\n selectableRowIdSet: Set<TableRowId>;\n isAllRowsSelected: boolean;\n isSomeRowsSelected: boolean;\n hasSelectableRows: boolean;\n handleToggleAllSelection: () => void;\n handleToggleRowSelection: (rowId: TableRowId) => void;\n};\n\nconst useInternalTableSelectionState = <RowType extends TableRowData>(\n props: UseInternalTableSelectionStateOptions<RowType>\n): UseInternalTableSelectionStateReturn => {\n const { bodyRows, selectedRowIds, onSelectionChange } = props;\n\n const selectableRowIds = useMemo(\n () =>\n bodyRows\n .filter(\n row =>\n (row.kind === 'data' || row.kind === 'expanded' || row.kind === 'group') &&\n !row.disabled &&\n row.selectable !== false\n )\n .map(row => row.rowId),\n [bodyRows]\n );\n\n const selectableRowIdSet = useMemo(() => new Set(selectableRowIds), [selectableRowIds]);\n\n const bulkSelectableRowIds = useMemo(\n () =>\n bodyRows\n .filter(\n row => (row.kind === 'data' || row.kind === 'group') && !row.disabled && row.selectable !== false\n )\n .map(row => row.rowId),\n [bodyRows]\n );\n\n const currentSelectedRowIds = selectedRowIds ?? [];\n const currentSelectedRowIdSet = useMemo(() => new Set(currentSelectedRowIds), [currentSelectedRowIds]);\n\n const selectedBulkSelectableRowIds = useMemo(\n () => currentSelectedRowIds.filter(rowId => bulkSelectableRowIds.includes(rowId)),\n [currentSelectedRowIds, bulkSelectableRowIds]\n );\n\n const selectedBulkSelectableRowIdSet = useMemo(\n () => new Set(selectedBulkSelectableRowIds),\n [selectedBulkSelectableRowIds]\n );\n\n const isAllRowsSelected =\n bulkSelectableRowIds.length > 0 &&\n bulkSelectableRowIds.every(rowId => selectedBulkSelectableRowIdSet.has(rowId));\n\n const isSomeRowsSelected = selectedBulkSelectableRowIdSet.size > 0 && !isAllRowsSelected;\n const hasSelectableRows = bulkSelectableRowIds.length > 0;\n\n const handleToggleAllSelection = () => {\n onSelectionChange?.(isAllRowsSelected ? [] : bulkSelectableRowIds);\n };\n\n const handleToggleRowSelection = (rowId: TableRowId) => {\n if (!onSelectionChange || !selectableRowIdSet.has(rowId)) {\n return;\n }\n\n onSelectionChange(\n currentSelectedRowIdSet.has(rowId)\n ? currentSelectedRowIds.filter(selectedRowId => selectedRowId !== rowId)\n : [...currentSelectedRowIds, rowId]\n );\n };\n\n return {\n currentSelectedRowIds,\n selectedRowIdSet: currentSelectedRowIdSet,\n selectableRowIdSet,\n isAllRowsSelected,\n isSomeRowsSelected,\n hasSelectableRows,\n handleToggleAllSelection,\n handleToggleRowSelection,\n };\n};\n\nexport default useInternalTableSelectionState;\n"],"names":["useInternalTableSelectionState","props","bodyRows","selectedRowIds","onSelectionChange","selectableRowIds","useMemo","row","selectableRowIdSet","bulkSelectableRowIds","currentSelectedRowIds","currentSelectedRowIdSet","selectedBulkSelectableRowIds","rowId","selectedBulkSelectableRowIdSet","isAllRowsSelected","isSomeRowsSelected","hasSelectableRows","selectedRowId"],"mappings":";AAsBA,MAAMA,IAAiC,CACnCC,MACuC;AACvC,QAAM,EAAE,UAAAC,GAAU,gBAAAC,GAAgB,mBAAAC,EAAA,IAAsBH,GAElDI,IAAmBC;AAAA,IACrB,MACIJ,EACK;AAAA,MACG,CAAAK,OACKA,EAAI,SAAS,UAAUA,EAAI,SAAS,cAAcA,EAAI,SAAS,YAChE,CAACA,EAAI,YACLA,EAAI,eAAe;AAAA,IAAA,EAE1B,IAAI,CAAAA,MAAOA,EAAI,KAAK;AAAA,IAC7B,CAACL,CAAQ;AAAA,EAAA,GAGPM,IAAqBF,EAAQ,MAAM,IAAI,IAAID,CAAgB,GAAG,CAACA,CAAgB,CAAC,GAEhFI,IAAuBH;AAAA,IACzB,MACIJ,EACK;AAAA,MACG,CAAAK,OAAQA,EAAI,SAAS,UAAUA,EAAI,SAAS,YAAY,CAACA,EAAI,YAAYA,EAAI,eAAe;AAAA,IAAA,EAE/F,IAAI,CAAAA,MAAOA,EAAI,KAAK;AAAA,IAC7B,CAACL,CAAQ;AAAA,EAAA,GAGPQ,IAAwBP,KAAkB,CAAA,GAC1CQ,IAA0BL,EAAQ,MAAM,IAAI,IAAII,CAAqB,GAAG,CAACA,CAAqB,CAAC,GAE/FE,IAA+BN;AAAA,IACjC,MAAMI,EAAsB,OAAO,OAASD,EAAqB,SAASI,CAAK,CAAC;AAAA,IAChF,CAACH,GAAuBD,CAAoB;AAAA,EAAA,GAG1CK,IAAiCR;AAAA,IACnC,MAAM,IAAI,IAAIM,CAA4B;AAAA,IAC1C,CAACA,CAA4B;AAAA,EAAA,GAG3BG,IACFN,EAAqB,SAAS,KAC9BA,EAAqB,MAAM,CAAAI,MAASC,EAA+B,IAAID,CAAK,CAAC,GAE3EG,IAAqBF,EAA+B,OAAO,KAAK,CAACC,GACjEE,IAAoBR,EAAqB,SAAS;AAkBxD,SAAO;AAAA,IACH,uBAAAC;AAAA,IACA,kBAAkBC;AAAA,IAClB,oBAAAH;AAAA,IACA,mBAAAO;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,0BAvB6B,MAAM;AACnC,MAAAb,IAAoBW,IAAoB,CAAA,IAAKN,CAAoB;AAAA,IACrE;AAAA,IAsBI,0BApB6B,CAACI,MAAsB;AACpD,MAAI,CAACT,KAAqB,CAACI,EAAmB,IAAIK,CAAK,KAIvDT;AAAA,QACIO,EAAwB,IAAIE,CAAK,IAC3BH,EAAsB,OAAO,CAAAQ,MAAiBA,MAAkBL,CAAK,IACrE,CAAC,GAAGH,GAAuBG,CAAK;AAAA,MAAA;AAAA,IAE9C;AAAA,EAUI;AAER;"}
|
package/package.json
CHANGED
package/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version: "2.
|
|
1
|
+
export const version: "2.4.1";
|
package/version.js
CHANGED
package/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sources":["../src/version.js"],"sourcesContent":["export const version = '2.
|
|
1
|
+
{"version":3,"file":"version.js","sources":["../src/version.js"],"sourcesContent":["export const version = '2.4.1';\n"],"names":["version"],"mappings":"AAAY,MAACA,IAAU;"}
|