@cloudscape-design/components 3.0.635 → 3.0.637
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/main.d.ts.map +1 -1
- package/app-layout/visual-refresh/main.js +2 -2
- package/app-layout/visual-refresh/main.js.map +1 -1
- package/internal/components/live-region/index.js +2 -2
- package/internal/components/live-region/index.js.map +1 -1
- package/internal/components/live-region/styles.css.js +2 -1
- package/internal/components/live-region/styles.scoped.css +5 -1
- package/internal/components/live-region/styles.selectors.js +2 -1
- package/internal/environment.js +1 -1
- package/internal/environment.json +1 -1
- package/internal/manifest.json +1 -1
- package/package.json +1 -1
- package/progress-bar/index.d.ts +1 -1
- package/progress-bar/index.d.ts.map +1 -1
- package/progress-bar/index.js +6 -4
- package/progress-bar/index.js.map +1 -1
- package/progress-bar/interfaces.d.ts +4 -0
- package/progress-bar/interfaces.d.ts.map +1 -1
- package/progress-bar/interfaces.js.map +1 -1
- package/progress-bar/internal.d.ts +4 -2
- package/progress-bar/internal.d.ts.map +1 -1
- package/progress-bar/internal.js +4 -4
- package/progress-bar/internal.js.map +1 -1
- package/split-panel/icons/resize-handler.d.ts.map +1 -1
- package/split-panel/icons/resize-handler.js +1 -1
- package/split-panel/icons/resize-handler.js.map +1 -1
- package/table/body-cell/styles.css.js +45 -44
- package/table/body-cell/styles.scoped.css +186 -165
- package/table/body-cell/styles.selectors.js +45 -44
- package/table/body-cell/td-element.js +2 -2
- package/table/body-cell/td-element.js.map +1 -1
- package/table/expandable-rows/expandable-rows-utils.d.ts +5 -3
- package/table/expandable-rows/expandable-rows-utils.d.ts.map +1 -1
- package/table/expandable-rows/expandable-rows-utils.js +10 -10
- package/table/expandable-rows/expandable-rows-utils.js.map +1 -1
- package/table/interfaces.d.ts +40 -1
- package/table/interfaces.d.ts.map +1 -1
- package/table/interfaces.js.map +1 -1
- package/table/internal.d.ts.map +1 -1
- package/table/internal.js +56 -32
- package/table/internal.js.map +1 -1
- package/table/progressive-loading/items-loader.d.ts +13 -0
- package/table/progressive-loading/items-loader.d.ts.map +1 -0
- package/table/progressive-loading/items-loader.js +26 -0
- package/table/progressive-loading/items-loader.js.map +1 -0
- package/table/progressive-loading/progressive-loading-utils.d.ts +14 -0
- package/table/progressive-loading/progressive-loading-utils.d.ts.map +1 -0
- package/table/progressive-loading/progressive-loading-utils.js +42 -0
- package/table/progressive-loading/progressive-loading-utils.js.map +1 -0
- package/table/progressive-loading/styles.css.js +6 -0
- package/table/progressive-loading/styles.scoped.css +7 -0
- package/table/progressive-loading/styles.selectors.js +7 -0
package/table/internal.js
CHANGED
|
@@ -42,6 +42,8 @@ import { NoDataCell } from './no-data-cell';
|
|
|
42
42
|
import { usePerformanceMarks } from '../internal/hooks/use-performance-marks';
|
|
43
43
|
import { getContentHeaderClassName } from '../internal/utils/content-header-utils';
|
|
44
44
|
import { useExpandableTableProps } from './expandable-rows/expandable-rows-utils';
|
|
45
|
+
import { ItemsLoader } from './progressive-loading/items-loader';
|
|
46
|
+
import { useProgressiveLoadingProps } from './progressive-loading/progressive-loading-utils';
|
|
45
47
|
import { usePrevious } from '../internal/hooks/use-previous';
|
|
46
48
|
import { warnOnce } from '@cloudscape-design/component-toolkit/internal';
|
|
47
49
|
const GRID_NAVIGATION_PAGE_SIZE = 10;
|
|
@@ -54,7 +56,7 @@ export const InternalTableAsSubstep = React.forwardRef((props, ref) => {
|
|
|
54
56
|
});
|
|
55
57
|
const InternalTable = React.forwardRef((_a, ref) => {
|
|
56
58
|
var _b, _c, _d;
|
|
57
|
-
var { header, footer, empty, filter, pagination, preferences, items, columnDefinitions, trackBy, loading, loadingText, selectionType, selectedItems, isItemDisabled, ariaLabels, onSelectionChange, onSortingChange, sortingColumn, sortingDescending, sortingDisabled, visibleColumns, stickyHeader, stickyHeaderVerticalOffset, onRowClick, onRowContextMenu, wrapLines, stripedRows, contentDensity, submitEdit, onEditCancel, resizableColumns, onColumnWidthsChange, variant, __internalRootRef, totalItemsCount, firstIndex, renderAriaLive, stickyColumns, columnDisplay, enableKeyboardNavigation, expandableRows, __funnelSubStepProps } = _a, rest = __rest(_a, ["header", "footer", "empty", "filter", "pagination", "preferences", "items", "columnDefinitions", "trackBy", "loading", "loadingText", "selectionType", "selectedItems", "isItemDisabled", "ariaLabels", "onSelectionChange", "onSortingChange", "sortingColumn", "sortingDescending", "sortingDisabled", "visibleColumns", "stickyHeader", "stickyHeaderVerticalOffset", "onRowClick", "onRowContextMenu", "wrapLines", "stripedRows", "contentDensity", "submitEdit", "onEditCancel", "resizableColumns", "onColumnWidthsChange", "variant", "__internalRootRef", "totalItemsCount", "firstIndex", "renderAriaLive", "stickyColumns", "columnDisplay", "enableKeyboardNavigation", "expandableRows", "__funnelSubStepProps"]);
|
|
59
|
+
var { header, footer, empty, filter, pagination, preferences, items, columnDefinitions, trackBy, loading, loadingText, selectionType, selectedItems, isItemDisabled, ariaLabels, onSelectionChange, onSortingChange, sortingColumn, sortingDescending, sortingDisabled, visibleColumns, stickyHeader, stickyHeaderVerticalOffset, onRowClick, onRowContextMenu, wrapLines, stripedRows, contentDensity, submitEdit, onEditCancel, resizableColumns, onColumnWidthsChange, variant, __internalRootRef, totalItemsCount, firstIndex, renderAriaLive, stickyColumns, columnDisplay, enableKeyboardNavigation, expandableRows, getLoadingStatus, renderLoaderPending, renderLoaderLoading, renderLoaderError, __funnelSubStepProps } = _a, rest = __rest(_a, ["header", "footer", "empty", "filter", "pagination", "preferences", "items", "columnDefinitions", "trackBy", "loading", "loadingText", "selectionType", "selectedItems", "isItemDisabled", "ariaLabels", "onSelectionChange", "onSortingChange", "sortingColumn", "sortingDescending", "sortingDisabled", "visibleColumns", "stickyHeader", "stickyHeaderVerticalOffset", "onRowClick", "onRowContextMenu", "wrapLines", "stripedRows", "contentDensity", "submitEdit", "onEditCancel", "resizableColumns", "onColumnWidthsChange", "variant", "__internalRootRef", "totalItemsCount", "firstIndex", "renderAriaLive", "stickyColumns", "columnDisplay", "enableKeyboardNavigation", "expandableRows", "getLoadingStatus", "renderLoaderPending", "renderLoaderLoading", "renderLoaderError", "__funnelSubStepProps"]);
|
|
58
60
|
// Keyboard navigation defaults to `true` for tables with expandable rows.
|
|
59
61
|
if (expandableRows && enableKeyboardNavigation === undefined) {
|
|
60
62
|
enableKeyboardNavigation = true;
|
|
@@ -72,6 +74,11 @@ const InternalTable = React.forwardRef((_a, ref) => {
|
|
|
72
74
|
trackBy,
|
|
73
75
|
ariaLabels,
|
|
74
76
|
});
|
|
77
|
+
const { allRows } = useProgressiveLoadingProps({
|
|
78
|
+
items: allItems,
|
|
79
|
+
getLoadingStatus,
|
|
80
|
+
getExpandableItemProps,
|
|
81
|
+
});
|
|
75
82
|
const [containerWidth, wrapperMeasureRef] = useContainerQuery(rect => rect.contentBoxWidth);
|
|
76
83
|
const wrapperMeasureRefObject = useRef(null);
|
|
77
84
|
const wrapperMeasureMergedRef = useMergeRefs(wrapperMeasureRef, wrapperMeasureRefObject);
|
|
@@ -117,6 +124,7 @@ const InternalTable = React.forwardRef((_a, ref) => {
|
|
|
117
124
|
ariaLabels,
|
|
118
125
|
loading,
|
|
119
126
|
});
|
|
127
|
+
const isRowSelected = (row) => row.type === 'data' && isItemSelected(row.item);
|
|
120
128
|
if (isDevelopment) {
|
|
121
129
|
if (resizableColumns) {
|
|
122
130
|
checkColumnWidths(columnDefinitions);
|
|
@@ -210,7 +218,7 @@ const InternalTable = React.forwardRef((_a, ref) => {
|
|
|
210
218
|
selectionType,
|
|
211
219
|
tableRoot: tableRefObject,
|
|
212
220
|
columnDefinitions: visibleColumnDefinitions,
|
|
213
|
-
numRows:
|
|
221
|
+
numRows: allRows === null || allRows === void 0 ? void 0 : allRows.length,
|
|
214
222
|
});
|
|
215
223
|
const toolsHeaderPerformanceMarkRef = useRef(null);
|
|
216
224
|
// If is mobile, we take into consideration the AppLayout's mobile bar and we subtract the tools wrapper height so only the table header is sticky
|
|
@@ -251,47 +259,63 @@ const InternalTable = React.forwardRef((_a, ref) => {
|
|
|
251
259
|
})),
|
|
252
260
|
React.createElement(Thead, Object.assign({ ref: theadRef, hidden: stickyHeader, onFocusedComponentChange: focusId => { var _a; return (_a = stickyHeaderRef.current) === null || _a === void 0 ? void 0 : _a.setFocus(focusId); } }, theadProps)),
|
|
253
261
|
React.createElement("tbody", null, loading || allItems.length === 0 ? (React.createElement("tr", null,
|
|
254
|
-
React.createElement(NoDataCell, { totalColumnsCount: totalColumnsCount, hasFooter: hasFooter, loading: loading, loadingText: loadingText, empty: empty, tableRef: tableRefObject, containerRef: wrapperMeasureRefObject }))) : (
|
|
262
|
+
React.createElement(NoDataCell, { totalColumnsCount: totalColumnsCount, hasFooter: hasFooter, loading: loading, loadingText: loadingText, empty: empty, tableRef: tableRefObject, containerRef: wrapperMeasureRefObject }))) : (allRows.map((row, rowIndex) => {
|
|
255
263
|
const isFirstRow = rowIndex === 0;
|
|
256
|
-
const isLastRow = rowIndex ===
|
|
264
|
+
const isLastRow = rowIndex === allRows.length - 1;
|
|
265
|
+
const expandableProps = row.type === 'data' ? getExpandableItemProps(row.item) : undefined;
|
|
266
|
+
const rowRoleProps = getTableRowRoleProps(Object.assign({ tableRole,
|
|
267
|
+
firstIndex,
|
|
268
|
+
rowIndex, level: row.type === 'loader' ? row.level : undefined }, expandableProps));
|
|
269
|
+
const getTableItemKey = (item) => getItemKey(trackBy, item, rowIndex);
|
|
257
270
|
const sharedCellProps = {
|
|
271
|
+
isVisualRefresh,
|
|
258
272
|
isFirstRow,
|
|
259
273
|
isLastRow,
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
isNextSelected: hasSelection && !isLastRow && isItemSelected(allItems[rowIndex + 1]),
|
|
274
|
+
isSelected: hasSelection && isRowSelected(row),
|
|
275
|
+
isPrevSelected: hasSelection && !isFirstRow && isRowSelected(allRows[rowIndex - 1]),
|
|
276
|
+
isNextSelected: hasSelection && !isLastRow && isRowSelected(allRows[rowIndex + 1]),
|
|
264
277
|
isEvenRow: rowIndex % 2 === 0,
|
|
265
|
-
hasFooter,
|
|
266
278
|
stripedRows,
|
|
279
|
+
hasSelection,
|
|
280
|
+
hasFooter,
|
|
267
281
|
stickyState,
|
|
268
282
|
tableRole,
|
|
269
283
|
};
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
284
|
+
if (row.type === 'data') {
|
|
285
|
+
return (React.createElement("tr", Object.assign({ key: getTableItemKey(row.item), className: clsx(styles.row, sharedCellProps.isSelected && styles['row-selected']), onFocus: ({ currentTarget }) => {
|
|
286
|
+
var _a;
|
|
287
|
+
// When an element inside table row receives focus we want to adjust the scroll.
|
|
288
|
+
// However, that behaviour is unwanted when the focus is received as result of a click
|
|
289
|
+
// as it causes the click to never reach the target element.
|
|
290
|
+
if (!currentTarget.contains(getMouseDownTarget())) {
|
|
291
|
+
(_a = stickyHeaderRef.current) === null || _a === void 0 ? void 0 : _a.scrollToRow(currentTarget);
|
|
292
|
+
}
|
|
293
|
+
} }, focusMarkers.item, { onClick: onRowClickHandler && onRowClickHandler.bind(null, rowIndex, row.item), onContextMenu: onRowContextMenuHandler && onRowContextMenuHandler.bind(null, rowIndex, row.item) }, rowRoleProps),
|
|
294
|
+
getItemSelectionProps && (React.createElement(TableTdElement, Object.assign({}, sharedCellProps, { className: clsx(styles['selection-control']), wrapLines: false, columnId: selectionColumnId, colIndex: 0 }),
|
|
295
|
+
React.createElement(SelectionControl, Object.assign({ onFocusDown: moveFocusDown, onFocusUp: moveFocusUp }, getItemSelectionProps(row.item))))),
|
|
296
|
+
visibleColumnDefinitions.map((column, colIndex) => {
|
|
297
|
+
var _a;
|
|
298
|
+
const isEditing = cellEditing.checkEditing({ rowIndex, colIndex });
|
|
299
|
+
const successfulEdit = cellEditing.checkLastSuccessfulEdit({ rowIndex, colIndex });
|
|
300
|
+
const isEditable = !!column.editConfig && !cellEditing.isLoading;
|
|
301
|
+
const cellExpandableProps = isExpandable && colIndex === 0 ? expandableProps : undefined;
|
|
302
|
+
return (React.createElement(TableBodyCell, Object.assign({ key: getColumnKey(column, colIndex) }, sharedCellProps, { style: resizableColumns
|
|
303
|
+
? {}
|
|
304
|
+
: {
|
|
305
|
+
width: column.width,
|
|
306
|
+
minWidth: column.minWidth,
|
|
307
|
+
maxWidth: column.maxWidth,
|
|
308
|
+
}, ariaLabels: ariaLabels, column: column, item: row.item, wrapLines: wrapLines, isEditable: isEditable, isEditing: isEditing, isRowHeader: column.isRowHeader, successfulEdit: successfulEdit, resizableColumns: resizableColumns, onEditStart: () => cellEditing.startEdit({ rowIndex, colIndex }), onEditEnd: editCancelled => cellEditing.completeEdit({ rowIndex, colIndex }, editCancelled), submitEdit: cellEditing.submitEdit, columnId: (_a = column.id) !== null && _a !== void 0 ? _a : colIndex, colIndex: colIndex + colIndexOffset }, cellExpandableProps)));
|
|
309
|
+
})));
|
|
310
|
+
}
|
|
311
|
+
return (React.createElement("tr", Object.assign({
|
|
312
|
+
// The key includes both unique item identifier and row index to avoid React caching.
|
|
313
|
+
// That is to avoid collisions when the next loader is rendered.
|
|
314
|
+
key: (row.item ? getTableItemKey(row.item) : 'root') + rowIndex, className: styles.row }, rowRoleProps),
|
|
315
|
+
getItemSelectionProps && (React.createElement(TableTdElement, Object.assign({}, sharedCellProps, { className: clsx(styles['selection-control']), wrapLines: false, columnId: selectionColumnId, colIndex: 0 }), null)),
|
|
282
316
|
visibleColumnDefinitions.map((column, colIndex) => {
|
|
283
317
|
var _a;
|
|
284
|
-
|
|
285
|
-
const successfulEdit = cellEditing.checkLastSuccessfulEdit({ rowIndex, colIndex });
|
|
286
|
-
const isEditable = !!column.editConfig && !cellEditing.isLoading;
|
|
287
|
-
const expandableCellProps = isExpandable && colIndex === 0 ? expandableItemProps : undefined;
|
|
288
|
-
return (React.createElement(TableBodyCell, Object.assign({ key: getColumnKey(column, colIndex) }, sharedCellProps, { style: resizableColumns
|
|
289
|
-
? {}
|
|
290
|
-
: {
|
|
291
|
-
width: column.width,
|
|
292
|
-
minWidth: column.minWidth,
|
|
293
|
-
maxWidth: column.maxWidth,
|
|
294
|
-
}, ariaLabels: ariaLabels, column: column, item: item, wrapLines: wrapLines, isEditable: isEditable, isEditing: isEditing, isRowHeader: column.isRowHeader, resizableColumns: resizableColumns, successfulEdit: successfulEdit, onEditStart: () => cellEditing.startEdit({ rowIndex, colIndex }), onEditEnd: editCancelled => cellEditing.completeEdit({ rowIndex, colIndex }, editCancelled), submitEdit: cellEditing.submitEdit, columnId: (_a = column.id) !== null && _a !== void 0 ? _a : colIndex, colIndex: colIndex + colIndexOffset }, expandableCellProps)));
|
|
318
|
+
return (React.createElement(TableTdElement, Object.assign({ key: getColumnKey(column, colIndex) }, sharedCellProps, { wrapLines: false, columnId: (_a = column.id) !== null && _a !== void 0 ? _a : colIndex, colIndex: colIndex + colIndexOffset, isRowHeader: colIndex === 0, level: row.level }), colIndex === 0 ? (React.createElement(ItemsLoader, { item: row.item, loadingStatus: row.status, renderLoaderPending: renderLoaderPending, renderLoaderLoading: renderLoaderLoading, renderLoaderError: renderLoaderError, trackBy: trackBy })) : null));
|
|
295
319
|
})));
|
|
296
320
|
}))))),
|
|
297
321
|
resizableColumns && React.createElement(ResizeTracker, null)),
|
package/table/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/table/internal.tsx"],"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 clsx from 'clsx';\nimport React, { useCallback, useImperativeHandle, useRef } from 'react';\nimport { TableForwardRefType, TableProps } from './interfaces';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\nimport InternalContainer, { InternalContainerProps } from '../container/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport ToolsHeader from './tools-header';\nimport Thead, { TheadProps } from './thead';\nimport { TableBodyCell } from './body-cell';\nimport { supportsStickyPosition } from '../internal/utils/dom';\nimport { checkSortingState, getColumnKey, getItemKey, getVisibleColumnDefinitions, toContainerVariant } from './utils';\nimport { useRowEvents } from './use-row-events';\nimport { SelectionControl, focusMarkers, useSelectionFocusMove, useSelection } from './selection';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { isDevelopment } from '../internal/is-development';\nimport { ColumnWidthDefinition, ColumnWidthsProvider, DEFAULT_COLUMN_WIDTH } from './use-column-widths';\nimport { useScrollSync } from '../internal/hooks/use-scroll-sync';\nimport { ResizeTracker } from './resizer';\nimport styles from './styles.css.js';\nimport headerStyles from '../header/styles.css.js';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport StickyHeader, { StickyHeaderRef } from './sticky-header';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport useMouseDownTarget from '../internal/hooks/use-mouse-down-target';\nimport { useDynamicOverlap } from '../internal/hooks/use-dynamic-overlap';\nimport LiveRegion from '../internal/components/live-region';\nimport useTableFocusNavigation from './use-table-focus-navigation';\nimport { SomeRequired } from '../internal/types';\nimport { TableTdElement } from './body-cell/td-element';\nimport { useStickyColumns } from './sticky-columns';\nimport { StickyScrollbar } from './sticky-scrollbar';\nimport { checkColumnWidths } from './column-widths-utils';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\nimport {\n GridNavigationProvider,\n TableRole,\n getTableRoleProps,\n getTableRowRoleProps,\n getTableWrapperRoleProps,\n} from './table-role';\nimport { useCellEditing } from './use-cell-editing';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport { CollectionLabelContext } from '../internal/context/collection-label-context';\nimport { useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport { NoDataCell } from './no-data-cell';\nimport { usePerformanceMarks } from '../internal/hooks/use-performance-marks';\nimport { getContentHeaderClassName } from '../internal/utils/content-header-utils';\nimport { useExpandableTableProps } from './expandable-rows/expandable-rows-utils';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nconst GRID_NAVIGATION_PAGE_SIZE = 10;\nconst SELECTION_COLUMN_WIDTH = 54;\nconst selectionColumnId = Symbol('selection-column-id');\n\ntype InternalTableProps<T> = SomeRequired<TableProps<T>, 'items' | 'selectedItems' | 'variant' | 'firstIndex'> &\n InternalBaseComponentProps & {\n __funnelSubStepProps?: InternalContainerProps['__funnelSubStepProps'];\n };\n\nexport const InternalTableAsSubstep = React.forwardRef(\n <T,>(props: InternalTableProps<T>, ref: React.Ref<TableProps.Ref>) => {\n const { funnelSubStepProps } = useFunnelSubStep();\n\n const tableProps: InternalTableProps<T> = {\n ...props,\n __funnelSubStepProps: funnelSubStepProps,\n };\n\n return <InternalTable {...tableProps} ref={ref} />;\n }\n) as TableForwardRefType;\n\nconst InternalTable = React.forwardRef(\n <T,>(\n {\n header,\n footer,\n empty,\n filter,\n pagination,\n preferences,\n items,\n columnDefinitions,\n trackBy,\n loading,\n loadingText,\n selectionType,\n selectedItems,\n isItemDisabled,\n ariaLabels,\n onSelectionChange,\n onSortingChange,\n sortingColumn,\n sortingDescending,\n sortingDisabled,\n visibleColumns,\n stickyHeader,\n stickyHeaderVerticalOffset,\n onRowClick,\n onRowContextMenu,\n wrapLines,\n stripedRows,\n contentDensity,\n submitEdit,\n onEditCancel,\n resizableColumns,\n onColumnWidthsChange,\n variant,\n __internalRootRef,\n totalItemsCount,\n firstIndex,\n renderAriaLive,\n stickyColumns,\n columnDisplay,\n enableKeyboardNavigation,\n expandableRows,\n __funnelSubStepProps,\n ...rest\n }: InternalTableProps<T>,\n ref: React.Ref<TableProps.Ref>\n ) => {\n // Keyboard navigation defaults to `true` for tables with expandable rows.\n if (expandableRows && enableKeyboardNavigation === undefined) {\n enableKeyboardNavigation = true;\n }\n\n const baseProps = getBaseProps(rest);\n\n const prevStickyHeader = usePrevious(stickyHeader);\n if (prevStickyHeader !== undefined && !!stickyHeader !== !!prevStickyHeader) {\n warnOnce(\n 'Table',\n `\\`stickyHeader\\` has changed from \"${prevStickyHeader}\" to \"${stickyHeader}\". It is not recommended to change the value of this property during the component lifecycle. Please set it to either \"true\" or \"false\" unconditionally.`\n );\n }\n\n stickyHeader = stickyHeader && supportsStickyPosition();\n const isMobile = useMobile();\n\n const { isExpandable, allItems, getExpandableItemProps } = useExpandableTableProps({\n items,\n expandableRows,\n trackBy,\n ariaLabels,\n });\n\n const [containerWidth, wrapperMeasureRef] = useContainerQuery<number>(rect => rect.contentBoxWidth);\n const wrapperMeasureRefObject = useRef(null);\n const wrapperMeasureMergedRef = useMergeRefs(wrapperMeasureRef, wrapperMeasureRefObject);\n\n const [tableWidth, tableMeasureRef] = useContainerQuery<number>(rect => rect.contentBoxWidth);\n const tableRefObject = useRef(null);\n\n const secondaryWrapperRef = React.useRef<HTMLDivElement>(null);\n const theadRef = useRef<HTMLTableRowElement>(null);\n const stickyHeaderRef = React.useRef<StickyHeaderRef>(null);\n const scrollbarRef = React.useRef<HTMLDivElement>(null);\n const { cancelEdit, ...cellEditing } = useCellEditing({ onCancel: onEditCancel, onSubmit: submitEdit });\n\n usePerformanceMarks(\n 'table',\n true,\n tableRefObject,\n () => {\n /* istanbul ignore next: performance marks do not work in JSDOM */\n const headerText =\n toolsHeaderPerformanceMarkRef.current?.querySelector<HTMLElement>(`.${headerStyles['heading-text']}`)\n ?.innerText ?? toolsHeaderPerformanceMarkRef.current?.innerText;\n\n return {\n loading: loading ?? false,\n header: headerText,\n };\n },\n [loading]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n scrollToTop: stickyHeaderRef.current?.scrollToTop || (() => undefined),\n cancelEdit,\n }),\n [cancelEdit]\n );\n\n const wrapperRefObject = useRef(null);\n const handleScroll = useScrollSync([wrapperRefObject, scrollbarRef, secondaryWrapperRef]);\n\n const { moveFocusDown, moveFocusUp, moveFocus } = useSelectionFocusMove(selectionType, allItems.length);\n const { onRowClickHandler, onRowContextMenuHandler } = useRowEvents({ onRowClick, onRowContextMenu });\n\n const visibleColumnDefinitions = getVisibleColumnDefinitions({\n columnDefinitions,\n columnDisplay,\n visibleColumns,\n });\n\n const { isItemSelected, getSelectAllProps, getItemSelectionProps } = useSelection({\n items: allItems,\n trackBy,\n selectedItems,\n selectionType,\n isItemDisabled,\n onSelectionChange,\n ariaLabels,\n loading,\n });\n\n if (isDevelopment) {\n if (resizableColumns) {\n checkColumnWidths(columnDefinitions);\n }\n if (sortingColumn?.sortingComparator) {\n checkSortingState(columnDefinitions, sortingColumn.sortingComparator);\n }\n }\n\n const isVisualRefresh = useVisualRefresh();\n const computedVariant = isVisualRefresh\n ? variant\n : ['embedded', 'full-page'].indexOf(variant) > -1\n ? 'container'\n : variant;\n const hasHeader = !!(header || filter || pagination || preferences);\n const hasSelection = !!selectionType;\n const hasFooterPagination = isMobile && variant === 'full-page' && !!pagination;\n const hasFooter = !!footer || hasFooterPagination;\n\n const headerIdRef = useRef<string | undefined>(undefined);\n const isLabelledByHeader = !ariaLabels?.tableLabel && !!header;\n const setHeaderRef = useCallback((id: string) => {\n headerIdRef.current = id;\n }, []);\n\n const visibleColumnWidthsWithSelection: ColumnWidthDefinition[] = [];\n const visibleColumnIdsWithSelection: PropertyKey[] = [];\n if (hasSelection) {\n visibleColumnWidthsWithSelection.push({ id: selectionColumnId, width: SELECTION_COLUMN_WIDTH });\n visibleColumnIdsWithSelection.push(selectionColumnId);\n }\n for (let columnIndex = 0; columnIndex < visibleColumnDefinitions.length; columnIndex++) {\n const columnId = getColumnKey(visibleColumnDefinitions[columnIndex], columnIndex);\n visibleColumnWidthsWithSelection.push({ ...visibleColumnDefinitions[columnIndex], id: columnId });\n visibleColumnIdsWithSelection.push(columnId);\n }\n\n const stickyState = useStickyColumns({\n visibleColumns: visibleColumnIdsWithSelection,\n stickyColumnsFirst: (stickyColumns?.first ?? 0) + (stickyColumns?.first && hasSelection ? 1 : 0),\n stickyColumnsLast: stickyColumns?.last || 0,\n });\n\n const hasStickyColumns = !!((stickyColumns?.first ?? 0) + (stickyColumns?.last ?? 0) > 0);\n const hasEditableCells = !!columnDefinitions.find(col => col.editConfig);\n\n let tableRole: TableRole = 'table';\n if (isExpandable) {\n tableRole = 'treegrid';\n } else if (enableKeyboardNavigation) {\n tableRole = 'grid';\n } else if (hasEditableCells) {\n tableRole = 'grid-default';\n }\n\n const theadProps: TheadProps = {\n selectionType,\n getSelectAllProps,\n columnDefinitions: visibleColumnDefinitions,\n variant: computedVariant,\n wrapLines,\n resizableColumns,\n sortingColumn,\n sortingDisabled,\n sortingDescending,\n onSortingChange,\n onFocusMove: moveFocus,\n onResizeFinish(newWidth) {\n const widthsDetail = columnDefinitions.map(\n (column, index) =>\n newWidth.get(getColumnKey(column, index)) || (column.width as number) || DEFAULT_COLUMN_WIDTH\n );\n const widthsChanged = widthsDetail.some((width, index) => columnDefinitions[index].width !== width);\n if (widthsChanged) {\n fireNonCancelableEvent(onColumnWidthsChange, { widths: widthsDetail });\n }\n },\n singleSelectionHeaderAriaLabel: ariaLabels?.selectionGroupLabel,\n resizerRoleDescription: ariaLabels?.resizerRoleDescription,\n stripedRows,\n stickyState,\n selectionColumnId,\n tableRole,\n isExpandable,\n };\n\n const wrapperRef = useMergeRefs(wrapperRefObject, stickyState.refs.wrapper);\n const tableRef = useMergeRefs(tableMeasureRef, tableRefObject, stickyState.refs.table);\n\n const wrapperProps = getTableWrapperRoleProps({\n tableRole,\n isScrollable: !!(tableWidth && containerWidth && tableWidth > containerWidth),\n ariaLabel: ariaLabels?.tableLabel,\n });\n\n const getMouseDownTarget = useMouseDownTarget();\n\n const hasDynamicHeight = computedVariant === 'full-page';\n const overlapElement = useDynamicOverlap({ disabled: !hasDynamicHeight });\n useTableFocusNavigation({\n enableKeyboardNavigation,\n selectionType,\n tableRoot: tableRefObject,\n columnDefinitions: visibleColumnDefinitions,\n numRows: allItems?.length,\n });\n const toolsHeaderPerformanceMarkRef = useRef<HTMLDivElement>(null);\n // If is mobile, we take into consideration the AppLayout's mobile bar and we subtract the tools wrapper height so only the table header is sticky\n const [toolsHeaderHeight, toolsHeaderWrapperMeasureRef] = useContainerQuery(rect => rect.borderBoxHeight);\n const toolsHeaderWrapper = useMergeRefs(toolsHeaderPerformanceMarkRef, toolsHeaderWrapperMeasureRef);\n\n const colIndexOffset = selectionType ? 1 : 0;\n const totalColumnsCount = visibleColumnDefinitions.length + colIndexOffset;\n\n return (\n <LinkDefaultVariantContext.Provider value={{ defaultVariant: 'primary' }}>\n <ColumnWidthsProvider\n visibleColumns={visibleColumnWidthsWithSelection}\n resizableColumns={resizableColumns}\n containerRef={wrapperMeasureRefObject}\n >\n <InternalContainer\n {...baseProps}\n __internalRootRef={__internalRootRef}\n className={clsx(baseProps.className, styles.root)}\n __funnelSubStepProps={__funnelSubStepProps}\n header={\n <>\n {hasHeader && (\n <div\n ref={overlapElement}\n className={clsx(hasDynamicHeight && [styles['dark-header'], getContentHeaderClassName()])}\n >\n <div\n ref={toolsHeaderWrapper}\n className={clsx(styles['header-controls'], styles[`variant-${computedVariant}`])}\n >\n <CollectionLabelContext.Provider value={{ assignId: setHeaderRef }}>\n <ToolsHeader\n header={header}\n filter={filter}\n pagination={pagination}\n preferences={preferences}\n />\n </CollectionLabelContext.Provider>\n </div>\n </div>\n )}\n {stickyHeader && (\n <StickyHeader\n ref={stickyHeaderRef}\n variant={computedVariant}\n theadProps={theadProps}\n wrapperRef={wrapperRefObject}\n theadRef={theadRef}\n secondaryWrapperRef={secondaryWrapperRef}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n tableHasHeader={hasHeader}\n contentDensity={contentDensity}\n tableRole={tableRole}\n />\n )}\n </>\n }\n disableHeaderPaddings={true}\n disableContentPaddings={true}\n variant={toContainerVariant(computedVariant)}\n __disableFooterPaddings={true}\n __disableFooterDivider={true}\n __disableStickyMobile={false}\n footer={\n hasFooter ? (\n <div className={clsx(styles['footer-wrapper'], styles[`variant-${computedVariant}`])}>\n <div className={clsx(styles.footer, hasFooterPagination && styles['footer-with-pagination'])}>\n {footer && <span>{footer}</span>}\n {hasFooterPagination && <div className={styles['footer-pagination']}>{pagination}</div>}\n </div>\n </div>\n ) : null\n }\n __stickyHeader={stickyHeader}\n __mobileStickyOffset={toolsHeaderHeight ?? 0}\n __stickyOffset={stickyHeaderVerticalOffset}\n {...focusMarkers.root}\n >\n <div\n ref={wrapperRef}\n className={clsx(styles.wrapper, styles[`variant-${computedVariant}`], {\n [styles['has-footer']]: hasFooter,\n [styles['has-header']]: hasHeader,\n })}\n style={stickyState.style.wrapper}\n onScroll={handleScroll}\n {...wrapperProps}\n >\n <div className={styles['wrapper-content-measure']} ref={wrapperMeasureMergedRef}></div>\n {!!renderAriaLive && !!firstIndex && (\n <LiveRegion>\n <span>\n {renderAriaLive({\n firstIndex,\n lastIndex: firstIndex + items.length - 1,\n visibleItemsCount: allItems.length,\n totalItemsCount,\n })}\n </span>\n </LiveRegion>\n )}\n <GridNavigationProvider\n keyboardNavigation={!!enableKeyboardNavigation}\n pageSize={GRID_NAVIGATION_PAGE_SIZE}\n getTable={() => tableRefObject.current}\n >\n <table\n ref={tableRef}\n className={clsx(\n styles.table,\n resizableColumns && styles['table-layout-fixed'],\n contentDensity === 'compact' && getVisualContextClassname('compact-table')\n )}\n {...getTableRoleProps({\n tableRole,\n totalItemsCount,\n totalColumnsCount: totalColumnsCount,\n ariaLabel: ariaLabels?.tableLabel,\n ariaLabelledBy: isLabelledByHeader && headerIdRef.current ? headerIdRef.current : undefined,\n })}\n >\n <Thead\n ref={theadRef}\n hidden={stickyHeader}\n onFocusedComponentChange={focusId => stickyHeaderRef.current?.setFocus(focusId)}\n {...theadProps}\n />\n <tbody>\n {loading || allItems.length === 0 ? (\n <tr>\n <NoDataCell\n totalColumnsCount={totalColumnsCount}\n hasFooter={hasFooter}\n loading={loading}\n loadingText={loadingText}\n empty={empty}\n tableRef={tableRefObject}\n containerRef={wrapperMeasureRefObject}\n />\n </tr>\n ) : (\n allItems.map((item, rowIndex) => {\n const isFirstRow = rowIndex === 0;\n const isLastRow = rowIndex === allItems.length - 1;\n const sharedCellProps = {\n isFirstRow,\n isLastRow,\n isVisualRefresh,\n isSelected: hasSelection && isItemSelected(item),\n isPrevSelected: hasSelection && !isFirstRow && isItemSelected(allItems[rowIndex - 1]),\n isNextSelected: hasSelection && !isLastRow && isItemSelected(allItems[rowIndex + 1]),\n isEvenRow: rowIndex % 2 === 0,\n hasFooter,\n stripedRows,\n stickyState,\n tableRole,\n };\n const expandableItemProps = getExpandableItemProps(item);\n return (\n <tr\n key={getItemKey(trackBy, item, rowIndex)}\n className={clsx(styles.row, sharedCellProps.isSelected && styles['row-selected'])}\n onFocus={({ currentTarget }) => {\n // When an element inside table row receives focus we want to adjust the scroll.\n // However, that behaviour is unwanted when the focus is received as result of a click\n // as it causes the click to never reach the target element.\n if (!currentTarget.contains(getMouseDownTarget())) {\n stickyHeaderRef.current?.scrollToRow(currentTarget);\n }\n }}\n {...focusMarkers.item}\n onClick={onRowClickHandler && onRowClickHandler.bind(null, rowIndex, item)}\n onContextMenu={\n onRowContextMenuHandler && onRowContextMenuHandler.bind(null, rowIndex, item)\n }\n {...getTableRowRoleProps({ tableRole, firstIndex, rowIndex, ...expandableItemProps })}\n >\n {getItemSelectionProps && (\n <TableTdElement\n {...sharedCellProps}\n className={clsx(styles['selection-control'])}\n wrapLines={false}\n hasSelection={true}\n columnId={selectionColumnId}\n colIndex={0}\n >\n <SelectionControl\n onFocusDown={moveFocusDown}\n onFocusUp={moveFocusUp}\n {...getItemSelectionProps(item)}\n />\n </TableTdElement>\n )}\n\n {visibleColumnDefinitions.map((column, colIndex) => {\n const isEditing = cellEditing.checkEditing({ rowIndex, colIndex });\n const successfulEdit = cellEditing.checkLastSuccessfulEdit({ rowIndex, colIndex });\n const isEditable = !!column.editConfig && !cellEditing.isLoading;\n const expandableCellProps =\n isExpandable && colIndex === 0 ? expandableItemProps : undefined;\n return (\n <TableBodyCell\n key={getColumnKey(column, colIndex)}\n {...sharedCellProps}\n style={\n resizableColumns\n ? {}\n : {\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n }\n }\n ariaLabels={ariaLabels}\n column={column}\n item={item}\n wrapLines={wrapLines}\n isEditable={isEditable}\n isEditing={isEditing}\n isRowHeader={column.isRowHeader}\n resizableColumns={resizableColumns}\n successfulEdit={successfulEdit}\n onEditStart={() => cellEditing.startEdit({ rowIndex, colIndex })}\n onEditEnd={editCancelled =>\n cellEditing.completeEdit({ rowIndex, colIndex }, editCancelled)\n }\n submitEdit={cellEditing.submitEdit}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n {...expandableCellProps}\n />\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </GridNavigationProvider>\n\n {resizableColumns && <ResizeTracker />}\n </div>\n\n <StickyScrollbar\n ref={scrollbarRef}\n wrapperRef={wrapperRefObject}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n hasStickyColumns={hasStickyColumns}\n />\n </InternalContainer>\n </ColumnWidthsProvider>\n </LinkDefaultVariantContext.Provider>\n );\n }\n) as TableForwardRefType;\n\nexport default InternalTable;\n"]}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/table/internal.tsx"],"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 clsx from 'clsx';\nimport React, { useCallback, useImperativeHandle, useRef } from 'react';\nimport { TableForwardRefType, TableProgressiveLoadingProps, TableProps, TableRow } from './interfaces';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\nimport InternalContainer, { InternalContainerProps } from '../container/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport ToolsHeader from './tools-header';\nimport Thead, { TheadProps } from './thead';\nimport { TableBodyCell } from './body-cell';\nimport { supportsStickyPosition } from '../internal/utils/dom';\nimport { checkSortingState, getColumnKey, getItemKey, getVisibleColumnDefinitions, toContainerVariant } from './utils';\nimport { useRowEvents } from './use-row-events';\nimport { SelectionControl, focusMarkers, useSelectionFocusMove, useSelection } from './selection';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { isDevelopment } from '../internal/is-development';\nimport { ColumnWidthDefinition, ColumnWidthsProvider, DEFAULT_COLUMN_WIDTH } from './use-column-widths';\nimport { useScrollSync } from '../internal/hooks/use-scroll-sync';\nimport { ResizeTracker } from './resizer';\nimport styles from './styles.css.js';\nimport headerStyles from '../header/styles.css.js';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport StickyHeader, { StickyHeaderRef } from './sticky-header';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport useMouseDownTarget from '../internal/hooks/use-mouse-down-target';\nimport { useDynamicOverlap } from '../internal/hooks/use-dynamic-overlap';\nimport LiveRegion from '../internal/components/live-region';\nimport useTableFocusNavigation from './use-table-focus-navigation';\nimport { SomeRequired } from '../internal/types';\nimport { TableTdElement } from './body-cell/td-element';\nimport { useStickyColumns } from './sticky-columns';\nimport { StickyScrollbar } from './sticky-scrollbar';\nimport { checkColumnWidths } from './column-widths-utils';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\nimport {\n GridNavigationProvider,\n TableRole,\n getTableRoleProps,\n getTableRowRoleProps,\n getTableWrapperRoleProps,\n} from './table-role';\nimport { useCellEditing } from './use-cell-editing';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport { CollectionLabelContext } from '../internal/context/collection-label-context';\nimport { useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport { NoDataCell } from './no-data-cell';\nimport { usePerformanceMarks } from '../internal/hooks/use-performance-marks';\nimport { getContentHeaderClassName } from '../internal/utils/content-header-utils';\nimport { useExpandableTableProps } from './expandable-rows/expandable-rows-utils';\nimport { ItemsLoader } from './progressive-loading/items-loader';\nimport { useProgressiveLoadingProps } from './progressive-loading/progressive-loading-utils';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nconst GRID_NAVIGATION_PAGE_SIZE = 10;\nconst SELECTION_COLUMN_WIDTH = 54;\nconst selectionColumnId = Symbol('selection-column-id');\n\ntype InternalTableProps<T> = SomeRequired<TableProps<T>, 'items' | 'selectedItems' | 'variant' | 'firstIndex'> &\n InternalBaseComponentProps &\n TableProgressiveLoadingProps<T> & {\n __funnelSubStepProps?: InternalContainerProps['__funnelSubStepProps'];\n };\n\nexport const InternalTableAsSubstep = React.forwardRef(\n <T,>(props: InternalTableProps<T>, ref: React.Ref<TableProps.Ref>) => {\n const { funnelSubStepProps } = useFunnelSubStep();\n\n const tableProps: InternalTableProps<T> = {\n ...props,\n __funnelSubStepProps: funnelSubStepProps,\n };\n\n return <InternalTable {...tableProps} ref={ref} />;\n }\n) as TableForwardRefType;\n\nconst InternalTable = React.forwardRef(\n <T,>(\n {\n header,\n footer,\n empty,\n filter,\n pagination,\n preferences,\n items,\n columnDefinitions,\n trackBy,\n loading,\n loadingText,\n selectionType,\n selectedItems,\n isItemDisabled,\n ariaLabels,\n onSelectionChange,\n onSortingChange,\n sortingColumn,\n sortingDescending,\n sortingDisabled,\n visibleColumns,\n stickyHeader,\n stickyHeaderVerticalOffset,\n onRowClick,\n onRowContextMenu,\n wrapLines,\n stripedRows,\n contentDensity,\n submitEdit,\n onEditCancel,\n resizableColumns,\n onColumnWidthsChange,\n variant,\n __internalRootRef,\n totalItemsCount,\n firstIndex,\n renderAriaLive,\n stickyColumns,\n columnDisplay,\n enableKeyboardNavigation,\n expandableRows,\n getLoadingStatus,\n renderLoaderPending,\n renderLoaderLoading,\n renderLoaderError,\n __funnelSubStepProps,\n ...rest\n }: InternalTableProps<T>,\n ref: React.Ref<TableProps.Ref>\n ) => {\n // Keyboard navigation defaults to `true` for tables with expandable rows.\n if (expandableRows && enableKeyboardNavigation === undefined) {\n enableKeyboardNavigation = true;\n }\n\n const baseProps = getBaseProps(rest);\n\n const prevStickyHeader = usePrevious(stickyHeader);\n if (prevStickyHeader !== undefined && !!stickyHeader !== !!prevStickyHeader) {\n warnOnce(\n 'Table',\n `\\`stickyHeader\\` has changed from \"${prevStickyHeader}\" to \"${stickyHeader}\". It is not recommended to change the value of this property during the component lifecycle. Please set it to either \"true\" or \"false\" unconditionally.`\n );\n }\n\n stickyHeader = stickyHeader && supportsStickyPosition();\n const isMobile = useMobile();\n\n const { isExpandable, allItems, getExpandableItemProps } = useExpandableTableProps({\n items,\n expandableRows,\n trackBy,\n ariaLabels,\n });\n const { allRows } = useProgressiveLoadingProps({\n items: allItems,\n getLoadingStatus,\n getExpandableItemProps,\n });\n\n const [containerWidth, wrapperMeasureRef] = useContainerQuery<number>(rect => rect.contentBoxWidth);\n const wrapperMeasureRefObject = useRef(null);\n const wrapperMeasureMergedRef = useMergeRefs(wrapperMeasureRef, wrapperMeasureRefObject);\n\n const [tableWidth, tableMeasureRef] = useContainerQuery<number>(rect => rect.contentBoxWidth);\n const tableRefObject = useRef(null);\n\n const secondaryWrapperRef = React.useRef<HTMLDivElement>(null);\n const theadRef = useRef<HTMLTableRowElement>(null);\n const stickyHeaderRef = React.useRef<StickyHeaderRef>(null);\n const scrollbarRef = React.useRef<HTMLDivElement>(null);\n const { cancelEdit, ...cellEditing } = useCellEditing({ onCancel: onEditCancel, onSubmit: submitEdit });\n\n usePerformanceMarks(\n 'table',\n true,\n tableRefObject,\n () => {\n /* istanbul ignore next: performance marks do not work in JSDOM */\n const headerText =\n toolsHeaderPerformanceMarkRef.current?.querySelector<HTMLElement>(`.${headerStyles['heading-text']}`)\n ?.innerText ?? toolsHeaderPerformanceMarkRef.current?.innerText;\n\n return {\n loading: loading ?? false,\n header: headerText,\n };\n },\n [loading]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n scrollToTop: stickyHeaderRef.current?.scrollToTop || (() => undefined),\n cancelEdit,\n }),\n [cancelEdit]\n );\n\n const wrapperRefObject = useRef(null);\n const handleScroll = useScrollSync([wrapperRefObject, scrollbarRef, secondaryWrapperRef]);\n\n const { moveFocusDown, moveFocusUp, moveFocus } = useSelectionFocusMove(selectionType, allItems.length);\n const { onRowClickHandler, onRowContextMenuHandler } = useRowEvents({ onRowClick, onRowContextMenu });\n\n const visibleColumnDefinitions = getVisibleColumnDefinitions({\n columnDefinitions,\n columnDisplay,\n visibleColumns,\n });\n\n const { isItemSelected, getSelectAllProps, getItemSelectionProps } = useSelection({\n items: allItems,\n trackBy,\n selectedItems,\n selectionType,\n isItemDisabled,\n onSelectionChange,\n ariaLabels,\n loading,\n });\n const isRowSelected = (row: TableRow<T>) => row.type === 'data' && isItemSelected(row.item);\n\n if (isDevelopment) {\n if (resizableColumns) {\n checkColumnWidths(columnDefinitions);\n }\n if (sortingColumn?.sortingComparator) {\n checkSortingState(columnDefinitions, sortingColumn.sortingComparator);\n }\n }\n\n const isVisualRefresh = useVisualRefresh();\n const computedVariant = isVisualRefresh\n ? variant\n : ['embedded', 'full-page'].indexOf(variant) > -1\n ? 'container'\n : variant;\n const hasHeader = !!(header || filter || pagination || preferences);\n const hasSelection = !!selectionType;\n const hasFooterPagination = isMobile && variant === 'full-page' && !!pagination;\n const hasFooter = !!footer || hasFooterPagination;\n\n const headerIdRef = useRef<string | undefined>(undefined);\n const isLabelledByHeader = !ariaLabels?.tableLabel && !!header;\n const setHeaderRef = useCallback((id: string) => {\n headerIdRef.current = id;\n }, []);\n\n const visibleColumnWidthsWithSelection: ColumnWidthDefinition[] = [];\n const visibleColumnIdsWithSelection: PropertyKey[] = [];\n if (hasSelection) {\n visibleColumnWidthsWithSelection.push({ id: selectionColumnId, width: SELECTION_COLUMN_WIDTH });\n visibleColumnIdsWithSelection.push(selectionColumnId);\n }\n for (let columnIndex = 0; columnIndex < visibleColumnDefinitions.length; columnIndex++) {\n const columnId = getColumnKey(visibleColumnDefinitions[columnIndex], columnIndex);\n visibleColumnWidthsWithSelection.push({ ...visibleColumnDefinitions[columnIndex], id: columnId });\n visibleColumnIdsWithSelection.push(columnId);\n }\n\n const stickyState = useStickyColumns({\n visibleColumns: visibleColumnIdsWithSelection,\n stickyColumnsFirst: (stickyColumns?.first ?? 0) + (stickyColumns?.first && hasSelection ? 1 : 0),\n stickyColumnsLast: stickyColumns?.last || 0,\n });\n\n const hasStickyColumns = !!((stickyColumns?.first ?? 0) + (stickyColumns?.last ?? 0) > 0);\n const hasEditableCells = !!columnDefinitions.find(col => col.editConfig);\n\n let tableRole: TableRole = 'table';\n if (isExpandable) {\n tableRole = 'treegrid';\n } else if (enableKeyboardNavigation) {\n tableRole = 'grid';\n } else if (hasEditableCells) {\n tableRole = 'grid-default';\n }\n\n const theadProps: TheadProps = {\n selectionType,\n getSelectAllProps,\n columnDefinitions: visibleColumnDefinitions,\n variant: computedVariant,\n wrapLines,\n resizableColumns,\n sortingColumn,\n sortingDisabled,\n sortingDescending,\n onSortingChange,\n onFocusMove: moveFocus,\n onResizeFinish(newWidth) {\n const widthsDetail = columnDefinitions.map(\n (column, index) =>\n newWidth.get(getColumnKey(column, index)) || (column.width as number) || DEFAULT_COLUMN_WIDTH\n );\n const widthsChanged = widthsDetail.some((width, index) => columnDefinitions[index].width !== width);\n if (widthsChanged) {\n fireNonCancelableEvent(onColumnWidthsChange, { widths: widthsDetail });\n }\n },\n singleSelectionHeaderAriaLabel: ariaLabels?.selectionGroupLabel,\n resizerRoleDescription: ariaLabels?.resizerRoleDescription,\n stripedRows,\n stickyState,\n selectionColumnId,\n tableRole,\n isExpandable,\n };\n\n const wrapperRef = useMergeRefs(wrapperRefObject, stickyState.refs.wrapper);\n const tableRef = useMergeRefs(tableMeasureRef, tableRefObject, stickyState.refs.table);\n\n const wrapperProps = getTableWrapperRoleProps({\n tableRole,\n isScrollable: !!(tableWidth && containerWidth && tableWidth > containerWidth),\n ariaLabel: ariaLabels?.tableLabel,\n });\n\n const getMouseDownTarget = useMouseDownTarget();\n\n const hasDynamicHeight = computedVariant === 'full-page';\n const overlapElement = useDynamicOverlap({ disabled: !hasDynamicHeight });\n useTableFocusNavigation({\n enableKeyboardNavigation,\n selectionType,\n tableRoot: tableRefObject,\n columnDefinitions: visibleColumnDefinitions,\n numRows: allRows?.length,\n });\n const toolsHeaderPerformanceMarkRef = useRef<HTMLDivElement>(null);\n // If is mobile, we take into consideration the AppLayout's mobile bar and we subtract the tools wrapper height so only the table header is sticky\n const [toolsHeaderHeight, toolsHeaderWrapperMeasureRef] = useContainerQuery(rect => rect.borderBoxHeight);\n const toolsHeaderWrapper = useMergeRefs(toolsHeaderPerformanceMarkRef, toolsHeaderWrapperMeasureRef);\n\n const colIndexOffset = selectionType ? 1 : 0;\n const totalColumnsCount = visibleColumnDefinitions.length + colIndexOffset;\n\n return (\n <LinkDefaultVariantContext.Provider value={{ defaultVariant: 'primary' }}>\n <ColumnWidthsProvider\n visibleColumns={visibleColumnWidthsWithSelection}\n resizableColumns={resizableColumns}\n containerRef={wrapperMeasureRefObject}\n >\n <InternalContainer\n {...baseProps}\n __internalRootRef={__internalRootRef}\n className={clsx(baseProps.className, styles.root)}\n __funnelSubStepProps={__funnelSubStepProps}\n header={\n <>\n {hasHeader && (\n <div\n ref={overlapElement}\n className={clsx(hasDynamicHeight && [styles['dark-header'], getContentHeaderClassName()])}\n >\n <div\n ref={toolsHeaderWrapper}\n className={clsx(styles['header-controls'], styles[`variant-${computedVariant}`])}\n >\n <CollectionLabelContext.Provider value={{ assignId: setHeaderRef }}>\n <ToolsHeader\n header={header}\n filter={filter}\n pagination={pagination}\n preferences={preferences}\n />\n </CollectionLabelContext.Provider>\n </div>\n </div>\n )}\n {stickyHeader && (\n <StickyHeader\n ref={stickyHeaderRef}\n variant={computedVariant}\n theadProps={theadProps}\n wrapperRef={wrapperRefObject}\n theadRef={theadRef}\n secondaryWrapperRef={secondaryWrapperRef}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n tableHasHeader={hasHeader}\n contentDensity={contentDensity}\n tableRole={tableRole}\n />\n )}\n </>\n }\n disableHeaderPaddings={true}\n disableContentPaddings={true}\n variant={toContainerVariant(computedVariant)}\n __disableFooterPaddings={true}\n __disableFooterDivider={true}\n __disableStickyMobile={false}\n footer={\n hasFooter ? (\n <div className={clsx(styles['footer-wrapper'], styles[`variant-${computedVariant}`])}>\n <div className={clsx(styles.footer, hasFooterPagination && styles['footer-with-pagination'])}>\n {footer && <span>{footer}</span>}\n {hasFooterPagination && <div className={styles['footer-pagination']}>{pagination}</div>}\n </div>\n </div>\n ) : null\n }\n __stickyHeader={stickyHeader}\n __mobileStickyOffset={toolsHeaderHeight ?? 0}\n __stickyOffset={stickyHeaderVerticalOffset}\n {...focusMarkers.root}\n >\n <div\n ref={wrapperRef}\n className={clsx(styles.wrapper, styles[`variant-${computedVariant}`], {\n [styles['has-footer']]: hasFooter,\n [styles['has-header']]: hasHeader,\n })}\n style={stickyState.style.wrapper}\n onScroll={handleScroll}\n {...wrapperProps}\n >\n <div className={styles['wrapper-content-measure']} ref={wrapperMeasureMergedRef}></div>\n {!!renderAriaLive && !!firstIndex && (\n <LiveRegion>\n <span>\n {renderAriaLive({\n firstIndex,\n lastIndex: firstIndex + items.length - 1,\n visibleItemsCount: allItems.length,\n totalItemsCount,\n })}\n </span>\n </LiveRegion>\n )}\n <GridNavigationProvider\n keyboardNavigation={!!enableKeyboardNavigation}\n pageSize={GRID_NAVIGATION_PAGE_SIZE}\n getTable={() => tableRefObject.current}\n >\n <table\n ref={tableRef}\n className={clsx(\n styles.table,\n resizableColumns && styles['table-layout-fixed'],\n contentDensity === 'compact' && getVisualContextClassname('compact-table')\n )}\n {...getTableRoleProps({\n tableRole,\n totalItemsCount,\n totalColumnsCount: totalColumnsCount,\n ariaLabel: ariaLabels?.tableLabel,\n ariaLabelledBy: isLabelledByHeader && headerIdRef.current ? headerIdRef.current : undefined,\n })}\n >\n <Thead\n ref={theadRef}\n hidden={stickyHeader}\n onFocusedComponentChange={focusId => stickyHeaderRef.current?.setFocus(focusId)}\n {...theadProps}\n />\n <tbody>\n {loading || allItems.length === 0 ? (\n <tr>\n <NoDataCell\n totalColumnsCount={totalColumnsCount}\n hasFooter={hasFooter}\n loading={loading}\n loadingText={loadingText}\n empty={empty}\n tableRef={tableRefObject}\n containerRef={wrapperMeasureRefObject}\n />\n </tr>\n ) : (\n allRows.map((row, rowIndex) => {\n const isFirstRow = rowIndex === 0;\n const isLastRow = rowIndex === allRows.length - 1;\n const expandableProps = row.type === 'data' ? getExpandableItemProps(row.item) : undefined;\n const rowRoleProps = getTableRowRoleProps({\n tableRole,\n firstIndex,\n rowIndex,\n level: row.type === 'loader' ? row.level : undefined,\n ...expandableProps,\n });\n const getTableItemKey = (item: T) => getItemKey(trackBy, item, rowIndex);\n const sharedCellProps = {\n isVisualRefresh,\n isFirstRow,\n isLastRow,\n isSelected: hasSelection && isRowSelected(row),\n isPrevSelected: hasSelection && !isFirstRow && isRowSelected(allRows[rowIndex - 1]),\n isNextSelected: hasSelection && !isLastRow && isRowSelected(allRows[rowIndex + 1]),\n isEvenRow: rowIndex % 2 === 0,\n stripedRows,\n hasSelection,\n hasFooter,\n stickyState,\n tableRole,\n };\n if (row.type === 'data') {\n return (\n <tr\n key={getTableItemKey(row.item)}\n className={clsx(styles.row, sharedCellProps.isSelected && styles['row-selected'])}\n onFocus={({ currentTarget }) => {\n // When an element inside table row receives focus we want to adjust the scroll.\n // However, that behaviour is unwanted when the focus is received as result of a click\n // as it causes the click to never reach the target element.\n if (!currentTarget.contains(getMouseDownTarget())) {\n stickyHeaderRef.current?.scrollToRow(currentTarget);\n }\n }}\n {...focusMarkers.item}\n onClick={onRowClickHandler && onRowClickHandler.bind(null, rowIndex, row.item)}\n onContextMenu={\n onRowContextMenuHandler && onRowContextMenuHandler.bind(null, rowIndex, row.item)\n }\n {...rowRoleProps}\n >\n {getItemSelectionProps && (\n <TableTdElement\n {...sharedCellProps}\n className={clsx(styles['selection-control'])}\n wrapLines={false}\n columnId={selectionColumnId}\n colIndex={0}\n >\n <SelectionControl\n onFocusDown={moveFocusDown}\n onFocusUp={moveFocusUp}\n {...getItemSelectionProps(row.item)}\n />\n </TableTdElement>\n )}\n\n {visibleColumnDefinitions.map((column, colIndex) => {\n const isEditing = cellEditing.checkEditing({ rowIndex, colIndex });\n const successfulEdit = cellEditing.checkLastSuccessfulEdit({ rowIndex, colIndex });\n const isEditable = !!column.editConfig && !cellEditing.isLoading;\n const cellExpandableProps =\n isExpandable && colIndex === 0 ? expandableProps : undefined;\n return (\n <TableBodyCell\n key={getColumnKey(column, colIndex)}\n {...sharedCellProps}\n style={\n resizableColumns\n ? {}\n : {\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n }\n }\n ariaLabels={ariaLabels}\n column={column}\n item={row.item}\n wrapLines={wrapLines}\n isEditable={isEditable}\n isEditing={isEditing}\n isRowHeader={column.isRowHeader}\n successfulEdit={successfulEdit}\n resizableColumns={resizableColumns}\n onEditStart={() => cellEditing.startEdit({ rowIndex, colIndex })}\n onEditEnd={editCancelled =>\n cellEditing.completeEdit({ rowIndex, colIndex }, editCancelled)\n }\n submitEdit={cellEditing.submitEdit}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n {...cellExpandableProps}\n />\n );\n })}\n </tr>\n );\n }\n return (\n <tr\n // The key includes both unique item identifier and row index to avoid React caching.\n // That is to avoid collisions when the next loader is rendered.\n key={(row.item ? getTableItemKey(row.item) : 'root') + rowIndex}\n className={styles.row}\n {...rowRoleProps}\n >\n {getItemSelectionProps && (\n <TableTdElement\n {...sharedCellProps}\n className={clsx(styles['selection-control'])}\n wrapLines={false}\n columnId={selectionColumnId}\n colIndex={0}\n >\n {null}\n </TableTdElement>\n )}\n {visibleColumnDefinitions.map((column, colIndex) => (\n <TableTdElement\n key={getColumnKey(column, colIndex)}\n {...sharedCellProps}\n wrapLines={false}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n isRowHeader={colIndex === 0}\n level={row.level}\n >\n {colIndex === 0 ? (\n <ItemsLoader\n item={row.item}\n loadingStatus={row.status}\n renderLoaderPending={renderLoaderPending}\n renderLoaderLoading={renderLoaderLoading}\n renderLoaderError={renderLoaderError}\n trackBy={trackBy}\n />\n ) : null}\n </TableTdElement>\n ))}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </GridNavigationProvider>\n\n {resizableColumns && <ResizeTracker />}\n </div>\n\n <StickyScrollbar\n ref={scrollbarRef}\n wrapperRef={wrapperRefObject}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n hasStickyColumns={hasStickyColumns}\n />\n </InternalContainer>\n </ColumnWidthsProvider>\n </LinkDefaultVariantContext.Provider>\n );\n }\n) as TableForwardRefType;\n\nexport default InternalTable;\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TableProps } from '../interfaces';
|
|
3
|
+
interface ItemsLoaderProps<T> {
|
|
4
|
+
item: null | T;
|
|
5
|
+
loadingStatus: TableProps.LoadingStatus;
|
|
6
|
+
renderLoaderPending?: (detail: TableProps.RenderLoaderDetail<T>) => React.ReactNode;
|
|
7
|
+
renderLoaderLoading?: (detail: TableProps.RenderLoaderDetail<T>) => React.ReactNode;
|
|
8
|
+
renderLoaderError?: (detail: TableProps.RenderLoaderDetail<T>) => React.ReactNode;
|
|
9
|
+
trackBy?: TableProps.TrackBy<T>;
|
|
10
|
+
}
|
|
11
|
+
export declare function ItemsLoader<T>({ item, loadingStatus, renderLoaderPending, renderLoaderLoading, renderLoaderError, trackBy, }: ItemsLoaderProps<T>): JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=items-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items-loader.d.ts","sourceRoot":"","sources":["../../../../src/table/progressive-loading/items-loader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,UAAU,gBAAgB,CAAC,CAAC;IAC1B,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;IACf,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC;IACxC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACpF,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACpF,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAClF,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACjC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAC7B,IAAI,EACJ,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,OAAO,GACR,EAAE,gBAAgB,CAAC,CAAC,CAAC,eAsBrB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import styles from './styles.css.js';
|
|
5
|
+
import LiveRegion from '../../internal/components/live-region';
|
|
6
|
+
import { warnOnce } from '@cloudscape-design/component-toolkit/internal';
|
|
7
|
+
import { applyTrackBy } from '../utils';
|
|
8
|
+
export function ItemsLoader({ item, loadingStatus, renderLoaderPending, renderLoaderLoading, renderLoaderError, trackBy, }) {
|
|
9
|
+
let content = null;
|
|
10
|
+
if (loadingStatus === 'pending' && renderLoaderPending) {
|
|
11
|
+
content = renderLoaderPending({ item });
|
|
12
|
+
}
|
|
13
|
+
else if (loadingStatus === 'loading' && renderLoaderLoading) {
|
|
14
|
+
content = React.createElement(LiveRegion, { visible: true }, renderLoaderLoading({ item }));
|
|
15
|
+
}
|
|
16
|
+
else if (loadingStatus === 'error' && renderLoaderError) {
|
|
17
|
+
content = React.createElement(LiveRegion, { visible: true }, renderLoaderError({ item }));
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
warnOnce('Table', 'Must define `renderLoaderPending`, `renderLoaderLoading`, or `renderLoaderError` when using corresponding loading status.');
|
|
21
|
+
}
|
|
22
|
+
let parentTrackId = item && trackBy ? applyTrackBy(trackBy, item) : undefined;
|
|
23
|
+
parentTrackId = typeof parentTrackId === 'string' ? parentTrackId : undefined;
|
|
24
|
+
return (React.createElement("div", { "data-root": item ? 'false' : 'true', "data-parentrow": parentTrackId, className: styles['items-loader'] }, content));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=items-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items-loader.js","sourceRoot":"","sources":["../../../../src/table/progressive-loading/items-loader.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAWxC,MAAM,UAAU,WAAW,CAAI,EAC7B,IAAI,EACJ,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,OAAO,GACa;IACpB,IAAI,OAAO,GAAoB,IAAI,CAAC;IACpC,IAAI,aAAa,KAAK,SAAS,IAAI,mBAAmB,EAAE;QACtD,OAAO,GAAG,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACzC;SAAM,IAAI,aAAa,KAAK,SAAS,IAAI,mBAAmB,EAAE;QAC7D,OAAO,GAAG,oBAAC,UAAU,IAAC,OAAO,EAAE,IAAI,IAAG,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAc,CAAC;KACnF;SAAM,IAAI,aAAa,KAAK,OAAO,IAAI,iBAAiB,EAAE;QACzD,OAAO,GAAG,oBAAC,UAAU,IAAC,OAAO,EAAE,IAAI,IAAG,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAc,CAAC;KACjF;SAAM;QACL,QAAQ,CACN,OAAO,EACP,2HAA2H,CAC5H,CAAC;KACH;IAED,IAAI,aAAa,GAAG,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,aAAa,GAAG,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,OAAO,CACL,0CAAgB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,oBAAkB,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,IACtG,OAAO,CACJ,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport styles from './styles.css.js';\nimport LiveRegion from '../../internal/components/live-region';\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport { TableProps } from '../interfaces';\nimport { applyTrackBy } from '../utils';\n\ninterface ItemsLoaderProps<T> {\n item: null | T;\n loadingStatus: TableProps.LoadingStatus;\n renderLoaderPending?: (detail: TableProps.RenderLoaderDetail<T>) => React.ReactNode;\n renderLoaderLoading?: (detail: TableProps.RenderLoaderDetail<T>) => React.ReactNode;\n renderLoaderError?: (detail: TableProps.RenderLoaderDetail<T>) => React.ReactNode;\n trackBy?: TableProps.TrackBy<T>;\n}\n\nexport function ItemsLoader<T>({\n item,\n loadingStatus,\n renderLoaderPending,\n renderLoaderLoading,\n renderLoaderError,\n trackBy,\n}: ItemsLoaderProps<T>) {\n let content: React.ReactNode = null;\n if (loadingStatus === 'pending' && renderLoaderPending) {\n content = renderLoaderPending({ item });\n } else if (loadingStatus === 'loading' && renderLoaderLoading) {\n content = <LiveRegion visible={true}>{renderLoaderLoading({ item })}</LiveRegion>;\n } else if (loadingStatus === 'error' && renderLoaderError) {\n content = <LiveRegion visible={true}>{renderLoaderError({ item })}</LiveRegion>;\n } else {\n warnOnce(\n 'Table',\n 'Must define `renderLoaderPending`, `renderLoaderLoading`, or `renderLoaderError` when using corresponding loading status.'\n );\n }\n\n let parentTrackId = item && trackBy ? applyTrackBy(trackBy, item) : undefined;\n parentTrackId = typeof parentTrackId === 'string' ? parentTrackId : undefined;\n return (\n <div data-root={item ? 'false' : 'true'} data-parentrow={parentTrackId} className={styles['items-loader']}>\n {content}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TableProps, TableRow } from '../interfaces';
|
|
2
|
+
export declare function useProgressiveLoadingProps<T>({ items, getLoadingStatus, getExpandableItemProps, }: {
|
|
3
|
+
items: readonly T[];
|
|
4
|
+
getLoadingStatus?: (item: null | T) => TableProps.LoadingStatus;
|
|
5
|
+
getExpandableItemProps: (item: T) => {
|
|
6
|
+
level: number;
|
|
7
|
+
parent: null | T;
|
|
8
|
+
isExpanded: boolean;
|
|
9
|
+
children: readonly T[];
|
|
10
|
+
};
|
|
11
|
+
}): {
|
|
12
|
+
allRows: TableRow<T>[];
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=progressive-loading-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressive-loading-utils.d.ts","sourceRoot":"","sources":["../../../../src/table/progressive-loading/progressive-loading-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErD,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,EAC5C,KAAK,EACL,gBAAgB,EAChB,sBAAsB,GACvB,EAAE;IACD,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,KAAK,UAAU,CAAC,aAAa,CAAC;IAChE,sBAAsB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAA;KAAE,CAAC;CACvH;;EA0CA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { warnOnce } from '@cloudscape-design/component-toolkit/internal';
|
|
4
|
+
export function useProgressiveLoadingProps({ items, getLoadingStatus, getExpandableItemProps, }) {
|
|
5
|
+
const allRows = new Array();
|
|
6
|
+
const getItemParent = (item) => getExpandableItemProps(item).parent;
|
|
7
|
+
const getItemChildren = (item) => getExpandableItemProps(item).children;
|
|
8
|
+
const getItemLevel = (item) => (item ? getExpandableItemProps(item).level : 0);
|
|
9
|
+
const isItemExpanded = (item) => getExpandableItemProps(item).isExpanded;
|
|
10
|
+
for (let i = 0; i < items.length; i++) {
|
|
11
|
+
allRows.push({ type: 'data', item: items[i] });
|
|
12
|
+
// Insert empty expandable item loader
|
|
13
|
+
if (isItemExpanded(items[i]) && getItemChildren(items[i]).length === 0) {
|
|
14
|
+
const status = getLoadingStatus === null || getLoadingStatus === void 0 ? void 0 : getLoadingStatus(items[i]);
|
|
15
|
+
if (status && (status === 'loading' || status === 'error')) {
|
|
16
|
+
allRows.push({ type: 'loader', item: items[i], level: getItemLevel(items[i]), status });
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
warnOnce('Table', 'Expanded items without children must have "loading" or "error" loading status.');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Insert expandable items loaders
|
|
23
|
+
let currentParent = getItemParent(items[i]);
|
|
24
|
+
let levelsDiff = getItemLevel(items[i]) - getItemLevel(items[i + 1]);
|
|
25
|
+
while (currentParent && levelsDiff > 0) {
|
|
26
|
+
const status = getLoadingStatus === null || getLoadingStatus === void 0 ? void 0 : getLoadingStatus(currentParent);
|
|
27
|
+
if (status && status !== 'finished') {
|
|
28
|
+
const level = currentParent ? getItemLevel(currentParent) : 0;
|
|
29
|
+
allRows.push({ type: 'loader', item: currentParent, level, status });
|
|
30
|
+
}
|
|
31
|
+
currentParent = currentParent && getItemParent(currentParent);
|
|
32
|
+
levelsDiff--;
|
|
33
|
+
}
|
|
34
|
+
// Insert root loader
|
|
35
|
+
const rootLoadingStatus = getLoadingStatus === null || getLoadingStatus === void 0 ? void 0 : getLoadingStatus(null);
|
|
36
|
+
if (i === items.length - 1 && rootLoadingStatus && rootLoadingStatus !== 'finished') {
|
|
37
|
+
allRows.push({ type: 'loader', item: null, level: 0, status: rootLoadingStatus });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return { allRows };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=progressive-loading-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressive-loading-utils.js","sourceRoot":"","sources":["../../../../src/table/progressive-loading/progressive-loading-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 { warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport { TableProps, TableRow } from '../interfaces';\n\nexport function useProgressiveLoadingProps<T>({\n items,\n getLoadingStatus,\n getExpandableItemProps,\n}: {\n items: readonly T[];\n getLoadingStatus?: (item: null | T) => TableProps.LoadingStatus;\n getExpandableItemProps: (item: T) => { level: number; parent: null | T; isExpanded: boolean; children: readonly T[] };\n}) {\n const allRows = new Array<TableRow<T>>();\n\n const getItemParent = (item: T) => getExpandableItemProps(item).parent;\n const getItemChildren = (item: T) => getExpandableItemProps(item).children;\n const getItemLevel = (item?: T) => (item ? getExpandableItemProps(item).level : 0);\n const isItemExpanded = (item: T) => getExpandableItemProps(item).isExpanded;\n\n for (let i = 0; i < items.length; i++) {\n allRows.push({ type: 'data', item: items[i] });\n\n // Insert empty expandable item loader\n if (isItemExpanded(items[i]) && getItemChildren(items[i]).length === 0) {\n const status = getLoadingStatus?.(items[i]);\n if (status && (status === 'loading' || status === 'error')) {\n allRows.push({ type: 'loader', item: items[i], level: getItemLevel(items[i]), status });\n } else {\n warnOnce('Table', 'Expanded items without children must have \"loading\" or \"error\" loading status.');\n }\n }\n\n // Insert expandable items loaders\n let currentParent = getItemParent(items[i]);\n let levelsDiff = getItemLevel(items[i]) - getItemLevel(items[i + 1]);\n while (currentParent && levelsDiff > 0) {\n const status = getLoadingStatus?.(currentParent);\n if (status && status !== 'finished') {\n const level = currentParent ? getItemLevel(currentParent) : 0;\n allRows.push({ type: 'loader', item: currentParent, level, status });\n }\n currentParent = currentParent && getItemParent(currentParent);\n levelsDiff--;\n }\n\n // Insert root loader\n const rootLoadingStatus = getLoadingStatus?.(null);\n if (i === items.length - 1 && rootLoadingStatus && rootLoadingStatus !== 'finished') {\n allRows.push({ type: 'loader', item: null, level: 0, status: rootLoadingStatus });\n }\n }\n\n return { allRows };\n}\n"]}
|