react-better-html 1.1.213 → 1.1.215
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 +16 -4
- package/dist/index.d.ts +16 -4
- package/dist/index.js +261 -251
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +63 -53
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4136,6 +4136,7 @@ var filterHover = () => {
|
|
|
4136
4136
|
|
|
4137
4137
|
// src/components/Chip.tsx
|
|
4138
4138
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
4139
|
+
var borderRadiusOffset = 1.3;
|
|
4139
4140
|
var ChipComponent = (0, import_react16.forwardRef)(function Chip({
|
|
4140
4141
|
text,
|
|
4141
4142
|
color,
|
|
@@ -4160,7 +4161,7 @@ var ChipComponent = (0, import_react16.forwardRef)(function Chip({
|
|
|
4160
4161
|
{
|
|
4161
4162
|
width: "fit-content",
|
|
4162
4163
|
backgroundColor: backgroundColor ?? theme2.colors.backgroundSecondary,
|
|
4163
|
-
borderRadius: isCircle ? 999 : borderRadius ?? theme2.styles.borderRadius /
|
|
4164
|
+
borderRadius: isCircle ? 999 : borderRadius ?? theme2.styles.borderRadius / borderRadiusOffset,
|
|
4164
4165
|
paddingBlock: theme2.styles.gap / 2,
|
|
4165
4166
|
paddingInline: theme2.styles.space / 1.5,
|
|
4166
4167
|
filterHover: onClick || onClickWithValue ? filterHover().z1 : void 0,
|
|
@@ -4172,11 +4173,11 @@ var ChipComponent = (0, import_react16.forwardRef)(function Chip({
|
|
|
4172
4173
|
}
|
|
4173
4174
|
);
|
|
4174
4175
|
});
|
|
4175
|
-
ChipComponent.colored = (0, import_react16.forwardRef)(function Colored({ color, ...props }, ref) {
|
|
4176
|
+
ChipComponent.colored = (0, import_react16.forwardRef)(function Colored({ color, withWhiteBackground, ...props }, ref) {
|
|
4176
4177
|
const theme2 = useTheme();
|
|
4177
4178
|
const { colorTheme } = useBetterHtmlContextInternal();
|
|
4178
4179
|
const readyColor = color ?? theme2.colors.textSecondary;
|
|
4179
|
-
|
|
4180
|
+
const chip = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4180
4181
|
ChipComponent,
|
|
4181
4182
|
{
|
|
4182
4183
|
color: colorTheme === "light" ? darkenColor(readyColor, 0.7) : lightenColor(readyColor, 0.7),
|
|
@@ -4186,13 +4187,22 @@ ChipComponent.colored = (0, import_react16.forwardRef)(function Colored({ color,
|
|
|
4186
4187
|
...props
|
|
4187
4188
|
}
|
|
4188
4189
|
);
|
|
4190
|
+
return withWhiteBackground ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4191
|
+
Div_default,
|
|
4192
|
+
{
|
|
4193
|
+
width: "fit-content",
|
|
4194
|
+
backgroundColor: withWhiteBackground ? colorTheme === "light" ? "#ffffff" : "#000000" : void 0,
|
|
4195
|
+
borderRadius: withWhiteBackground ? props.borderRadius ?? theme2.styles.borderRadius / borderRadiusOffset + 0.3 : void 0,
|
|
4196
|
+
children: chip
|
|
4197
|
+
}
|
|
4198
|
+
) : chip;
|
|
4189
4199
|
});
|
|
4190
4200
|
var Chip2 = (0, import_react16.memo)(ChipComponent);
|
|
4191
4201
|
Chip2.colored = ChipComponent.colored;
|
|
4192
4202
|
var Chip_default = Chip2;
|
|
4193
4203
|
|
|
4194
4204
|
// src/components/InputField.tsx
|
|
4195
|
-
var
|
|
4205
|
+
var import_react21 = require("react");
|
|
4196
4206
|
var import_styled_components11 = __toESM(require("styled-components"));
|
|
4197
4207
|
|
|
4198
4208
|
// src/constants/countries.ts
|
|
@@ -5821,6 +5831,7 @@ var Label_default = (0, import_react17.memo)(Label);
|
|
|
5821
5831
|
// src/components/Dropdown.tsx
|
|
5822
5832
|
var import_react18 = require("react");
|
|
5823
5833
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
5834
|
+
var import_react19 = require("react");
|
|
5824
5835
|
var DropdownComponent = (0, import_react18.forwardRef)(function Dropdown({
|
|
5825
5836
|
label,
|
|
5826
5837
|
labelColor,
|
|
@@ -5992,7 +6003,7 @@ var DropdownComponent = (0, import_react18.forwardRef)(function Dropdown({
|
|
|
5992
6003
|
role: "option",
|
|
5993
6004
|
"aria-selected": isSelected,
|
|
5994
6005
|
"aria-disabled": isDisabled,
|
|
5995
|
-
children: renderOption ? renderOption(option, index, isSelected) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text_default, { children: option.label })
|
|
6006
|
+
children: renderOption ? renderOption(option, index, isSelected) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, { children: !option.renderType || option.renderType === "default" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text_default, { children: option.label }) : option.renderType === "chip" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Chip_default, { text: option.label, ...option.chipProps }) : option.renderType === "chip.colored" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Chip_default.colored, { text: option.label, withWhiteBackground: true, ...option.chipProps }) : void 0 })
|
|
5996
6007
|
}
|
|
5997
6008
|
),
|
|
5998
6009
|
renderOptionDivider ? renderOptionDivider(
|
|
@@ -6090,7 +6101,18 @@ var DropdownComponent = (0, import_react18.forwardRef)(function Dropdown({
|
|
|
6090
6101
|
paddingBlock: theme2.styles.gap,
|
|
6091
6102
|
paddingInline: (theme2.styles.space + theme2.styles.gap) / 2,
|
|
6092
6103
|
transition: theme2.styles.transition,
|
|
6093
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Div_default.row, { width: "100%", flexWrap: "wrap", gap: theme2.styles.gap, children: selectedOption.map((option) =>
|
|
6104
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Div_default.row, { width: "100%", flexWrap: "wrap", gap: theme2.styles.gap, children: selectedOption.map((option) => {
|
|
6105
|
+
const ChipComponentTag = !option.renderType || option.renderType === "default" || option.renderType === "chip" ? Chip_default : option.renderType === "chip.colored" ? Chip_default.colored : Chip_default;
|
|
6106
|
+
return /* @__PURE__ */ (0, import_react19.createElement)(
|
|
6107
|
+
ChipComponentTag,
|
|
6108
|
+
{
|
|
6109
|
+
text: option.label,
|
|
6110
|
+
...option.renderType === "chip" || option.renderType === "chip.colored" ? option.chipProps : [],
|
|
6111
|
+
withWhiteBackground: option.renderType === "chip.colored",
|
|
6112
|
+
key: JSON.stringify(option)
|
|
6113
|
+
}
|
|
6114
|
+
);
|
|
6115
|
+
}) })
|
|
6094
6116
|
}
|
|
6095
6117
|
) : void 0,
|
|
6096
6118
|
insideInputFieldAfterComponent: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
@@ -6212,7 +6234,7 @@ Dropdown2.countries = DropdownComponent.countries;
|
|
|
6212
6234
|
var Dropdown_default = Dropdown2;
|
|
6213
6235
|
|
|
6214
6236
|
// src/components/Calendar.tsx
|
|
6215
|
-
var
|
|
6237
|
+
var import_react20 = require("react");
|
|
6216
6238
|
var import_styled_components10 = __toESM(require("styled-components"));
|
|
6217
6239
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
6218
6240
|
var getMonthName = (month, short = false) => {
|
|
@@ -6265,24 +6287,24 @@ var SelectComponent = import_styled_components10.default.select.withConfig({
|
|
|
6265
6287
|
`;
|
|
6266
6288
|
function Calendar({ value, minDate, maxDate, onChange }) {
|
|
6267
6289
|
const theme2 = useTheme();
|
|
6268
|
-
const internalYearSelectId = (0,
|
|
6269
|
-
const [currentDate, setCurrentDate] = (0,
|
|
6270
|
-
const [currentMonth, setCurrentMonth] = (0,
|
|
6271
|
-
const [currentYear, setCurrentYear] = (0,
|
|
6272
|
-
const daysInMonth = (0,
|
|
6273
|
-
const onClickPreviousMonthButton = (0,
|
|
6290
|
+
const internalYearSelectId = (0, import_react20.useId)();
|
|
6291
|
+
const [currentDate, setCurrentDate] = (0, import_react20.useState)(value ? new Date(value) : void 0);
|
|
6292
|
+
const [currentMonth, setCurrentMonth] = (0, import_react20.useState)(currentDate?.getMonth() ?? (/* @__PURE__ */ new Date()).getMonth());
|
|
6293
|
+
const [currentYear, setCurrentYear] = (0, import_react20.useState)(currentDate?.getFullYear() ?? (/* @__PURE__ */ new Date()).getFullYear());
|
|
6294
|
+
const daysInMonth = (0, import_react20.useMemo)(() => new Date(currentYear, currentMonth + 1, 0).getDate(), [currentMonth, currentYear]);
|
|
6295
|
+
const onClickPreviousMonthButton = (0, import_react20.useCallback)(() => {
|
|
6274
6296
|
const newMonth = currentMonth === 0 ? 11 : currentMonth - 1;
|
|
6275
6297
|
const newYear = currentMonth === 0 ? currentYear - 1 : currentYear;
|
|
6276
6298
|
setCurrentMonth(newMonth);
|
|
6277
6299
|
setCurrentYear(newYear);
|
|
6278
6300
|
}, [currentMonth, currentYear]);
|
|
6279
|
-
const onClickNextMonthButton = (0,
|
|
6301
|
+
const onClickNextMonthButton = (0, import_react20.useCallback)(() => {
|
|
6280
6302
|
const newMonth = currentMonth === 11 ? 0 : currentMonth + 1;
|
|
6281
6303
|
const newYear = currentMonth === 11 ? currentYear + 1 : currentYear;
|
|
6282
6304
|
setCurrentMonth(newMonth);
|
|
6283
6305
|
setCurrentYear(newYear);
|
|
6284
6306
|
}, [currentMonth, currentYear]);
|
|
6285
|
-
const onClickDay = (0,
|
|
6307
|
+
const onClickDay = (0, import_react20.useCallback)(
|
|
6286
6308
|
(day) => {
|
|
6287
6309
|
if (!day) return;
|
|
6288
6310
|
const newDate = new Date(currentYear, currentMonth, day);
|
|
@@ -6293,25 +6315,25 @@ function Calendar({ value, minDate, maxDate, onChange }) {
|
|
|
6293
6315
|
},
|
|
6294
6316
|
[currentMonth, currentYear, onChange]
|
|
6295
6317
|
);
|
|
6296
|
-
const onClickClear = (0,
|
|
6318
|
+
const onClickClear = (0, import_react20.useCallback)(() => {
|
|
6297
6319
|
setCurrentDate(void 0);
|
|
6298
6320
|
onChange?.(void 0);
|
|
6299
6321
|
}, []);
|
|
6300
|
-
const onClickToday = (0,
|
|
6322
|
+
const onClickToday = (0, import_react20.useCallback)(() => {
|
|
6301
6323
|
const today = /* @__PURE__ */ new Date();
|
|
6302
6324
|
setCurrentDate(today);
|
|
6303
6325
|
onChange?.(
|
|
6304
6326
|
`${today.getFullYear()}-${(today.getMonth() + 1).toString().padStart(2, "0")}-${today.getDate().toString().padStart(2, "0")}`
|
|
6305
6327
|
);
|
|
6306
6328
|
}, [onChange]);
|
|
6307
|
-
const onChangeYearSelect = (0,
|
|
6329
|
+
const onChangeYearSelect = (0, import_react20.useCallback)((event) => {
|
|
6308
6330
|
setCurrentYear(parseInt(event.target.value));
|
|
6309
6331
|
}, []);
|
|
6310
|
-
const firstDayOfMonth = (0,
|
|
6332
|
+
const firstDayOfMonth = (0, import_react20.useMemo)(() => {
|
|
6311
6333
|
const day = new Date(currentYear, currentMonth, 1).getDay();
|
|
6312
6334
|
return day === 0 ? 6 : day - 1;
|
|
6313
6335
|
}, [currentMonth, currentYear]);
|
|
6314
|
-
const days = (0,
|
|
6336
|
+
const days = (0, import_react20.useMemo)(() => {
|
|
6315
6337
|
const result = [];
|
|
6316
6338
|
for (let index = 0; index < firstDayOfMonth; index++) {
|
|
6317
6339
|
result.push(void 0);
|
|
@@ -6321,7 +6343,7 @@ function Calendar({ value, minDate, maxDate, onChange }) {
|
|
|
6321
6343
|
}
|
|
6322
6344
|
return result;
|
|
6323
6345
|
}, [daysInMonth, firstDayOfMonth]);
|
|
6324
|
-
(0,
|
|
6346
|
+
(0, import_react20.useEffect)(() => {
|
|
6325
6347
|
if (!value) return;
|
|
6326
6348
|
const date = new Date(value);
|
|
6327
6349
|
setCurrentDate(date);
|
|
@@ -6427,7 +6449,7 @@ function Calendar({ value, minDate, maxDate, onChange }) {
|
|
|
6427
6449
|
] })
|
|
6428
6450
|
] });
|
|
6429
6451
|
}
|
|
6430
|
-
var Calendar_default = (0,
|
|
6452
|
+
var Calendar_default = (0, import_react20.memo)(Calendar);
|
|
6431
6453
|
|
|
6432
6454
|
// src/components/InputField.tsx
|
|
6433
6455
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
@@ -6595,7 +6617,7 @@ var TextareaElement = import_styled_components11.default.textarea.withConfig({
|
|
|
6595
6617
|
`;
|
|
6596
6618
|
var hours = Array.from({ length: 24 }, (_, index) => index);
|
|
6597
6619
|
var minutes = Array.from({ length: 60 }, (_, index) => index);
|
|
6598
|
-
var InputFieldComponent = (0,
|
|
6620
|
+
var InputFieldComponent = (0, import_react21.forwardRef)(function InputField({
|
|
6599
6621
|
label,
|
|
6600
6622
|
labelColor,
|
|
6601
6623
|
errorText,
|
|
@@ -6620,7 +6642,7 @@ var InputFieldComponent = (0, import_react20.forwardRef)(function InputField({
|
|
|
6620
6642
|
...props
|
|
6621
6643
|
}, ref) {
|
|
6622
6644
|
const theme2 = useTheme();
|
|
6623
|
-
const internalId = (0,
|
|
6645
|
+
const internalId = (0, import_react21.useId)();
|
|
6624
6646
|
const { colorTheme } = useBetterHtmlContextInternal();
|
|
6625
6647
|
const [_, debouncedValue, setDebouncedValue] = useDebounceState(
|
|
6626
6648
|
props.value?.toString() ?? "",
|
|
@@ -6631,7 +6653,7 @@ var InputFieldComponent = (0, import_react20.forwardRef)(function InputField({
|
|
|
6631
6653
|
const dataProps = useComponentPropsWithPrefix(props, "data");
|
|
6632
6654
|
const ariaProps = useComponentPropsWithPrefix(props, "aria");
|
|
6633
6655
|
const restProps = useComponentPropsWithoutStyle(props);
|
|
6634
|
-
const onChangeElement = (0,
|
|
6656
|
+
const onChangeElement = (0, import_react21.useCallback)(
|
|
6635
6657
|
(event) => {
|
|
6636
6658
|
const newValue = event.target.value;
|
|
6637
6659
|
if (withDebounce) {
|
|
@@ -6644,13 +6666,13 @@ var InputFieldComponent = (0, import_react20.forwardRef)(function InputField({
|
|
|
6644
6666
|
},
|
|
6645
6667
|
[onChange, onChangeValue, withDebounce]
|
|
6646
6668
|
);
|
|
6647
|
-
const leftIconZIndex = (0,
|
|
6669
|
+
const leftIconZIndex = (0, import_react21.useMemo)(
|
|
6648
6670
|
() => ["react-better-html-dropdown-open-late", "react-better-html-inputField-dateTime-opened-late"].some(
|
|
6649
6671
|
(classNameItem) => props.className?.includes(classNameItem)
|
|
6650
6672
|
) ? 1002 : 1,
|
|
6651
6673
|
[props.className]
|
|
6652
6674
|
);
|
|
6653
|
-
(0,
|
|
6675
|
+
(0, import_react21.useEffect)(() => {
|
|
6654
6676
|
if (!withDebounce) return;
|
|
6655
6677
|
onChangeValue?.(debouncedValue);
|
|
6656
6678
|
}, [withDebounce, onChangeValue, debouncedValue]);
|
|
@@ -6757,7 +6779,7 @@ var InputFieldComponent = (0, import_react20.forwardRef)(function InputField({
|
|
|
6757
6779
|
)
|
|
6758
6780
|
] });
|
|
6759
6781
|
});
|
|
6760
|
-
InputFieldComponent.multiline = (0,
|
|
6782
|
+
InputFieldComponent.multiline = (0, import_react21.forwardRef)(function Multiline({
|
|
6761
6783
|
label,
|
|
6762
6784
|
placeholder,
|
|
6763
6785
|
errorText,
|
|
@@ -6772,12 +6794,12 @@ InputFieldComponent.multiline = (0, import_react20.forwardRef)(function Multilin
|
|
|
6772
6794
|
...props
|
|
6773
6795
|
}, ref) {
|
|
6774
6796
|
const theme2 = useTheme();
|
|
6775
|
-
const internalId = (0,
|
|
6797
|
+
const internalId = (0, import_react21.useId)();
|
|
6776
6798
|
const styledComponentStyles = useStyledComponentStyles(props, theme2);
|
|
6777
6799
|
const dataProps = useComponentPropsWithPrefix(props, "data");
|
|
6778
6800
|
const ariaProps = useComponentPropsWithPrefix(props, "aria");
|
|
6779
6801
|
const restProps = useComponentPropsWithoutStyle(props);
|
|
6780
|
-
const onChangeElement = (0,
|
|
6802
|
+
const onChangeElement = (0, import_react21.useCallback)(
|
|
6781
6803
|
(event) => {
|
|
6782
6804
|
onChange?.(event);
|
|
6783
6805
|
onChangeValue?.(event.target.value);
|
|
@@ -6851,7 +6873,7 @@ InputFieldComponent.multiline = (0, import_react20.forwardRef)(function Multilin
|
|
|
6851
6873
|
)
|
|
6852
6874
|
] });
|
|
6853
6875
|
});
|
|
6854
|
-
InputFieldComponent.email = (0,
|
|
6876
|
+
InputFieldComponent.email = (0, import_react21.forwardRef)(function Email({ ...props }, ref) {
|
|
6855
6877
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
6856
6878
|
InputFieldComponent,
|
|
6857
6879
|
{
|
|
@@ -6865,7 +6887,7 @@ InputFieldComponent.email = (0, import_react20.forwardRef)(function Email({ ...p
|
|
|
6865
6887
|
}
|
|
6866
6888
|
);
|
|
6867
6889
|
});
|
|
6868
|
-
InputFieldComponent.password = (0,
|
|
6890
|
+
InputFieldComponent.password = (0, import_react21.forwardRef)(function Password({ ...props }, ref) {
|
|
6869
6891
|
const [isPassword, setIsPassword] = useBooleanState(true);
|
|
6870
6892
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
6871
6893
|
InputFieldComponent,
|
|
@@ -6882,31 +6904,31 @@ InputFieldComponent.password = (0, import_react20.forwardRef)(function Password(
|
|
|
6882
6904
|
}
|
|
6883
6905
|
);
|
|
6884
6906
|
});
|
|
6885
|
-
InputFieldComponent.search = (0,
|
|
6886
|
-
const [inputFieldValue, setInputFieldValue] = (0,
|
|
6907
|
+
InputFieldComponent.search = (0, import_react21.forwardRef)(function Search({ value, onChangeValue, onFocus, onBlur, ...props }, ref) {
|
|
6908
|
+
const [inputFieldValue, setInputFieldValue] = (0, import_react21.useState)(value?.toString() ?? "");
|
|
6887
6909
|
const [inputFieldFocused, setInputFieldFocused] = useBooleanState();
|
|
6888
|
-
const onChangeValueElement = (0,
|
|
6910
|
+
const onChangeValueElement = (0, import_react21.useCallback)(
|
|
6889
6911
|
(value2) => {
|
|
6890
6912
|
setInputFieldValue(value2);
|
|
6891
6913
|
onChangeValue?.(value2);
|
|
6892
6914
|
},
|
|
6893
6915
|
[onChangeValue]
|
|
6894
6916
|
);
|
|
6895
|
-
const onFocusElement = (0,
|
|
6917
|
+
const onFocusElement = (0, import_react21.useCallback)(
|
|
6896
6918
|
(event) => {
|
|
6897
6919
|
setInputFieldFocused.setTrue();
|
|
6898
6920
|
onFocus?.(event);
|
|
6899
6921
|
},
|
|
6900
6922
|
[onFocus]
|
|
6901
6923
|
);
|
|
6902
|
-
const onBlurElement = (0,
|
|
6924
|
+
const onBlurElement = (0, import_react21.useCallback)(
|
|
6903
6925
|
(event) => {
|
|
6904
6926
|
setTimeout(() => setInputFieldFocused.setFalse(), 0.1 * 1e3);
|
|
6905
6927
|
onBlur?.(event);
|
|
6906
6928
|
},
|
|
6907
6929
|
[onBlur]
|
|
6908
6930
|
);
|
|
6909
|
-
const onClickRightIcon = (0,
|
|
6931
|
+
const onClickRightIcon = (0, import_react21.useCallback)(() => {
|
|
6910
6932
|
onChangeValueElement("");
|
|
6911
6933
|
}, [onChangeValueElement]);
|
|
6912
6934
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
@@ -6925,26 +6947,26 @@ InputFieldComponent.search = (0, import_react20.forwardRef)(function Search({ va
|
|
|
6925
6947
|
}
|
|
6926
6948
|
);
|
|
6927
6949
|
});
|
|
6928
|
-
InputFieldComponent.phoneNumber = (0,
|
|
6950
|
+
InputFieldComponent.phoneNumber = (0, import_react21.forwardRef)(function PhoneNumber({ label, value, onChangeValue, labelColor, id, ...props }, ref) {
|
|
6929
6951
|
const theme2 = useTheme();
|
|
6930
|
-
const internalId = (0,
|
|
6931
|
-
const [dropdownValue, setDropdownValue] = (0,
|
|
6932
|
-
const [inputFieldValue, setInputFieldValue] = (0,
|
|
6933
|
-
const renderOption = (0,
|
|
6952
|
+
const internalId = (0, import_react21.useId)();
|
|
6953
|
+
const [dropdownValue, setDropdownValue] = (0, import_react21.useState)();
|
|
6954
|
+
const [inputFieldValue, setInputFieldValue] = (0, import_react21.useState)(value?.toString() ?? "");
|
|
6955
|
+
const renderOption = (0, import_react21.useCallback)(
|
|
6934
6956
|
(option, index, isSelected) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Div_default.row, { alignItems: "center", gap: theme2.styles.gap, children: [
|
|
6935
6957
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Image_default, { src: `https://flagcdn.com/w80/${option.data?.code.toString().toLowerCase()}.webp`, width: 20 }),
|
|
6936
6958
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Text_default, { children: option.label })
|
|
6937
6959
|
] }),
|
|
6938
6960
|
[]
|
|
6939
6961
|
);
|
|
6940
|
-
const onChangeDropdown = (0,
|
|
6962
|
+
const onChangeDropdown = (0, import_react21.useCallback)(
|
|
6941
6963
|
(value2) => {
|
|
6942
6964
|
setDropdownValue(value2);
|
|
6943
6965
|
onChangeValue?.(value2 ? `+${value2}${inputFieldValue}` : inputFieldValue);
|
|
6944
6966
|
},
|
|
6945
6967
|
[onChangeValue, inputFieldValue]
|
|
6946
6968
|
);
|
|
6947
|
-
const onChangeValueElement = (0,
|
|
6969
|
+
const onChangeValueElement = (0, import_react21.useCallback)(
|
|
6948
6970
|
(value2) => {
|
|
6949
6971
|
const readyValue = value2.replace(/\D/g, "");
|
|
6950
6972
|
setInputFieldValue(readyValue);
|
|
@@ -6952,7 +6974,7 @@ InputFieldComponent.phoneNumber = (0, import_react20.forwardRef)(function PhoneN
|
|
|
6952
6974
|
},
|
|
6953
6975
|
[onChangeValue, dropdownValue]
|
|
6954
6976
|
);
|
|
6955
|
-
const options = (0,
|
|
6977
|
+
const options = (0, import_react21.useMemo)(
|
|
6956
6978
|
() => countries.map((country) => ({
|
|
6957
6979
|
value: country.phoneNumberExtension,
|
|
6958
6980
|
label: `+${country.phoneNumberExtension}`,
|
|
@@ -6960,13 +6982,13 @@ InputFieldComponent.phoneNumber = (0, import_react20.forwardRef)(function PhoneN
|
|
|
6960
6982
|
})),
|
|
6961
6983
|
[]
|
|
6962
6984
|
);
|
|
6963
|
-
const defaultValue = (0,
|
|
6985
|
+
const defaultValue = (0, import_react21.useMemo)(() => {
|
|
6964
6986
|
const thisTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
6965
6987
|
const initialDefaultValue = options.find((option) => option.data?.timeZone === thisTimeZone)?.value ?? "";
|
|
6966
6988
|
setDropdownValue(initialDefaultValue);
|
|
6967
6989
|
return initialDefaultValue;
|
|
6968
6990
|
}, [options]);
|
|
6969
|
-
(0,
|
|
6991
|
+
(0, import_react21.useEffect)(() => {
|
|
6970
6992
|
if (value === void 0 || value === null) return;
|
|
6971
6993
|
const newValue = value.toString();
|
|
6972
6994
|
const country = countries.find(
|
|
@@ -7028,12 +7050,12 @@ InputFieldComponent.phoneNumber = (0, import_react20.forwardRef)(function PhoneN
|
|
|
7028
7050
|
] })
|
|
7029
7051
|
] });
|
|
7030
7052
|
});
|
|
7031
|
-
InputFieldComponent.date = (0,
|
|
7053
|
+
InputFieldComponent.date = (0, import_react21.forwardRef)(function Date2({ minDate, maxDate, ...props }, ref) {
|
|
7032
7054
|
const theme2 = useTheme();
|
|
7033
|
-
const holderRef = (0,
|
|
7055
|
+
const holderRef = (0, import_react21.useRef)(null);
|
|
7034
7056
|
const isMobileIOS = isMobileDevice && getBrowser() === "safari";
|
|
7035
7057
|
const { internalValue, setInternalValue, inputFieldProps, insideInputFieldComponentProps } = useComponentInputFieldDateProps(props, holderRef, isMobileIOS);
|
|
7036
|
-
const onChange = (0,
|
|
7058
|
+
const onChange = (0, import_react21.useCallback)(
|
|
7037
7059
|
(date) => {
|
|
7038
7060
|
inputFieldProps.onChangeValue?.(date ?? "");
|
|
7039
7061
|
setInternalValue(date ?? "");
|
|
@@ -7067,14 +7089,14 @@ InputFieldComponent.date = (0, import_react20.forwardRef)(function Date2({ minDa
|
|
|
7067
7089
|
}
|
|
7068
7090
|
);
|
|
7069
7091
|
});
|
|
7070
|
-
InputFieldComponent.dateTime = (0,
|
|
7092
|
+
InputFieldComponent.dateTime = (0, import_react21.forwardRef)(function DateTime({ minDate, maxDate, defaultDateAfterTimePick, defaultTimeAfterDatePick = "00:00", ...props }, ref) {
|
|
7071
7093
|
const theme2 = useTheme();
|
|
7072
|
-
const holderRef = (0,
|
|
7073
|
-
const selectedHourRef = (0,
|
|
7074
|
-
const selectedMinuteRef = (0,
|
|
7094
|
+
const holderRef = (0, import_react21.useRef)(null);
|
|
7095
|
+
const selectedHourRef = (0, import_react21.useRef)(null);
|
|
7096
|
+
const selectedMinuteRef = (0, import_react21.useRef)(null);
|
|
7075
7097
|
const isMobileIOS = isMobileDevice && getBrowser() === "safari";
|
|
7076
7098
|
const { internalValue, setInternalValue, inputFieldProps, insideInputFieldComponentProps, isOpen } = useComponentInputFieldDateProps(props, holderRef, isMobileIOS);
|
|
7077
|
-
const onChange = (0,
|
|
7099
|
+
const onChange = (0, import_react21.useCallback)(
|
|
7078
7100
|
(date) => {
|
|
7079
7101
|
const newValue = date ? `${date}T${internalValue?.toString().split("T")[1] ?? defaultTimeAfterDatePick}` : "";
|
|
7080
7102
|
inputFieldProps.onChangeValue?.(newValue);
|
|
@@ -7082,7 +7104,7 @@ InputFieldComponent.dateTime = (0, import_react20.forwardRef)(function DateTime(
|
|
|
7082
7104
|
},
|
|
7083
7105
|
[internalValue, defaultTimeAfterDatePick, inputFieldProps.onChangeValue]
|
|
7084
7106
|
);
|
|
7085
|
-
const onClickHour = (0,
|
|
7107
|
+
const onClickHour = (0, import_react21.useCallback)(
|
|
7086
7108
|
(hour) => {
|
|
7087
7109
|
const newTime = `${hour.toString().padStart(2, "0")}:${internalValue?.toString().split(":")[1] || "00"}`;
|
|
7088
7110
|
const today = defaultDateAfterTimePick ?? `${(/* @__PURE__ */ new Date()).getFullYear()}-${((/* @__PURE__ */ new Date()).getMonth() + 1).toString().padStart(2, "0")}-${(/* @__PURE__ */ new Date()).getDate().toString().padStart(2, "0")}`;
|
|
@@ -7092,7 +7114,7 @@ InputFieldComponent.dateTime = (0, import_react20.forwardRef)(function DateTime(
|
|
|
7092
7114
|
},
|
|
7093
7115
|
[defaultDateAfterTimePick, internalValue, inputFieldProps.onChangeValue]
|
|
7094
7116
|
);
|
|
7095
|
-
const onClickMinute = (0,
|
|
7117
|
+
const onClickMinute = (0, import_react21.useCallback)(
|
|
7096
7118
|
(minute) => {
|
|
7097
7119
|
const newTime = `${internalValue?.toString().split("T")?.[1]?.split(":")[0] || "00"}:${minute.toString().padStart(2, "0")}`;
|
|
7098
7120
|
const today = defaultDateAfterTimePick ?? `${(/* @__PURE__ */ new Date()).getFullYear()}-${((/* @__PURE__ */ new Date()).getMonth() + 1).toString().padStart(2, "0")}-${(/* @__PURE__ */ new Date()).getDate().toString().padStart(2, "0")}`;
|
|
@@ -7102,7 +7124,7 @@ InputFieldComponent.dateTime = (0, import_react20.forwardRef)(function DateTime(
|
|
|
7102
7124
|
},
|
|
7103
7125
|
[defaultDateAfterTimePick, internalValue, inputFieldProps.onChangeValue]
|
|
7104
7126
|
);
|
|
7105
|
-
(0,
|
|
7127
|
+
(0, import_react21.useEffect)(() => {
|
|
7106
7128
|
if (isOpen && selectedHourRef.current)
|
|
7107
7129
|
selectedHourRef.current.scrollIntoView({ block: "nearest", behavior: "instant" });
|
|
7108
7130
|
if (isOpen && selectedMinuteRef.current)
|
|
@@ -7221,14 +7243,14 @@ InputFieldComponent.dateTime = (0, import_react20.forwardRef)(function DateTime(
|
|
|
7221
7243
|
}
|
|
7222
7244
|
);
|
|
7223
7245
|
});
|
|
7224
|
-
InputFieldComponent.time = (0,
|
|
7246
|
+
InputFieldComponent.time = (0, import_react21.forwardRef)(function Time({ ...props }, ref) {
|
|
7225
7247
|
const theme2 = useTheme();
|
|
7226
|
-
const holderRef = (0,
|
|
7227
|
-
const selectedHourRef = (0,
|
|
7228
|
-
const selectedMinuteRef = (0,
|
|
7248
|
+
const holderRef = (0, import_react21.useRef)(null);
|
|
7249
|
+
const selectedHourRef = (0, import_react21.useRef)(null);
|
|
7250
|
+
const selectedMinuteRef = (0, import_react21.useRef)(null);
|
|
7229
7251
|
const isMobileIOS = isMobileDevice && getBrowser() === "safari";
|
|
7230
7252
|
const { internalValue, setInternalValue, inputFieldProps, insideInputFieldComponentProps, isOpen } = useComponentInputFieldDateProps(props, holderRef, isMobileIOS);
|
|
7231
|
-
const onClickHour = (0,
|
|
7253
|
+
const onClickHour = (0, import_react21.useCallback)(
|
|
7232
7254
|
(hour) => {
|
|
7233
7255
|
const value = `${hour.toString().padStart(2, "0")}:${internalValue?.toString().split(":")[1] || "00"}`;
|
|
7234
7256
|
inputFieldProps.onChangeValue?.(value);
|
|
@@ -7236,7 +7258,7 @@ InputFieldComponent.time = (0, import_react20.forwardRef)(function Time({ ...pro
|
|
|
7236
7258
|
},
|
|
7237
7259
|
[internalValue, inputFieldProps.onChangeValue]
|
|
7238
7260
|
);
|
|
7239
|
-
const onClickMinute = (0,
|
|
7261
|
+
const onClickMinute = (0, import_react21.useCallback)(
|
|
7240
7262
|
(minute) => {
|
|
7241
7263
|
const value = `${internalValue?.toString().split(":")[0] || "00"}:${minute.toString().padStart(2, "0")}`;
|
|
7242
7264
|
inputFieldProps.onChangeValue?.(value);
|
|
@@ -7244,7 +7266,7 @@ InputFieldComponent.time = (0, import_react20.forwardRef)(function Time({ ...pro
|
|
|
7244
7266
|
},
|
|
7245
7267
|
[internalValue, inputFieldProps.onChangeValue]
|
|
7246
7268
|
);
|
|
7247
|
-
(0,
|
|
7269
|
+
(0, import_react21.useEffect)(() => {
|
|
7248
7270
|
if (isOpen && selectedHourRef.current)
|
|
7249
7271
|
selectedHourRef.current.scrollIntoView({ block: "nearest", behavior: "instant" });
|
|
7250
7272
|
if (isOpen && selectedMinuteRef.current)
|
|
@@ -7343,16 +7365,16 @@ InputFieldComponent.time = (0, import_react20.forwardRef)(function Time({ ...pro
|
|
|
7343
7365
|
}
|
|
7344
7366
|
);
|
|
7345
7367
|
});
|
|
7346
|
-
InputFieldComponent.color = (0,
|
|
7347
|
-
const [inputFieldValue, setInputFieldValue] = (0,
|
|
7348
|
-
const onChangeValueElement = (0,
|
|
7368
|
+
InputFieldComponent.color = (0, import_react21.forwardRef)(function Color2({ value, onChangeValue, ...props }, ref) {
|
|
7369
|
+
const [inputFieldValue, setInputFieldValue] = (0, import_react21.useState)(value ?? "#000000");
|
|
7370
|
+
const onChangeValueElement = (0, import_react21.useCallback)(
|
|
7349
7371
|
(value2) => {
|
|
7350
7372
|
setInputFieldValue(value2);
|
|
7351
7373
|
onChangeValue?.(value2);
|
|
7352
7374
|
},
|
|
7353
7375
|
[onChangeValue]
|
|
7354
7376
|
);
|
|
7355
|
-
(0,
|
|
7377
|
+
(0, import_react21.useEffect)(() => {
|
|
7356
7378
|
setInputFieldValue(value);
|
|
7357
7379
|
}, [value]);
|
|
7358
7380
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
@@ -7381,7 +7403,7 @@ InputFieldComponent.color = (0, import_react20.forwardRef)(function Color2({ val
|
|
|
7381
7403
|
}
|
|
7382
7404
|
);
|
|
7383
7405
|
});
|
|
7384
|
-
var InputField2 = (0,
|
|
7406
|
+
var InputField2 = (0, import_react21.memo)(InputFieldComponent);
|
|
7385
7407
|
InputField2.multiline = InputFieldComponent.multiline;
|
|
7386
7408
|
InputField2.email = InputFieldComponent.email;
|
|
7387
7409
|
InputField2.password = InputFieldComponent.password;
|
|
@@ -7394,7 +7416,7 @@ InputField2.color = InputFieldComponent.color;
|
|
|
7394
7416
|
var InputField_default = InputField2;
|
|
7395
7417
|
|
|
7396
7418
|
// src/components/ToggleInput.tsx
|
|
7397
|
-
var
|
|
7419
|
+
var import_react22 = require("react");
|
|
7398
7420
|
var import_styled_components12 = __toESM(require("styled-components"));
|
|
7399
7421
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
7400
7422
|
var componentSize = 26;
|
|
@@ -7489,7 +7511,7 @@ var SwitchElement = import_styled_components12.default.div.withConfig({
|
|
|
7489
7511
|
${(props) => props.hoverStyle}
|
|
7490
7512
|
}
|
|
7491
7513
|
`;
|
|
7492
|
-
var ToggleInputComponent = (0,
|
|
7514
|
+
var ToggleInputComponent = (0, import_react22.forwardRef)(function ToggleInput({
|
|
7493
7515
|
label,
|
|
7494
7516
|
labelColor,
|
|
7495
7517
|
text,
|
|
@@ -7505,14 +7527,14 @@ var ToggleInputComponent = (0, import_react21.forwardRef)(function ToggleInput({
|
|
|
7505
7527
|
...props
|
|
7506
7528
|
}, ref) {
|
|
7507
7529
|
const theme2 = useTheme();
|
|
7508
|
-
const internalId = (0,
|
|
7530
|
+
const internalId = (0, import_react22.useId)();
|
|
7509
7531
|
const styledComponentStyles = useStyledComponentStyles(props, theme2, true);
|
|
7510
7532
|
const styledComponentStylesWithExcluded = useComponentPropsWithExcludedStyle(props);
|
|
7511
7533
|
const dataProps = useComponentPropsWithPrefix(props, "data");
|
|
7512
7534
|
const ariaProps = useComponentPropsWithPrefix(props, "aria");
|
|
7513
7535
|
const restProps = useComponentPropsWithoutStyle(props);
|
|
7514
|
-
const [internalChecked, setInternalChecked] = (0,
|
|
7515
|
-
const onChangeElement = (0,
|
|
7536
|
+
const [internalChecked, setInternalChecked] = (0, import_react22.useState)(false);
|
|
7537
|
+
const onChangeElement = (0, import_react22.useCallback)(
|
|
7516
7538
|
(event) => {
|
|
7517
7539
|
const newIsChecked = event.target.checked;
|
|
7518
7540
|
if (controlledChecked === void 0) setInternalChecked(newIsChecked);
|
|
@@ -7521,7 +7543,7 @@ var ToggleInputComponent = (0, import_react21.forwardRef)(function ToggleInput({
|
|
|
7521
7543
|
[onChange, controlledChecked, value]
|
|
7522
7544
|
);
|
|
7523
7545
|
const checked = controlledChecked ?? internalChecked;
|
|
7524
|
-
const onClickText = (0,
|
|
7546
|
+
const onClickText = (0, import_react22.useCallback)(() => {
|
|
7525
7547
|
const newIsChecked = !checked;
|
|
7526
7548
|
if (controlledChecked === void 0) setInternalChecked(newIsChecked);
|
|
7527
7549
|
onChange?.(newIsChecked, value);
|
|
@@ -7602,13 +7624,13 @@ var ToggleInputComponent = (0, import_react21.forwardRef)(function ToggleInput({
|
|
|
7602
7624
|
] });
|
|
7603
7625
|
});
|
|
7604
7626
|
var ToggleInput_default = {
|
|
7605
|
-
checkbox: (0,
|
|
7627
|
+
checkbox: (0, import_react22.forwardRef)(function Checkbox(props, ref) {
|
|
7606
7628
|
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ToggleInputComponent, { type: "checkbox", ref, ...props });
|
|
7607
7629
|
}),
|
|
7608
|
-
radiobutton: (0,
|
|
7630
|
+
radiobutton: (0, import_react22.forwardRef)(function RadioButton(props, ref) {
|
|
7609
7631
|
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ToggleInputComponent, { type: "radio", ref, ...props });
|
|
7610
7632
|
}),
|
|
7611
|
-
switch: (0,
|
|
7633
|
+
switch: (0, import_react22.forwardRef)(function Switch({
|
|
7612
7634
|
label,
|
|
7613
7635
|
labelColor,
|
|
7614
7636
|
errorText,
|
|
@@ -7622,7 +7644,7 @@ var ToggleInput_default = {
|
|
|
7622
7644
|
...props
|
|
7623
7645
|
}, ref) {
|
|
7624
7646
|
const theme2 = useTheme();
|
|
7625
|
-
const internalId = (0,
|
|
7647
|
+
const internalId = (0, import_react22.useId)();
|
|
7626
7648
|
const styledComponentStyles = useStyledComponentStyles(props, theme2, true);
|
|
7627
7649
|
const styledComponentStylesWithExcluded = useComponentPropsWithExcludedStyle(props);
|
|
7628
7650
|
const dataProps = useComponentPropsWithPrefix(props, "data");
|
|
@@ -7631,7 +7653,7 @@ var ToggleInput_default = {
|
|
|
7631
7653
|
const [internalChecked, setInternalChecked] = useBooleanState();
|
|
7632
7654
|
const [isMouseDown, setIsMouseDown] = useBooleanState();
|
|
7633
7655
|
const checked = controlledChecked ?? internalChecked;
|
|
7634
|
-
const onClickElement = (0,
|
|
7656
|
+
const onClickElement = (0, import_react22.useCallback)(() => {
|
|
7635
7657
|
if (disabled) return;
|
|
7636
7658
|
const newIsChecked = !checked;
|
|
7637
7659
|
if (controlledChecked === void 0) setInternalChecked.setState(newIsChecked);
|
|
@@ -7688,9 +7710,9 @@ var ToggleInput_default = {
|
|
|
7688
7710
|
};
|
|
7689
7711
|
|
|
7690
7712
|
// src/components/Form.tsx
|
|
7691
|
-
var
|
|
7713
|
+
var import_react23 = require("react");
|
|
7692
7714
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
7693
|
-
var FormComponent = (0,
|
|
7715
|
+
var FormComponent = (0, import_react23.forwardRef)(function Form({
|
|
7694
7716
|
form,
|
|
7695
7717
|
name,
|
|
7696
7718
|
submitButtonText,
|
|
@@ -7714,7 +7736,7 @@ var FormComponent = (0, import_react22.forwardRef)(function Form({
|
|
|
7714
7736
|
...props
|
|
7715
7737
|
}, ref) {
|
|
7716
7738
|
const theme2 = useTheme();
|
|
7717
|
-
const submitButtonIsDisabledInternal = (0,
|
|
7739
|
+
const submitButtonIsDisabledInternal = (0, import_react23.useMemo)(() => {
|
|
7718
7740
|
if (!form || !form.requiredFields) return false;
|
|
7719
7741
|
return Object.entries(form.values).some(
|
|
7720
7742
|
([key, value]) => form.requiredFields?.includes(key) && (value === void 0 || value === null || value?.toString().trim() === "")
|
|
@@ -7723,9 +7745,9 @@ var FormComponent = (0, import_react22.forwardRef)(function Form({
|
|
|
7723
7745
|
const SubmitButtonTag = isDestructive ? Button_default.destructive : Button_default;
|
|
7724
7746
|
const submitButtonIsDisabledFinal = submitButtonIsDisabled || submitButtonIsDisabledInternal;
|
|
7725
7747
|
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Div_default, { width: "100%", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("form", { name, onSubmit: onSubmit ?? form?.onSubmit, ref, children: [
|
|
7726
|
-
gap !== void 0 || withDividers ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Div_default.column, { gap: gap ?? (withDividers ? theme2.styles.space : theme2.styles.gap), children: withDividers ?
|
|
7748
|
+
gap !== void 0 || withDividers ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Div_default.column, { gap: gap ?? (withDividers ? theme2.styles.space : theme2.styles.gap), children: withDividers ? import_react23.Children.toArray(children).map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react23.Fragment, { children: [
|
|
7727
7749
|
child,
|
|
7728
|
-
index <
|
|
7750
|
+
index < import_react23.Children.toArray(children).length - 1 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Divider_default.horizontal, {})
|
|
7729
7751
|
] }, index)) : children }) : children,
|
|
7730
7752
|
submitButtonText && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
7731
7753
|
Div_default.row,
|
|
@@ -7763,13 +7785,13 @@ var FormComponent = (0, import_react22.forwardRef)(function Form({
|
|
|
7763
7785
|
)
|
|
7764
7786
|
] }) });
|
|
7765
7787
|
});
|
|
7766
|
-
var Form2 = (0,
|
|
7788
|
+
var Form2 = (0, import_react23.memo)(FormComponent);
|
|
7767
7789
|
var Form_default = Form2;
|
|
7768
7790
|
|
|
7769
7791
|
// src/components/FormRow.tsx
|
|
7770
|
-
var
|
|
7792
|
+
var import_react24 = require("react");
|
|
7771
7793
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
7772
|
-
var FormRowComponent = (0,
|
|
7794
|
+
var FormRowComponent = (0, import_react24.forwardRef)(function FormRow({ oneItemOnly, noBreakingPoint, asColumn, gap, children, ...props }, ref) {
|
|
7773
7795
|
const theme2 = useTheme();
|
|
7774
7796
|
const mediaQuery = useMediaQuery();
|
|
7775
7797
|
const breakingPoint = asColumn ?? (!noBreakingPoint ? mediaQuery.size900 : false);
|
|
@@ -7779,7 +7801,7 @@ var FormRowComponent = (0, import_react23.forwardRef)(function FormRow({ oneItem
|
|
|
7779
7801
|
oneItemOnly && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Div_default, { width: "100%" })
|
|
7780
7802
|
] });
|
|
7781
7803
|
});
|
|
7782
|
-
FormRowComponent.withTitle = (0,
|
|
7804
|
+
FormRowComponent.withTitle = (0, import_react24.forwardRef)(function WithTitle({
|
|
7783
7805
|
icon,
|
|
7784
7806
|
title,
|
|
7785
7807
|
titleAs = "h3",
|
|
@@ -7846,12 +7868,12 @@ FormRowComponent.withTitle = (0, import_react23.forwardRef)(function WithTitle({
|
|
|
7846
7868
|
)
|
|
7847
7869
|
] });
|
|
7848
7870
|
});
|
|
7849
|
-
var FormRow2 = (0,
|
|
7871
|
+
var FormRow2 = (0, import_react24.memo)(FormRowComponent);
|
|
7850
7872
|
FormRow2.withTitle = FormRowComponent.withTitle;
|
|
7851
7873
|
var FormRow_default = FormRow2;
|
|
7852
7874
|
|
|
7853
7875
|
// src/components/ColorThemeSwitch.tsx
|
|
7854
|
-
var
|
|
7876
|
+
var import_react25 = require("react");
|
|
7855
7877
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
7856
7878
|
var ColorThemeSwitchComponent = function ColorThemeSwitch({
|
|
7857
7879
|
withMoon,
|
|
@@ -7863,10 +7885,10 @@ var ColorThemeSwitchComponent = function ColorThemeSwitch({
|
|
|
7863
7885
|
darkMode: localStorage.getItem("theme") === "dark"
|
|
7864
7886
|
}
|
|
7865
7887
|
});
|
|
7866
|
-
(0,
|
|
7888
|
+
(0, import_react25.useEffect)(() => {
|
|
7867
7889
|
colorThemeControls.toggleTheme(form.values.darkMode ? "dark" : "light");
|
|
7868
7890
|
}, [form.values.darkMode]);
|
|
7869
|
-
(0,
|
|
7891
|
+
(0, import_react25.useEffect)(() => {
|
|
7870
7892
|
const html = document.querySelector("html");
|
|
7871
7893
|
if (!html) return;
|
|
7872
7894
|
const observer = new MutationObserver((mutations) => {
|
|
@@ -7900,16 +7922,16 @@ ColorThemeSwitchComponent.withText = function WithText({ withMoon, className, ..
|
|
|
7900
7922
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text_default, { children: "Dark" })
|
|
7901
7923
|
] });
|
|
7902
7924
|
};
|
|
7903
|
-
var ColorThemeSwitch2 = (0,
|
|
7925
|
+
var ColorThemeSwitch2 = (0, import_react25.memo)(ColorThemeSwitchComponent);
|
|
7904
7926
|
ColorThemeSwitch2.withText = ColorThemeSwitchComponent.withText;
|
|
7905
7927
|
var ColorThemeSwitch_default = ColorThemeSwitch2;
|
|
7906
7928
|
|
|
7907
7929
|
// src/components/Table.tsx
|
|
7908
|
-
var
|
|
7930
|
+
var import_react27 = require("react");
|
|
7909
7931
|
var import_styled_components13 = __toESM(require("styled-components"));
|
|
7910
7932
|
|
|
7911
7933
|
// src/components/Pagination.tsx
|
|
7912
|
-
var
|
|
7934
|
+
var import_react26 = require("react");
|
|
7913
7935
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
7914
7936
|
var PaginationComponent = function Pagination({
|
|
7915
7937
|
currentPage = 1,
|
|
@@ -7923,19 +7945,19 @@ var PaginationComponent = function Pagination({
|
|
|
7923
7945
|
}) {
|
|
7924
7946
|
const theme2 = useTheme();
|
|
7925
7947
|
const mediaQuery = useMediaQuery();
|
|
7926
|
-
const [currentPageInternal, setCurrentPage] = (0,
|
|
7948
|
+
const [currentPageInternal, setCurrentPage] = (0, import_react26.useState)(currentPage);
|
|
7927
7949
|
const pageCountInternal = pageCount ?? (itemsPerPage !== void 0 ? Math.ceil(itemsLength / itemsPerPage) : 1);
|
|
7928
|
-
const onClickPreviousPageElement = (0,
|
|
7950
|
+
const onClickPreviousPageElement = (0, import_react26.useCallback)(() => {
|
|
7929
7951
|
const newPage = currentPageInternal <= 1 ? 1 : currentPageInternal - 1;
|
|
7930
7952
|
setCurrentPage(newPage);
|
|
7931
7953
|
onClickPreviousPage?.(newPage);
|
|
7932
7954
|
}, [currentPageInternal, onClickPreviousPage]);
|
|
7933
|
-
const onClickNextPageElement = (0,
|
|
7955
|
+
const onClickNextPageElement = (0, import_react26.useCallback)(() => {
|
|
7934
7956
|
const newPage = currentPageInternal >= pageCountInternal ? pageCountInternal : currentPageInternal + 1;
|
|
7935
7957
|
setCurrentPage(newPage);
|
|
7936
7958
|
onClickNextPage?.(newPage);
|
|
7937
7959
|
}, [currentPageInternal, pageCountInternal, onClickNextPage]);
|
|
7938
|
-
const paginationItems = (0,
|
|
7960
|
+
const paginationItems = (0, import_react26.useMemo)(() => {
|
|
7939
7961
|
const halfRange = Math.floor(maximumVisiblePages2 / 2);
|
|
7940
7962
|
let startPage = Math.max(1, currentPageInternal - halfRange);
|
|
7941
7963
|
let endPage = Math.min(pageCountInternal, currentPageInternal + halfRange);
|
|
@@ -7950,10 +7972,10 @@ var PaginationComponent = function Pagination({
|
|
|
7950
7972
|
(_, index) => startPage + index
|
|
7951
7973
|
);
|
|
7952
7974
|
}, [pageCountInternal, currentPageInternal]);
|
|
7953
|
-
(0,
|
|
7975
|
+
(0, import_react26.useEffect)(() => {
|
|
7954
7976
|
onChangePage?.(currentPageInternal);
|
|
7955
7977
|
}, [currentPageInternal, onChangePage]);
|
|
7956
|
-
(0,
|
|
7978
|
+
(0, import_react26.useEffect)(() => {
|
|
7957
7979
|
setCurrentPage(currentPage);
|
|
7958
7980
|
}, [currentPage]);
|
|
7959
7981
|
const mobileFooterBreakingPoint = mediaQuery.size700 && pageCountInternal > maximumVisiblePages2 / 1.4;
|
|
@@ -8018,7 +8040,7 @@ var PaginationComponent = function Pagination({
|
|
|
8018
8040
|
)
|
|
8019
8041
|
] });
|
|
8020
8042
|
};
|
|
8021
|
-
var Pagination2 = (0,
|
|
8043
|
+
var Pagination2 = (0, import_react26.memo)(PaginationComponent);
|
|
8022
8044
|
var Pagination_default = Pagination2;
|
|
8023
8045
|
|
|
8024
8046
|
// src/components/Table.tsx
|
|
@@ -8167,7 +8189,7 @@ var filterPresetsText = {
|
|
|
8167
8189
|
nextMonth: "Next month",
|
|
8168
8190
|
nextYear: "Next year"
|
|
8169
8191
|
};
|
|
8170
|
-
var TableComponent = (0,
|
|
8192
|
+
var TableComponent = (0, import_react27.forwardRef)(function Table({
|
|
8171
8193
|
name,
|
|
8172
8194
|
columns,
|
|
8173
8195
|
data,
|
|
@@ -8194,14 +8216,14 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8194
8216
|
const theme2 = useTheme();
|
|
8195
8217
|
const mediaQuery = useMediaQuery();
|
|
8196
8218
|
const { colorTheme } = useBetterHtmlContextInternal();
|
|
8197
|
-
const filterModalRef = (0,
|
|
8198
|
-
const readyColumns = (0,
|
|
8199
|
-
const columnsRef = (0,
|
|
8219
|
+
const filterModalRef = (0, import_react27.useRef)(null);
|
|
8220
|
+
const readyColumns = (0, import_react27.useMemo)(() => columns.filter((column) => !column.hidden), [columns]);
|
|
8221
|
+
const columnsRef = (0, import_react27.useRef)(readyColumns);
|
|
8200
8222
|
columnsRef.current = readyColumns;
|
|
8201
|
-
const [checkedItems, setCheckedItems] = (0,
|
|
8202
|
-
const [expandedRows, setExpandedRows] = (0,
|
|
8203
|
-
const [currentPage, setCurrentPage] = (0,
|
|
8204
|
-
const [filterData, setFilterData] = (0,
|
|
8223
|
+
const [checkedItems, setCheckedItems] = (0, import_react27.useState)([]);
|
|
8224
|
+
const [expandedRows, setExpandedRows] = (0, import_react27.useState)([]);
|
|
8225
|
+
const [currentPage, setCurrentPage] = (0, import_react27.useState)(1);
|
|
8226
|
+
const [filterData, setFilterData] = (0, import_react27.useState)(() => {
|
|
8205
8227
|
if (!memoizeFilters || !name) return defaultFilterData ?? {};
|
|
8206
8228
|
const localStorageData = JSON.parse(localStorage.getItem(`react-better-html-table-filters-${name}`) || "{}");
|
|
8207
8229
|
const timestamp = localStorageData.timestamp;
|
|
@@ -8210,8 +8232,8 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8210
8232
|
if (timeDiff > memoizeFiltersLifespan) return defaultFilterData ?? {};
|
|
8211
8233
|
return data2;
|
|
8212
8234
|
});
|
|
8213
|
-
const [openedFilterColumnIndex, setOpenedFilterColumnIndex] = (0,
|
|
8214
|
-
const [filterListSelectedItems, setFilterListSelectedItems] = (0,
|
|
8235
|
+
const [openedFilterColumnIndex, setOpenedFilterColumnIndex] = (0, import_react27.useState)();
|
|
8236
|
+
const [filterListSelectedItems, setFilterListSelectedItems] = (0, import_react27.useState)();
|
|
8215
8237
|
const openedFilterData = openedFilterColumnIndex !== void 0 ? filterData[openedFilterColumnIndex] : void 0;
|
|
8216
8238
|
const openedFilterColumn = openedFilterColumnIndex !== void 0 ? readyColumns[openedFilterColumnIndex] : void 0;
|
|
8217
8239
|
const filterForm = useForm({
|
|
@@ -8241,8 +8263,8 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8241
8263
|
filterModalRef.current?.close();
|
|
8242
8264
|
}
|
|
8243
8265
|
});
|
|
8244
|
-
const expandColumn = (0,
|
|
8245
|
-
const renderCellContent = (0,
|
|
8266
|
+
const expandColumn = (0, import_react27.useMemo)(() => readyColumns.find((column) => column.type === "expand"), [readyColumns]);
|
|
8267
|
+
const renderCellContent = (0, import_react27.useCallback)(
|
|
8246
8268
|
(column, item, itemIndex) => {
|
|
8247
8269
|
switch (column.type) {
|
|
8248
8270
|
case "text": {
|
|
@@ -8297,7 +8319,7 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8297
8319
|
},
|
|
8298
8320
|
[theme2, checkedItems, expandedRows]
|
|
8299
8321
|
);
|
|
8300
|
-
const onClickRowElement = (0,
|
|
8322
|
+
const onClickRowElement = (0, import_react27.useCallback)(
|
|
8301
8323
|
(item, index) => {
|
|
8302
8324
|
if (expandColumn) {
|
|
8303
8325
|
setExpandedRows((oldValue) => {
|
|
@@ -8314,14 +8336,14 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8314
8336
|
},
|
|
8315
8337
|
[onClickRow, expandColumn]
|
|
8316
8338
|
);
|
|
8317
|
-
const onClickAllCheckboxesElement = (0,
|
|
8339
|
+
const onClickAllCheckboxesElement = (0, import_react27.useCallback)(
|
|
8318
8340
|
(checked) => {
|
|
8319
8341
|
onClickAllCheckboxes?.(checked);
|
|
8320
8342
|
setCheckedItems(data.map(() => checked));
|
|
8321
8343
|
},
|
|
8322
8344
|
[onClickAllCheckboxes, data]
|
|
8323
8345
|
);
|
|
8324
|
-
const onClickFilterButton = (0,
|
|
8346
|
+
const onClickFilterButton = (0, import_react27.useCallback)(
|
|
8325
8347
|
(columnIndex) => {
|
|
8326
8348
|
const thisFilterData = filterData[columnIndex];
|
|
8327
8349
|
if (thisFilterData?.type === "number" || thisFilterData?.type === "date" || thisFilterData?.type === "date-time") {
|
|
@@ -8337,12 +8359,12 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8337
8359
|
},
|
|
8338
8360
|
[filterData]
|
|
8339
8361
|
);
|
|
8340
|
-
const onCloseFilterModal = (0,
|
|
8362
|
+
const onCloseFilterModal = (0, import_react27.useCallback)(() => {
|
|
8341
8363
|
setTimeout(() => setOpenedFilterColumnIndex(void 0), 0.2 * 1e3);
|
|
8342
8364
|
setFilterListSelectedItems(void 0);
|
|
8343
8365
|
filterForm.reset();
|
|
8344
8366
|
}, []);
|
|
8345
|
-
const onClickCancelFormFilter = (0,
|
|
8367
|
+
const onClickCancelFormFilter = (0, import_react27.useCallback)(() => {
|
|
8346
8368
|
if (openedFilterColumnIndex === void 0) return;
|
|
8347
8369
|
setFilterData(
|
|
8348
8370
|
(oldValue) => Object.entries({
|
|
@@ -8355,7 +8377,7 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8355
8377
|
);
|
|
8356
8378
|
filterModalRef.current?.close();
|
|
8357
8379
|
}, [openedFilterColumnIndex]);
|
|
8358
|
-
const onClickFilterListItem = (0,
|
|
8380
|
+
const onClickFilterListItem = (0, import_react27.useCallback)(
|
|
8359
8381
|
(value) => setFilterListSelectedItems((oldValue) => {
|
|
8360
8382
|
if (!oldValue) return [value];
|
|
8361
8383
|
if (oldValue.includes(value)) return oldValue.filter((item) => item !== value);
|
|
@@ -8363,7 +8385,7 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8363
8385
|
}),
|
|
8364
8386
|
[]
|
|
8365
8387
|
);
|
|
8366
|
-
const onClickFilterPreset = (0,
|
|
8388
|
+
const onClickFilterPreset = (0, import_react27.useCallback)(
|
|
8367
8389
|
(preset) => {
|
|
8368
8390
|
const getValueForDate = (date) => {
|
|
8369
8391
|
if (openedFilterColumn?.filter === "date") return date.toISOString().split("T")[0];
|
|
@@ -8448,7 +8470,7 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8448
8470
|
},
|
|
8449
8471
|
[openedFilterColumn]
|
|
8450
8472
|
);
|
|
8451
|
-
const renderExpandedRow = (0,
|
|
8473
|
+
const renderExpandedRow = (0, import_react27.useCallback)(
|
|
8452
8474
|
(...props2) => {
|
|
8453
8475
|
const expandColumn2 = readyColumns.find((column) => column.type === "expand");
|
|
8454
8476
|
if (!expandColumn2) return;
|
|
@@ -8456,7 +8478,7 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8456
8478
|
},
|
|
8457
8479
|
[readyColumns]
|
|
8458
8480
|
);
|
|
8459
|
-
const dataAfterFilter = (0,
|
|
8481
|
+
const dataAfterFilter = (0, import_react27.useMemo)(
|
|
8460
8482
|
() => data.filter(
|
|
8461
8483
|
(item) => Object.entries(filterData).every(([columnIndex, filter]) => {
|
|
8462
8484
|
if (!filter) return true;
|
|
@@ -8477,7 +8499,7 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8477
8499
|
if (filter.min !== void 0 && minDate && itemValue < minDate) return false;
|
|
8478
8500
|
if (filter.max !== void 0 && maxDate && itemValue > maxDate) return false;
|
|
8479
8501
|
} else if (column.filter === "list" && filter.type === "list") {
|
|
8480
|
-
const itemValue = column.
|
|
8502
|
+
const itemValue = column.getItemValue?.(item) ?? (column.type === "text" && column.keyName ? String(item[column.keyName]) : "");
|
|
8481
8503
|
if (!filter.list?.includes(itemValue)) return false;
|
|
8482
8504
|
}
|
|
8483
8505
|
return true;
|
|
@@ -8485,57 +8507,42 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8485
8507
|
),
|
|
8486
8508
|
[data, filterData]
|
|
8487
8509
|
);
|
|
8488
|
-
const dataAfterPagination = (0,
|
|
8510
|
+
const dataAfterPagination = (0, import_react27.useMemo)(() => {
|
|
8489
8511
|
if (pageSize === void 0) return dataAfterFilter;
|
|
8490
8512
|
if (pageCount !== void 0) return dataAfterFilter;
|
|
8491
8513
|
const pageStartItemIndex = (currentPage - 1) * (pageSize ?? 0);
|
|
8492
8514
|
const pageEndItemIndex = pageStartItemIndex + (pageSize ?? 0);
|
|
8493
8515
|
return dataAfterFilter.slice(pageStartItemIndex, pageEndItemIndex);
|
|
8494
8516
|
}, [dataAfterFilter, pageSize, currentPage, pageCount]);
|
|
8495
|
-
const everythingIsChecked = (0,
|
|
8517
|
+
const everythingIsChecked = (0, import_react27.useMemo)(() => {
|
|
8496
8518
|
return data.length > 0 && checkedItems.every((checked) => checked) && checkedItems.length === data.length;
|
|
8497
8519
|
}, [data, checkedItems]);
|
|
8498
|
-
const possibleFilterListValues = (0,
|
|
8499
|
-
if (!openedFilterColumn) return [];
|
|
8500
|
-
return
|
|
8501
|
-
|
|
8502
|
-
|
|
8503
|
-
|
|
8504
|
-
|
|
8505
|
-
|
|
8506
|
-
|
|
8507
|
-
|
|
8508
|
-
|
|
8509
|
-
|
|
8510
|
-
previousValue = previousValue.map(
|
|
8511
|
-
(item) => item.value === value ? {
|
|
8512
|
-
...item,
|
|
8513
|
-
count: item.count + 1
|
|
8514
|
-
} : item
|
|
8515
|
-
);
|
|
8516
|
-
} else
|
|
8517
|
-
previousValue.push({
|
|
8518
|
-
label: label?.toString() ?? "",
|
|
8519
|
-
value,
|
|
8520
|
-
count: 1
|
|
8521
|
-
});
|
|
8522
|
-
}
|
|
8523
|
-
return previousValue;
|
|
8524
|
-
}, []);
|
|
8520
|
+
const possibleFilterListValues = (0, import_react27.useMemo)(() => {
|
|
8521
|
+
if (!openedFilterColumn || openedFilterColumn.filter !== "list") return [];
|
|
8522
|
+
return openedFilterColumn.list.map((item) => ({
|
|
8523
|
+
...item,
|
|
8524
|
+
count: data.reduce((previousValue, currentValue) => {
|
|
8525
|
+
const value = openedFilterColumn.getItemValue?.(currentValue) ?? (openedFilterColumn.type === "text" && openedFilterColumn.keyName ? String(currentValue[openedFilterColumn.keyName]) : "");
|
|
8526
|
+
return previousValue + (item.value === value ? 1 : 0);
|
|
8527
|
+
}, 0)
|
|
8528
|
+
})).reduce(
|
|
8529
|
+
(previousValue, currentValue) => !previousValue.some((item) => item.value === currentValue.value) ? [...previousValue, currentValue] : previousValue,
|
|
8530
|
+
[]
|
|
8531
|
+
);
|
|
8525
8532
|
}, [data, openedFilterColumn, filterForm.values.search]);
|
|
8526
8533
|
const pageCountInternal = pageCount ?? (pageSize !== void 0 ? Math.ceil(dataAfterFilter.length / pageSize) : 1);
|
|
8527
|
-
const onClickSelectAllFilterListItems = (0,
|
|
8534
|
+
const onClickSelectAllFilterListItems = (0, import_react27.useCallback)(
|
|
8528
8535
|
() => setFilterListSelectedItems(possibleFilterListValues.map((item) => item.value)),
|
|
8529
8536
|
[possibleFilterListValues]
|
|
8530
8537
|
);
|
|
8531
|
-
const onClickDeselectAllFilterListItems = (0,
|
|
8532
|
-
(0,
|
|
8538
|
+
const onClickDeselectAllFilterListItems = (0, import_react27.useCallback)(() => setFilterListSelectedItems([]), []);
|
|
8539
|
+
(0, import_react27.useEffect)(() => {
|
|
8533
8540
|
onChangePage?.(currentPage);
|
|
8534
8541
|
}, [onChangePage, currentPage]);
|
|
8535
|
-
(0,
|
|
8542
|
+
(0, import_react27.useEffect)(() => {
|
|
8536
8543
|
onChangeFilter?.(filterData);
|
|
8537
8544
|
}, [onChangeFilter, filterData]);
|
|
8538
|
-
(0,
|
|
8545
|
+
(0, import_react27.useEffect)(() => {
|
|
8539
8546
|
if (!memoizeFilters) return;
|
|
8540
8547
|
if (!name) return;
|
|
8541
8548
|
localStorage.setItem(
|
|
@@ -8546,10 +8553,10 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8546
8553
|
})
|
|
8547
8554
|
);
|
|
8548
8555
|
}, [memoizeFilters, name, filterData]);
|
|
8549
|
-
(0,
|
|
8556
|
+
(0, import_react27.useEffect)(() => {
|
|
8550
8557
|
onChangeFilterDataValue?.(dataAfterFilter);
|
|
8551
8558
|
}, [onChangeFilterDataValue, dataAfterFilter]);
|
|
8552
|
-
(0,
|
|
8559
|
+
(0, import_react27.useImperativeHandle)(
|
|
8553
8560
|
ref,
|
|
8554
8561
|
() => {
|
|
8555
8562
|
return {
|
|
@@ -8621,28 +8628,31 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8621
8628
|
},
|
|
8622
8629
|
column.type + column.label + index
|
|
8623
8630
|
)) }) }),
|
|
8624
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tbody", { children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tr", { className: "withoutHover", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("td", { className: "noData", colSpan: readyColumns.length, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Loader_default.box, {}) }) }) : dataAfterPagination.length > 0 ? dataAfterPagination.map((item, rowIndex) =>
|
|
8625
|
-
|
|
8626
|
-
|
|
8627
|
-
|
|
8628
|
-
|
|
8629
|
-
|
|
8630
|
-
|
|
8631
|
-
|
|
8632
|
-
|
|
8633
|
-
|
|
8634
|
-
|
|
8635
|
-
|
|
8636
|
-
|
|
8631
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tbody", { children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tr", { className: "withoutHover", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("td", { className: "noData", colSpan: readyColumns.length, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Loader_default.box, {}) }) }) : dataAfterPagination.length > 0 ? dataAfterPagination.map((item, rowIndex) => {
|
|
8632
|
+
const realRowIndex = rowIndex + (pageSize ? (currentPage - 1) * pageSize : 0);
|
|
8633
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react27.Fragment, { children: [
|
|
8634
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
8635
|
+
"tr",
|
|
8636
|
+
{
|
|
8637
|
+
className: isInsideTableExpandRow && onClickRow === void 0 && expandColumn === void 0 ? "withoutHover" : void 0,
|
|
8638
|
+
style: getRowStyle?.(item, realRowIndex),
|
|
8639
|
+
onClick: () => onClickRowElement(item, realRowIndex),
|
|
8640
|
+
children: readyColumns.map((column, colIndex) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
8641
|
+
TdStyledComponent,
|
|
8642
|
+
{
|
|
8643
|
+
textAlign: column.align,
|
|
8644
|
+
onClick: (event) => {
|
|
8645
|
+
if (column.clickStopPropagation) event.stopPropagation();
|
|
8646
|
+
},
|
|
8647
|
+
children: renderCellContent(column, item, realRowIndex)
|
|
8637
8648
|
},
|
|
8638
|
-
|
|
8639
|
-
|
|
8640
|
-
|
|
8641
|
-
|
|
8642
|
-
}
|
|
8643
|
-
)
|
|
8644
|
-
|
|
8645
|
-
] }, JSON.stringify(item) + rowIndex)) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tr", { className: "withoutHover", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("td", { className: "noData", colSpan: readyColumns.length, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text_default.unknown, { children: noDataItemsMessage }) }) }) }),
|
|
8649
|
+
column.type + column.label + colIndex
|
|
8650
|
+
))
|
|
8651
|
+
}
|
|
8652
|
+
),
|
|
8653
|
+
expandedRows[realRowIndex] && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tr", { className: "withoutHover isExpandRow", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("td", { colSpan: readyColumns.length, children: renderExpandedRow(item, realRowIndex) }) })
|
|
8654
|
+
] }, JSON.stringify(item) + realRowIndex);
|
|
8655
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tr", { className: "withoutHover", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("td", { className: "noData", colSpan: readyColumns.length, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Text_default.unknown, { children: noDataItemsMessage }) }) }) }),
|
|
8646
8656
|
withFooter && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tfoot", { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("tr", { className: "isFooter", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("td", { colSpan: readyColumns.length, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
8647
8657
|
Div_default.column,
|
|
8648
8658
|
{
|
|
@@ -8811,11 +8821,11 @@ var TableComponent = (0, import_react26.forwardRef)(function Table({
|
|
|
8811
8821
|
)
|
|
8812
8822
|
] });
|
|
8813
8823
|
});
|
|
8814
|
-
var Table2 = (0,
|
|
8824
|
+
var Table2 = (0, import_react27.memo)(TableComponent);
|
|
8815
8825
|
var Table_default = Table2;
|
|
8816
8826
|
|
|
8817
8827
|
// src/components/Tooltip.tsx
|
|
8818
|
-
var
|
|
8828
|
+
var import_react28 = require("react");
|
|
8819
8829
|
var import_styled_components14 = __toESM(require("styled-components"));
|
|
8820
8830
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
8821
8831
|
var tooltipContainerStyle = (props) => ({
|
|
@@ -8919,10 +8929,10 @@ var arrowStyle = (props, borderWidth) => ({
|
|
|
8919
8929
|
transform: !borderWidth && props.align === "center" ? "translateY(-50%);" : void 0
|
|
8920
8930
|
}
|
|
8921
8931
|
});
|
|
8922
|
-
var Arrow = (0,
|
|
8932
|
+
var Arrow = (0, import_react28.memo)(function Arrow2(props) {
|
|
8923
8933
|
const theme2 = useTheme();
|
|
8924
8934
|
const { position, size } = props;
|
|
8925
|
-
const outerProps = (0,
|
|
8935
|
+
const outerProps = (0, import_react28.useMemo)(
|
|
8926
8936
|
() => ({
|
|
8927
8937
|
...props,
|
|
8928
8938
|
color: theme2.colors.border
|
|
@@ -8951,7 +8961,7 @@ var Arrow = (0, import_react27.memo)(function Arrow2(props) {
|
|
|
8951
8961
|
}
|
|
8952
8962
|
);
|
|
8953
8963
|
});
|
|
8954
|
-
var TooltipComponent = (0,
|
|
8964
|
+
var TooltipComponent = (0, import_react28.forwardRef)(function Tooltip({
|
|
8955
8965
|
position = "bottom",
|
|
8956
8966
|
trigger = "hover",
|
|
8957
8967
|
align = "center",
|
|
@@ -8972,17 +8982,17 @@ var TooltipComponent = (0, import_react27.forwardRef)(function Tooltip({
|
|
|
8972
8982
|
children
|
|
8973
8983
|
}, ref) {
|
|
8974
8984
|
const theme2 = useTheme();
|
|
8975
|
-
const triggerHolderRef = (0,
|
|
8976
|
-
const contentRef = (0,
|
|
8977
|
-
const tooltipContainerRef = (0,
|
|
8978
|
-
const closeTimerRef = (0,
|
|
8979
|
-
const [isOpen, setIsOpen] = (0,
|
|
8980
|
-
const [isOpenLate, setIsOpenLate] = (0,
|
|
8985
|
+
const triggerHolderRef = (0, import_react28.useRef)(null);
|
|
8986
|
+
const contentRef = (0, import_react28.useRef)(null);
|
|
8987
|
+
const tooltipContainerRef = (0, import_react28.useRef)(null);
|
|
8988
|
+
const closeTimerRef = (0, import_react28.useRef)(void 0);
|
|
8989
|
+
const [isOpen, setIsOpen] = (0, import_react28.useState)(false);
|
|
8990
|
+
const [isOpenLate, setIsOpenLate] = (0, import_react28.useState)(false);
|
|
8981
8991
|
const arrowSize = withArrow ? theme2.styles.gap : 0;
|
|
8982
8992
|
const gap = theme2.styles.gap / 2;
|
|
8983
8993
|
const outsideScreenGap = theme2.styles.gap / 2;
|
|
8984
8994
|
const totalGap = arrowSize + gap;
|
|
8985
|
-
const openTooltip = (0,
|
|
8995
|
+
const openTooltip = (0, import_react28.useCallback)(() => {
|
|
8986
8996
|
if (disabled) return;
|
|
8987
8997
|
if (closeTimerRef.current) clearTimeout(closeTimerRef.current);
|
|
8988
8998
|
setIsOpen(true);
|
|
@@ -9007,18 +9017,18 @@ var TooltipComponent = (0, import_react27.forwardRef)(function Tooltip({
|
|
|
9007
9017
|
}, 1);
|
|
9008
9018
|
onOpen?.();
|
|
9009
9019
|
}, [disabled, onOpen, outsideScreenGap, totalGap]);
|
|
9010
|
-
const closeTooltip = (0,
|
|
9020
|
+
const closeTooltip = (0, import_react28.useCallback)(() => {
|
|
9011
9021
|
setIsOpen(false);
|
|
9012
9022
|
closeTimerRef.current = setTimeout(() => setIsOpenLate(false), 300);
|
|
9013
9023
|
onClose?.();
|
|
9014
9024
|
}, [onClose]);
|
|
9015
|
-
const onMouseEnter = (0,
|
|
9025
|
+
const onMouseEnter = (0, import_react28.useCallback)(() => {
|
|
9016
9026
|
if (trigger === "hover") openTooltip();
|
|
9017
9027
|
}, [trigger, openTooltip]);
|
|
9018
|
-
const onMouseLeave = (0,
|
|
9028
|
+
const onMouseLeave = (0, import_react28.useCallback)(() => {
|
|
9019
9029
|
if (trigger === "hover") closeTooltip();
|
|
9020
9030
|
}, [trigger, closeTooltip]);
|
|
9021
|
-
const onClickHolder = (0,
|
|
9031
|
+
const onClickHolder = (0, import_react28.useCallback)(
|
|
9022
9032
|
(event) => {
|
|
9023
9033
|
if (trigger === "click") {
|
|
9024
9034
|
if (!isOpen) openTooltip();
|
|
@@ -9027,7 +9037,7 @@ var TooltipComponent = (0, import_react27.forwardRef)(function Tooltip({
|
|
|
9027
9037
|
},
|
|
9028
9038
|
[trigger, openTooltip, isOpen, closeTooltip]
|
|
9029
9039
|
);
|
|
9030
|
-
const onClickOutside = (0,
|
|
9040
|
+
const onClickOutside = (0, import_react28.useCallback)(
|
|
9031
9041
|
(event) => {
|
|
9032
9042
|
if (!isOpen) return;
|
|
9033
9043
|
if (trigger !== "click") return;
|
|
@@ -9037,7 +9047,7 @@ var TooltipComponent = (0, import_react27.forwardRef)(function Tooltip({
|
|
|
9037
9047
|
},
|
|
9038
9048
|
[trigger, isOpen, closeTooltip]
|
|
9039
9049
|
);
|
|
9040
|
-
(0,
|
|
9050
|
+
(0, import_react28.useEffect)(() => {
|
|
9041
9051
|
if (trigger === "click") {
|
|
9042
9052
|
document.addEventListener("mousedown", onClickOutside);
|
|
9043
9053
|
return () => {
|
|
@@ -9045,11 +9055,11 @@ var TooltipComponent = (0, import_react27.forwardRef)(function Tooltip({
|
|
|
9045
9055
|
};
|
|
9046
9056
|
}
|
|
9047
9057
|
}, [trigger, onClickOutside]);
|
|
9048
|
-
(0,
|
|
9058
|
+
(0, import_react28.useEffect)(() => {
|
|
9049
9059
|
if (!disabled) return;
|
|
9050
9060
|
closeTooltip();
|
|
9051
9061
|
}, [disabled]);
|
|
9052
|
-
(0,
|
|
9062
|
+
(0, import_react28.useImperativeHandle)(
|
|
9053
9063
|
ref,
|
|
9054
9064
|
() => {
|
|
9055
9065
|
return {
|
|
@@ -9140,7 +9150,7 @@ var TooltipComponent = (0, import_react27.forwardRef)(function Tooltip({
|
|
|
9140
9150
|
}
|
|
9141
9151
|
);
|
|
9142
9152
|
});
|
|
9143
|
-
TooltipComponent.item = (0,
|
|
9153
|
+
TooltipComponent.item = (0, import_react28.forwardRef)(function Item({
|
|
9144
9154
|
icon,
|
|
9145
9155
|
iconColor,
|
|
9146
9156
|
text,
|
|
@@ -9181,11 +9191,11 @@ TooltipComponent.item = (0, import_react27.forwardRef)(function Item({
|
|
|
9181
9191
|
}
|
|
9182
9192
|
);
|
|
9183
9193
|
});
|
|
9184
|
-
TooltipComponent.divider = (0,
|
|
9194
|
+
TooltipComponent.divider = (0, import_react28.forwardRef)(function DividerComponent(props, ref) {
|
|
9185
9195
|
const theme2 = useTheme();
|
|
9186
9196
|
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Divider_default.horizontal, { marginBlock: theme2.styles.gap, ...props, ref });
|
|
9187
9197
|
});
|
|
9188
|
-
TooltipComponent.sectionTitle = (0,
|
|
9198
|
+
TooltipComponent.sectionTitle = (0, import_react28.forwardRef)(function SectionTitle({ text, ...props }, ref) {
|
|
9189
9199
|
const theme2 = useTheme();
|
|
9190
9200
|
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
9191
9201
|
Text_default,
|
|
@@ -9201,26 +9211,26 @@ TooltipComponent.sectionTitle = (0, import_react27.forwardRef)(function SectionT
|
|
|
9201
9211
|
}
|
|
9202
9212
|
);
|
|
9203
9213
|
});
|
|
9204
|
-
var Tooltip2 = (0,
|
|
9214
|
+
var Tooltip2 = (0, import_react28.memo)(TooltipComponent);
|
|
9205
9215
|
Tooltip2.item = TooltipComponent.item;
|
|
9206
9216
|
Tooltip2.divider = TooltipComponent.divider;
|
|
9207
9217
|
Tooltip2.sectionTitle = TooltipComponent.sectionTitle;
|
|
9208
9218
|
var Tooltip_default = Tooltip2;
|
|
9209
9219
|
|
|
9210
9220
|
// src/components/Tabs.tsx
|
|
9211
|
-
var
|
|
9221
|
+
var import_react29 = require("react");
|
|
9212
9222
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
9213
9223
|
var tabBottomLineWidth = 2;
|
|
9214
9224
|
var tabDotSize = 6;
|
|
9215
9225
|
var defaultTabName = "tab";
|
|
9216
|
-
var TabsComponent = (0,
|
|
9226
|
+
var TabsComponent = (0, import_react29.forwardRef)(function Tabs({ tabs, name, accentColor, style = "default", onChange, children, ...props }, ref) {
|
|
9217
9227
|
const reactRouterDomPlugin2 = usePlugin("react-router-dom");
|
|
9218
9228
|
const theme2 = useTheme();
|
|
9219
9229
|
const urlQuery = reactRouterDomPlugin2 ? useUrlQuery() : void 0;
|
|
9220
9230
|
const { colorTheme, componentsState } = useBetterHtmlContextInternal();
|
|
9221
|
-
const firstRenderPassedRef = (0,
|
|
9222
|
-
const tabsRef = (0,
|
|
9223
|
-
const [selectedTab, setSelectedTab] = (0,
|
|
9231
|
+
const firstRenderPassedRef = (0, import_react29.useRef)(false);
|
|
9232
|
+
const tabsRef = (0, import_react29.useRef)({});
|
|
9233
|
+
const [selectedTab, setSelectedTab] = (0, import_react29.useState)(() => {
|
|
9224
9234
|
const selectedTabValue = tabs[0] ?? "";
|
|
9225
9235
|
if (urlQuery) {
|
|
9226
9236
|
const tabQueryValue = urlQuery.getQuery(name ?? defaultTabName);
|
|
@@ -9229,9 +9239,9 @@ var TabsComponent = (0, import_react28.forwardRef)(function Tabs({ tabs, name, a
|
|
|
9229
9239
|
}
|
|
9230
9240
|
return selectedTabValue;
|
|
9231
9241
|
});
|
|
9232
|
-
const [rerenderState, setRerenderState] = (0,
|
|
9242
|
+
const [rerenderState, setRerenderState] = (0, import_react29.useState)(0);
|
|
9233
9243
|
const tabsGap = style === "box" ? theme2.styles.gap / 2 : 0;
|
|
9234
|
-
const onClickTab = (0,
|
|
9244
|
+
const onClickTab = (0, import_react29.useCallback)(
|
|
9235
9245
|
(tab) => {
|
|
9236
9246
|
setSelectedTab(tab);
|
|
9237
9247
|
onChange?.(tab);
|
|
@@ -9243,11 +9253,11 @@ var TabsComponent = (0, import_react28.forwardRef)(function Tabs({ tabs, name, a
|
|
|
9243
9253
|
},
|
|
9244
9254
|
[onChange, name, urlQuery]
|
|
9245
9255
|
);
|
|
9246
|
-
const width = (0,
|
|
9256
|
+
const width = (0, import_react29.useMemo)(
|
|
9247
9257
|
() => tabsRef.current[selectedTab]?.getBoundingClientRect().width ?? 0,
|
|
9248
9258
|
[rerenderState, selectedTab]
|
|
9249
9259
|
);
|
|
9250
|
-
const leftSpacing = (0,
|
|
9260
|
+
const leftSpacing = (0, import_react29.useMemo)(() => {
|
|
9251
9261
|
const selectedTabIndex = tabs.findIndex((tab) => tab === selectedTab);
|
|
9252
9262
|
let spacing = 0;
|
|
9253
9263
|
Object.values(tabsRef.current).forEach((tab, index) => {
|
|
@@ -9255,7 +9265,7 @@ var TabsComponent = (0, import_react28.forwardRef)(function Tabs({ tabs, name, a
|
|
|
9255
9265
|
});
|
|
9256
9266
|
return spacing;
|
|
9257
9267
|
}, [selectedTab, tabs, tabsGap]);
|
|
9258
|
-
(0,
|
|
9268
|
+
(0, import_react29.useEffect)(() => {
|
|
9259
9269
|
const timeout = setTimeout(() => {
|
|
9260
9270
|
setRerenderState(Math.random());
|
|
9261
9271
|
firstRenderPassedRef.current = true;
|
|
@@ -9264,7 +9274,7 @@ var TabsComponent = (0, import_react28.forwardRef)(function Tabs({ tabs, name, a
|
|
|
9264
9274
|
clearTimeout(timeout);
|
|
9265
9275
|
};
|
|
9266
9276
|
}, []);
|
|
9267
|
-
(0,
|
|
9277
|
+
(0, import_react29.useEffect)(() => {
|
|
9268
9278
|
componentsState.tabs.setTabGroups((oldValue) => {
|
|
9269
9279
|
const thisTabGroup = oldValue.find((item) => item.name === (name ?? defaultTabName));
|
|
9270
9280
|
if (thisTabGroup) {
|
|
@@ -9285,20 +9295,20 @@ var TabsComponent = (0, import_react28.forwardRef)(function Tabs({ tabs, name, a
|
|
|
9285
9295
|
}
|
|
9286
9296
|
});
|
|
9287
9297
|
}, [selectedTab, name]);
|
|
9288
|
-
(0,
|
|
9298
|
+
(0, import_react29.useEffect)(() => {
|
|
9289
9299
|
tabsRef.current[selectedTab]?.scrollIntoView({
|
|
9290
9300
|
behavior: firstRenderPassedRef.current ? "smooth" : void 0,
|
|
9291
9301
|
block: "nearest"
|
|
9292
9302
|
});
|
|
9293
9303
|
}, [selectedTab]);
|
|
9294
|
-
(0,
|
|
9304
|
+
(0, import_react29.useEffect)(() => {
|
|
9295
9305
|
return () => {
|
|
9296
9306
|
componentsState.tabs.setTabGroups(
|
|
9297
9307
|
(oldValue) => oldValue.filter((item) => item.name !== (name ?? defaultTabName))
|
|
9298
9308
|
);
|
|
9299
9309
|
};
|
|
9300
9310
|
}, []);
|
|
9301
|
-
(0,
|
|
9311
|
+
(0, import_react29.useImperativeHandle)(
|
|
9302
9312
|
ref,
|
|
9303
9313
|
() => {
|
|
9304
9314
|
return {
|
|
@@ -9379,11 +9389,11 @@ var TabsComponent = (0, import_react28.forwardRef)(function Tabs({ tabs, name, a
|
|
|
9379
9389
|
});
|
|
9380
9390
|
TabsComponent.content = function Content({ tab, tabWithDot, tabsGroupName, isInitialTab, children }) {
|
|
9381
9391
|
const { componentsState } = useBetterHtmlContextInternal();
|
|
9382
|
-
const thisTabGroupData = (0,
|
|
9392
|
+
const thisTabGroupData = (0, import_react29.useMemo)(
|
|
9383
9393
|
() => componentsState.tabs.tabGroups.find((item) => item.name === (tabsGroupName ?? defaultTabName)),
|
|
9384
9394
|
[componentsState.tabs, tabsGroupName]
|
|
9385
9395
|
);
|
|
9386
|
-
(0,
|
|
9396
|
+
(0, import_react29.useEffect)(() => {
|
|
9387
9397
|
if (tabWithDot) {
|
|
9388
9398
|
componentsState.tabs.setTabsWithDots?.((oldValue) => oldValue.includes(tab) ? oldValue : [...oldValue, tab]);
|
|
9389
9399
|
} else {
|
|
@@ -9394,16 +9404,16 @@ TabsComponent.content = function Content({ tab, tabWithDot, tabsGroupName, isIni
|
|
|
9394
9404
|
}, [tabWithDot]);
|
|
9395
9405
|
return (thisTabGroupData ? thisTabGroupData.selectedTab === tab : isInitialTab) ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Div_default, { width: "100%", children }) : void 0;
|
|
9396
9406
|
};
|
|
9397
|
-
var Tabs2 = (0,
|
|
9407
|
+
var Tabs2 = (0, import_react29.memo)(TabsComponent);
|
|
9398
9408
|
Tabs2.content = TabsComponent.content;
|
|
9399
9409
|
var Tabs_default = Tabs2;
|
|
9400
9410
|
|
|
9401
9411
|
// src/components/Foldable.tsx
|
|
9402
|
-
var
|
|
9412
|
+
var import_react30 = require("react");
|
|
9403
9413
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
9404
9414
|
var animationDurationClose = 0.15;
|
|
9405
9415
|
var animationDurationOpen = animationDurationClose * 2;
|
|
9406
|
-
var FoldableComponent = (0,
|
|
9416
|
+
var FoldableComponent = (0, import_react30.forwardRef)(function Foldable({
|
|
9407
9417
|
isOpen: controlledIsOpen,
|
|
9408
9418
|
defaultOpen = false,
|
|
9409
9419
|
title,
|
|
@@ -9423,23 +9433,23 @@ var FoldableComponent = (0, import_react29.forwardRef)(function Foldable({
|
|
|
9423
9433
|
...props
|
|
9424
9434
|
}, ref) {
|
|
9425
9435
|
const theme2 = useTheme();
|
|
9426
|
-
const bodyRef = (0,
|
|
9436
|
+
const bodyRef = (0, import_react30.useRef)(null);
|
|
9427
9437
|
const [internalIsOpen, setInternalIsOpen] = useBooleanState(defaultOpen);
|
|
9428
|
-
const [bodyVirtualHeight, setBodyVirtualHeight] = (0,
|
|
9438
|
+
const [bodyVirtualHeight, setBodyVirtualHeight] = (0, import_react30.useState)();
|
|
9429
9439
|
const isOpen = controlledIsOpen !== void 0 ? controlledIsOpen : internalIsOpen;
|
|
9430
|
-
const open = (0,
|
|
9440
|
+
const open = (0, import_react30.useCallback)(() => {
|
|
9431
9441
|
if (controlledIsOpen === void 0) setInternalIsOpen.setTrue();
|
|
9432
9442
|
onOpenChange?.(true);
|
|
9433
9443
|
}, [controlledIsOpen, onOpenChange]);
|
|
9434
|
-
const close = (0,
|
|
9444
|
+
const close = (0, import_react30.useCallback)(() => {
|
|
9435
9445
|
if (controlledIsOpen === void 0) setInternalIsOpen.setFalse();
|
|
9436
9446
|
onOpenChange?.(false);
|
|
9437
9447
|
}, [controlledIsOpen, onOpenChange]);
|
|
9438
|
-
const toggleOpen = (0,
|
|
9448
|
+
const toggleOpen = (0, import_react30.useCallback)(() => {
|
|
9439
9449
|
if (controlledIsOpen === void 0) setInternalIsOpen.toggle();
|
|
9440
9450
|
onOpenChange?.(!isOpen);
|
|
9441
9451
|
}, [controlledIsOpen, isOpen, onOpenChange]);
|
|
9442
|
-
(0,
|
|
9452
|
+
(0, import_react30.useEffect)(() => {
|
|
9443
9453
|
if (!bodyRef.current) return;
|
|
9444
9454
|
const body = bodyRef.current;
|
|
9445
9455
|
setBodyVirtualHeight(body.scrollHeight * 2);
|
|
@@ -9450,7 +9460,7 @@ var FoldableComponent = (0, import_react29.forwardRef)(function Foldable({
|
|
|
9450
9460
|
clearTimeout(timeout);
|
|
9451
9461
|
};
|
|
9452
9462
|
}, [isOpen]);
|
|
9453
|
-
(0,
|
|
9463
|
+
(0, import_react30.useEffect)(() => {
|
|
9454
9464
|
if (!isOpen) return;
|
|
9455
9465
|
if (!bodyRef.current) return;
|
|
9456
9466
|
const observer = new ResizeObserver(() => {
|
|
@@ -9462,7 +9472,7 @@ var FoldableComponent = (0, import_react29.forwardRef)(function Foldable({
|
|
|
9462
9472
|
observer.disconnect();
|
|
9463
9473
|
};
|
|
9464
9474
|
}, [isOpen]);
|
|
9465
|
-
(0,
|
|
9475
|
+
(0, import_react30.useImperativeHandle)(
|
|
9466
9476
|
ref,
|
|
9467
9477
|
() => {
|
|
9468
9478
|
return {
|
|
@@ -9534,7 +9544,7 @@ var FoldableComponent = (0, import_react29.forwardRef)(function Foldable({
|
|
|
9534
9544
|
)
|
|
9535
9545
|
] });
|
|
9536
9546
|
});
|
|
9537
|
-
FoldableComponent.box = (0,
|
|
9547
|
+
FoldableComponent.box = (0, import_react30.forwardRef)(function Box3({ ...props }, ref) {
|
|
9538
9548
|
const theme2 = useTheme();
|
|
9539
9549
|
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
9540
9550
|
FoldableComponent,
|
|
@@ -9549,23 +9559,23 @@ FoldableComponent.box = (0, import_react29.forwardRef)(function Box3({ ...props
|
|
|
9549
9559
|
}
|
|
9550
9560
|
);
|
|
9551
9561
|
});
|
|
9552
|
-
var Foldable2 = (0,
|
|
9562
|
+
var Foldable2 = (0, import_react30.memo)(FoldableComponent);
|
|
9553
9563
|
Foldable2.box = FoldableComponent.box;
|
|
9554
9564
|
var Foldable_default = Foldable2;
|
|
9555
9565
|
|
|
9556
9566
|
// src/components/SideMenu.tsx
|
|
9557
|
-
var
|
|
9567
|
+
var import_react31 = require("react");
|
|
9558
9568
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
9559
|
-
var sideMenuContext = (0,
|
|
9569
|
+
var sideMenuContext = (0, import_react31.createContext)(void 0);
|
|
9560
9570
|
var SideMenuContextProvider = sideMenuContext.Provider;
|
|
9561
9571
|
var useSideMenuContext = () => {
|
|
9562
|
-
const context = (0,
|
|
9572
|
+
const context = (0, import_react31.useContext)(sideMenuContext);
|
|
9563
9573
|
if (!context) {
|
|
9564
9574
|
throw new Error("`useSideMenuContext` must be used within a `<SideMenuContextProvider>` component");
|
|
9565
9575
|
}
|
|
9566
9576
|
return context;
|
|
9567
9577
|
};
|
|
9568
|
-
var MenuItemComponent = (0,
|
|
9578
|
+
var MenuItemComponent = (0, import_react31.memo)(function MenuItemComponent2({ item, backgroundColor, onClick }) {
|
|
9569
9579
|
const reactRouterDomPlugin2 = usePlugin("react-router-dom");
|
|
9570
9580
|
if (!reactRouterDomPlugin2) {
|
|
9571
9581
|
throw new Error(
|
|
@@ -9580,7 +9590,7 @@ var MenuItemComponent = (0, import_react30.memo)(function MenuItemComponent2({ i
|
|
|
9580
9590
|
const { activeItem, setActiveItem } = useSideMenuContext();
|
|
9581
9591
|
const [isOpened, setIsOpened] = useBooleanState();
|
|
9582
9592
|
const isCollapsed = sideMenuIsCollapsed && !mediaQuery.size1000;
|
|
9583
|
-
const onClickElement = (0,
|
|
9593
|
+
const onClickElement = (0, import_react31.useCallback)(() => {
|
|
9584
9594
|
if (item.disabled) return;
|
|
9585
9595
|
if (!item.children) setActiveItem((oldValue) => oldValue?.href === item.href ? oldValue : void 0);
|
|
9586
9596
|
if (item.children) {
|
|
@@ -9657,7 +9667,7 @@ var MenuItemComponent = (0, import_react30.memo)(function MenuItemComponent2({ i
|
|
|
9657
9667
|
)
|
|
9658
9668
|
}
|
|
9659
9669
|
);
|
|
9660
|
-
(0,
|
|
9670
|
+
(0, import_react31.useEffect)(() => {
|
|
9661
9671
|
if (!item.href) return;
|
|
9662
9672
|
const isActive2 = location.pathname === "/" ? location.pathname === item.href : location.pathname.startsWith(item.href) && item.href !== "/";
|
|
9663
9673
|
if (!isActive2) return;
|
|
@@ -9668,14 +9678,14 @@ var MenuItemComponent = (0, import_react30.memo)(function MenuItemComponent2({ i
|
|
|
9668
9678
|
} : void 0
|
|
9669
9679
|
);
|
|
9670
9680
|
}, [location.pathname]);
|
|
9671
|
-
(0,
|
|
9681
|
+
(0, import_react31.useEffect)(() => {
|
|
9672
9682
|
if (!item.children) return;
|
|
9673
9683
|
const toBeOpened = item.children.some(
|
|
9674
9684
|
(child) => child.href ? location.pathname === "/" ? location.pathname === child.href : location.pathname.startsWith(child.href) && child.href !== "/" : false
|
|
9675
9685
|
);
|
|
9676
9686
|
setIsOpened.setState(toBeOpened);
|
|
9677
9687
|
}, [item]);
|
|
9678
|
-
(0,
|
|
9688
|
+
(0, import_react31.useEffect)(() => {
|
|
9679
9689
|
if (!isCollapsed) return;
|
|
9680
9690
|
setIsOpened.setFalse();
|
|
9681
9691
|
}, [isCollapsed]);
|
|
@@ -9765,13 +9775,13 @@ var SideMenuComponent = function SideMenu({
|
|
|
9765
9775
|
const theme2 = useTheme();
|
|
9766
9776
|
const mediaQuery = useMediaQuery();
|
|
9767
9777
|
const { components, sideMenuIsCollapsed, setSideMenuIsCollapsed, sideMenuIsOpenMobile, setSideMenuIsOpenMobile } = useBetterHtmlContextInternal();
|
|
9768
|
-
const [activeItem, setActiveItem] = (0,
|
|
9769
|
-
const onClickXButton = (0,
|
|
9778
|
+
const [activeItem, setActiveItem] = (0, import_react31.useState)();
|
|
9779
|
+
const onClickXButton = (0, import_react31.useCallback)(() => {
|
|
9770
9780
|
setSideMenuIsOpenMobile.setFalse();
|
|
9771
9781
|
}, []);
|
|
9772
|
-
const readyItems = (0,
|
|
9773
|
-
const readyBottomItems = (0,
|
|
9774
|
-
const contextValue = (0,
|
|
9782
|
+
const readyItems = (0, import_react31.useMemo)(() => items.filter((item) => !item.hidden), [items]);
|
|
9783
|
+
const readyBottomItems = (0, import_react31.useMemo)(() => bottomItems?.filter((item) => !item.hidden), [bottomItems]);
|
|
9784
|
+
const contextValue = (0, import_react31.useMemo)(
|
|
9775
9785
|
() => ({
|
|
9776
9786
|
activeItem,
|
|
9777
9787
|
setActiveItem
|
|
@@ -10036,7 +10046,7 @@ SideMenuComponent.burgerButton = function BurgerButton() {
|
|
|
10036
10046
|
}
|
|
10037
10047
|
);
|
|
10038
10048
|
};
|
|
10039
|
-
var SideMenu2 = (0,
|
|
10049
|
+
var SideMenu2 = (0, import_react31.memo)(SideMenuComponent);
|
|
10040
10050
|
SideMenu2.pageHolder = SideMenuComponent.pageHolder;
|
|
10041
10051
|
SideMenu2.burgerButton = SideMenuComponent.burgerButton;
|
|
10042
10052
|
var SideMenu_default = SideMenu2;
|