@cloudscape-design/components 3.0.1383 → 3.0.1385
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/app-layout/visual-refresh-toolbar/contexts.d.ts +5 -3
- package/app-layout/visual-refresh-toolbar/contexts.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/contexts.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/interfaces.d.ts +3 -0
- package/app-layout/visual-refresh-toolbar/interfaces.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/interfaces.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/skeleton/slots.d.ts +4 -1
- package/app-layout/visual-refresh-toolbar/skeleton/slots.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/skeleton/slots.js +8 -5
- package/app-layout/visual-refresh-toolbar/skeleton/slots.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.d.ts +5 -0
- package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.js +3 -3
- package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/state/use-app-layout.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/state/use-app-layout.js +27 -3
- package/app-layout/visual-refresh-toolbar/state/use-app-layout.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/state/use-own-breadcrumbs-props.d.ts +6 -0
- package/app-layout/visual-refresh-toolbar/state/use-own-breadcrumbs-props.d.ts.map +1 -0
- package/app-layout/visual-refresh-toolbar/state/use-own-breadcrumbs-props.js +16 -0
- package/app-layout/visual-refresh-toolbar/state/use-own-breadcrumbs-props.js.map +1 -0
- package/app-layout/visual-refresh-toolbar/toolbar/index.d.ts +5 -1
- package/app-layout/visual-refresh-toolbar/toolbar/index.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/toolbar/index.js +2 -2
- package/app-layout/visual-refresh-toolbar/toolbar/index.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/toolbar/styles.css.js +15 -14
- package/app-layout/visual-refresh-toolbar/toolbar/styles.scoped.css +35 -31
- package/app-layout/visual-refresh-toolbar/toolbar/styles.selectors.js +15 -14
- package/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.js +2 -2
- package/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.js.map +1 -1
- package/breadcrumb-group/implementation.d.ts.map +1 -1
- package/breadcrumb-group/implementation.js +30 -1
- package/breadcrumb-group/implementation.js.map +1 -1
- package/container/index.d.ts +3 -7
- package/container/index.d.ts.map +1 -1
- package/container/index.js +4 -3
- package/container/index.js.map +1 -1
- package/container/interfaces.d.ts +7 -0
- package/container/interfaces.d.ts.map +1 -1
- package/container/interfaces.js.map +1 -1
- package/container/internal.d.ts +3 -26
- package/container/internal.d.ts.map +1 -1
- package/container/internal.js +37 -8
- package/container/internal.js.map +1 -1
- package/container/styles.css.js +34 -33
- package/container/styles.scoped.css +77 -56
- package/container/styles.selectors.js +34 -33
- package/copy-to-clipboard/internal.d.ts.map +1 -1
- package/copy-to-clipboard/internal.js +3 -1
- package/copy-to-clipboard/internal.js.map +1 -1
- package/flashbar/styles.css.js +50 -50
- package/flashbar/styles.scoped.css +160 -200
- package/flashbar/styles.selectors.js +50 -50
- package/icon/generated/icons.d.ts +1 -0
- package/icon/generated/icons.d.ts.map +1 -1
- package/icon/generated/icons.js +3 -0
- package/icon/generated/icons.js.map +1 -1
- package/icon-provider/interfaces.d.ts +1 -1
- package/icon-provider/interfaces.d.ts.map +1 -1
- package/icon-provider/interfaces.js.map +1 -1
- package/internal/base-component/styles.scoped.css +1 -1
- package/internal/base-theme/styles.scoped.css +3 -0
- package/internal/environment.js +2 -2
- package/internal/environment.json +2 -2
- package/internal/generated/styles/tokens.d.ts +3 -0
- package/internal/generated/styles/tokens.js +3 -0
- package/internal/generated/theming/index.cjs +65 -0
- package/internal/generated/theming/index.js +65 -0
- package/internal/manifest.json +1 -1
- package/internal/plugins/widget/index.d.ts +5 -1
- package/internal/plugins/widget/index.d.ts.map +1 -1
- package/internal/plugins/widget/index.js +26 -1
- package/internal/plugins/widget/index.js.map +1 -1
- package/internal/plugins/widget/interfaces.d.ts +12 -2
- package/internal/plugins/widget/interfaces.d.ts.map +1 -1
- package/internal/plugins/widget/interfaces.js.map +1 -1
- package/internal/plugins/widget.d.ts +1 -1
- package/internal/plugins/widget.d.ts.map +1 -1
- package/internal/plugins/widget.js +1 -1
- package/internal/plugins/widget.js.map +1 -1
- package/manifest.json +2 -2
- package/package.json +1 -1
- package/plugins/index.d.ts +2 -1
- package/plugins/index.d.ts.map +1 -1
- package/plugins/index.js +2 -1
- package/plugins/index.js.map +1 -1
- package/table/header-cell/styles.css.js +38 -38
- package/table/header-cell/styles.scoped.css +80 -81
- package/table/header-cell/styles.selectors.js +38 -38
- package/table/sticky-columns/interfaces.d.ts +2 -0
- package/table/sticky-columns/interfaces.d.ts.map +1 -1
- package/table/sticky-columns/interfaces.js.map +1 -1
- package/table/sticky-columns/use-sticky-columns.d.ts.map +1 -1
- package/table/sticky-columns/use-sticky-columns.js +11 -5
- package/table/sticky-columns/use-sticky-columns.js.map +1 -1
- package/table/sticky-columns/utils.d.ts.map +1 -1
- package/table/sticky-columns/utils.js +2 -0
- package/table/sticky-columns/utils.js.map +1 -1
- package/table/utils.d.ts +1 -3
- package/table/utils.d.ts.map +1 -1
- package/table/utils.js +12 -5
- package/table/utils.js.map +1 -1
- package/internal/generated/theming/index.cjs.d.ts +0 -4785
|
@@ -88,20 +88,24 @@ export function useStickyColumns({ visibleColumns, stickyColumnsFirst, stickyCol
|
|
|
88
88
|
refs: { wrapper: setWrapper, table: setTable, cell: setCell },
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
|
-
// Merges the boundary leaf's shadow flags into the position leaf's cell state.
|
|
91
|
+
// Merges the boundary leaf's shadow and border flags into the position leaf's cell state.
|
|
92
92
|
// Returns the position state untouched when there is no boundary column or no boundary state.
|
|
93
|
-
function
|
|
93
|
+
function mergeBoundaryState(positionState, boundaryState) {
|
|
94
94
|
if (!positionState || !boundaryState) {
|
|
95
95
|
return positionState;
|
|
96
96
|
}
|
|
97
97
|
if (positionState.lastInsetInlineStart === boundaryState.lastInsetInlineStart &&
|
|
98
|
-
positionState.lastInsetInlineEnd === boundaryState.lastInsetInlineEnd
|
|
98
|
+
positionState.lastInsetInlineEnd === boundaryState.lastInsetInlineEnd &&
|
|
99
|
+
positionState.boundaryInlineStart === boundaryState.boundaryInlineStart &&
|
|
100
|
+
positionState.boundaryInlineEnd === boundaryState.boundaryInlineEnd) {
|
|
99
101
|
return positionState;
|
|
100
102
|
}
|
|
101
103
|
return {
|
|
102
104
|
...positionState,
|
|
103
105
|
lastInsetInlineStart: positionState.lastInsetInlineStart || boundaryState.lastInsetInlineStart,
|
|
104
106
|
lastInsetInlineEnd: positionState.lastInsetInlineEnd || boundaryState.lastInsetInlineEnd,
|
|
107
|
+
boundaryInlineStart: positionState.boundaryInlineStart || boundaryState.boundaryInlineStart,
|
|
108
|
+
boundaryInlineEnd: positionState.boundaryInlineEnd || boundaryState.boundaryInlineEnd,
|
|
105
109
|
};
|
|
106
110
|
}
|
|
107
111
|
export function useStickyCellStyles({ stickyColumns, columnId, getClassName, boundaryColumnId, }) {
|
|
@@ -122,7 +126,7 @@ export function useStickyCellStyles({ stickyColumns, columnId, getClassName, bou
|
|
|
122
126
|
var _a, _b;
|
|
123
127
|
const positionState = (_a = state.cellState.get(columnId)) !== null && _a !== void 0 ? _a : null;
|
|
124
128
|
const boundaryState = boundaryColumnId !== undefined ? ((_b = state.cellState.get(boundaryColumnId)) !== null && _b !== void 0 ? _b : null) : null;
|
|
125
|
-
return
|
|
129
|
+
return mergeBoundaryState(positionState, boundaryState);
|
|
126
130
|
};
|
|
127
131
|
const updateCellStyles = (state, prev) => {
|
|
128
132
|
if (isCellStatesEqual(state, prev)) {
|
|
@@ -159,7 +163,7 @@ export function useStickyCellStyles({ stickyColumns, columnId, getClassName, bou
|
|
|
159
163
|
const storeState = stickyColumns.store.get();
|
|
160
164
|
const positionStyles = (_a = storeState.cellState.get(columnId)) !== null && _a !== void 0 ? _a : null;
|
|
161
165
|
const boundaryStyles = boundaryColumnId !== undefined ? ((_b = storeState.cellState.get(boundaryColumnId)) !== null && _b !== void 0 ? _b : null) : null;
|
|
162
|
-
const mergedStyles =
|
|
166
|
+
const mergedStyles = mergeBoundaryState(positionStyles, boundaryStyles);
|
|
163
167
|
return {
|
|
164
168
|
ref: refCallback,
|
|
165
169
|
className: mergedStyles ? clsx(getClassName(mergedStyles)) : undefined,
|
|
@@ -201,6 +205,8 @@ class StickyColumnsStore extends AsyncStore {
|
|
|
201
205
|
padInlineStart: isFirstColumn && this.padInlineStart,
|
|
202
206
|
lastInsetInlineStart: this.isStuckToTheInlineStart && lastLeftStickyColumnIndex === index,
|
|
203
207
|
lastInsetInlineEnd: this.isStuckToTheInlineEnd && lastRightStickyColumnIndex === index,
|
|
208
|
+
boundaryInlineStart: lastLeftStickyColumnIndex === index,
|
|
209
|
+
boundaryInlineEnd: lastRightStickyColumnIndex === index,
|
|
204
210
|
offset: {
|
|
205
211
|
insetInlineStart: stickySide === 'inline-start' ? stickyColumnOffsetLeft : undefined,
|
|
206
212
|
insetInlineEnd: stickySide === 'inline-end' ? stickyColumnOffsetRight : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-sticky-columns.js","sourceRoot":"","sources":["../../../../src/table/sticky-columns/use-sticky-columns.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useResizeObserver, useStableCallback } from '@cloudscape-design/component-toolkit/internal';\nimport { getLogicalBoundingClientRect, getScrollInlineStart } from '@cloudscape-design/component-toolkit/internal';\n\nimport AsyncStore, { ReadonlyAsyncStore } from '../../area-chart/async-store';\nimport {\n CellOffsets,\n StickyColumnsCellState,\n StickyColumnsProps,\n StickyColumnsState,\n StickyColumnsWrapperState,\n} from './interfaces';\nimport { isCellStatesEqual, isWrapperStatesEqual, updateCellOffsets } from './utils';\n\n// We allow the table to have a minimum of 148px of available space besides the sum of the widths of the sticky columns\n// This value is an UX recommendation and is approximately 1/3 of our smallest breakpoint (465px)\nconst MINIMUM_SCROLLABLE_SPACE = 148;\n\nexport interface StickyColumnsModel {\n store: ReadonlyAsyncStore<StickyColumnsState>;\n style: {\n wrapper?: React.CSSProperties;\n };\n refs: {\n table: React.RefCallback<HTMLElement>;\n wrapper: React.RefCallback<HTMLElement>;\n cell: (columnId: PropertyKey, node: null | HTMLElement) => void;\n };\n}\n\nexport function useStickyColumns({\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n}: StickyColumnsProps): StickyColumnsModel {\n const store = useMemo(() => new StickyColumnsStore(), []);\n const wrapperRef = useRef<HTMLElement>(null) as React.MutableRefObject<null | HTMLElement>;\n const tableRef = useRef<HTMLElement>(null) as React.MutableRefObject<null | HTMLElement>;\n const cellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n\n const hasStickyColumns = stickyColumnsFirst + stickyColumnsLast > 0;\n\n const updateStickyStyles = useStableCallback(() => {\n if (wrapperRef.current && tableRef.current) {\n store.updateCellStyles({\n wrapper: wrapperRef.current,\n table: tableRef.current,\n cells: cellsRef.current,\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n });\n }\n });\n\n useResizeObserver(wrapperRef, updateStickyStyles);\n\n useResizeObserver(tableRef, updateStickyStyles);\n\n useEffect(() => {\n if (wrapperRef.current && tableRef.current) {\n store.updateCellStyles({\n wrapper: wrapperRef.current,\n table: tableRef.current,\n cells: cellsRef.current,\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n });\n }\n }, [store, stickyColumnsFirst, stickyColumnsLast, visibleColumns]);\n\n // Update wrapper styles imperatively to avoid unnecessary re-renders.\n useEffect(() => {\n if (!hasStickyColumns) {\n return;\n }\n\n const selector = (state: StickyColumnsState) => state.wrapperState;\n\n const updateWrapperStyles = (state: StickyColumnsWrapperState, prev: StickyColumnsWrapperState) => {\n if (isWrapperStatesEqual(state, prev)) {\n return;\n }\n\n if (wrapperRef.current) {\n wrapperRef.current.style.scrollPaddingInlineStart = state.scrollPaddingInlineStart + 'px';\n wrapperRef.current.style.scrollPaddingInlineEnd = state.scrollPaddingInlineEnd + 'px';\n }\n };\n\n const unsubscribe = store.subscribe(selector, (newState, prevState) =>\n updateWrapperStyles(selector(newState), selector(prevState))\n );\n return unsubscribe;\n }, [store, hasStickyColumns]);\n\n const setWrapper = useCallback(\n (node: null | HTMLElement) => {\n if (wrapperRef.current) {\n wrapperRef.current.removeEventListener('scroll', updateStickyStyles);\n }\n if (node && hasStickyColumns) {\n node.addEventListener('scroll', updateStickyStyles);\n }\n wrapperRef.current = node;\n },\n [hasStickyColumns, updateStickyStyles]\n );\n\n const setTable = useCallback((node: null | HTMLElement) => {\n tableRef.current = node;\n }, []);\n\n const setCell = useCallback((columnId: PropertyKey, node: null | HTMLElement) => {\n if (node) {\n cellsRef.current.set(columnId, node);\n } else {\n cellsRef.current.delete(columnId);\n }\n }, []);\n\n return {\n store,\n style: {\n // Provide wrapper styles as props so that a re-render won't cause invalidation.\n wrapper: hasStickyColumns ? { ...store.get().wrapperState } : undefined,\n },\n refs: { wrapper: setWrapper, table: setTable, cell: setCell },\n };\n}\n\ninterface UseStickyCellStylesProps {\n stickyColumns: StickyColumnsModel;\n columnId: PropertyKey;\n getClassName: (styles: null | StickyColumnsCellState) => Record<string, boolean>;\n // Optional column to inherit the boundary shadow flags from. Used by group header cells\n // that span multiple leaves: the cell's offset is owned by `columnId` (one of its child\n // leaves), but the boundary shadow lives on a different leaf (the group's boundary child).\n // The hook keeps a single subscription/writer and merges the boundary leaf's\n // `lastInsetInlineStart` / `lastInsetInlineEnd` into the cell state passed to getClassName.\n boundaryColumnId?: PropertyKey;\n}\n\ninterface StickyCellStyles {\n ref: React.RefCallback<HTMLElement>;\n className?: string;\n style?: React.CSSProperties;\n}\n\n// Merges the boundary leaf's shadow flags into the position leaf's cell state.\n// Returns the position state untouched when there is no boundary column or no boundary state.\nfunction mergeBoundaryShadow(\n positionState: null | StickyColumnsCellState,\n boundaryState: null | StickyColumnsCellState\n): null | StickyColumnsCellState {\n if (!positionState || !boundaryState) {\n return positionState;\n }\n if (\n positionState.lastInsetInlineStart === boundaryState.lastInsetInlineStart &&\n positionState.lastInsetInlineEnd === boundaryState.lastInsetInlineEnd\n ) {\n return positionState;\n }\n return {\n ...positionState,\n lastInsetInlineStart: positionState.lastInsetInlineStart || boundaryState.lastInsetInlineStart,\n lastInsetInlineEnd: positionState.lastInsetInlineEnd || boundaryState.lastInsetInlineEnd,\n };\n}\n\nexport function useStickyCellStyles({\n stickyColumns,\n columnId,\n getClassName,\n boundaryColumnId,\n}: UseStickyCellStylesProps): StickyCellStyles {\n const setCell = stickyColumns.refs.cell;\n\n // unsubscribeRef to hold the function to unsubscribe from the store's updates\n const unsubscribeRef = useRef<null | (() => void)>(null);\n\n // refCallback updates the cell ref and sets up the store subscription\n const refCallback = useCallback(\n (cellElement: null | HTMLElement) => {\n if (unsubscribeRef.current) {\n // Unsubscribe before we do any updates to avoid leaving any subscriptions hanging\n unsubscribeRef.current();\n }\n\n // Update cellRef and the store's state to point to the new DOM node\n setCell(columnId, cellElement);\n\n // Update cell styles imperatively to avoid unnecessary re-renders.\n const selector = (state: StickyColumnsState) => {\n const positionState = state.cellState.get(columnId) ?? null;\n const boundaryState = boundaryColumnId !== undefined ? (state.cellState.get(boundaryColumnId) ?? null) : null;\n return mergeBoundaryShadow(positionState, boundaryState);\n };\n\n const updateCellStyles = (state: null | StickyColumnsCellState, prev: null | StickyColumnsCellState) => {\n if (isCellStatesEqual(state, prev)) {\n return;\n }\n\n const className = getClassName(state);\n if (cellElement) {\n Object.keys(className).forEach(key => {\n if (className[key]) {\n cellElement.classList.add(key);\n } else {\n cellElement.classList.remove(key);\n }\n });\n cellElement.style.insetInlineStart =\n state?.offset.insetInlineStart !== undefined ? `${state.offset.insetInlineStart}px` : '';\n cellElement.style.insetInlineEnd =\n state?.offset.insetInlineEnd !== undefined ? `${state.offset.insetInlineEnd}px` : '';\n }\n };\n\n // If the node is not null (i.e., the table cell is being mounted or updated, not unmounted),\n // set up a new subscription to the store's updates\n if (cellElement) {\n unsubscribeRef.current = stickyColumns.store.subscribe(selector, (newState, prevState) => {\n updateCellStyles(selector(newState), selector(prevState));\n });\n }\n },\n\n // getClassName is expected to be pure\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [columnId, boundaryColumnId, setCell, stickyColumns.store]\n );\n\n // Provide cell styles as props so that a re-render won't cause invalidation.\n const storeState = stickyColumns.store.get();\n const positionStyles = storeState.cellState.get(columnId) ?? null;\n const boundaryStyles = boundaryColumnId !== undefined ? (storeState.cellState.get(boundaryColumnId) ?? null) : null;\n const mergedStyles = mergeBoundaryShadow(positionStyles, boundaryStyles);\n return {\n ref: refCallback,\n className: mergedStyles ? clsx(getClassName(mergedStyles)) : undefined,\n style: positionStyles?.offset ?? undefined,\n };\n}\n\ninterface UpdateCellStylesProps {\n wrapper: HTMLElement;\n table: HTMLElement;\n cells: Map<PropertyKey, HTMLElement>;\n visibleColumns: readonly PropertyKey[];\n stickyColumnsFirst: number;\n stickyColumnsLast: number;\n}\n\nclass StickyColumnsStore extends AsyncStore<StickyColumnsState> {\n private cellOffsets: CellOffsets = {\n offsets: new Map(),\n stickyWidthInlineStart: 0,\n stickyWidthInlineEnd: 0,\n };\n private isStuckToTheInlineStart = false;\n private isStuckToTheInlineEnd = false;\n private padInlineStart = false;\n\n constructor() {\n super({ cellState: new Map(), wrapperState: { scrollPaddingInlineStart: 0, scrollPaddingInlineEnd: 0 } });\n }\n\n public updateCellStyles(props: UpdateCellStylesProps) {\n const hasStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast > 0;\n const hadStickyColumns = this.cellOffsets.offsets.size > 0;\n\n if (hasStickyColumns || hadStickyColumns) {\n this.updateScroll(props);\n this.updateCellOffsets(props);\n this.set(() => ({\n cellState: this.generateCellStyles(props),\n wrapperState: {\n scrollPaddingInlineStart: this.cellOffsets.stickyWidthInlineStart,\n scrollPaddingInlineEnd: this.cellOffsets.stickyWidthInlineEnd,\n },\n }));\n }\n }\n\n private updateScroll(props: UpdateCellStylesProps) {\n const wrapperScrollInlineStart = getScrollInlineStart(props.wrapper);\n const wrapperScrollWidth = props.wrapper.scrollWidth;\n const wrapperClientWidth = props.wrapper.clientWidth;\n const tablePaddingInlineStart = parseFloat(getComputedStyle(props.table).paddingInlineStart) || 0;\n const tablePaddingInlineEnd = parseFloat(getComputedStyle(props.table).paddingInlineEnd) || 0;\n\n this.isStuckToTheInlineStart = wrapperScrollInlineStart > tablePaddingInlineStart;\n\n // Math.ceil() is used here to address an edge-case in certain browsers, where they return non-integer wrapperScrollInlineStart values\n // which are lower than expected (sub-pixel difference), resulting in the table always being in the \"stuck to the right\" state\n this.isStuckToTheInlineEnd =\n Math.ceil(wrapperScrollInlineStart) < wrapperScrollWidth - wrapperClientWidth - tablePaddingInlineEnd;\n\n this.padInlineStart = tablePaddingInlineStart !== 0 && this.isStuckToTheInlineStart;\n }\n\n private generateCellStyles = (props: UpdateCellStylesProps): Map<PropertyKey, StickyColumnsCellState> => {\n const isEnabled = this.isEnabled(props);\n const lastLeftStickyColumnIndex = props.stickyColumnsFirst - 1;\n const lastRightStickyColumnIndex = props.visibleColumns.length - props.stickyColumnsLast;\n\n return props.visibleColumns.reduce((acc, columnId, index) => {\n let stickySide = 'non-sticky';\n if (index < props.stickyColumnsFirst) {\n stickySide = 'inline-start';\n } else if (index >= props.visibleColumns.length - props.stickyColumnsLast) {\n stickySide = 'inline-end';\n }\n\n if (!isEnabled || stickySide === 'non-sticky') {\n return acc;\n }\n\n // Determine the offset of the sticky column using the `cellOffsets` state object\n const isFirstColumn = index === 0;\n const stickyColumnOffsetLeft = this.cellOffsets.offsets.get(columnId)?.first ?? 0;\n const stickyColumnOffsetRight = this.cellOffsets.offsets.get(columnId)?.last ?? 0;\n\n acc.set(columnId, {\n padInlineStart: isFirstColumn && this.padInlineStart,\n lastInsetInlineStart: this.isStuckToTheInlineStart && lastLeftStickyColumnIndex === index,\n lastInsetInlineEnd: this.isStuckToTheInlineEnd && lastRightStickyColumnIndex === index,\n offset: {\n insetInlineStart: stickySide === 'inline-start' ? stickyColumnOffsetLeft : undefined,\n insetInlineEnd: stickySide === 'inline-end' ? stickyColumnOffsetRight : undefined,\n },\n });\n return acc;\n }, new Map<PropertyKey, StickyColumnsCellState>());\n };\n\n private updateCellOffsets = (props: UpdateCellStylesProps): void => {\n this.cellOffsets = updateCellOffsets(props.cells, props);\n };\n\n private isEnabled = (props: UpdateCellStylesProps): boolean => {\n const noStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast === 0;\n if (noStickyColumns) {\n return false;\n }\n\n const wrapperWidth = getLogicalBoundingClientRect(props.wrapper).inlineSize;\n const tableWidth = getLogicalBoundingClientRect(props.table).inlineSize;\n const isWrapperScrollable = tableWidth > wrapperWidth;\n if (!isWrapperScrollable) {\n return false;\n }\n\n const totalStickySpace = this.cellOffsets.stickyWidthInlineStart + this.cellOffsets.stickyWidthInlineEnd;\n const tablePaddingLeft = parseFloat(getComputedStyle(props.table).paddingLeft) || 0;\n const tablePaddingRight = parseFloat(getComputedStyle(props.table).paddingRight) || 0;\n const hasEnoughScrollableSpace =\n totalStickySpace + MINIMUM_SCROLLABLE_SPACE + tablePaddingLeft + tablePaddingRight < wrapperWidth;\n if (!hasEnoughScrollableSpace) {\n return false;\n }\n\n return true;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"use-sticky-columns.js","sourceRoot":"","sources":["../../../../src/table/sticky-columns/use-sticky-columns.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useResizeObserver, useStableCallback } from '@cloudscape-design/component-toolkit/internal';\nimport { getLogicalBoundingClientRect, getScrollInlineStart } from '@cloudscape-design/component-toolkit/internal';\n\nimport AsyncStore, { ReadonlyAsyncStore } from '../../area-chart/async-store';\nimport {\n CellOffsets,\n StickyColumnsCellState,\n StickyColumnsProps,\n StickyColumnsState,\n StickyColumnsWrapperState,\n} from './interfaces';\nimport { isCellStatesEqual, isWrapperStatesEqual, updateCellOffsets } from './utils';\n\n// We allow the table to have a minimum of 148px of available space besides the sum of the widths of the sticky columns\n// This value is an UX recommendation and is approximately 1/3 of our smallest breakpoint (465px)\nconst MINIMUM_SCROLLABLE_SPACE = 148;\n\nexport interface StickyColumnsModel {\n store: ReadonlyAsyncStore<StickyColumnsState>;\n style: {\n wrapper?: React.CSSProperties;\n };\n refs: {\n table: React.RefCallback<HTMLElement>;\n wrapper: React.RefCallback<HTMLElement>;\n cell: (columnId: PropertyKey, node: null | HTMLElement) => void;\n };\n}\n\nexport function useStickyColumns({\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n}: StickyColumnsProps): StickyColumnsModel {\n const store = useMemo(() => new StickyColumnsStore(), []);\n const wrapperRef = useRef<HTMLElement>(null) as React.MutableRefObject<null | HTMLElement>;\n const tableRef = useRef<HTMLElement>(null) as React.MutableRefObject<null | HTMLElement>;\n const cellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n\n const hasStickyColumns = stickyColumnsFirst + stickyColumnsLast > 0;\n\n const updateStickyStyles = useStableCallback(() => {\n if (wrapperRef.current && tableRef.current) {\n store.updateCellStyles({\n wrapper: wrapperRef.current,\n table: tableRef.current,\n cells: cellsRef.current,\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n });\n }\n });\n\n useResizeObserver(wrapperRef, updateStickyStyles);\n\n useResizeObserver(tableRef, updateStickyStyles);\n\n useEffect(() => {\n if (wrapperRef.current && tableRef.current) {\n store.updateCellStyles({\n wrapper: wrapperRef.current,\n table: tableRef.current,\n cells: cellsRef.current,\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n });\n }\n }, [store, stickyColumnsFirst, stickyColumnsLast, visibleColumns]);\n\n // Update wrapper styles imperatively to avoid unnecessary re-renders.\n useEffect(() => {\n if (!hasStickyColumns) {\n return;\n }\n\n const selector = (state: StickyColumnsState) => state.wrapperState;\n\n const updateWrapperStyles = (state: StickyColumnsWrapperState, prev: StickyColumnsWrapperState) => {\n if (isWrapperStatesEqual(state, prev)) {\n return;\n }\n\n if (wrapperRef.current) {\n wrapperRef.current.style.scrollPaddingInlineStart = state.scrollPaddingInlineStart + 'px';\n wrapperRef.current.style.scrollPaddingInlineEnd = state.scrollPaddingInlineEnd + 'px';\n }\n };\n\n const unsubscribe = store.subscribe(selector, (newState, prevState) =>\n updateWrapperStyles(selector(newState), selector(prevState))\n );\n return unsubscribe;\n }, [store, hasStickyColumns]);\n\n const setWrapper = useCallback(\n (node: null | HTMLElement) => {\n if (wrapperRef.current) {\n wrapperRef.current.removeEventListener('scroll', updateStickyStyles);\n }\n if (node && hasStickyColumns) {\n node.addEventListener('scroll', updateStickyStyles);\n }\n wrapperRef.current = node;\n },\n [hasStickyColumns, updateStickyStyles]\n );\n\n const setTable = useCallback((node: null | HTMLElement) => {\n tableRef.current = node;\n }, []);\n\n const setCell = useCallback((columnId: PropertyKey, node: null | HTMLElement) => {\n if (node) {\n cellsRef.current.set(columnId, node);\n } else {\n cellsRef.current.delete(columnId);\n }\n }, []);\n\n return {\n store,\n style: {\n // Provide wrapper styles as props so that a re-render won't cause invalidation.\n wrapper: hasStickyColumns ? { ...store.get().wrapperState } : undefined,\n },\n refs: { wrapper: setWrapper, table: setTable, cell: setCell },\n };\n}\n\ninterface UseStickyCellStylesProps {\n stickyColumns: StickyColumnsModel;\n columnId: PropertyKey;\n getClassName: (styles: null | StickyColumnsCellState) => Record<string, boolean>;\n // Optional column to inherit the boundary flags from. Used by group header cells\n // that span multiple leaves: the cell's offset is owned by `columnId` (one of its child\n // leaves), but the boundary shadow/border lives on a different leaf (the group's boundary child).\n // The hook keeps a single subscription/writer and merges the boundary leaf's\n // `lastInsetInline*` / `boundaryInline*` flags into the cell state passed to getClassName.\n boundaryColumnId?: PropertyKey;\n}\n\ninterface StickyCellStyles {\n ref: React.RefCallback<HTMLElement>;\n className?: string;\n style?: React.CSSProperties;\n}\n\n// Merges the boundary leaf's shadow and border flags into the position leaf's cell state.\n// Returns the position state untouched when there is no boundary column or no boundary state.\nfunction mergeBoundaryState(\n positionState: null | StickyColumnsCellState,\n boundaryState: null | StickyColumnsCellState\n): null | StickyColumnsCellState {\n if (!positionState || !boundaryState) {\n return positionState;\n }\n if (\n positionState.lastInsetInlineStart === boundaryState.lastInsetInlineStart &&\n positionState.lastInsetInlineEnd === boundaryState.lastInsetInlineEnd &&\n positionState.boundaryInlineStart === boundaryState.boundaryInlineStart &&\n positionState.boundaryInlineEnd === boundaryState.boundaryInlineEnd\n ) {\n return positionState;\n }\n return {\n ...positionState,\n lastInsetInlineStart: positionState.lastInsetInlineStart || boundaryState.lastInsetInlineStart,\n lastInsetInlineEnd: positionState.lastInsetInlineEnd || boundaryState.lastInsetInlineEnd,\n boundaryInlineStart: positionState.boundaryInlineStart || boundaryState.boundaryInlineStart,\n boundaryInlineEnd: positionState.boundaryInlineEnd || boundaryState.boundaryInlineEnd,\n };\n}\n\nexport function useStickyCellStyles({\n stickyColumns,\n columnId,\n getClassName,\n boundaryColumnId,\n}: UseStickyCellStylesProps): StickyCellStyles {\n const setCell = stickyColumns.refs.cell;\n\n // unsubscribeRef to hold the function to unsubscribe from the store's updates\n const unsubscribeRef = useRef<null | (() => void)>(null);\n\n // refCallback updates the cell ref and sets up the store subscription\n const refCallback = useCallback(\n (cellElement: null | HTMLElement) => {\n if (unsubscribeRef.current) {\n // Unsubscribe before we do any updates to avoid leaving any subscriptions hanging\n unsubscribeRef.current();\n }\n\n // Update cellRef and the store's state to point to the new DOM node\n setCell(columnId, cellElement);\n\n // Update cell styles imperatively to avoid unnecessary re-renders.\n const selector = (state: StickyColumnsState) => {\n const positionState = state.cellState.get(columnId) ?? null;\n const boundaryState = boundaryColumnId !== undefined ? (state.cellState.get(boundaryColumnId) ?? null) : null;\n return mergeBoundaryState(positionState, boundaryState);\n };\n\n const updateCellStyles = (state: null | StickyColumnsCellState, prev: null | StickyColumnsCellState) => {\n if (isCellStatesEqual(state, prev)) {\n return;\n }\n\n const className = getClassName(state);\n if (cellElement) {\n Object.keys(className).forEach(key => {\n if (className[key]) {\n cellElement.classList.add(key);\n } else {\n cellElement.classList.remove(key);\n }\n });\n cellElement.style.insetInlineStart =\n state?.offset.insetInlineStart !== undefined ? `${state.offset.insetInlineStart}px` : '';\n cellElement.style.insetInlineEnd =\n state?.offset.insetInlineEnd !== undefined ? `${state.offset.insetInlineEnd}px` : '';\n }\n };\n\n // If the node is not null (i.e., the table cell is being mounted or updated, not unmounted),\n // set up a new subscription to the store's updates\n if (cellElement) {\n unsubscribeRef.current = stickyColumns.store.subscribe(selector, (newState, prevState) => {\n updateCellStyles(selector(newState), selector(prevState));\n });\n }\n },\n\n // getClassName is expected to be pure\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [columnId, boundaryColumnId, setCell, stickyColumns.store]\n );\n\n // Provide cell styles as props so that a re-render won't cause invalidation.\n const storeState = stickyColumns.store.get();\n const positionStyles = storeState.cellState.get(columnId) ?? null;\n const boundaryStyles = boundaryColumnId !== undefined ? (storeState.cellState.get(boundaryColumnId) ?? null) : null;\n const mergedStyles = mergeBoundaryState(positionStyles, boundaryStyles);\n return {\n ref: refCallback,\n className: mergedStyles ? clsx(getClassName(mergedStyles)) : undefined,\n style: positionStyles?.offset ?? undefined,\n };\n}\n\ninterface UpdateCellStylesProps {\n wrapper: HTMLElement;\n table: HTMLElement;\n cells: Map<PropertyKey, HTMLElement>;\n visibleColumns: readonly PropertyKey[];\n stickyColumnsFirst: number;\n stickyColumnsLast: number;\n}\n\nclass StickyColumnsStore extends AsyncStore<StickyColumnsState> {\n private cellOffsets: CellOffsets = {\n offsets: new Map(),\n stickyWidthInlineStart: 0,\n stickyWidthInlineEnd: 0,\n };\n private isStuckToTheInlineStart = false;\n private isStuckToTheInlineEnd = false;\n private padInlineStart = false;\n\n constructor() {\n super({ cellState: new Map(), wrapperState: { scrollPaddingInlineStart: 0, scrollPaddingInlineEnd: 0 } });\n }\n\n public updateCellStyles(props: UpdateCellStylesProps) {\n const hasStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast > 0;\n const hadStickyColumns = this.cellOffsets.offsets.size > 0;\n\n if (hasStickyColumns || hadStickyColumns) {\n this.updateScroll(props);\n this.updateCellOffsets(props);\n this.set(() => ({\n cellState: this.generateCellStyles(props),\n wrapperState: {\n scrollPaddingInlineStart: this.cellOffsets.stickyWidthInlineStart,\n scrollPaddingInlineEnd: this.cellOffsets.stickyWidthInlineEnd,\n },\n }));\n }\n }\n\n private updateScroll(props: UpdateCellStylesProps) {\n const wrapperScrollInlineStart = getScrollInlineStart(props.wrapper);\n const wrapperScrollWidth = props.wrapper.scrollWidth;\n const wrapperClientWidth = props.wrapper.clientWidth;\n const tablePaddingInlineStart = parseFloat(getComputedStyle(props.table).paddingInlineStart) || 0;\n const tablePaddingInlineEnd = parseFloat(getComputedStyle(props.table).paddingInlineEnd) || 0;\n\n this.isStuckToTheInlineStart = wrapperScrollInlineStart > tablePaddingInlineStart;\n\n // Math.ceil() is used here to address an edge-case in certain browsers, where they return non-integer wrapperScrollInlineStart values\n // which are lower than expected (sub-pixel difference), resulting in the table always being in the \"stuck to the right\" state\n this.isStuckToTheInlineEnd =\n Math.ceil(wrapperScrollInlineStart) < wrapperScrollWidth - wrapperClientWidth - tablePaddingInlineEnd;\n\n this.padInlineStart = tablePaddingInlineStart !== 0 && this.isStuckToTheInlineStart;\n }\n\n private generateCellStyles = (props: UpdateCellStylesProps): Map<PropertyKey, StickyColumnsCellState> => {\n const isEnabled = this.isEnabled(props);\n const lastLeftStickyColumnIndex = props.stickyColumnsFirst - 1;\n const lastRightStickyColumnIndex = props.visibleColumns.length - props.stickyColumnsLast;\n\n return props.visibleColumns.reduce((acc, columnId, index) => {\n let stickySide = 'non-sticky';\n if (index < props.stickyColumnsFirst) {\n stickySide = 'inline-start';\n } else if (index >= props.visibleColumns.length - props.stickyColumnsLast) {\n stickySide = 'inline-end';\n }\n\n if (!isEnabled || stickySide === 'non-sticky') {\n return acc;\n }\n\n // Determine the offset of the sticky column using the `cellOffsets` state object\n const isFirstColumn = index === 0;\n const stickyColumnOffsetLeft = this.cellOffsets.offsets.get(columnId)?.first ?? 0;\n const stickyColumnOffsetRight = this.cellOffsets.offsets.get(columnId)?.last ?? 0;\n\n acc.set(columnId, {\n padInlineStart: isFirstColumn && this.padInlineStart,\n lastInsetInlineStart: this.isStuckToTheInlineStart && lastLeftStickyColumnIndex === index,\n lastInsetInlineEnd: this.isStuckToTheInlineEnd && lastRightStickyColumnIndex === index,\n boundaryInlineStart: lastLeftStickyColumnIndex === index,\n boundaryInlineEnd: lastRightStickyColumnIndex === index,\n offset: {\n insetInlineStart: stickySide === 'inline-start' ? stickyColumnOffsetLeft : undefined,\n insetInlineEnd: stickySide === 'inline-end' ? stickyColumnOffsetRight : undefined,\n },\n });\n return acc;\n }, new Map<PropertyKey, StickyColumnsCellState>());\n };\n\n private updateCellOffsets = (props: UpdateCellStylesProps): void => {\n this.cellOffsets = updateCellOffsets(props.cells, props);\n };\n\n private isEnabled = (props: UpdateCellStylesProps): boolean => {\n const noStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast === 0;\n if (noStickyColumns) {\n return false;\n }\n\n const wrapperWidth = getLogicalBoundingClientRect(props.wrapper).inlineSize;\n const tableWidth = getLogicalBoundingClientRect(props.table).inlineSize;\n const isWrapperScrollable = tableWidth > wrapperWidth;\n if (!isWrapperScrollable) {\n return false;\n }\n\n const totalStickySpace = this.cellOffsets.stickyWidthInlineStart + this.cellOffsets.stickyWidthInlineEnd;\n const tablePaddingLeft = parseFloat(getComputedStyle(props.table).paddingLeft) || 0;\n const tablePaddingRight = parseFloat(getComputedStyle(props.table).paddingRight) || 0;\n const hasEnoughScrollableSpace =\n totalStickySpace + MINIMUM_SCROLLABLE_SPACE + tablePaddingLeft + tablePaddingRight < wrapperWidth;\n if (!hasEnoughScrollableSpace) {\n return false;\n }\n\n return true;\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/table/sticky-columns/utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAElH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,IAAI,GAAG,sBAAsB,EAAE,EAAE,EAAE,IAAI,GAAG,sBAAsB,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/table/sticky-columns/utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAElH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,IAAI,GAAG,sBAAsB,EAAE,EAAE,EAAE,IAAI,GAAG,sBAAsB,GAAG,OAAO,CAa/G;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,yBAAyB,EAAE,EAAE,EAAE,yBAAyB,GAAG,OAAO,CAK1G;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,kBAAkB,GAAG,WAAW,CA6B9G"}
|
|
@@ -6,6 +6,8 @@ export function isCellStatesEqual(s1, s2) {
|
|
|
6
6
|
return (s1.padInlineStart === s2.padInlineStart &&
|
|
7
7
|
s1.lastInsetInlineStart === s2.lastInsetInlineStart &&
|
|
8
8
|
s1.lastInsetInlineEnd === s2.lastInsetInlineEnd &&
|
|
9
|
+
s1.boundaryInlineStart === s2.boundaryInlineStart &&
|
|
10
|
+
s1.boundaryInlineEnd === s2.boundaryInlineEnd &&
|
|
9
11
|
s1.offset.insetInlineStart === s2.offset.insetInlineStart &&
|
|
10
12
|
s1.offset.insetInlineEnd === s2.offset.insetInlineEnd);
|
|
11
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/table/sticky-columns/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getLogicalBoundingClientRect } from '@cloudscape-design/component-toolkit/internal';\n\nimport { CellOffsets, StickyColumnsCellState, StickyColumnsProps, StickyColumnsWrapperState } from './interfaces';\n\nexport function isCellStatesEqual(s1: null | StickyColumnsCellState, s2: null | StickyColumnsCellState): boolean {\n if (s1 && s2) {\n return (\n s1.padInlineStart === s2.padInlineStart &&\n s1.lastInsetInlineStart === s2.lastInsetInlineStart &&\n s1.lastInsetInlineEnd === s2.lastInsetInlineEnd &&\n s1.offset.insetInlineStart === s2.offset.insetInlineStart &&\n s1.offset.insetInlineEnd === s2.offset.insetInlineEnd\n );\n }\n return s1 === s2;\n}\n\nexport function isWrapperStatesEqual(s1: StickyColumnsWrapperState, s2: StickyColumnsWrapperState): boolean {\n return (\n s1.scrollPaddingInlineStart === s2.scrollPaddingInlineStart &&\n s1.scrollPaddingInlineEnd === s2.scrollPaddingInlineEnd\n );\n}\n\nexport function updateCellOffsets(cells: Map<PropertyKey, HTMLElement>, props: StickyColumnsProps): CellOffsets {\n const totalColumns = props.visibleColumns.length;\n\n const firstColumnsWidths: number[] = [];\n for (let i = 0; i < Math.min(totalColumns, props.stickyColumnsFirst); i++) {\n const element = cells.get(props.visibleColumns[i]);\n const cellWidth = element ? getLogicalBoundingClientRect(element).inlineSize : 0;\n firstColumnsWidths[i] = (firstColumnsWidths[i - 1] ?? 0) + cellWidth;\n }\n\n const lastColumnsWidths: number[] = [];\n for (let i = 0; i < Math.min(totalColumns, props.stickyColumnsLast); i++) {\n const element = cells.get(props.visibleColumns[totalColumns - 1 - i]);\n const cellWidth = element ? getLogicalBoundingClientRect(element).inlineSize : 0;\n lastColumnsWidths[i] = (lastColumnsWidths[i - 1] ?? 0) + cellWidth;\n }\n\n const stickyWidthInlineStart = firstColumnsWidths[props.stickyColumnsFirst - 1] ?? 0;\n const stickyWidthInlineEnd = lastColumnsWidths[props.stickyColumnsLast - 1] ?? 0;\n const offsets = props.visibleColumns.reduce(\n (map, columnId, columnIndex) =>\n map.set(columnId, {\n first: firstColumnsWidths[columnIndex - 1] ?? 0,\n last: lastColumnsWidths[totalColumns - 1 - columnIndex - 1] ?? 0,\n }),\n new Map()\n );\n\n return { offsets, stickyWidthInlineStart, stickyWidthInlineEnd };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/table/sticky-columns/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getLogicalBoundingClientRect } from '@cloudscape-design/component-toolkit/internal';\n\nimport { CellOffsets, StickyColumnsCellState, StickyColumnsProps, StickyColumnsWrapperState } from './interfaces';\n\nexport function isCellStatesEqual(s1: null | StickyColumnsCellState, s2: null | StickyColumnsCellState): boolean {\n if (s1 && s2) {\n return (\n s1.padInlineStart === s2.padInlineStart &&\n s1.lastInsetInlineStart === s2.lastInsetInlineStart &&\n s1.lastInsetInlineEnd === s2.lastInsetInlineEnd &&\n s1.boundaryInlineStart === s2.boundaryInlineStart &&\n s1.boundaryInlineEnd === s2.boundaryInlineEnd &&\n s1.offset.insetInlineStart === s2.offset.insetInlineStart &&\n s1.offset.insetInlineEnd === s2.offset.insetInlineEnd\n );\n }\n return s1 === s2;\n}\n\nexport function isWrapperStatesEqual(s1: StickyColumnsWrapperState, s2: StickyColumnsWrapperState): boolean {\n return (\n s1.scrollPaddingInlineStart === s2.scrollPaddingInlineStart &&\n s1.scrollPaddingInlineEnd === s2.scrollPaddingInlineEnd\n );\n}\n\nexport function updateCellOffsets(cells: Map<PropertyKey, HTMLElement>, props: StickyColumnsProps): CellOffsets {\n const totalColumns = props.visibleColumns.length;\n\n const firstColumnsWidths: number[] = [];\n for (let i = 0; i < Math.min(totalColumns, props.stickyColumnsFirst); i++) {\n const element = cells.get(props.visibleColumns[i]);\n const cellWidth = element ? getLogicalBoundingClientRect(element).inlineSize : 0;\n firstColumnsWidths[i] = (firstColumnsWidths[i - 1] ?? 0) + cellWidth;\n }\n\n const lastColumnsWidths: number[] = [];\n for (let i = 0; i < Math.min(totalColumns, props.stickyColumnsLast); i++) {\n const element = cells.get(props.visibleColumns[totalColumns - 1 - i]);\n const cellWidth = element ? getLogicalBoundingClientRect(element).inlineSize : 0;\n lastColumnsWidths[i] = (lastColumnsWidths[i - 1] ?? 0) + cellWidth;\n }\n\n const stickyWidthInlineStart = firstColumnsWidths[props.stickyColumnsFirst - 1] ?? 0;\n const stickyWidthInlineEnd = lastColumnsWidths[props.stickyColumnsLast - 1] ?? 0;\n const offsets = props.visibleColumns.reduce(\n (map, columnId, columnIndex) =>\n map.set(columnId, {\n first: firstColumnsWidths[columnIndex - 1] ?? 0,\n last: lastColumnsWidths[totalColumns - 1 - columnIndex - 1] ?? 0,\n }),\n new Map()\n );\n\n return { offsets, stickyWidthInlineStart, stickyWidthInlineEnd };\n}\n"]}
|
package/table/utils.d.ts
CHANGED
|
@@ -16,6 +16,4 @@ export declare function getVisibleColumnDefinitions<T>({
|
|
|
16
16
|
visibleColumns?: ReadonlyArray<string>;
|
|
17
17
|
columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;
|
|
18
18
|
}): readonly TableProps.ColumnDefinition<T>[];
|
|
19
|
-
export declare function getStickyClassNames(styles: Record<string, string>, props: StickyColumnsCellState | null):
|
|
20
|
-
[x: string]: boolean;
|
|
21
|
-
};
|
|
19
|
+
export declare function getStickyClassNames(styles: Record<string, string>, props: StickyColumnsCellState | null): Record<string, boolean>;
|
package/table/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/table/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAKtE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,MAAM,QAK/F,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,QAKvF,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,QAAQ,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,oBAEpF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,UAAU,CAAC,OAAO,GAAG,SAAS,KAAG,sBAAsB,CAAC,SAAS,CAG5G,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAChE,iBAAiB,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,QASpE;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,EAC7C,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,EAAE;IACD,aAAa,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAClE,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;CAClE,6CASA;AA4BD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/table/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAKtE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,MAAM,QAK/F,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,QAKvF,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,QAAQ,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,oBAEpF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,UAAU,CAAC,OAAO,GAAG,SAAS,KAAG,sBAAsB,CAAC,SAAS,CAG5G,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAChE,iBAAiB,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,QASpE;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,EAC7C,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,EAAE;IACD,aAAa,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAClE,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;CAClE,6CASA;AA4BD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI,2BAiBvG"}
|
package/table/utils.js
CHANGED
|
@@ -54,12 +54,19 @@ function getVisibleColumnDefinitionsFromVisibleColumns({ visibleColumns, columnD
|
|
|
54
54
|
return columnDefinitions.filter(({ id }) => id !== undefined && ids.has(id));
|
|
55
55
|
}
|
|
56
56
|
export function getStickyClassNames(styles, props) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
57
|
+
const classNames = {};
|
|
58
|
+
const addClassName = (name, isActive) => {
|
|
59
|
+
if (styles[name] !== undefined) {
|
|
60
|
+
classNames[styles[name]] = isActive;
|
|
61
|
+
}
|
|
62
62
|
};
|
|
63
|
+
addClassName('sticky-cell', !!props);
|
|
64
|
+
addClassName('sticky-cell-pad-inline-start', !!(props === null || props === void 0 ? void 0 : props.padInlineStart));
|
|
65
|
+
addClassName('sticky-cell-last-inline-start', !!(props === null || props === void 0 ? void 0 : props.lastInsetInlineStart));
|
|
66
|
+
addClassName('sticky-cell-last-inline-end', !!(props === null || props === void 0 ? void 0 : props.lastInsetInlineEnd));
|
|
67
|
+
addClassName('sticky-cell-boundary-inline-start', !!(props === null || props === void 0 ? void 0 : props.boundaryInlineStart));
|
|
68
|
+
addClassName('sticky-cell-boundary-inline-end', !!(props === null || props === void 0 ? void 0 : props.boundaryInlineEnd));
|
|
69
|
+
return classNames;
|
|
63
70
|
}
|
|
64
71
|
function flattenVisibleColumnIds(items) {
|
|
65
72
|
const ids = [];
|
package/table/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/table/utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/table/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { InternalContainerProps } from '../container/internal';\nimport { TableProps } from './interfaces';\nimport { StickyColumnsCellState } from './sticky-columns';\n\nexport const applyTrackBy = <T>(trackBy: TableProps.TrackBy<T>, item: T) => {\n if (typeof trackBy === 'function') {\n return trackBy(item);\n }\n return (item as any)[trackBy];\n};\n\nexport const getItemKey = <T>(trackBy: TableProps.TrackBy<T> | undefined, item: T, index: number) => {\n if (!trackBy) {\n return index;\n }\n return applyTrackBy(trackBy, item);\n};\n\nexport const getTrackableValue = <T>(trackBy: TableProps.TrackBy<T> | undefined, item: T) => {\n if (!trackBy) {\n return item;\n }\n return applyTrackBy(trackBy, item);\n};\n\nexport const getColumnKey = <T>(column: TableProps.ColumnDefinition<T>, index: number) => {\n return column.id || index;\n};\n\nexport const toContainerVariant = (variant: TableProps.Variant | undefined): InternalContainerProps['variant'] => {\n const isDefaultVariant = !variant || variant === 'container';\n return isDefaultVariant ? 'default' : variant === 'borderless' ? 'embedded' : variant;\n};\n\nexport function checkSortingState<T>(\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>,\n sortingComparator: TableProps.SortingColumn<T>['sortingComparator']\n) {\n const matchedColumn = columnDefinitions.filter(column => column.sortingComparator === sortingComparator)[0];\n if (!matchedColumn) {\n warnOnce(\n 'Table',\n 'Currently active sorting comparator was not found in any columns. Make sure to provide the same comparator function instance on each render.'\n );\n }\n}\n\nexport function getVisibleColumnDefinitions<T>({\n columnDisplay,\n visibleColumns,\n columnDefinitions,\n}: {\n columnDisplay?: ReadonlyArray<TableProps.ColumnDisplayProperties>;\n visibleColumns?: ReadonlyArray<string>;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n // columnsDisplay has a precedence over visibleColumns.\n if (columnDisplay) {\n return getVisibleColumnDefinitionsFromColumnDisplay({ columnDisplay, columnDefinitions });\n } else if (visibleColumns) {\n return getVisibleColumnDefinitionsFromVisibleColumns({ visibleColumns, columnDefinitions });\n } else {\n return columnDefinitions;\n }\n}\n\nfunction getVisibleColumnDefinitionsFromColumnDisplay<T>({\n columnDisplay,\n columnDefinitions,\n}: {\n columnDisplay: ReadonlyArray<TableProps.ColumnDisplayProperties>;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n const columnDefinitionsById: Record<string, TableProps.ColumnDefinition<T>> = columnDefinitions.reduce(\n (accumulator, item) => (item.id === undefined ? accumulator : { ...accumulator, [item.id]: item }),\n {}\n );\n const visibleIds = flattenVisibleColumnIds(columnDisplay);\n return visibleIds.map(id => columnDefinitionsById[id]).filter(Boolean);\n}\n\nfunction getVisibleColumnDefinitionsFromVisibleColumns<T>({\n visibleColumns,\n columnDefinitions,\n}: {\n visibleColumns: ReadonlyArray<string>;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n const ids = new Set(visibleColumns);\n return columnDefinitions.filter(({ id }) => id !== undefined && ids.has(id));\n}\n\nexport function getStickyClassNames(styles: Record<string, string>, props: StickyColumnsCellState | null) {\n const classNames: Record<string, boolean> = {};\n\n const addClassName = (name: string, isActive: boolean) => {\n if (styles[name] !== undefined) {\n classNames[styles[name]] = isActive;\n }\n };\n\n addClassName('sticky-cell', !!props);\n addClassName('sticky-cell-pad-inline-start', !!props?.padInlineStart);\n addClassName('sticky-cell-last-inline-start', !!props?.lastInsetInlineStart);\n addClassName('sticky-cell-last-inline-end', !!props?.lastInsetInlineEnd);\n addClassName('sticky-cell-boundary-inline-start', !!props?.boundaryInlineStart);\n addClassName('sticky-cell-boundary-inline-end', !!props?.boundaryInlineEnd);\n\n return classNames;\n}\n\nfunction flattenVisibleColumnIds(items: ReadonlyArray<TableProps.ColumnDisplayProperties>): string[] {\n const ids: string[] = [];\n for (const item of items) {\n if (item.type === 'group') {\n ids.push(...flattenVisibleColumnIds(item.children));\n } else if (item.visible) {\n ids.push(item.id);\n }\n }\n return ids;\n}\n"]}
|