@rolster/react-components 19.6.9 → 19.6.11

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.
Files changed (30) hide show
  1. package/dist/cjs/index.cjs +99 -109
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/es/index.mjs +97 -110
  4. package/dist/es/index.mjs.map +1 -1
  5. package/dist/esm/components/organisms/Datatable/Datatable.d.ts +7 -7
  6. package/dist/esm/components/organisms/Datatable/Datatable.js +15 -15
  7. package/dist/esm/components/organisms/Datatable/Datatable.js.map +1 -1
  8. package/dist/esm/components/organisms/FieldClock/FieldClock.js +5 -7
  9. package/dist/esm/components/organisms/FieldClock/FieldClock.js.map +1 -1
  10. package/dist/esm/components/organisms/FieldDate/FieldDate.js +6 -7
  11. package/dist/esm/components/organisms/FieldDate/FieldDate.js.map +1 -1
  12. package/dist/esm/components/organisms/FieldDateRange/FieldDateRange.js +5 -7
  13. package/dist/esm/components/organisms/FieldDateRange/FieldDateRange.js.map +1 -1
  14. package/dist/esm/components/organisms/FieldList/FieldListController.js +7 -8
  15. package/dist/esm/components/organisms/FieldList/FieldListController.js.map +1 -1
  16. package/dist/esm/components/organisms/ModalClock/ModalClock.d.ts +14 -0
  17. package/dist/esm/components/organisms/ModalClock/ModalClock.js +13 -0
  18. package/dist/esm/components/organisms/ModalClock/ModalClock.js.map +1 -0
  19. package/dist/esm/components/organisms/ModalDate/ModalDate.d.ts +16 -0
  20. package/dist/esm/components/organisms/ModalDate/ModalDate.js +13 -0
  21. package/dist/esm/components/organisms/ModalDate/ModalDate.js.map +1 -0
  22. package/dist/esm/components/organisms/ModalDateRange/ModalDateRange.d.ts +17 -0
  23. package/dist/esm/components/organisms/ModalDateRange/ModalDateRange.js +13 -0
  24. package/dist/esm/components/organisms/ModalDateRange/ModalDateRange.js.map +1 -0
  25. package/dist/esm/helpers/color.js +38 -74
  26. package/dist/esm/helpers/color.js.map +1 -1
  27. package/dist/esm/index.d.ts +3 -0
  28. package/dist/esm/index.js +3 -0
  29. package/dist/esm/index.js.map +1 -1
  30. package/package.json +2 -2
package/dist/es/index.mjs CHANGED
@@ -1139,69 +1139,12 @@ function generateThemeCSS(colors, theme) {
1139
1139
  ...shadowProps
1140
1140
  ];
1141
1141
  }
1142
- const srgbToLinear = (channel) => {
1143
- const x = channel / 255;
1144
- return x <= 0.04045 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;
1145
- };
1146
- const linearToSrgb = (channel) => {
1147
- const v = channel <= 0.0031308
1148
- ? 12.92 * channel
1149
- : 1.055 * channel ** (1 / 2.4) - 0.055;
1150
- return clamp(Math.round(v * 255), 0, 255);
1151
- };
1152
- function rgbToOklch({ r, g, b }) {
1153
- const lr = srgbToLinear(r);
1154
- const lg = srgbToLinear(g);
1155
- const lb = srgbToLinear(b);
1156
- const l = Math.cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);
1157
- const m = Math.cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);
1158
- const s = Math.cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);
1159
- const okL = 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s;
1160
- const okA = 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s;
1161
- const okB = 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s;
1162
- return { l: okL, c: Math.hypot(okA, okB), h: Math.atan2(okB, okA) };
1163
- }
1164
- function oklabToLinearRgb(l, a, b) {
1165
- const l_ = (l + 0.3963377774 * a + 0.2158037573 * b) ** 3;
1166
- const m_ = (l - 0.1055613458 * a - 0.0638541728 * b) ** 3;
1167
- const s_ = (l - 0.0894841775 * a - 1.291485548 * b) ** 3;
1168
- return [
1169
- 4.0767416621 * l_ - 3.3077115913 * m_ + 0.2309699292 * s_,
1170
- -1.2684380046 * l_ + 2.6097574011 * m_ - 0.3413193965 * s_,
1171
- -0.0041960863 * l_ - 0.7034186147 * m_ + 1.707614701 * s_
1172
- ];
1173
- }
1174
- const inGamut = ([r, g, b]) => {
1175
- const e = 1e-4;
1176
- return (r >= -e && r <= 1 + e && g >= -e && g <= 1 + e && b >= -e && b <= 1 + e);
1177
- };
1178
- function oklchToRgb({ l, c, h }) {
1179
- const a = Math.cos(h);
1180
- const b = Math.sin(h);
1181
- const linearAt = (chroma) => oklabToLinearRgb(l, a * chroma, b * chroma);
1182
- if (!inGamut(linearAt(c))) {
1183
- let lo = 0;
1184
- let hi = c;
1185
- for (let i = 0; i < 20; i++) {
1186
- const mid = (lo + hi) / 2;
1187
- if (inGamut(linearAt(mid))) {
1188
- lo = mid;
1189
- }
1190
- else {
1191
- hi = mid;
1192
- }
1193
- }
1194
- c = lo;
1195
- }
1196
- const [lr, lg, lb] = linearAt(c);
1197
- return { r: linearToSrgb(lr), g: linearToSrgb(lg), b: linearToSrgb(lb) };
1198
- }
1199
- const chromaFactor = (lightness) => 0.4 + 0.6 * (1 - Math.abs(lightness - 0.5) * 2);
1200
- function detectShadeLevel(lightness) {
1142
+ function detectShadeLevel(hsl) {
1201
1143
  let bestLevel = '500';
1202
1144
  let minDiff = Infinity;
1203
- SHADE_LABELS.forEach((level) => {
1204
- const diff = Math.abs(lightness - STANDARD_LUMINANCE[level]);
1145
+ Object.keys(STANDARD_LUMINANCE).forEach((level) => {
1146
+ const targetL = STANDARD_LUMINANCE[level];
1147
+ const diff = Math.abs(hsl.l - targetL);
1205
1148
  if (diff < minDiff) {
1206
1149
  minDiff = diff;
1207
1150
  bestLevel = level;
@@ -1210,29 +1153,50 @@ function detectShadeLevel(lightness) {
1210
1153
  return bestLevel;
1211
1154
  }
1212
1155
  function generateThemePalette(baseColor, theme = 'primary') {
1213
- const rgb = hexToRgb(baseColor);
1214
- if (!rgb) {
1156
+ const hsl = hexToHsl(baseColor);
1157
+ if (!hsl) {
1215
1158
  throw new Error(msgInvalidColor(baseColor));
1216
1159
  }
1217
- const base = rgbToOklch(rgb);
1218
- const matchedLevel = detectShadeLevel(base.l * 100);
1160
+ const matchedLevel = detectShadeLevel(hsl);
1161
+ const targetL = STANDARD_LUMINANCE[matchedLevel];
1162
+ const inputL = hsl.l;
1219
1163
  const colors = {};
1164
+ const matchedIndex = SHADE_LABELS.indexOf(matchedLevel);
1220
1165
  SHADE_LABELS.forEach((label) => {
1221
1166
  if (label === matchedLevel) {
1222
- colors[label] = rgbToHex(rgb); // preserve the base color exactly
1167
+ colors[label] = baseColor.toUpperCase();
1223
1168
  return;
1224
1169
  }
1225
- const lightness = STANDARD_LUMINANCE[label] / 100;
1226
- colors[label] = rgbToHex(oklchToRgb({
1227
- l: lightness,
1228
- c: base.c * chromaFactor(lightness),
1229
- h: base.h
1230
- }));
1170
+ const shadeTargetL = STANDARD_LUMINANCE[label];
1171
+ const labelIndex = SHADE_LABELS.indexOf(label);
1172
+ let lightL;
1173
+ if (labelIndex < matchedIndex) {
1174
+ const ratio = inputL / targetL;
1175
+ lightL = shadeTargetL * ratio;
1176
+ }
1177
+ else {
1178
+ const remainingInput = 100 - inputL;
1179
+ const remainingTarget = 100 - targetL;
1180
+ const progress = (shadeTargetL - targetL) / remainingTarget;
1181
+ lightL = inputL + progress * remainingInput;
1182
+ }
1183
+ lightL = Math.min(100, Math.max(0, lightL));
1184
+ const satFactor = lightL > 60
1185
+ ? Math.max(0.2, (100 - lightL) / 40)
1186
+ : lightL < 30
1187
+ ? Math.max(0.2, lightL / 30)
1188
+ : 1;
1189
+ colors[label] = hslToHex({
1190
+ h: hsl.h,
1191
+ s: Math.round(Math.min(100, hsl.s * satFactor)),
1192
+ l: Math.round(lightL)
1193
+ });
1231
1194
  });
1232
- const properties = generateThemeCSS(colors, theme);
1195
+ const shades = colors;
1196
+ const properties = generateThemeCSS(shades, theme);
1233
1197
  return {
1234
1198
  theme,
1235
- colors,
1199
+ colors: shades,
1236
1200
  css: properties.map((p) => `${p.name}: ${p.value};`).join('\n'),
1237
1201
  properties
1238
1202
  };
@@ -2495,10 +2459,10 @@ function RlsDatatable({ children, footer, header, identifier, rlsTheme, resizabl
2495
2459
  function RlsDatatableHeader({ children, identifier, rlsTheme }) {
2496
2460
  return (jsxRuntimeExports.jsx("tr", { id: identifier, className: "rls-datatable__header", "rls-theme": rlsTheme, children: children }));
2497
2461
  }
2498
- function RlsDatatableTitle({ children, className, contained, control, identifier, rlsTheme }) {
2462
+ function RlsDatatableTitle({ children, className, control, identifier, rlsTheme, truncated }) {
2499
2463
  const classNameTitle = useMemo(() => {
2500
- return renderClassStatus('rls-datatable__title', { contained, control }, className);
2501
- }, [className, contained, control]);
2464
+ return renderClassStatus('rls-datatable__title', { truncated, control }, className);
2465
+ }, [className, truncated, control]);
2502
2466
  return (jsxRuntimeExports.jsx("th", { id: identifier, className: classNameTitle, "rls-theme": rlsTheme, children: children }));
2503
2467
  }
2504
2468
  function RlsDatatableSubheader({ children, className, identifier, rlsTheme }) {
@@ -2507,28 +2471,28 @@ function RlsDatatableSubheader({ children, className, identifier, rlsTheme }) {
2507
2471
  }, [className]);
2508
2472
  return (jsxRuntimeExports.jsx("tr", { id: identifier, className: classNameSubheader, "rls-theme": rlsTheme, children: children }));
2509
2473
  }
2510
- function RlsDatatableRecord({ children, className, contained, error, identifier, info, success, warning, rlsTheme }) {
2474
+ function RlsDatatableRecord({ children, className, error, identifier, info, rlsTheme, success, truncated, warning }) {
2511
2475
  const classNameRecord = useMemo(() => {
2512
- return renderClassStatus('rls-datatable__record', { error, info, contained, success, warning }, className);
2513
- }, [className, contained, error, info, success, warning]);
2476
+ return renderClassStatus('rls-datatable__record', { error, info, truncated, success, warning }, className);
2477
+ }, [className, truncated, error, info, success, warning]);
2514
2478
  return (jsxRuntimeExports.jsx("tr", { id: identifier, className: classNameRecord, "rls-theme": rlsTheme, children: children }));
2515
2479
  }
2516
- function RlsDatatableTotals({ children, className, contained, error, identifier, info, success, warning, rlsTheme }) {
2480
+ function RlsDatatableTotals({ children, className, error, identifier, info, rlsTheme, success, truncated, warning }) {
2517
2481
  const classNameTotals = useMemo(() => {
2518
- return renderClassStatus('rls-datatable__totals', { error, info, contained, success, warning }, className);
2519
- }, [className, contained, error, info, success, warning]);
2482
+ return renderClassStatus('rls-datatable__totals', { error, info, truncated, success, warning }, className);
2483
+ }, [className, truncated, error, info, success, warning]);
2520
2484
  return (jsxRuntimeExports.jsx("div", { id: identifier, className: classNameTotals, "rls-theme": rlsTheme, children: children }));
2521
2485
  }
2522
- function RlsDatatableCell({ children, className, contained, control, identifier, rlsTheme }) {
2486
+ function RlsDatatableCell({ children, className, control, identifier, rlsTheme, truncated }) {
2523
2487
  const classNameCell = useMemo(() => {
2524
- return renderClassStatus('rls-datatable__cell', { control, contained }, className);
2525
- }, [className, contained, control]);
2488
+ return renderClassStatus('rls-datatable__cell', { control, truncated }, className);
2489
+ }, [className, truncated, control]);
2526
2490
  return (jsxRuntimeExports.jsx("td", { id: identifier, className: classNameCell, "rls-theme": rlsTheme, children: children }));
2527
2491
  }
2528
- function RlsDatatableData({ children, className, contained, control, identifier }) {
2492
+ function RlsDatatableData({ children, className, control, identifier, truncated }) {
2529
2493
  const classNameData = useMemo(() => {
2530
- return renderClassStatus('rls-datatable__data', { control, contained }, className);
2531
- }, [className, contained, control]);
2494
+ return renderClassStatus('rls-datatable__data', { control, truncated }, className);
2495
+ }, [className, truncated, control]);
2532
2496
  return (jsxRuntimeExports.jsx("div", { id: identifier, className: classNameData, children: children }));
2533
2497
  }
2534
2498
  function RlsDatatableFloating({ children, className, identifier, invested, rlsTheme }) {
@@ -3157,6 +3121,14 @@ function RlsPickerClock({ formControl, onListener, rlsTheme, time }) {
3157
3121
  }) })] }) }), jsxRuntimeExports.jsxs("div", { className: "rls-picker-clock__footer", children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-clock__footer--cancel", children: jsxRuntimeExports.jsx(RlsButton, { type: "flat", onClick: onCancel, children: labels.timeActionCancel }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-clock__footer--today", children: jsxRuntimeExports.jsx(RlsButtonAction, { icon: "timer", onClick: onCurrentTime }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-clock__footer--ok", children: jsxRuntimeExports.jsx(RlsButton, { type: "gradient", onClick: onSelect, children: labels.timeActionSelect }) })] })] }));
3158
3122
  }
3159
3123
 
3124
+ function RlsModalClock({ controller, disabled, formControl, onClose, rlsTheme, time, visible }) {
3125
+ const onListener = useCallback(({ event, value }) => {
3126
+ onClose?.(event !== PickerListenerEvent.Cancel ? value : undefined);
3127
+ controller?.close();
3128
+ }, [onClose, controller]);
3129
+ return (jsxRuntimeExports.jsx(RlsModal, { className: "rls-modal-clock", controller: controller, visible: visible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerClock, { formControl: formControl, time: time, disabled: disabled, onListener: onListener }) }));
3130
+ }
3131
+
3160
3132
  function RlsFieldClock({ children, disabled: disabledProps, formControl, identifier, msgErrorDisabled, onValue, placeholder, readOnly, rlsTheme, time, value: valueInitial }) {
3161
3133
  const [value, setValue] = useState(formControl?.value ?? valueInitial);
3162
3134
  const [modalIsVisible, setModalIsVisible] = useState(false);
@@ -3197,14 +3169,14 @@ function RlsFieldClock({ children, disabled: disabledProps, formControl, identif
3197
3169
  setModalIsVisible(true);
3198
3170
  }
3199
3171
  }, [timeValue, formControl, valueInitial, onChange]);
3200
- const onListener = useCallback(({ event, value }) => {
3201
- if (event !== PickerListenerEvent.Cancel) {
3202
- onChange(value);
3172
+ const onCloseModal = useCallback((time) => {
3173
+ if (time) {
3174
+ onChange(time);
3203
3175
  }
3204
3176
  formControl?.touch();
3205
3177
  setModalIsVisible(false);
3206
3178
  }, [formControl, onChange]);
3207
- return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-clock", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("span", { className: "rls-field-box__label", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-field-box__component", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-box__body", children: [jsxRuntimeExports.jsx("input", { className: "rls-field-clock__control", type: "text", value: status.valueInput, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: disabled }), !readOnly && (jsxRuntimeExports.jsx(RlsButtonIcon, { icon: status.icon, onClick: onClickAction, disabled: disabled }))] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl }))] }), jsxRuntimeExports.jsx(RlsModal, { className: "rls-field-clock-modal", visible: modalIsVisible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerClock, { formControl: formControl, time: time, disabled: disabled, onListener: onListener }) })] }));
3179
+ return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-clock", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("span", { className: "rls-field-box__label", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-field-box__component", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-box__body", children: [jsxRuntimeExports.jsx("input", { className: "rls-field-clock__control", type: "text", value: status.valueInput, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: disabled }), !readOnly && (jsxRuntimeExports.jsx(RlsButtonIcon, { icon: status.icon, onClick: onClickAction, disabled: disabled }))] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl }))] }), jsxRuntimeExports.jsx(RlsModalClock, { visible: modalIsVisible, time: time, disabled: disabled, onClose: onCloseModal, rlsTheme: rlsTheme })] }));
3208
3180
  }
3209
3181
 
3210
3182
  function RlsPickerColor({ color, formControl, onListener, rlsTheme }) {
@@ -3550,6 +3522,14 @@ function RlsPickerDate({ automatic, date, disabled, formControl, maxDate, minDat
3550
3522
  return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-date", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: "rls-picker-date__header", children: [jsxRuntimeExports.jsx(RlsPickerSelectorTitle, { monthControl: monthControl, yearControl: yearControl, date: value, maxDate: maxDate, minDate: minDate, disabled: visibility === 'YEAR', type: 'month', onClick: onVisibilityTitle }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__title", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityDay, children: title }) })] }), jsxRuntimeExports.jsxs("div", { className: classNameComponent, children: [jsxRuntimeExports.jsx(RlsPickerDay, { formControl: dayControl, date: value, month: monthControl.value, year: yearControl.value, maxDate: maxDate, minDate: minDate, disabled: disabled }), jsxRuntimeExports.jsx(RlsPickerMonth, { formControl: monthControl, date: value, year: yearControl.value, maxDate: maxDate, minDate: minDate, disabled: disabled, onValue: onVisibilityDay }), jsxRuntimeExports.jsx(RlsPickerYear, { formControl: yearControl, date: value, maxDate: maxDate, minDate: minDate, disabled: disabled, onValue: onVisibilityDay })] }), !automatic && (jsxRuntimeExports.jsx("div", { className: "rls-picker-date__footer", children: jsxRuntimeExports.jsxs("div", { className: "rls-picker-date__actions", children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-date__actions--cancel", children: jsxRuntimeExports.jsx(RlsButton, { type: "flat", onClick: onCancel, children: labels.dateActionCancel }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__actions--today", children: jsxRuntimeExports.jsx(RlsButtonAction, { icon: "calendar", onClick: onToday, disabled: itIsDisabledToday }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__actions--ok", children: jsxRuntimeExports.jsx(RlsButton, { type: "gradient", onClick: onSelect, children: labels.dateActionSelect }) })] }) }))] }));
3551
3523
  }
3552
3524
 
3525
+ function RlsModalDate({ automatic, controller, date, disabled, formControl, maxDate, minDate, onClose, rlsTheme, visible }) {
3526
+ const onListener = useCallback(({ event, value }) => {
3527
+ onClose?.(event !== PickerListenerEvent.Cancel ? value : undefined);
3528
+ controller?.close();
3529
+ }, [onClose, controller]);
3530
+ return (jsxRuntimeExports.jsx(RlsModal, { className: "rls-modal-date", controller: controller, visible: visible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerDate, { automatic: automatic, formControl: formControl, date: date, disabled: disabled, maxDate: maxDate, minDate: minDate, onListener: onListener }) }));
3531
+ }
3532
+
3553
3533
  function RlsFieldDate({ children, date, disabled: disabledProps, formControl, format, identifier, maxDate, minDate, msgErrorDisabled, onValue, placeholder, readOnly, rlsTheme, value: valueInitial }) {
3554
3534
  const today = useRef(new Date()); // Initial current date in component
3555
3535
  const [value, setValue] = useState(formControl?.value ?? valueInitial);
@@ -3602,14 +3582,14 @@ function RlsFieldDate({ children, date, disabled: disabledProps, formControl, fo
3602
3582
  setModalIsVisible(true);
3603
3583
  }
3604
3584
  }, [dateValue, formControl, valueInitial, onChange]);
3605
- const onListener = useCallback(({ event, value }) => {
3606
- if (event !== PickerListenerEvent.Cancel) {
3607
- onChange(value);
3585
+ const onCloseModal = useCallback((date) => {
3586
+ if (date) {
3587
+ onChange(date);
3608
3588
  }
3609
3589
  formControl?.touch();
3610
3590
  setModalIsVisible(false);
3611
3591
  }, [formControl, onChange]);
3612
- return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-date", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("span", { className: "rls-field-box__label", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-field-box__component", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-box__body", children: [jsxRuntimeExports.jsx("input", { className: "rls-field-date__control", type: "text", value: status.label, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: disabled }), !readOnly && (jsxRuntimeExports.jsx(RlsButtonIcon, { icon: status.icon, onClick: onClickAction, disabled: disabled }))] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl }))] }), jsxRuntimeExports.jsx(RlsModal, { className: "rls-field-date-modal", visible: modalIsVisible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerDate, { formControl: formControl, date: date, disabled: disabled, maxDate: maxDate, minDate: minDate, onListener: onListener }) })] }));
3592
+ return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-date", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("span", { className: "rls-field-box__label", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-field-box__component", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-box__body", children: [jsxRuntimeExports.jsx("input", { className: "rls-field-date__control", type: "text", value: status.label, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: disabled }), !readOnly && (jsxRuntimeExports.jsx(RlsButtonIcon, { icon: status.icon, onClick: onClickAction, disabled: disabled }))] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl }))] }), jsxRuntimeExports.jsx(RlsModalDate, { visible: modalIsVisible, date: date, disabled: disabled, maxDate: maxDate, minDate: minDate, onClose: onCloseModal, rlsTheme: rlsTheme })] }));
3613
3593
  }
3614
3594
 
3615
3595
  function rangeFormatTemplate({ maxDate, minDate }) {
@@ -3685,6 +3665,14 @@ function RlsPickerDateRange({ automatic, date: datePicker, disabled, formControl
3685
3665
  return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-date-range", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: "rls-picker-date-range__header", children: [jsxRuntimeExports.jsx(RlsPickerSelectorTitle, { monthControl: monthControl, yearControl: yearControl, date: date, maxDate: maxDate, minDate: minDate, disabled: visibility === 'YEAR', type: visibility === 'MONTH' ? 'year' : 'month', onClick: onVisibilityTitle }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date-range__title", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityDay, children: title }) })] }), jsxRuntimeExports.jsxs("div", { className: classNameComponent, children: [jsxRuntimeExports.jsx(RlsPickerDayRange, { formControl: rangeControl, date: date, maxDate: maxDate, minDate: minDate, disabled: disabled }), jsxRuntimeExports.jsx(RlsPickerMonth, { formControl: monthControl, year: yearControl.value, maxDate: maxDate, minDate: minDate, disabled: disabled, onValue: onVisibilityDay }), jsxRuntimeExports.jsx(RlsPickerYear, { formControl: yearControl, maxDate: maxDate, minDate: minDate, disabled: disabled, onValue: onVisibilityDay })] }), jsxRuntimeExports.jsx("div", { className: classNameFooter, children: jsxRuntimeExports.jsxs("div", { className: "rls-picker-date-range__actions", children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-date-range__actions--cancel", children: jsxRuntimeExports.jsx(RlsButton, { type: "flat", onClick: onCancel, children: labels.dateActionCancel }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date-range__actions--ok", children: jsxRuntimeExports.jsx(RlsButton, { type: "gradient", onClick: onSelect, children: labels.dateActionSelect }) })] }) })] }));
3686
3666
  }
3687
3667
 
3668
+ function RlsModalDateRange({ automatic, controller, date, disabled, formControl, maxDate, minDate, onClose, rlsTheme, visible }) {
3669
+ const onListener = useCallback(({ event, value }) => {
3670
+ onClose?.(event !== PickerListenerEvent.Cancel ? value : undefined);
3671
+ controller?.close();
3672
+ }, [onClose, controller]);
3673
+ return (jsxRuntimeExports.jsx(RlsModal, { className: "rls-modal-date-range", controller: controller, visible: visible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerDateRange, { automatic: automatic, formControl: formControl, date: date, disabled: disabled, maxDate: maxDate, minDate: minDate, onListener: onListener }) }));
3674
+ }
3675
+
3688
3676
  function RlsFieldDateRange({ children, date, disabled: disabledProps, formControl, identifier, maxDate, minDate, msgErrorDisabled, onValue, placeholder, readOnly, rlsTheme, value: valueInitial }) {
3689
3677
  const currentDate = useMemo(() => date ?? new Date(), [date]);
3690
3678
  const [value, setValue] = useState(formControl?.value || valueInitial);
@@ -3726,14 +3714,14 @@ function RlsFieldDateRange({ children, date, disabled: disabledProps, formContro
3726
3714
  setModalIsVisible(true);
3727
3715
  }
3728
3716
  }, [dateRangeValue, formControl, valueInitial, onChange]);
3729
- const onListener = useCallback(({ event, value }) => {
3730
- if (event !== PickerListenerEvent.Cancel) {
3731
- onChange(value);
3717
+ const onCloseModal = useCallback((dateRange) => {
3718
+ if (dateRange) {
3719
+ onChange(dateRange);
3732
3720
  }
3733
3721
  formControl?.touch();
3734
3722
  setModalIsVisible(false);
3735
3723
  }, [formControl, onChange]);
3736
- return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-date-range", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("span", { className: "rls-field-box__label", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-field-box__component", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-box__body", children: [jsxRuntimeExports.jsx("input", { className: "rls-field-date-range__control", type: "text", value: status.valueInput, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: disabled }), !readOnly && (jsxRuntimeExports.jsx(RlsButtonIcon, { icon: status.icon, onClick: onClickAction, disabled: disabled }))] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl }))] }), jsxRuntimeExports.jsx(RlsModal, { className: "rls-field-date-range-modal", visible: modalIsVisible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerDateRange, { formControl: formControl, date: currentDate, disabled: disabled, maxDate: maxDate, minDate: minDate, onListener: onListener }) })] }));
3724
+ return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-date-range", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("span", { className: "rls-field-box__label", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-field-box__component", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-box__body", children: [jsxRuntimeExports.jsx("input", { className: "rls-field-date-range__control", type: "text", value: status.valueInput, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: disabled }), !readOnly && (jsxRuntimeExports.jsx(RlsButtonIcon, { icon: status.icon, onClick: onClickAction, disabled: disabled }))] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl }))] }), jsxRuntimeExports.jsx(RlsModalDateRange, { visible: modalIsVisible, date: currentDate, disabled: disabled, maxDate: maxDate, minDate: minDate, onClose: onCloseModal, rlsTheme: rlsTheme })] }));
3737
3725
  }
3738
3726
 
3739
3727
  const MAX_LIST_HEIGHT_REM = 90;
@@ -3786,26 +3774,25 @@ function useFieldList(props) {
3786
3774
  useEffect(() => {
3787
3775
  const formValue = formControl?.value;
3788
3776
  if (formValue !== undefined && formValue !== null && formValue.length) {
3789
- const selectedElements = suggestions.filter((state) => formValue.some((value) => state.compareTo(value)));
3790
- setSelected(selectedElements);
3777
+ setSelected(suggestions.filter((state) => formValue.some((value) => state.compareTo(value))));
3791
3778
  }
3792
3779
  else {
3793
3780
  setSelected([]);
3794
3781
  }
3795
3782
  }, [formControl?.value, suggestions]);
3796
- const setListState = useCallback((updates) => {
3783
+ const setListState = useCallback((controllerState) => {
3797
3784
  setState((state) => {
3798
- const _updates = updates.listIsVisible !== undefined
3785
+ const newState = controllerState.listIsVisible !== undefined
3799
3786
  ? {
3800
- ...updates,
3801
- ...(updates.listIsVisible
3787
+ ...controllerState,
3788
+ ...(controllerState.listIsVisible
3802
3789
  ? {
3803
3790
  higher: shouldDisplayHigher(refContent.current, refList.current)
3804
3791
  }
3805
3792
  : {})
3806
3793
  }
3807
- : updates;
3808
- return { ...state, ..._updates };
3794
+ : controllerState;
3795
+ return { ...state, ...newState };
3809
3796
  });
3810
3797
  }, []);
3811
3798
  const toggleElement = useCallback((element) => {
@@ -4771,5 +4758,5 @@ function usePortalController() {
4771
4758
  return { close, open, visible };
4772
4759
  }
4773
4760
 
4774
- export { ConfirmationResult, DEFAULT_COLOR, RlsAccordion, RlsAlert, RlsAmount, RlsApplication, RlsAreaText, RlsAvatar, RlsBadge, RlsBallot, RlsBody, RlsBottomSheet, RlsBreadcrumb, RlsButton, RlsButtonAction, RlsButtonIcon, RlsButtonOption, RlsButtonProgress, RlsButtonStepper, RlsButtonToggle, RlsCard, RlsCheckBox, RlsCheckBoxControl, RlsConfirmation, RlsContent, RlsContext, RlsDatatable, RlsDatatableCell, RlsDatatableData, RlsDatatableFloating, RlsDatatableHeader, RlsDatatableRecord, RlsDatatableSubheader, RlsDatatableTitle, RlsDatatableTotals, RlsDropdown, RlsFieldArea, RlsFieldAutocomplete, RlsFieldAutocompleteTemplate, RlsFieldClock, RlsFieldColor, RlsFieldDate, RlsFieldDateRange, RlsFieldDecimal, RlsFieldFile, RlsFieldList, RlsFieldListSuggestions, RlsFieldListTemplate, RlsFieldMoney, RlsFieldNumber, RlsFieldPassword, RlsFieldPercentage, RlsFieldReadonly, RlsFieldSelect, RlsFieldSelectTemplate, RlsFieldText, RlsFormNavigation, RlsIcon, RlsImage, RlsImageChooser, RlsImageEditor, RlsInput, RlsInputCounter, RlsInputDecimal, RlsInputMoney, RlsInputNumber, RlsInputPassword, RlsInputPercentage, RlsInputSearch, RlsInputText, RlsLabel, RlsLabelCheckBox, RlsLabelRadioButton, RlsLabelSwitch, RlsLed, RlsMessageEmpty, RlsMessageFormError, RlsMessageIcon, RlsModal, RlsModalSheet, RlsNavbar, RlsNavbarMenu, RlsPagination, RlsPickerClock, RlsPickerColor, RlsPickerDate, RlsPickerDateRange, RlsPickerDay, RlsPickerDayRange, RlsPickerMonth, RlsPickerSelectorTitle, RlsPickerYear, RlsPoster, RlsProgressBar, RlsProgressCircular, RlsRadioButton, RlsSkeleton, RlsSkeletonText, RlsSlider, RlsSnackbar, RlsSpinner, RlsSwitch, RlsSwitchControl, RlsTabs, RlsTabularText, RlsToolbar, calculateImgDimension, generateThemePalette, hexIsValid, hexToHsl, hexToHsv, hexToRgb, hslToHex, hsvToHex, hsvToRgb, normalizeHex, rangeFormatTemplate, renderClassStatus, rgbToHex, rgbToHsl, rgbToHsv, setDesignSystem, setErrorsI18n, setThemeColor, useConfirmation, useDatatable, useDesingSystemController, useDropdownController, useFieldAutocomplete, useFieldList, useFieldSelect, useFormSingleSelectionController, useFormToggleController, useImageEditorController, useListController, useNotifications, usePortalController, useRelocationOnComponent, useResize, useRlsContext, useSnackbar };
4761
+ export { ConfirmationResult, DEFAULT_COLOR, RlsAccordion, RlsAlert, RlsAmount, RlsApplication, RlsAreaText, RlsAvatar, RlsBadge, RlsBallot, RlsBody, RlsBottomSheet, RlsBreadcrumb, RlsButton, RlsButtonAction, RlsButtonIcon, RlsButtonOption, RlsButtonProgress, RlsButtonStepper, RlsButtonToggle, RlsCard, RlsCheckBox, RlsCheckBoxControl, RlsConfirmation, RlsContent, RlsContext, RlsDatatable, RlsDatatableCell, RlsDatatableData, RlsDatatableFloating, RlsDatatableHeader, RlsDatatableRecord, RlsDatatableSubheader, RlsDatatableTitle, RlsDatatableTotals, RlsDropdown, RlsFieldArea, RlsFieldAutocomplete, RlsFieldAutocompleteTemplate, RlsFieldClock, RlsFieldColor, RlsFieldDate, RlsFieldDateRange, RlsFieldDecimal, RlsFieldFile, RlsFieldList, RlsFieldListSuggestions, RlsFieldListTemplate, RlsFieldMoney, RlsFieldNumber, RlsFieldPassword, RlsFieldPercentage, RlsFieldReadonly, RlsFieldSelect, RlsFieldSelectTemplate, RlsFieldText, RlsFormNavigation, RlsIcon, RlsImage, RlsImageChooser, RlsImageEditor, RlsInput, RlsInputCounter, RlsInputDecimal, RlsInputMoney, RlsInputNumber, RlsInputPassword, RlsInputPercentage, RlsInputSearch, RlsInputText, RlsLabel, RlsLabelCheckBox, RlsLabelRadioButton, RlsLabelSwitch, RlsLed, RlsMessageEmpty, RlsMessageFormError, RlsMessageIcon, RlsModal, RlsModalClock, RlsModalDate, RlsModalDateRange, RlsModalSheet, RlsNavbar, RlsNavbarMenu, RlsPagination, RlsPickerClock, RlsPickerColor, RlsPickerDate, RlsPickerDateRange, RlsPickerDay, RlsPickerDayRange, RlsPickerMonth, RlsPickerSelectorTitle, RlsPickerYear, RlsPoster, RlsProgressBar, RlsProgressCircular, RlsRadioButton, RlsSkeleton, RlsSkeletonText, RlsSlider, RlsSnackbar, RlsSpinner, RlsSwitch, RlsSwitchControl, RlsTabs, RlsTabularText, RlsToolbar, calculateImgDimension, generateThemePalette, hexIsValid, hexToHsl, hexToHsv, hexToRgb, hslToHex, hsvToHex, hsvToRgb, normalizeHex, rangeFormatTemplate, renderClassStatus, rgbToHex, rgbToHsl, rgbToHsv, setDesignSystem, setErrorsI18n, setThemeColor, useConfirmation, useDatatable, useDesingSystemController, useDropdownController, useFieldAutocomplete, useFieldList, useFieldSelect, useFormSingleSelectionController, useFormToggleController, useImageEditorController, useListController, useNotifications, usePortalController, useRelocationOnComponent, useResize, useRlsContext, useSnackbar };
4775
4762
  //# sourceMappingURL=index.mjs.map