@seedgrid/fe-components 2026.3.20 → 2026.3.26
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/dist/buttons/SgFloatActionButton.d.ts.map +1 -1
- package/dist/buttons/SgFloatActionButton.js +5 -26
- package/dist/buttons/SgSplitButton.d.ts.map +1 -1
- package/dist/buttons/SgSplitButton.js +3 -1
- package/dist/buttons/fab-helpers.d.ts +6 -0
- package/dist/buttons/fab-helpers.d.ts.map +1 -0
- package/dist/buttons/fab-helpers.js +29 -0
- package/dist/commons/SgAvatar.d.ts.map +1 -1
- package/dist/commons/SgAvatar.js +6 -3
- package/dist/commons/SgBadge.d.ts.map +1 -1
- package/dist/commons/SgBadge.js +5 -2
- package/dist/commons/SgToast.d.ts.map +1 -1
- package/dist/commons/SgToast.js +3 -1
- package/dist/commons/SgToaster.d.ts.map +1 -1
- package/dist/commons/SgToaster.js +3 -1
- package/dist/environment/SgEnvironmentProvider.d.ts.map +1 -1
- package/dist/environment/SgEnvironmentProvider.js +10 -15
- package/dist/environment/persistent-state.d.ts +22 -0
- package/dist/environment/persistent-state.d.ts.map +1 -0
- package/dist/environment/persistent-state.js +33 -0
- package/dist/gadgets/calendar/SgCalendar.d.ts.map +1 -1
- package/dist/gadgets/calendar/SgCalendar.js +5 -23
- package/dist/gadgets/clock/SgClock.d.ts.map +1 -1
- package/dist/gadgets/clock/SgClock.js +12 -10
- package/dist/gadgets/clock/themes/SgClockThemePicker.d.ts +2 -1
- package/dist/gadgets/clock/themes/SgClockThemePicker.d.ts.map +1 -1
- package/dist/gadgets/clock/themes/SgClockThemePicker.js +23 -28
- package/dist/gadgets/clock/themes/search.d.ts +9 -0
- package/dist/gadgets/clock/themes/search.d.ts.map +1 -0
- package/dist/gadgets/clock/themes/search.js +15 -0
- package/dist/gadgets/gauge/SgLinearGauge.d.ts.map +1 -1
- package/dist/gadgets/gauge/SgLinearGauge.js +39 -28
- package/dist/gadgets/gauge/SgRadialGauge.d.ts.map +1 -1
- package/dist/gadgets/gauge/SgRadialGauge.js +44 -37
- package/dist/gadgets/gauge/math.d.ts +90 -0
- package/dist/gadgets/gauge/math.d.ts.map +1 -0
- package/dist/gadgets/gauge/math.js +81 -0
- package/dist/gadgets/qr-code/SgQRCode.d.ts.map +1 -1
- package/dist/gadgets/qr-code/SgQRCode.js +3 -1
- package/dist/i18n/en-US.d.ts.map +1 -1
- package/dist/i18n/en-US.js +97 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +153 -57
- package/dist/i18n/fr.d.ts +3 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +206 -0
- package/dist/i18n/index.d.ts +5 -1
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +50 -14
- package/dist/i18n/pt-BR.d.ts.map +1 -1
- package/dist/i18n/pt-BR.js +97 -1
- package/dist/i18n/pt-PT.d.ts.map +1 -1
- package/dist/i18n/pt-PT.js +97 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/inputs/SgAutocomplete.d.ts +1 -1
- package/dist/inputs/SgAutocomplete.d.ts.map +1 -1
- package/dist/inputs/SgAutocomplete.js +7 -4
- package/dist/inputs/SgCheckboxGroup.d.ts +2 -6
- package/dist/inputs/SgCheckboxGroup.d.ts.map +1 -1
- package/dist/inputs/SgCheckboxGroup.js +6 -6
- package/dist/inputs/SgCombobox.d.ts.map +1 -1
- package/dist/inputs/SgCombobox.js +11 -2
- package/dist/inputs/SgInputBirthDate.d.ts.map +1 -1
- package/dist/inputs/SgInputBirthDate.js +6 -1
- package/dist/inputs/SgInputCNPJ.d.ts +3 -1
- package/dist/inputs/SgInputCNPJ.d.ts.map +1 -1
- package/dist/inputs/SgInputCNPJ.js +4 -3
- package/dist/inputs/SgInputCPF.d.ts +3 -1
- package/dist/inputs/SgInputCPF.d.ts.map +1 -1
- package/dist/inputs/SgInputCPF.js +8 -3
- package/dist/inputs/SgInputCPFCNPJ.d.ts +3 -1
- package/dist/inputs/SgInputCPFCNPJ.d.ts.map +1 -1
- package/dist/inputs/SgInputCPFCNPJ.js +8 -3
- package/dist/inputs/SgInputCurrency.d.ts +3 -7
- package/dist/inputs/SgInputCurrency.d.ts.map +1 -1
- package/dist/inputs/SgInputCurrency.js +5 -2
- package/dist/inputs/SgInputDate.d.ts.map +1 -1
- package/dist/inputs/SgInputDate.js +6 -1
- package/dist/inputs/SgInputEmail.d.ts.map +1 -1
- package/dist/inputs/SgInputEmail.js +1 -1
- package/dist/inputs/SgInputNumber.d.ts +3 -7
- package/dist/inputs/SgInputNumber.d.ts.map +1 -1
- package/dist/inputs/SgInputNumber.js +5 -2
- package/dist/inputs/SgInputOTP.d.ts +5 -12
- package/dist/inputs/SgInputOTP.d.ts.map +1 -1
- package/dist/inputs/SgInputOTP.js +7 -4
- package/dist/inputs/SgInputPassword.d.ts.map +1 -1
- package/dist/inputs/SgInputPassword.js +1 -1
- package/dist/inputs/SgInputPhone.d.ts +3 -1
- package/dist/inputs/SgInputPhone.d.ts.map +1 -1
- package/dist/inputs/SgInputPhone.js +2 -1
- package/dist/inputs/SgInputPostalCode.d.ts.map +1 -1
- package/dist/inputs/SgInputPostalCode.js +2 -1
- package/dist/inputs/SgInputSelect.d.ts +4 -2
- package/dist/inputs/SgInputSelect.d.ts.map +1 -1
- package/dist/inputs/SgInputSelect.js +38 -3
- package/dist/inputs/SgInputText.d.ts +3 -7
- package/dist/inputs/SgInputText.d.ts.map +1 -1
- package/dist/inputs/SgInputText.js +5 -2
- package/dist/inputs/SgInputTextArea.d.ts +4 -2
- package/dist/inputs/SgInputTextArea.d.ts.map +1 -1
- package/dist/inputs/SgInputTextArea.js +37 -2
- package/dist/inputs/SgOrderList.d.ts +3 -1
- package/dist/inputs/SgOrderList.d.ts.map +1 -1
- package/dist/inputs/SgOrderList.js +19 -3
- package/dist/inputs/SgPickList.d.ts +3 -1
- package/dist/inputs/SgPickList.d.ts.map +1 -1
- package/dist/inputs/SgPickList.js +20 -4
- package/dist/inputs/SgRadioGroup.d.ts +2 -6
- package/dist/inputs/SgRadioGroup.d.ts.map +1 -1
- package/dist/inputs/SgRadioGroup.js +6 -6
- package/dist/inputs/SgRating.d.ts +2 -10
- package/dist/inputs/SgRating.d.ts.map +1 -1
- package/dist/inputs/SgRating.js +6 -3
- package/dist/inputs/SgSlider.d.ts +8 -2
- package/dist/inputs/SgSlider.d.ts.map +1 -1
- package/dist/inputs/SgSlider.js +62 -10
- package/dist/inputs/SgStepperInput.d.ts +8 -2
- package/dist/inputs/SgStepperInput.d.ts.map +1 -1
- package/dist/inputs/SgStepperInput.js +62 -8
- package/dist/inputs/SgTextEditor.d.ts +3 -1
- package/dist/inputs/SgTextEditor.d.ts.map +1 -1
- package/dist/inputs/SgTextEditor.js +24 -11
- package/dist/inputs/SgToggleSwitch.d.ts +3 -7
- package/dist/inputs/SgToggleSwitch.d.ts.map +1 -1
- package/dist/inputs/SgToggleSwitch.js +6 -3
- package/dist/layout/SgBreadcrumb.d.ts.map +1 -1
- package/dist/layout/SgBreadcrumb.js +7 -3
- package/dist/layout/SgCard.d.ts.map +1 -1
- package/dist/layout/SgCard.js +3 -1
- package/dist/layout/SgCarousel.d.ts.map +1 -1
- package/dist/layout/SgCarousel.js +3 -1
- package/dist/layout/SgExpandablePanel.d.ts.map +1 -1
- package/dist/layout/SgExpandablePanel.js +3 -1
- package/dist/layout/SgMenu.d.ts.map +1 -1
- package/dist/layout/SgMenu.js +173 -297
- package/dist/layout/SgPageControl.d.ts.map +1 -1
- package/dist/layout/SgPageControl.js +7 -3
- package/dist/layout/SgToolBar.d.ts.map +1 -1
- package/dist/layout/SgToolBar.js +19 -55
- package/dist/layout/SgTreeView.d.ts.map +1 -1
- package/dist/layout/SgTreeView.js +7 -3
- package/dist/layout/drag-position.d.ts +7 -0
- package/dist/layout/drag-position.d.ts.map +1 -0
- package/dist/layout/drag-position.js +30 -0
- package/dist/layout/menu-logic.d.ts +187 -0
- package/dist/layout/menu-logic.d.ts.map +1 -0
- package/dist/layout/menu-logic.js +349 -0
- package/dist/layout/toolbar-logic.d.ts +26 -0
- package/dist/layout/toolbar-logic.d.ts.map +1 -0
- package/dist/layout/toolbar-logic.js +38 -0
- package/dist/menus/SgDockMenu.d.ts.map +1 -1
- package/dist/menus/SgDockMenu.js +44 -120
- package/dist/menus/dock-menu-logic.d.ts +50 -0
- package/dist/menus/dock-menu-logic.d.ts.map +1 -0
- package/dist/menus/dock-menu-logic.js +113 -0
- package/dist/overlay/SgDialog.d.ts.map +1 -1
- package/dist/overlay/SgDialog.js +4 -2
- package/dist/overlay/SgPopup.d.ts.map +1 -1
- package/dist/overlay/SgPopup.js +4 -1
- package/dist/rhf.d.ts +8 -3
- package/dist/rhf.d.ts.map +1 -1
- package/dist/rhf.js +18 -1
- package/dist/sandbox.cjs +60 -60
- package/dist/wizard/SgWizard.d.ts.map +1 -1
- package/dist/wizard/SgWizard.js +20 -32
- package/dist/wizard/logic.d.ts +9 -0
- package/dist/wizard/logic.d.ts.map +1 -0
- package/dist/wizard/logic.js +20 -0
- package/package.json +8 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SgWizard.d.ts","sourceRoot":"","sources":["../../src/wizard/SgWizard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SgWizard.d.ts","sourceRoot":"","sources":["../../src/wizard/SgWizard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAEpD;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAiFF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CA+H5C"}
|
package/dist/wizard/SgWizard.js
CHANGED
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { t, useComponentsI18n } from "../i18n";
|
|
5
|
+
import { canProceedWizardAction, clampWizardStep } from "./logic";
|
|
5
6
|
export function SgWizardPage(props) {
|
|
6
7
|
return _jsx("div", { className: props.className, style: props.style, children: props.children });
|
|
7
8
|
}
|
|
8
9
|
function CheckIcon({ className }) {
|
|
9
10
|
return (_jsx("svg", { className: className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M20 6 9 17l-5-5" }) }));
|
|
10
11
|
}
|
|
11
|
-
function StepperBar({ pages, currentStep, mode }) {
|
|
12
|
-
return (_jsx("nav", { "aria-label": "
|
|
12
|
+
function StepperBar({ i18n, pages, currentStep, mode }) {
|
|
13
|
+
return (_jsx("nav", { "aria-label": t(i18n, "components.wizard.progress"), className: "mb-8", children: _jsx("ol", { className: "flex items-center", children: pages.map((page, i) => {
|
|
13
14
|
const isCompleted = i < currentStep;
|
|
14
15
|
const isCurrent = i === currentStep;
|
|
15
|
-
const title = page.props.title ??
|
|
16
|
+
const title = page.props.title ?? t(i18n, "components.wizard.step", { step: i + 1 });
|
|
16
17
|
const icon = page.props.icon;
|
|
17
18
|
const isLast = i === pages.length - 1;
|
|
18
19
|
return (_jsxs("li", { className: `flex items-center ${isLast ? "" : "flex-1"}`, children: [_jsxs("div", { className: "flex flex-col items-center", children: [_jsx("div", { className: `flex items-center justify-center rounded-full border-2 transition-colors duration-200 ${isCompleted
|
|
@@ -26,10 +27,7 @@ export function SgWizard(props) {
|
|
|
26
27
|
const i18n = useComponentsI18n();
|
|
27
28
|
const pages = React.Children.toArray(props.children).filter((child) => React.isValidElement(child) && child.type === SgWizardPage);
|
|
28
29
|
const stepper = props.stepper ?? "none";
|
|
29
|
-
const [step, setStep] = React.useState(() =>
|
|
30
|
-
const idx = props.initialStep ?? 0;
|
|
31
|
-
return Math.min(Math.max(idx, 0), Math.max(pages.length - 1, 0));
|
|
32
|
-
});
|
|
30
|
+
const [step, setStep] = React.useState(() => clampWizardStep(props.initialStep, pages.length));
|
|
33
31
|
const [isFinishing, setIsFinishing] = React.useState(false);
|
|
34
32
|
const [isValidating, setIsValidating] = React.useState(false);
|
|
35
33
|
const pageRef = React.useRef(null);
|
|
@@ -64,19 +62,14 @@ export function SgWizard(props) {
|
|
|
64
62
|
return;
|
|
65
63
|
setIsValidating(true);
|
|
66
64
|
try {
|
|
67
|
-
const
|
|
68
|
-
|
|
65
|
+
const ok = await canProceedWizardAction({
|
|
66
|
+
validateCurrentPage,
|
|
67
|
+
validateStep: props.validateStep,
|
|
68
|
+
beforeAction: props.onBeforeNext,
|
|
69
|
+
step
|
|
70
|
+
});
|
|
71
|
+
if (!ok)
|
|
69
72
|
return;
|
|
70
|
-
if (props.validateStep) {
|
|
71
|
-
const ok = await props.validateStep(step);
|
|
72
|
-
if (!ok)
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (props.onBeforeNext) {
|
|
76
|
-
const ok = await props.onBeforeNext(step);
|
|
77
|
-
if (!ok)
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
73
|
setStep((prev) => Math.min(prev + 1, pages.length - 1));
|
|
81
74
|
}
|
|
82
75
|
finally {
|
|
@@ -95,19 +88,14 @@ export function SgWizard(props) {
|
|
|
95
88
|
return;
|
|
96
89
|
setIsValidating(true);
|
|
97
90
|
try {
|
|
98
|
-
const
|
|
99
|
-
|
|
91
|
+
const ok = await canProceedWizardAction({
|
|
92
|
+
validateCurrentPage,
|
|
93
|
+
validateStep: props.validateStep,
|
|
94
|
+
beforeAction: props.onBeforeFinish,
|
|
95
|
+
step
|
|
96
|
+
});
|
|
97
|
+
if (!ok)
|
|
100
98
|
return;
|
|
101
|
-
if (props.validateStep) {
|
|
102
|
-
const ok = await props.validateStep(step);
|
|
103
|
-
if (!ok)
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
if (props.onBeforeFinish) {
|
|
107
|
-
const ok = await props.onBeforeFinish(step);
|
|
108
|
-
if (!ok)
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
99
|
}
|
|
112
100
|
finally {
|
|
113
101
|
setIsValidating(false);
|
|
@@ -120,5 +108,5 @@ export function SgWizard(props) {
|
|
|
120
108
|
setIsFinishing(false);
|
|
121
109
|
}
|
|
122
110
|
};
|
|
123
|
-
return (_jsxs("div", { className: props.className, style: props.style, children: [stepper !== "none" ? (_jsx(StepperBar, { pages: pages, currentStep: step, mode: stepper })) : null, _jsx("div", { ref: pageRef, children: pages[step] }), _jsxs("div", { className: "mt-6 flex flex-wrap items-center justify-between gap-3", children: [_jsx("div", { children: !isFirst ? (_jsx("button", { type: "button", onClick: goPrevious, className: "inline-flex h-10 items-center justify-center rounded-full border border-border px-5 text-sm font-semibold text-foreground/80 transition hover:bg-muted/60", children: labels.previous })) : null }), _jsx("div", { className: "flex items-center gap-3", children: !isLast ? (_jsx("button", { type: "button", onClick: goNext, disabled: isValidating, className: "inline-flex h-10 items-center justify-center rounded-full bg-[hsl(var(--primary))] px-5 text-sm font-semibold text-white shadow-lg shadow-[hsl(var(--primary)/0.35)] transition hover:brightness-95 disabled:cursor-not-allowed disabled:opacity-60", children: labels.next })) : (_jsx("button", { type: "button", onClick: handleFinish, disabled: isFinishing || isValidating, className: "inline-flex h-10 items-center justify-center rounded-full bg-[hsl(var(--primary))] px-5 text-sm font-semibold text-white shadow-lg shadow-[hsl(var(--primary)/0.35)] transition hover:brightness-95 disabled:cursor-not-allowed disabled:opacity-60", children: labels.finish })) })] })] }));
|
|
111
|
+
return (_jsxs("div", { className: props.className, style: props.style, children: [stepper !== "none" ? (_jsx(StepperBar, { pages: pages, currentStep: step, mode: stepper, i18n: i18n })) : null, _jsx("div", { ref: pageRef, children: pages[step] }), _jsxs("div", { className: "mt-6 flex flex-wrap items-center justify-between gap-3", children: [_jsx("div", { children: !isFirst ? (_jsx("button", { type: "button", onClick: goPrevious, className: "inline-flex h-10 items-center justify-center rounded-full border border-border px-5 text-sm font-semibold text-foreground/80 transition hover:bg-muted/60", children: labels.previous })) : null }), _jsx("div", { className: "flex items-center gap-3", children: !isLast ? (_jsx("button", { type: "button", onClick: goNext, disabled: isValidating, className: "inline-flex h-10 items-center justify-center rounded-full bg-[hsl(var(--primary))] px-5 text-sm font-semibold text-white shadow-lg shadow-[hsl(var(--primary)/0.35)] transition hover:brightness-95 disabled:cursor-not-allowed disabled:opacity-60", children: labels.next })) : (_jsx("button", { type: "button", onClick: handleFinish, disabled: isFinishing || isValidating, className: "inline-flex h-10 items-center justify-center rounded-full bg-[hsl(var(--primary))] px-5 text-sm font-semibold text-white shadow-lg shadow-[hsl(var(--primary)/0.35)] transition hover:brightness-95 disabled:cursor-not-allowed disabled:opacity-60", children: labels.finish })) })] })] }));
|
|
124
112
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function clampWizardStep(initialStep: number | undefined, pageCount: number): number;
|
|
2
|
+
export type WizardGuardRunner = {
|
|
3
|
+
validateCurrentPage: () => boolean | Promise<boolean>;
|
|
4
|
+
validateStep?: (index: number) => boolean | Promise<boolean>;
|
|
5
|
+
beforeAction?: (index: number) => boolean | Promise<boolean>;
|
|
6
|
+
step: number;
|
|
7
|
+
};
|
|
8
|
+
export declare function canProceedWizardAction(runner: WizardGuardRunner): Promise<boolean>;
|
|
9
|
+
//# sourceMappingURL=logic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../src/wizard/logic.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAG1F;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mBAAmB,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAexF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function clampWizardStep(initialStep, pageCount) {
|
|
2
|
+
const step = initialStep ?? 0;
|
|
3
|
+
return Math.min(Math.max(step, 0), Math.max(pageCount - 1, 0));
|
|
4
|
+
}
|
|
5
|
+
export async function canProceedWizardAction(runner) {
|
|
6
|
+
const pageValid = await runner.validateCurrentPage();
|
|
7
|
+
if (!pageValid)
|
|
8
|
+
return false;
|
|
9
|
+
if (runner.validateStep) {
|
|
10
|
+
const stepValid = await runner.validateStep(runner.step);
|
|
11
|
+
if (!stepValid)
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
if (runner.beforeAction) {
|
|
15
|
+
const allowed = await runner.beforeAction(runner.step);
|
|
16
|
+
if (!allowed)
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seedgrid/fe-components",
|
|
3
|
-
"version": "2026.3.
|
|
3
|
+
"version": "2026.3.26",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
"@tiptap/extension-highlight": "^2.9.1",
|
|
32
32
|
"@tiptap/extension-image": "^2.9.1",
|
|
33
33
|
"@tiptap/extension-link": "^2.9.1",
|
|
34
|
-
"@tiptap/pm": "^2.9.1",
|
|
35
34
|
"@tiptap/extension-subscript": "^2.9.1",
|
|
36
35
|
"@tiptap/extension-superscript": "^2.9.1",
|
|
37
36
|
"@tiptap/extension-text-align": "^2.9.1",
|
|
38
37
|
"@tiptap/extension-text-style": "^2.9.1",
|
|
39
38
|
"@tiptap/extension-underline": "^2.9.1",
|
|
39
|
+
"@tiptap/pm": "^2.9.1",
|
|
40
40
|
"@tiptap/react": "^2.9.1",
|
|
41
41
|
"@tiptap/starter-kit": "^2.9.1",
|
|
42
42
|
"lucide-react": "^0.468.0",
|
|
@@ -44,25 +44,26 @@
|
|
|
44
44
|
"react-hook-form": "^7.0.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"tsup": "^8.4.0",
|
|
48
47
|
"@tiptap/core": "^2.9.1",
|
|
49
48
|
"@tiptap/extension-color": "^2.9.1",
|
|
50
49
|
"@tiptap/extension-font-family": "^2.9.1",
|
|
51
50
|
"@tiptap/extension-highlight": "^2.9.1",
|
|
52
51
|
"@tiptap/extension-image": "^2.9.1",
|
|
53
52
|
"@tiptap/extension-link": "^2.9.1",
|
|
54
|
-
"@tiptap/pm": "^2.9.1",
|
|
55
53
|
"@tiptap/extension-subscript": "^2.9.1",
|
|
56
54
|
"@tiptap/extension-superscript": "^2.9.1",
|
|
57
55
|
"@tiptap/extension-text-align": "^2.9.1",
|
|
58
56
|
"@tiptap/extension-text-style": "^2.9.1",
|
|
59
57
|
"@tiptap/extension-underline": "^2.9.1",
|
|
58
|
+
"@tiptap/pm": "^2.9.1",
|
|
60
59
|
"@tiptap/react": "^2.9.1",
|
|
61
60
|
"@tiptap/starter-kit": "^2.9.1",
|
|
61
|
+
"jsdom": "^29.0.1",
|
|
62
62
|
"lucide-react": "^0.468.0",
|
|
63
63
|
"react": "19.0.0",
|
|
64
64
|
"react-dom": "19.0.0",
|
|
65
|
-
"react-hook-form": "^7.0.0"
|
|
65
|
+
"react-hook-form": "^7.0.0",
|
|
66
|
+
"tsup": "^8.4.0"
|
|
66
67
|
},
|
|
67
68
|
"dependencies": {
|
|
68
69
|
"@pqina/flip": "^1.8.4",
|
|
@@ -73,6 +74,7 @@
|
|
|
73
74
|
"build": "pnpm run clean && tsc -p tsconfig.json && pnpm run build:sandbox",
|
|
74
75
|
"build:sandbox": "tsup --config tsup.sandbox.config.ts",
|
|
75
76
|
"dev": "tsc -p tsconfig.json --watch --preserveWatchOutput",
|
|
76
|
-
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
77
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
78
|
+
"test": "pnpm run build && node --test tests/i18n.test.mjs tests/rhf.test.mjs tests/rhf-components-contract.test.mjs tests/i18n-components-contract.test.mjs tests/providers-hooks.test.mjs tests/providers-hooks-dom.test.mjs tests/commons.test.mjs tests/overlay.test.mjs tests/overlay-dom.test.mjs tests/buttons-menus.test.mjs tests/buttons-menus-dom.test.mjs tests/menu-logic.test.mjs tests/inputs-i18n.test.mjs tests/gadgets.test.mjs tests/gadgets-dom.test.mjs tests/gauge-math.test.mjs tests/clock-theme-picker.test.mjs tests/wizard.test.mjs tests/wizard-logic.test.mjs tests/utils.test.mjs"
|
|
77
79
|
}
|
|
78
80
|
}
|