@synerise/ds-table-new 0.1.0
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/CHANGELOG.md +10 -0
- package/LICENSE.md +21 -0
- package/README.md +153 -0
- package/dist/Table.const.d.ts +20 -0
- package/dist/Table.const.js +42 -0
- package/dist/Table.d.ts +3 -0
- package/dist/Table.js +51 -0
- package/dist/Table.styles.d.ts +15 -0
- package/dist/Table.styles.js +29 -0
- package/dist/Table.types.d.ts +359 -0
- package/dist/Table.types.js +1 -0
- package/dist/VirtualTable.d.ts +3 -0
- package/dist/VirtualTable.js +222 -0
- package/dist/components/BaseTable/BaseTable.d.ts +3 -0
- package/dist/components/BaseTable/BaseTable.js +114 -0
- package/dist/components/BaseTable/BaseTable.styles.d.ts +28 -0
- package/dist/components/BaseTable/BaseTable.styles.js +41 -0
- package/dist/components/Cell/Action/ActionCell.d.ts +3 -0
- package/dist/components/Cell/Action/ActionCell.js +16 -0
- package/dist/components/Cell/Action/ActionCell.styles.d.ts +5 -0
- package/dist/components/Cell/Action/ActionCell.styles.js +13 -0
- package/dist/components/Cell/Action/ActionCell.types.d.ts +13 -0
- package/dist/components/Cell/Action/ActionCell.types.js +1 -0
- package/dist/components/Cell/AvatarLabel/AvatarLabel.d.ts +4 -0
- package/dist/components/Cell/AvatarLabel/AvatarLabel.js +42 -0
- package/dist/components/Cell/AvatarLabel/AvatarLabel.styles.d.ts +27 -0
- package/dist/components/Cell/AvatarLabel/AvatarLabel.styles.js +49 -0
- package/dist/components/Cell/AvatarLabel/AvatarLabel.types.d.ts +22 -0
- package/dist/components/Cell/AvatarLabel/AvatarLabel.types.js +1 -0
- package/dist/components/Cell/Copyable/Copyable.styles.d.ts +2 -0
- package/dist/components/Cell/Copyable/Copyable.styles.js +14 -0
- package/dist/components/Cell/Copyable/Copyable.types.d.ts +11 -0
- package/dist/components/Cell/Copyable/Copyable.types.js +1 -0
- package/dist/components/Cell/Copyable/CopyableCell.d.ts +4 -0
- package/dist/components/Cell/Copyable/CopyableCell.js +28 -0
- package/dist/components/Cell/Editable/EditableCell.d.ts +4 -0
- package/dist/components/Cell/Editable/EditableCell.js +30 -0
- package/dist/components/Cell/Editable/EditableCell.styles.d.ts +4 -0
- package/dist/components/Cell/Editable/EditableCell.styles.js +14 -0
- package/dist/components/Cell/Editable/EditableCell.types.d.ts +11 -0
- package/dist/components/Cell/Editable/EditableCell.types.js +1 -0
- package/dist/components/Cell/FlagLabel/FlagLabelCell.d.ts +4 -0
- package/dist/components/Cell/FlagLabel/FlagLabelCell.js +16 -0
- package/dist/components/Cell/FlagLabel/FlagLabelCell.styles.d.ts +1 -0
- package/dist/components/Cell/FlagLabel/FlagLabelCell.styles.js +8 -0
- package/dist/components/Cell/FlagLabel/FlagLabelCell.types.d.ts +11 -0
- package/dist/components/Cell/FlagLabel/FlagLabelCell.types.js +1 -0
- package/dist/components/Cell/IconLabel/IconLabel.d.ts +4 -0
- package/dist/components/Cell/IconLabel/IconLabel.js +15 -0
- package/dist/components/Cell/IconLabel/IconLabel.styles.d.ts +3 -0
- package/dist/components/Cell/IconLabel/IconLabel.styles.js +9 -0
- package/dist/components/Cell/IconLabel/IconLabel.types.d.ts +13 -0
- package/dist/components/Cell/IconLabel/IconLabel.types.js +1 -0
- package/dist/components/Cell/IconTooltipCell/IconTooltipCell.d.ts +4 -0
- package/dist/components/Cell/IconTooltipCell/IconTooltipCell.js +19 -0
- package/dist/components/Cell/IconTooltipCell/IconTooltipCell.styles.d.ts +4 -0
- package/dist/components/Cell/IconTooltipCell/IconTooltipCell.styles.js +13 -0
- package/dist/components/Cell/IconTooltipCell/IconTooltipCell.types.d.ts +16 -0
- package/dist/components/Cell/IconTooltipCell/IconTooltipCell.types.js +1 -0
- package/dist/components/Cell/InputNumber/InputNumberCell.d.ts +4 -0
- package/dist/components/Cell/InputNumber/InputNumberCell.js +11 -0
- package/dist/components/Cell/InputNumber/InputNumberCell.styles.d.ts +3 -0
- package/dist/components/Cell/InputNumber/InputNumberCell.styles.js +11 -0
- package/dist/components/Cell/InputNumber/InputNumberCell.types.d.ts +7 -0
- package/dist/components/Cell/InputNumber/InputNumberCell.types.js +1 -0
- package/dist/components/Cell/LabelsWithShowMore/LabelsWithShowMore.d.ts +5 -0
- package/dist/components/Cell/LabelsWithShowMore/LabelsWithShowMore.js +33 -0
- package/dist/components/Cell/LabelsWithShowMore/LabelsWithShowMore.styles.d.ts +3 -0
- package/dist/components/Cell/LabelsWithShowMore/LabelsWithShowMore.styles.js +18 -0
- package/dist/components/Cell/LabelsWithShowMore/LabelsWithShowMore.types.d.ts +22 -0
- package/dist/components/Cell/LabelsWithShowMore/LabelsWithShowMore.types.js +1 -0
- package/dist/components/Cell/LabelsWithShowMore/Modal/Modal.d.ts +4 -0
- package/dist/components/Cell/LabelsWithShowMore/Modal/Modal.js +37 -0
- package/dist/components/Cell/LabelsWithShowMore/Modal/Modal.types.d.ts +15 -0
- package/dist/components/Cell/LabelsWithShowMore/Modal/Modal.types.js +1 -0
- package/dist/components/Cell/Star/StarCell.d.ts +4 -0
- package/dist/components/Cell/Star/StarCell.js +25 -0
- package/dist/components/Cell/Star/StarCell.styles.d.ts +5 -0
- package/dist/components/Cell/Star/StarCell.styles.js +16 -0
- package/dist/components/Cell/Star/StarCell.types.d.ts +17 -0
- package/dist/components/Cell/Star/StarCell.types.js +1 -0
- package/dist/components/Cell/StatusLabel/StatusLabel.d.ts +4 -0
- package/dist/components/Cell/StatusLabel/StatusLabel.js +18 -0
- package/dist/components/Cell/StatusLabel/StatusLabel.styles.d.ts +4 -0
- package/dist/components/Cell/StatusLabel/StatusLabel.styles.js +13 -0
- package/dist/components/Cell/StatusLabel/StatusLabel.types.d.ts +14 -0
- package/dist/components/Cell/StatusLabel/StatusLabel.types.js +1 -0
- package/dist/components/Cell/TagIcon/TagIcon.d.ts +4 -0
- package/dist/components/Cell/TagIcon/TagIcon.js +10 -0
- package/dist/components/Cell/TagIcon/TagIcon.styles.d.ts +3 -0
- package/dist/components/Cell/TagIcon/TagIcon.styles.js +9 -0
- package/dist/components/Cell/TagIcon/TagIcon.types.d.ts +11 -0
- package/dist/components/Cell/TagIcon/TagIcon.types.js +1 -0
- package/dist/components/Cell/TagsGroup/TagsGroup.d.ts +3 -0
- package/dist/components/Cell/TagsGroup/TagsGroup.js +26 -0
- package/dist/components/Cell/TagsGroup/TagsGroup.styles.d.ts +5 -0
- package/dist/components/Cell/TagsGroup/TagsGroup.styles.js +34 -0
- package/dist/components/Cell/TagsGroup/TagsGroup.types.d.ts +9 -0
- package/dist/components/Cell/TagsGroup/TagsGroup.types.js +1 -0
- package/dist/components/Cell/index.d.ts +26 -0
- package/dist/components/Cell/index.js +28 -0
- package/dist/components/TableBody/TableBody.d.ts +3 -0
- package/dist/components/TableBody/TableBody.js +40 -0
- package/dist/components/TableBody/TableBody.styles.d.ts +2 -0
- package/dist/components/TableBody/TableBody.styles.js +15 -0
- package/dist/components/TableBody/TableBodySkeleton/TableBodySkeleton.d.ts +5 -0
- package/dist/components/TableBody/TableBodySkeleton/TableBodySkeleton.js +42 -0
- package/dist/components/TableBody/TableBodySkeleton/TableBodySkeleton.styles.d.ts +9 -0
- package/dist/components/TableBody/TableBodySkeleton/TableBodySkeleton.styles.js +30 -0
- package/dist/components/TableBody/TableCell/TableCell.d.ts +16 -0
- package/dist/components/TableBody/TableCell/TableCell.js +19 -0
- package/dist/components/TableBody/TableCell/TableCell.styles.d.ts +10 -0
- package/dist/components/TableBody/TableCell/TableCell.styles.js +18 -0
- package/dist/components/TableBody/TableEmptyBody/TableEmptyBody.d.ts +3 -0
- package/dist/components/TableBody/TableEmptyBody/TableEmptyBody.js +18 -0
- package/dist/components/TableBody/TableEmptyBody/TableEmptyBody.styles.d.ts +4 -0
- package/dist/components/TableBody/TableEmptyBody/TableEmptyBody.styles.js +23 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/ErrorItem.d.ts +8 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/ErrorItem.js +19 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/ErrorItem.styles.d.ts +1 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/ErrorItem.styles.js +8 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/InfiniteLoaderRow.d.ts +14 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/InfiniteLoaderRow.js +50 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/LoadingItem.d.ts +5 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/LoadingItem.js +10 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/LoadingItem.styles.d.ts +1 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/LoadingItem.styles.js +9 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/NoMoreItem.d.ts +5 -0
- package/dist/components/TableBody/TableRow/InfiniteLoaderRow/NoMoreItem.js +10 -0
- package/dist/components/TableBody/TableRow/TableRow.d.ts +5 -0
- package/dist/components/TableBody/TableRow/TableRow.js +29 -0
- package/dist/components/TableBody/TableRow/TableRow.styles.d.ts +7 -0
- package/dist/components/TableBody/TableRow/TableRow.styles.js +15 -0
- package/dist/components/TableBody/TableRow/TableRowVirtual.d.ts +5 -0
- package/dist/components/TableBody/TableRow/TableRowVirtual.js +88 -0
- package/dist/components/TableBody/TableRowSelection/TableRowSelection.d.ts +3 -0
- package/dist/components/TableBody/TableRowSelection/TableRowSelection.js +39 -0
- package/dist/components/TableColumns/TableColumnSorter/SortIcons/DefaultSortIcon.d.ts +5 -0
- package/dist/components/TableColumns/TableColumnSorter/SortIcons/DefaultSortIcon.js +19 -0
- package/dist/components/TableColumns/TableColumnSorter/SortIcons/StringSortIcon.d.ts +5 -0
- package/dist/components/TableColumns/TableColumnSorter/SortIcons/StringSortIcon.js +19 -0
- package/dist/components/TableColumns/TableColumnSorter/TableColumnSorter.const.d.ts +4 -0
- package/dist/components/TableColumns/TableColumnSorter/TableColumnSorter.const.js +8 -0
- package/dist/components/TableColumns/TableColumnSorter/TableColumnSorter.d.ts +3 -0
- package/dist/components/TableColumns/TableColumnSorter/TableColumnSorter.js +75 -0
- package/dist/components/TableColumns/TableColumnSorter/TableColumnSorter.styles.d.ts +30 -0
- package/dist/components/TableColumns/TableColumnSorter/TableColumnSorter.styles.js +11 -0
- package/dist/components/TableColumns/TableColumns.d.ts +3 -0
- package/dist/components/TableColumns/TableColumns.js +28 -0
- package/dist/components/TableColumns/TableColumns.styles.d.ts +18 -0
- package/dist/components/TableColumns/TableColumns.styles.js +35 -0
- package/dist/components/TableHeader/TableCounter/TableCounter.d.ts +3 -0
- package/dist/components/TableHeader/TableCounter/TableCounter.js +33 -0
- package/dist/components/TableHeader/TableCounter/TableCounter.styles.d.ts +1 -0
- package/dist/components/TableHeader/TableCounter/TableCounter.styles.js +8 -0
- package/dist/components/TableHeader/TableHeader.d.ts +3 -0
- package/dist/components/TableHeader/TableHeader.js +103 -0
- package/dist/components/TableHeader/TableHeader.styles.d.ts +18 -0
- package/dist/components/TableHeader/TableHeader.styles.js +48 -0
- package/dist/components/TableHeader/TableHeaderSelection/TableHeaderSelection.d.ts +3 -0
- package/dist/components/TableHeader/TableHeaderSelection/TableHeaderSelection.js +123 -0
- package/dist/components/TableHeader/TableHeaderSelection/TableHeaderSelection.styles.d.ts +8 -0
- package/dist/components/TableHeader/TableHeaderSelection/TableHeaderSelection.styles.js +21 -0
- package/dist/components/TableHeader/TableLimit/TableLimit.d.ts +3 -0
- package/dist/components/TableHeader/TableLimit/TableLimit.js +50 -0
- package/dist/components/TableHeader/TableLimit/TableLimit.styles.d.ts +4 -0
- package/dist/components/TableHeader/TableLimit/TableLimit.styles.js +24 -0
- package/dist/components/TableHeader/TableLimit/TableLimit.types.d.ts +10 -0
- package/dist/components/TableHeader/TableLimit/TableLimit.types.js +1 -0
- package/dist/components/TableHorizontalScroll/TableHorizontalScroll.d.ts +6 -0
- package/dist/components/TableHorizontalScroll/TableHorizontalScroll.js +41 -0
- package/dist/components/TableHorizontalScroll/TableHorizontalScroll.styles.d.ts +12 -0
- package/dist/components/TableHorizontalScroll/TableHorizontalScroll.styles.js +33 -0
- package/dist/components/TableHorizontalScrollBar/TableHorizontalScrollBar.d.ts +6 -0
- package/dist/components/TableHorizontalScrollBar/TableHorizontalScrollBar.js +11 -0
- package/dist/components/TableHorizontalScrollBar/TableHorizontalScrollBar.styles.d.ts +4 -0
- package/dist/components/TableHorizontalScrollBar/TableHorizontalScrollBar.styles.js +14 -0
- package/dist/components/TablePagination/TablePagination.d.ts +3 -0
- package/dist/components/TablePagination/TablePagination.js +19 -0
- package/dist/components/TablePagination/TablePagination.styles.d.ts +1 -0
- package/dist/components/TablePagination/TablePagination.styles.js +8 -0
- package/dist/contexts/SelectionContext.d.ts +4 -0
- package/dist/contexts/SelectionContext.js +10 -0
- package/dist/contexts/StickyContext.d.ts +8 -0
- package/dist/contexts/StickyContext.js +9 -0
- package/dist/contexts/TableContext.d.ts +11 -0
- package/dist/contexts/TableContext.js +13 -0
- package/dist/hooks/useColumnSizing.d.ts +23 -0
- package/dist/hooks/useColumnSizing.js +95 -0
- package/dist/hooks/useDefaultTexts.d.ts +2 -0
- package/dist/hooks/useDefaultTexts.js +95 -0
- package/dist/hooks/useInfiniteScroll.d.ts +13 -0
- package/dist/hooks/useInfiniteScroll.js +58 -0
- package/dist/hooks/useRowKey.d.ts +4 -0
- package/dist/hooks/useRowKey.js +27 -0
- package/dist/hooks/useScrollSync.d.ts +2 -0
- package/dist/hooks/useScrollSync.js +23 -0
- package/dist/hooks/useTable.d.ts +14 -0
- package/dist/hooks/useTable.js +168 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +50 -0
- package/dist/types/table.d.js +1 -0
- package/dist/types/table.d.ts +28 -0
- package/dist/utils/arrayToTrueMap.d.ts +1 -0
- package/dist/utils/arrayToTrueMap.js +7 -0
- package/dist/utils/calculatePixels.d.ts +1 -0
- package/dist/utils/calculatePixels.js +21 -0
- package/dist/utils/compareKeys.d.ts +1 -0
- package/dist/utils/compareKeys.js +16 -0
- package/dist/utils/getChildrenColumnName.d.ts +1 -0
- package/dist/utils/getChildrenColumnName.js +7 -0
- package/dist/utils/getDefaultSkeletonColumns.d.ts +2 -0
- package/dist/utils/getDefaultSkeletonColumns.js +58 -0
- package/dist/utils/getInfiniteScrollPadding.d.ts +2 -0
- package/dist/utils/getInfiniteScrollPadding.js +13 -0
- package/dist/utils/getIsRevealed.d.ts +5 -0
- package/dist/utils/getIsRevealed.js +9 -0
- package/dist/utils/getPaginationConfig.d.ts +10 -0
- package/dist/utils/getPaginationConfig.js +19 -0
- package/dist/utils/getRecordSelectionStatus.d.ts +5 -0
- package/dist/utils/getRecordSelectionStatus.js +13 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/isRecordSelectable.d.ts +2 -0
- package/dist/utils/isRecordSelectable.js +14 -0
- package/dist/utils/legacyColumnConfigAdapter.d.ts +3 -0
- package/dist/utils/legacyColumnConfigAdapter.js +113 -0
- package/dist/utils/processColumns.d.ts +3 -0
- package/dist/utils/processColumns.js +24 -0
- package/dist/utils/sort.d.ts +3 -0
- package/dist/utils/sort.js +14 -0
- package/package.json +76 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Checkbox } from "@synerise/ds-button";
|
|
3
|
+
import Tooltip from "@synerise/ds-tooltip";
|
|
4
|
+
import { useSelectionContext } from "../../../contexts/SelectionContext.js";
|
|
5
|
+
import { useStickyContext } from "../../../contexts/StickyContext.js";
|
|
6
|
+
import { useTableContext } from "../../../contexts/TableContext.js";
|
|
7
|
+
const TableRowSelection = ({
|
|
8
|
+
texts,
|
|
9
|
+
row
|
|
10
|
+
}) => {
|
|
11
|
+
const stickyContext = useStickyContext();
|
|
12
|
+
const {
|
|
13
|
+
table
|
|
14
|
+
} = useTableContext();
|
|
15
|
+
const selection = useSelectionContext();
|
|
16
|
+
const {
|
|
17
|
+
globalSelectionOnChange,
|
|
18
|
+
globalSelected,
|
|
19
|
+
limit
|
|
20
|
+
} = selection || {};
|
|
21
|
+
const isGlobalAllSelected = globalSelectionOnChange !== void 0 && globalSelected;
|
|
22
|
+
const isSelected = row.getIsSelected();
|
|
23
|
+
const isDisabled = !row.getCanSelect() || isGlobalAllSelected || limit && table.getSelectedRowModel().rows.length >= limit && !isSelected;
|
|
24
|
+
const toggleSelection = row.getToggleSelectedHandler();
|
|
25
|
+
const handleChange = (newValue) => {
|
|
26
|
+
stickyContext && stickyContext.setStickyData((prevValue) => ({
|
|
27
|
+
...prevValue,
|
|
28
|
+
isRevealed: true
|
|
29
|
+
}));
|
|
30
|
+
toggleSelection(newValue);
|
|
31
|
+
};
|
|
32
|
+
const selectionTooltipProps = selection?.getSelectionTooltipProps?.(row.original);
|
|
33
|
+
return /* @__PURE__ */ jsx(Tooltip, { title: texts.selectRowTooltip, ...selectionTooltipProps || {}, children: /* @__PURE__ */ jsx(Checkbox, { "data-testid": "ds-table-selection-button", checked: isGlobalAllSelected || isSelected, disabled: !!isDisabled, indeterminate: row.getIsSomeSelected(), onClick: (event) => {
|
|
34
|
+
event.stopPropagation();
|
|
35
|
+
}, onChange: handleChange }) });
|
|
36
|
+
};
|
|
37
|
+
export {
|
|
38
|
+
TableRowSelection
|
|
39
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useTheme } from "@synerise/ds-core";
|
|
3
|
+
import Icon, { SortAscendingM, SortDescendingM, ArrangeM } from "@synerise/ds-icon";
|
|
4
|
+
import { ASCENDING, DESCENDING } from "../TableColumnSorter.const.js";
|
|
5
|
+
const DefaultSortIcon = ({
|
|
6
|
+
sortDirection
|
|
7
|
+
}) => {
|
|
8
|
+
const theme = useTheme();
|
|
9
|
+
if (sortDirection === ASCENDING) {
|
|
10
|
+
return /* @__PURE__ */ jsx(Icon, { component: /* @__PURE__ */ jsx(SortAscendingM, {}), color: theme.palette["gray-600"] });
|
|
11
|
+
}
|
|
12
|
+
if (sortDirection === DESCENDING) {
|
|
13
|
+
return /* @__PURE__ */ jsx(Icon, { component: /* @__PURE__ */ jsx(SortDescendingM, {}), color: theme.palette["gray-600"] });
|
|
14
|
+
}
|
|
15
|
+
return /* @__PURE__ */ jsx(Icon, { component: /* @__PURE__ */ jsx(ArrangeM, {}), color: theme.palette["gray-600"] });
|
|
16
|
+
};
|
|
17
|
+
export {
|
|
18
|
+
DefaultSortIcon
|
|
19
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useTheme } from "@synerise/ds-core";
|
|
3
|
+
import Icon, { SortAzM, SortZaM, ArrangeM } from "@synerise/ds-icon";
|
|
4
|
+
import { ASCENDING, DESCENDING } from "../TableColumnSorter.const.js";
|
|
5
|
+
const StringSortIcon = ({
|
|
6
|
+
sortDirection
|
|
7
|
+
}) => {
|
|
8
|
+
const theme = useTheme();
|
|
9
|
+
if (sortDirection === ASCENDING) {
|
|
10
|
+
return /* @__PURE__ */ jsx(Icon, { component: /* @__PURE__ */ jsx(SortAzM, {}), color: theme.palette["gray-600"] });
|
|
11
|
+
}
|
|
12
|
+
if (sortDirection === DESCENDING) {
|
|
13
|
+
return /* @__PURE__ */ jsx(Icon, { component: /* @__PURE__ */ jsx(SortZaM, {}), color: theme.palette["gray-600"] });
|
|
14
|
+
}
|
|
15
|
+
return /* @__PURE__ */ jsx(Icon, { component: /* @__PURE__ */ jsx(ArrangeM, {}), color: theme.palette["gray-600"] });
|
|
16
|
+
};
|
|
17
|
+
export {
|
|
18
|
+
StringSortIcon
|
|
19
|
+
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useMemo } from "react";
|
|
3
|
+
import { DropdownMenu } from "@synerise/ds-dropdown";
|
|
4
|
+
import Icon, { SortZaM, SortAzM, SortDescendingM, SortAscendingM, Close2M } from "@synerise/ds-icon";
|
|
5
|
+
import { getSortOrder } from "../../../utils/sort.js";
|
|
6
|
+
import { DefaultSortIcon } from "./SortIcons/DefaultSortIcon.js";
|
|
7
|
+
import { StringSortIcon } from "./SortIcons/StringSortIcon.js";
|
|
8
|
+
import { DESCENDING, ASCENDING } from "./TableColumnSorter.const.js";
|
|
9
|
+
import { ToggleButton } from "./TableColumnSorter.styles.js";
|
|
10
|
+
const stopPropagation = (event) => event.stopPropagation();
|
|
11
|
+
const TableColumnSorter = ({
|
|
12
|
+
column,
|
|
13
|
+
texts
|
|
14
|
+
}) => {
|
|
15
|
+
const [isDropdownVisible, setIsDropdownVisible] = useState(false);
|
|
16
|
+
const sortOrder = getSortOrder(column);
|
|
17
|
+
const isStringSorter = column.columnDef.meta?.sortRender === "string";
|
|
18
|
+
const {
|
|
19
|
+
IconAscending,
|
|
20
|
+
IconDescending,
|
|
21
|
+
IconTrigger,
|
|
22
|
+
ascendingLabel,
|
|
23
|
+
descendingLabel
|
|
24
|
+
} = useMemo(() => isStringSorter ? {
|
|
25
|
+
IconAscending: SortAzM,
|
|
26
|
+
IconDescending: SortZaM,
|
|
27
|
+
IconTrigger: StringSortIcon,
|
|
28
|
+
ascendingLabel: texts.columnSortAz,
|
|
29
|
+
descendingLabel: texts.columnSortZa
|
|
30
|
+
} : {
|
|
31
|
+
IconAscending: SortAscendingM,
|
|
32
|
+
IconDescending: SortDescendingM,
|
|
33
|
+
IconTrigger: DefaultSortIcon,
|
|
34
|
+
ascendingLabel: texts.columnSortAscend,
|
|
35
|
+
descendingLabel: texts.columnSortDescend
|
|
36
|
+
}, [isStringSorter, texts.columnSortAscend, texts.columnSortAz, texts.columnSortDescend, texts.columnSortZa]);
|
|
37
|
+
const dropdownDataSource = [{
|
|
38
|
+
onClick: () => (
|
|
39
|
+
// TODO - use column.columnDef.meta.multipleSortingOrder to manage multisort
|
|
40
|
+
// currently it will prioritise last column sorted
|
|
41
|
+
column.toggleSorting(!ASCENDING, column.columnDef.enableMultiSort)
|
|
42
|
+
),
|
|
43
|
+
prefixel: /* @__PURE__ */ jsx(Icon, { component: /* @__PURE__ */ jsx(IconAscending, {}) }),
|
|
44
|
+
selected: sortOrder === ASCENDING,
|
|
45
|
+
text: ascendingLabel
|
|
46
|
+
}, {
|
|
47
|
+
key: DESCENDING,
|
|
48
|
+
prefixel: /* @__PURE__ */ jsx(Icon, { component: /* @__PURE__ */ jsx(IconDescending, {}) }),
|
|
49
|
+
selected: sortOrder === DESCENDING,
|
|
50
|
+
onClick: () => (
|
|
51
|
+
// TODO - use column.columnDef.meta.multipleSortingOrder to manage multisort
|
|
52
|
+
// currently it will prioritise last column sorted
|
|
53
|
+
column.toggleSorting(true, column.columnDef.enableMultiSort)
|
|
54
|
+
),
|
|
55
|
+
text: descendingLabel
|
|
56
|
+
}];
|
|
57
|
+
if (sortOrder) {
|
|
58
|
+
dropdownDataSource.push({
|
|
59
|
+
type: "danger",
|
|
60
|
+
prefixel: /* @__PURE__ */ jsx(Icon, { component: /* @__PURE__ */ jsx(Close2M, {}) }),
|
|
61
|
+
text: texts.columnSortClear,
|
|
62
|
+
onClick: () => column.clearSorting()
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return /* @__PURE__ */ jsx("div", { onClick: stopPropagation, children: /* @__PURE__ */ jsx(DropdownMenu, { dataSource: dropdownDataSource, onOpenChange: (isVisible) => {
|
|
66
|
+
if (isVisible !== isDropdownVisible) {
|
|
67
|
+
setIsDropdownVisible(isVisible);
|
|
68
|
+
}
|
|
69
|
+
}, open: isDropdownVisible, popoverProps: {
|
|
70
|
+
testId: "table-sort-common"
|
|
71
|
+
}, children: /* @__PURE__ */ jsx(ToggleButton, { isVisible: isDropdownVisible, type: "ghost", mode: "single-icon", className: "ds-sort-dropdown-button", "data-testid": `table-${isStringSorter ? "string" : "common"}-sorter-button`, children: /* @__PURE__ */ jsx(IconTrigger, { sortDirection: sortOrder }) }) }) });
|
|
72
|
+
};
|
|
73
|
+
export {
|
|
74
|
+
TableColumnSorter
|
|
75
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const ToggleButton: import('styled-components').StyledComponent<import('react').ForwardRefExoticComponent<Omit<Partial<{
|
|
2
|
+
href: string;
|
|
3
|
+
target?: string;
|
|
4
|
+
onClick?: React.MouseEventHandler<HTMLElement>;
|
|
5
|
+
} & import('antd/lib/button/button').BaseButtonProps & Omit<import('react').AnchorHTMLAttributes<any>, "type" | "onClick"> & {
|
|
6
|
+
htmlType?: import('antd/lib/button/button').ButtonHTMLType;
|
|
7
|
+
onClick?: React.MouseEventHandler<HTMLElement>;
|
|
8
|
+
} & Omit<import('react').ButtonHTMLAttributes<any>, "type" | "onClick">>, "type" | "ghost"> & {
|
|
9
|
+
type?: import('@synerise/ds-utils').LiteralStringUnion<import('@synerise/ds-button/dist/Button.types').ButtonType>;
|
|
10
|
+
mode?: import('@synerise/ds-utils').LiteralStringUnion<"single-icon" | "split" | "two-icons" | "label-icon" | "icon-label">;
|
|
11
|
+
color?: import('@synerise/ds-utils').LiteralStringUnion<"blue" | "grey" | "red" | "green" | "yellow" | "pink" | "mars" | "orange" | "fern" | "cyan" | "purple" | "violet">;
|
|
12
|
+
groupVariant?: import('@synerise/ds-utils').LiteralStringUnion<"left-rounded" | "squared" | "right-rounded">;
|
|
13
|
+
justifyContent?: string;
|
|
14
|
+
loading?: boolean | {
|
|
15
|
+
delay?: number;
|
|
16
|
+
};
|
|
17
|
+
onClick?: (event: import('react').MouseEvent<HTMLElement>) => void;
|
|
18
|
+
iconColor?: import('@synerise/ds-utils').LiteralStringUnion<"blue" | "grey" | "red" | "green" | "yellow" | "pink" | "mars" | "orange" | "fern" | "cyan" | "purple" | "violet">;
|
|
19
|
+
error?: boolean;
|
|
20
|
+
readOnly?: boolean;
|
|
21
|
+
tagProps?: import('@synerise/ds-tag').TagProps;
|
|
22
|
+
tooltipProps?: import('@synerise/ds-tooltip').TooltipProps;
|
|
23
|
+
} & import('react').RefAttributes<HTMLButtonElement>> & {
|
|
24
|
+
Creator: import('react').ForwardRefExoticComponent<Omit<import('@synerise/ds-button').CreatorProps, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
|
|
25
|
+
Expander: ({ size, expanded, disabled, onClick, className, }: import('@synerise/ds-button').ExpanderProps) => import("react").JSX.Element;
|
|
26
|
+
Star: (props: import('@synerise/ds-button').StarButtonProps) => React.ReactElement;
|
|
27
|
+
Checkbox: (props: import('@synerise/ds-button').CheckboxButtonProps) => React.ReactElement;
|
|
28
|
+
}, any, {
|
|
29
|
+
isVisible: boolean;
|
|
30
|
+
}, never>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
import Button from "@synerise/ds-button";
|
|
3
|
+
const ToggleButton = /* @__PURE__ */ styled(Button).withConfig({
|
|
4
|
+
displayName: "TableColumnSorterstyles__ToggleButton",
|
|
5
|
+
componentId: "sc-1u6djvi-0"
|
|
6
|
+
})(["", ";"], ({
|
|
7
|
+
isVisible
|
|
8
|
+
}) => isVisible ? "opacity: 1 !important;" : "");
|
|
9
|
+
export {
|
|
10
|
+
ToggleButton
|
|
11
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { flexRender } from "@tanstack/react-table";
|
|
3
|
+
import { useTableContext } from "../../contexts/TableContext.js";
|
|
4
|
+
import { isSorted } from "../../utils/sort.js";
|
|
5
|
+
import { TableColumnSorter } from "./TableColumnSorter/TableColumnSorter.js";
|
|
6
|
+
import { THead, Tr, Th, HeaderWrapper, Label } from "./TableColumns.styles.js";
|
|
7
|
+
const TableColumns = ({
|
|
8
|
+
texts,
|
|
9
|
+
disableColumnNamesLineBreak
|
|
10
|
+
}) => {
|
|
11
|
+
const {
|
|
12
|
+
table
|
|
13
|
+
} = useTableContext();
|
|
14
|
+
const headerGroups = table.getHeaderGroups();
|
|
15
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(THead, { role: "rowgroup", "data-testid": "ds-table-columns", children: headerGroups.map((headerGroup) => /* @__PURE__ */ jsx(Tr, { role: "row", children: headerGroup.headers.map((header, columnIndex) => {
|
|
16
|
+
const id = header.id;
|
|
17
|
+
const isSticky = header.column.getIsPinned();
|
|
18
|
+
const hasSorter = header.column.getCanSort();
|
|
19
|
+
const isColumnSorted = isSorted(header.column);
|
|
20
|
+
return /* @__PURE__ */ jsx(Th, { headerIndex: columnIndex, colSpan: header.colSpan, style: header.column.columnDef.meta?.style, isPinned: header.column.getIsPinned(), rightOffset: header.column.getStart("left"), leftOffset: header.column.getAfter("right"), isSorted: isColumnSorted, hasSorter, "data-sticky": isSticky ? "true" : void 0, role: "columnheader", children: /* @__PURE__ */ jsxs(HeaderWrapper, { children: [
|
|
21
|
+
/* @__PURE__ */ jsx(Label, { disableColumnNamesLineBreak, children: header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()) }),
|
|
22
|
+
hasSorter && (header.column.columnDef.meta?.renderCustomSortButton?.(header.getContext()) || /* @__PURE__ */ jsx(TableColumnSorter, { texts, column: header.column }))
|
|
23
|
+
] }) }, id);
|
|
24
|
+
}) }, headerGroup.id)) }) });
|
|
25
|
+
};
|
|
26
|
+
export {
|
|
27
|
+
TableColumns
|
|
28
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const Th: import('styled-components').StyledComponent<"th", any, {
|
|
2
|
+
isSorted?: boolean;
|
|
3
|
+
hasSorter?: boolean;
|
|
4
|
+
headerIndex?: number;
|
|
5
|
+
isPinned?: "left" | "right" | false;
|
|
6
|
+
rightOffset?: number;
|
|
7
|
+
leftOffset?: number;
|
|
8
|
+
}, never>;
|
|
9
|
+
export declare const THead: import('styled-components').StyledComponent<"thead", any, {}, never>;
|
|
10
|
+
export declare const Tr: import('styled-components').StyledComponent<"tr", any, {}, never>;
|
|
11
|
+
export declare const HeaderWrapper: import('styled-components').StyledComponent<"div", any, {}, never>;
|
|
12
|
+
export declare const Label: import('styled-components').StyledComponent<"div", any, {
|
|
13
|
+
disableColumnNamesLineBreak?: boolean;
|
|
14
|
+
}, never>;
|
|
15
|
+
export declare const TableSkeletonCell: import('styled-components').StyledComponent<"div", any, {
|
|
16
|
+
$height?: number;
|
|
17
|
+
$width?: string;
|
|
18
|
+
}, never>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import styled, { css } from "styled-components";
|
|
2
|
+
import { commonCellStyles, commonPinnedStyles, commonRowStyles } from "../../Table.styles.js";
|
|
3
|
+
import { ToggleButton } from "./TableColumnSorter/TableColumnSorter.styles.js";
|
|
4
|
+
const Th = /* @__PURE__ */ styled.th.withConfig({
|
|
5
|
+
displayName: "TableColumnsstyles__Th",
|
|
6
|
+
componentId: "sc-k8z5d0-0"
|
|
7
|
+
})(["", ";", ";height:64px;text-align:left;background-color:", ";border-bottom:solid 1px ", ";color:", ";", ";", " &{", "}"], commonCellStyles, commonPinnedStyles, (props) => props.theme.palette["white"], (props) => props.theme.palette["grey-300"], (props) => props.theme.palette["grey-700"], (props) => props.headerIndex !== void 0 && `width: var(--col-${props.headerIndex}-width)`, (props) => props.hasSorter && css(["", "{opacity:0;}&:hover{background-color:", ";border-bottom:solid 1px ", ";box-shadow:inset 0 -1px 0 ", ";", "{opacity:1;}}"], ToggleButton, props.theme.palette["grey-050"], props.theme.palette["grey-400"], props.theme.palette["grey-400"], ToggleButton), (props) => props.isSorted && css(["&{", "{opacity:1;}background-color:", ";border-bottom:solid 1px ", ";box-shadow:inset 0 -1px 0 ", ";}&:hover{background-color:", ";border-bottom:solid 1px ", ";box-shadow:inset 0 -1px 0 ", ";}"], ToggleButton, props.theme.palette["blue-050"], props.theme.palette["blue-400"], props.theme.palette["blue-400"], props.theme.palette["blue-100"], props.theme.palette["blue-600"], props.theme.palette["blue-600"]));
|
|
8
|
+
const THead = /* @__PURE__ */ styled.thead.withConfig({
|
|
9
|
+
displayName: "TableColumnsstyles__THead",
|
|
10
|
+
componentId: "sc-k8z5d0-1"
|
|
11
|
+
})([""]);
|
|
12
|
+
const Tr = /* @__PURE__ */ styled.tr.withConfig({
|
|
13
|
+
displayName: "TableColumnsstyles__Tr",
|
|
14
|
+
componentId: "sc-k8z5d0-2"
|
|
15
|
+
})(["", ""], commonRowStyles);
|
|
16
|
+
const HeaderWrapper = /* @__PURE__ */ styled.div.withConfig({
|
|
17
|
+
displayName: "TableColumnsstyles__HeaderWrapper",
|
|
18
|
+
componentId: "sc-k8z5d0-3"
|
|
19
|
+
})(["display:flex;align-items:center;justify-content:space-between;font-weight:500;"]);
|
|
20
|
+
const Label = /* @__PURE__ */ styled.div.withConfig({
|
|
21
|
+
displayName: "TableColumnsstyles__Label",
|
|
22
|
+
componentId: "sc-k8z5d0-4"
|
|
23
|
+
})(["text-overflow:ellipsis;overflow:hidden;min-width:0;flex-grow:1;white-space:", ";"], (props) => props.disableColumnNamesLineBreak ? "nowrap" : "normal");
|
|
24
|
+
const TableSkeletonCell = /* @__PURE__ */ styled.div.withConfig({
|
|
25
|
+
displayName: "TableColumnsstyles__TableSkeletonCell",
|
|
26
|
+
componentId: "sc-k8z5d0-5"
|
|
27
|
+
})(["display:flex;height:", ";width:", ";align-items:center;justify-content:flex-start;"], (props) => props.$height ? `${props.$height}px` : "auto", (props) => `${props.$width}` || "50%");
|
|
28
|
+
export {
|
|
29
|
+
HeaderWrapper,
|
|
30
|
+
Label,
|
|
31
|
+
THead,
|
|
32
|
+
TableSkeletonCell,
|
|
33
|
+
Th,
|
|
34
|
+
Tr
|
|
35
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { TableCounterProps } from '../../../Table.types';
|
|
3
|
+
export declare const TableCounter: <TData extends object, TValue>({ selectedItemsCount, texts, tableTotal, isCounterLoading, renderCustomCounter, }: TableCounterProps<TData, TValue>) => React.JSX.Element;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useDataFormat } from "@synerise/ds-core";
|
|
4
|
+
import { TableSkeleton } from "../../../Table.styles.js";
|
|
5
|
+
import { TableCounterWrapper } from "./TableCounter.styles.js";
|
|
6
|
+
const TableCounter = ({
|
|
7
|
+
selectedItemsCount,
|
|
8
|
+
texts,
|
|
9
|
+
tableTotal,
|
|
10
|
+
isCounterLoading,
|
|
11
|
+
renderCustomCounter
|
|
12
|
+
}) => {
|
|
13
|
+
const {
|
|
14
|
+
formatValue
|
|
15
|
+
} = useDataFormat();
|
|
16
|
+
const defaultCounterContent = useMemo(() => {
|
|
17
|
+
return /* @__PURE__ */ jsx(TableCounterWrapper, { children: selectedItemsCount ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18
|
+
/* @__PURE__ */ jsx("strong", { children: formatValue(selectedItemsCount) }),
|
|
19
|
+
" ",
|
|
20
|
+
/* @__PURE__ */ jsx("span", { children: texts.selected })
|
|
21
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22
|
+
/* @__PURE__ */ jsx("strong", { children: formatValue(tableTotal) }),
|
|
23
|
+
/* @__PURE__ */ jsx("span", { children: texts.totalItems })
|
|
24
|
+
] }) });
|
|
25
|
+
}, [selectedItemsCount, tableTotal, texts.totalItems, texts.selected]);
|
|
26
|
+
return /* @__PURE__ */ jsx(Fragment, { children: isCounterLoading ? /* @__PURE__ */ jsx(TableSkeleton, { numberOfSkeletons: 1, size: "S", skeletonWidth: "100px" }) : /* @__PURE__ */ jsx(Fragment, { children: renderCustomCounter ? renderCustomCounter({
|
|
27
|
+
count: tableTotal,
|
|
28
|
+
content: defaultCounterContent
|
|
29
|
+
}) : defaultCounterContent }) });
|
|
30
|
+
};
|
|
31
|
+
export {
|
|
32
|
+
TableCounter
|
|
33
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TableCounterWrapper: import('styled-components').StyledComponent<"div", any, {}, never>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
const TableCounterWrapper = /* @__PURE__ */ styled.div.withConfig({
|
|
3
|
+
displayName: "TableCounterstyles__TableCounterWrapper",
|
|
4
|
+
componentId: "sc-1n4y5bp-0"
|
|
5
|
+
})(["display:flex;align-items:center;gap:4px;"]);
|
|
6
|
+
export {
|
|
7
|
+
TableCounterWrapper
|
|
8
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { TableHeaderProps } from '../../Table.types';
|
|
3
|
+
export declare const TableHeader: <TData extends object, TValue>({ title, searchComponent, filterComponent, itemsMenu, isCounterLoading, headerButton, texts, renderSelectionTitle, renderCustomCounter, hideTitlePart, dataSourceTotalCount, isLoading, }: TableHeaderProps<TData, TValue>) => React.JSX.Element;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useEffect, useMemo } from "react";
|
|
3
|
+
import { useDataFormat } from "@synerise/ds-core";
|
|
4
|
+
import { BOTTOM_BORDER_WIDTH } from "../../Table.const.js";
|
|
5
|
+
import { TableSkeleton } from "../../Table.styles.js";
|
|
6
|
+
import { useSelectionContext } from "../../contexts/SelectionContext.js";
|
|
7
|
+
import { useStickyContext } from "../../contexts/StickyContext.js";
|
|
8
|
+
import { useTableContext } from "../../contexts/TableContext.js";
|
|
9
|
+
import { TableCounter } from "./TableCounter/TableCounter.js";
|
|
10
|
+
import { Left, TitleContainer, TitlePartEllipsis, TitleSeparator, TitlePart, Header, Right, RightSideWrapper } from "./TableHeader.styles.js";
|
|
11
|
+
import { TableHeaderSelection } from "./TableHeaderSelection/TableHeaderSelection.js";
|
|
12
|
+
import { TableLimit } from "./TableLimit/TableLimit.js";
|
|
13
|
+
const TableHeader = ({
|
|
14
|
+
title,
|
|
15
|
+
// filters,
|
|
16
|
+
searchComponent,
|
|
17
|
+
filterComponent,
|
|
18
|
+
itemsMenu,
|
|
19
|
+
isCounterLoading,
|
|
20
|
+
headerButton,
|
|
21
|
+
texts,
|
|
22
|
+
renderSelectionTitle,
|
|
23
|
+
renderCustomCounter,
|
|
24
|
+
hideTitlePart,
|
|
25
|
+
dataSourceTotalCount,
|
|
26
|
+
isLoading
|
|
27
|
+
}) => {
|
|
28
|
+
const {
|
|
29
|
+
formatValue
|
|
30
|
+
} = useDataFormat();
|
|
31
|
+
const {
|
|
32
|
+
table,
|
|
33
|
+
rowVirtualizer
|
|
34
|
+
} = useTableContext();
|
|
35
|
+
const stickyContext = useStickyContext();
|
|
36
|
+
const headerRef = useRef(null);
|
|
37
|
+
const selectionConfig = useSelectionContext();
|
|
38
|
+
const hasGlobalSelection = selectionConfig?.globalSelectionOnChange !== void 0;
|
|
39
|
+
const isGlobalSelected = hasGlobalSelection && selectionConfig?.globalSelected;
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (stickyContext && headerRef.current) {
|
|
42
|
+
const {
|
|
43
|
+
setStickyData
|
|
44
|
+
} = stickyContext;
|
|
45
|
+
setStickyData((prevValue) => ({
|
|
46
|
+
...prevValue,
|
|
47
|
+
titleBarHeight: headerRef.current ? headerRef.current.clientHeight + BOTTOM_BORDER_WIDTH : 0
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
}, []);
|
|
51
|
+
const selectedItemsCount = table.getSelectedRowModel().rows.length;
|
|
52
|
+
const tableTotal = dataSourceTotalCount ?? table.getRowCount();
|
|
53
|
+
const displayedSelectedItems = isGlobalSelected ? tableTotal : selectedItemsCount;
|
|
54
|
+
const hasSelectedItems = useMemo(() => selectedItemsCount > 0 || isGlobalSelected, [isGlobalSelected, selectedItemsCount]);
|
|
55
|
+
const renderLeftSide = useMemo(() => {
|
|
56
|
+
const {
|
|
57
|
+
hideSelectAll
|
|
58
|
+
} = selectionConfig || {};
|
|
59
|
+
if (selectionConfig && selectionConfig.limit) {
|
|
60
|
+
return /* @__PURE__ */ jsxs(Left, { "data-testid": "ds-table-selection", children: [
|
|
61
|
+
selectionConfig && !hideSelectAll && /* @__PURE__ */ jsx(TableHeaderSelection, { texts }),
|
|
62
|
+
/* @__PURE__ */ jsx(TableLimit, { selection: {
|
|
63
|
+
...selectionConfig,
|
|
64
|
+
limit: selectionConfig.limit
|
|
65
|
+
}, itemsMenu, texts, renderCustomCounter, isCounterLoading })
|
|
66
|
+
] });
|
|
67
|
+
}
|
|
68
|
+
return hasSelectedItems ? /* @__PURE__ */ jsxs(Left, { "data-testid": "ds-table-selection", children: [
|
|
69
|
+
selectionConfig && !hideSelectAll && /* @__PURE__ */ jsx(TableHeaderSelection, { texts }),
|
|
70
|
+
renderSelectionTitle ? /* @__PURE__ */ jsx(Fragment, { children: renderSelectionTitle(selectionConfig) }) : /* @__PURE__ */ jsx(TitleContainer, { children: /* @__PURE__ */ jsx(TableCounter, { selectedItemsCount: displayedSelectedItems, texts, isCounterLoading, tableTotal }) }),
|
|
71
|
+
itemsMenu
|
|
72
|
+
] }) : /* @__PURE__ */ jsxs(Left, { "data-testid": "ds-table-title", children: [
|
|
73
|
+
selectionConfig && !isLoading && !hideSelectAll && /* @__PURE__ */ jsx(TableHeaderSelection, { texts }),
|
|
74
|
+
/* @__PURE__ */ jsxs(TitleContainer, { children: [
|
|
75
|
+
isLoading && /* @__PURE__ */ jsx("div", { style: {
|
|
76
|
+
width: "100px"
|
|
77
|
+
}, children: /* @__PURE__ */ jsx(TableSkeleton, { width: "L", numberOfSkeletons: 1, skeletonWidth: "100px" }) }),
|
|
78
|
+
!isLoading && title && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
79
|
+
/* @__PURE__ */ jsx(TitlePartEllipsis, { ellipsis: {
|
|
80
|
+
tooltipProps: {
|
|
81
|
+
description: /* @__PURE__ */ jsx(Fragment, { children: title }),
|
|
82
|
+
type: "largeSimple",
|
|
83
|
+
offset: "small"
|
|
84
|
+
}
|
|
85
|
+
}, children: /* @__PURE__ */ jsx(Fragment, { children: title }) }),
|
|
86
|
+
!hideTitlePart && /* @__PURE__ */ jsx(TitleSeparator, {})
|
|
87
|
+
] }),
|
|
88
|
+
!isLoading && !hideTitlePart && /* @__PURE__ */ jsx(TitlePart, { children: /* @__PURE__ */ jsx(TableCounter, { texts, isCounterLoading, tableTotal, renderCustomCounter }) })
|
|
89
|
+
] })
|
|
90
|
+
] });
|
|
91
|
+
}, [selectionConfig, formatValue, texts, hasSelectedItems, renderSelectionTitle, isCounterLoading, selectedItemsCount, itemsMenu, isLoading, title, hideTitlePart, renderCustomCounter, tableTotal]);
|
|
92
|
+
return /* @__PURE__ */ jsxs(Header, { ref: headerRef, stickyData: stickyContext?.stickyData, "data-testid": "ds-table-header", isVirtual: !!rowVirtualizer, children: [
|
|
93
|
+
renderLeftSide,
|
|
94
|
+
/* @__PURE__ */ jsxs(Right, { children: [
|
|
95
|
+
headerButton,
|
|
96
|
+
filterComponent && /* @__PURE__ */ jsx(RightSideWrapper, { "data-testid": "ds-table-filter-wrapper", children: filterComponent }),
|
|
97
|
+
searchComponent && /* @__PURE__ */ jsx(RightSideWrapper, { "data-testid": "ds-table-search-wrapper", children: searchComponent })
|
|
98
|
+
] })
|
|
99
|
+
] });
|
|
100
|
+
};
|
|
101
|
+
export {
|
|
102
|
+
TableHeader
|
|
103
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { StickyData } from '../../Table.types';
|
|
2
|
+
export declare const Header: import('styled-components').StyledComponent<"div", any, {
|
|
3
|
+
stickyData?: StickyData;
|
|
4
|
+
isVirtual?: boolean;
|
|
5
|
+
}, never>;
|
|
6
|
+
export declare const TitleContainer: import('styled-components').StyledComponent<"div", any, {}, never>;
|
|
7
|
+
export declare const TitlePartEllipsis: import('styled-components').StyledComponent<({ size, className, children, ellipsis, style, }: {
|
|
8
|
+
size?: import('@synerise/ds-typography').TextSize;
|
|
9
|
+
ellipsis?: import('@synerise/ds-typography/dist/Ellipsis').EllipsisProps;
|
|
10
|
+
children?: import('react').ReactNode;
|
|
11
|
+
className?: string;
|
|
12
|
+
style?: import('react').CSSProperties;
|
|
13
|
+
}) => React.JSX.Element, any, {}, never>;
|
|
14
|
+
export declare const TitlePart: import('styled-components').StyledComponent<"span", any, {}, never>;
|
|
15
|
+
export declare const TitleSeparator: import('styled-components').StyledComponent<"span", any, {}, never>;
|
|
16
|
+
export declare const Left: import('styled-components').StyledComponent<"div", any, {}, never>;
|
|
17
|
+
export declare const Right: import('styled-components').StyledComponent<"div", any, {}, never>;
|
|
18
|
+
export declare const RightSideWrapper: import('styled-components').StyledComponent<"div", any, {}, never>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import styled, { css } from "styled-components";
|
|
2
|
+
import { macro, Text } from "@synerise/ds-typography";
|
|
3
|
+
const Header = /* @__PURE__ */ styled.div.withConfig({
|
|
4
|
+
displayName: "TableHeaderstyles__Header",
|
|
5
|
+
componentId: "sc-2szivb-0"
|
|
6
|
+
})(["background:", ";padding:20px 24px;", " display:flex;border-radius:3px 3px 0 0;justify-content:space-between;border-bottom:1px solid ", ";", ""], (props) => props.theme.palette["white"], (props) => props.isVirtual && `min-height: 73px;`, (props) => props.theme.palette["grey-200"], ({
|
|
7
|
+
stickyData
|
|
8
|
+
}) => stickyData && css(["transition:top 0.3s ease-in-out;position:sticky;top:", ";z-index:12;"], stickyData.isRevealed ? `-${stickyData.containerPaddingTop}px` : `-${stickyData.titleBarHeight + stickyData.containerPaddingTop}px`));
|
|
9
|
+
const TitleContainer = /* @__PURE__ */ styled.div.withConfig({
|
|
10
|
+
displayName: "TableHeaderstyles__TitleContainer",
|
|
11
|
+
componentId: "sc-2szivb-1"
|
|
12
|
+
})(["display:flex;max-width:100%;min-width:0;align-items:center;", ";color:", ";padding:0 24px 0 0;strong{font-weight:500;}"], macro.small, (props) => props.theme.palette["grey-700"]);
|
|
13
|
+
const TitlePartEllipsis = /* @__PURE__ */ styled(Text).withConfig({
|
|
14
|
+
displayName: "TableHeaderstyles__TitlePartEllipsis",
|
|
15
|
+
componentId: "sc-2szivb-2"
|
|
16
|
+
})(["font-weight:500;"]);
|
|
17
|
+
const TitlePart = /* @__PURE__ */ styled.span.withConfig({
|
|
18
|
+
displayName: "TableHeaderstyles__TitlePart",
|
|
19
|
+
componentId: "sc-2szivb-3"
|
|
20
|
+
})(["display:flex;align-items:center;gap:4px;"]);
|
|
21
|
+
const TitleSeparator = /* @__PURE__ */ styled.span.withConfig({
|
|
22
|
+
displayName: "TableHeaderstyles__TitleSeparator",
|
|
23
|
+
componentId: "sc-2szivb-4"
|
|
24
|
+
})(["display:inline-block;vertical-align:middle;flex-shrink:0;width:1px;height:16px;margin:1px 12px 0px 12px;background:", ";"], ({
|
|
25
|
+
theme
|
|
26
|
+
}) => theme.palette["grey-200"]);
|
|
27
|
+
const Left = /* @__PURE__ */ styled.div.withConfig({
|
|
28
|
+
displayName: "TableHeaderstyles__Left",
|
|
29
|
+
componentId: "sc-2szivb-5"
|
|
30
|
+
})(["display:flex;align-items:center;min-width:0;"]);
|
|
31
|
+
const Right = /* @__PURE__ */ styled.div.withConfig({
|
|
32
|
+
displayName: "TableHeaderstyles__Right",
|
|
33
|
+
componentId: "sc-2szivb-6"
|
|
34
|
+
})(["display:flex;align-items:center;justify-content:flex-start;gap:8px;> *{min-width:32px;}&&& .ds-button.btn-search{min-width:unset;}"]);
|
|
35
|
+
const RightSideWrapper = /* @__PURE__ */ styled.div.withConfig({
|
|
36
|
+
displayName: "TableHeaderstyles__RightSideWrapper",
|
|
37
|
+
componentId: "sc-2szivb-7"
|
|
38
|
+
})([""]);
|
|
39
|
+
export {
|
|
40
|
+
Header,
|
|
41
|
+
Left,
|
|
42
|
+
Right,
|
|
43
|
+
RightSideWrapper,
|
|
44
|
+
TitleContainer,
|
|
45
|
+
TitlePart,
|
|
46
|
+
TitlePartEllipsis,
|
|
47
|
+
TitleSeparator
|
|
48
|
+
};
|