@sustaina/shared-ui 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +15 -2
- package/dist/index.d.ts +15 -2
- package/dist/index.js +107 -72
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +55 -23
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import
|
|
1
|
+
import * as React4 from 'react';
|
|
2
|
+
import React4__default, { createContext, isValidElement, useState, useEffect, useId, useContext, useRef, useCallback, useMemo, createElement } from 'react';
|
|
3
3
|
import { Controller, useFormContext, useForm, useFieldArray, FormProvider, get, set, appendErrors, useFormState } from 'react-hook-form';
|
|
4
4
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
import clsx3, { clsx } from 'clsx';
|
|
@@ -980,6 +980,38 @@ var DataTable = ({
|
|
|
980
980
|
);
|
|
981
981
|
};
|
|
982
982
|
var DataTable_default = DataTable;
|
|
983
|
+
var usePreventPageLeaveStore = create((set) => ({
|
|
984
|
+
isPreventing: false,
|
|
985
|
+
setPreventing: (value) => set({ isPreventing: value })
|
|
986
|
+
}));
|
|
987
|
+
var usePreventPageLeaveStore_default = usePreventPageLeaveStore;
|
|
988
|
+
|
|
989
|
+
// src/components/prevent-page-leave/PreventPageLeave.tsx
|
|
990
|
+
var PreventPageLeave = ({ children }) => {
|
|
991
|
+
const { isPreventing } = usePreventPageLeaveStore();
|
|
992
|
+
useEffect(() => {
|
|
993
|
+
if (!isPreventing || typeof window === "undefined") {
|
|
994
|
+
return;
|
|
995
|
+
}
|
|
996
|
+
function beforeUnload(event) {
|
|
997
|
+
event.preventDefault();
|
|
998
|
+
event.returnValue = true;
|
|
999
|
+
}
|
|
1000
|
+
window.addEventListener("beforeunload", beforeUnload);
|
|
1001
|
+
return () => {
|
|
1002
|
+
window.removeEventListener("beforeunload", beforeUnload);
|
|
1003
|
+
};
|
|
1004
|
+
}, [isPreventing]);
|
|
1005
|
+
return children;
|
|
1006
|
+
};
|
|
1007
|
+
var PreventPageLeave_default = PreventPageLeave;
|
|
1008
|
+
var usePreventPageLeave = ({ isPrevening }) => {
|
|
1009
|
+
const setPreventing = usePreventPageLeaveStore_default((state) => state.setPreventing);
|
|
1010
|
+
useEffect(() => {
|
|
1011
|
+
setPreventing(isPrevening);
|
|
1012
|
+
}, [isPrevening, setPreventing]);
|
|
1013
|
+
};
|
|
1014
|
+
var usePreventPageLeave_default = usePreventPageLeave;
|
|
983
1015
|
var buttonVariants = cva(
|
|
984
1016
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer",
|
|
985
1017
|
{
|
|
@@ -1103,15 +1135,15 @@ var t2 = function(o3, t3, s2) {
|
|
|
1103
1135
|
};
|
|
1104
1136
|
};
|
|
1105
1137
|
var Form = FormProvider;
|
|
1106
|
-
var FormFieldContext2 =
|
|
1138
|
+
var FormFieldContext2 = React4.createContext({});
|
|
1107
1139
|
var FormField2 = ({
|
|
1108
1140
|
...props
|
|
1109
1141
|
}) => {
|
|
1110
1142
|
return /* @__PURE__ */ jsx(FormFieldContext2.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx(Controller, { ...props }) });
|
|
1111
1143
|
};
|
|
1112
1144
|
var useFormField2 = () => {
|
|
1113
|
-
const fieldContext =
|
|
1114
|
-
const itemContext =
|
|
1145
|
+
const fieldContext = React4.useContext(FormFieldContext2);
|
|
1146
|
+
const itemContext = React4.useContext(FormItemContext2);
|
|
1115
1147
|
const { getFieldState } = useFormContext();
|
|
1116
1148
|
const formState = useFormState({ name: fieldContext.name });
|
|
1117
1149
|
const fieldState = getFieldState(fieldContext.name, formState);
|
|
@@ -1128,9 +1160,9 @@ var useFormField2 = () => {
|
|
|
1128
1160
|
...fieldState
|
|
1129
1161
|
};
|
|
1130
1162
|
};
|
|
1131
|
-
var FormItemContext2 =
|
|
1163
|
+
var FormItemContext2 = React4.createContext({});
|
|
1132
1164
|
function FormItem2({ className, ...props }) {
|
|
1133
|
-
const id =
|
|
1165
|
+
const id = React4.useId();
|
|
1134
1166
|
return /* @__PURE__ */ jsx(FormItemContext2.Provider, { value: { id }, children: /* @__PURE__ */ jsx("div", { "data-slot": "form-item", className: cn("grid gap-2", className), ...props }) });
|
|
1135
1167
|
}
|
|
1136
1168
|
function FormControl({ ...props }) {
|
|
@@ -1770,7 +1802,7 @@ var InfoIcon = (props) => {
|
|
|
1770
1802
|
}
|
|
1771
1803
|
);
|
|
1772
1804
|
};
|
|
1773
|
-
var InfoIcon_default =
|
|
1805
|
+
var InfoIcon_default = React4__default.memo(InfoIcon);
|
|
1774
1806
|
function TooltipProvider2({
|
|
1775
1807
|
delayDuration = 0,
|
|
1776
1808
|
...props
|
|
@@ -1942,7 +1974,7 @@ var Navbar = ({
|
|
|
1942
1974
|
}
|
|
1943
1975
|
);
|
|
1944
1976
|
};
|
|
1945
|
-
var navbar_default =
|
|
1977
|
+
var navbar_default = React4__default.memo(Navbar);
|
|
1946
1978
|
var ExpandCollapse = ({ title, children, portalId }) => {
|
|
1947
1979
|
const [isOpen, setIsOpen] = useState(false);
|
|
1948
1980
|
const Panel = /* @__PURE__ */ jsx(
|
|
@@ -2477,13 +2509,13 @@ function DatePicker({
|
|
|
2477
2509
|
className,
|
|
2478
2510
|
...props
|
|
2479
2511
|
}) {
|
|
2480
|
-
const today =
|
|
2481
|
-
const [displayed, setDisplayed] =
|
|
2512
|
+
const today = React4.useMemo(() => startOfDay(/* @__PURE__ */ new Date()), []);
|
|
2513
|
+
const [displayed, setDisplayed] = React4.useState(
|
|
2482
2514
|
selectedDate ? new Date(selectedDate) : /* @__PURE__ */ new Date()
|
|
2483
2515
|
);
|
|
2484
2516
|
minDate = clampToDay(minDate);
|
|
2485
2517
|
maxDate = clampToDay(maxDate);
|
|
2486
|
-
const disabledSet =
|
|
2518
|
+
const disabledSet = React4.useMemo(() => {
|
|
2487
2519
|
const s2 = /* @__PURE__ */ new Set();
|
|
2488
2520
|
disabledDates?.forEach((d) => s2.add(startOfDay(d).toISOString()));
|
|
2489
2521
|
return s2;
|
|
@@ -2492,7 +2524,7 @@ function DatePicker({
|
|
|
2492
2524
|
const displayMonth = displayed.getMonth();
|
|
2493
2525
|
const monthLabel = callbacks?.monthLabel?.(displayYear, displayMonth) ?? new Intl.DateTimeFormat(void 0, { month: "short" }).format(displayed);
|
|
2494
2526
|
const yearLabel = callbacks?.yearLabel?.(displayYear) ?? String(displayYear);
|
|
2495
|
-
const weekdays =
|
|
2527
|
+
const weekdays = React4.useMemo(() => {
|
|
2496
2528
|
const labels = [];
|
|
2497
2529
|
for (let i2 = 0; i2 < 7; i2++) {
|
|
2498
2530
|
const idx = i2;
|
|
@@ -2501,7 +2533,7 @@ function DatePicker({
|
|
|
2501
2533
|
}
|
|
2502
2534
|
return labels;
|
|
2503
2535
|
}, [callbacks]);
|
|
2504
|
-
const grid =
|
|
2536
|
+
const grid = React4.useMemo(() => buildCalendarGrid(displayed, true), [displayed]);
|
|
2505
2537
|
const isDateDisabled = (date) => {
|
|
2506
2538
|
const d = startOfDay(date);
|
|
2507
2539
|
if (minDate && d < minDate) return true;
|
|
@@ -4384,15 +4416,15 @@ function Label4({ className, ...props }) {
|
|
|
4384
4416
|
);
|
|
4385
4417
|
}
|
|
4386
4418
|
var Form2 = FormProvider;
|
|
4387
|
-
var FormFieldContext3 =
|
|
4419
|
+
var FormFieldContext3 = React4.createContext({});
|
|
4388
4420
|
var FormField3 = ({
|
|
4389
4421
|
...props
|
|
4390
4422
|
}) => {
|
|
4391
4423
|
return /* @__PURE__ */ jsx(FormFieldContext3.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx(Controller, { ...props }) });
|
|
4392
4424
|
};
|
|
4393
4425
|
var useFormField3 = () => {
|
|
4394
|
-
const fieldContext =
|
|
4395
|
-
const itemContext =
|
|
4426
|
+
const fieldContext = React4.useContext(FormFieldContext3);
|
|
4427
|
+
const itemContext = React4.useContext(FormItemContext3);
|
|
4396
4428
|
const { getFieldState } = useFormContext();
|
|
4397
4429
|
const formState = useFormState({ name: fieldContext.name });
|
|
4398
4430
|
const fieldState = getFieldState(fieldContext.name, formState);
|
|
@@ -4409,9 +4441,9 @@ var useFormField3 = () => {
|
|
|
4409
4441
|
...fieldState
|
|
4410
4442
|
};
|
|
4411
4443
|
};
|
|
4412
|
-
var FormItemContext3 =
|
|
4444
|
+
var FormItemContext3 = React4.createContext({});
|
|
4413
4445
|
function FormItem3({ className, ...props }) {
|
|
4414
|
-
const id =
|
|
4446
|
+
const id = React4.useId();
|
|
4415
4447
|
return /* @__PURE__ */ jsx(FormItemContext3.Provider, { value: { id }, children: /* @__PURE__ */ jsx("div", { "data-slot": "form-item", className: cn2("grid gap-2", className), ...props }) });
|
|
4416
4448
|
}
|
|
4417
4449
|
function FormControl2({ ...props }) {
|
|
@@ -4443,7 +4475,7 @@ var AdvanceSearchRow = ({
|
|
|
4443
4475
|
const { control } = form;
|
|
4444
4476
|
const fieldSchema = fields.find((f) => f.name === row.fieldName);
|
|
4445
4477
|
const fieldType = fieldSchema?.type ?? "text";
|
|
4446
|
-
|
|
4478
|
+
React4__default.useEffect(() => {
|
|
4447
4479
|
if (operators && operators.length > 0 && !operators.includes(row.operator)) {
|
|
4448
4480
|
onChangeOperator(operators[0]);
|
|
4449
4481
|
}
|
|
@@ -4454,8 +4486,8 @@ var AdvanceSearchRow = ({
|
|
|
4454
4486
|
const isLookup = fieldType === "lookup";
|
|
4455
4487
|
const isNumber = fieldType === "number";
|
|
4456
4488
|
const isDate2 = fieldType === "date" || fieldType === "datetime";
|
|
4457
|
-
const [openDateValue1, setOpenDateValue1] =
|
|
4458
|
-
const [openDateValue2, setOpenDateValue2] =
|
|
4489
|
+
const [openDateValue1, setOpenDateValue1] = React4__default.useState(false);
|
|
4490
|
+
const [openDateValue2, setOpenDateValue2] = React4__default.useState(false);
|
|
4459
4491
|
const toDateFromISO = (v) => {
|
|
4460
4492
|
if (!v) return void 0;
|
|
4461
4493
|
try {
|
|
@@ -5014,6 +5046,6 @@ function ConfirmDialog({ dialogData, setDialog, onClose }) {
|
|
|
5014
5046
|
] }) });
|
|
5015
5047
|
}
|
|
5016
5048
|
|
|
5017
|
-
export { AdvanceSearch_default as AdvanceSearch, Button, DataTable_default as DataTable, ConfirmDialog as Dialog, FormErrorMessage, FormField, FormFieldContext, FormItem, FormItemContext, FormLabel, GridSettingsModal_default as GridSettingsModal, HeaderCell_default as HeaderCell, navbar_default as Navbar, NumberInput, TextInput, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, getColumnIdFromTable, renderContentSlot, selectValueToBoolean, useFormField, useGridSettingsStore, useHover_default as useHover, useIntersectionObserver_default as useIntersectionObserver, useMediaQuery_default as useMediaQuery, useScreenSize_default as useScreenSize };
|
|
5049
|
+
export { AdvanceSearch_default as AdvanceSearch, Button, DataTable_default as DataTable, ConfirmDialog as Dialog, FormErrorMessage, FormField, FormFieldContext, FormItem, FormItemContext, FormLabel, GridSettingsModal_default as GridSettingsModal, HeaderCell_default as HeaderCell, navbar_default as Navbar, NumberInput, PreventPageLeave_default as PreventPageLeave, TextInput, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, getColumnIdFromTable, renderContentSlot, selectValueToBoolean, useFormField, useGridSettingsStore, useHover_default as useHover, useIntersectionObserver_default as useIntersectionObserver, useMediaQuery_default as useMediaQuery, usePreventPageLeave_default as usePreventPageLeave, usePreventPageLeaveStore_default as usePreventPageLeaveStore, useScreenSize_default as useScreenSize };
|
|
5018
5050
|
//# sourceMappingURL=index.mjs.map
|
|
5019
5051
|
//# sourceMappingURL=index.mjs.map
|