@cloudscape-design/components-themeable 3.0.1333 → 3.0.1335
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/box/visual-accent.scss +61 -25
- package/lib/internal/scss/button/styles.scss +6 -0
- package/lib/internal/scss/code-editor/ace-editor.scss +1 -1
- package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
- package/lib/internal/scss/side-navigation/styles.scss +10 -3
- package/lib/internal/scss/steps/styles.scss +113 -31
- package/lib/internal/scss/table/header-cell/styles.scss +42 -14
- package/lib/internal/scss/table/styles.scss +6 -0
- package/lib/internal/scss/tooltip/styles.scss +22 -0
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.js +1 -1
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.js.map +1 -1
- package/lib/internal/template/box/interfaces.d.ts +1 -1
- package/lib/internal/template/box/interfaces.d.ts.map +1 -1
- package/lib/internal/template/box/interfaces.js.map +1 -1
- package/lib/internal/template/box/styles.css.js +220 -224
- package/lib/internal/template/box/styles.scoped.css +293 -313
- package/lib/internal/template/box/styles.selectors.js +220 -224
- package/lib/internal/template/button/internal.d.ts +2 -0
- package/lib/internal/template/button/internal.d.ts.map +1 -1
- package/lib/internal/template/button/internal.js +2 -1
- package/lib/internal/template/button/internal.js.map +1 -1
- package/lib/internal/template/button/styles.css.js +23 -22
- package/lib/internal/template/button/styles.scoped.css +74 -69
- package/lib/internal/template/button/styles.selectors.js +23 -22
- package/lib/internal/template/button-dropdown/internal-interfaces.d.ts +11 -0
- package/lib/internal/template/button-dropdown/internal-interfaces.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/internal-interfaces.js.map +1 -1
- package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/internal.js +3 -2
- package/lib/internal/template/button-dropdown/internal.js.map +1 -1
- package/lib/internal/template/button-group/copy-to-clipboard-item.d.ts +16 -0
- package/lib/internal/template/button-group/copy-to-clipboard-item.d.ts.map +1 -0
- package/lib/internal/template/button-group/copy-to-clipboard-item.js +38 -0
- package/lib/internal/template/button-group/copy-to-clipboard-item.js.map +1 -0
- package/lib/internal/template/button-group/index.d.ts.map +1 -1
- package/lib/internal/template/button-group/index.js +9 -1
- package/lib/internal/template/button-group/index.js.map +1 -1
- package/lib/internal/template/button-group/interfaces.d.ts +38 -2
- package/lib/internal/template/button-group/interfaces.d.ts.map +1 -1
- package/lib/internal/template/button-group/interfaces.js.map +1 -1
- package/lib/internal/template/button-group/internal-interfaces.d.ts +1 -1
- package/lib/internal/template/button-group/internal-interfaces.d.ts.map +1 -1
- package/lib/internal/template/button-group/internal-interfaces.js.map +1 -1
- package/lib/internal/template/button-group/internal.d.ts.map +1 -1
- package/lib/internal/template/button-group/internal.js +2 -2
- package/lib/internal/template/button-group/internal.js.map +1 -1
- package/lib/internal/template/button-group/item-element.d.ts +2 -0
- package/lib/internal/template/button-group/item-element.d.ts.map +1 -1
- package/lib/internal/template/button-group/item-element.js +13 -3
- package/lib/internal/template/button-group/item-element.js.map +1 -1
- package/lib/internal/template/code-editor/styles.css.js +33 -33
- package/lib/internal/template/code-editor/styles.scoped.css +187 -187
- package/lib/internal/template/code-editor/styles.selectors.js +33 -33
- 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.ar.js +1 -1
- package/lib/internal/template/i18n/messages/all.ar.json +1 -1
- package/lib/internal/template/i18n/messages/all.de.js +1 -1
- package/lib/internal/template/i18n/messages/all.de.json +1 -1
- package/lib/internal/template/i18n/messages/all.en-GB.js +1 -1
- package/lib/internal/template/i18n/messages/all.en-GB.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/all.es.js +1 -1
- package/lib/internal/template/i18n/messages/all.es.json +1 -1
- package/lib/internal/template/i18n/messages/all.fr.js +1 -1
- package/lib/internal/template/i18n/messages/all.fr.json +1 -1
- package/lib/internal/template/i18n/messages/all.id.js +1 -1
- package/lib/internal/template/i18n/messages/all.id.json +1 -1
- package/lib/internal/template/i18n/messages/all.it.js +1 -1
- package/lib/internal/template/i18n/messages/all.it.json +1 -1
- package/lib/internal/template/i18n/messages/all.ja.js +1 -1
- package/lib/internal/template/i18n/messages/all.ja.json +1 -1
- package/lib/internal/template/i18n/messages/all.ko.js +1 -1
- package/lib/internal/template/i18n/messages/all.ko.json +1 -1
- package/lib/internal/template/i18n/messages/all.pt-BR.js +1 -1
- package/lib/internal/template/i18n/messages/all.pt-BR.json +1 -1
- package/lib/internal/template/i18n/messages/all.tr.js +1 -1
- package/lib/internal/template/i18n/messages/all.tr.json +1 -1
- package/lib/internal/template/i18n/messages/all.zh-CN.js +1 -1
- package/lib/internal/template/i18n/messages/all.zh-CN.json +1 -1
- package/lib/internal/template/i18n/messages/all.zh-TW.js +1 -1
- package/lib/internal/template/i18n/messages/all.zh-TW.json +1 -1
- package/lib/internal/template/i18n/messages-types.d.ts +19 -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 +163 -3
- package/lib/internal/template/internal/environment.js +2 -2
- package/lib/internal/template/internal/environment.json +2 -2
- package/lib/internal/template/internal/generated/styles/tokens.d.ts +35 -38
- package/lib/internal/template/internal/generated/styles/tokens.js +35 -38
- package/lib/internal/template/internal/generated/theming/index.cjs +585 -774
- package/lib/internal/template/internal/generated/theming/index.cjs.d.ts +36 -9
- package/lib/internal/template/internal/generated/theming/index.d.ts +36 -9
- package/lib/internal/template/internal/generated/theming/index.js +585 -774
- package/lib/internal/template/internal/utils/scrollable-containers.d.ts +5 -0
- package/lib/internal/template/internal/utils/scrollable-containers.d.ts.map +1 -1
- package/lib/internal/template/internal/utils/scrollable-containers.js +16 -0
- package/lib/internal/template/internal/utils/scrollable-containers.js.map +1 -1
- package/lib/internal/template/side-navigation/implementation.d.ts.map +1 -1
- package/lib/internal/template/side-navigation/implementation.js +3 -2
- package/lib/internal/template/side-navigation/implementation.js.map +1 -1
- package/lib/internal/template/side-navigation/parts.d.ts +2 -1
- package/lib/internal/template/side-navigation/parts.d.ts.map +1 -1
- package/lib/internal/template/side-navigation/parts.js +14 -13
- package/lib/internal/template/side-navigation/parts.js.map +1 -1
- package/lib/internal/template/side-navigation/styles.css.js +48 -47
- package/lib/internal/template/side-navigation/styles.scoped.css +77 -74
- package/lib/internal/template/side-navigation/styles.selectors.js +48 -47
- package/lib/internal/template/side-navigation/util.d.ts +1 -0
- package/lib/internal/template/side-navigation/util.d.ts.map +1 -1
- package/lib/internal/template/side-navigation/util.js +5 -0
- package/lib/internal/template/side-navigation/util.js.map +1 -1
- package/lib/internal/template/steps/interfaces.d.ts +2 -0
- package/lib/internal/template/steps/interfaces.d.ts.map +1 -1
- package/lib/internal/template/steps/interfaces.js.map +1 -1
- package/lib/internal/template/steps/internal.d.ts.map +1 -1
- package/lib/internal/template/steps/internal.js +35 -12
- package/lib/internal/template/steps/internal.js.map +1 -1
- package/lib/internal/template/steps/styles.css.js +17 -13
- package/lib/internal/template/steps/styles.scoped.css +99 -42
- package/lib/internal/template/steps/styles.selectors.js +17 -13
- package/lib/internal/template/table/clear-sort.d.ts +9 -0
- package/lib/internal/template/table/clear-sort.d.ts.map +1 -0
- package/lib/internal/template/table/clear-sort.js +15 -0
- package/lib/internal/template/table/clear-sort.js.map +1 -0
- package/lib/internal/template/table/header-cell/index.d.ts +4 -1
- package/lib/internal/template/table/header-cell/index.d.ts.map +1 -1
- package/lib/internal/template/table/header-cell/index.js +122 -33
- package/lib/internal/template/table/header-cell/index.js.map +1 -1
- package/lib/internal/template/table/header-cell/sort-menu.d.ts +14 -0
- package/lib/internal/template/table/header-cell/sort-menu.d.ts.map +1 -0
- package/lib/internal/template/table/header-cell/sort-menu.js +50 -0
- package/lib/internal/template/table/header-cell/sort-menu.js.map +1 -0
- package/lib/internal/template/table/header-cell/styles.css.js +38 -33
- package/lib/internal/template/table/header-cell/styles.scoped.css +101 -76
- package/lib/internal/template/table/header-cell/styles.selectors.js +38 -33
- package/lib/internal/template/table/header-cell/th-element.d.ts +8 -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 -2
- 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 +8 -4
- package/lib/internal/template/table/index.js.map +1 -1
- package/lib/internal/template/table/interfaces.d.ts +81 -2
- 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 +40 -9
- package/lib/internal/template/table/internal.js.map +1 -1
- package/lib/internal/template/table/multi-column-sort/live-announcement.d.ts +16 -0
- package/lib/internal/template/table/multi-column-sort/live-announcement.d.ts.map +1 -0
- package/lib/internal/template/table/multi-column-sort/live-announcement.js +68 -0
- package/lib/internal/template/table/multi-column-sort/live-announcement.js.map +1 -0
- package/lib/internal/template/table/multi-column-sort/utils.d.ts +45 -0
- package/lib/internal/template/table/multi-column-sort/utils.d.ts.map +1 -0
- package/lib/internal/template/table/multi-column-sort/utils.js +76 -0
- package/lib/internal/template/table/multi-column-sort/utils.js.map +1 -0
- package/lib/internal/template/table/styles.css.js +37 -36
- package/lib/internal/template/table/styles.scoped.css +46 -43
- package/lib/internal/template/table/styles.selectors.js +37 -36
- package/lib/internal/template/table/thead.d.ts +3 -0
- package/lib/internal/template/table/thead.d.ts.map +1 -1
- package/lib/internal/template/table/thead.js +3 -3
- package/lib/internal/template/table/thead.js.map +1 -1
- package/lib/internal/template/table/tools-header.d.ts +2 -1
- package/lib/internal/template/table/tools-header.d.ts.map +1 -1
- package/lib/internal/template/table/tools-header.js +4 -3
- package/lib/internal/template/table/tools-header.js.map +1 -1
- package/lib/internal/template/table/use-auto-skeleton-rows.d.ts +12 -0
- package/lib/internal/template/table/use-auto-skeleton-rows.d.ts.map +1 -0
- package/lib/internal/template/table/use-auto-skeleton-rows.js +100 -0
- package/lib/internal/template/table/use-auto-skeleton-rows.js.map +1 -0
- package/lib/internal/template/test-utils/dom/button-group/index.d.ts +4 -0
- package/lib/internal/template/test-utils/dom/button-group/index.js +8 -0
- package/lib/internal/template/test-utils/dom/button-group/index.js.map +1 -1
- package/lib/internal/template/test-utils/dom/pagination/index.js +2 -2
- package/lib/internal/template/test-utils/dom/pagination/index.js.map +1 -1
- package/lib/internal/template/test-utils/dom/steps/index.d.ts +4 -0
- package/lib/internal/template/test-utils/dom/steps/index.js +6 -0
- package/lib/internal/template/test-utils/dom/steps/index.js.map +1 -1
- package/lib/internal/template/test-utils/dom/table/index.d.ts +77 -0
- package/lib/internal/template/test-utils/dom/table/index.js +87 -2
- package/lib/internal/template/test-utils/dom/table/index.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/button-group/index.d.ts +4 -0
- package/lib/internal/template/test-utils/selectors/button-group/index.js +8 -0
- package/lib/internal/template/test-utils/selectors/button-group/index.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/pagination/index.js +2 -2
- package/lib/internal/template/test-utils/selectors/pagination/index.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/steps/index.d.ts +4 -0
- package/lib/internal/template/test-utils/selectors/steps/index.js +6 -0
- package/lib/internal/template/test-utils/selectors/steps/index.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/table/index.d.ts +77 -0
- package/lib/internal/template/test-utils/selectors/table/index.js +87 -2
- package/lib/internal/template/test-utils/selectors/table/index.js.map +1 -1
- package/lib/internal/template/tooltip/internal.d.ts.map +1 -1
- package/lib/internal/template/tooltip/internal.js +2 -1
- package/lib/internal/template/tooltip/internal.js.map +1 -1
- package/lib/internal/template/tooltip/styles.css.js +7 -0
- package/lib/internal/template/tooltip/styles.scoped.css +165 -0
- package/lib/internal/template/tooltip/styles.selectors.js +8 -0
- package/lib/internal/template/top-navigation/use-top-navigation.d.ts.map +1 -1
- package/lib/internal/template/top-navigation/use-top-navigation.js +2 -5
- package/lib/internal/template/top-navigation/use-top-navigation.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ import { getTableHeaderRowRoleProps } from './table-role';
|
|
|
13
13
|
import { DEFAULT_COLUMN_WIDTH, useColumnWidths } from './use-column-widths';
|
|
14
14
|
import { getColumnKey } from './utils';
|
|
15
15
|
import styles from './styles.css.js';
|
|
16
|
-
const Thead = React.forwardRef(({ selectionType, getSelectAllProps, columnDefinitions, columnGroupsLayout, sortingColumn, sortingDisabled, sortingDescending, resizableColumns, variant, tableVariant, wrapLines, onFocusMove, onSortingChange, onResizeFinish, singleSelectionHeaderAriaLabel, stripedRows, sticky = false, hidden = false, stuck = false, stickyState, stickyColumnsFirst, stickyColumnsLast, selectionColumnId, focusedComponent, onFocusedComponentChange, tableRole, resizerRoleDescription, resizerTooltipText, isExpandable, setLastUserAction, }, outerRef) => {
|
|
16
|
+
const Thead = React.forwardRef(({ selectionType, getSelectAllProps, columnDefinitions, columnGroupsLayout, sortingColumn, sortingDisabled, sortingDescending, multiColumnSort, i18nStrings, ariaLabels, resizableColumns, variant, tableVariant, wrapLines, onFocusMove, onSortingChange, onResizeFinish, singleSelectionHeaderAriaLabel, stripedRows, sticky = false, hidden = false, stuck = false, stickyState, stickyColumnsFirst, stickyColumnsLast, selectionColumnId, focusedComponent, onFocusedComponentChange, tableRole, resizerRoleDescription, resizerTooltipText, isExpandable, setLastUserAction, }, outerRef) => {
|
|
17
17
|
const { getColumnStyles, columnWidths, updateColumn, updateGroup, setCell } = useColumnWidths();
|
|
18
18
|
// This guarantees the width reported via `onColumnWidthsChange` matches the final rendered width instead of a stale one.
|
|
19
19
|
// Without this, resetting/remounting a table right after a resize can restore an outdated width.
|
|
@@ -55,7 +55,7 @@ const Thead = React.forwardRef(({ selectionType, getSelectAllProps, columnDefini
|
|
|
55
55
|
selectionType ? (React.createElement(TableHeaderSelectionCell, { ...commonCellProps, focusedComponent: focusedComponent, columnId: selectionColumnId, cellRef: node => setCell(sticky, selectionColumnId, node), getSelectAllProps: getSelectAllProps, onFocusMove: onFocusMove, singleSelectionHeaderAriaLabel: singleSelectionHeaderAriaLabel })) : null,
|
|
56
56
|
columnDefinitions.map((column, colIndex) => {
|
|
57
57
|
const columnId = getColumnKey(column, colIndex);
|
|
58
|
-
return (React.createElement(TableHeaderCell, { ...commonCellProps, key: columnId, tabIndex: sticky ? -1 : 0, focusedComponent: focusedComponent, column: column, activeSortingColumn: sortingColumn, sortingDescending: sortingDescending, sortingDisabled: sortingDisabled, wrapLines: wrapLines, colIndex: selectionType ? colIndex + 1 : colIndex, columnId: columnId, updateColumn: updateColumn, onResizeFinish: () => onResizeFinish(columnWidthsRef.current), resizableColumns: resizableColumns, resizableStyle: getColumnStyles(sticky, columnId), onClick: detail => {
|
|
58
|
+
return (React.createElement(TableHeaderCell, { ...commonCellProps, key: columnId, tabIndex: sticky ? -1 : 0, focusedComponent: focusedComponent, column: column, activeSortingColumn: sortingColumn, sortingDescending: sortingDescending, sortingDisabled: sortingDisabled, multiColumnSort: multiColumnSort, i18nStrings: i18nStrings, ariaLabels: ariaLabels, wrapLines: wrapLines, colIndex: selectionType ? colIndex + 1 : colIndex, columnId: columnId, updateColumn: updateColumn, onResizeFinish: () => onResizeFinish(columnWidthsRef.current), resizableColumns: resizableColumns, resizableStyle: getColumnStyles(sticky, columnId), onClick: detail => {
|
|
59
59
|
setLastUserAction('sorting');
|
|
60
60
|
fireNonCancelableEvent(onSortingChange, detail);
|
|
61
61
|
}, isEditable: !!column.editConfig, cellRef: node => setCell(sticky, columnId, node), tableRole: tableRole, resizerRoleDescription: resizerRoleDescription, resizerTooltipText: resizerTooltipText, isExpandable: colIndex === 0 && isExpandable, hasDynamicContent: hidden && !resizableColumns && column.hasDynamicContent, isLast: colIndex === columnDefinitions.length - 1 }));
|
|
@@ -164,7 +164,7 @@ const Thead = React.forwardRef(({ selectionType, getSelectAllProps, columnDefini
|
|
|
164
164
|
const column = col.columnDefinition;
|
|
165
165
|
const columnId = col.id;
|
|
166
166
|
const colIndex = col.colIndex;
|
|
167
|
-
return (React.createElement(TableHeaderCell, { ...commonCellProps, key: columnId, tabIndex: sticky ? -1 : 0, focusedComponent: focusedComponent, column: column, activeSortingColumn: sortingColumn, sortingDescending: sortingDescending, sortingDisabled: sortingDisabled, wrapLines: wrapLines, colIndex: selectionType ? colIndex + 1 : colIndex, columnId: columnId, updateColumn: updateColumn, onResizeFinish: () => onResizeFinish(columnWidthsRef.current), resizableColumns: resizableColumns, resizableStyle: getColumnStyles(sticky, columnId), onClick: detail => {
|
|
167
|
+
return (React.createElement(TableHeaderCell, { ...commonCellProps, key: columnId, tabIndex: sticky ? -1 : 0, focusedComponent: focusedComponent, column: column, activeSortingColumn: sortingColumn, sortingDescending: sortingDescending, sortingDisabled: sortingDisabled, multiColumnSort: multiColumnSort, i18nStrings: i18nStrings, ariaLabels: ariaLabels, wrapLines: wrapLines, colIndex: selectionType ? colIndex + 1 : colIndex, columnId: columnId, updateColumn: updateColumn, onResizeFinish: () => onResizeFinish(columnWidthsRef.current), resizableColumns: resizableColumns, resizableStyle: getColumnStyles(sticky, columnId), onClick: detail => {
|
|
168
168
|
setLastUserAction('sorting');
|
|
169
169
|
fireNonCancelableEvent(onSortingChange, detail);
|
|
170
170
|
}, isEditable: !!column.editConfig, cellRef: node => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thead.js","sourceRoot":"","sources":["../../../src/table/thead.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 React, { useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { findUpUntil } from '@cloudscape-design/component-toolkit/dom';\n\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { NonCancelableEventHandler } from '../types/events';\nimport { getGroupColumnIds, getGroupSplit } from './column-groups/split-utils';\nimport { ColumnGroupsLayout } from './column-groups/utils';\nimport { TableHeaderCell } from './header-cell';\nimport { TableGroupHeaderCell } from './header-cell/group-header-cell';\nimport { TableProps } from './interfaces';\nimport { InternalSelectionType } from './internal-interfaces';\nimport { focusMarkers, ItemSelectionProps } from './selection';\nimport { TableHeaderSelectionCell } from './selection/selection-cell';\nimport { StickyColumnsModel } from './sticky-columns';\nimport { getTableHeaderRowRoleProps, TableRole } from './table-role';\nimport { DEFAULT_COLUMN_WIDTH, useColumnWidths } from './use-column-widths';\nimport { getColumnKey } from './utils';\n\nimport styles from './styles.css.js';\n\nexport interface TheadProps {\n selectionType: undefined | InternalSelectionType;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<any>>;\n groupDefinitions?: ReadonlyArray<TableProps.GroupDefinition>;\n columnGroupsLayout?: ColumnGroupsLayout<any>;\n sortingColumn: TableProps.SortingColumn<any> | undefined;\n sortingDescending: boolean | undefined;\n sortingDisabled: boolean | undefined;\n variant: TableProps.Variant;\n tableVariant?: TableProps.Variant;\n wrapLines: boolean | undefined;\n resizableColumns: boolean | undefined;\n getSelectAllProps?: () => ItemSelectionProps;\n onFocusMove: ((sourceElement: HTMLElement, fromIndex: number, direction: -1 | 1) => void) | undefined;\n onResizeFinish: (newWidths: Map<PropertyKey, number>) => void;\n onSortingChange: NonCancelableEventHandler<TableProps.SortingState<any>> | undefined;\n sticky?: boolean;\n hidden?: boolean;\n stuck?: boolean;\n singleSelectionHeaderAriaLabel?: string;\n resizerRoleDescription?: string;\n resizerTooltipText?: string;\n stripedRows?: boolean;\n stickyState: StickyColumnsModel;\n stickyColumnsFirst: number;\n stickyColumnsLast: number;\n selectionColumnId: PropertyKey;\n focusedComponent?: null | string;\n onFocusedComponentChange?: (focusId: null | string) => void;\n tableRole: TableRole;\n isExpandable?: boolean;\n setLastUserAction: (name: string) => void;\n}\n\nconst Thead = React.forwardRef(\n (\n {\n selectionType,\n getSelectAllProps,\n columnDefinitions,\n columnGroupsLayout,\n sortingColumn,\n sortingDisabled,\n sortingDescending,\n resizableColumns,\n variant,\n tableVariant,\n wrapLines,\n onFocusMove,\n onSortingChange,\n onResizeFinish,\n singleSelectionHeaderAriaLabel,\n stripedRows,\n sticky = false,\n hidden = false,\n stuck = false,\n stickyState,\n stickyColumnsFirst,\n stickyColumnsLast,\n selectionColumnId,\n focusedComponent,\n onFocusedComponentChange,\n tableRole,\n resizerRoleDescription,\n resizerTooltipText,\n isExpandable,\n setLastUserAction,\n }: TheadProps,\n outerRef: React.Ref<HTMLTableRowElement>\n ) => {\n const { getColumnStyles, columnWidths, updateColumn, updateGroup, setCell } = useColumnWidths();\n\n // This guarantees the width reported via `onColumnWidthsChange` matches the final rendered width instead of a stale one.\n // Without this, resetting/remounting a table right after a resize can restore an outdated width.\n const columnWidthsRef = useRef(columnWidths);\n columnWidthsRef.current = columnWidths;\n\n const handleSplitGroupResize = (columnIds: string[], newWidth: number) => {\n const lastColumn = columnIds[columnIds.length - 1];\n if (lastColumn) {\n const currentGroupWidth = columnIds.reduce(\n (sum, id) => sum + (columnWidths.get(id) || DEFAULT_COLUMN_WIDTH),\n 0\n );\n const delta = newWidth - currentGroupWidth;\n const currentColumnWidth = columnWidths.get(lastColumn) || DEFAULT_COLUMN_WIDTH;\n updateColumn(lastColumn, currentColumnWidth + delta);\n }\n };\n\n const commonCellProps = {\n stuck,\n sticky,\n hidden,\n stripedRows,\n tableRole,\n variant,\n tableVariant,\n stickyState,\n wrapLines,\n };\n\n const sharedTrProps = {\n onFocus: (event: React.FocusEvent) => {\n const focusControlElement = findUpUntil(\n event.target as HTMLElement,\n element => !!element.getAttribute('data-focus-id')\n );\n const focusId = focusControlElement?.getAttribute('data-focus-id') ?? null;\n onFocusedComponentChange?.(focusId);\n },\n onBlur: () => onFocusedComponentChange?.(null),\n };\n\n // No grouping - render single row\n if (!columnGroupsLayout || columnGroupsLayout.rows.length <= 1) {\n return (\n <thead className={clsx(!hidden && styles['thead-active'])}>\n <tr\n {...focusMarkers.all}\n ref={outerRef}\n aria-rowindex={1}\n {...getTableHeaderRowRoleProps({ tableRole })}\n {...sharedTrProps}\n >\n {selectionType ? (\n <TableHeaderSelectionCell\n {...commonCellProps}\n focusedComponent={focusedComponent}\n columnId={selectionColumnId}\n cellRef={node => setCell(sticky, selectionColumnId, node)}\n getSelectAllProps={getSelectAllProps}\n onFocusMove={onFocusMove}\n singleSelectionHeaderAriaLabel={singleSelectionHeaderAriaLabel}\n />\n ) : null}\n\n {columnDefinitions.map((column, colIndex) => {\n const columnId = getColumnKey(column, colIndex);\n return (\n <TableHeaderCell\n {...commonCellProps}\n key={columnId}\n tabIndex={sticky ? -1 : 0}\n focusedComponent={focusedComponent}\n column={column}\n activeSortingColumn={sortingColumn}\n sortingDescending={sortingDescending}\n sortingDisabled={sortingDisabled}\n wrapLines={wrapLines}\n colIndex={selectionType ? colIndex + 1 : colIndex}\n columnId={columnId}\n updateColumn={updateColumn}\n onResizeFinish={() => onResizeFinish(columnWidthsRef.current)}\n resizableColumns={resizableColumns}\n resizableStyle={getColumnStyles(sticky, columnId)}\n onClick={detail => {\n setLastUserAction('sorting');\n fireNonCancelableEvent(onSortingChange, detail);\n }}\n isEditable={!!column.editConfig}\n cellRef={node => setCell(sticky, columnId, node)}\n tableRole={tableRole}\n resizerRoleDescription={resizerRoleDescription}\n resizerTooltipText={resizerTooltipText}\n isExpandable={colIndex === 0 && isExpandable}\n hasDynamicContent={hidden && !resizableColumns && column.hasDynamicContent}\n isLast={colIndex === columnDefinitions.length - 1}\n />\n );\n })}\n </tr>\n </thead>\n );\n }\n\n // Grouped columns\n const totalColumns = columnDefinitions.length;\n return (\n <thead className={clsx(!hidden && styles['thead-active'])}>\n {columnGroupsLayout.rows.map((row, rowIndex) => (\n <tr\n key={rowIndex}\n {...(rowIndex === 0 ? focusMarkers.all : {})}\n ref={rowIndex === 0 ? outerRef : undefined}\n aria-rowindex={rowIndex + 1}\n data-group-level={rowIndex}\n {...getTableHeaderRowRoleProps({ tableRole, rowIndex })}\n {...sharedTrProps}\n >\n {/* Selection column — render once in the first row with rowSpan covering all header rows */}\n {selectionType && rowIndex === 0 ? (\n <TableHeaderSelectionCell\n {...commonCellProps}\n focusedComponent={focusedComponent}\n columnId={selectionColumnId}\n cellRef={node => setCell(sticky, selectionColumnId, node)}\n getSelectAllProps={getSelectAllProps}\n onFocusMove={onFocusMove}\n singleSelectionHeaderAriaLabel={singleSelectionHeaderAriaLabel}\n rowSpan={columnGroupsLayout.rows.length}\n isGrouped={true}\n />\n ) : null}\n\n {row.columns.map((col, colIndexInRow) => {\n // A cell is the last child of its parent group when the next rendered cell\n // in the same row belongs to a different top-level parent, i.e. they don't\n // share the same immediate parent group.\n const nextCol = row.columns[colIndexInRow + 1];\n const thisParent = col.parentGroupIds[col.parentGroupIds.length - 1] ?? null;\n const nextParent = nextCol ? (nextCol.parentGroupIds[nextCol.parentGroupIds.length - 1] ?? null) : null;\n // A column is also considered last-child-of-group when the sticky boundary\n // bisects its parent group just after this column — visually it's the rightmost\n // column of the sticky half, so its resizer should span full-height like a\n // normal last-child-of-group.\n const isColumnAtStickyFirstBoundary =\n !col.isGroup &&\n thisParent !== null &&\n stickyColumnsFirst > 0 &&\n col.colIndex === stickyColumnsFirst - 1;\n const isColumnAtStickyLastBoundary =\n !col.isGroup &&\n thisParent !== null &&\n stickyColumnsLast > 0 &&\n col.colIndex === columnDefinitions.length - stickyColumnsLast - 1;\n const isLastChildOfGroup =\n (thisParent !== null && thisParent !== nextParent) ||\n isColumnAtStickyFirstBoundary ||\n isColumnAtStickyLastBoundary;\n\n if (col.isGroup) {\n // Group header cell\n const groupDefinition = col.groupDefinition!;\n const childIds = getGroupColumnIds(columnGroupsLayout!, col.id);\n const sharedGroupCellProps = {\n ...commonCellProps,\n tabIndex: sticky ? -1 : 0,\n focusedComponent,\n group: groupDefinition,\n rowspan: col.rowSpan,\n resizableColumns,\n onResizeFinish: () => onResizeFinish(columnWidthsRef.current),\n columnGroupId:\n col.parentGroupIds.length > 0 ? col.parentGroupIds[col.parentGroupIds.length - 1] : undefined,\n };\n const splitFirst = getGroupSplit({\n col,\n stickyCount: stickyColumnsFirst,\n side: 'first',\n totalColumns,\n });\n const splitLast = getGroupSplit({\n col,\n stickyCount: stickyColumnsLast,\n side: 'last',\n totalColumns,\n });\n const split = splitFirst.stickyColspan > 0 ? splitFirst : splitLast;\n const isSplit = split.stickyColspan > 0;\n\n if (isSplit) {\n // Group is bisected by the sticky boundary — render two <th> elements.\n // Both halves get resizers. Each resizes its own rightmost column child.\n const isSplitFirst = splitFirst.stickyColspan > 0;\n\n // Left half is sticky for 'first', non-sticky for 'last'\n const leftColspan = isSplitFirst ? split.stickyColspan : split.staticColspan;\n const leftColIndex = col.colIndex;\n const leftGroupId = isSplitFirst ? col.id : `${col.id}__split`;\n const leftChildIds = childIds.slice(0, leftColspan);\n\n // Right half is non-sticky for 'first', sticky for 'last'\n const rightColspan = isSplitFirst ? split.staticColspan : split.stickyColspan;\n const rightColIndex = col.colIndex + leftColspan;\n const rightGroupId = isSplitFirst ? `${col.id}__split` : col.id;\n const rightChildIds = childIds.slice(leftColspan);\n\n return (\n <React.Fragment key={col.id}>\n {/* Left half */}\n <TableGroupHeaderCell\n {...sharedGroupCellProps}\n colspan={leftColspan}\n colIndex={selectionType ? leftColIndex + 1 : leftColIndex}\n groupId={leftGroupId}\n resizableStyle={undefined}\n updateGroupWidth={(_, newWidth) => {\n handleSplitGroupResize(leftChildIds, newWidth);\n }}\n childColumnIds={leftChildIds}\n firstChildColumnId={leftChildIds[0]}\n lastChildColumnId={leftChildIds[leftChildIds.length - 1]}\n cellRef={isSplitFirst ? node => setCell(sticky, col.id, node) : () => {}}\n isLast={false}\n stickyColumnId={isSplitFirst ? childIds[0] : undefined}\n stickyBoundaryColumnId={isSplitFirst ? leftChildIds[leftChildIds.length - 1] : undefined}\n />\n\n {/* Right half */}\n <TableGroupHeaderCell\n {...sharedGroupCellProps}\n colspan={rightColspan}\n colIndex={selectionType ? rightColIndex + 1 : rightColIndex}\n groupId={rightGroupId}\n resizableStyle={getColumnStyles(sticky, col.id)}\n updateGroupWidth={(_, newWidth) => {\n handleSplitGroupResize(rightChildIds, newWidth);\n }}\n childColumnIds={rightChildIds}\n firstChildColumnId={rightChildIds[0]}\n lastChildColumnId={rightChildIds[rightChildIds.length - 1]}\n cellRef={!isSplitFirst ? node => setCell(sticky, col.id, node) : () => {}}\n resizerRoleDescription={resizerRoleDescription}\n resizerTooltipText={resizerTooltipText}\n isLast={rightColIndex + rightColspan === totalColumns}\n stickyColumnId={!isSplitFirst ? childIds[childIds.length - 1] : undefined}\n stickyBoundaryColumnId={!isSplitFirst ? rightChildIds[0] : undefined}\n />\n </React.Fragment>\n );\n }\n\n // Determine if the entire group is sticky (all children on one side)\n const isFullyStickyFirst =\n stickyColumnsFirst > 0 && col.colIndex + col.colSpan - 1 < stickyColumnsFirst;\n const isFullyStickyLast =\n stickyColumnsLast > 0 && col.colIndex >= columnDefinitions.length - stickyColumnsLast;\n const fullyStickyColumnId = isFullyStickyFirst\n ? childIds[0]\n : isFullyStickyLast\n ? childIds[childIds.length - 1]\n : undefined;\n\n // When the group's last child is the sticky-first boundary, the group\n // needs the shadow from that child (but offset from the first child).\n const isAtStickyFirstBoundary =\n isFullyStickyFirst && col.colIndex + col.colSpan - 1 === stickyColumnsFirst - 1;\n const isAtStickyLastBoundary =\n isFullyStickyLast && col.colIndex === columnDefinitions.length - stickyColumnsLast;\n const fullyStickyBoundaryColumnId = isAtStickyFirstBoundary\n ? childIds[childIds.length - 1]\n : isAtStickyLastBoundary\n ? childIds[0]\n : undefined;\n\n return (\n <TableGroupHeaderCell\n {...sharedGroupCellProps}\n key={col.id}\n colspan={col.colSpan}\n colIndex={selectionType ? col.colIndex + 1 : col.colIndex}\n groupId={col.id}\n resizableStyle={getColumnStyles(sticky, col.id)}\n updateGroupWidth={(groupId, newWidth) => {\n updateGroup(groupId, newWidth);\n }}\n childColumnIds={childIds}\n firstChildColumnId={childIds[0]}\n lastChildColumnId={childIds[childIds.length - 1]}\n cellRef={node => setCell(sticky, col.id, node)}\n resizerRoleDescription={resizerRoleDescription}\n resizerTooltipText={resizerTooltipText}\n isLast={col.colIndex + col.colSpan === totalColumns}\n stickyColumnId={fullyStickyColumnId}\n stickyBoundaryColumnId={fullyStickyBoundaryColumnId}\n />\n );\n } else {\n // Regular column cell\n const column = col.columnDefinition!;\n const columnId = col.id;\n const colIndex = col.colIndex;\n\n return (\n <TableHeaderCell\n {...commonCellProps}\n key={columnId}\n tabIndex={sticky ? -1 : 0}\n focusedComponent={focusedComponent}\n column={column}\n activeSortingColumn={sortingColumn}\n sortingDescending={sortingDescending}\n sortingDisabled={sortingDisabled}\n wrapLines={wrapLines}\n colIndex={selectionType ? colIndex + 1 : colIndex}\n columnId={columnId}\n updateColumn={updateColumn}\n onResizeFinish={() => onResizeFinish(columnWidthsRef.current)}\n resizableColumns={resizableColumns}\n resizableStyle={getColumnStyles(sticky, columnId)}\n onClick={detail => {\n setLastUserAction('sorting');\n fireNonCancelableEvent(onSortingChange, detail);\n }}\n isEditable={!!column.editConfig}\n cellRef={node => {\n setCell(sticky, columnId, node);\n }}\n tableRole={tableRole}\n resizerRoleDescription={resizerRoleDescription}\n resizerTooltipText={resizerTooltipText}\n isExpandable={colIndex === 0 && isExpandable}\n hasDynamicContent={hidden && !resizableColumns && column.hasDynamicContent}\n colSpan={col.colSpan}\n rowSpan={col.rowSpan}\n isLastChildOfGroup={isLastChildOfGroup}\n isLast={col.colIndex + col.colSpan === totalColumns}\n columnGroupId={\n col.parentGroupIds.length > 0 ? col.parentGroupIds[col.parentGroupIds.length - 1] : undefined\n }\n />\n );\n }\n })}\n </tr>\n ))}\n </thead>\n );\n }\n);\n\nexport default Thead;\n"]}
|
|
1
|
+
{"version":3,"file":"thead.js","sourceRoot":"","sources":["../../../src/table/thead.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 React, { useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { findUpUntil } from '@cloudscape-design/component-toolkit/dom';\n\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { NonCancelableEventHandler } from '../types/events';\nimport { getGroupColumnIds, getGroupSplit } from './column-groups/split-utils';\nimport { ColumnGroupsLayout } from './column-groups/utils';\nimport { TableHeaderCell } from './header-cell';\nimport { TableGroupHeaderCell } from './header-cell/group-header-cell';\nimport { TableProps } from './interfaces';\nimport { InternalSelectionType } from './internal-interfaces';\nimport { focusMarkers, ItemSelectionProps } from './selection';\nimport { TableHeaderSelectionCell } from './selection/selection-cell';\nimport { StickyColumnsModel } from './sticky-columns';\nimport { getTableHeaderRowRoleProps, TableRole } from './table-role';\nimport { DEFAULT_COLUMN_WIDTH, useColumnWidths } from './use-column-widths';\nimport { getColumnKey } from './utils';\n\nimport styles from './styles.css.js';\n\nexport interface TheadProps {\n selectionType: undefined | InternalSelectionType;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<any>>;\n groupDefinitions?: ReadonlyArray<TableProps.GroupDefinition>;\n columnGroupsLayout?: ColumnGroupsLayout<any>;\n sortingColumn: TableProps.SortingColumn<any> | undefined;\n sortingDescending: boolean | undefined;\n sortingDisabled: boolean | undefined;\n multiColumnSort?: TableProps.MultiColumnSort<any>;\n i18nStrings?: TableProps.I18nStrings;\n ariaLabels?: TableProps.AriaLabels<any>;\n variant: TableProps.Variant;\n tableVariant?: TableProps.Variant;\n wrapLines: boolean | undefined;\n resizableColumns: boolean | undefined;\n getSelectAllProps?: () => ItemSelectionProps;\n onFocusMove: ((sourceElement: HTMLElement, fromIndex: number, direction: -1 | 1) => void) | undefined;\n onResizeFinish: (newWidths: Map<PropertyKey, number>) => void;\n onSortingChange: NonCancelableEventHandler<TableProps.SortingState<any>> | undefined;\n sticky?: boolean;\n hidden?: boolean;\n stuck?: boolean;\n singleSelectionHeaderAriaLabel?: string;\n resizerRoleDescription?: string;\n resizerTooltipText?: string;\n stripedRows?: boolean;\n stickyState: StickyColumnsModel;\n stickyColumnsFirst: number;\n stickyColumnsLast: number;\n selectionColumnId: PropertyKey;\n focusedComponent?: null | string;\n onFocusedComponentChange?: (focusId: null | string) => void;\n tableRole: TableRole;\n isExpandable?: boolean;\n setLastUserAction: (name: string) => void;\n}\n\nconst Thead = React.forwardRef(\n (\n {\n selectionType,\n getSelectAllProps,\n columnDefinitions,\n columnGroupsLayout,\n sortingColumn,\n sortingDisabled,\n sortingDescending,\n multiColumnSort,\n i18nStrings,\n ariaLabels,\n resizableColumns,\n variant,\n tableVariant,\n wrapLines,\n onFocusMove,\n onSortingChange,\n onResizeFinish,\n singleSelectionHeaderAriaLabel,\n stripedRows,\n sticky = false,\n hidden = false,\n stuck = false,\n stickyState,\n stickyColumnsFirst,\n stickyColumnsLast,\n selectionColumnId,\n focusedComponent,\n onFocusedComponentChange,\n tableRole,\n resizerRoleDescription,\n resizerTooltipText,\n isExpandable,\n setLastUserAction,\n }: TheadProps,\n outerRef: React.Ref<HTMLTableRowElement>\n ) => {\n const { getColumnStyles, columnWidths, updateColumn, updateGroup, setCell } = useColumnWidths();\n\n // This guarantees the width reported via `onColumnWidthsChange` matches the final rendered width instead of a stale one.\n // Without this, resetting/remounting a table right after a resize can restore an outdated width.\n const columnWidthsRef = useRef(columnWidths);\n columnWidthsRef.current = columnWidths;\n\n const handleSplitGroupResize = (columnIds: string[], newWidth: number) => {\n const lastColumn = columnIds[columnIds.length - 1];\n if (lastColumn) {\n const currentGroupWidth = columnIds.reduce(\n (sum, id) => sum + (columnWidths.get(id) || DEFAULT_COLUMN_WIDTH),\n 0\n );\n const delta = newWidth - currentGroupWidth;\n const currentColumnWidth = columnWidths.get(lastColumn) || DEFAULT_COLUMN_WIDTH;\n updateColumn(lastColumn, currentColumnWidth + delta);\n }\n };\n\n const commonCellProps = {\n stuck,\n sticky,\n hidden,\n stripedRows,\n tableRole,\n variant,\n tableVariant,\n stickyState,\n wrapLines,\n };\n\n const sharedTrProps = {\n onFocus: (event: React.FocusEvent) => {\n const focusControlElement = findUpUntil(\n event.target as HTMLElement,\n element => !!element.getAttribute('data-focus-id')\n );\n const focusId = focusControlElement?.getAttribute('data-focus-id') ?? null;\n onFocusedComponentChange?.(focusId);\n },\n onBlur: () => onFocusedComponentChange?.(null),\n };\n\n // No grouping - render single row\n if (!columnGroupsLayout || columnGroupsLayout.rows.length <= 1) {\n return (\n <thead className={clsx(!hidden && styles['thead-active'])}>\n <tr\n {...focusMarkers.all}\n ref={outerRef}\n aria-rowindex={1}\n {...getTableHeaderRowRoleProps({ tableRole })}\n {...sharedTrProps}\n >\n {selectionType ? (\n <TableHeaderSelectionCell\n {...commonCellProps}\n focusedComponent={focusedComponent}\n columnId={selectionColumnId}\n cellRef={node => setCell(sticky, selectionColumnId, node)}\n getSelectAllProps={getSelectAllProps}\n onFocusMove={onFocusMove}\n singleSelectionHeaderAriaLabel={singleSelectionHeaderAriaLabel}\n />\n ) : null}\n\n {columnDefinitions.map((column, colIndex) => {\n const columnId = getColumnKey(column, colIndex);\n return (\n <TableHeaderCell\n {...commonCellProps}\n key={columnId}\n tabIndex={sticky ? -1 : 0}\n focusedComponent={focusedComponent}\n column={column}\n activeSortingColumn={sortingColumn}\n sortingDescending={sortingDescending}\n sortingDisabled={sortingDisabled}\n multiColumnSort={multiColumnSort}\n i18nStrings={i18nStrings}\n ariaLabels={ariaLabels}\n wrapLines={wrapLines}\n colIndex={selectionType ? colIndex + 1 : colIndex}\n columnId={columnId}\n updateColumn={updateColumn}\n onResizeFinish={() => onResizeFinish(columnWidthsRef.current)}\n resizableColumns={resizableColumns}\n resizableStyle={getColumnStyles(sticky, columnId)}\n onClick={detail => {\n setLastUserAction('sorting');\n fireNonCancelableEvent(onSortingChange, detail);\n }}\n isEditable={!!column.editConfig}\n cellRef={node => setCell(sticky, columnId, node)}\n tableRole={tableRole}\n resizerRoleDescription={resizerRoleDescription}\n resizerTooltipText={resizerTooltipText}\n isExpandable={colIndex === 0 && isExpandable}\n hasDynamicContent={hidden && !resizableColumns && column.hasDynamicContent}\n isLast={colIndex === columnDefinitions.length - 1}\n />\n );\n })}\n </tr>\n </thead>\n );\n }\n\n // Grouped columns\n const totalColumns = columnDefinitions.length;\n return (\n <thead className={clsx(!hidden && styles['thead-active'])}>\n {columnGroupsLayout.rows.map((row, rowIndex) => (\n <tr\n key={rowIndex}\n {...(rowIndex === 0 ? focusMarkers.all : {})}\n ref={rowIndex === 0 ? outerRef : undefined}\n aria-rowindex={rowIndex + 1}\n data-group-level={rowIndex}\n {...getTableHeaderRowRoleProps({ tableRole, rowIndex })}\n {...sharedTrProps}\n >\n {/* Selection column — render once in the first row with rowSpan covering all header rows */}\n {selectionType && rowIndex === 0 ? (\n <TableHeaderSelectionCell\n {...commonCellProps}\n focusedComponent={focusedComponent}\n columnId={selectionColumnId}\n cellRef={node => setCell(sticky, selectionColumnId, node)}\n getSelectAllProps={getSelectAllProps}\n onFocusMove={onFocusMove}\n singleSelectionHeaderAriaLabel={singleSelectionHeaderAriaLabel}\n rowSpan={columnGroupsLayout.rows.length}\n isGrouped={true}\n />\n ) : null}\n\n {row.columns.map((col, colIndexInRow) => {\n // A cell is the last child of its parent group when the next rendered cell\n // in the same row belongs to a different top-level parent, i.e. they don't\n // share the same immediate parent group.\n const nextCol = row.columns[colIndexInRow + 1];\n const thisParent = col.parentGroupIds[col.parentGroupIds.length - 1] ?? null;\n const nextParent = nextCol ? (nextCol.parentGroupIds[nextCol.parentGroupIds.length - 1] ?? null) : null;\n // A column is also considered last-child-of-group when the sticky boundary\n // bisects its parent group just after this column — visually it's the rightmost\n // column of the sticky half, so its resizer should span full-height like a\n // normal last-child-of-group.\n const isColumnAtStickyFirstBoundary =\n !col.isGroup &&\n thisParent !== null &&\n stickyColumnsFirst > 0 &&\n col.colIndex === stickyColumnsFirst - 1;\n const isColumnAtStickyLastBoundary =\n !col.isGroup &&\n thisParent !== null &&\n stickyColumnsLast > 0 &&\n col.colIndex === columnDefinitions.length - stickyColumnsLast - 1;\n const isLastChildOfGroup =\n (thisParent !== null && thisParent !== nextParent) ||\n isColumnAtStickyFirstBoundary ||\n isColumnAtStickyLastBoundary;\n\n if (col.isGroup) {\n // Group header cell\n const groupDefinition = col.groupDefinition!;\n const childIds = getGroupColumnIds(columnGroupsLayout!, col.id);\n const sharedGroupCellProps = {\n ...commonCellProps,\n tabIndex: sticky ? -1 : 0,\n focusedComponent,\n group: groupDefinition,\n rowspan: col.rowSpan,\n resizableColumns,\n onResizeFinish: () => onResizeFinish(columnWidthsRef.current),\n columnGroupId:\n col.parentGroupIds.length > 0 ? col.parentGroupIds[col.parentGroupIds.length - 1] : undefined,\n };\n const splitFirst = getGroupSplit({\n col,\n stickyCount: stickyColumnsFirst,\n side: 'first',\n totalColumns,\n });\n const splitLast = getGroupSplit({\n col,\n stickyCount: stickyColumnsLast,\n side: 'last',\n totalColumns,\n });\n const split = splitFirst.stickyColspan > 0 ? splitFirst : splitLast;\n const isSplit = split.stickyColspan > 0;\n\n if (isSplit) {\n // Group is bisected by the sticky boundary — render two <th> elements.\n // Both halves get resizers. Each resizes its own rightmost column child.\n const isSplitFirst = splitFirst.stickyColspan > 0;\n\n // Left half is sticky for 'first', non-sticky for 'last'\n const leftColspan = isSplitFirst ? split.stickyColspan : split.staticColspan;\n const leftColIndex = col.colIndex;\n const leftGroupId = isSplitFirst ? col.id : `${col.id}__split`;\n const leftChildIds = childIds.slice(0, leftColspan);\n\n // Right half is non-sticky for 'first', sticky for 'last'\n const rightColspan = isSplitFirst ? split.staticColspan : split.stickyColspan;\n const rightColIndex = col.colIndex + leftColspan;\n const rightGroupId = isSplitFirst ? `${col.id}__split` : col.id;\n const rightChildIds = childIds.slice(leftColspan);\n\n return (\n <React.Fragment key={col.id}>\n {/* Left half */}\n <TableGroupHeaderCell\n {...sharedGroupCellProps}\n colspan={leftColspan}\n colIndex={selectionType ? leftColIndex + 1 : leftColIndex}\n groupId={leftGroupId}\n resizableStyle={undefined}\n updateGroupWidth={(_, newWidth) => {\n handleSplitGroupResize(leftChildIds, newWidth);\n }}\n childColumnIds={leftChildIds}\n firstChildColumnId={leftChildIds[0]}\n lastChildColumnId={leftChildIds[leftChildIds.length - 1]}\n cellRef={isSplitFirst ? node => setCell(sticky, col.id, node) : () => {}}\n isLast={false}\n stickyColumnId={isSplitFirst ? childIds[0] : undefined}\n stickyBoundaryColumnId={isSplitFirst ? leftChildIds[leftChildIds.length - 1] : undefined}\n />\n\n {/* Right half */}\n <TableGroupHeaderCell\n {...sharedGroupCellProps}\n colspan={rightColspan}\n colIndex={selectionType ? rightColIndex + 1 : rightColIndex}\n groupId={rightGroupId}\n resizableStyle={getColumnStyles(sticky, col.id)}\n updateGroupWidth={(_, newWidth) => {\n handleSplitGroupResize(rightChildIds, newWidth);\n }}\n childColumnIds={rightChildIds}\n firstChildColumnId={rightChildIds[0]}\n lastChildColumnId={rightChildIds[rightChildIds.length - 1]}\n cellRef={!isSplitFirst ? node => setCell(sticky, col.id, node) : () => {}}\n resizerRoleDescription={resizerRoleDescription}\n resizerTooltipText={resizerTooltipText}\n isLast={rightColIndex + rightColspan === totalColumns}\n stickyColumnId={!isSplitFirst ? childIds[childIds.length - 1] : undefined}\n stickyBoundaryColumnId={!isSplitFirst ? rightChildIds[0] : undefined}\n />\n </React.Fragment>\n );\n }\n\n // Determine if the entire group is sticky (all children on one side)\n const isFullyStickyFirst =\n stickyColumnsFirst > 0 && col.colIndex + col.colSpan - 1 < stickyColumnsFirst;\n const isFullyStickyLast =\n stickyColumnsLast > 0 && col.colIndex >= columnDefinitions.length - stickyColumnsLast;\n const fullyStickyColumnId = isFullyStickyFirst\n ? childIds[0]\n : isFullyStickyLast\n ? childIds[childIds.length - 1]\n : undefined;\n\n // When the group's last child is the sticky-first boundary, the group\n // needs the shadow from that child (but offset from the first child).\n const isAtStickyFirstBoundary =\n isFullyStickyFirst && col.colIndex + col.colSpan - 1 === stickyColumnsFirst - 1;\n const isAtStickyLastBoundary =\n isFullyStickyLast && col.colIndex === columnDefinitions.length - stickyColumnsLast;\n const fullyStickyBoundaryColumnId = isAtStickyFirstBoundary\n ? childIds[childIds.length - 1]\n : isAtStickyLastBoundary\n ? childIds[0]\n : undefined;\n\n return (\n <TableGroupHeaderCell\n {...sharedGroupCellProps}\n key={col.id}\n colspan={col.colSpan}\n colIndex={selectionType ? col.colIndex + 1 : col.colIndex}\n groupId={col.id}\n resizableStyle={getColumnStyles(sticky, col.id)}\n updateGroupWidth={(groupId, newWidth) => {\n updateGroup(groupId, newWidth);\n }}\n childColumnIds={childIds}\n firstChildColumnId={childIds[0]}\n lastChildColumnId={childIds[childIds.length - 1]}\n cellRef={node => setCell(sticky, col.id, node)}\n resizerRoleDescription={resizerRoleDescription}\n resizerTooltipText={resizerTooltipText}\n isLast={col.colIndex + col.colSpan === totalColumns}\n stickyColumnId={fullyStickyColumnId}\n stickyBoundaryColumnId={fullyStickyBoundaryColumnId}\n />\n );\n } else {\n // Regular column cell\n const column = col.columnDefinition!;\n const columnId = col.id;\n const colIndex = col.colIndex;\n\n return (\n <TableHeaderCell\n {...commonCellProps}\n key={columnId}\n tabIndex={sticky ? -1 : 0}\n focusedComponent={focusedComponent}\n column={column}\n activeSortingColumn={sortingColumn}\n sortingDescending={sortingDescending}\n sortingDisabled={sortingDisabled}\n multiColumnSort={multiColumnSort}\n i18nStrings={i18nStrings}\n ariaLabels={ariaLabels}\n wrapLines={wrapLines}\n colIndex={selectionType ? colIndex + 1 : colIndex}\n columnId={columnId}\n updateColumn={updateColumn}\n onResizeFinish={() => onResizeFinish(columnWidthsRef.current)}\n resizableColumns={resizableColumns}\n resizableStyle={getColumnStyles(sticky, columnId)}\n onClick={detail => {\n setLastUserAction('sorting');\n fireNonCancelableEvent(onSortingChange, detail);\n }}\n isEditable={!!column.editConfig}\n cellRef={node => {\n setCell(sticky, columnId, node);\n }}\n tableRole={tableRole}\n resizerRoleDescription={resizerRoleDescription}\n resizerTooltipText={resizerTooltipText}\n isExpandable={colIndex === 0 && isExpandable}\n hasDynamicContent={hidden && !resizableColumns && column.hasDynamicContent}\n colSpan={col.colSpan}\n rowSpan={col.rowSpan}\n isLastChildOfGroup={isLastChildOfGroup}\n isLast={col.colIndex + col.colSpan === totalColumns}\n columnGroupId={\n col.parentGroupIds.length > 0 ? col.parentGroupIds[col.parentGroupIds.length - 1] : undefined\n }\n />\n );\n }\n })}\n </tr>\n ))}\n </thead>\n );\n }\n);\n\nexport default Thead;\n"]}
|
|
@@ -2,10 +2,11 @@ import React from 'react';
|
|
|
2
2
|
interface ToolsHeaderProps {
|
|
3
3
|
header: React.ReactNode;
|
|
4
4
|
filter?: React.ReactNode;
|
|
5
|
+
clearSort?: React.ReactNode;
|
|
5
6
|
pagination?: React.ReactNode;
|
|
6
7
|
preferences?: React.ReactNode;
|
|
7
8
|
setLastUserAction?: (name: string) => void;
|
|
8
9
|
}
|
|
9
|
-
export default function ToolsHeader({ header, filter, pagination, preferences, setLastUserAction }: ToolsHeaderProps): JSX.Element;
|
|
10
|
+
export default function ToolsHeader({ header, filter, clearSort, pagination, preferences, setLastUserAction, }: ToolsHeaderProps): JSX.Element;
|
|
10
11
|
export {};
|
|
11
12
|
//# sourceMappingURL=tools-header.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools-header.d.ts","sourceRoot":"","sources":["../../../src/table/tools-header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAU1C,UAAU,gBAAgB;IACxB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"tools-header.d.ts","sourceRoot":"","sources":["../../../src/table/tools-header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAU1C,UAAU,gBAAgB;IACxB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,MAAM,EACN,SAAS,EACT,UAAU,EACV,WAAW,EACX,iBAAiB,GAClB,EAAE,gBAAgB,eA4ClB"}
|
|
@@ -6,7 +6,7 @@ import { useUniqueId } from '@cloudscape-design/component-toolkit/internal';
|
|
|
6
6
|
import { CollectionLabelContext } from '../internal/context/collection-label-context';
|
|
7
7
|
import { useContainerBreakpoints } from '../internal/hooks/container-queries';
|
|
8
8
|
import styles from './styles.css.js';
|
|
9
|
-
export default function ToolsHeader({ header, filter, pagination, preferences, setLastUserAction }) {
|
|
9
|
+
export default function ToolsHeader({ header, filter, clearSort, pagination, preferences, setLastUserAction, }) {
|
|
10
10
|
const [breakpoint, ref] = useContainerBreakpoints(['xs']);
|
|
11
11
|
const isHeaderString = typeof header === 'string';
|
|
12
12
|
const assignHeaderId = useContext(CollectionLabelContext).assignId;
|
|
@@ -15,13 +15,14 @@ export default function ToolsHeader({ header, filter, pagination, preferences, s
|
|
|
15
15
|
assignHeaderId(headingId);
|
|
16
16
|
}
|
|
17
17
|
const isSmall = breakpoint === 'default';
|
|
18
|
-
const hasTools = filter || pagination || preferences;
|
|
19
|
-
const hasRightAlignedTools = !!(pagination || preferences);
|
|
18
|
+
const hasTools = filter || clearSort || pagination || preferences;
|
|
19
|
+
const hasRightAlignedTools = !!(clearSort || pagination || preferences);
|
|
20
20
|
return (React.createElement(React.Fragment, null,
|
|
21
21
|
isHeaderString ? React.createElement("span", { id: headingId }, header) : header,
|
|
22
22
|
hasTools && (React.createElement("div", { ref: ref, className: clsx(styles.tools, isSmall && styles['tools-small']) },
|
|
23
23
|
filter && (React.createElement("div", { className: styles['tools-filtering'], onClickCapture: () => setLastUserAction === null || setLastUserAction === void 0 ? void 0 : setLastUserAction('filter'), onKeyDownCapture: () => setLastUserAction === null || setLastUserAction === void 0 ? void 0 : setLastUserAction('filter') }, filter)),
|
|
24
24
|
hasRightAlignedTools && (React.createElement("div", { className: styles['tools-align-right'] },
|
|
25
|
+
clearSort && React.createElement("div", { className: styles['tools-clear-sort'] }, clearSort),
|
|
25
26
|
pagination && (React.createElement("div", { className: styles['tools-pagination'], onClickCapture: () => setLastUserAction === null || setLastUserAction === void 0 ? void 0 : setLastUserAction('pagination') }, pagination)),
|
|
26
27
|
preferences && (React.createElement("div", { className: styles['tools-preferences'], onClickCapture: () => setLastUserAction === null || setLastUserAction === void 0 ? void 0 : setLastUserAction('preferences') }, preferences))))))));
|
|
27
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools-header.js","sourceRoot":"","sources":["../../../src/table/tools-header.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAE5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,OAAO,MAAM,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools-header.js","sourceRoot":"","sources":["../../../src/table/tools-header.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAE5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAWrC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,MAAM,EACN,SAAS,EACT,UAAU,EACV,WAAW,EACX,iBAAiB,GACA;IACjB,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;IAClD,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC;IACnE,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,EAAE,CAAC;QACnD,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,KAAK,SAAS,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,SAAS,IAAI,UAAU,IAAI,WAAW,CAAC;IAClE,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,UAAU,IAAI,WAAW,CAAC,CAAC;IACxE,OAAO,CACL;QACG,cAAc,CAAC,CAAC,CAAC,8BAAM,EAAE,EAAE,SAAS,IAAG,MAAM,CAAQ,CAAC,CAAC,CAAC,MAAM;QAC9D,QAAQ,IAAI,CACX,6BAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;YAC3E,MAAM,IAAI,CACT,6BACE,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,EACpC,cAAc,EAAE,GAAG,EAAE,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,QAAQ,CAAC,EACnD,gBAAgB,EAAE,GAAG,EAAE,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,QAAQ,CAAC,IAEpD,MAAM,CACH,CACP;YACA,oBAAoB,IAAI,CACvB,6BAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC;gBACxC,SAAS,IAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,IAAG,SAAS,CAAO;gBAC1E,UAAU,IAAI,CACb,6BAAK,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,YAAY,CAAC,IAChG,UAAU,CACP,CACP;gBACA,WAAW,IAAI,CACd,6BAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,aAAa,CAAC,IAClG,WAAW,CACR,CACP,CACG,CACP,CACG,CACP,CACA,CACJ,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useContext } from 'react';\nimport clsx from 'clsx';\n\nimport { useUniqueId } from '@cloudscape-design/component-toolkit/internal';\n\nimport { CollectionLabelContext } from '../internal/context/collection-label-context';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\n\nimport styles from './styles.css.js';\n\ninterface ToolsHeaderProps {\n header: React.ReactNode;\n filter?: React.ReactNode;\n clearSort?: React.ReactNode;\n pagination?: React.ReactNode;\n preferences?: React.ReactNode;\n setLastUserAction?: (name: string) => void;\n}\n\nexport default function ToolsHeader({\n header,\n filter,\n clearSort,\n pagination,\n preferences,\n setLastUserAction,\n}: ToolsHeaderProps) {\n const [breakpoint, ref] = useContainerBreakpoints(['xs']);\n const isHeaderString = typeof header === 'string';\n const assignHeaderId = useContext(CollectionLabelContext).assignId;\n const headingId = useUniqueId('heading');\n if (assignHeaderId !== undefined && isHeaderString) {\n assignHeaderId(headingId);\n }\n const isSmall = breakpoint === 'default';\n const hasTools = filter || clearSort || pagination || preferences;\n const hasRightAlignedTools = !!(clearSort || pagination || preferences);\n return (\n <>\n {isHeaderString ? <span id={headingId}>{header}</span> : header}\n {hasTools && (\n <div ref={ref} className={clsx(styles.tools, isSmall && styles['tools-small'])}>\n {filter && (\n <div\n className={styles['tools-filtering']}\n onClickCapture={() => setLastUserAction?.('filter')}\n onKeyDownCapture={() => setLastUserAction?.('filter')}\n >\n {filter}\n </div>\n )}\n {hasRightAlignedTools && (\n <div className={styles['tools-align-right']}>\n {clearSort && <div className={styles['tools-clear-sort']}>{clearSort}</div>}\n {pagination && (\n <div className={styles['tools-pagination']} onClickCapture={() => setLastUserAction?.('pagination')}>\n {pagination}\n </div>\n )}\n {preferences && (\n <div className={styles['tools-preferences']} onClickCapture={() => setLastUserAction?.('preferences')}>\n {preferences}\n </div>\n )}\n </div>\n )}\n </div>\n )}\n </>\n );\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface UseAutoSkeletonRowsProps {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
maxRows?: number;
|
|
5
|
+
minRows?: number;
|
|
6
|
+
tableBodyRef: React.RefObject<HTMLTableSectionElement>;
|
|
7
|
+
tableRootRef: React.RefObject<HTMLElement>;
|
|
8
|
+
tableWrapperRef: React.RefObject<HTMLElement>;
|
|
9
|
+
}
|
|
10
|
+
export declare function useAutoSkeletonRows({ enabled, maxRows, minRows, tableBodyRef, tableRootRef, tableWrapperRef, }: UseAutoSkeletonRowsProps): number;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=use-auto-skeleton-rows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-auto-skeleton-rows.d.ts","sourceRoot":"","sources":["../../../src/table/use-auto-skeleton-rows.ts"],"names":[],"mappings":"AAEA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAwB9E,UAAU,wBAAwB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IACvD,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;CAC/C;AAuDD,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,OAAO,EACP,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,eAAe,GAChB,EAAE,wBAAwB,UAkF1B"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { useCallback, useLayoutEffect, useRef, useState } from 'react';
|
|
4
|
+
import { getScrollableParents } from '../internal/utils/scrollable-containers';
|
|
5
|
+
const AUTO_SKELETON_VIEWPORT_BUFFER = 16;
|
|
6
|
+
const SKELETON_ROW_SELECTOR = 'tr[aria-hidden="true"]';
|
|
7
|
+
function getDocumentViewportBottom() {
|
|
8
|
+
return document.documentElement.clientHeight || window.innerHeight;
|
|
9
|
+
}
|
|
10
|
+
function getViewportBottom(element) {
|
|
11
|
+
return getScrollableParents(element).reduce((viewportBottom, scrollContainer) => Math.min(viewportBottom, scrollContainer.getBoundingClientRect().bottom), getDocumentViewportBottom());
|
|
12
|
+
}
|
|
13
|
+
function getOverflowHeight(element) {
|
|
14
|
+
const scrollContainer = getScrollableParents(element)[0];
|
|
15
|
+
if (scrollContainer) {
|
|
16
|
+
return Math.max(0, scrollContainer.scrollHeight - scrollContainer.clientHeight);
|
|
17
|
+
}
|
|
18
|
+
return Math.max(0, Math.max(document.documentElement.scrollHeight, document.body.scrollHeight) - getDocumentViewportBottom());
|
|
19
|
+
}
|
|
20
|
+
function calculateAutoSkeletonRows({ maxRows, minRows, rowHeight, skeletonRowBottom, skeletonRowTop, tableBottom, viewportBottom, }) {
|
|
21
|
+
const staticHeightBelowSkeletonRow = Math.max(0, tableBottom - skeletonRowBottom);
|
|
22
|
+
const availableHeight = Math.max(0, viewportBottom - skeletonRowTop - staticHeightBelowSkeletonRow - AUTO_SKELETON_VIEWPORT_BUFFER);
|
|
23
|
+
const rows = Math.floor(availableHeight / rowHeight);
|
|
24
|
+
return Math.max(minRows, Math.min(maxRows !== null && maxRows !== void 0 ? maxRows : Number.POSITIVE_INFINITY, rows));
|
|
25
|
+
}
|
|
26
|
+
function calculateAutoSkeletonRowReduction({ currentRows, minRows, overflowHeight, rowHeight, }) {
|
|
27
|
+
return Math.min(currentRows - minRows, Math.max(1, Math.ceil((overflowHeight + AUTO_SKELETON_VIEWPORT_BUFFER) / rowHeight)));
|
|
28
|
+
}
|
|
29
|
+
export function useAutoSkeletonRows({ enabled, maxRows, minRows, tableBodyRef, tableRootRef, tableWrapperRef, }) {
|
|
30
|
+
const maxRowsValue = maxRows === undefined ? undefined : Math.max(1, maxRows);
|
|
31
|
+
const minRowsValue = Math.min(Math.max(1, minRows !== null && minRows !== void 0 ? minRows : 1), maxRowsValue !== null && maxRowsValue !== void 0 ? maxRowsValue : Number.POSITIVE_INFINITY);
|
|
32
|
+
const [rows, setRows] = useState(minRowsValue);
|
|
33
|
+
const rowHeightRef = useRef();
|
|
34
|
+
const updateRows = useCallback(() => {
|
|
35
|
+
var _a, _b, _c, _d;
|
|
36
|
+
if (!enabled) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const tableRoot = tableRootRef.current;
|
|
40
|
+
const tableWrapper = tableWrapperRef.current;
|
|
41
|
+
const skeletonRows = (_a = tableBodyRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll(SKELETON_ROW_SELECTOR);
|
|
42
|
+
const firstSkeletonRowRect = (_b = skeletonRows === null || skeletonRows === void 0 ? void 0 : skeletonRows[0]) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect();
|
|
43
|
+
const lastSkeletonRowRect = (_c = skeletonRows === null || skeletonRows === void 0 ? void 0 : skeletonRows[skeletonRows.length - 1]) === null || _c === void 0 ? void 0 : _c.getBoundingClientRect();
|
|
44
|
+
const rowHeight = (_d = lastSkeletonRowRect === null || lastSkeletonRowRect === void 0 ? void 0 : lastSkeletonRowRect.height) !== null && _d !== void 0 ? _d : rowHeightRef.current;
|
|
45
|
+
if (!tableRoot || !tableWrapper || !firstSkeletonRowRect || !lastSkeletonRowRect || !rowHeight) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
rowHeightRef.current = rowHeight;
|
|
49
|
+
const nextRows = calculateAutoSkeletonRows({
|
|
50
|
+
maxRows: maxRowsValue,
|
|
51
|
+
minRows: minRowsValue,
|
|
52
|
+
rowHeight,
|
|
53
|
+
skeletonRowBottom: lastSkeletonRowRect.bottom,
|
|
54
|
+
skeletonRowTop: firstSkeletonRowRect.top,
|
|
55
|
+
tableBottom: tableRoot.getBoundingClientRect().bottom,
|
|
56
|
+
viewportBottom: getViewportBottom(tableWrapper),
|
|
57
|
+
});
|
|
58
|
+
setRows(currentRows => (currentRows === nextRows ? currentRows : nextRows));
|
|
59
|
+
}, [enabled, maxRowsValue, minRowsValue, tableBodyRef, tableRootRef, tableWrapperRef]);
|
|
60
|
+
useLayoutEffect(updateRows, [updateRows]);
|
|
61
|
+
useLayoutEffect(() => {
|
|
62
|
+
const tableWrapper = tableWrapperRef.current;
|
|
63
|
+
const rowHeight = rowHeightRef.current;
|
|
64
|
+
if (!enabled || rows <= minRowsValue || !tableWrapper || !rowHeight) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const overflowHeight = getOverflowHeight(tableWrapper);
|
|
68
|
+
if (overflowHeight === 0) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const rowsToRemove = calculateAutoSkeletonRowReduction({
|
|
72
|
+
currentRows: rows,
|
|
73
|
+
minRows: minRowsValue,
|
|
74
|
+
overflowHeight,
|
|
75
|
+
rowHeight,
|
|
76
|
+
});
|
|
77
|
+
setRows(currentRows => currentRows - rowsToRemove);
|
|
78
|
+
}, [enabled, rows, minRowsValue, tableWrapperRef]);
|
|
79
|
+
useLayoutEffect(() => {
|
|
80
|
+
if (!enabled || typeof ResizeObserver === 'undefined') {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
const tableRoot = tableRootRef.current;
|
|
84
|
+
const tableWrapper = tableWrapperRef.current;
|
|
85
|
+
if (!tableRoot || !tableWrapper) {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
const resizeObserver = new ResizeObserver(updateRows);
|
|
89
|
+
resizeObserver.observe(tableRoot);
|
|
90
|
+
resizeObserver.observe(tableWrapper);
|
|
91
|
+
getScrollableParents(tableWrapper).forEach(scrollContainer => resizeObserver.observe(scrollContainer));
|
|
92
|
+
window.addEventListener('resize', updateRows);
|
|
93
|
+
return () => {
|
|
94
|
+
resizeObserver.disconnect();
|
|
95
|
+
window.removeEventListener('resize', updateRows);
|
|
96
|
+
};
|
|
97
|
+
}, [enabled, tableRootRef, tableWrapperRef, updateRows]);
|
|
98
|
+
return rows;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=use-auto-skeleton-rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-auto-skeleton-rows.js","sourceRoot":"","sources":["../../../src/table/use-auto-skeleton-rows.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useLayoutEffect, useRef, useState } from 'react';\n\nimport { getScrollableParents } from '../internal/utils/scrollable-containers';\n\nconst AUTO_SKELETON_VIEWPORT_BUFFER = 16;\nconst SKELETON_ROW_SELECTOR = 'tr[aria-hidden=\"true\"]';\n\ninterface AutoSkeletonRowsCalculation {\n maxRows?: number;\n minRows: number;\n rowHeight: number;\n skeletonRowBottom: number;\n skeletonRowTop: number;\n tableBottom: number;\n viewportBottom: number;\n}\n\ninterface AutoSkeletonRowReductionCalculation {\n currentRows: number;\n minRows: number;\n overflowHeight: number;\n rowHeight: number;\n}\n\ninterface UseAutoSkeletonRowsProps {\n enabled: boolean;\n maxRows?: number;\n minRows?: number;\n tableBodyRef: React.RefObject<HTMLTableSectionElement>;\n tableRootRef: React.RefObject<HTMLElement>;\n tableWrapperRef: React.RefObject<HTMLElement>;\n}\n\nfunction getDocumentViewportBottom() {\n return document.documentElement.clientHeight || window.innerHeight;\n}\n\nfunction getViewportBottom(element: HTMLElement) {\n return getScrollableParents(element).reduce(\n (viewportBottom, scrollContainer) => Math.min(viewportBottom, scrollContainer.getBoundingClientRect().bottom),\n getDocumentViewportBottom()\n );\n}\n\nfunction getOverflowHeight(element: HTMLElement) {\n const scrollContainer = getScrollableParents(element)[0];\n if (scrollContainer) {\n return Math.max(0, scrollContainer.scrollHeight - scrollContainer.clientHeight);\n }\n\n return Math.max(\n 0,\n Math.max(document.documentElement.scrollHeight, document.body.scrollHeight) - getDocumentViewportBottom()\n );\n}\n\nfunction calculateAutoSkeletonRows({\n maxRows,\n minRows,\n rowHeight,\n skeletonRowBottom,\n skeletonRowTop,\n tableBottom,\n viewportBottom,\n}: AutoSkeletonRowsCalculation) {\n const staticHeightBelowSkeletonRow = Math.max(0, tableBottom - skeletonRowBottom);\n const availableHeight = Math.max(\n 0,\n viewportBottom - skeletonRowTop - staticHeightBelowSkeletonRow - AUTO_SKELETON_VIEWPORT_BUFFER\n );\n const rows = Math.floor(availableHeight / rowHeight);\n return Math.max(minRows, Math.min(maxRows ?? Number.POSITIVE_INFINITY, rows));\n}\n\nfunction calculateAutoSkeletonRowReduction({\n currentRows,\n minRows,\n overflowHeight,\n rowHeight,\n}: AutoSkeletonRowReductionCalculation) {\n return Math.min(\n currentRows - minRows,\n Math.max(1, Math.ceil((overflowHeight + AUTO_SKELETON_VIEWPORT_BUFFER) / rowHeight))\n );\n}\n\nexport function useAutoSkeletonRows({\n enabled,\n maxRows,\n minRows,\n tableBodyRef,\n tableRootRef,\n tableWrapperRef,\n}: UseAutoSkeletonRowsProps) {\n const maxRowsValue = maxRows === undefined ? undefined : Math.max(1, maxRows);\n const minRowsValue = Math.min(Math.max(1, minRows ?? 1), maxRowsValue ?? Number.POSITIVE_INFINITY);\n const [rows, setRows] = useState(minRowsValue);\n const rowHeightRef = useRef<number>();\n\n const updateRows = useCallback(() => {\n if (!enabled) {\n return;\n }\n\n const tableRoot = tableRootRef.current;\n const tableWrapper = tableWrapperRef.current;\n const skeletonRows = tableBodyRef.current?.querySelectorAll<HTMLElement>(SKELETON_ROW_SELECTOR);\n const firstSkeletonRowRect = skeletonRows?.[0]?.getBoundingClientRect();\n const lastSkeletonRowRect = skeletonRows?.[skeletonRows.length - 1]?.getBoundingClientRect();\n const rowHeight = lastSkeletonRowRect?.height ?? rowHeightRef.current;\n\n if (!tableRoot || !tableWrapper || !firstSkeletonRowRect || !lastSkeletonRowRect || !rowHeight) {\n return;\n }\n\n rowHeightRef.current = rowHeight;\n const nextRows = calculateAutoSkeletonRows({\n maxRows: maxRowsValue,\n minRows: minRowsValue,\n rowHeight,\n skeletonRowBottom: lastSkeletonRowRect.bottom,\n skeletonRowTop: firstSkeletonRowRect.top,\n tableBottom: tableRoot.getBoundingClientRect().bottom,\n viewportBottom: getViewportBottom(tableWrapper),\n });\n setRows(currentRows => (currentRows === nextRows ? currentRows : nextRows));\n }, [enabled, maxRowsValue, minRowsValue, tableBodyRef, tableRootRef, tableWrapperRef]);\n\n useLayoutEffect(updateRows, [updateRows]);\n\n useLayoutEffect(() => {\n const tableWrapper = tableWrapperRef.current;\n const rowHeight = rowHeightRef.current;\n if (!enabled || rows <= minRowsValue || !tableWrapper || !rowHeight) {\n return;\n }\n\n const overflowHeight = getOverflowHeight(tableWrapper);\n if (overflowHeight === 0) {\n return;\n }\n\n const rowsToRemove = calculateAutoSkeletonRowReduction({\n currentRows: rows,\n minRows: minRowsValue,\n overflowHeight,\n rowHeight,\n });\n setRows(currentRows => currentRows - rowsToRemove);\n }, [enabled, rows, minRowsValue, tableWrapperRef]);\n\n useLayoutEffect(() => {\n if (!enabled || typeof ResizeObserver === 'undefined') {\n return undefined;\n }\n\n const tableRoot = tableRootRef.current;\n const tableWrapper = tableWrapperRef.current;\n if (!tableRoot || !tableWrapper) {\n return undefined;\n }\n\n const resizeObserver = new ResizeObserver(updateRows);\n resizeObserver.observe(tableRoot);\n resizeObserver.observe(tableWrapper);\n getScrollableParents(tableWrapper).forEach(scrollContainer => resizeObserver.observe(scrollContainer));\n window.addEventListener('resize', updateRows);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateRows);\n };\n }, [enabled, tableRootRef, tableWrapperRef, updateRows]);\n\n return rows;\n}\n"]}
|
|
@@ -25,6 +25,10 @@ export default class ButtonGroupWrapper extends ComponentWrapper {
|
|
|
25
25
|
* Finds a menu item by its id.
|
|
26
26
|
*/
|
|
27
27
|
findMenuById(id: string): null | ButtonDropdownWrapper;
|
|
28
|
+
/**
|
|
29
|
+
* Finds a copy-to-clipboard item by its id.
|
|
30
|
+
*/
|
|
31
|
+
findCopyToClipboardById(id: string): null | ButtonWrapper;
|
|
28
32
|
/**
|
|
29
33
|
* Finds the currently opened tooltip.
|
|
30
34
|
*/
|
|
@@ -48,6 +48,14 @@ class ButtonGroupWrapper extends dom_1.ComponentWrapper {
|
|
|
48
48
|
const wrapper = this.find(inlineItemSelector);
|
|
49
49
|
return wrapper && new index_js_2.default(wrapper.getElement());
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Finds a copy-to-clipboard item by its id.
|
|
53
|
+
*/
|
|
54
|
+
findCopyToClipboardById(id) {
|
|
55
|
+
const inlineItemSelector = `.${styles_selectors_js_1.default['button-group-item']}[data-testid="${CSS.escape(id)}"]`;
|
|
56
|
+
const wrapper = this.find(inlineItemSelector);
|
|
57
|
+
return wrapper && new index_js_1.default(wrapper.getElement());
|
|
58
|
+
}
|
|
51
59
|
/**
|
|
52
60
|
* Finds the currently opened tooltip.
|
|
53
61
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/button-group/index.ts"],"names":[],"mappings":";;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,gEAA0F;AAE1F,iDAA+C;AAC/C,0DAAgE;AAChE,qDAAsD;AACtD,0CAAwC;AACxC,wDAA4D;AAE5D,gGAAoF;AAEpF,MAAqB,kBAAmB,SAAQ,sBAAgB;IAG9D;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,kBAAkB,CAAC,6BAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,EAAU;QACvB,MAAM,kBAAkB,GAAG,IAAI,6BAAc,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAsC,CAAC;QACnF,OAAO,OAAO,IAAI,IAAI,kBAAa,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,EAAU;QAC7B,MAAM,kBAAkB,GAAG,IAAI,6BAAc,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAsC,CAAC;QACnF,OAAO,OAAO,IAAI,IAAI,kBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,EAAU;QAC1B,MAAM,kBAAkB,GAAG,IAAI,6BAAc,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAmC,CAAC;QAChF,OAAO,OAAO,IAAI,IAAI,kBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,EAAU;QACrB,MAAM,kBAAkB,GAAG,IAAI,6BAAc,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9C,OAAO,OAAO,IAAI,IAAI,kBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAA,kBAAa,GAAE,CAAC,eAAe,CAAC,6BAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACjF,CAAC;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/button-group/index.ts"],"names":[],"mappings":";;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,gEAA0F;AAE1F,iDAA+C;AAC/C,0DAAgE;AAChE,qDAAsD;AACtD,0CAAwC;AACxC,wDAA4D;AAE5D,gGAAoF;AAEpF,MAAqB,kBAAmB,SAAQ,sBAAgB;IAG9D;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,kBAAkB,CAAC,6BAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,EAAU;QACvB,MAAM,kBAAkB,GAAG,IAAI,6BAAc,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAsC,CAAC;QACnF,OAAO,OAAO,IAAI,IAAI,kBAAa,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,EAAU;QAC7B,MAAM,kBAAkB,GAAG,IAAI,6BAAc,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAsC,CAAC;QACnF,OAAO,OAAO,IAAI,IAAI,kBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,EAAU;QAC1B,MAAM,kBAAkB,GAAG,IAAI,6BAAc,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAmC,CAAC;QAChF,OAAO,OAAO,IAAI,IAAI,kBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,EAAU;QACrB,MAAM,kBAAkB,GAAG,IAAI,6BAAc,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9C,OAAO,OAAO,IAAI,IAAI,kBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,EAAU;QAChC,MAAM,kBAAkB,GAAG,IAAI,6BAAc,CAAC,mBAAmB,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAsC,CAAC;QACnF,OAAO,OAAO,IAAI,IAAI,kBAAa,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAA,kBAAa,GAAE,CAAC,eAAe,CAAC,6BAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACjF,CAAC;;AA3DM,+BAAY,GAAW,6BAAc,CAAC,cAAc,CAAC,CAAC;kBAD1C,kBAAkB"}
|
|
@@ -41,10 +41,10 @@ class PaginationWrapper extends dom_1.ComponentWrapper {
|
|
|
41
41
|
return this.findComponent(`li:nth-child(${pageIndex}) .${styles_selectors_js_1.default.button}`, PaginationButtonWrapper);
|
|
42
42
|
}
|
|
43
43
|
findPreviousPageButton() {
|
|
44
|
-
return this.findComponent(`li:first-child .${styles_selectors_js_1.default.
|
|
44
|
+
return this.findComponent(`li:first-child .${styles_selectors_js_1.default.arrow}`, PaginationButtonWrapper);
|
|
45
45
|
}
|
|
46
46
|
findNextPageButton() {
|
|
47
|
-
return this.findComponent(`li:
|
|
47
|
+
return this.findComponent(`li:not(:first-child) .${styles_selectors_js_1.default.arrow}`, PaginationButtonWrapper);
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* Returns the jump to page input field.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/pagination/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,gEAAmF;AAEnF,sCAAsC;AACtC,oCAAoC;AACpC,wCAAwC;AAExC,iFAA6D;AAE7D,MAAa,uBAAwB,SAAQ,sBAAmC;IAE9E,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC;IACxF,CAAC;CACF;AALD,0DAKC;AAHC;IADC,aAAO;yDAGP;AAGH,MAAqB,iBAAkB,SAAQ,sBAAgB;IAG7D,eAAe;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,6BAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,uBAAuB,CAAE,CAAC;IACtF,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,kBAAkB,CAAoB,6BAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAC1E,OAAO,CAAC,EAAE,CAAC,IAAI,uBAAuB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,qBAAqB,CAAC,KAAa;QACjC,6CAA6C;QAC7C,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,SAAS,MAAM,6BAAM,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACrG,CAAC;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,6BAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/pagination/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,gEAAmF;AAEnF,sCAAsC;AACtC,oCAAoC;AACpC,wCAAwC;AAExC,iFAA6D;AAE7D,MAAa,uBAAwB,SAAQ,sBAAmC;IAE9E,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC;IACxF,CAAC;CACF;AALD,0DAKC;AAHC;IADC,aAAO;yDAGP;AAGH,MAAqB,iBAAkB,SAAQ,sBAAgB;IAG7D,eAAe;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,6BAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,uBAAuB,CAAE,CAAC;IACtF,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,kBAAkB,CAAoB,6BAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAC1E,OAAO,CAAC,EAAE,CAAC,IAAI,uBAAuB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,qBAAqB,CAAC,KAAa;QACjC,6CAA6C;QAC7C,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,SAAS,MAAM,6BAAM,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACrG,CAAC;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,6BAAM,CAAC,KAAK,EAAE,EAAE,uBAAuB,CAAE,CAAC;IACzF,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,yBAAyB,6BAAM,CAAC,KAAK,EAAE,EAAE,uBAAuB,CAAE,CAAC;IAC/F,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,6BAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,eAAY,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QACzE,OAAO,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,EAAE,gBAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjG,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,iBAAc,CAAC,YAAY,EAAE,EAAE,iBAAc,CAAC,CAAC;IAC/E,CAAC;IAGD,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,6BAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAClE,CAAC;;AAxDM,8BAAY,GAAG,6BAAM,CAAC,IAAI,CAAC;kBADf,iBAAiB;AAuDpC;IADC,aAAO;mDAGP"}
|
|
@@ -8,6 +8,10 @@ declare class StepWrapper extends ComponentWrapper {
|
|
|
8
8
|
* Finds the details of a step
|
|
9
9
|
*/
|
|
10
10
|
findDetails(): ElementWrapper | null;
|
|
11
|
+
/**
|
|
12
|
+
* Finds the annotation of a step
|
|
13
|
+
*/
|
|
14
|
+
findAnnotation(): ElementWrapper | null;
|
|
11
15
|
}
|
|
12
16
|
export default class StepsWrapper extends ComponentWrapper {
|
|
13
17
|
static rootSelector: string;
|
|
@@ -17,6 +17,12 @@ class StepWrapper extends dom_1.ComponentWrapper {
|
|
|
17
17
|
findDetails() {
|
|
18
18
|
return this.findByClassName(styles_selectors_js_1.default.details);
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Finds the annotation of a step
|
|
22
|
+
*/
|
|
23
|
+
findAnnotation() {
|
|
24
|
+
return this.findByClassName(styles_selectors_js_1.default.annotation);
|
|
25
|
+
}
|
|
20
26
|
}
|
|
21
27
|
class StepsWrapper extends dom_1.ComponentWrapper {
|
|
22
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/steps/index.ts"],"names":[],"mappings":";;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,gEAA0F;AAE1F,4EAAwD;AAExD,MAAM,WAAY,SAAQ,sBAAgB;IACxC;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF;AACD,MAAqB,YAAa,SAAQ,sBAAgB;IAGxD;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,kBAAkB,CAAC,6BAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;;AAPM,yBAAY,GAAW,6BAAM,CAAC,IAAI,CAAC;kBADvB,YAAY"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/steps/index.ts"],"names":[],"mappings":";;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,gEAA0F;AAE1F,4EAAwD;AAExD,MAAM,WAAY,SAAQ,sBAAgB;IACxC;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;CACF;AACD,MAAqB,YAAa,SAAQ,sBAAgB;IAGxD;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,kBAAkB,CAAC,6BAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;;AAPM,yBAAY,GAAW,6BAAM,CAAC,IAAI,CAAC;kBADvB,YAAY"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ComponentWrapper, ElementWrapper } from '@cloudscape-design/test-utils-core/dom';
|
|
2
|
+
import ButtonWrapper from '../button';
|
|
3
|
+
import ButtonDropdownWrapper from '../button-dropdown';
|
|
2
4
|
import CollectionPreferencesWrapper from '../collection-preferences';
|
|
3
5
|
import PaginationWrapper from '../pagination';
|
|
4
6
|
import PropertyFilterWrapper from '../property-filter';
|
|
@@ -71,6 +73,27 @@ export default class TableWrapper extends ComponentWrapper {
|
|
|
71
73
|
* Returns the column that is used for descending sorting.
|
|
72
74
|
*/
|
|
73
75
|
findDescSortedColumn(): ElementWrapper | null;
|
|
76
|
+
/**
|
|
77
|
+
* Returns the per-column sort menu (kebab dropdown) for the column header at the
|
|
78
|
+
* given index. Only present on tables that opt in to multi-column sorting.
|
|
79
|
+
*
|
|
80
|
+
* @param columnIndex 1-based index of the column.
|
|
81
|
+
*/
|
|
82
|
+
findColumnSortMenu(columnIndex: number): TableColumnSortMenuWrapper | null;
|
|
83
|
+
/**
|
|
84
|
+
* Returns the sort priority badge on the column header at the given index.
|
|
85
|
+
* The badge is only rendered when two or more columns participate in a
|
|
86
|
+
* multi-column sort. Returns `null` otherwise.
|
|
87
|
+
*
|
|
88
|
+
* @param columnIndex 1-based index of the column.
|
|
89
|
+
*/
|
|
90
|
+
findColumnSortPriorityBadge(columnIndex: number): ElementWrapper | null;
|
|
91
|
+
/**
|
|
92
|
+
* Returns the "Clear sort" button rendered in the table header tools area.
|
|
93
|
+
* The button is auto-rendered only when multi-column sorting is enabled and at
|
|
94
|
+
* least one column is sorted. Returns `null` otherwise.
|
|
95
|
+
*/
|
|
96
|
+
findClearSort(): ButtonWrapper | null;
|
|
74
97
|
/**
|
|
75
98
|
* Returns a row selection area for a given index.
|
|
76
99
|
*
|
|
@@ -119,3 +142,57 @@ export default class TableWrapper extends ComponentWrapper {
|
|
|
119
142
|
*/
|
|
120
143
|
findItemsLoaderByItemId(itemId: string): null | ElementWrapper;
|
|
121
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Wraps the per-column sort menu (kebab dropdown) used by multi-column sorting.
|
|
147
|
+
*
|
|
148
|
+
* Extends `ButtonDropdownWrapper` with named finders for each sort action, so
|
|
149
|
+
* tests don't depend on the dropdown item IDs (an internal implementation
|
|
150
|
+
* detail). Call `openDropdown()` before using the item finders.
|
|
151
|
+
*/
|
|
152
|
+
export declare class TableColumnSortMenuWrapper extends ButtonDropdownWrapper {
|
|
153
|
+
/**
|
|
154
|
+
* Returns the "Sort ascending" menu item.
|
|
155
|
+
*
|
|
156
|
+
* Supported options:
|
|
157
|
+
* * `disabled` (boolean) - Use it to find the disabled or non-disabled item.
|
|
158
|
+
*/
|
|
159
|
+
findSortAscendingItem(options?: {
|
|
160
|
+
disabled?: boolean;
|
|
161
|
+
}): ElementWrapper | null;
|
|
162
|
+
/**
|
|
163
|
+
* Returns the "Sort descending" menu item.
|
|
164
|
+
*
|
|
165
|
+
* Supported options:
|
|
166
|
+
* * `disabled` (boolean) - Use it to find the disabled or non-disabled item.
|
|
167
|
+
*/
|
|
168
|
+
findSortDescendingItem(options?: {
|
|
169
|
+
disabled?: boolean;
|
|
170
|
+
}): ElementWrapper | null;
|
|
171
|
+
/**
|
|
172
|
+
* Returns the "Add to sort (ascending)" menu item.
|
|
173
|
+
*
|
|
174
|
+
* Supported options:
|
|
175
|
+
* * `disabled` (boolean) - Use it to find the disabled or non-disabled item.
|
|
176
|
+
*/
|
|
177
|
+
findAddToSortAscendingItem(options?: {
|
|
178
|
+
disabled?: boolean;
|
|
179
|
+
}): ElementWrapper | null;
|
|
180
|
+
/**
|
|
181
|
+
* Returns the "Add to sort (descending)" menu item.
|
|
182
|
+
*
|
|
183
|
+
* Supported options:
|
|
184
|
+
* * `disabled` (boolean) - Use it to find the disabled or non-disabled item.
|
|
185
|
+
*/
|
|
186
|
+
findAddToSortDescendingItem(options?: {
|
|
187
|
+
disabled?: boolean;
|
|
188
|
+
}): ElementWrapper | null;
|
|
189
|
+
/**
|
|
190
|
+
* Returns the "Remove from sort" menu item.
|
|
191
|
+
*
|
|
192
|
+
* Supported options:
|
|
193
|
+
* * `disabled` (boolean) - Use it to find the disabled or non-disabled item.
|
|
194
|
+
*/
|
|
195
|
+
findRemoveFromSortItem(options?: {
|
|
196
|
+
disabled?: boolean;
|
|
197
|
+
}): ElementWrapper | null;
|
|
198
|
+
}
|