@cloudscape-design/components-themeable 3.0.1309 → 3.0.1311
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/lib/internal/manifest.json +1 -1
- package/lib/internal/scss/collection-preferences/content-display/content-display-list.scss +10 -0
- package/lib/internal/scss/collection-preferences/content-display/content-display-option.scss +12 -0
- package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
- package/lib/internal/scss/table/header-cell/styles.scss +42 -5
- package/lib/internal/scss/table/resizer/styles.scss +26 -13
- package/lib/internal/scss/table/styles.scss +15 -0
- package/lib/internal/template/collection-preferences/content-display/content-display-option.js +1 -1
- package/lib/internal/template/collection-preferences/content-display/content-display-option.js.map +1 -1
- package/lib/internal/template/collection-preferences/content-display/index.d.ts +1 -1
- package/lib/internal/template/collection-preferences/content-display/index.d.ts.map +1 -1
- package/lib/internal/template/collection-preferences/content-display/index.js +63 -27
- package/lib/internal/template/collection-preferences/content-display/index.js.map +1 -1
- package/lib/internal/template/collection-preferences/content-display/utils.d.ts +40 -1
- package/lib/internal/template/collection-preferences/content-display/utils.d.ts.map +1 -1
- package/lib/internal/template/collection-preferences/content-display/utils.js +107 -13
- package/lib/internal/template/collection-preferences/content-display/utils.js.map +1 -1
- package/lib/internal/template/collection-preferences/index.d.ts.map +1 -1
- package/lib/internal/template/collection-preferences/index.js +2 -2
- package/lib/internal/template/collection-preferences/index.js.map +1 -1
- package/lib/internal/template/collection-preferences/interfaces.d.ts +30 -2
- package/lib/internal/template/collection-preferences/interfaces.d.ts.map +1 -1
- package/lib/internal/template/collection-preferences/interfaces.js.map +1 -1
- package/lib/internal/template/collection-preferences/styles.css.js +38 -36
- package/lib/internal/template/collection-preferences/styles.scoped.css +81 -37
- package/lib/internal/template/collection-preferences/styles.selectors.js +38 -36
- package/lib/internal/template/collection-preferences/utils.d.ts +1 -0
- package/lib/internal/template/collection-preferences/utils.d.ts.map +1 -1
- package/lib/internal/template/collection-preferences/utils.js +14 -0
- package/lib/internal/template/collection-preferences/utils.js.map +1 -1
- package/lib/internal/template/i18n/messages/all.all.js +1 -1
- package/lib/internal/template/i18n/messages/all.all.json +1 -1
- package/lib/internal/template/i18n/messages/all.en.js +1 -1
- package/lib/internal/template/i18n/messages/all.en.json +1 -1
- package/lib/internal/template/i18n/messages-types.d.ts +4 -0
- package/lib/internal/template/i18n/messages-types.d.ts.map +1 -1
- package/lib/internal/template/i18n/messages-types.js.map +1 -1
- package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
- package/lib/internal/template/internal/environment.js +2 -2
- package/lib/internal/template/internal/environment.json +2 -2
- package/lib/internal/template/pagination/internal.d.ts.map +1 -1
- package/lib/internal/template/pagination/internal.js +4 -1
- package/lib/internal/template/pagination/internal.js.map +1 -1
- package/lib/internal/template/table/column-groups/col-group.d.ts +8 -0
- package/lib/internal/template/table/column-groups/col-group.d.ts.map +1 -0
- package/lib/internal/template/table/column-groups/col-group.js +24 -0
- package/lib/internal/template/table/column-groups/col-group.js.map +1 -0
- package/lib/internal/template/table/column-groups/split-utils.d.ts +27 -0
- package/lib/internal/template/table/column-groups/split-utils.d.ts.map +1 -0
- package/lib/internal/template/table/column-groups/split-utils.js +43 -0
- package/lib/internal/template/table/column-groups/split-utils.js.map +1 -0
- package/lib/internal/template/table/column-groups/use-column-groups.d.ts +8 -0
- package/lib/internal/template/table/column-groups/use-column-groups.d.ts.map +1 -0
- package/lib/internal/template/table/column-groups/use-column-groups.js +23 -0
- package/lib/internal/template/table/column-groups/use-column-groups.js.map +1 -0
- package/lib/internal/template/table/column-groups/utils.d.ts +55 -0
- package/lib/internal/template/table/column-groups/utils.d.ts.map +1 -0
- package/lib/internal/template/table/column-groups/utils.js +204 -0
- package/lib/internal/template/table/column-groups/utils.js.map +1 -0
- package/lib/internal/template/table/header-cell/common-props.d.ts +24 -0
- package/lib/internal/template/table/header-cell/common-props.d.ts.map +1 -0
- package/lib/internal/template/table/header-cell/common-props.js +4 -0
- package/lib/internal/template/table/header-cell/common-props.js.map +1 -0
- package/lib/internal/template/table/header-cell/group-header-cell.d.ts +18 -0
- package/lib/internal/template/table/header-cell/group-header-cell.d.ts.map +1 -0
- package/lib/internal/template/table/header-cell/group-header-cell.js +44 -0
- package/lib/internal/template/table/header-cell/group-header-cell.js.map +1 -0
- package/lib/internal/template/table/header-cell/index.d.ts +8 -23
- package/lib/internal/template/table/header-cell/index.d.ts.map +1 -1
- package/lib/internal/template/table/header-cell/index.js +3 -3
- package/lib/internal/template/table/header-cell/index.js.map +1 -1
- package/lib/internal/template/table/header-cell/styles.css.js +33 -30
- package/lib/internal/template/table/header-cell/styles.scoped.css +92 -68
- package/lib/internal/template/table/header-cell/styles.selectors.js +33 -30
- package/lib/internal/template/table/header-cell/th-element.d.ts +10 -1
- package/lib/internal/template/table/header-cell/th-element.d.ts.map +1 -1
- package/lib/internal/template/table/header-cell/th-element.js +6 -4
- package/lib/internal/template/table/header-cell/th-element.js.map +1 -1
- package/lib/internal/template/table/index.d.ts.map +1 -1
- package/lib/internal/template/table/index.js +5 -2
- package/lib/internal/template/table/index.js.map +1 -1
- package/lib/internal/template/table/interfaces.d.ts +48 -1
- package/lib/internal/template/table/interfaces.d.ts.map +1 -1
- package/lib/internal/template/table/interfaces.js.map +1 -1
- package/lib/internal/template/table/internal.d.ts.map +1 -1
- package/lib/internal/template/table/internal.js +119 -102
- package/lib/internal/template/table/internal.js.map +1 -1
- package/lib/internal/template/table/resizer/index.d.ts +6 -2
- package/lib/internal/template/table/resizer/index.d.ts.map +1 -1
- package/lib/internal/template/table/resizer/index.js +5 -5
- package/lib/internal/template/table/resizer/index.js.map +1 -1
- package/lib/internal/template/table/resizer/styles.css.js +16 -13
- package/lib/internal/template/table/resizer/styles.scoped.css +36 -26
- package/lib/internal/template/table/resizer/styles.selectors.js +16 -13
- package/lib/internal/template/table/skeleton-rows.d.ts +23 -0
- package/lib/internal/template/table/skeleton-rows.d.ts.map +1 -0
- package/lib/internal/template/table/skeleton-rows.js +33 -0
- package/lib/internal/template/table/skeleton-rows.js.map +1 -0
- package/lib/internal/template/table/sticky-header.d.ts +3 -0
- package/lib/internal/template/table/sticky-header.d.ts.map +1 -1
- package/lib/internal/template/table/sticky-header.js +7 -2
- package/lib/internal/template/table/sticky-header.js.map +1 -1
- package/lib/internal/template/table/sticky-scrolling.d.ts.map +1 -1
- package/lib/internal/template/table/sticky-scrolling.js +6 -1
- package/lib/internal/template/table/sticky-scrolling.js.map +1 -1
- package/lib/internal/template/table/styles.css.js +36 -34
- package/lib/internal/template/table/styles.scoped.css +53 -41
- package/lib/internal/template/table/styles.selectors.js +36 -34
- package/lib/internal/template/table/table-role/grid-navigation.d.ts.map +1 -1
- package/lib/internal/template/table/table-role/grid-navigation.js +5 -7
- package/lib/internal/template/table/table-role/grid-navigation.js.map +1 -1
- package/lib/internal/template/table/table-role/table-role-helper.d.ts +3 -0
- package/lib/internal/template/table/table-role/table-role-helper.d.ts.map +1 -1
- package/lib/internal/template/table/table-role/table-role-helper.js +9 -4
- package/lib/internal/template/table/table-role/table-role-helper.js.map +1 -1
- package/lib/internal/template/table/table-role/utils.d.ts +19 -0
- package/lib/internal/template/table/table-role/utils.d.ts.map +1 -1
- package/lib/internal/template/table/table-role/utils.js +86 -7
- package/lib/internal/template/table/table-role/utils.js.map +1 -1
- package/lib/internal/template/table/thead.d.ts +5 -0
- package/lib/internal/template/table/thead.d.ts.map +1 -1
- package/lib/internal/template/table/thead.js +145 -18
- package/lib/internal/template/table/thead.js.map +1 -1
- package/lib/internal/template/table/use-column-widths.d.ts +4 -1
- package/lib/internal/template/table/use-column-widths.d.ts.map +1 -1
- package/lib/internal/template/table/use-column-widths.js +68 -18
- package/lib/internal/template/table/use-column-widths.js.map +1 -1
- package/lib/internal/template/table/use-sticky-header.d.ts.map +1 -1
- package/lib/internal/template/table/use-sticky-header.js +4 -1
- package/lib/internal/template/table/use-sticky-header.js.map +1 -1
- package/lib/internal/template/table/utils.d.ts.map +1 -1
- package/lib/internal/template/table/utils.js +14 -4
- package/lib/internal/template/table/utils.js.map +1 -1
- package/lib/internal/template/test-utils/dom/collection-preferences/content-display-preference.d.ts +28 -2
- package/lib/internal/template/test-utils/dom/collection-preferences/content-display-preference.js +60 -2
- package/lib/internal/template/test-utils/dom/collection-preferences/content-display-preference.js.map +1 -1
- package/lib/internal/template/test-utils/dom/table/index.d.ts +18 -1
- package/lib/internal/template/test-utils/dom/table/index.js +22 -3
- package/lib/internal/template/test-utils/dom/table/index.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/collection-preferences/content-display-preference.d.ts +28 -2
- package/lib/internal/template/test-utils/selectors/collection-preferences/content-display-preference.js +52 -2
- package/lib/internal/template/test-utils/selectors/collection-preferences/content-display-preference.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/table/index.d.ts +18 -1
- package/lib/internal/template/test-utils/selectors/table/index.js +22 -3
- package/lib/internal/template/test-utils/selectors/table/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -23,6 +23,8 @@ import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
|
|
|
23
23
|
import { isDevelopment } from '../internal/is-development';
|
|
24
24
|
import InternalLiveRegion from '../live-region/internal';
|
|
25
25
|
import { TableBodyCell } from './body-cell';
|
|
26
|
+
import { TableColGroup } from './column-groups/col-group';
|
|
27
|
+
import { useColumnGroups } from './column-groups/use-column-groups';
|
|
26
28
|
import { checkColumnWidths } from './column-widths-utils';
|
|
27
29
|
import { useExpandableTableProps } from './expandable-rows/expandable-rows-utils';
|
|
28
30
|
import { NoDataCell } from './no-data-cell';
|
|
@@ -33,6 +35,7 @@ import { ResizeTracker } from './resizer';
|
|
|
33
35
|
import { focusMarkers, useSelection, useSelectionFocusMove } from './selection';
|
|
34
36
|
import { TableBodySelectionCell } from './selection/selection-cell';
|
|
35
37
|
import { useGroupSelection } from './selection/use-group-selection';
|
|
38
|
+
import { SkeletonRows } from './skeleton-rows';
|
|
36
39
|
import { useStickyColumns } from './sticky-columns';
|
|
37
40
|
import StickyHeader from './sticky-header';
|
|
38
41
|
import { StickyScrollbar } from './sticky-scrollbar';
|
|
@@ -59,8 +62,8 @@ export const InternalTableAsSubstep = React.forwardRef((props, ref) => {
|
|
|
59
62
|
};
|
|
60
63
|
return React.createElement(InternalTable, { ...tableProps, ref: ref });
|
|
61
64
|
});
|
|
62
|
-
const InternalTable = React.forwardRef(({ header, footer, empty, filter, pagination, preferences, items, columnDefinitions, trackBy, loading, loadingText, selectionType: externalSelectionType, 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: externalExpandableRows, getLoadingStatus, renderLoaderPending, renderLoaderLoading, renderLoaderError, renderLoaderEmpty, renderLoaderCounter, cellVerticalAlign, __funnelSubStepProps, ...rest }, ref) => {
|
|
63
|
-
var _a, _b, _c;
|
|
65
|
+
const InternalTable = React.forwardRef(({ header, footer, empty, filter, pagination, preferences, items, columnDefinitions, groupDefinitions, trackBy, loading, loadingText, skeleton, selectionType: externalSelectionType, 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: externalExpandableRows, getLoadingStatus, renderLoaderPending, renderLoaderLoading, renderLoaderError, renderLoaderEmpty, renderLoaderCounter, cellVerticalAlign, __funnelSubStepProps, ...rest }, ref) => {
|
|
66
|
+
var _a, _b, _c, _d, _e;
|
|
64
67
|
// Keyboard navigation defaults to `true` for tables with expandable rows.
|
|
65
68
|
if (externalExpandableRows && enableKeyboardNavigation === undefined) {
|
|
66
69
|
enableKeyboardNavigation = true;
|
|
@@ -182,6 +185,8 @@ const InternalTable = React.forwardRef(({ header, footer, empty, filter, paginat
|
|
|
182
185
|
columnDisplay,
|
|
183
186
|
visibleColumns,
|
|
184
187
|
});
|
|
188
|
+
const visibleColumnIds = visibleColumnDefinitions.map((col, idx) => getColumnKey(col, idx).toString());
|
|
189
|
+
const { groupColumnMap, ...columnGroupsLayout } = useColumnGroups(columnDefinitions, visibleColumnIds, groupDefinitions, columnDisplay);
|
|
185
190
|
const selectionProps = {
|
|
186
191
|
items: allItems,
|
|
187
192
|
rootItems: items,
|
|
@@ -270,6 +275,8 @@ const InternalTable = React.forwardRef(({ header, footer, empty, filter, paginat
|
|
|
270
275
|
selectionType,
|
|
271
276
|
getSelectAllProps: selection.getSelectAllProps,
|
|
272
277
|
columnDefinitions: visibleColumnDefinitions,
|
|
278
|
+
groupDefinitions,
|
|
279
|
+
columnGroupsLayout,
|
|
273
280
|
variant: computedVariant,
|
|
274
281
|
tableVariant: computedVariant,
|
|
275
282
|
wrapLines,
|
|
@@ -291,6 +298,8 @@ const InternalTable = React.forwardRef(({ header, footer, empty, filter, paginat
|
|
|
291
298
|
resizerTooltipText: ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.resizerTooltipText,
|
|
292
299
|
stripedRows,
|
|
293
300
|
stickyState,
|
|
301
|
+
stickyColumnsFirst: (_d = stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.first) !== null && _d !== void 0 ? _d : 0,
|
|
302
|
+
stickyColumnsLast: (_e = stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.last) !== null && _e !== void 0 ? _e : 0,
|
|
294
303
|
selectionColumnId,
|
|
295
304
|
tableRole,
|
|
296
305
|
isExpandable,
|
|
@@ -319,15 +328,16 @@ const InternalTable = React.forwardRef(({ header, footer, empty, filter, paginat
|
|
|
319
328
|
const toolsHeaderWrapper = useMergeRefs(toolsHeaderPerformanceMarkRef, toolsHeaderWrapperMeasureRef);
|
|
320
329
|
const colIndexOffset = selectionType ? 1 : 0;
|
|
321
330
|
const totalColumnsCount = visibleColumnDefinitions.length + colIndexOffset;
|
|
331
|
+
const headerRowCount = (columnGroupsLayout === null || columnGroupsLayout === void 0 ? void 0 : columnGroupsLayout.rows.length) || 1;
|
|
322
332
|
return (React.createElement(LinkDefaultVariantContext.Provider, { value: { defaultVariant: 'primary' } },
|
|
323
333
|
React.createElement(TableComponentsContextProvider, { value: { paginationRef, filterRef, preferencesRef, headerRef } },
|
|
324
|
-
React.createElement(ColumnWidthsProvider, { visibleColumns: visibleColumnWidthsWithSelection, resizableColumns: resizableColumns, containerRef: wrapperMeasureRefObject },
|
|
334
|
+
React.createElement(ColumnWidthsProvider, { visibleColumns: visibleColumnWidthsWithSelection, resizableColumns: resizableColumns, containerRef: wrapperMeasureRefObject, groupColumnMap: groupColumnMap },
|
|
325
335
|
React.createElement(InternalContainer, { ...baseProps, ...tableInteractionAttributes, __internalRootRef: __internalRootRef, className: clsx(baseProps.className, styles.root), __funnelSubStepProps: __funnelSubStepProps, __fullPage: variant === 'full-page', header: React.createElement(React.Fragment, null,
|
|
326
336
|
hasHeader && (React.createElement("div", null,
|
|
327
337
|
React.createElement("div", { ref: toolsHeaderWrapper, className: clsx(styles['header-controls'], styles[`variant-${computedVariant}`]) },
|
|
328
338
|
React.createElement(CollectionLabelContext.Provider, { value: { assignId: setHeaderRef } },
|
|
329
339
|
React.createElement(ToolsHeader, { header: header, filter: filter, pagination: pagination, preferences: preferences, setLastUserAction: setLastUserAction }))))),
|
|
330
|
-
stickyHeader && (React.createElement(StickyHeader, { ref: stickyHeaderRef, variant: computedVariant, theadProps: theadProps, wrapperRef: wrapperRefObject, theadRef: theadRef, secondaryWrapperRef: secondaryWrapperRef, tableRef: tableRefObject, onScroll: handleScroll, tableHasHeader: hasHeader, contentDensity: contentDensity, tableRole: tableRole }))), disableHeaderPaddings: true, disableContentPaddings: true, disableFooterPaddings: true, variant: toContainerVariant(computedVariant), __disableFooterDivider: true, __disableStickyMobile: false, footer: hasFooter ? (React.createElement("div", { className: clsx(styles['footer-wrapper'], styles[`variant-${computedVariant}`]) },
|
|
340
|
+
stickyHeader && (React.createElement(StickyHeader, { ref: stickyHeaderRef, variant: computedVariant, theadProps: theadProps, wrapperRef: wrapperRefObject, theadRef: theadRef, secondaryWrapperRef: secondaryWrapperRef, tableRef: tableRefObject, onScroll: handleScroll, tableHasHeader: hasHeader, contentDensity: contentDensity, tableRole: tableRole, hasGroupedColumns: !!columnGroupsLayout && columnGroupsLayout.rows.length > 1, columnDefinitions: visibleColumnDefinitions, hasSelection: hasSelection }))), disableHeaderPaddings: true, disableContentPaddings: true, disableFooterPaddings: true, variant: toContainerVariant(computedVariant), __disableFooterDivider: true, __disableStickyMobile: false, footer: hasFooter ? (React.createElement("div", { className: clsx(styles['footer-wrapper'], styles[`variant-${computedVariant}`]) },
|
|
331
341
|
React.createElement("div", { className: clsx(styles.footer, hasFooterPagination && styles['footer-with-pagination']) },
|
|
332
342
|
footer && React.createElement("span", null, footer),
|
|
333
343
|
hasFooterPagination && React.createElement("div", { className: styles['footer-pagination'] }, pagination)))) : null, __stickyHeader: stickyHeader, __mobileStickyOffset: toolsHeaderHeight !== null && toolsHeaderHeight !== void 0 ? toolsHeaderHeight : 0, __stickyOffset: stickyHeaderVerticalOffset, ...focusMarkers.root },
|
|
@@ -344,113 +354,120 @@ const InternalTable = React.forwardRef(({ header, footer, empty, filter, paginat
|
|
|
344
354
|
totalItemsCount,
|
|
345
355
|
})))),
|
|
346
356
|
React.createElement(GridNavigationProvider, { keyboardNavigation: !!enableKeyboardNavigation, pageSize: GRID_NAVIGATION_PAGE_SIZE, getTable: () => tableRefObject.current },
|
|
347
|
-
React.createElement("table", { ...performanceMarkAttributes, ref: tableRef, className: clsx(styles.table, resizableColumns && styles['table-layout-fixed'], contentDensity === 'compact' && getVisualContextClassname('compact-table')), ...getTableRoleProps({
|
|
357
|
+
React.createElement("table", { ...performanceMarkAttributes, ref: tableRef, className: clsx(styles.table, resizableColumns && styles['table-layout-fixed'], columnGroupsLayout && columnGroupsLayout.rows.length > 1 && styles['has-grouped-header'], contentDensity === 'compact' && getVisualContextClassname('compact-table')), ...getTableRoleProps({
|
|
348
358
|
tableRole,
|
|
349
359
|
totalItemsCount,
|
|
350
360
|
totalColumnsCount: totalColumnsCount,
|
|
361
|
+
headerRowCount,
|
|
351
362
|
ariaLabel: ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.tableLabel,
|
|
352
363
|
ariaLabelledby,
|
|
353
364
|
}) },
|
|
365
|
+
resizableColumns && columnGroupsLayout && columnGroupsLayout.rows.length > 1 && (React.createElement(TableColGroup, { visibleColumnDefinitions: visibleColumnDefinitions, hasSelection: hasSelection })),
|
|
354
366
|
React.createElement(Thead, { ref: theadRef, hidden: stickyHeader, onFocusedComponentChange: focusId => { var _a; return (_a = stickyHeaderRef.current) === null || _a === void 0 ? void 0 : _a.setFocus(focusId); }, ...theadProps }),
|
|
355
|
-
React.createElement("tbody", null,
|
|
356
|
-
React.createElement(
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
367
|
+
React.createElement("tbody", null,
|
|
368
|
+
skeleton && allItems.length === 0 && loading ? (React.createElement(SkeletonRows, { count: skeleton.totalRows, hasDataRows: false, totalColumnsCount: totalColumnsCount, loadingText: loadingText, hasSelection: hasSelection, hasFooter: hasFooter, stickyState: stickyState, tableRole: tableRole, ariaLabels: ariaLabels, cellVerticalAlign: cellVerticalAlign, computedVariant: computedVariant, visibleColumnDefinitions: visibleColumnDefinitions, wrapLines: wrapLines, resizableColumns: resizableColumns, colIndexOffset: colIndexOffset })) : !skeleton && (loading || allItems.length === 0) ? (React.createElement("tr", null,
|
|
369
|
+
React.createElement(NoDataCell, { totalColumnsCount: totalColumnsCount, hasFooter: hasFooter, loading: loading, loadingText: loadingText, empty: empty, tableRef: tableRefObject, containerRef: wrapperMeasureRefObject }))) : (allRows.map((row, rowIndex) => {
|
|
370
|
+
const isFirstRow = rowIndex === 0;
|
|
371
|
+
const hasSkeletonBelow = loading && skeleton && allItems.length > 0 && skeleton.totalRows - allItems.length > 0;
|
|
372
|
+
const isLastDataRow = rowIndex === allRows.length - 1;
|
|
373
|
+
const isLastRow = isLastDataRow && !hasSkeletonBelow;
|
|
374
|
+
const rowExpandableProps = row.type === 'data' ? expandableRows.getExpandableItemProps(row.item) : undefined;
|
|
375
|
+
const rowRoleProps = getTableRowRoleProps({
|
|
376
|
+
tableRole,
|
|
377
|
+
firstIndex,
|
|
378
|
+
rowIndex,
|
|
379
|
+
headerRowCount,
|
|
380
|
+
level: row.type === 'loader' ? row.level : undefined,
|
|
381
|
+
...rowExpandableProps,
|
|
382
|
+
});
|
|
383
|
+
const getTableItemKey = (item) => getItemKey(trackBy, item, rowIndex);
|
|
384
|
+
const sharedCellProps = {
|
|
385
|
+
isFirstRow,
|
|
386
|
+
isLastRow,
|
|
387
|
+
isSelected: hasSelection && isRowSelected(row),
|
|
388
|
+
isPrevSelected: hasSelection && !isFirstRow && isRowSelected(allRows[rowIndex - 1]),
|
|
389
|
+
isNextSelected: hasSelection && !isLastDataRow && isRowSelected(allRows[rowIndex + 1]),
|
|
390
|
+
isEvenRow: rowIndex % 2 === 0,
|
|
391
|
+
stripedRows,
|
|
392
|
+
hasSelection,
|
|
393
|
+
hasFooter,
|
|
394
|
+
stickyState,
|
|
395
|
+
tableRole,
|
|
396
|
+
};
|
|
397
|
+
if (row.type === 'data') {
|
|
398
|
+
const rowId = `${getTableItemKey(row.item)}`;
|
|
399
|
+
return (React.createElement("tr", { key: rowId, className: clsx(styles.row, sharedCellProps.isSelected && styles['row-selected']), onFocus: ({ currentTarget }) => {
|
|
400
|
+
var _a;
|
|
401
|
+
// When an element inside table row receives focus we want to adjust the scroll.
|
|
402
|
+
// However, that behavior is unwanted when the focus is received as result of a click
|
|
403
|
+
// as it causes the click to never reach the target element.
|
|
404
|
+
if (!currentTarget.contains(getMouseDownTarget())) {
|
|
405
|
+
(_a = stickyHeaderRef.current) === null || _a === void 0 ? void 0 : _a.scrollToRow(currentTarget);
|
|
406
|
+
}
|
|
407
|
+
}, ...focusMarkers.item, onClick: onRowClickHandler && onRowClickHandler.bind(null, rowIndex, row.item), onContextMenu: onRowContextMenuHandler && onRowContextMenuHandler.bind(null, rowIndex, row.item), ...rowRoleProps },
|
|
408
|
+
selection.getItemSelectionProps && (React.createElement(TableBodySelectionCell, { ...sharedCellProps, columnId: selectionColumnId, selectionControlProps: {
|
|
409
|
+
...selection.getItemSelectionProps(row.item),
|
|
410
|
+
onFocusDown: moveFocusDown,
|
|
411
|
+
onFocusUp: moveFocusUp,
|
|
412
|
+
rowIndex,
|
|
413
|
+
itemKey: rowId,
|
|
414
|
+
}, verticalAlign: cellVerticalAlign, tableVariant: computedVariant })),
|
|
415
|
+
visibleColumnDefinitions.map((column, colIndex) => {
|
|
416
|
+
var _a, _b, _c;
|
|
417
|
+
const colId = `${getColumnKey(column, colIndex)}`;
|
|
418
|
+
const cellId = { row: rowId, col: colId };
|
|
419
|
+
const isEditing = cellEditing.checkEditing(cellId);
|
|
420
|
+
const successfulEdit = cellEditing.checkLastSuccessfulEdit(cellId);
|
|
421
|
+
const isEditable = !!column.editConfig && !cellEditing.isLoading;
|
|
422
|
+
const cellExpandableProps = isExpandable && colIndex === 0 ? rowExpandableProps : undefined;
|
|
423
|
+
const counter = (_a = column.counter) === null || _a === void 0 ? void 0 : _a.call(column, {
|
|
424
|
+
item: row.item,
|
|
425
|
+
itemsCount: rowExpandableProps === null || rowExpandableProps === void 0 ? void 0 : rowExpandableProps.itemsCount,
|
|
426
|
+
selectedItemsCount: rowExpandableProps === null || rowExpandableProps === void 0 ? void 0 : rowExpandableProps.selectedItemsCount,
|
|
427
|
+
});
|
|
428
|
+
const analyticsMetadata = {
|
|
429
|
+
component: {
|
|
430
|
+
innerContext: {
|
|
431
|
+
position: `${rowIndex + 1},${colIndex + 1}`,
|
|
432
|
+
columnId: column.id ? `${column.id}` : '',
|
|
433
|
+
columnLabel: {
|
|
434
|
+
selector: `table thead tr th:nth-child(${colIndex + (selectionType ? 2 : 1)})`,
|
|
435
|
+
root: 'component',
|
|
436
|
+
},
|
|
437
|
+
item: rowId,
|
|
420
438
|
},
|
|
421
|
-
item: rowId,
|
|
422
439
|
},
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
440
|
+
};
|
|
441
|
+
return (React.createElement(TableBodyCell, { key: colId, ...sharedCellProps, resizableStyle: {
|
|
442
|
+
width: column.width,
|
|
443
|
+
minWidth: column.minWidth,
|
|
444
|
+
maxWidth: column.maxWidth,
|
|
445
|
+
}, ariaLabels: ariaLabels, column: column, item: row.item, wrapLines: wrapLines, isEditable: isEditable, isEditing: isEditing, isRowHeader: column.isRowHeader, successfulEdit: successfulEdit, resizableColumns: resizableColumns, onEditStart: () => cellEditing.startEdit(cellId), onEditEnd: editCancelled => cellEditing.completeEdit(cellId, editCancelled), submitEdit: cellEditing.submitEdit, columnId: (_b = column.id) !== null && _b !== void 0 ? _b : colIndex, colIndex: colIndex + colIndexOffset, verticalAlign: (_c = column.verticalAlign) !== null && _c !== void 0 ? _c : cellVerticalAlign, tableVariant: computedVariant, counter: counter, ...cellExpandableProps, ...getAnalyticsMetadataAttribute(analyticsMetadata) }));
|
|
446
|
+
})));
|
|
447
|
+
}
|
|
448
|
+
const loaderSelectionProps = selection.getLoaderSelectionProps && selection.getLoaderSelectionProps(row.item);
|
|
449
|
+
const rowSelection = selectionType === 'group' ? loaderSelectionProps : undefined;
|
|
450
|
+
const loaderContent = getLoaderContent({
|
|
451
|
+
item: row.item,
|
|
452
|
+
loadingStatus: row.status,
|
|
453
|
+
renderLoaderPending,
|
|
454
|
+
renderLoaderLoading,
|
|
455
|
+
renderLoaderError,
|
|
456
|
+
renderLoaderEmpty,
|
|
457
|
+
});
|
|
458
|
+
const loaderCounter = renderLoaderCounter === null || renderLoaderCounter === void 0 ? void 0 : renderLoaderCounter({
|
|
459
|
+
item: row.item,
|
|
460
|
+
loadingStatus: row.status,
|
|
461
|
+
selected: !!(rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.checked),
|
|
462
|
+
});
|
|
463
|
+
return (loaderContent && (React.createElement("tr", { key: (row.item ? getTableItemKey(row.item) : 'root-' + rowIndex) + '-' + row.from, className: styles.row, ...rowRoleProps },
|
|
464
|
+
selectionType ? (React.createElement(TableBodySelectionCell, { ...sharedCellProps, columnId: selectionColumnId, verticalAlign: cellVerticalAlign, tableVariant: computedVariant, selectionControlProps: selectionType === 'group' ? loaderSelectionProps : undefined, isSelected: selectionType === 'group' && !!(loaderSelectionProps === null || loaderSelectionProps === void 0 ? void 0 : loaderSelectionProps.checked) })) : null,
|
|
465
|
+
visibleColumnDefinitions.map((column, colIndex) => {
|
|
466
|
+
var _a;
|
|
467
|
+
return (React.createElement(TableLoaderCell, { key: getColumnKey(column, colIndex), ...sharedCellProps, wrapLines: false, columnId: (_a = column.id) !== null && _a !== void 0 ? _a : colIndex, colIndex: colIndex + colIndexOffset, isSelected: selectionType === 'group' && !!(loaderSelectionProps === null || loaderSelectionProps === void 0 ? void 0 : loaderSelectionProps.checked), isRowHeader: colIndex === 0, level: row.level, item: row.item, trackBy: trackBy, counter: loaderCounter }, loaderContent));
|
|
468
|
+
}))));
|
|
469
|
+
})),
|
|
470
|
+
loading && skeleton && allItems.length > 0 && skeleton.totalRows - allItems.length > 0 && (React.createElement(SkeletonRows, { count: skeleton.totalRows - allItems.length, hasDataRows: true, totalColumnsCount: totalColumnsCount, loadingText: loadingText, hasSelection: hasSelection, hasFooter: hasFooter, stickyState: stickyState, tableRole: tableRole, ariaLabels: ariaLabels, cellVerticalAlign: cellVerticalAlign, computedVariant: computedVariant, visibleColumnDefinitions: visibleColumnDefinitions, wrapLines: wrapLines, resizableColumns: resizableColumns, colIndexOffset: colIndexOffset }))))),
|
|
454
471
|
resizableColumns && React.createElement(ResizeTracker, null)),
|
|
455
472
|
React.createElement(StickyScrollbar, { ref: scrollbarRef, wrapperRef: wrapperRefObject, tableRef: tableRefObject, onScroll: handleScroll, hasStickyColumns: hasStickyColumns }))))));
|
|
456
473
|
});
|