@geotab/zenith 3.12.0-beta.0 → 3.12.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 +0 -46
- package/dist/dataGrid/withFlexibleColumns/withFlexibleColumns.js +29 -29
- package/dist/menu/utils/useMenuItemCore.js +1 -4
- package/dist/summaryTile/summaryTile.d.ts +1 -1
- package/esm/dataGrid/withFlexibleColumns/withFlexibleColumns.js +29 -29
- package/esm/menu/utils/useMenuItemCore.js +1 -4
- package/esm/summaryTile/summaryTile.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,52 +47,6 @@ Zenith library provides components defined in Zenith Design System. It includes
|
|
|
47
47
|
|
|
48
48
|
Markdown reference for each component (used by AI tooling and IRIS) lives in [`documentation/components/`](./documentation/components/). These are kept in sync with the source via the [`/zenith-doc-sync`](https://git.geotab.com/ai-hub/skill-playground/skill-workflow-zenith-doc-sync) skill when component code changes.
|
|
49
49
|
|
|
50
|
-
## Testing
|
|
51
|
-
|
|
52
|
-
### Quarantining Jest Tests
|
|
53
|
-
|
|
54
|
-
Sisyphus can quarantine flaky Jest tests and auto-create follow-up tickets. To quarantine a test, the quarantine annotations **must be commented out** (Jest has no native trait attribute support) and placed inside the `describe` block, directly above the `test.skip` or `it.skip`.
|
|
55
|
-
|
|
56
|
-
In the case the `test` syntax is used:
|
|
57
|
-
|
|
58
|
-
```typescript
|
|
59
|
-
describe("fooTestParent", () => {
|
|
60
|
-
// [Trait("QuarantinedReason", "Failed in main")] // This trait must be exactly the same, reason must be non-empty (or use a different reason)
|
|
61
|
-
// [Trait("QuarantinedTestTicketLink", "")] // This trait must be exactly the same (or a ticket can be added)
|
|
62
|
-
test.skip("fooTest", async () => {
|
|
63
|
-
// Insert test code
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Or, in case the `it` syntax is used instead:
|
|
69
|
-
|
|
70
|
-
```typescript
|
|
71
|
-
describe("fooTestParent", () => {
|
|
72
|
-
// [Trait("QuarantinedReason", "Failed in main")] // This trait must be exactly the same, reason must be non-empty (or use a different reason)
|
|
73
|
-
// [Trait("QuarantinedTestTicketLink", "")] // This trait must be exactly the same (or a ticket can be added)
|
|
74
|
-
it.skip("fooTest", async () => {
|
|
75
|
-
// Insert test code
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
Or, for parameterized tests (`test.each` / `it.each`):
|
|
81
|
-
|
|
82
|
-
```typescript
|
|
83
|
-
describe("fooTestParent", () => {
|
|
84
|
-
// [Trait("QuarantinedReason", "Failed in main")] // This trait must be exactly the same, reason must be non-empty (or use a different reason)
|
|
85
|
-
// [Trait("QuarantinedTestTicketLink", "")] // This trait must be exactly the same (or a ticket can be added)
|
|
86
|
-
test.skip.each([...])("fooTest %s", async (param) => {
|
|
87
|
-
// Insert test code
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
NOTE: `.skip` goes between `test`/`it` and `.each` — use `test.skip.each(...)`, not `test.each.skip(...)`.
|
|
93
|
-
|
|
94
|
-
NOTE: this will not work in the case of adding quarantine annotations to a `describe` block.
|
|
95
|
-
|
|
96
50
|
## Change log
|
|
97
51
|
|
|
98
52
|
### 3.12.0
|
|
@@ -25,33 +25,33 @@ const useLanguage_1 = require("../../utils/localization/useLanguage");
|
|
|
25
25
|
// T - type of entity
|
|
26
26
|
// P - props of wrapped component
|
|
27
27
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
28
|
-
injectString("cs", "
|
|
29
|
-
injectString("da-DK", "
|
|
30
|
-
injectString("de", "
|
|
31
|
-
injectString("en", "
|
|
32
|
-
injectString("es", "
|
|
33
|
-
injectString("fi-FI", "
|
|
34
|
-
injectString("fr", "
|
|
35
|
-
injectString("fr-FR", "
|
|
36
|
-
injectString("hu-HU", "
|
|
37
|
-
injectString("id", "
|
|
38
|
-
injectString("it", "
|
|
39
|
-
injectString("ja", "
|
|
40
|
-
injectString("ko-KR", "
|
|
41
|
-
injectString("ms", "
|
|
42
|
-
injectString("nb-NO", "
|
|
43
|
-
injectString("nl", "
|
|
44
|
-
injectString("pl", "
|
|
45
|
-
injectString("pt-BR", "
|
|
46
|
-
injectString("pt-PT", "
|
|
47
|
-
injectString("sk-SK", "
|
|
48
|
-
injectString("sv", "
|
|
49
|
-
injectString("th", "
|
|
50
|
-
injectString("tr", "
|
|
51
|
-
injectString("zh-Hans", "
|
|
52
|
-
injectString("zh-TW", "
|
|
53
|
-
injectString("ro-RO", "
|
|
54
|
-
injectString("ar", "
|
|
28
|
+
injectString("cs", "Select visible columns", "Vyberte viditeln\xE9 sloupce");
|
|
29
|
+
injectString("da-DK", "Select visible columns", "V\xE6lg synlige kolonner");
|
|
30
|
+
injectString("de", "Select visible columns", "Sichtbare Spalten ausw\xE4hlen");
|
|
31
|
+
injectString("en", "Select visible columns", "Select visible columns");
|
|
32
|
+
injectString("es", "Select visible columns", "Seleccionar columnas visibles");
|
|
33
|
+
injectString("fi-FI", "Select visible columns", "Valitse n\xE4kyv\xE4t sarakkeet");
|
|
34
|
+
injectString("fr", "Select visible columns", "S\xE9lectionner les colonnes visibles");
|
|
35
|
+
injectString("fr-FR", "Select visible columns", "S\xE9lectionner les colonnes visibles");
|
|
36
|
+
injectString("hu-HU", "Select visible columns", "L\xE1that\xF3 oszlopok kiv\xE1laszt\xE1sa");
|
|
37
|
+
injectString("id", "Select visible columns", "Pilih kolom yang terlihat");
|
|
38
|
+
injectString("it", "Select visible columns", "Selezionare colonne visibili");
|
|
39
|
+
injectString("ja", "Select visible columns", "\u8868\u793A\u5217\u3092\u9078\u629E");
|
|
40
|
+
injectString("ko-KR", "Select visible columns", "\uD45C\uC2DC\uB418\uB294 \uC5F4 \uC120\uD0DD");
|
|
41
|
+
injectString("ms", "Select visible columns", "Pilih lajur yang boleh dilihat");
|
|
42
|
+
injectString("nb-NO", "Select visible columns", "Velg synlige kolonner");
|
|
43
|
+
injectString("nl", "Select visible columns", "Zichtbare kolommen selecteren");
|
|
44
|
+
injectString("pl", "Select visible columns", "Wybierz widoczne kolumny");
|
|
45
|
+
injectString("pt-BR", "Select visible columns", "Selecionar colunas vis\xEDveis");
|
|
46
|
+
injectString("pt-PT", "Select visible columns", "Selecionar colunas vis\xEDveis");
|
|
47
|
+
injectString("sk-SK", "Select visible columns", "Vybra\u0165 vidite\u013En\xE9 st\u013Apce");
|
|
48
|
+
injectString("sv", "Select visible columns", "V\xE4lj synbara kolumner");
|
|
49
|
+
injectString("th", "Select visible columns", "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E17\u0E35\u0E48\u0E21\u0E2D\u0E07\u0E40\u0E2B\u0E47\u0E19\u0E44\u0E14\u0E49");
|
|
50
|
+
injectString("tr", "Select visible columns", "G\xF6r\xFCn\xFCr s\xFCtunlar\u0131 se\xE7");
|
|
51
|
+
injectString("zh-Hans", "Select visible columns", "\u9009\u62E9\u53EF\u89C1\u5217");
|
|
52
|
+
injectString("zh-TW", "Select visible columns", "\u9078\u53D6\u53EF\u898B\u6B04");
|
|
53
|
+
injectString("ro-RO", "Select visible columns", "Selecta\u021Bi coloanele vizibile");
|
|
54
|
+
injectString("ar", "Select visible columns", "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0623\u0639\u0645\u062F\u0629 \u0627\u0644\u0645\u0631\u0626\u064A\u0629");
|
|
55
55
|
const withFlexibleColumns = DataGridComponent => {
|
|
56
56
|
const FlexibleColumnsComponent = props => {
|
|
57
57
|
var _a, _b;
|
|
@@ -218,7 +218,7 @@ const withFlexibleColumns = DataGridComponent => {
|
|
|
218
218
|
children: listOfColumns
|
|
219
219
|
})
|
|
220
220
|
}) : (0, jsx_runtime_1.jsx)(popup_1.Popup, {
|
|
221
|
-
ariaLabel: translate("
|
|
221
|
+
ariaLabel: translate("Select visible columns"),
|
|
222
222
|
triggerRef: popupTriggerRef,
|
|
223
223
|
alignment: "bottom-right",
|
|
224
224
|
children: (0, jsx_runtime_1.jsx)(columnSettings_1.ColumnSettings, {
|
|
@@ -238,4 +238,4 @@ const withFlexibleColumns = DataGridComponent => {
|
|
|
238
238
|
return FlexibleColumnsComponent;
|
|
239
239
|
};
|
|
240
240
|
exports.withFlexibleColumns = withFlexibleColumns;
|
|
241
|
-
exports.withFlexibleColumns.translations = ["
|
|
241
|
+
exports.withFlexibleColumns.translations = ["Select visible columns", ...columnSettings_1.ColumnSettings.translations, ...columnSettingsSidePanel_1.ColumnSettingsSidePanel.translations, ...emptySearchList_1.EmptySearchList.translations];
|
|
@@ -6,16 +6,13 @@ const pathContext_1 = require("../contexts/pathContext");
|
|
|
6
6
|
const headerContext_1 = require("../../header/headerContext");
|
|
7
7
|
const buildMenuContent_1 = require("./buildMenuContent");
|
|
8
8
|
const useMenuItemKeyboardNav_1 = require("./useMenuItemKeyboardNav");
|
|
9
|
-
const directionContext_1 = require("../../utils/localization/directionContext");
|
|
10
9
|
/**
|
|
11
10
|
* Core menu item logic shared between MenuItem and createMenuItem.
|
|
12
11
|
* Consolidates context access, state computation, and callback memoization.
|
|
13
12
|
*/
|
|
14
13
|
const useMenuItemCore = ({ id, children, className, alignment, isMobile = false, setIsOpen, onClick, onOpenChange }) => {
|
|
15
14
|
const alignmentContext = (0, react_1.useContext)(headerContext_1.MenuAlignmentContext);
|
|
16
|
-
const
|
|
17
|
-
const defaultAlignment = direction === "rtl" ? "left-top" : "right-top";
|
|
18
|
-
const contentAlignment = alignment || alignmentContext.alignment || defaultAlignment;
|
|
15
|
+
const contentAlignment = alignment || alignmentContext.alignment || "end-top";
|
|
19
16
|
const { path, onOpenBranch, closeBranch, navigatedViaKeyboardRef } = (0, react_1.useContext)(pathContext_1.PathContext);
|
|
20
17
|
const ref = (0, react_1.useRef)(null);
|
|
21
18
|
const content = (0, react_1.useMemo)(() => (0, buildMenuContent_1.buildMenuContent)(children, isMobile, setIsOpen, className), [children, isMobile, setIsOpen, className]);
|
|
@@ -19,7 +19,7 @@ export declare enum SummaryTileSize {
|
|
|
19
19
|
Small = "small",
|
|
20
20
|
Medium = "medium"
|
|
21
21
|
}
|
|
22
|
-
export interface ISummaryTile extends IZenComponentProps, IZenGridItem, React.AriaAttributes {
|
|
22
|
+
export interface ISummaryTile extends IZenComponentProps, IZenGridItem, Pick<React.AriaAttributes, "aria-selected" | "aria-label" | "aria-labelledby" | "aria-describedby" | "aria-busy"> {
|
|
23
23
|
/** ARIA role forwarded to the root element. */
|
|
24
24
|
role?: React.AriaRole;
|
|
25
25
|
/**
|
|
@@ -17,33 +17,33 @@ import { useLanguage } from "../../utils/localization/useLanguage";
|
|
|
17
17
|
// T - type of entity
|
|
18
18
|
// P - props of wrapped component
|
|
19
19
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
20
|
-
injectString("cs", "
|
|
21
|
-
injectString("da-DK", "
|
|
22
|
-
injectString("de", "
|
|
23
|
-
injectString("en", "
|
|
24
|
-
injectString("es", "
|
|
25
|
-
injectString("fi-FI", "
|
|
26
|
-
injectString("fr", "
|
|
27
|
-
injectString("fr-FR", "
|
|
28
|
-
injectString("hu-HU", "
|
|
29
|
-
injectString("id", "
|
|
30
|
-
injectString("it", "
|
|
31
|
-
injectString("ja", "
|
|
32
|
-
injectString("ko-KR", "
|
|
33
|
-
injectString("ms", "
|
|
34
|
-
injectString("nb-NO", "
|
|
35
|
-
injectString("nl", "
|
|
36
|
-
injectString("pl", "
|
|
37
|
-
injectString("pt-BR", "
|
|
38
|
-
injectString("pt-PT", "
|
|
39
|
-
injectString("sk-SK", "
|
|
40
|
-
injectString("sv", "
|
|
41
|
-
injectString("th", "
|
|
42
|
-
injectString("tr", "
|
|
43
|
-
injectString("zh-Hans", "
|
|
44
|
-
injectString("zh-TW", "
|
|
45
|
-
injectString("ro-RO", "
|
|
46
|
-
injectString("ar", "
|
|
20
|
+
injectString("cs", "Select visible columns", "Vyberte viditeln\xE9 sloupce");
|
|
21
|
+
injectString("da-DK", "Select visible columns", "V\xE6lg synlige kolonner");
|
|
22
|
+
injectString("de", "Select visible columns", "Sichtbare Spalten ausw\xE4hlen");
|
|
23
|
+
injectString("en", "Select visible columns", "Select visible columns");
|
|
24
|
+
injectString("es", "Select visible columns", "Seleccionar columnas visibles");
|
|
25
|
+
injectString("fi-FI", "Select visible columns", "Valitse n\xE4kyv\xE4t sarakkeet");
|
|
26
|
+
injectString("fr", "Select visible columns", "S\xE9lectionner les colonnes visibles");
|
|
27
|
+
injectString("fr-FR", "Select visible columns", "S\xE9lectionner les colonnes visibles");
|
|
28
|
+
injectString("hu-HU", "Select visible columns", "L\xE1that\xF3 oszlopok kiv\xE1laszt\xE1sa");
|
|
29
|
+
injectString("id", "Select visible columns", "Pilih kolom yang terlihat");
|
|
30
|
+
injectString("it", "Select visible columns", "Selezionare colonne visibili");
|
|
31
|
+
injectString("ja", "Select visible columns", "\u8868\u793A\u5217\u3092\u9078\u629E");
|
|
32
|
+
injectString("ko-KR", "Select visible columns", "\uD45C\uC2DC\uB418\uB294 \uC5F4 \uC120\uD0DD");
|
|
33
|
+
injectString("ms", "Select visible columns", "Pilih lajur yang boleh dilihat");
|
|
34
|
+
injectString("nb-NO", "Select visible columns", "Velg synlige kolonner");
|
|
35
|
+
injectString("nl", "Select visible columns", "Zichtbare kolommen selecteren");
|
|
36
|
+
injectString("pl", "Select visible columns", "Wybierz widoczne kolumny");
|
|
37
|
+
injectString("pt-BR", "Select visible columns", "Selecionar colunas vis\xEDveis");
|
|
38
|
+
injectString("pt-PT", "Select visible columns", "Selecionar colunas vis\xEDveis");
|
|
39
|
+
injectString("sk-SK", "Select visible columns", "Vybra\u0165 vidite\u013En\xE9 st\u013Apce");
|
|
40
|
+
injectString("sv", "Select visible columns", "V\xE4lj synbara kolumner");
|
|
41
|
+
injectString("th", "Select visible columns", "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E04\u0E2D\u0E25\u0E31\u0E21\u0E19\u0E4C\u0E17\u0E35\u0E48\u0E21\u0E2D\u0E07\u0E40\u0E2B\u0E47\u0E19\u0E44\u0E14\u0E49");
|
|
42
|
+
injectString("tr", "Select visible columns", "G\xF6r\xFCn\xFCr s\xFCtunlar\u0131 se\xE7");
|
|
43
|
+
injectString("zh-Hans", "Select visible columns", "\u9009\u62E9\u53EF\u89C1\u5217");
|
|
44
|
+
injectString("zh-TW", "Select visible columns", "\u9078\u53D6\u53EF\u898B\u6B04");
|
|
45
|
+
injectString("ro-RO", "Select visible columns", "Selecta\u021Bi coloanele vizibile");
|
|
46
|
+
injectString("ar", "Select visible columns", "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0623\u0639\u0645\u062F\u0629 \u0627\u0644\u0645\u0631\u0626\u064A\u0629");
|
|
47
47
|
export const withFlexibleColumns = DataGridComponent => {
|
|
48
48
|
const FlexibleColumnsComponent = props => {
|
|
49
49
|
var _a, _b;
|
|
@@ -210,7 +210,7 @@ export const withFlexibleColumns = DataGridComponent => {
|
|
|
210
210
|
children: listOfColumns
|
|
211
211
|
})
|
|
212
212
|
}) : _jsx(Popup, {
|
|
213
|
-
ariaLabel: translate("
|
|
213
|
+
ariaLabel: translate("Select visible columns"),
|
|
214
214
|
triggerRef: popupTriggerRef,
|
|
215
215
|
alignment: "bottom-right",
|
|
216
216
|
children: _jsx(ColumnSettings, {
|
|
@@ -229,4 +229,4 @@ export const withFlexibleColumns = DataGridComponent => {
|
|
|
229
229
|
FlexibleColumnsComponent.displayName = `withFlexibleColumns(${DataGridComponent.displayName || DataGridComponent.name || "Component"})`;
|
|
230
230
|
return FlexibleColumnsComponent;
|
|
231
231
|
};
|
|
232
|
-
withFlexibleColumns.translations = ["
|
|
232
|
+
withFlexibleColumns.translations = ["Select visible columns", ...ColumnSettings.translations, ...ColumnSettingsSidePanel.translations, ...EmptySearchList.translations];
|
|
@@ -3,16 +3,13 @@ import { PathContext } from "../contexts/pathContext";
|
|
|
3
3
|
import { MenuAlignmentContext } from "../../header/headerContext";
|
|
4
4
|
import { buildMenuContent } from "./buildMenuContent";
|
|
5
5
|
import { useMenuItemKeyboardNav } from "./useMenuItemKeyboardNav";
|
|
6
|
-
import { directionContext } from "../../utils/localization/directionContext";
|
|
7
6
|
/**
|
|
8
7
|
* Core menu item logic shared between MenuItem and createMenuItem.
|
|
9
8
|
* Consolidates context access, state computation, and callback memoization.
|
|
10
9
|
*/
|
|
11
10
|
export const useMenuItemCore = ({ id, children, className, alignment, isMobile = false, setIsOpen, onClick, onOpenChange }) => {
|
|
12
11
|
const alignmentContext = useContext(MenuAlignmentContext);
|
|
13
|
-
const
|
|
14
|
-
const defaultAlignment = direction === "rtl" ? "left-top" : "right-top";
|
|
15
|
-
const contentAlignment = alignment || alignmentContext.alignment || defaultAlignment;
|
|
12
|
+
const contentAlignment = alignment || alignmentContext.alignment || "end-top";
|
|
16
13
|
const { path, onOpenBranch, closeBranch, navigatedViaKeyboardRef } = useContext(PathContext);
|
|
17
14
|
const ref = useRef(null);
|
|
18
15
|
const content = useMemo(() => buildMenuContent(children, isMobile, setIsOpen, className), [children, isMobile, setIsOpen, className]);
|
|
@@ -19,7 +19,7 @@ export declare enum SummaryTileSize {
|
|
|
19
19
|
Small = "small",
|
|
20
20
|
Medium = "medium"
|
|
21
21
|
}
|
|
22
|
-
export interface ISummaryTile extends IZenComponentProps, IZenGridItem, React.AriaAttributes {
|
|
22
|
+
export interface ISummaryTile extends IZenComponentProps, IZenGridItem, Pick<React.AriaAttributes, "aria-selected" | "aria-label" | "aria-labelledby" | "aria-describedby" | "aria-busy"> {
|
|
23
23
|
/** ARIA role forwarded to the root element. */
|
|
24
24
|
role?: React.AriaRole;
|
|
25
25
|
/**
|