@geotab/zenith 3.8.0 → 3.9.0-beta.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/README.md +11 -12
- package/dist/button/button.d.ts +2 -1
- package/dist/button/button.js +3 -3
- package/dist/calendar/calendar.js +200 -3
- package/dist/card/card.d.ts +1 -1
- package/dist/card/card.js +1 -1
- package/dist/card/components/cardButton/cardButton.d.ts +2 -1
- package/dist/card/components/cardButton/cardButton.js +5 -3
- package/dist/card/helpers/getIconTypeFromStatus.d.ts +1 -1
- package/dist/chart/barChart/getBarLegendItems.js +3 -5
- package/dist/chart/lineChart/getLineLegendItems.js +7 -7
- package/dist/chart/pieChart/centerTextPlugin.js +13 -5
- package/dist/chart/pieChart/getPieLegendItems.js +8 -12
- package/dist/chart/pieChart.js +13 -11
- package/dist/chart/plugins/legend/interfaces.d.ts +1 -1
- package/dist/commonHelpers/generateId.d.ts +8 -0
- package/dist/commonHelpers/generateId.js +8 -0
- package/dist/commonHelpers/hooks/ssrProvider.d.ts +14 -0
- package/dist/commonHelpers/hooks/ssrProvider.js +12 -0
- package/dist/commonHelpers/hooks/useClientReady.js +3 -1
- package/dist/commonHelpers/hooks/useDeviceType.js +6 -2
- package/dist/commonHelpers/hooks/useIsomorphicLayoutEffect.d.ts +2 -0
- package/dist/commonHelpers/hooks/useIsomorphicLayoutEffect.js +6 -0
- package/dist/commonHelpers/hooks/useMobile.js +4 -3
- package/dist/commonHelpers/hooks/usePortal.js +2 -5
- package/dist/commonHelpers/isDomEnv.js +1 -2
- package/dist/commonHelpers/useUniqueId.d.ts +6 -0
- package/dist/commonHelpers/useUniqueId.js +8 -2
- package/dist/commonHelpers/utils.d.ts +0 -1
- package/dist/commonHelpers/utils.js +1 -3
- package/dist/commonStyles/common.less +13 -1
- package/dist/commonStyles/fonts/notosarabic/LICENSE.txt +93 -0
- package/dist/commonStyles/fonts/notosarabic/NotoSansArabic-Bold.woff +0 -0
- package/dist/commonStyles/fonts/notosarabic/NotoSansArabic-Bold.woff2 +0 -0
- package/dist/commonStyles/fonts/notosarabic/NotoSansArabic-Medium.woff +0 -0
- package/dist/commonStyles/fonts/notosarabic/NotoSansArabic-Medium.woff2 +0 -0
- package/dist/commonStyles/fonts/notosarabic/NotoSansArabic-Regular.woff +0 -0
- package/dist/commonStyles/fonts/notosarabic/NotoSansArabic-Regular.woff2 +0 -0
- package/dist/commonStyles/fonts/notosarabic/NotoSansArabic-SemiBold.woff +0 -0
- package/dist/commonStyles/fonts/notosarabic/NotoSansArabic-SemiBold.woff2 +0 -0
- package/dist/commonStyles/fonts/notosarabic.less +43 -0
- package/dist/commonStyles/pillStyles/pillContent.less +2 -3
- package/dist/commonStyles/pillStyles/pillStyles.less +1 -2
- package/dist/commonStyles/pillStyles/pillTextContent.less +2 -2
- package/dist/commonStyles/typography/typography.less +440 -305
- package/dist/dataGrid/withSelectableRows/components/bulkActions/bulkActions.d.ts +5 -3
- package/dist/dataGrid/withSelectableRows/components/bulkActions/bulkActions.js +2 -38
- package/dist/dateInputInner/dateInputInnerControlBlock.js +12 -8
- package/dist/dateRangeRaw/dateRangeRaw.js +5 -1
- package/dist/dialog/dialog.js +4 -3
- package/dist/feedbackContainer/feedbackContainer.js +4 -4
- package/dist/fileUpload/fileUpload.js +21 -12
- package/dist/filters/components/filtersSidePanel.d.ts +1 -1
- package/dist/filters/components/filtersSidePanel.js +123 -116
- package/dist/filters/filters.js +1 -2
- package/dist/filtersBar/filtersBar.d.ts +2 -0
- package/dist/filtersBar/filtersBar.js +5 -3
- package/dist/filtersBar/filtersBarActions/filtersBarActions.js +3 -1
- package/dist/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +3 -0
- package/dist/filtersBar/filtersBarSidePanel/filtersBarSidePanel.d.ts +1 -1
- package/dist/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +86 -80
- package/dist/formFieldError/formFieldError.d.ts +2 -1
- package/dist/formFieldError/formFieldError.js +2 -2
- package/dist/header/components/collapsedItemsControl/utils/handleCustomMenuWrapper.js +1 -1
- package/dist/index.css +3210 -2238
- package/dist/index.d.ts +3 -5
- package/dist/index.js +24 -29
- package/dist/menu/components/menuItem.js +4 -4
- package/dist/menu/controlledMenu.js +4 -4
- package/dist/nav/nav.js +10 -5
- package/dist/nav/navAddMenu/navAddMenu.js +1 -2
- package/dist/nav/navEditList/navEditListUtils.d.ts +1 -1
- package/dist/nav/navEditList/navEditListUtils.js +2 -1
- package/dist/nav/navItem/navActionItem.js +3 -3
- package/dist/nav/navItem/navItem.js +1 -2
- package/dist/pageHeader/pageHeaderActions.js +4 -3
- package/dist/rangeRaw/rangeRaw.js +7 -1
- package/dist/selectList/selectList.js +11 -7
- package/dist/selectRaw/selectRaw.js +1 -1
- package/dist/shield/shield.js +5 -3
- package/dist/sidePanel/sidePanel.js +9 -8
- package/dist/table/children/useTableChildren.d.ts +1 -1
- package/dist/table/children/useTableChildren.js +3 -3
- package/dist/table/flexible/useFlexibleColumns.js +39 -1
- package/dist/table/nested/useNestedRows.d.ts +1 -0
- package/dist/table/nested/useNestedRows.js +3 -3
- package/dist/table/selectable/useSelectableRows.d.ts +9 -0
- package/dist/table/selectable/useSelectableRows.js +18 -11
- package/dist/table/table.js +1 -7
- package/dist/{card/components → title}/title.d.ts +1 -1
- package/dist/title/title.js +27 -0
- package/dist/toggleButtonRaw/toggleButtonRaw.js +3 -1
- package/dist/toggleButtonRaw/types.d.ts +1 -0
- package/dist/tooltip/tooltip.d.ts +2 -1
- package/dist/tooltip/tooltip.js +68 -64
- package/dist/utils/localization/directionContext.d.ts +3 -0
- package/dist/utils/localization/directionContext.js +5 -0
- package/dist/utils/localization/getTextDirection.d.ts +2 -0
- package/dist/utils/localization/getTextDirection.js +6 -0
- package/dist/utils/localization/languageProvider.js +15 -1
- package/dist/utils/localization/translations/en-json.d.ts +2 -0
- package/dist/utils/localization/translations/en-json.js +3 -1
- package/dist/utils/localization/translations/en.json +3 -0
- package/dist/utils/localization/useDirection.d.ts +2 -0
- package/dist/utils/localization/useDirection.js +7 -0
- package/esm/button/button.d.ts +2 -1
- package/esm/button/button.js +3 -3
- package/esm/calendar/calendar.js +200 -3
- package/esm/card/card.d.ts +1 -1
- package/esm/card/card.js +1 -1
- package/esm/card/components/cardButton/cardButton.d.ts +2 -1
- package/esm/card/components/cardButton/cardButton.js +5 -3
- package/esm/card/helpers/getIconTypeFromStatus.d.ts +1 -1
- package/esm/chart/barChart/getBarLegendItems.js +3 -5
- package/esm/chart/lineChart/getLineLegendItems.js +7 -7
- package/esm/chart/pieChart/centerTextPlugin.js +13 -5
- package/esm/chart/pieChart/getPieLegendItems.js +8 -12
- package/esm/chart/pieChart.js +14 -12
- package/esm/chart/plugins/legend/interfaces.d.ts +1 -1
- package/esm/commonHelpers/generateId.d.ts +8 -0
- package/esm/commonHelpers/generateId.js +8 -0
- package/esm/commonHelpers/hooks/ssrProvider.d.ts +14 -0
- package/esm/commonHelpers/hooks/ssrProvider.js +6 -0
- package/esm/commonHelpers/hooks/useClientReady.js +4 -2
- package/esm/commonHelpers/hooks/useDeviceType.js +7 -3
- package/esm/commonHelpers/hooks/useIsomorphicLayoutEffect.d.ts +2 -0
- package/esm/commonHelpers/hooks/useIsomorphicLayoutEffect.js +3 -0
- package/esm/commonHelpers/hooks/useMobile.js +4 -3
- package/esm/commonHelpers/hooks/usePortal.js +2 -5
- package/esm/commonHelpers/isDomEnv.js +1 -2
- package/esm/commonHelpers/useUniqueId.d.ts +6 -0
- package/esm/commonHelpers/useUniqueId.js +7 -1
- package/esm/commonHelpers/utils.d.ts +0 -1
- package/esm/commonHelpers/utils.js +0 -1
- package/esm/dataGrid/withSelectableRows/components/bulkActions/bulkActions.d.ts +5 -3
- package/esm/dataGrid/withSelectableRows/components/bulkActions/bulkActions.js +2 -38
- package/esm/dateInputInner/dateInputInnerControlBlock.js +13 -9
- package/esm/dateRangeRaw/dateRangeRaw.js +5 -1
- package/esm/dialog/dialog.js +4 -3
- package/esm/feedbackContainer/feedbackContainer.js +4 -4
- package/esm/fileUpload/fileUpload.js +21 -12
- package/esm/filters/components/filtersSidePanel.d.ts +1 -1
- package/esm/filters/components/filtersSidePanel.js +123 -116
- package/esm/filters/filters.js +2 -3
- package/esm/filtersBar/filtersBar.d.ts +2 -0
- package/esm/filtersBar/filtersBar.js +5 -3
- package/esm/filtersBar/filtersBarActions/filtersBarActions.js +3 -1
- package/esm/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +3 -0
- package/esm/filtersBar/filtersBarSidePanel/filtersBarSidePanel.d.ts +1 -1
- package/esm/filtersBar/filtersBarSidePanel/filtersBarSidePanel.js +86 -80
- package/esm/formFieldError/formFieldError.d.ts +2 -1
- package/esm/formFieldError/formFieldError.js +2 -2
- package/esm/header/components/collapsedItemsControl/utils/handleCustomMenuWrapper.js +1 -1
- package/esm/index.d.ts +3 -5
- package/esm/index.js +3 -5
- package/esm/menu/components/menuItem.js +1 -1
- package/esm/menu/controlledMenu.js +1 -1
- package/esm/nav/nav.js +10 -5
- package/esm/nav/navAddMenu/navAddMenu.js +2 -3
- package/esm/nav/navEditList/navEditListUtils.d.ts +1 -1
- package/esm/nav/navEditList/navEditListUtils.js +2 -1
- package/esm/nav/navItem/navActionItem.js +3 -2
- package/esm/nav/navItem/navItem.js +2 -3
- package/esm/pageHeader/pageHeaderActions.js +4 -3
- package/esm/rangeRaw/rangeRaw.js +7 -1
- package/esm/selectList/selectList.js +11 -7
- package/esm/selectRaw/selectRaw.js +1 -1
- package/esm/shield/shield.js +5 -3
- package/esm/sidePanel/sidePanel.js +9 -8
- package/esm/table/children/useTableChildren.d.ts +1 -1
- package/esm/table/children/useTableChildren.js +3 -3
- package/esm/table/flexible/useFlexibleColumns.js +39 -1
- package/esm/table/nested/useNestedRows.d.ts +1 -0
- package/esm/table/nested/useNestedRows.js +1 -1
- package/esm/table/selectable/useSelectableRows.d.ts +9 -0
- package/esm/table/selectable/useSelectableRows.js +15 -8
- package/esm/table/table.js +1 -7
- package/esm/{card/components → title}/title.d.ts +1 -1
- package/esm/title/title.js +23 -0
- package/esm/toggleButtonRaw/toggleButtonRaw.js +3 -1
- package/esm/toggleButtonRaw/types.d.ts +1 -0
- package/esm/tooltip/tooltip.d.ts +2 -1
- package/esm/tooltip/tooltip.js +68 -64
- package/esm/utils/localization/directionContext.d.ts +3 -0
- package/esm/utils/localization/directionContext.js +2 -0
- package/esm/utils/localization/getTextDirection.d.ts +2 -0
- package/esm/utils/localization/getTextDirection.js +2 -0
- package/esm/utils/localization/languageProvider.js +15 -1
- package/esm/utils/localization/translations/en-json.d.ts +2 -0
- package/esm/utils/localization/translations/en-json.js +3 -1
- package/esm/utils/localization/translations/en.json +3 -0
- package/esm/utils/localization/useDirection.d.ts +2 -0
- package/esm/utils/localization/useDirection.js +3 -0
- package/package.json +33 -31
- package/dist/card/components/title.js +0 -22
- package/dist/commonHelpers/hooks/deviceProvider.d.ts +0 -7
- package/dist/commonHelpers/hooks/deviceProvider.js +0 -11
- package/esm/card/components/title.js +0 -18
- package/esm/commonHelpers/hooks/deviceProvider.d.ts +0 -7
- package/esm/commonHelpers/hooks/deviceProvider.js +0 -4
|
@@ -27,7 +27,7 @@ const isChildElement = function (child, expectedType) {
|
|
|
27
27
|
}
|
|
28
28
|
return false;
|
|
29
29
|
};
|
|
30
|
-
const useTableChildren = (children, isMobile, selected, allSelected, clearSelection,
|
|
30
|
+
const useTableChildren = (children, isMobile, selected, allSelected, clearSelection, activeId, gridRef, onCloseDetailPanel) => (0, react_1.useMemo)(() => {
|
|
31
31
|
let bulkActions = undefined;
|
|
32
32
|
let tablePagination = undefined;
|
|
33
33
|
let activePage = undefined;
|
|
@@ -42,7 +42,7 @@ const useTableChildren = (children, isMobile, selected, allSelected, clearSelect
|
|
|
42
42
|
}
|
|
43
43
|
if (isChildElement(child, tableBulkActions_1.TableBulkActions.displayName)) {
|
|
44
44
|
const bulkActionButtons = child.props.children || [];
|
|
45
|
-
bulkActions = ((0, jsx_runtime_1.jsx)(bulkActions_1.BulkActions, { gridType: isMobile ? deviceType_1.DeviceType.Mobile : deviceType_1.DeviceType.Desktop, selected: selected, allSelected: allSelected, onClearSelection: clearSelection,
|
|
45
|
+
bulkActions = ((0, jsx_runtime_1.jsx)(bulkActions_1.BulkActions, { gridType: isMobile ? deviceType_1.DeviceType.Mobile : deviceType_1.DeviceType.Desktop, selected: selected, allSelected: allSelected, onClearSelection: clearSelection, children: bulkActionButtons }));
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
48
|
if (isChildElement(child, tablePagination_1.TablePagination.displayName)) {
|
|
@@ -103,5 +103,5 @@ const useTableChildren = (children, isMobile, selected, allSelected, clearSelect
|
|
|
103
103
|
detailPanel: detailPanel,
|
|
104
104
|
other: other
|
|
105
105
|
};
|
|
106
|
-
}, [children, clearSelection, isMobile, selected, gridRef, allSelected,
|
|
106
|
+
}, [children, clearSelection, isMobile, selected, gridRef, allSelected, activeId, onCloseDetailPanel]);
|
|
107
107
|
exports.useTableChildren = useTableChildren;
|
|
@@ -13,6 +13,8 @@ const columnSettingsStorage_1 = require("./columnSettingsStorage");
|
|
|
13
13
|
const actionsColumn_1 = require("../../dataGrid/columns/actionsColumn/actionsColumn");
|
|
14
14
|
const mergeColumnSettings_1 = require("./mergeColumnSettings");
|
|
15
15
|
const zen_1 = require("../../utils/zen");
|
|
16
|
+
const useSelectableRows_1 = require("../selectable/useSelectableRows");
|
|
17
|
+
const useNestedRows_1 = require("../nested/useNestedRows");
|
|
16
18
|
const getColumnSettings = (pageName, defaultValue) => {
|
|
17
19
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
18
20
|
const storage = new columnSettingsStorage_1.ColumnSettingsStorage(pageName || "", zen_1.zen === null || zen_1.zen === void 0 ? void 0 : zen_1.zen.localStorage, defaultValue);
|
|
@@ -46,11 +48,12 @@ const useFlexibleColumns = (columns, flexible, gridRef, columnsPopupRef, isFeed)
|
|
|
46
48
|
onChangeColumnSettings(newSettings);
|
|
47
49
|
}, [onChangeColumnSettings, saveSettingsToTheStorage]);
|
|
48
50
|
const flexibleColumns = (0, react_1.useMemo)(() => {
|
|
51
|
+
var _a, _b, _c, _d, _e;
|
|
49
52
|
if (!flexible) {
|
|
50
53
|
return columns;
|
|
51
54
|
}
|
|
52
55
|
const visibleColumnsMap = new Map(columns.map(c => [c.id, c]));
|
|
53
|
-
|
|
56
|
+
const result = columnSettings
|
|
54
57
|
.map((s, index) => {
|
|
55
58
|
var _a;
|
|
56
59
|
const column = visibleColumnsMap.get(s.name);
|
|
@@ -67,6 +70,41 @@ const useFlexibleColumns = (columns, flexible, gridRef, columnsPopupRef, isFeed)
|
|
|
67
70
|
return Object.assign(Object.assign({}, column), { meta: Object.assign(Object.assign({}, (column.meta || {})), { defaultWidth: width }), wrappers: [...wrappers, wrapper] });
|
|
68
71
|
})
|
|
69
72
|
.filter(c => c !== undefined);
|
|
73
|
+
// Ensure selectable and nested wrappers are always on the first visible column
|
|
74
|
+
if (result.length > 0) {
|
|
75
|
+
const pinnedWrapperWidth = 32;
|
|
76
|
+
let widthDelta = 0;
|
|
77
|
+
let donorCol = undefined;
|
|
78
|
+
for (const wrapperName of [useNestedRows_1.NestedWrapperName, useSelectableRows_1.SelectableWrapperName]) {
|
|
79
|
+
if ((_a = result[0].wrappers) === null || _a === void 0 ? void 0 : _a.some(w => w.name === wrapperName)) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
let pinnedWrapper;
|
|
83
|
+
for (const col of result.slice(1)) {
|
|
84
|
+
if (col.wrappers) {
|
|
85
|
+
const found = col.wrappers.find(w => w.name === wrapperName);
|
|
86
|
+
if (found) {
|
|
87
|
+
pinnedWrapper = found;
|
|
88
|
+
donorCol = donorCol !== null && donorCol !== void 0 ? donorCol : col;
|
|
89
|
+
widthDelta += pinnedWrapperWidth;
|
|
90
|
+
col.wrappers = col.wrappers.filter(w => w.name !== wrapperName);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (pinnedWrapper) {
|
|
96
|
+
result[0].wrappers = [...(result[0].wrappers || []), pinnedWrapper];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (widthDelta > 0) {
|
|
100
|
+
result[0] = Object.assign(Object.assign({}, result[0]), { meta: Object.assign(Object.assign({}, (result[0].meta || {})), { defaultWidth: ((_c = (_b = result[0].meta) === null || _b === void 0 ? void 0 : _b.defaultWidth) !== null && _c !== void 0 ? _c : 0) + widthDelta }) });
|
|
101
|
+
if (donorCol) {
|
|
102
|
+
const donorIndex = result.indexOf(donorCol);
|
|
103
|
+
result[donorIndex] = Object.assign(Object.assign({}, donorCol), { meta: Object.assign(Object.assign({}, (donorCol.meta || {})), { defaultWidth: Math.max(0, ((_e = (_d = donorCol.meta) === null || _d === void 0 ? void 0 : _d.defaultWidth) !== null && _e !== void 0 ? _e : 0) - widthDelta) }) });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
70
108
|
}, [columnSettings, columns, flexible]);
|
|
71
109
|
const columnsPopup = (0, react_1.useMemo)(() => {
|
|
72
110
|
if (!flexible) {
|
|
@@ -3,6 +3,7 @@ import { IListColumn } from "../../dataGrid/listColumn";
|
|
|
3
3
|
import { IRowEntity } from "../../dataGrid/row/row";
|
|
4
4
|
import "./nestedButton.less";
|
|
5
5
|
import { IEntityWithId } from "../../commonHelpers/entity";
|
|
6
|
+
export declare const NestedWrapperName = "Nested";
|
|
6
7
|
export declare const useNestedRows: <T extends IRowEntity<N>, N extends IEntityWithId>(expandedRows: string[] | undefined, onExpand: ((id: string, isExpanded: boolean) => void) | undefined, columns: IListColumn<T, N>[], isMobile: boolean) => {
|
|
7
8
|
nestedColumns: {
|
|
8
9
|
id: string;
|
|
@@ -6,7 +6,7 @@ const {
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", {
|
|
7
7
|
value: true
|
|
8
8
|
});
|
|
9
|
-
exports.useNestedRows = void 0;
|
|
9
|
+
exports.useNestedRows = exports.NestedWrapperName = void 0;
|
|
10
10
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
11
11
|
const react_1 = require("react");
|
|
12
12
|
const iconChevronTop_1 = require("../../icons/iconChevronTop");
|
|
@@ -66,7 +66,7 @@ injectString("zh-TW", "Expand", "\u5C55\u958B");
|
|
|
66
66
|
injectString("ro-RO", "Expand", "Extinde\u021Bi");
|
|
67
67
|
injectString("ar-SA", "Expand", "\u062A\u0648\u0633\u064A\u0639");
|
|
68
68
|
const useLanguage_1 = require("../../utils/localization/useLanguage");
|
|
69
|
-
|
|
69
|
+
exports.NestedWrapperName = "Nested";
|
|
70
70
|
const useNestedRows = (expandedRows, onExpand, columns, isMobile) => {
|
|
71
71
|
const {
|
|
72
72
|
translate
|
|
@@ -91,7 +91,7 @@ const useNestedRows = (expandedRows, onExpand, columns, isMobile) => {
|
|
|
91
91
|
}, [intExpanded, onExpand]);
|
|
92
92
|
const firstColumnId = (0, react_1.useMemo)(() => columns.length > 0 ? columns[0].id : null, [columns]);
|
|
93
93
|
const wrapper = (0, react_1.useMemo)(() => ({
|
|
94
|
-
name: NestedWrapperName,
|
|
94
|
+
name: exports.NestedWrapperName,
|
|
95
95
|
render(value, entity, isNested) {
|
|
96
96
|
if (!entity) {
|
|
97
97
|
return null;
|
|
@@ -16,6 +16,14 @@ export interface ISelectableRowsOptions<T extends IRowEntity<N>, N extends IEnti
|
|
|
16
16
|
checkboxTitle?: (entity: T | N) => string;
|
|
17
17
|
headerTitle?: (state: SelectionState) => string;
|
|
18
18
|
turnOffSelectAll?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* When `true`, the header checkbox emits the current page's IDs instead of `{ all: true }`.
|
|
21
|
+
* When `undefined`, falls back to `turnOffSelectAll` for backward compatibility.
|
|
22
|
+
*
|
|
23
|
+
* Note: avoid setting this to `false` alongside `turnOffSelectAll: true` — the checkbox
|
|
24
|
+
* will emit `{ all: true }` while the dropdown hides the "Select all" option, which is inconsistent.
|
|
25
|
+
*/
|
|
26
|
+
checkboxSelectsCurrentPage?: boolean;
|
|
19
27
|
checkboxPlaceholder?: boolean;
|
|
20
28
|
strategy?: TSelectionStrategy;
|
|
21
29
|
selectAll?: boolean;
|
|
@@ -24,6 +32,7 @@ export declare const getEmptySelection: () => {
|
|
|
24
32
|
all: boolean;
|
|
25
33
|
selected: string[];
|
|
26
34
|
};
|
|
35
|
+
export declare const SelectableWrapperName = "Selectable";
|
|
27
36
|
export declare const useSelectableRows: <T extends IRowEntity<N>, N extends IEntityWithId>(columns: IListColumn<T, N>[], entities: T[], isMobile: boolean, selectMode: boolean, setSelectMode: (value: boolean) => void, selectable?: ISelectableRowsOptions<T, N>) => {
|
|
28
37
|
selectableColumns: IListColumn<T, N>[];
|
|
29
38
|
selectableFeedWrapper: (primaryData: ReactNode, secondaryData: ReactNode, entity: T | N, isNested: boolean) => [ReactNode, ReactNode];
|
|
@@ -6,7 +6,7 @@ const {
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", {
|
|
7
7
|
value: true
|
|
8
8
|
});
|
|
9
|
-
exports.TRANSLATIONS = exports.useSelectableRows = exports.getEmptySelection = void 0;
|
|
9
|
+
exports.TRANSLATIONS = exports.useSelectableRows = exports.SelectableWrapperName = exports.getEmptySelection = void 0;
|
|
10
10
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
11
11
|
const react_1 = require("react");
|
|
12
12
|
const interfaces_1 = require("./interfaces");
|
|
@@ -77,7 +77,7 @@ const getEmptySelection = () => ({
|
|
|
77
77
|
selected: []
|
|
78
78
|
});
|
|
79
79
|
exports.getEmptySelection = getEmptySelection;
|
|
80
|
-
|
|
80
|
+
exports.SelectableWrapperName = "Selectable";
|
|
81
81
|
const useSelectableRows = (columns, entities, isMobile, selectMode, setSelectMode, selectable) => {
|
|
82
82
|
var _a;
|
|
83
83
|
const {
|
|
@@ -166,7 +166,6 @@ const useSelectableRows = (columns, entities, isMobile, selectMode, setSelectMod
|
|
|
166
166
|
return;
|
|
167
167
|
}
|
|
168
168
|
const newSelections = (0, getCurrentPageSelection_1.getCurrentPageSelection)(entities, selectable);
|
|
169
|
-
setState(newState);
|
|
170
169
|
const newValue = {
|
|
171
170
|
selected: [...newSelections],
|
|
172
171
|
all: false
|
|
@@ -185,12 +184,20 @@ const useSelectableRows = (columns, entities, isMobile, selectMode, setSelectMod
|
|
|
185
184
|
return translate("Deselect all");
|
|
186
185
|
}, [selectable, selectableState, state, translate]);
|
|
187
186
|
const isEntityChecked = (0, react_1.useCallback)((entity, isNested) => (0, isRowChecked_1.isRowChecked)(selections, state, selectable === null || selectable === void 0 ? void 0 : selectable.strategy, entity, isNested), [selections, state, selectable === null || selectable === void 0 ? void 0 : selectable.strategy]);
|
|
187
|
+
const hasSelectable = !!selectable;
|
|
188
|
+
const selectableCheckboxSelectsCurrentPage = selectable === null || selectable === void 0 ? void 0 : selectable.checkboxSelectsCurrentPage;
|
|
189
|
+
const selectableTurnOffSelectAll = selectable === null || selectable === void 0 ? void 0 : selectable.turnOffSelectAll;
|
|
190
|
+
const selectableCheckboxInHeader = selectable === null || selectable === void 0 ? void 0 : selectable.checkboxInHeader;
|
|
191
|
+
const selectableSelectionLimit = selectable === null || selectable === void 0 ? void 0 : selectable.selectionLimit;
|
|
192
|
+
const selectableHeader = selectable === null || selectable === void 0 ? void 0 : selectable.header;
|
|
193
|
+
const checkboxEmitsCurrentPage = selectableCheckboxSelectsCurrentPage !== null && selectableCheckboxSelectsCurrentPage !== void 0 ? selectableCheckboxSelectsCurrentPage : selectableTurnOffSelectAll;
|
|
194
|
+
const checkboxInHeaderValue = selectableCheckboxInHeader !== undefined ? selectableCheckboxInHeader : selectableSelectionLimit !== undefined ? false : undefined;
|
|
188
195
|
const wrapper = (0, react_1.useMemo)(() => {
|
|
189
|
-
if (!
|
|
196
|
+
if (!hasSelectable) {
|
|
190
197
|
return null;
|
|
191
198
|
}
|
|
192
199
|
return {
|
|
193
|
-
name: SelectableWrapperName,
|
|
200
|
+
name: exports.SelectableWrapperName,
|
|
194
201
|
render(value, entity, isNested) {
|
|
195
202
|
if (!entity) {
|
|
196
203
|
return null;
|
|
@@ -228,23 +235,23 @@ const useSelectableRows = (columns, entities, isMobile, selectMode, setSelectMod
|
|
|
228
235
|
checked: state === interfaces_1.SelectionState.CurrentPage || state === interfaces_1.SelectionState.All,
|
|
229
236
|
indeterminate: state === interfaces_1.SelectionState.Partial,
|
|
230
237
|
onChange: newValue => {
|
|
231
|
-
const newState = newValue ?
|
|
238
|
+
const newState = newValue ? checkboxEmitsCurrentPage ? interfaces_1.SelectionState.CurrentPage : interfaces_1.SelectionState.All : interfaces_1.SelectionState.None;
|
|
232
239
|
setState(newState);
|
|
233
240
|
onChangeSelectionState(newState);
|
|
234
241
|
},
|
|
235
242
|
calculateSelectionState: () => selectableState,
|
|
236
|
-
checkboxInHeader:
|
|
237
|
-
header:
|
|
243
|
+
checkboxInHeader: checkboxInHeaderValue,
|
|
244
|
+
header: selectableHeader,
|
|
238
245
|
onSelect: newState => {
|
|
239
246
|
setState(newState);
|
|
240
247
|
onChangeSelectionState(newState);
|
|
241
248
|
},
|
|
242
|
-
turnOffSelectAll:
|
|
249
|
+
turnOffSelectAll: selectableTurnOffSelectAll
|
|
243
250
|
});
|
|
244
251
|
return cell;
|
|
245
252
|
}
|
|
246
253
|
};
|
|
247
|
-
}, [checkboxDisabled, checkboxTitle, checkboxVisible, headerTitle, onChangeSelectionState, onSelectListener,
|
|
254
|
+
}, [checkboxDisabled, checkboxTitle, checkboxVisible, headerTitle, onChangeSelectionState, onSelectListener, hasSelectable, checkboxEmitsCurrentPage, checkboxInHeaderValue, selectableHeader, selectableTurnOffSelectAll, selectableState, state, isMobile, checkboxPlaceholder, isEntityChecked]);
|
|
248
255
|
const selectableFeedWrapper = (0, react_1.useCallback)((primaryData, secondaryData, entity, isNested) => {
|
|
249
256
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
250
257
|
if (!entity) {
|
|
@@ -284,7 +291,7 @@ const useSelectableRows = (columns, entities, isMobile, selectMode, setSelectMod
|
|
|
284
291
|
// Remove CheckboxColumnWrappers from wrappers list
|
|
285
292
|
newColumns.forEach(c => {
|
|
286
293
|
if (c.wrappers) {
|
|
287
|
-
c.wrappers = c.wrappers.filter(w => w.name !== SelectableWrapperName);
|
|
294
|
+
c.wrappers = c.wrappers.filter(w => w.name !== exports.SelectableWrapperName);
|
|
288
295
|
}
|
|
289
296
|
});
|
|
290
297
|
// Add selectable wrappers of the first column
|
package/dist/table/table.js
CHANGED
|
@@ -225,12 +225,6 @@ const TableInner = ({
|
|
|
225
225
|
selected: []
|
|
226
226
|
});
|
|
227
227
|
}, [selectable]);
|
|
228
|
-
const selectAll = (0, react_1.useCallback)(() => {
|
|
229
|
-
selectable === null || selectable === void 0 ? void 0 : selectable.onSelect({
|
|
230
|
-
all: true,
|
|
231
|
-
selected: []
|
|
232
|
-
});
|
|
233
|
-
}, [selectable]);
|
|
234
228
|
const [activeIdInternal, setActiveInternal] = (0, react_1.useState)(undefined);
|
|
235
229
|
const activeId = active !== undefined ? active : activeIdInternal;
|
|
236
230
|
const onClickInternal = (0, react_1.useCallback)(id => setActiveInternal(id === activeIdInternal ? undefined : id), [activeIdInternal, setActiveInternal]);
|
|
@@ -247,7 +241,7 @@ const TableInner = ({
|
|
|
247
241
|
detailPanel,
|
|
248
242
|
footer,
|
|
249
243
|
other
|
|
250
|
-
} = (0, useTableChildren_1.useTableChildren)(children, isMobile, selectionQty, ((_c = selectable === null || selectable === void 0 ? void 0 : selectable.selection) === null || _c === void 0 ? void 0 : _c.all) || false, clearSelection,
|
|
244
|
+
} = (0, useTableChildren_1.useTableChildren)(children, isMobile, selectionQty, ((_c = selectable === null || selectable === void 0 ? void 0 : selectable.selection) === null || _c === void 0 ? void 0 : _c.all) || false, clearSelection, activeId, gridRef, onCloseDetailPanel);
|
|
251
245
|
const hasDetailPanel = !!detailPanel;
|
|
252
246
|
const shouldEnableRowClick = hasDetailPanel || !!onClick;
|
|
253
247
|
const activeIdForRow = shouldEnableRowClick ? activeId : undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FunctionComponent } from "react";
|
|
2
2
|
import "./title.less";
|
|
3
|
-
import { IIcon } from "
|
|
3
|
+
import { IIcon } from "../icons/icon";
|
|
4
4
|
export type TIconType = "info" | "warning" | "error" | "success" | "default";
|
|
5
5
|
interface ITitle {
|
|
6
6
|
isMobile: boolean;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Title = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const classNames_1 = require("../commonHelpers/classNames/classNames");
|
|
7
|
+
const useDrive_1 = require("../utils/theme/useDrive");
|
|
8
|
+
const useDriveClassName_1 = require("../utils/theme/useDriveClassName");
|
|
9
|
+
const iconChevronRightSmall_1 = require("../icons/iconChevronRightSmall");
|
|
10
|
+
const Title = ({ isMobile, link, target, title, id, icon, iconType, className = "", onClick }) => {
|
|
11
|
+
const isDrive = (0, useDrive_1.useDrive)();
|
|
12
|
+
const driveClassName = (0, useDriveClassName_1.useDriveClassName)("zen-title");
|
|
13
|
+
const h3ClassName = (0, classNames_1.classNames)(["zen-title", driveClassName !== null && driveClassName !== void 0 ? driveClassName : ""]);
|
|
14
|
+
const clickableClass = onClick ? "zen-title__clickable" : "";
|
|
15
|
+
const iconClassName = iconType ? `zen-title__icon--${iconType}` : "";
|
|
16
|
+
const iconSize = (0, react_1.useMemo)(() => (isDrive ? "huge" : "large"), [isDrive]);
|
|
17
|
+
const iconElement = (0, react_1.useMemo)(() => (icon ? (0, jsx_runtime_1.jsx)("div", { className: (0, classNames_1.classNames)(["zen-title__icon", iconClassName]), children: (0, react_1.createElement)(icon, { size: iconSize }) }) : null), [icon, iconSize, iconClassName]);
|
|
18
|
+
const chevron = (0, react_1.useMemo)(() => ((0, jsx_runtime_1.jsx)("span", { className: "zen-title__link-chevron", children: (0, jsx_runtime_1.jsx)(iconChevronRightSmall_1.IconChevronRightSmall, { size: iconSize, className: "zen-title__chevron-icon" }) })), [iconSize]);
|
|
19
|
+
if (onClick) {
|
|
20
|
+
return ((0, jsx_runtime_1.jsx)("h3", { className: h3ClassName, children: (0, jsx_runtime_1.jsxs)("button", { type: "button", className: clickableClass, onClick: onClick, children: [iconElement, (0, jsx_runtime_1.jsxs)("span", { title: title, id: id, className: (0, classNames_1.classNames)(["zen-title__text", isMobile && !isDrive ? "zen-title__text--mobile" : "", className]), children: [title, chevron] })] }) }));
|
|
21
|
+
}
|
|
22
|
+
if (link) {
|
|
23
|
+
return ((0, jsx_runtime_1.jsx)("h3", { className: h3ClassName, children: (0, jsx_runtime_1.jsxs)("a", { id: id, className: "zen-title__link", href: link, target: target, children: [iconElement, (0, jsx_runtime_1.jsxs)("span", { title: title, className: (0, classNames_1.classNames)(["zen-title__link-text"]), children: [title, chevron] })] }) }));
|
|
24
|
+
}
|
|
25
|
+
return ((0, jsx_runtime_1.jsxs)("h3", { className: h3ClassName, children: [iconElement, (0, jsx_runtime_1.jsx)("span", { title: title, id: id, className: (0, classNames_1.classNames)(["zen-title__text", isMobile && !isDrive ? "zen-title__text--mobile" : "", className]), children: title })] }));
|
|
26
|
+
};
|
|
27
|
+
exports.Title = Title;
|
|
@@ -110,7 +110,8 @@ const ToggleButtonRaw = props => {
|
|
|
110
110
|
children,
|
|
111
111
|
isReverted,
|
|
112
112
|
isReadOnly,
|
|
113
|
-
value: valueProp
|
|
113
|
+
value: valueProp,
|
|
114
|
+
dataAnalyticsId
|
|
114
115
|
} = props;
|
|
115
116
|
const driveClassesToggler = (0, useDriveClassName_1.useDriveClassName)("zen-toggler");
|
|
116
117
|
const driveClassesComponent = (0, useDriveClassName_1.useDriveClassName)("zen-toggler-component");
|
|
@@ -140,6 +141,7 @@ const ToggleButtonRaw = props => {
|
|
|
140
141
|
}
|
|
141
142
|
return (0, jsx_runtime_1.jsxs)("div", {
|
|
142
143
|
className: (0, classNames_1.classNames)(["zen-toggler", driveClassesToggler || "", className || ""]),
|
|
144
|
+
"data-analytics-id": dataAnalyticsId,
|
|
143
145
|
children: [(0, jsx_runtime_1.jsx)(triStateCheckbox_1.TriStateCheckbox, {
|
|
144
146
|
name: name,
|
|
145
147
|
className: "zen-toggler__input",
|
|
@@ -6,6 +6,7 @@ interface IToggleButtonBaseRaw extends IZenComponentProps {
|
|
|
6
6
|
title?: string;
|
|
7
7
|
isReverted?: boolean;
|
|
8
8
|
isReadOnly?: boolean;
|
|
9
|
+
dataAnalyticsId?: string;
|
|
9
10
|
}
|
|
10
11
|
export interface IToggleButtonDefaultRaw extends IToggleButtonBaseRaw {
|
|
11
12
|
onChange?: (checked: boolean) => void;
|
|
@@ -10,6 +10,7 @@ interface ITooltip extends IZenComponentProps {
|
|
|
10
10
|
}>;
|
|
11
11
|
alignment?: TAlignment;
|
|
12
12
|
triggerClassName?: string;
|
|
13
|
+
triggerAriaLabel?: string;
|
|
13
14
|
mobileTitle?: string;
|
|
14
15
|
/**
|
|
15
16
|
* @deprecated
|
|
@@ -32,5 +33,5 @@ interface ITooltip extends IZenComponentProps {
|
|
|
32
33
|
*/
|
|
33
34
|
mobileSheetTitle?: ReactElement | string;
|
|
34
35
|
}
|
|
35
|
-
export declare const Tooltip: ({ trigger, triggerClassName, className, alignment, children, mobileSheetTitle, mobileTitle }: ITooltip) => import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
export declare const Tooltip: ({ trigger, triggerClassName, triggerAriaLabel, className, alignment, children, mobileSheetTitle, mobileTitle }: ITooltip) => import("react/jsx-runtime").JSX.Element;
|
|
36
37
|
export {};
|
package/dist/tooltip/tooltip.js
CHANGED
|
@@ -96,7 +96,7 @@ injectString("ar-SA", "Close", "\u0625\u063A\u0644\u0627\u0642");
|
|
|
96
96
|
const react_1 = __importStar(require("react"));
|
|
97
97
|
const useResize_1 = require("../commonHelpers/hooks/useResize");
|
|
98
98
|
const calculatePosition_1 = require("../utils/positioningUtils/calculatePosition");
|
|
99
|
-
const
|
|
99
|
+
const usePortal_1 = require("../commonHelpers/hooks/usePortal");
|
|
100
100
|
const classNames_1 = require("../commonHelpers/classNames/classNames");
|
|
101
101
|
const calculateArrowPosition_1 = require("./helpers/calculateArrowPosition");
|
|
102
102
|
const deviceType_1 = require("../commonHelpers/hooks/deviceType");
|
|
@@ -138,7 +138,8 @@ const EventWrapper = ({
|
|
|
138
138
|
handleUniversalClick,
|
|
139
139
|
setTooltipVisible,
|
|
140
140
|
timerRef,
|
|
141
|
-
|
|
141
|
+
timerMouseLeaveRef,
|
|
142
|
+
tooltipRef
|
|
142
143
|
}) => {
|
|
143
144
|
const isCurrentDeviceDesktop = deviceType === deviceType_1.DeviceType.Desktop;
|
|
144
145
|
const originalOnClick = children.props.onClick;
|
|
@@ -151,10 +152,10 @@ const EventWrapper = ({
|
|
|
151
152
|
handleUniversalClick(e);
|
|
152
153
|
}, [originalOnClick, handleUniversalClick]);
|
|
153
154
|
const desktopEvents = {
|
|
154
|
-
|
|
155
|
+
onMouseEnter: () => {
|
|
155
156
|
var _a;
|
|
156
157
|
setTooltipVisible(true);
|
|
157
|
-
|
|
158
|
+
timerMouseLeaveRef.current && ((_a = zen_1.zen.clearTimeout) === null || _a === void 0 ? void 0 : _a.call(zen_1.zen, timerMouseLeaveRef.current));
|
|
158
159
|
},
|
|
159
160
|
onMouseLeave: () => {
|
|
160
161
|
var _a;
|
|
@@ -163,7 +164,13 @@ const EventWrapper = ({
|
|
|
163
164
|
}, TOOLTIP_VISIBILITY_DELAY);
|
|
164
165
|
},
|
|
165
166
|
onFocus: () => setTooltipVisible(true),
|
|
166
|
-
onBlur: () =>
|
|
167
|
+
onBlur: () => {
|
|
168
|
+
// Skip if the tooltip DOM was already detached
|
|
169
|
+
if (tooltipRef.current && !tooltipRef.current.isConnected) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
setTooltipVisible(false);
|
|
173
|
+
},
|
|
167
174
|
onKeyDown: onKeyDownHandler,
|
|
168
175
|
onClick: composedOnClick
|
|
169
176
|
};
|
|
@@ -182,19 +189,22 @@ const EventWrapper = ({
|
|
|
182
189
|
const Tooltip = ({
|
|
183
190
|
trigger,
|
|
184
191
|
triggerClassName,
|
|
192
|
+
triggerAriaLabel,
|
|
185
193
|
className = "",
|
|
186
194
|
alignment,
|
|
187
195
|
children,
|
|
188
196
|
mobileSheetTitle,
|
|
189
197
|
mobileTitle
|
|
198
|
+
// eslint-disable-next-line complexity
|
|
190
199
|
}) => {
|
|
200
|
+
var _a, _b, _c, _d;
|
|
191
201
|
const GAP = 12;
|
|
192
202
|
const isDrive = (0, useDrive_1.useDrive)();
|
|
193
|
-
const triggerRefNative = trigger
|
|
203
|
+
const triggerRefNative = trigger ? trigger.props.ref : undefined;
|
|
194
204
|
const triggerLocalRef = (0, react_1.useRef)(null);
|
|
195
205
|
const triggerRef = triggerRefNative || triggerLocalRef;
|
|
196
206
|
const timerRef = (0, react_1.useRef)(null);
|
|
197
|
-
const
|
|
207
|
+
const timerMouseLeaveRef = (0, react_1.useRef)(null);
|
|
198
208
|
const tooltipRef = (0, react_1.useRef)(null);
|
|
199
209
|
const arrowRef = (0, react_1.useRef)(null);
|
|
200
210
|
const [isTooltipVisible, setTooltipVisible] = (0, react_1.useState)(false);
|
|
@@ -251,12 +261,12 @@ const Tooltip = ({
|
|
|
251
261
|
tabIndex: 0,
|
|
252
262
|
type: "button",
|
|
253
263
|
className: "zen-tooltip__trigger-container",
|
|
254
|
-
"aria-label": translate("Information"),
|
|
264
|
+
"aria-label": triggerAriaLabel !== null && triggerAriaLabel !== void 0 ? triggerAriaLabel : translate("Information"),
|
|
255
265
|
children: (0, react_1.createElement)(iconInfoCircle_1.IconInfoCircle, {
|
|
256
266
|
size: isMobile ? "huge" : "large",
|
|
257
267
|
className: (0, classNames_1.classNames)([triggerClassName || "", "zen-tooltip__trigger"])
|
|
258
268
|
})
|
|
259
|
-
}), [trigger, isMobile, triggerClassName, translate]);
|
|
269
|
+
}), [trigger, isMobile, triggerClassName, triggerAriaLabel, translate]);
|
|
260
270
|
const triggerClone = (0, jsx_runtime_1.jsx)(EventWrapper, {
|
|
261
271
|
deviceType: deviceType,
|
|
262
272
|
isTooltipVisible: isTooltipVisible,
|
|
@@ -264,7 +274,8 @@ const Tooltip = ({
|
|
|
264
274
|
handleUniversalClick: handleUniversalClick,
|
|
265
275
|
setTooltipVisible: setTooltipVisible,
|
|
266
276
|
timerRef: timerRef,
|
|
267
|
-
|
|
277
|
+
timerMouseLeaveRef: timerMouseLeaveRef,
|
|
278
|
+
tooltipRef: tooltipRef,
|
|
268
279
|
children: react_1.default.cloneElement(tooltipTrigger, Object.assign({
|
|
269
280
|
ref: triggerRef
|
|
270
281
|
}, triggerCloneProps))
|
|
@@ -347,61 +358,54 @@ const Tooltip = ({
|
|
|
347
358
|
}
|
|
348
359
|
return preferredAlignment;
|
|
349
360
|
}, [isMobile, TOOLTIP_ARROW_HEIGHT, triggerRef, checkNaturalFit]);
|
|
350
|
-
|
|
351
|
-
const
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
361
|
+
const container = (_d = (_b = (_a = zen_1.zen.document) === null || _a === void 0 ? void 0 : _a.fullscreenElement) !== null && _b !== void 0 ? _b : (_c = zen_1.zen.document) === null || _c === void 0 ? void 0 : _c.body) !== null && _d !== void 0 ? _d : undefined;
|
|
362
|
+
const portal = (0, usePortal_1.usePortal)(isTooltipVisible ? (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, {
|
|
363
|
+
children: [isMobile && (0, jsx_runtime_1.jsx)(shield_1.Shield, {
|
|
364
|
+
className: "zen-tooltip__shield"
|
|
365
|
+
}), (0, jsx_runtime_1.jsxs)("div", {
|
|
366
|
+
id: tooltipId,
|
|
367
|
+
role: "tooltip",
|
|
368
|
+
ref: tooltipRef,
|
|
369
|
+
className: (0, classNames_1.classNames)(["zen-tooltip", dark ? "zen-dark" : "", `zen-tooltip--auto`, isMobile ? "zen-tooltip--mobile" : "", isDrive ? "zen-tooltip--drive" : "", className]),
|
|
370
|
+
onMouseEnter: () => {
|
|
371
|
+
var _a, _b;
|
|
372
|
+
timerRef.current && ((_a = zen_1.zen.clearTimeout) === null || _a === void 0 ? void 0 : _a.call(zen_1.zen, timerRef.current));
|
|
373
|
+
timerMouseLeaveRef.current && ((_b = zen_1.zen.clearTimeout) === null || _b === void 0 ? void 0 : _b.call(zen_1.zen, timerMouseLeaveRef.current));
|
|
374
|
+
},
|
|
375
|
+
onMouseLeave: () => {
|
|
376
|
+
var _a;
|
|
377
|
+
timerMouseLeaveRef.current = (_a = zen_1.zen.setTimeout) === null || _a === void 0 ? void 0 : _a.call(zen_1.zen, () => {
|
|
378
|
+
if (!isMobile && !isDrive) {
|
|
379
|
+
setTooltipVisible(false);
|
|
380
|
+
}
|
|
381
|
+
}, TOOLTIP_VISIBILITY_DELAY);
|
|
382
|
+
},
|
|
383
|
+
children: [!isMobile && !isDrive && (0, jsx_runtime_1.jsx)("div", {
|
|
384
|
+
className: (0, classNames_1.classNames)(["zen-tooltip__arrow", arrowClass]),
|
|
385
|
+
ref: arrowRef
|
|
359
386
|
}), (0, jsx_runtime_1.jsxs)("div", {
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
387
|
+
className: (0, classNames_1.classNames)(["zen-tooltip__body", "zen-tooltip__body--auto", isDrive ? "zen-tooltip__body--drive" : "", isMobile ? "zen-tooltip__body--mobile" : "", deviceType === deviceType_1.DeviceType.Desktop && !isDrive ? "zen-tooltip__body--desktop" : ""]),
|
|
388
|
+
children: [(mobileSheetTitle || mobileTitle) && (deviceType === deviceType_1.DeviceType.Mobile || isDrive) && (0, jsx_runtime_1.jsx)("div", {
|
|
389
|
+
className: "zen-tooltip__title",
|
|
390
|
+
children: mobileSheetTitle || mobileTitle
|
|
391
|
+
}), children]
|
|
392
|
+
}), (deviceType === deviceType_1.DeviceType.Mobile || isDrive) && (0, jsx_runtime_1.jsx)(button_1.Button, {
|
|
393
|
+
className: "zen-tooltip__close-button",
|
|
394
|
+
title: translate("Close"),
|
|
395
|
+
"aria-label": translate("Close"),
|
|
396
|
+
onClick: () => {
|
|
370
397
|
var _a;
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
setTooltipVisible(false);
|
|
374
|
-
}
|
|
375
|
-
}, TOOLTIP_VISIBILITY_DELAY);
|
|
398
|
+
setTooltipVisible(false);
|
|
399
|
+
(_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
376
400
|
},
|
|
377
|
-
children:
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
children: [(mobileSheetTitle || mobileTitle) && (deviceType === deviceType_1.DeviceType.Mobile || isDrive) && (0, jsx_runtime_1.jsx)("div", {
|
|
383
|
-
className: "zen-tooltip__title",
|
|
384
|
-
children: mobileSheetTitle || mobileTitle
|
|
385
|
-
}), children]
|
|
386
|
-
}), (deviceType === deviceType_1.DeviceType.Mobile || isDrive) && (0, jsx_runtime_1.jsx)(button_1.Button, {
|
|
387
|
-
className: "zen-tooltip__close-button",
|
|
388
|
-
title: translate("Close"),
|
|
389
|
-
"aria-label": translate("Close"),
|
|
390
|
-
onClick: () => {
|
|
391
|
-
var _a;
|
|
392
|
-
setTooltipVisible(false);
|
|
393
|
-
(_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
394
|
-
},
|
|
395
|
-
children: (0, jsx_runtime_1.jsx)(iconClose_1.IconClose, {
|
|
396
|
-
description: translate("Close"),
|
|
397
|
-
className: "svgIcon",
|
|
398
|
-
size: "huge"
|
|
399
|
-
})
|
|
400
|
-
})]
|
|
401
|
+
children: (0, jsx_runtime_1.jsx)(iconClose_1.IconClose, {
|
|
402
|
+
description: translate("Close"),
|
|
403
|
+
className: "svgIcon",
|
|
404
|
+
size: "huge"
|
|
405
|
+
})
|
|
401
406
|
})]
|
|
402
|
-
})
|
|
403
|
-
|
|
404
|
-
};
|
|
407
|
+
})]
|
|
408
|
+
}) : null, container, tooltipId);
|
|
405
409
|
const calculatePosition = (0, react_1.useCallback)(() => {
|
|
406
410
|
const eAlignment = getEffectiveAlignment(tooltipAlignmentRef.current);
|
|
407
411
|
(0, calculatePosition_1.calculatePosition)(triggerRef, tooltipRef, TOOLTIP_ARROW_HEIGHT + GAP, TOOLTIP_ARROW_HEIGHT + GAP, false, eAlignment, tooltipAlignments_1.tooltipAlignments, undefined, isMobile);
|
|
@@ -452,12 +456,12 @@ const Tooltip = ({
|
|
|
452
456
|
if (timerRef.current) {
|
|
453
457
|
(_a = zen_1.zen.clearTimeout) === null || _a === void 0 ? void 0 : _a.call(zen_1.zen, timerRef.current);
|
|
454
458
|
}
|
|
455
|
-
if (
|
|
456
|
-
(_b = zen_1.zen.clearTimeout) === null || _b === void 0 ? void 0 : _b.call(zen_1.zen,
|
|
459
|
+
if (timerMouseLeaveRef.current) {
|
|
460
|
+
(_b = zen_1.zen.clearTimeout) === null || _b === void 0 ? void 0 : _b.call(zen_1.zen, timerMouseLeaveRef.current);
|
|
457
461
|
}
|
|
458
462
|
}, []);
|
|
459
463
|
return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, {
|
|
460
|
-
children: [
|
|
464
|
+
children: [portal, triggerClone]
|
|
461
465
|
});
|
|
462
466
|
};
|
|
463
467
|
exports.Tooltip = Tooltip;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTextDirection = void 0;
|
|
4
|
+
const RTL_LANGUAGES = ["ar"];
|
|
5
|
+
const getTextDirection = (language) => (RTL_LANGUAGES.includes(language) ? "rtl" : "ltr");
|
|
6
|
+
exports.getTextDirection = getTextDirection;
|
|
@@ -2,7 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LanguageProvider = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
5
6
|
const languageContext_1 = require("./languageContext");
|
|
6
7
|
const getSupportedLanguage_1 = require("./getSupportedLanguage");
|
|
7
|
-
const
|
|
8
|
+
const directionContext_1 = require("./directionContext");
|
|
9
|
+
const getTextDirection_1 = require("./getTextDirection");
|
|
10
|
+
const zen_1 = require("../zen");
|
|
11
|
+
const LanguageProvider = ({ language, children }) => {
|
|
12
|
+
const validLanguage = (0, getSupportedLanguage_1.getSupportedLanguage)(language);
|
|
13
|
+
const direction = (0, getTextDirection_1.getTextDirection)(validLanguage);
|
|
14
|
+
(0, react_1.useEffect)(() => {
|
|
15
|
+
if (zen_1.zen.document) {
|
|
16
|
+
zen_1.zen.document.documentElement.dir = direction;
|
|
17
|
+
zen_1.zen.document.documentElement.lang = validLanguage;
|
|
18
|
+
}
|
|
19
|
+
}, [direction, validLanguage]);
|
|
20
|
+
return ((0, jsx_runtime_1.jsx)(languageContext_1.languageContext.Provider, { value: validLanguage, children: (0, jsx_runtime_1.jsx)(directionContext_1.directionContext.Provider, { value: direction, children: children }) }));
|
|
21
|
+
};
|
|
8
22
|
exports.LanguageProvider = LanguageProvider;
|
|
@@ -312,4 +312,6 @@ export declare const translations: {
|
|
|
312
312
|
"Failed to load page": string;
|
|
313
313
|
"Please refresh the page and try again. If the issue persists, contact Support.": string;
|
|
314
314
|
"Failed to load {0}": string;
|
|
315
|
+
"Sort by Ascending": string;
|
|
316
|
+
"Sort by Descending": string;
|
|
315
317
|
};
|
|
@@ -314,5 +314,7 @@ exports.translations = {
|
|
|
314
314
|
"Please reload this section to try again. If the issue persists, contact Support.": "Please reload this section to try again. If the issue persists, contact Support.",
|
|
315
315
|
"Failed to load page": "Failed to load page",
|
|
316
316
|
"Please refresh the page and try again. If the issue persists, contact Support.": "Please refresh the page and try again. If the issue persists, contact Support.",
|
|
317
|
-
"Failed to load {0}": "Failed to load {0}"
|
|
317
|
+
"Failed to load {0}": "Failed to load {0}",
|
|
318
|
+
"Sort by Ascending": "Sort by Ascending",
|
|
319
|
+
"Sort by Descending": "Sort by Descending"
|
|
318
320
|
};
|