@geotab/zenith 3.15.0 → 3.16.0-beta.1
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 +21 -0
- package/dist/absolute/absolute.js +1 -1
- package/dist/betaPill/betaPill.js +9 -9
- package/dist/commonHelpers/arrowNavigation/arrowNavigationHelper.d.ts +1 -0
- package/dist/commonHelpers/arrowNavigation/arrowNavigationHelper.js +5 -1
- package/dist/commonHelpers/hooks/useTrapFocus.d.ts +9 -0
- package/dist/commonHelpers/hooks/useTrapFocus.js +66 -14
- package/dist/controlledPopup/controlledPopup.d.ts +1 -1
- package/dist/controlledPopup/controlledPopup.js +1 -1
- package/dist/dropdownRaw/dropdownSearchableTrigger.js +1 -1
- package/dist/filtersBar/components/filtersBarRange/filtersBarRange.d.ts +1 -1
- package/dist/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.d.ts +1 -1
- package/dist/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +8 -5
- package/dist/filtersBar/filtersContainer/filtersContainer.js +7 -4
- package/dist/header/header.js +9 -2
- package/dist/header/headerHelpers.js +8 -5
- package/dist/index.css +142 -11
- package/dist/index.d.ts +6 -1
- package/dist/index.js +12 -3
- package/dist/modal/modal.d.ts +48 -0
- package/dist/modal/modal.js +37 -7
- package/dist/nav/navHeader/navHeader.d.ts +1 -1
- package/dist/nav/navHeader/navHeaderSearch/navHeaderSearch.js +1 -1
- package/dist/nav/navItem/navItem.d.ts +15 -2
- package/dist/nav/navItem/navItem.js +49 -7
- package/dist/nav/utils/navUtils.d.ts +2 -2
- package/dist/pillExpandable/pillExpandable.js +6 -3
- package/dist/rangeRaw/components/rangeField.d.ts +2 -1
- package/dist/rangeRaw/components/rangeField.js +4 -3
- package/dist/rangeRaw/rangeRaw.js +8 -5
- package/dist/rangeRaw/types.d.ts +1 -0
- package/dist/sidePanel/sidePanel.js +3 -2
- package/dist/table/selectable/interfaces.d.ts +13 -0
- package/dist/table/selectable/useSelectableRows.js +46 -12
- package/dist/table/selectable/utils/calculateSelectionState.js +35 -0
- package/dist/table/selectable/utils/isRowChecked.js +12 -1
- package/dist/table/table.d.ts +2 -0
- package/dist/table/table.js +3 -1
- package/dist/tabs/tabs.js +14 -5
- package/dist/textInputRaw/textInputRaw.js +1 -1
- package/dist/textInputRaw/types.d.ts +1 -0
- package/dist/tooltip/components/inlineTrigger.d.ts +43 -0
- package/dist/tooltip/components/inlineTrigger.js +42 -0
- package/dist/tooltip/tooltip.d.ts +5 -2
- package/dist/tooltip/tooltip.js +15 -4
- package/dist/trendIndicator/trendIndicator.d.ts +47 -0
- package/dist/trendIndicator/trendIndicator.js +47 -0
- package/dist/trendIndicator/trendIndicatorUtils.d.ts +9 -0
- package/dist/trendIndicator/trendIndicatorUtils.js +18 -0
- package/dist/utils/experimentalFeatures/experimentalContext.d.ts +17 -0
- package/dist/utils/experimentalFeatures/experimentalContext.js +29 -0
- package/dist/utils/experimentalFeatures/index.d.ts +4 -0
- package/dist/utils/experimentalFeatures/index.js +9 -0
- package/dist/utils/experimentalFeatures/registry.d.ts +13 -0
- package/dist/utils/experimentalFeatures/registry.js +11 -0
- package/dist/utils/experimentalFeatures/useExperimentalFeature.d.ts +3 -0
- package/dist/utils/experimentalFeatures/useExperimentalFeature.js +25 -0
- package/dist/utils/localization/translations/ar.json +1 -1
- package/dist/utils/localization/translations/bg-BG.json +1 -1
- package/dist/utils/localization/translations/cs.json +1 -1
- package/dist/utils/localization/translations/da-DK.json +1 -1
- package/dist/utils/localization/translations/de.json +1 -1
- package/dist/utils/localization/translations/el-GR.json +1 -1
- package/dist/utils/localization/translations/en.json +1 -1
- package/dist/utils/localization/translations/es.json +1 -1
- package/dist/utils/localization/translations/et-EE.json +1 -1
- package/dist/utils/localization/translations/fi-FI.json +1 -1
- package/dist/utils/localization/translations/fr-FR.json +1 -1
- package/dist/utils/localization/translations/fr.json +1 -1
- package/dist/utils/localization/translations/hu-HU.json +1 -1
- package/dist/utils/localization/translations/id.json +1 -1
- package/dist/utils/localization/translations/it.json +1 -1
- package/dist/utils/localization/translations/ja.json +1 -1
- package/dist/utils/localization/translations/ka-GE.json +1 -1
- package/dist/utils/localization/translations/ko-KR.json +1 -1
- package/dist/utils/localization/translations/lt-LT.json +1 -1
- package/dist/utils/localization/translations/lv-LV.json +1 -1
- package/dist/utils/localization/translations/ms.json +1 -1
- package/dist/utils/localization/translations/nb-NO.json +1 -1
- package/dist/utils/localization/translations/nl.json +1 -1
- package/dist/utils/localization/translations/pl.json +1 -1
- package/dist/utils/localization/translations/pt-BR.json +1 -1
- package/dist/utils/localization/translations/pt-PT.json +1 -1
- package/dist/utils/localization/translations/ro-RO.json +1 -1
- package/dist/utils/localization/translations/sk-SK.json +1 -1
- package/dist/utils/localization/translations/sv.json +1 -1
- package/dist/utils/localization/translations/th.json +1 -1
- package/dist/utils/localization/translations/tr.json +1 -1
- package/dist/utils/localization/translations/zh-Hans.json +1 -1
- package/dist/utils/localization/translations/zh-TW.json +1 -1
- package/esm/absolute/absolute.js +1 -1
- package/esm/betaPill/betaPill.js +9 -9
- package/esm/commonHelpers/arrowNavigation/arrowNavigationHelper.d.ts +1 -0
- package/esm/commonHelpers/arrowNavigation/arrowNavigationHelper.js +3 -0
- package/esm/commonHelpers/hooks/useTrapFocus.d.ts +9 -0
- package/esm/commonHelpers/hooks/useTrapFocus.js +67 -15
- package/esm/controlledPopup/controlledPopup.d.ts +1 -1
- package/esm/controlledPopup/controlledPopup.js +1 -1
- package/esm/dropdownRaw/dropdownSearchableTrigger.js +1 -1
- package/esm/filtersBar/components/filtersBarRange/filtersBarRange.d.ts +1 -1
- package/esm/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.d.ts +1 -1
- package/esm/filtersBar/filtersBarSidePanel/components/filtersBarSidePanelRange/filtersBarSidePanelRange.js +8 -5
- package/esm/filtersBar/filtersContainer/filtersContainer.js +7 -4
- package/esm/header/header.js +9 -2
- package/esm/header/headerHelpers.js +8 -5
- package/esm/index.d.ts +6 -1
- package/esm/index.js +5 -1
- package/esm/modal/modal.d.ts +48 -0
- package/esm/modal/modal.js +37 -7
- package/esm/nav/navHeader/navHeader.d.ts +1 -1
- package/esm/nav/navHeader/navHeaderSearch/navHeaderSearch.js +1 -1
- package/esm/nav/navItem/navItem.d.ts +15 -2
- package/esm/nav/navItem/navItem.js +49 -7
- package/esm/nav/utils/navUtils.d.ts +2 -2
- package/esm/pillExpandable/pillExpandable.js +6 -3
- package/esm/rangeRaw/components/rangeField.d.ts +2 -1
- package/esm/rangeRaw/components/rangeField.js +4 -3
- package/esm/rangeRaw/rangeRaw.js +8 -5
- package/esm/rangeRaw/types.d.ts +1 -0
- package/esm/sidePanel/sidePanel.js +3 -2
- package/esm/table/selectable/interfaces.d.ts +13 -0
- package/esm/table/selectable/useSelectableRows.js +46 -12
- package/esm/table/selectable/utils/calculateSelectionState.js +35 -0
- package/esm/table/selectable/utils/isRowChecked.js +12 -1
- package/esm/table/table.d.ts +2 -0
- package/esm/table/table.js +2 -0
- package/esm/tabs/tabs.js +14 -5
- package/esm/testHelpers/renderWithFeatures.d.ts +4 -0
- package/esm/testHelpers/renderWithFeatures.js +6 -0
- package/esm/textInputRaw/textInputRaw.js +1 -1
- package/esm/textInputRaw/types.d.ts +1 -0
- package/esm/tooltip/components/inlineTrigger.d.ts +43 -0
- package/esm/tooltip/components/inlineTrigger.js +38 -0
- package/esm/tooltip/tooltip.d.ts +5 -2
- package/esm/tooltip/tooltip.js +15 -4
- package/esm/trendIndicator/trendIndicator.d.ts +47 -0
- package/esm/trendIndicator/trendIndicator.js +43 -0
- package/esm/trendIndicator/trendIndicatorUtils.d.ts +9 -0
- package/esm/trendIndicator/trendIndicatorUtils.js +14 -0
- package/esm/utils/experimentalFeatures/experimentalContext.d.ts +17 -0
- package/esm/utils/experimentalFeatures/experimentalContext.js +25 -0
- package/esm/utils/experimentalFeatures/index.d.ts +4 -0
- package/esm/utils/experimentalFeatures/index.js +3 -0
- package/esm/utils/experimentalFeatures/registry.d.ts +13 -0
- package/esm/utils/experimentalFeatures/registry.js +8 -0
- package/esm/utils/experimentalFeatures/useExperimentalFeature.d.ts +3 -0
- package/esm/utils/experimentalFeatures/useExperimentalFeature.js +21 -0
- package/esm/utils/localization/translations/ar.json +1 -1
- package/esm/utils/localization/translations/bg-BG.json +1 -1
- package/esm/utils/localization/translations/cs.json +1 -1
- package/esm/utils/localization/translations/da-DK.json +1 -1
- package/esm/utils/localization/translations/de.json +1 -1
- package/esm/utils/localization/translations/el-GR.json +1 -1
- package/esm/utils/localization/translations/en.json +1 -1
- package/esm/utils/localization/translations/es.json +1 -1
- package/esm/utils/localization/translations/et-EE.json +1 -1
- package/esm/utils/localization/translations/fi-FI.json +1 -1
- package/esm/utils/localization/translations/fr-FR.json +1 -1
- package/esm/utils/localization/translations/fr.json +1 -1
- package/esm/utils/localization/translations/hu-HU.json +1 -1
- package/esm/utils/localization/translations/id.json +1 -1
- package/esm/utils/localization/translations/it.json +1 -1
- package/esm/utils/localization/translations/ja.json +1 -1
- package/esm/utils/localization/translations/ka-GE.json +1 -1
- package/esm/utils/localization/translations/ko-KR.json +1 -1
- package/esm/utils/localization/translations/lt-LT.json +1 -1
- package/esm/utils/localization/translations/lv-LV.json +1 -1
- package/esm/utils/localization/translations/ms.json +1 -1
- package/esm/utils/localization/translations/nb-NO.json +1 -1
- package/esm/utils/localization/translations/nl.json +1 -1
- package/esm/utils/localization/translations/pl.json +1 -1
- package/esm/utils/localization/translations/pt-BR.json +1 -1
- package/esm/utils/localization/translations/pt-PT.json +1 -1
- package/esm/utils/localization/translations/ro-RO.json +1 -1
- package/esm/utils/localization/translations/sk-SK.json +1 -1
- package/esm/utils/localization/translations/sv.json +1 -1
- package/esm/utils/localization/translations/th.json +1 -1
- package/esm/utils/localization/translations/tr.json +1 -1
- package/esm/utils/localization/translations/zh-Hans.json +1 -1
- package/esm/utils/localization/translations/zh-TW.json +1 -1
- package/package.json +36 -16
- package/dist/banner/utils/isBannerTarget.d.ts +0 -1
- package/dist/banner/utils/isBannerTarget.js +0 -11
- package/esm/banner/utils/isBannerTarget.d.ts +0 -1
- package/esm/banner/utils/isBannerTarget.js +0 -7
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ReactNode, Ref } from "react";
|
|
2
|
+
import "./inlineTrigger.less";
|
|
3
|
+
export interface IInlineTrigger {
|
|
4
|
+
/**
|
|
5
|
+
* The inline text that receives the dotted underline treatment.
|
|
6
|
+
*
|
|
7
|
+
* Accepts any `ReactNode`, but avoid placing interactive elements (buttons,
|
|
8
|
+
* links, inputs) inside — nesting interactive elements is invalid HTML and
|
|
9
|
+
* creates a poor keyboard and screen-reader experience.
|
|
10
|
+
*
|
|
11
|
+
* **For use within body-level text only.** Do not use inside headings, page
|
|
12
|
+
* titles, modal headers, or any non-body typographic context. Apply the
|
|
13
|
+
* desired body typography via `className` (e.g. `zen-body-s-700`).
|
|
14
|
+
*/
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
/** Additional CSS class names applied to the trigger button (e.g. a body typography class). */
|
|
17
|
+
className?: string;
|
|
18
|
+
ref?: Ref<HTMLButtonElement>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* `Tooltip.InlineTrigger` is an inline, dotted-underline trigger for the `Tooltip` component.
|
|
22
|
+
* Pass it as the `trigger` prop of a `Tooltip` to annotate a term within body text.
|
|
23
|
+
*
|
|
24
|
+
* The dotted underline uses the surrounding font colour (`currentColor`) at 15% thickness.
|
|
25
|
+
* The trigger inherits its typography from the surrounding text by default; pass a body
|
|
26
|
+
* typography class via `className` (e.g. `zen-body-s-700`, `zen-body-s-400-italic`) to override
|
|
27
|
+
* it explicitly. All interaction
|
|
28
|
+
* (hover, focus, keyboard, positioning) is handled by the parent `Tooltip` — this component only
|
|
29
|
+
* renders the trigger element and forwards the event handlers and `ref` that `Tooltip` injects.
|
|
30
|
+
*
|
|
31
|
+
* Set an accessible name via the parent `Tooltip`'s `triggerAriaLabel` prop when `children`
|
|
32
|
+
* contains no readable text (e.g. a purely decorative image or icon), so the button is not
|
|
33
|
+
* left without an accessible name (WCAG 4.1.2).
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* <Tooltip alignment="top" trigger={<Tooltip.InlineTrigger className="zen-body-s-700">Inline text</Tooltip.InlineTrigger>}>
|
|
37
|
+
* The tooltip text.
|
|
38
|
+
* </Tooltip>
|
|
39
|
+
*/
|
|
40
|
+
export declare const InlineTrigger: {
|
|
41
|
+
({ children, className, ref, ...injectedProps }: IInlineTrigger): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
displayName: string;
|
|
43
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.InlineTrigger = void 0;
|
|
15
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
const classNames_1 = require("../../commonHelpers/classNames/classNames");
|
|
17
|
+
/**
|
|
18
|
+
* `Tooltip.InlineTrigger` is an inline, dotted-underline trigger for the `Tooltip` component.
|
|
19
|
+
* Pass it as the `trigger` prop of a `Tooltip` to annotate a term within body text.
|
|
20
|
+
*
|
|
21
|
+
* The dotted underline uses the surrounding font colour (`currentColor`) at 15% thickness.
|
|
22
|
+
* The trigger inherits its typography from the surrounding text by default; pass a body
|
|
23
|
+
* typography class via `className` (e.g. `zen-body-s-700`, `zen-body-s-400-italic`) to override
|
|
24
|
+
* it explicitly. All interaction
|
|
25
|
+
* (hover, focus, keyboard, positioning) is handled by the parent `Tooltip` — this component only
|
|
26
|
+
* renders the trigger element and forwards the event handlers and `ref` that `Tooltip` injects.
|
|
27
|
+
*
|
|
28
|
+
* Set an accessible name via the parent `Tooltip`'s `triggerAriaLabel` prop when `children`
|
|
29
|
+
* contains no readable text (e.g. a purely decorative image or icon), so the button is not
|
|
30
|
+
* left without an accessible name (WCAG 4.1.2).
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* <Tooltip alignment="top" trigger={<Tooltip.InlineTrigger className="zen-body-s-700">Inline text</Tooltip.InlineTrigger>}>
|
|
34
|
+
* The tooltip text.
|
|
35
|
+
* </Tooltip>
|
|
36
|
+
*/
|
|
37
|
+
const InlineTrigger = (_a) => {
|
|
38
|
+
var { children, className = "", ref } = _a, injectedProps = __rest(_a, ["children", "className", "ref"]);
|
|
39
|
+
return ((0, jsx_runtime_1.jsx)("button", Object.assign({}, injectedProps, { ref: ref, type: "button", className: (0, classNames_1.classNames)(["zen-tooltip-inline-trigger", className]), children: children })));
|
|
40
|
+
};
|
|
41
|
+
exports.InlineTrigger = InlineTrigger;
|
|
42
|
+
exports.InlineTrigger.displayName = "InlineTrigger";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import React, { PropsWithChildren, ReactElement } from "react";
|
|
1
|
+
import React, { FC, PropsWithChildren, ReactElement } from "react";
|
|
2
2
|
import { IZenComponentProps } from "../commonHelpers/zenComponent";
|
|
3
3
|
import "./tooltip.less";
|
|
4
4
|
import { TAlignment } from "../absolute/absolute";
|
|
5
|
+
import { IInlineTrigger } from "./components/inlineTrigger";
|
|
5
6
|
export type TooltipSize = "large" | "small" | "auto";
|
|
6
7
|
export type TMobileView = "default" | "mobileSheet";
|
|
7
8
|
interface ITooltip extends IZenComponentProps {
|
|
@@ -33,5 +34,7 @@ interface ITooltip extends IZenComponentProps {
|
|
|
33
34
|
*/
|
|
34
35
|
mobileSheetTitle?: ReactElement | string;
|
|
35
36
|
}
|
|
36
|
-
export declare const Tooltip:
|
|
37
|
+
export declare const Tooltip: FC<ITooltip> & {
|
|
38
|
+
InlineTrigger: FC<IInlineTrigger>;
|
|
39
|
+
};
|
|
37
40
|
export {};
|
package/dist/tooltip/tooltip.js
CHANGED
|
@@ -134,6 +134,7 @@ const iconInfoCircle_1 = require("../icons/iconInfoCircle");
|
|
|
134
134
|
const useDrive_1 = require("../utils/theme/useDrive");
|
|
135
135
|
const shield_1 = require("../shield/shield");
|
|
136
136
|
const zen_1 = require("../utils/zen");
|
|
137
|
+
const inlineTrigger_1 = require("./components/inlineTrigger");
|
|
137
138
|
const TOOLTIP_VISIBILITY_DELAY = 100;
|
|
138
139
|
const arrowClasses = {
|
|
139
140
|
top: "zen-tooltip__arrow--top",
|
|
@@ -210,6 +211,7 @@ const EventWrapper = ({
|
|
|
210
211
|
const propsToApply = isCurrentDeviceDesktop ? desktopEvents : mobileEvents;
|
|
211
212
|
return react_1.default.cloneElement(children, propsToApply);
|
|
212
213
|
};
|
|
214
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
213
215
|
const Tooltip = ({
|
|
214
216
|
trigger,
|
|
215
217
|
triggerClassName,
|
|
@@ -242,7 +244,7 @@ const Tooltip = ({
|
|
|
242
244
|
const {
|
|
243
245
|
dark
|
|
244
246
|
} = (0, react_1.useContext)(themeContext_1.themeContext);
|
|
245
|
-
const tooltipAlignment = (0, react_1.useMemo)(() => isMobile ? "bottom" : alignment ||
|
|
247
|
+
const tooltipAlignment = (0, react_1.useMemo)(() => isMobile ? "bottom" : alignment || "end", [isMobile, alignment]);
|
|
246
248
|
const normalizedTooltipAlignment = (0, react_1.useMemo)(() => (0, normalizeLogicalAlignment_1.normalizeLogicalAlignment)(tooltipAlignment, direction), [tooltipAlignment, direction]);
|
|
247
249
|
const TOOLTIP_ARROW_HEIGHT = (0, react_1.useMemo)(() => isMobile || isDrive ? 0 : 6, [isMobile, isDrive]);
|
|
248
250
|
const tooltipAlignmentRef = (0, react_1.useRef)(normalizedTooltipAlignment);
|
|
@@ -280,9 +282,17 @@ const Tooltip = ({
|
|
|
280
282
|
}
|
|
281
283
|
}
|
|
282
284
|
}, [trigger === null || trigger === void 0 ? void 0 : trigger.props, deviceType]);
|
|
283
|
-
|
|
285
|
+
// Apply `triggerAriaLabel` to a `Tooltip.InlineTrigger` trigger (it has no `ariaLabel` prop
|
|
286
|
+
// of its own); the default info-icon trigger below handles `triggerAriaLabel` separately.
|
|
287
|
+
// An `aria-label` set directly on the `Tooltip.InlineTrigger` element takes priority over
|
|
288
|
+
// `triggerAriaLabel`, so we only fall back to `triggerAriaLabel` when the trigger has none.
|
|
289
|
+
const isInlineTrigger = (trigger === null || trigger === void 0 ? void 0 : trigger.type) === inlineTrigger_1.InlineTrigger;
|
|
290
|
+
const triggerOwnAriaLabel = trigger === null || trigger === void 0 ? void 0 : trigger.props["aria-label"];
|
|
291
|
+
const triggerCloneProps = (0, react_1.useMemo)(() => Object.assign(Object.assign({}, isTooltipVisible ? {
|
|
284
292
|
"aria-describedby": tooltipId
|
|
285
|
-
} : {},
|
|
293
|
+
} : {}), isInlineTrigger && triggerAriaLabel && !triggerOwnAriaLabel ? {
|
|
294
|
+
"aria-label": triggerAriaLabel
|
|
295
|
+
} : {}), [isTooltipVisible, tooltipId, isInlineTrigger, triggerAriaLabel, triggerOwnAriaLabel]);
|
|
286
296
|
const tooltipTrigger = (0, react_1.useMemo)(() => trigger ? trigger : (0, jsx_runtime_1.jsx)("button", {
|
|
287
297
|
tabIndex: 0,
|
|
288
298
|
type: "button",
|
|
@@ -496,4 +506,5 @@ const Tooltip = ({
|
|
|
496
506
|
children: [portal, triggerClone]
|
|
497
507
|
});
|
|
498
508
|
};
|
|
499
|
-
exports.Tooltip = Tooltip;
|
|
509
|
+
exports.Tooltip = Tooltip;
|
|
510
|
+
exports.Tooltip.InlineTrigger = inlineTrigger_1.InlineTrigger;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import "./trendIndicator.less";
|
|
2
|
+
import { IZenComponentProps } from "../commonHelpers/zenComponent";
|
|
3
|
+
export type TTrendIndicatorDirection = "up" | "down" | "neutral";
|
|
4
|
+
export type TTrendIndicatorTone = "positive" | "negative" | "neutral";
|
|
5
|
+
export interface ITrendIndicator extends Pick<IZenComponentProps, "className"> {
|
|
6
|
+
/** Primary measured value displayed next to the direction icon, e.g. `"12.4km"`. */
|
|
7
|
+
value: string;
|
|
8
|
+
/**
|
|
9
|
+
* Change delta displayed after the value, e.g. `"+5%"` or `"+12km"`. When
|
|
10
|
+
* {@link ITrendIndicator.direction} is omitted, its sign determines the direction
|
|
11
|
+
* (and therefore the arrow and the default tone).
|
|
12
|
+
*/
|
|
13
|
+
delta: string;
|
|
14
|
+
/**
|
|
15
|
+
* Trend direction — controls the arrow icon. When omitted, it is derived from the
|
|
16
|
+
* sign of {@link ITrendIndicator.delta}.
|
|
17
|
+
*/
|
|
18
|
+
direction?: TTrendIndicatorDirection;
|
|
19
|
+
/**
|
|
20
|
+
* Color tone for the icon and delta. Defaults to the direction (`up` → positive,
|
|
21
|
+
* `down` → negative, `neutral` → neutral). Set it explicitly to decouple color from
|
|
22
|
+
* the arrow — e.g. `direction="up"` with `tone="negative"` for metrics where a rise
|
|
23
|
+
* is undesirable.
|
|
24
|
+
*/
|
|
25
|
+
tone?: TTrendIndicatorTone;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A directional trend indicator: a direction icon, a value, and a change delta.
|
|
29
|
+
* Example: ▲ 12.4km +5%.
|
|
30
|
+
*
|
|
31
|
+
* Built for the `Table` and exposed only as `Table.TrendIndicator`, for use
|
|
32
|
+
* inside a column's inline `render` (or the table's mobile card form).
|
|
33
|
+
* Presentational — it conveys a value and its change and has no interactive
|
|
34
|
+
* behavior.
|
|
35
|
+
*
|
|
36
|
+
* The arrow icon reflects `direction`; the icon and delta take a color `tone`
|
|
37
|
+
* (positive / negative / neutral) from design tokens. Tone defaults to the
|
|
38
|
+
* direction but can be set independently for metrics where a rise is bad. The
|
|
39
|
+
* value uses the primary text color.
|
|
40
|
+
*
|
|
41
|
+
* The direction icon is decorative — direction is also conveyed by the sign of
|
|
42
|
+
* the delta text, so no accessible name is required.
|
|
43
|
+
*/
|
|
44
|
+
export declare const TrendIndicator: {
|
|
45
|
+
({ value, delta, direction, tone, className }: ITrendIndicator): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
displayName: string;
|
|
47
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TrendIndicator = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const classNames_1 = require("../commonHelpers/classNames/classNames");
|
|
6
|
+
const iconChevronTopSmall_1 = require("../icons/iconChevronTopSmall");
|
|
7
|
+
const iconChevronDownSmall_1 = require("../icons/iconChevronDownSmall");
|
|
8
|
+
const iconTrendNeutral_1 = require("../icons/iconTrendNeutral");
|
|
9
|
+
const trendIndicatorUtils_1 = require("./trendIndicatorUtils");
|
|
10
|
+
const DIRECTION_TONE = {
|
|
11
|
+
up: "positive",
|
|
12
|
+
down: "negative",
|
|
13
|
+
neutral: "neutral"
|
|
14
|
+
};
|
|
15
|
+
const DirectionIcon = ({ direction }) => {
|
|
16
|
+
if (direction === "down") {
|
|
17
|
+
return (0, jsx_runtime_1.jsx)(iconChevronDownSmall_1.IconChevronDownSmall, { className: "zen-trend-indicator__icon", size: "large" });
|
|
18
|
+
}
|
|
19
|
+
if (direction === "neutral") {
|
|
20
|
+
return (0, jsx_runtime_1.jsx)(iconTrendNeutral_1.IconTrendNeutral, { className: "zen-trend-indicator__icon", size: "large" });
|
|
21
|
+
}
|
|
22
|
+
return (0, jsx_runtime_1.jsx)(iconChevronTopSmall_1.IconChevronTopSmall, { className: "zen-trend-indicator__icon", size: "large" });
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* A directional trend indicator: a direction icon, a value, and a change delta.
|
|
26
|
+
* Example: ▲ 12.4km +5%.
|
|
27
|
+
*
|
|
28
|
+
* Built for the `Table` and exposed only as `Table.TrendIndicator`, for use
|
|
29
|
+
* inside a column's inline `render` (or the table's mobile card form).
|
|
30
|
+
* Presentational — it conveys a value and its change and has no interactive
|
|
31
|
+
* behavior.
|
|
32
|
+
*
|
|
33
|
+
* The arrow icon reflects `direction`; the icon and delta take a color `tone`
|
|
34
|
+
* (positive / negative / neutral) from design tokens. Tone defaults to the
|
|
35
|
+
* direction but can be set independently for metrics where a rise is bad. The
|
|
36
|
+
* value uses the primary text color.
|
|
37
|
+
*
|
|
38
|
+
* The direction icon is decorative — direction is also conveyed by the sign of
|
|
39
|
+
* the delta text, so no accessible name is required.
|
|
40
|
+
*/
|
|
41
|
+
const TrendIndicator = ({ value, delta, direction, tone, className }) => {
|
|
42
|
+
const resolvedDirection = direction !== null && direction !== void 0 ? direction : (0, trendIndicatorUtils_1.getTrendIndicatorDirection)(delta);
|
|
43
|
+
const resolvedTone = tone !== null && tone !== void 0 ? tone : DIRECTION_TONE[resolvedDirection];
|
|
44
|
+
return ((0, jsx_runtime_1.jsxs)("span", { className: (0, classNames_1.classNames)(["zen-trend-indicator", `zen-trend-indicator--${resolvedTone}`, className !== null && className !== void 0 ? className : ""]), children: [(0, jsx_runtime_1.jsx)(DirectionIcon, { direction: resolvedDirection }), (0, jsx_runtime_1.jsx)("span", { className: "zen-trend-indicator__value", children: value }), (0, jsx_runtime_1.jsx)("span", { className: "zen-trend-indicator__delta", children: delta })] }));
|
|
45
|
+
};
|
|
46
|
+
exports.TrendIndicator = TrendIndicator;
|
|
47
|
+
exports.TrendIndicator.displayName = "TrendIndicator";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { TTrendIndicatorDirection } from "./trendIndicator";
|
|
2
|
+
/**
|
|
3
|
+
* Derives a {@link TTrendIndicatorDirection} from the sign of a delta string.
|
|
4
|
+
*
|
|
5
|
+
* Strips any non-numeric characters (currency symbols, `%`, units) before
|
|
6
|
+
* parsing, so inputs like `"+5%"`, `"-5%"`, and `"+0%"` are handled. A zero,
|
|
7
|
+
* empty, or unparsable delta resolves to `"neutral"`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const getTrendIndicatorDirection: (delta: string) => TTrendIndicatorDirection;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTrendIndicatorDirection = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Derives a {@link TTrendIndicatorDirection} from the sign of a delta string.
|
|
6
|
+
*
|
|
7
|
+
* Strips any non-numeric characters (currency symbols, `%`, units) before
|
|
8
|
+
* parsing, so inputs like `"+5%"`, `"-5%"`, and `"+0%"` are handled. A zero,
|
|
9
|
+
* empty, or unparsable delta resolves to `"neutral"`.
|
|
10
|
+
*/
|
|
11
|
+
const getTrendIndicatorDirection = (delta) => {
|
|
12
|
+
const numeric = parseFloat(delta.replace(/[^0-9.+-]/g, ""));
|
|
13
|
+
if (Number.isNaN(numeric) || numeric === 0) {
|
|
14
|
+
return "neutral";
|
|
15
|
+
}
|
|
16
|
+
return numeric > 0 ? "up" : "down";
|
|
17
|
+
};
|
|
18
|
+
exports.getTrendIndicatorDirection = getTrendIndicatorDirection;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { ExperimentalFeatureId } from "./registry";
|
|
3
|
+
export type FeatureOverrides<TFeatureId extends string = ExperimentalFeatureId> = Partial<Record<TFeatureId, boolean>>;
|
|
4
|
+
type ContextFeatureOverrides = FeatureOverrides<string>;
|
|
5
|
+
interface IExperimentalContext {
|
|
6
|
+
features: ContextFeatureOverrides;
|
|
7
|
+
}
|
|
8
|
+
export declare const experimentalContext: import("react").Context<IExperimentalContext>;
|
|
9
|
+
interface IZenithExperimentalProviderProps {
|
|
10
|
+
features?: Partial<Record<ExperimentalFeatureId, boolean>>;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
export declare const ZenithExperimentalProvider: {
|
|
14
|
+
({ features, children }: IZenithExperimentalProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
displayName: string;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZenithExperimentalProvider = exports.experimentalContext = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const registry_1 = require("./registry");
|
|
7
|
+
const buildDefaultFeatures = () => {
|
|
8
|
+
const defaults = {};
|
|
9
|
+
for (const feature of registry_1.experimentalFeatures) {
|
|
10
|
+
if (feature.state !== registry_1.FeatureState.Killed) {
|
|
11
|
+
defaults[feature.id] = feature.state === registry_1.FeatureState.Enabled;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return defaults;
|
|
15
|
+
};
|
|
16
|
+
const DEFAULT_FEATURES = buildDefaultFeatures();
|
|
17
|
+
const EMPTY_FEATURES = {};
|
|
18
|
+
exports.experimentalContext = (0, react_1.createContext)({
|
|
19
|
+
features: {}
|
|
20
|
+
});
|
|
21
|
+
const ZenithExperimentalProvider = ({ features = EMPTY_FEATURES, children }) => {
|
|
22
|
+
const parentContext = (0, react_1.useContext)(exports.experimentalContext);
|
|
23
|
+
const contextValue = (0, react_1.useMemo)(() => ({
|
|
24
|
+
features: Object.assign(Object.assign(Object.assign({}, DEFAULT_FEATURES), parentContext.features), features)
|
|
25
|
+
}), [features, parentContext.features]);
|
|
26
|
+
return (0, jsx_runtime_1.jsx)(exports.experimentalContext.Provider, { value: contextValue, children: children });
|
|
27
|
+
};
|
|
28
|
+
exports.ZenithExperimentalProvider = ZenithExperimentalProvider;
|
|
29
|
+
exports.ZenithExperimentalProvider.displayName = "ZenithExperimentalProvider";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useExperimentalFeature = exports.ZenithExperimentalProvider = exports.EXPERIMENTAL_FLAGS = void 0;
|
|
4
|
+
var registry_1 = require("./registry");
|
|
5
|
+
Object.defineProperty(exports, "EXPERIMENTAL_FLAGS", { enumerable: true, get: function () { return registry_1.EXPERIMENTAL_FLAGS; } });
|
|
6
|
+
var experimentalContext_1 = require("./experimentalContext");
|
|
7
|
+
Object.defineProperty(exports, "ZenithExperimentalProvider", { enumerable: true, get: function () { return experimentalContext_1.ZenithExperimentalProvider; } });
|
|
8
|
+
var useExperimentalFeature_1 = require("./useExperimentalFeature");
|
|
9
|
+
Object.defineProperty(exports, "useExperimentalFeature", { enumerable: true, get: function () { return useExperimentalFeature_1.useExperimentalFeature; } });
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare enum FeatureState {
|
|
2
|
+
Preview = 0,// OFF by default — consumers may opt in via provider/prop
|
|
3
|
+
Enabled = 1,// ON by default — consumers may opt out locally
|
|
4
|
+
Killed = 2
|
|
5
|
+
}
|
|
6
|
+
export interface IExperimentalFeatureDefinition {
|
|
7
|
+
id: string;
|
|
8
|
+
state: FeatureState;
|
|
9
|
+
description: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const experimentalFeatures: readonly [];
|
|
12
|
+
export type ExperimentalFeatureId = (typeof experimentalFeatures)[number]["id"];
|
|
13
|
+
export declare const EXPERIMENTAL_FLAGS: { [K in ExperimentalFeatureId]: K; };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EXPERIMENTAL_FLAGS = exports.experimentalFeatures = exports.FeatureState = void 0;
|
|
4
|
+
var FeatureState;
|
|
5
|
+
(function (FeatureState) {
|
|
6
|
+
FeatureState[FeatureState["Preview"] = 0] = "Preview";
|
|
7
|
+
FeatureState[FeatureState["Enabled"] = 1] = "Enabled";
|
|
8
|
+
FeatureState[FeatureState["Killed"] = 2] = "Killed"; // OFF, locked — all overrides ignored; awaiting code deletion
|
|
9
|
+
})(FeatureState || (exports.FeatureState = FeatureState = {}));
|
|
10
|
+
exports.experimentalFeatures = [];
|
|
11
|
+
exports.EXPERIMENTAL_FLAGS = Object.fromEntries(exports.experimentalFeatures.map(({ id }) => [id, id]));
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useExperimentalFeature = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const experimentalContext_1 = require("./experimentalContext");
|
|
6
|
+
const registry_1 = require("./registry");
|
|
7
|
+
const experimentalFeatureById = new Map(registry_1.experimentalFeatures.map(feature => [feature.id, feature]));
|
|
8
|
+
const getFeatureOverride = (overrides, featureId) => overrides === null || overrides === void 0 ? void 0 : overrides[featureId];
|
|
9
|
+
const useExperimentalFeature = (key, localOverrides) => {
|
|
10
|
+
const context = (0, react_1.useContext)(experimentalContext_1.experimentalContext);
|
|
11
|
+
const feature = experimentalFeatureById.get(key);
|
|
12
|
+
if ((feature === null || feature === void 0 ? void 0 : feature.state) === registry_1.FeatureState.Killed) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const localOverride = getFeatureOverride(localOverrides, key);
|
|
16
|
+
if (localOverride !== undefined) {
|
|
17
|
+
return localOverride;
|
|
18
|
+
}
|
|
19
|
+
const contextOverride = context.features[key];
|
|
20
|
+
if (contextOverride !== undefined) {
|
|
21
|
+
return contextOverride;
|
|
22
|
+
}
|
|
23
|
+
return (feature === null || feature === void 0 ? void 0 : feature.state) === registry_1.FeatureState.Enabled;
|
|
24
|
+
};
|
|
25
|
+
exports.useExperimentalFeature = useExperimentalFeature;
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"Go to My Reports": "الذهاب إلى تقاريري",
|
|
91
91
|
"There was an issue preparing your report": "حدثت مشكلة في إعداد تقريرك",
|
|
92
92
|
"Your report is being prepared": "يتم إعداد تقريرك",
|
|
93
|
-
"
|
|
93
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "سنخطرك عندما يصبح تقريرك جاهزًا. يمكنك تتبع التقدم بالذهاب إلى صفحة تقاريري.",
|
|
94
94
|
"Your report is ready to download": "تقريرك جاهز للتنزيل",
|
|
95
95
|
"Download now": "تنزيل الآن",
|
|
96
96
|
"Download": "تنزيل",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"Go to My Reports": "Към Моите отчети",
|
|
93
93
|
"There was an issue preparing your report": "Възникна проблем при подготовката на вашия отчет",
|
|
94
94
|
"Your report is being prepared": "Вашият отчет се подготвя",
|
|
95
|
-
"
|
|
95
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Ще ви уведомим, когато отчетът е готов. Можете да проследите напредъка от страницата Моите отчети.",
|
|
96
96
|
"Your report is ready to download": "Вашият отчет е готов за изтегляне",
|
|
97
97
|
"Download now": "Изтеглете сега",
|
|
98
98
|
"Download": "Изтегляне",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"All": "Vše",
|
|
82
82
|
"There was an issue preparing your report": "Při připravování výkazu došlo k problému",
|
|
83
83
|
"Your report is being prepared": "Váš výkaz se připravuje",
|
|
84
|
-
"
|
|
84
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Až bude váš výkaz připraven, upozorníme vás. Průběh můžete sledovat na stránce Moje výkazy.",
|
|
85
85
|
"Your report is ready to download": "Váš výkaz je připraven ke stažení",
|
|
86
86
|
"Download now": "Stáhnout",
|
|
87
87
|
"Download": "Stáhnout",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"Go to My Reports": "Gå til Mine rapporter",
|
|
89
89
|
"There was an issue preparing your report": "Der opstod et problem med at lave din rapport.",
|
|
90
90
|
"Your report is being prepared": "Din rapport er ved at blive lavet.",
|
|
91
|
-
"
|
|
91
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Vi giver dig besked, når din rapport er klar. Du kan tjekke status på siden 'Mine rapporter'.",
|
|
92
92
|
"Your report is ready to download": "Din rapport er klar til download",
|
|
93
93
|
"Download now": "Download nu",
|
|
94
94
|
"Download": "Download",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"All": "Alle",
|
|
82
82
|
"There was an issue preparing your report": "Beim Vorbereiten Ihres Berichts ist ein Problem aufgetreten.",
|
|
83
83
|
"Your report is being prepared": "Ihr Bericht wird vorbereitet",
|
|
84
|
-
"
|
|
84
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Wir werden Sie benachrichtigen, sobald Ihr Bericht fertig ist. Sie können den Fortschritt auf der Seite „Meine Berichte“ verfolgen.",
|
|
85
85
|
"Your report is ready to download": "Ihr Bericht kann heruntergeladen werden.",
|
|
86
86
|
"Download now": "Jetzt herunterladen",
|
|
87
87
|
"Download": "Herunterladen",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"Go to My Reports": "Μετάβαση στις Αναφορές μου",
|
|
93
93
|
"There was an issue preparing your report": "Παρουσιάστηκε πρόβλημα κατά την προετοιμασία της αναφοράς σας",
|
|
94
94
|
"Your report is being prepared": "Η αναφορά σας ετοιμάζεται",
|
|
95
|
-
"
|
|
95
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Θα σας ειδοποιήσουμε όταν η αναφορά σας είναι έτοιμη. Μπορείτε να παρακολουθήσετε την πρόοδο στη σελίδα Αναφορές μου.",
|
|
96
96
|
"Your report is ready to download": "Η αναφορά σας είναι έτοιμη για λήψη",
|
|
97
97
|
"Download now": "Λήψη τώρα",
|
|
98
98
|
"Download": "Λήψη",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"Go to My Reports": "Go to My Reports",
|
|
93
93
|
"There was an issue preparing your report": "There was an issue preparing your report",
|
|
94
94
|
"Your report is being prepared": "Your report is being prepared",
|
|
95
|
-
"
|
|
95
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "You'll be notified when your report is ready. Track the progress on the My Reports page.",
|
|
96
96
|
"Your report is ready to download": "Your report is ready to download",
|
|
97
97
|
"Download now": "Download now",
|
|
98
98
|
"Download": "Download",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"All": "Todo",
|
|
82
82
|
"There was an issue preparing your report": "Hubo un problema al preparar el reporte",
|
|
83
83
|
"Your report is being prepared": "Se está preparando su reporte",
|
|
84
|
-
"
|
|
84
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Le notificaremos cuando su reporte esté listo. Puede realizar un seguimiento del progreso en la página Mis reportes.",
|
|
85
85
|
"Your report is ready to download": "Su reporte está listo para descargar",
|
|
86
86
|
"Download now": "Descargar ahora",
|
|
87
87
|
"Download": "Descargar",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"Go to My Reports": "Mine Minu aruannete juurde",
|
|
93
93
|
"There was an issue preparing your report": "Aruande ettevalmistamisel esines probleem",
|
|
94
94
|
"Your report is being prepared": "Teie aruannet valmistatakse ette",
|
|
95
|
-
"
|
|
95
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Teavitame teid, kui aruanne on valmis. Edenemist saate jälgida lehel Minu aruanded.",
|
|
96
96
|
"Your report is ready to download": "Teie aruanne on allalaadimiseks valmis",
|
|
97
97
|
"Download now": "Laadi alla kohe",
|
|
98
98
|
"Download": "Laadi alla",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"Go to My Reports": "Mene My Reports -sivulle.",
|
|
89
89
|
"There was an issue preparing your report": "Raportin valmistelussa ilmeni ongelma.",
|
|
90
90
|
"Your report is being prepared": "Raporttisi valmistellaan",
|
|
91
|
-
"
|
|
91
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Ilmoitamme sinulle, kun raportti on valmis. Voit seurata edistymistä menemällä My Reports -sivulle.",
|
|
92
92
|
"Your report is ready to download": "Raporttisi on valmis ladattavaksi",
|
|
93
93
|
"Download now": "Lataa nyt",
|
|
94
94
|
"Download": "Lataa",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"All": "Tous",
|
|
82
82
|
"There was an issue preparing your report": "Un problème est survenu lors de la préparation de votre rapport",
|
|
83
83
|
"Your report is being prepared": "Préparation de votre rapport en cours",
|
|
84
|
-
"
|
|
84
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Nous vous notifierons quand votre rapport sera prêt. Vous pouvez suivre les progrès sur la page Mes rapports.",
|
|
85
85
|
"Your report is ready to download": "Votre rapport est prêt à être téléchargé",
|
|
86
86
|
"Download now": "Télécharger maintenant",
|
|
87
87
|
"Download": "Télécharger",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"All": "Tout",
|
|
82
82
|
"There was an issue preparing your report": "Un problème est survenu lors de la préparation de votre rapport",
|
|
83
83
|
"Your report is being prepared": "Votre rapport est en cours de préparation",
|
|
84
|
-
"
|
|
84
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Nous vous aviserons lorsque votre rapport sera prêt. Vous pouvez en suivre le progrès en accédant à la page Mes rapports.",
|
|
85
85
|
"Your report is ready to download": "Votre rapport est prêt à être téléchargé",
|
|
86
86
|
"Download now": "Télécharger maintenant",
|
|
87
87
|
"Download": "Télécharger",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"Go to My Reports": "Menj a Saját jelentések oldalra.",
|
|
89
89
|
"There was an issue preparing your report": "Valami hiba történt a jelentés elkészítése során.",
|
|
90
90
|
"Your report is being prepared": "Éppen készül a jelentésed.",
|
|
91
|
-
"
|
|
91
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Értesítünk, amikor a jelentésed elkészül. Kövesd a folyamatot a Saját jelentések oldalon.",
|
|
92
92
|
"Your report is ready to download": "A jelentésed készen áll a letöltésre.",
|
|
93
93
|
"Download now": "Töltsd le most.",
|
|
94
94
|
"Download": "Letöltés",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"All": "Semua",
|
|
82
82
|
"There was an issue preparing your report": "Terjadi masalah saat menyiapkan laporan Anda.",
|
|
83
83
|
"Your report is being prepared": "Laporan Anda sedang disiapkan",
|
|
84
|
-
"
|
|
84
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Kami akan memberi tahu Anda jika laporan telah siap. Anda dapat melacak progresnya dengan masuk ke halaman Laporan Saya.",
|
|
85
85
|
"Your report is ready to download": "Laporan Anda siap diunduh",
|
|
86
86
|
"Download now": "Unduh sekarang",
|
|
87
87
|
"Download": "Unduh",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"All": "Tutti",
|
|
82
82
|
"There was an issue preparing your report": "Si è verificato un problema nella preparazione del report",
|
|
83
83
|
"Your report is being prepared": "Il report è in fase di preparazione",
|
|
84
|
-
"
|
|
84
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "Verrà inviata una notifica quando il report sarà pronto. È possibile tenere traccia dell'avanzamento andando alla pagina I miei report.",
|
|
85
85
|
"Your report is ready to download": "Il report è pronto per il download",
|
|
86
86
|
"Download now": "Scaricare ora",
|
|
87
87
|
"Download": "Scaricare",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"All": "すべて",
|
|
82
82
|
"There was an issue preparing your report": "レポートの作成中に問題が発生しました",
|
|
83
83
|
"Your report is being prepared": "レポートを作成しています",
|
|
84
|
-
"
|
|
84
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "レポートの準備ができ次第、お知らせします。[マイレポート] ページに移動すると進捗状況を追跡できます。",
|
|
85
85
|
"Your report is ready to download": "レポートをダウンロードする準備ができました",
|
|
86
86
|
"Download now": "今すぐダウンロード",
|
|
87
87
|
"Download": "ダウンロード",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"Go to My Reports": "ჩემი ანგარიშებისკენ",
|
|
93
93
|
"There was an issue preparing your report": "ანგარიშის მომზადებისას პრობლემა წარმოიქმნა",
|
|
94
94
|
"Your report is being prepared": "თქვენი ანგარიში მზადდება",
|
|
95
|
-
"
|
|
95
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "შეგატყობინებთ, როდესაც ანგარიში მზად იქნება. პროგრესის სანახავად გადადით ჩემი ანგარიშების გვერდზე.",
|
|
96
96
|
"Your report is ready to download": "თქვენი ანგარიში ჩამოტვირთვისთვის მზადაა",
|
|
97
97
|
"Download now": "ახლავე ჩამოტვირთვა",
|
|
98
98
|
"Download": "ჩამოტვირთვა",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"Go to My Reports": "'내 보고서'로 이동",
|
|
89
89
|
"There was an issue preparing your report": "보고서를 준비하는 동안 문제가 발생했습니다.",
|
|
90
90
|
"Your report is being prepared": "보고서를 준비하는 중입니다.",
|
|
91
|
-
"
|
|
91
|
+
"You'll be notified when your report is ready. Track the progress on the My Reports page.": "보고서 준비가 완료되면 알려드리겠습니다. '내 보고서' 페이지로 이동하여 진행 상황을 추적할 수 있습니다.",
|
|
92
92
|
"Your report is ready to download": "보고서를 다운로드할 준비가 되었습니다.",
|
|
93
93
|
"Download now": "지금 다운로드",
|
|
94
94
|
"Download": "다운로드",
|