@awsui/components-react
Version:
On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en
66 lines • 2.96 kB
JavaScript
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import { warnOnce } from '@awsui/component-toolkit/internal';
export const applyTrackBy = (trackBy, item) => {
if (typeof trackBy === 'function') {
return trackBy(item);
}
return item[trackBy];
};
export const getItemKey = (trackBy, item, index) => {
if (!trackBy) {
return index;
}
return applyTrackBy(trackBy, item);
};
export const getTrackableValue = (trackBy, item) => {
if (!trackBy) {
return item;
}
return applyTrackBy(trackBy, item);
};
export const getColumnKey = (column, index) => {
return column.id || index;
};
export const toContainerVariant = (variant) => {
const isDefaultVariant = !variant || variant === 'container';
return isDefaultVariant ? 'default' : variant === 'borderless' ? 'embedded' : variant;
};
export function checkSortingState(columnDefinitions, sortingComparator) {
const matchedColumn = columnDefinitions.filter(column => column.sortingComparator === sortingComparator)[0];
if (!matchedColumn) {
warnOnce('Table', 'Currently active sorting comparator was not found in any columns. Make sure to provide the same comparator function instance on each render.');
}
}
export function getVisibleColumnDefinitions({ columnDisplay, visibleColumns, columnDefinitions, }) {
// columnsDisplay has a precedence over visibleColumns.
if (columnDisplay) {
return getVisibleColumnDefinitionsFromColumnDisplay({ columnDisplay, columnDefinitions });
}
else if (visibleColumns) {
return getVisibleColumnDefinitionsFromVisibleColumns({ visibleColumns, columnDefinitions });
}
else {
return columnDefinitions;
}
}
function getVisibleColumnDefinitionsFromColumnDisplay({ columnDisplay, columnDefinitions, }) {
const columnDefinitionsById = columnDefinitions.reduce((accumulator, item) => (item.id === undefined ? accumulator : Object.assign(Object.assign({}, accumulator), { [item.id]: item })), {});
return columnDisplay
.filter(item => item.visible)
.map(item => columnDefinitionsById[item.id])
.filter(Boolean);
}
function getVisibleColumnDefinitionsFromVisibleColumns({ visibleColumns, columnDefinitions, }) {
const ids = new Set(visibleColumns);
return columnDefinitions.filter(({ id }) => id !== undefined && ids.has(id));
}
export function getStickyClassNames(styles, props) {
return {
[styles['sticky-cell']]: !!props,
[styles['sticky-cell-pad-inline-start']]: !!(props === null || props === void 0 ? void 0 : props.padInlineStart),
[styles['sticky-cell-last-inline-start']]: !!(props === null || props === void 0 ? void 0 : props.lastInsetInlineStart),
[styles['sticky-cell-last-inline-end']]: !!(props === null || props === void 0 ? void 0 : props.lastInsetInlineEnd),
};
}
//# sourceMappingURL=utils.js.map