@gooddata/sdk-ui-kit 10.32.0-alpha.27 → 10.32.0-alpha.29
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/esm/@ui/@types/variant.d.ts +4 -0
- package/esm/@ui/@types/variant.d.ts.map +1 -1
- package/esm/@ui/UiButton/UiButton.d.ts +2 -2
- package/esm/@ui/UiButton/UiButton.d.ts.map +1 -1
- package/esm/@ui/UiButton/UiButton.js.map +1 -1
- package/esm/@ui/UiTooltip/UiTooltip.d.ts +7 -0
- package/esm/@ui/UiTooltip/UiTooltip.d.ts.map +1 -0
- package/esm/@ui/UiTooltip/UiTooltip.js +83 -0
- package/esm/@ui/UiTooltip/UiTooltip.js.map +1 -0
- package/esm/@ui/UiTooltip/constants.d.ts +7 -0
- package/esm/@ui/UiTooltip/constants.d.ts.map +1 -0
- package/esm/@ui/UiTooltip/constants.js +12 -0
- package/esm/@ui/UiTooltip/constants.js.map +1 -0
- package/esm/@ui/UiTooltip/types.d.ts +42 -0
- package/esm/@ui/UiTooltip/types.d.ts.map +1 -0
- package/esm/@ui/UiTooltip/types.js +3 -0
- package/esm/@ui/UiTooltip/types.js.map +1 -0
- package/esm/@ui/UiTooltip/utils.d.ts +19 -0
- package/esm/@ui/UiTooltip/utils.d.ts.map +1 -0
- package/esm/@ui/UiTooltip/utils.js +74 -0
- package/esm/@ui/UiTooltip/utils.js.map +1 -0
- package/esm/RecurrenceForm/RecurrenceForm.js +1 -1
- package/esm/RecurrenceForm/RecurrenceForm.js.map +1 -1
- package/esm/RecurrenceForm/RepeatTypeDescription.js +1 -1
- package/esm/RecurrenceForm/RepeatTypeDescription.js.map +1 -1
- package/esm/RecurrenceForm/RepeatTypeSelect.js +1 -1
- package/esm/RecurrenceForm/RepeatTypeSelect.js.map +1 -1
- package/esm/RecurrenceForm/index.d.ts +2 -1
- package/esm/RecurrenceForm/index.d.ts.map +1 -1
- package/esm/RecurrenceForm/index.js +3 -2
- package/esm/RecurrenceForm/index.js.map +1 -1
- package/esm/RecurrenceForm/useCronValidation.js +1 -1
- package/esm/RecurrenceForm/useCronValidation.js.map +1 -1
- package/esm/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.d.ts +14 -0
- package/esm/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.d.ts.map +1 -0
- package/esm/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.js +65 -0
- package/esm/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.js.map +1 -0
- package/esm/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.d.ts +2 -0
- package/esm/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.d.ts.map +1 -0
- package/esm/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.js +80 -0
- package/esm/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.js.map +1 -0
- package/esm/RecurrenceForm/{utils.d.ts → utils/utils.d.ts} +1 -1
- package/esm/RecurrenceForm/utils/utils.d.ts.map +1 -0
- package/esm/RecurrenceForm/{utils.js → utils/utils.js} +2 -2
- package/esm/RecurrenceForm/utils/utils.js.map +1 -0
- package/esm/RecurrenceForm/utils/utils.test.d.ts.map +1 -0
- package/esm/RecurrenceForm/{utils.test.js → utils/utils.test.js} +1 -1
- package/esm/RecurrenceForm/utils/utils.test.js.map +1 -0
- package/esm/index.d.ts +3 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/sdk-ui-kit.d.ts +56 -1
- package/package.json +14 -11
- package/src/@ui/UiButton/UiButton.scss +28 -0
- package/src/@ui/UiTooltip/UiTooltip.scss +23 -0
- package/src/@ui/index.scss +1 -0
- package/styles/css/main.css +38 -0
- package/styles/css/main.css.map +1 -1
- package/esm/RecurrenceForm/utils.d.ts.map +0 -1
- package/esm/RecurrenceForm/utils.js.map +0 -1
- package/esm/RecurrenceForm/utils.test.d.ts.map +0 -1
- package/esm/RecurrenceForm/utils.test.js.map +0 -1
- /package/esm/RecurrenceForm/{utils.test.d.ts → utils/utils.test.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant.d.ts","sourceRoot":"","sources":["../../../src/@ui/@types/variant.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"variant.d.ts","sourceRoot":"","sources":["../../../src/@ui/@types/variant.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { IconType } from "../@types/icon.js";
|
|
3
3
|
import { SizeLarge, SizeMedium, SizeSmall } from "../@types/size.js";
|
|
4
|
-
import { VariantDanger, VariantPopOut, VariantPrimary, VariantSecondary, VariantTertiary } from "../@types/variant.js";
|
|
4
|
+
import { VariantDanger, VariantPopOut, VariantTooltip, VariantPrimary, VariantSecondary, VariantTertiary } from "../@types/variant.js";
|
|
5
5
|
import { IAccessibilityConfigBase } from "../../typings/accessibility.js";
|
|
6
6
|
/**
|
|
7
7
|
* @internal
|
|
@@ -15,7 +15,7 @@ export interface IUiButtonAccessibilityConfig extends IAccessibilityConfigBase {
|
|
|
15
15
|
export interface UiButtonProps {
|
|
16
16
|
id?: string;
|
|
17
17
|
size?: SizeSmall | SizeMedium | SizeLarge;
|
|
18
|
-
variant?: VariantPrimary | VariantSecondary | VariantTertiary | VariantPopOut | VariantDanger;
|
|
18
|
+
variant?: VariantPrimary | VariantSecondary | VariantTertiary | VariantPopOut | VariantDanger | VariantTooltip;
|
|
19
19
|
iconBefore?: IconType;
|
|
20
20
|
iconAfter?: IconType;
|
|
21
21
|
label: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiButton.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiButton/UiButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EACH,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAG1E;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,wBAAwB;IAC1E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"UiButton.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiButton/UiButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EACH,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,eAAe,EAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAG1E;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,wBAAwB;IAC1E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,OAAO,CAAC,EACF,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,aAAa,GACb,cAAc,CAAC;IACrB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC3D,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;CACtD;AAQD;;GAEG;AACH,eAAO,MAAM,QAAQ,yFA4DpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiButton.js","sourceRoot":"","sources":["../../../src/@ui/UiButton/UiButton.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UiButton.js","sourceRoot":"","sources":["../../../src/@ui/UiButton/UiButton.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAW1C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmC7C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAEzC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,SAAiB,EAAE,EAAE;IAC5D,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;AACvG,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAC9B,CACI,EACI,EAAE,EACF,IAAI,GAAG,QAAQ,EACf,OAAO,GAAG,WAAW,EACrB,KAAK,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,OAAO,EACP,SAAS,EACT,MAAM,EACN,UAAU,EACV,mBAAmB,GACtB,EACD,GAAG,EACL,EAAE;IACA,MAAM,QAAQ,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC;IACnC,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC;IAEjC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAEnG,OAAO,CACH,gCACI,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,EACvE,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,aACX,MAAM,iBACF,MAAM,gBACP,mBAAmB,EAAE,SAAS,qBACzB,mBAAmB,EAAE,cAAc,sBAClC,mBAAmB,EAAE,eAAe,mBACvC,mBAAmB,EAAE,YAAY,EAChD,IAAI,EAAE,mBAAmB,EAAE,IAAI;QAE9B,UAAU,CAAC,CAAC,CAAC,CACV,oBAAC,MAAM,IACH,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,mBAAmB,EAAE,cAAc,GACjD,CACL,CAAC,CAAC,CAAC,IAAI;QACR,8BAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,IAAG,KAAK,CAAQ;QACzC,SAAS,CAAC,CAAC,CAAC,CACT,oBAAC,MAAM,IACH,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,mBAAmB,EAAE,cAAc,GACjD,CACL,CAAC,CAAC,CAAC,IAAI,CACH,CACZ,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiTooltip.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiTooltip/UiTooltip.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAc5C;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA+H9C,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { useFloating, autoUpdate, flip, offset, arrow, useHover, useFocus, useClick, useDismiss, useInteractions, FloatingPortal, FloatingArrow, } from "@floating-ui/react";
|
|
3
|
+
import React, { useRef, useMemo, useState } from "react";
|
|
4
|
+
import { bem } from "../@utils/bem.js";
|
|
5
|
+
import { computeArrowOffset, computeTooltipShift, getDimensionsFromRect, getDimensionsFromRef, getFlipFallbackOrder, getOppositeBasicPlacement, } from "./utils.js";
|
|
6
|
+
import { ARROW_HEIGHT, ARROW_WIDTH } from "./constants.js";
|
|
7
|
+
import { useTheme, useIsScopeThemed, ConditionalScopedThemeProvider } from "@gooddata/sdk-ui-theme-provider";
|
|
8
|
+
const { b, e } = bem("gd-ui-kit-tooltip");
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export const UiTooltip = ({ anchor, content, arrowPlacement = "top", triggerBy = [], hoverOpenDelay = 0, hoverCloseDelay = 0, showArrow = true, width, offset: offsetProp, optimalPlacement = false, accessibilityConfig, }) => {
|
|
13
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
14
|
+
const arrowRef = useRef(null);
|
|
15
|
+
const themeFromContext = useTheme();
|
|
16
|
+
const isScopeThemed = useIsScopeThemed();
|
|
17
|
+
const theme = isScopeThemed ? themeFromContext : undefined;
|
|
18
|
+
const customShiftMiddleware = {
|
|
19
|
+
name: "customShift",
|
|
20
|
+
fn(args) {
|
|
21
|
+
const { x, y, rects, middlewareData } = args;
|
|
22
|
+
const currentFloatingDimensions = getDimensionsFromRect(rects?.floating);
|
|
23
|
+
const enable = !middlewareData?.flip?.index;
|
|
24
|
+
const shift = computeTooltipShift(arrowPlacement, currentFloatingDimensions, enable, theme);
|
|
25
|
+
return {
|
|
26
|
+
x: shift.x ? x + shift.x : x,
|
|
27
|
+
y: shift.y ? y + shift.y : y,
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const { refs, floatingStyles, context, middlewareData } = useFloating({
|
|
32
|
+
open: isOpen,
|
|
33
|
+
onOpenChange: setIsOpen,
|
|
34
|
+
placement: getOppositeBasicPlacement(arrowPlacement),
|
|
35
|
+
whileElementsMounted: autoUpdate,
|
|
36
|
+
middleware: [
|
|
37
|
+
offset(offsetProp ?? ARROW_HEIGHT),
|
|
38
|
+
customShiftMiddleware,
|
|
39
|
+
...(optimalPlacement
|
|
40
|
+
? [
|
|
41
|
+
flip({
|
|
42
|
+
fallbackPlacements: getFlipFallbackOrder(arrowPlacement),
|
|
43
|
+
fallbackStrategy: "initialPlacement",
|
|
44
|
+
}),
|
|
45
|
+
]
|
|
46
|
+
: []),
|
|
47
|
+
arrow({
|
|
48
|
+
element: arrowRef,
|
|
49
|
+
}),
|
|
50
|
+
],
|
|
51
|
+
});
|
|
52
|
+
const triggerDimensions = getDimensionsFromRef(refs.reference);
|
|
53
|
+
const floatingDimensions = getDimensionsFromRef(refs.floating);
|
|
54
|
+
const showTooltip = useMemo(() => isOpen || triggerBy.length === 0, [triggerBy, isOpen]);
|
|
55
|
+
// trigger events
|
|
56
|
+
const hover = useHover(context, {
|
|
57
|
+
enabled: triggerBy.includes("hover"),
|
|
58
|
+
move: false,
|
|
59
|
+
delay: {
|
|
60
|
+
open: hoverOpenDelay,
|
|
61
|
+
close: hoverCloseDelay,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
const focus = useFocus(context, {
|
|
65
|
+
enabled: triggerBy.includes("focus"),
|
|
66
|
+
});
|
|
67
|
+
const click = useClick(context, {
|
|
68
|
+
enabled: triggerBy.includes("click"),
|
|
69
|
+
});
|
|
70
|
+
//close on escape
|
|
71
|
+
const dismiss = useDismiss(context);
|
|
72
|
+
const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, hover, focus, click]);
|
|
73
|
+
return (React.createElement(React.Fragment, null,
|
|
74
|
+
React.createElement("div", { className: e("anchor"), ref: refs.setReference, ...getReferenceProps() }, anchor),
|
|
75
|
+
React.createElement(FloatingPortal, null, showTooltip ? (React.createElement(ConditionalScopedThemeProvider, null,
|
|
76
|
+
React.createElement("div", { className: b({ width: width === "auto" ? "auto" : undefined }), ref: refs.setFloating, style: {
|
|
77
|
+
...floatingStyles,
|
|
78
|
+
width: width === "auto" ? triggerDimensions.width : width,
|
|
79
|
+
}, "aria-label": accessibilityConfig?.ariaLabel, "aria-labelledby": accessibilityConfig?.ariaLabelledBy, "aria-describedby": accessibilityConfig?.ariaDescribedBy, "aria-expanded": accessibilityConfig?.ariaExpanded, role: accessibilityConfig?.role ?? "tooltip", ...getFloatingProps() },
|
|
80
|
+
content,
|
|
81
|
+
showArrow ? (React.createElement(FloatingArrow, { staticOffset: computeArrowOffset(arrowPlacement, floatingDimensions, !middlewareData?.flip?.index, theme), className: e("arrow"), ref: arrowRef, tipRadius: 1, context: context, height: ARROW_HEIGHT, width: ARROW_WIDTH })) : null))) : null)));
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=UiTooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UiTooltip.js","sourceRoot":"","sources":["../../../src/@ui/UiTooltip/UiTooltip.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Placement } from "@floating-ui/react";
|
|
2
|
+
export declare const ARROW_HEIGHT = 6;
|
|
3
|
+
export declare const ARROW_WIDTH = 12;
|
|
4
|
+
export declare const DEFAULT_BORDER_RADIUS = 3;
|
|
5
|
+
export declare const ADDITIONAL_ARROW_EDGE_OFFSET = 2;
|
|
6
|
+
export declare const oppositeSides: Partial<Record<Placement, Placement>>;
|
|
7
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiTooltip/constants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAK/D,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
export const ARROW_HEIGHT = 6;
|
|
3
|
+
export const ARROW_WIDTH = 12;
|
|
4
|
+
export const DEFAULT_BORDER_RADIUS = 3;
|
|
5
|
+
export const ADDITIONAL_ARROW_EDGE_OFFSET = 2;
|
|
6
|
+
export const oppositeSides = {
|
|
7
|
+
top: "bottom",
|
|
8
|
+
bottom: "top",
|
|
9
|
+
left: "right",
|
|
10
|
+
right: "left",
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/@ui/UiTooltip/constants.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAIhC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAA0C;IAChE,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,MAAM;CAChB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IAccessibilityConfigBase } from "../../typings/accessibility.js";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export type TooltipArrowPlacement = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end";
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export interface UiTooltipProps {
|
|
11
|
+
/** Position of the tooltip arrow relative to the tooltip, controls also the position of the tooltip */
|
|
12
|
+
arrowPlacement?: TooltipArrowPlacement;
|
|
13
|
+
/** Anchor element to be used as reference for the tooltip */
|
|
14
|
+
anchor: React.ReactNode;
|
|
15
|
+
/** Content to be rendered inside the tooltip */
|
|
16
|
+
content: React.ReactNode;
|
|
17
|
+
/** Whether tooltip should show on hover, focus or click */
|
|
18
|
+
triggerBy?: Array<"hover" | "focus" | "click">;
|
|
19
|
+
/** Delay in milliseconds before showing tooltip on hover */
|
|
20
|
+
hoverOpenDelay?: number;
|
|
21
|
+
/** Delay in milliseconds before hiding tooltip after hover out */
|
|
22
|
+
hoverCloseDelay?: number;
|
|
23
|
+
/** Whether to show the arrow pointer */
|
|
24
|
+
showArrow?: boolean;
|
|
25
|
+
/** Width of the tooltip in pixels, or 'auto' to match anchor width */
|
|
26
|
+
width?: number | "auto";
|
|
27
|
+
/** Distance in pixels between tooltip and anchor element, default is arrow height */
|
|
28
|
+
offset?: number;
|
|
29
|
+
/** Whether tooltip should automatically adjust position if it would render outside viewport */
|
|
30
|
+
optimalPlacement?: boolean;
|
|
31
|
+
/** ARIA attributes configuration for accessibility */
|
|
32
|
+
accessibilityConfig?: IAccessibilityConfigBase;
|
|
33
|
+
}
|
|
34
|
+
export type Dimensions = {
|
|
35
|
+
width: number;
|
|
36
|
+
height: number;
|
|
37
|
+
};
|
|
38
|
+
export type PlacementShift = {
|
|
39
|
+
x?: number;
|
|
40
|
+
y?: number;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiTooltip/types.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC3B,KAAK,GACL,WAAW,GACX,SAAS,GACT,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,UAAU,GACV,OAAO,GACP,aAAa,GACb,WAAW,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,uGAAuG;IACvG,cAAc,CAAC,EAAE,qBAAqB,CAAC;IAEvC,6DAA6D;IAC7D,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IAExB,gDAAgD;IAChD,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IAEzB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;IAE/C,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kEAAkE;IAClE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;CAClD;AAED,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/@ui/UiTooltip/types.ts"],"names":[],"mappings":"AAAA,gCAAgC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Placement, ReferenceType } from "@floating-ui/react";
|
|
2
|
+
import { Dimensions, PlacementShift, TooltipArrowPlacement } from "./types.js";
|
|
3
|
+
import { ITheme } from "@gooddata/sdk-model";
|
|
4
|
+
export declare const getOppositeBasicPlacement: (arrowPlacement: TooltipArrowPlacement) => Placement;
|
|
5
|
+
export declare const getFlipFallbackOrder: (arrowPlacement: TooltipArrowPlacement) => Placement[];
|
|
6
|
+
export declare const getDimensionsFromRect: (rect: DOMRect | {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
} | null) => {
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
};
|
|
13
|
+
export declare const getDimensionsFromRef: (ref: React.MutableRefObject<ReferenceType | null>) => {
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
};
|
|
17
|
+
export declare const computeTooltipShift: (arrowPlacement: TooltipArrowPlacement, floatingDimensions: Dimensions, isEnabled: boolean, theme?: ITheme) => PlacementShift;
|
|
18
|
+
export declare const computeArrowOffset: (arrowPlacement: TooltipArrowPlacement, floatingDimensions: Dimensions, isEnabled: boolean, theme?: ITheme) => number;
|
|
19
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiTooltip/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAO9D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAO7C,eAAO,MAAM,yBAAyB,mBAAoB,qBAAqB,cAG9E,CAAC;AAEF,eAAO,MAAM,oBAAoB,mBAAoB,qBAAqB,gBAQzE,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI;;;CAE7F,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAS,MAAM,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAC;;;CAGrF,CAAC;AAgBF,eAAO,MAAM,mBAAmB,mBACZ,qBAAqB,sBACjB,UAAU,aACnB,OAAO,UACV,MAAM,KACf,cAsBF,CAAC;AAEF,eAAO,MAAM,kBAAkB,mBACX,qBAAqB,sBACjB,UAAU,aACnB,OAAO,UACV,MAAM,WAejB,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { ARROW_WIDTH, ADDITIONAL_ARROW_EDGE_OFFSET, oppositeSides, DEFAULT_BORDER_RADIUS, } from "./constants.js";
|
|
3
|
+
const parsePlacement = (placement) => {
|
|
4
|
+
const [basicPlacement, axisPlacement] = placement.split("-");
|
|
5
|
+
return { basicPlacement, axisPlacement };
|
|
6
|
+
};
|
|
7
|
+
export const getOppositeBasicPlacement = (arrowPlacement) => {
|
|
8
|
+
const basicPlacement = parsePlacement(arrowPlacement).basicPlacement;
|
|
9
|
+
return oppositeSides[basicPlacement];
|
|
10
|
+
};
|
|
11
|
+
export const getFlipFallbackOrder = (arrowPlacement) => {
|
|
12
|
+
const basicPlacement = parsePlacement(arrowPlacement).basicPlacement;
|
|
13
|
+
const oppositePlacement = getOppositeBasicPlacement(arrowPlacement);
|
|
14
|
+
const remaining = Object.values(oppositeSides).filter((side) => side !== basicPlacement && side !== oppositePlacement);
|
|
15
|
+
return [basicPlacement, oppositePlacement, ...remaining];
|
|
16
|
+
};
|
|
17
|
+
export const getDimensionsFromRect = (rect) => {
|
|
18
|
+
return { width: rect?.width ?? 0, height: rect?.height ?? 0 };
|
|
19
|
+
};
|
|
20
|
+
export const getDimensionsFromRef = (ref) => {
|
|
21
|
+
const rect = ref?.current?.getBoundingClientRect?.();
|
|
22
|
+
return getDimensionsFromRect(rect);
|
|
23
|
+
};
|
|
24
|
+
//get border radius from style variable, in case of scoped theme get directly from theme
|
|
25
|
+
const getBorderRadius = (theme) => {
|
|
26
|
+
const borderRadius = theme?.modal?.borderRadius ??
|
|
27
|
+
getComputedStyle(document.documentElement).getPropertyValue("--gd-modal-borderRadius").trim();
|
|
28
|
+
const numericValue = parseInt(borderRadius, 10);
|
|
29
|
+
return isNaN(numericValue) ? DEFAULT_BORDER_RADIUS : numericValue;
|
|
30
|
+
};
|
|
31
|
+
const getArrowEdgeOffset = (theme) => {
|
|
32
|
+
const tooltipBorderRadius = getBorderRadius(theme);
|
|
33
|
+
return tooltipBorderRadius + ADDITIONAL_ARROW_EDGE_OFFSET;
|
|
34
|
+
};
|
|
35
|
+
export const computeTooltipShift = (arrowPlacement, floatingDimensions, isEnabled, theme) => {
|
|
36
|
+
const { basicPlacement, axisPlacement } = parsePlacement(arrowPlacement);
|
|
37
|
+
const borderArrowOffset = getArrowEdgeOffset(theme) + ARROW_WIDTH / 2;
|
|
38
|
+
if (isEnabled) {
|
|
39
|
+
let shiftProp = "";
|
|
40
|
+
let shiftValue = 0;
|
|
41
|
+
if (["top", "bottom"].includes(basicPlacement)) {
|
|
42
|
+
shiftProp = "x";
|
|
43
|
+
shiftValue = floatingDimensions.width / 2 - borderArrowOffset;
|
|
44
|
+
}
|
|
45
|
+
else if (["left", "right"].includes(basicPlacement)) {
|
|
46
|
+
shiftProp = "y";
|
|
47
|
+
shiftValue = floatingDimensions.height / 2 - borderArrowOffset;
|
|
48
|
+
}
|
|
49
|
+
if (axisPlacement === "start") {
|
|
50
|
+
return { [shiftProp]: shiftValue };
|
|
51
|
+
}
|
|
52
|
+
else if (axisPlacement === "end") {
|
|
53
|
+
return { [shiftProp]: -shiftValue };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return {};
|
|
57
|
+
};
|
|
58
|
+
export const computeArrowOffset = (arrowPlacement, floatingDimensions, isEnabled, theme) => {
|
|
59
|
+
if (isEnabled) {
|
|
60
|
+
const arrowEdgeOffset = getArrowEdgeOffset(theme);
|
|
61
|
+
const { basicPlacement, axisPlacement } = parsePlacement(arrowPlacement);
|
|
62
|
+
const sideLength = ["top", "bottom"].includes(basicPlacement)
|
|
63
|
+
? floatingDimensions.width
|
|
64
|
+
: floatingDimensions.height;
|
|
65
|
+
if (axisPlacement === "start") {
|
|
66
|
+
return arrowEdgeOffset;
|
|
67
|
+
}
|
|
68
|
+
else if (axisPlacement === "end") {
|
|
69
|
+
return sideLength - (ARROW_WIDTH + arrowEdgeOffset);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return 0;
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/@ui/UiTooltip/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import React, { useCallback, useState } from "react";
|
|
|
3
3
|
import { useIntl } from "react-intl";
|
|
4
4
|
import { IntlWrapper } from "@gooddata/sdk-ui";
|
|
5
5
|
import cx from "classnames";
|
|
6
|
-
import { transformCronExpressionToRecurrenceType, constructCronExpression, isCronExpressionValid, } from "./utils.js";
|
|
6
|
+
import { transformCronExpressionToRecurrenceType, constructCronExpression, isCronExpressionValid, } from "./utils/utils.js";
|
|
7
7
|
import { DateTime } from "./DateTime.js";
|
|
8
8
|
import { Recurrence } from "./Recurrence.js";
|
|
9
9
|
import { messages } from "./locales.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecurrenceForm.js","sourceRoot":"","sources":["../../src/RecurrenceForm/RecurrenceForm.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EACH,uCAAuC,EACvC,uBAAuB,EACvB,qBAAqB,GACxB,MAAM,
|
|
1
|
+
{"version":3,"file":"RecurrenceForm.js","sourceRoot":"","sources":["../../src/RecurrenceForm/RecurrenceForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2024-2025 GoodData Corporation
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { useIntl } from "react-intl";
|
|
4
|
-
import { transformRecurrenceTypeToDescription } from "./utils.js";
|
|
4
|
+
import { transformRecurrenceTypeToDescription } from "./utils/utils.js";
|
|
5
5
|
export const RepeatTypeDescription = (props) => {
|
|
6
6
|
const intl = useIntl();
|
|
7
7
|
const { repeatType, startDate, weekStart, timezone, showTimezone } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RepeatTypeDescription.js","sourceRoot":"","sources":["../../src/RecurrenceForm/RepeatTypeDescription.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,EAAE,oCAAoC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RepeatTypeDescription.js","sourceRoot":"","sources":["../../src/RecurrenceForm/RepeatTypeDescription.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,EAAE,oCAAoC,EAAE,MAAM,kBAAkB,CAAC;AAUxE,MAAM,CAAC,MAAM,qBAAqB,GAA0C,CAAC,KAAK,EAAE,EAAE;IAClF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE3E,OAAO,CACH,6BAAK,SAAS,EAAC,sFAAsF;QACjG;YACK,oCAAoC,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC;YAC5E,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,CACxB;gBACK,GAAG;gBACH,QAAQ;;gBAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAClD,CACN,CAAC,CAAC,CAAC,IAAI,CACL,CACL,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { invariant } from "ts-invariant";
|
|
|
5
5
|
import { Dropdown, DropdownButton } from "../Dropdown/index.js";
|
|
6
6
|
import { SingleSelectListItem } from "../List/index.js";
|
|
7
7
|
import { DEFAULT_DROPDOWN_ALIGN_POINTS, DEFAULT_DROPDOWN_WIDTH, DEFAULT_DROPDOWN_ZINDEX, RECURRENCE_TYPES, } from "./constants.js";
|
|
8
|
-
import { getWeekNumber, getIntlDayName, isLastOccurrenceOfWeekdayInMonth } from "./utils.js";
|
|
8
|
+
import { getWeekNumber, getIntlDayName, isLastOccurrenceOfWeekdayInMonth } from "./utils/utils.js";
|
|
9
9
|
import { messages } from "./locales.js";
|
|
10
10
|
import { UiListbox } from "../@ui/UiListbox/UiListbox.js";
|
|
11
11
|
const getLocalizationKey = (id) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RepeatTypeSelect.js","sourceRoot":"","sources":["../../src/RecurrenceForm/RepeatTypeSelect.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAgC,OAAO,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACH,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gCAAgC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RepeatTypeSelect.js","sourceRoot":"","sources":["../../src/RecurrenceForm/RepeatTypeSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@ export type { IRecurrenceFormProps } from "./RecurrenceForm.js";
|
|
|
2
2
|
export { RecurrenceForm } from "./RecurrenceForm.js";
|
|
3
3
|
export type { IRecurrenceProps } from "./Recurrence.js";
|
|
4
4
|
export { Recurrence } from "./Recurrence.js";
|
|
5
|
-
export { transformCronExpressionToRecurrenceType } from "./utils.js";
|
|
5
|
+
export { transformCronExpressionToRecurrenceType } from "./utils/utils.js";
|
|
6
|
+
export { simpleRecurrenceTypeMappingFn } from "./utils/simpleRecurrenceTypeMappingFn.js";
|
|
6
7
|
export type { RecurrenceType, RecurrenceTypeKey } from "./types.js";
|
|
7
8
|
export { RECURRENCE_TYPES } from "./constants.js";
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/RecurrenceForm/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uCAAuC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/RecurrenceForm/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uCAAuC,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
// (C) 2024 GoodData Corporation
|
|
1
|
+
// (C) 2024-2025 GoodData Corporation
|
|
2
2
|
export { RecurrenceForm } from "./RecurrenceForm.js";
|
|
3
3
|
export { Recurrence } from "./Recurrence.js";
|
|
4
|
-
export { transformCronExpressionToRecurrenceType } from "./utils.js";
|
|
4
|
+
export { transformCronExpressionToRecurrenceType } from "./utils/utils.js";
|
|
5
|
+
export { simpleRecurrenceTypeMappingFn } from "./utils/simpleRecurrenceTypeMappingFn.js";
|
|
5
6
|
export { RECURRENCE_TYPES } from "./constants.js";
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/RecurrenceForm/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/RecurrenceForm/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uCAAuC,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAEzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2024-2025 GoodData Corporation
|
|
2
2
|
import { useCallback, useState } from "react";
|
|
3
3
|
import * as cronParser from "cron-parser";
|
|
4
|
-
import { isCronExpressionValid } from "./utils.js";
|
|
4
|
+
import { isCronExpressionValid } from "./utils/utils.js";
|
|
5
5
|
import { defineMessages } from "react-intl";
|
|
6
6
|
export var RecurrenceFormCronErrorTypes;
|
|
7
7
|
(function (RecurrenceFormCronErrorTypes) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCronValidation.js","sourceRoot":"","sources":["../../src/RecurrenceForm/useCronValidation.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useCronValidation.js","sourceRoot":"","sources":["../../src/RecurrenceForm/useCronValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { WeekStart } from "@gooddata/sdk-model";
|
|
2
|
+
import { RecurrenceType } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Simple recurrence type mapping function.
|
|
5
|
+
*
|
|
6
|
+
* Maps cron expressions to recurrence types based on simple fixed patterns.
|
|
7
|
+
* Any cron expression that doesn't match the standard patterns will be classified as CRON (custom).
|
|
8
|
+
* We are deliberately using just a few simple patterns to avoid complexity.
|
|
9
|
+
* Users can still use CRON for any customization.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare const simpleRecurrenceTypeMappingFn: (_date?: Date | null, cronExpression?: string, allowHourlyRecurrence?: boolean, _showInheritValue?: boolean, weekStart?: WeekStart) => RecurrenceType;
|
|
14
|
+
//# sourceMappingURL=simpleRecurrenceTypeMappingFn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simpleRecurrenceTypeMappingFn.d.ts","sourceRoot":"","sources":["../../../src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAuC7C;;;;;;;;;GASG;AACH,eAAO,MAAM,6BAA6B,WAC9B,IAAI,GAAG,IAAI,mBACF,MAAM,0BACC,OAAO,sBACX,OAAO,cACf,SAAS,KACtB,cAyBF,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { RECURRENCE_TYPES } from "../constants.js";
|
|
3
|
+
// Hourly patterns
|
|
4
|
+
const HOURLY_PATTERNS = [
|
|
5
|
+
/^0 0 \* \? \* \*$/, // Every hour at minute 0
|
|
6
|
+
];
|
|
7
|
+
// Daily patterns
|
|
8
|
+
const DAILY_PATTERNS = [
|
|
9
|
+
/^0 0 0 \? \* \*$/, // Every day at midnight
|
|
10
|
+
];
|
|
11
|
+
// Helper function to get weekly patterns based on week start
|
|
12
|
+
const getWeeklyPatterns = (weekStart) => {
|
|
13
|
+
// WeekStart.Sunday = 0, WeekStart.Monday = 1
|
|
14
|
+
const firstDayOfWeek = weekStart === "Sunday" ? 0 : 1;
|
|
15
|
+
const firstDayOfWeekString = weekStart === "Sunday" ? "SUN" : "MON";
|
|
16
|
+
return [
|
|
17
|
+
// Numeric patterns
|
|
18
|
+
new RegExp(`^0 0 0 \\? \\* ${firstDayOfWeek}$`), // First day of week at midnight
|
|
19
|
+
// String patterns
|
|
20
|
+
new RegExp(`^0 0 0 \\? \\* ${firstDayOfWeekString}$`), // First day of week at midnight (string format)
|
|
21
|
+
];
|
|
22
|
+
};
|
|
23
|
+
// Monthly patterns
|
|
24
|
+
const MONTHLY_PATTERNS = [
|
|
25
|
+
/^0 0 0 1 \* \*$/, // First day of every month at midnight
|
|
26
|
+
];
|
|
27
|
+
const getDefaultCronExpression = (allowHourlyRecurrence) => {
|
|
28
|
+
if (allowHourlyRecurrence) {
|
|
29
|
+
return `0 0 * ? * *`; // Every hour at minute 0
|
|
30
|
+
}
|
|
31
|
+
return `0 0 0 ? * *`; // Every day at midnight
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Simple recurrence type mapping function.
|
|
35
|
+
*
|
|
36
|
+
* Maps cron expressions to recurrence types based on simple fixed patterns.
|
|
37
|
+
* Any cron expression that doesn't match the standard patterns will be classified as CRON (custom).
|
|
38
|
+
* We are deliberately using just a few simple patterns to avoid complexity.
|
|
39
|
+
* Users can still use CRON for any customization.
|
|
40
|
+
*
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
export const simpleRecurrenceTypeMappingFn = (_date, cronExpression, allowHourlyRecurrence, _showInheritValue, weekStart) => {
|
|
44
|
+
const normalizedCron = cronExpression?.trim() ?? getDefaultCronExpression(allowHourlyRecurrence);
|
|
45
|
+
// Hourly patterns (only if allowed)
|
|
46
|
+
if (allowHourlyRecurrence && HOURLY_PATTERNS.some((pattern) => pattern.test(normalizedCron))) {
|
|
47
|
+
return RECURRENCE_TYPES.HOURLY;
|
|
48
|
+
}
|
|
49
|
+
// Daily patterns
|
|
50
|
+
if (DAILY_PATTERNS.some((pattern) => pattern.test(normalizedCron))) {
|
|
51
|
+
return RECURRENCE_TYPES.DAILY;
|
|
52
|
+
}
|
|
53
|
+
// Weekly patterns (only first day of week based on weekStart)
|
|
54
|
+
const weeklyPatterns = getWeeklyPatterns(weekStart);
|
|
55
|
+
if (weeklyPatterns.some((pattern) => pattern.test(normalizedCron))) {
|
|
56
|
+
return RECURRENCE_TYPES.WEEKLY;
|
|
57
|
+
}
|
|
58
|
+
// Monthly patterns
|
|
59
|
+
if (MONTHLY_PATTERNS.some((pattern) => pattern.test(normalizedCron))) {
|
|
60
|
+
return RECURRENCE_TYPES.MONTHLY;
|
|
61
|
+
}
|
|
62
|
+
// If no standard pattern matches, classify as custom cron
|
|
63
|
+
return RECURRENCE_TYPES.CRON;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=simpleRecurrenceTypeMappingFn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simpleRecurrenceTypeMappingFn.js","sourceRoot":"","sources":["../../../src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,kBAAkB;AAClB,MAAM,eAAe,GAAG;IACpB,mBAAmB,EAAE,yBAAyB;CACjD,CAAC;AAEF,iBAAiB;AACjB,MAAM,cAAc,GAAG;IACnB,kBAAkB,EAAE,wBAAwB;CAC/C,CAAC;AAEF,6DAA6D;AAC7D,MAAM,iBAAiB,GAAG,CAAC,SAAoB,EAAY,EAAE;IACzD,6CAA6C;IAC7C,MAAM,cAAc,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,oBAAoB,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAEpE,OAAO;QACH,mBAAmB;QACnB,IAAI,MAAM,CAAC,kBAAkB,cAAc,GAAG,CAAC,EAAE,gCAAgC;QACjF,kBAAkB;QAClB,IAAI,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,CAAC,EAAE,gDAAgD;KAC1G,CAAC;AACN,CAAC,CAAC;AAEF,mBAAmB;AACnB,MAAM,gBAAgB,GAAG;IACrB,iBAAiB,EAAE,uCAAuC;CAC7D,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,qBAA8B,EAAE,EAAE;IAChE,IAAI,qBAAqB,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,CAAC,yBAAyB;IACnD,CAAC;IAED,OAAO,aAAa,CAAC,CAAC,wBAAwB;AAClD,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CACzC,KAAmB,EACnB,cAAuB,EACvB,qBAA+B,EAC/B,iBAA2B,EAC3B,SAAqB,EACP,EAAE;IAChB,MAAM,cAAc,GAAG,cAAc,EAAE,IAAI,EAAE,IAAI,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;IACjG,oCAAoC;IACpC,IAAI,qBAAqB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QAC3F,OAAO,gBAAgB,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,iBAAiB;IACjB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,gBAAgB,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,8DAA8D;IAC9D,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,gBAAgB,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,mBAAmB;IACnB,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QACnE,OAAO,gBAAgB,CAAC,OAAO,CAAC;IACpC,CAAC;IAED,0DAA0D;IAC1D,OAAO,gBAAgB,CAAC,IAAI,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simpleRecurrenceTypeMappingFn.test.d.ts","sourceRoot":"","sources":["../../../src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.ts"],"names":[],"mappings":""}
|