@rolster/react-components 18.21.0 → 18.21.6

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 (64) hide show
  1. package/dist/cjs/assets/{index-eohCf4O9.css → index-B4R0Qgg4.css} +11 -11
  2. package/dist/cjs/index.js +616 -433
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/es/assets/{index-eohCf4O9.css → index-B4R0Qgg4.css} +11 -11
  5. package/dist/es/index.js +617 -433
  6. package/dist/es/index.js.map +1 -1
  7. package/dist/esm/components/definitions.d.ts +1 -1
  8. package/dist/esm/components/molecules/Pagination/Pagination.d.ts +1 -1
  9. package/dist/esm/components/molecules/Pagination/Pagination.js +18 -18
  10. package/dist/esm/components/molecules/Pagination/Pagination.js.map +1 -1
  11. package/dist/esm/components/molecules/PickerDay/PickerDay.d.ts +1 -1
  12. package/dist/esm/components/molecules/PickerDay/PickerDay.js +53 -24
  13. package/dist/esm/components/molecules/PickerDay/PickerDay.js.map +1 -1
  14. package/dist/esm/components/molecules/PickerDayRange/PickerDayRange.d.ts +1 -1
  15. package/dist/esm/components/molecules/PickerDayRange/PickerDayRange.js +55 -29
  16. package/dist/esm/components/molecules/PickerDayRange/PickerDayRange.js.map +1 -1
  17. package/dist/esm/components/molecules/PickerMonth/PickerMonth.d.ts +1 -1
  18. package/dist/esm/components/molecules/PickerMonth/PickerMonth.js +57 -34
  19. package/dist/esm/components/molecules/PickerMonth/PickerMonth.js.map +1 -1
  20. package/dist/esm/components/molecules/{PickerMonthTitle/PickerMonthTitle.css → PickerSelectorTitle/PickerSelectorTitle.css} +3 -3
  21. package/dist/esm/components/molecules/PickerSelectorTitle/PickerSelectorTitle.d.ts +15 -0
  22. package/dist/esm/components/molecules/PickerSelectorTitle/PickerSelectorTitle.js +65 -0
  23. package/dist/esm/components/molecules/PickerSelectorTitle/PickerSelectorTitle.js.map +1 -0
  24. package/dist/esm/components/molecules/PickerYear/PickerYear.css +7 -7
  25. package/dist/esm/components/molecules/PickerYear/PickerYear.d.ts +1 -1
  26. package/dist/esm/components/molecules/PickerYear/PickerYear.js +45 -38
  27. package/dist/esm/components/molecules/PickerYear/PickerYear.js.map +1 -1
  28. package/dist/esm/components/molecules/index.d.ts +1 -1
  29. package/dist/esm/components/molecules/index.js +1 -1
  30. package/dist/esm/components/molecules/index.js.map +1 -1
  31. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocomplete.js +27 -14
  32. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocomplete.js.map +1 -1
  33. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocompleteController.js +50 -41
  34. package/dist/esm/components/organisms/FieldAutocomplete/FieldAutocompleteController.js.map +1 -1
  35. package/dist/esm/components/organisms/FieldDate/FieldDate.js +34 -28
  36. package/dist/esm/components/organisms/FieldDate/FieldDate.js.map +1 -1
  37. package/dist/esm/components/organisms/FieldDateRange/FieldDateRange.js +32 -23
  38. package/dist/esm/components/organisms/FieldDateRange/FieldDateRange.js.map +1 -1
  39. package/dist/esm/components/organisms/FieldSelect/FieldSelect.js +35 -13
  40. package/dist/esm/components/organisms/FieldSelect/FieldSelect.js.map +1 -1
  41. package/dist/esm/components/organisms/FieldSelect/FieldSelectController.js +41 -29
  42. package/dist/esm/components/organisms/FieldSelect/FieldSelectController.js.map +1 -1
  43. package/dist/esm/components/organisms/PickerDate/PickerDate.css +1 -1
  44. package/dist/esm/components/organisms/PickerDate/PickerDate.js +71 -54
  45. package/dist/esm/components/organisms/PickerDate/PickerDate.js.map +1 -1
  46. package/dist/esm/components/organisms/PickerDateRange/PickerDateRange.d.ts +1 -1
  47. package/dist/esm/components/organisms/PickerDateRange/PickerDateRange.js +56 -43
  48. package/dist/esm/components/organisms/PickerDateRange/PickerDateRange.js.map +1 -1
  49. package/dist/esm/components/organisms/Snackbar/Snackbar.js +25 -18
  50. package/dist/esm/components/organisms/Snackbar/Snackbar.js.map +1 -1
  51. package/dist/esm/controllers/ListController.js +7 -5
  52. package/dist/esm/controllers/ListController.js.map +1 -1
  53. package/dist/esm/controllers/index.d.ts +0 -1
  54. package/dist/esm/controllers/index.js +0 -1
  55. package/dist/esm/controllers/index.js.map +1 -1
  56. package/dist/esm/helpers/css.js +7 -10
  57. package/dist/esm/helpers/css.js.map +1 -1
  58. package/package.json +3 -3
  59. package/dist/esm/components/molecules/PickerMonthTitle/PickerMonthTitle.d.ts +0 -15
  60. package/dist/esm/components/molecules/PickerMonthTitle/PickerMonthTitle.js +0 -53
  61. package/dist/esm/components/molecules/PickerMonthTitle/PickerMonthTitle.js.map +0 -1
  62. package/dist/esm/controllers/RenderClassStatusController.d.ts +0 -2
  63. package/dist/esm/controllers/RenderClassStatusController.js +0 -10
  64. package/dist/esm/controllers/RenderClassStatusController.js.map +0 -1
package/dist/cjs/index.js CHANGED
@@ -1364,18 +1364,15 @@ function RlsAmount({ value, decimals, rlsTheme, symbol }) {
1364
1364
  }
1365
1365
 
1366
1366
  function renderClassStatus(base, status = {}, additionals) {
1367
- const resultClass = [base];
1367
+ const _classElement = [base];
1368
1368
  Object.entries(status).forEach(([key, state]) => {
1369
- if (state) {
1370
- typeof state === 'string'
1371
- ? resultClass.push(`${base}--${state}`)
1372
- : resultClass.push(`${base}--${key}`);
1373
- }
1369
+ state &&
1370
+ (typeof state === 'string'
1371
+ ? _classElement.push(`${base}--${state}`)
1372
+ : _classElement.push(`${base}--${key}`));
1374
1373
  });
1375
- if (additionals) {
1376
- resultClass.push(additionals);
1377
- }
1378
- return resultClass.join(' ').trim();
1374
+ additionals && _classElement.push(additionals);
1375
+ return _classElement.join(' ').trim();
1379
1376
  }
1380
1377
 
1381
1378
  const DATE_RANGE_FORMAT = '{dd}/{mx}/{aa}';
@@ -1866,57 +1863,92 @@ function RlsLabelSwitch({ children, disabled, extended, identifier, formControl,
1866
1863
  }
1867
1864
 
1868
1865
  function RlsPagination({ suggestions, count, filter, onPagination }) {
1869
- const controller = require$$0.useRef(new components.PaginationController({ suggestions, count }));
1870
- const [template, setTemplate] = require$$0.useState(controller.current.template);
1866
+ const [template, setTemplate] = require$$0.useState();
1867
+ const controller = require$$0.useRef();
1871
1868
  const refreshTemplate = require$$0.useCallback((template, suggestions) => {
1872
1869
  const { firstPage, lastPage } = template;
1873
1870
  onPagination && onPagination({ firstPage, lastPage, suggestions });
1874
1871
  setTemplate(template);
1875
1872
  }, [onPagination]);
1873
+ const refreshPagination = require$$0.useCallback((pagination) => {
1874
+ pagination &&
1875
+ refreshTemplate(pagination.template, pagination.page.collection);
1876
+ }, []);
1876
1877
  require$$0.useEffect(() => {
1877
- controller.current = new components.PaginationController({
1878
+ const pagination = new components.PaginationController({
1878
1879
  suggestions,
1879
1880
  count,
1880
- position: template.currentPage.value
1881
+ position: template?.currentPage.value
1881
1882
  });
1882
- refreshTemplate(controller.current.template, controller.current.page.collection);
1883
+ controller.current = pagination;
1884
+ refreshTemplate(pagination.template, pagination.page.collection);
1883
1885
  }, [suggestions, count]);
1884
1886
  require$$0.useEffect(() => {
1885
- refreshPagination(controller.current.filtrable(filter));
1887
+ refreshPagination(controller.current?.filtrable(filter));
1886
1888
  }, [filter]);
1887
- const refreshPagination = require$$0.useCallback((pagination) => {
1888
- if (pagination) {
1889
- refreshTemplate(pagination.template, pagination.page.collection);
1890
- }
1891
- }, []);
1892
1889
  const goToPagination = require$$0.useCallback((page) => {
1893
- refreshPagination(controller.current.goToPage(page));
1890
+ refreshPagination(controller.current?.goToPage(page));
1894
1891
  }, []);
1895
1892
  const goFirstPagination = require$$0.useCallback(() => {
1896
- refreshPagination(controller.current.goFirstPage());
1893
+ refreshPagination(controller.current?.goFirstPage());
1897
1894
  }, []);
1898
1895
  const goPreviousPagination = require$$0.useCallback(() => {
1899
- refreshPagination(controller.current.goPreviousPage());
1896
+ refreshPagination(controller.current?.goPreviousPage());
1900
1897
  }, []);
1901
1898
  const goNextPagination = require$$0.useCallback(() => {
1902
- refreshPagination(controller.current.goNextPage());
1899
+ refreshPagination(controller.current?.goNextPage());
1903
1900
  }, []);
1904
1901
  const goLastPagination = require$$0.useCallback(() => {
1905
- refreshPagination(controller.current.goLastPage());
1902
+ refreshPagination(controller.current?.goLastPage());
1906
1903
  }, []);
1907
- return (jsxRuntimeExports.jsxs("div", { className: "rls-pagination", children: [jsxRuntimeExports.jsxs("div", { className: "rls-pagination__actions", children: [jsxRuntimeExports.jsx("button", { className: "rls-pagination__action", onClick: goFirstPagination, disabled: template.firstPage, children: jsxRuntimeExports.jsx(RlsIcon, { value: "arrowhead-left" }) }), jsxRuntimeExports.jsx("button", { className: "rls-pagination__action", onClick: goPreviousPagination, disabled: template.firstPage, children: jsxRuntimeExports.jsx(RlsIcon, { value: "arrow-ios-left" }) })] }), jsxRuntimeExports.jsx("div", { className: "rls-pagination__pages", children: template.pages.map((page, index) => {
1904
+ return (jsxRuntimeExports.jsxs("div", { className: "rls-pagination", children: [jsxRuntimeExports.jsxs("div", { className: "rls-pagination__actions", children: [jsxRuntimeExports.jsx("button", { className: "rls-pagination__action", onClick: goFirstPagination, disabled: template?.firstPage, children: jsxRuntimeExports.jsx(RlsIcon, { value: "arrowhead-left" }) }), jsxRuntimeExports.jsx("button", { className: "rls-pagination__action", onClick: goPreviousPagination, disabled: template?.firstPage, children: jsxRuntimeExports.jsx(RlsIcon, { value: "arrow-ios-left" }) })] }), jsxRuntimeExports.jsx("div", { className: "rls-pagination__pages", children: template?.pages.map((page, index) => {
1908
1905
  return (jsxRuntimeExports.jsx("div", { className: renderClassStatus('rls-pagination__page', {
1909
1906
  active: page.active
1910
1907
  }), onClick: () => {
1911
1908
  goToPagination(page);
1912
1909
  }, children: page.label }, index));
1913
- }) }), jsxRuntimeExports.jsx("div", { className: "rls-pagination__description", children: template.description }), jsxRuntimeExports.jsxs("div", { className: "rls-pagination__actions", children: [jsxRuntimeExports.jsx("button", { className: "rls-pagination__action", onClick: goNextPagination, disabled: template.lastPage, children: jsxRuntimeExports.jsx(RlsIcon, { value: "arrow-ios-right" }) }), jsxRuntimeExports.jsx("button", { className: "rls-pagination__action", onClick: goLastPagination, disabled: template.lastPage, children: jsxRuntimeExports.jsx(RlsIcon, { value: "arrowhead-right" }) })] })] }));
1910
+ }) }), jsxRuntimeExports.jsx("div", { className: "rls-pagination__description", children: template?.description }), jsxRuntimeExports.jsxs("div", { className: "rls-pagination__actions", children: [jsxRuntimeExports.jsx("button", { className: "rls-pagination__action", onClick: goNextPagination, disabled: template?.lastPage, children: jsxRuntimeExports.jsx(RlsIcon, { value: "arrow-ios-right" }) }), jsxRuntimeExports.jsx("button", { className: "rls-pagination__action", onClick: goLastPagination, disabled: template?.lastPage, children: jsxRuntimeExports.jsx(RlsIcon, { value: "arrowhead-right" }) })] })] }));
1914
1911
  }
1915
1912
 
1916
- function RlsPickerDay({ date, disabled: _disabled, formControl, maxDate, month, minDate, onValue, rlsTheme, year }) {
1917
- const currentDate = date || new Date(); // Initial date
1913
+ function RlsPickerDayItem({ day, onSelect, disabled }) {
1914
+ const className = require$$0.useMemo(() => {
1915
+ return renderClassStatus('rls-picker-day__element', {
1916
+ disabled: day.disabled || disabled,
1917
+ focused: day.focused,
1918
+ forbidden: day.forbidden,
1919
+ selected: day.selected,
1920
+ today: day.today
1921
+ });
1922
+ }, [
1923
+ day.disabled,
1924
+ day.focused,
1925
+ day.forbidden,
1926
+ day.selected,
1927
+ day.today,
1928
+ disabled
1929
+ ]);
1930
+ const onClick = require$$0.useCallback(() => {
1931
+ day.value && !day.disabled && !disabled && onSelect(day.value);
1932
+ }, [day.value, day.disabled, disabled, onSelect]);
1933
+ return (jsxRuntimeExports.jsx("div", { className: className, onClick: onClick, children: jsxRuntimeExports.jsx("span", { className: "rls-picker-day__element__span", children: day.value || '??' }) }));
1934
+ }
1935
+ function RlsPickerDayHeaders() {
1936
+ return (jsxRuntimeExports.jsx("div", { className: "rls-picker-day__header", children: dates.DAY_LABELS().map((title, index) => (jsxRuntimeExports.jsx("label", { className: "rls-picker-day__label", children: title }, index))) }));
1937
+ }
1938
+ function RlsPickerDay({ date: _date, disabled, formControl, maxDate, month, minDate, onValue, rlsTheme, year }) {
1939
+ const date = require$$0.useMemo(() => _date ?? new Date(), [_date]);
1918
1940
  const [weeks, setWeeks] = require$$0.useState([]);
1919
- const [value, setValue] = require$$0.useState(formControl?.value || currentDate.getDate());
1941
+ const [value, setValue] = require$$0.useState(formControl?.value || date.getDate());
1942
+ const [headers, setHeaders] = require$$0.useState(jsxRuntimeExports.jsx(RlsPickerDayHeaders, {}));
1943
+ const [component, setComponent] = require$$0.useState(jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {}));
1944
+ require$$0.useEffect(() => {
1945
+ return i18n.i18nSubscribe(() => {
1946
+ setHeaders(jsxRuntimeExports.jsx(RlsPickerDayHeaders, {}));
1947
+ });
1948
+ }, []);
1949
+ require$$0.useEffect(() => {
1950
+ setComponent(jsxRuntimeExports.jsx("div", { className: "rls-picker-day__component", children: weeks.map(({ days }, index) => (jsxRuntimeExports.jsx("div", { className: "rls-picker-day__week", children: days.map((day, index) => (jsxRuntimeExports.jsx(RlsPickerDayItem, { day: day, onSelect: onSelect, disabled: disabled }, index))) }, index))) }));
1951
+ }, [weeks]);
1920
1952
  require$$0.useEffect(() => {
1921
1953
  const options = createPickerOptions();
1922
1954
  const day = components.verifyDayPicker(options);
@@ -1926,125 +1958,175 @@ function RlsPickerDay({ date, disabled: _disabled, formControl, maxDate, month,
1926
1958
  const day = components.verifyDayPicker(createPickerOptions());
1927
1959
  day
1928
1960
  ? formControl?.setValue(day)
1929
- : setValue(formControl?.value || currentDate.getDate());
1961
+ : setValue(formControl?.value || date.getDate());
1930
1962
  }, [formControl?.value]);
1931
- function createPickerOptions() {
1963
+ const createPickerOptions = require$$0.useCallback(() => {
1932
1964
  return {
1933
- date: currentDate,
1934
- day: formControl?.value || value,
1935
- month: commons.itIsDefined(month) ? month : currentDate.getMonth(),
1936
- year: year || currentDate.getFullYear(),
1965
+ date,
1966
+ day: formControl?.value ?? value,
1967
+ month: month ?? date.getMonth(),
1968
+ year: year ?? date.getFullYear(),
1937
1969
  minDate,
1938
1970
  maxDate
1939
1971
  };
1940
- }
1941
- function setDayValue(value) {
1972
+ }, [date, formControl?.value, value, month, year, minDate, maxDate]);
1973
+ const setDayValue = require$$0.useCallback((value) => {
1942
1974
  formControl ? formControl.setValue(value) : setValue(value);
1943
- }
1944
- function onChange(value) {
1975
+ }, [formControl]);
1976
+ const onSelect = require$$0.useCallback((value) => {
1945
1977
  setDayValue(value);
1946
1978
  onValue && onValue(value);
1947
- }
1948
- return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-day", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-day__header", children: dates.DAY_LABELS().map((title, index) => (jsxRuntimeExports.jsx("label", { className: "rls-picker-day__label", children: title }, index))) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-day__component", children: weeks.map(({ days }, index) => (jsxRuntimeExports.jsx("div", { className: "rls-picker-day__week", children: days.map(({ value, disabled, focused, forbidden, selected, today }, index) => (jsxRuntimeExports.jsx("div", { className: renderClassStatus('rls-picker-day__element', {
1949
- disabled: disabled || _disabled,
1950
- focused,
1951
- forbidden,
1952
- selected,
1953
- today
1954
- }), onClick: value && !_disabled ? () => onChange(value) : undefined, children: jsxRuntimeExports.jsx("span", { className: "rls-picker-day__element__span", children: value || '??' }) }, index))) }, index))) })] }));
1955
- }
1956
-
1957
- const FORMAT_RANGE = '{dd}/{mx}/{aa}';
1958
- function RlsPickerDayRange({ date, disabled: _disabled, formControl, maxDate, minDate, rlsTheme }) {
1959
- const currentRange = formControl?.value || dates.DateRange.now();
1960
- const currentDate = dates.normalizeMinTime(date || currentRange.minDate);
1961
- const sourceDate = require$$0.useRef(currentRange.minDate);
1979
+ }, [setDayValue, onValue]);
1980
+ return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-day", "rls-theme": rlsTheme, children: [headers, component] }));
1981
+ }
1982
+
1983
+ const formatRange = '{dd}/{mx}/{aa}';
1984
+ function RlsPickerDayRangeHeaders() {
1985
+ return (jsxRuntimeExports.jsx("div", { className: "rls-picker-day__header", children: dates.DAY_LABELS().map((title, index) => (jsxRuntimeExports.jsx("label", { className: "rls-picker-day__label", children: title }, index))) }));
1986
+ }
1987
+ function RlsPickerDayRangeItem({ day, onSelect, disabled }) {
1988
+ const className = require$$0.useMemo(() => {
1989
+ return renderClassStatus('rls-picker-day-range__element', {
1990
+ disabled: day.disabled || disabled,
1991
+ end: day.end,
1992
+ forbidden: day.forbidden,
1993
+ ranged: day.ranged,
1994
+ source: day.source
1995
+ });
1996
+ }, [day.disabled, day.end, day.forbidden, day.ranged, day.source, disabled]);
1997
+ const onClick = require$$0.useCallback(() => {
1998
+ day.value && !day.disabled && !disabled && onSelect(day.value);
1999
+ }, [day.value, day.disabled, disabled, onSelect]);
2000
+ return (jsxRuntimeExports.jsx("div", { className: className, onClick: onClick, children: jsxRuntimeExports.jsx("span", { className: "rls-picker-day-range__element__span", children: day.value || '??' }) }));
2001
+ }
2002
+ function RlsPickerDayRange({ date: _date, disabled, formControl, maxDate, minDate, rlsTheme }) {
2003
+ const _range = require$$0.useMemo(() => {
2004
+ return formControl?.value ?? dates.DateRange.now();
2005
+ }, [formControl?.value]);
2006
+ const date = require$$0.useMemo(() => {
2007
+ return dates.normalizeMinTime(_date ?? _range.minDate);
2008
+ }, [_date]);
2009
+ const sourceDate = require$$0.useRef(_range.minDate);
1962
2010
  const [weeks, setWeeks] = require$$0.useState([]);
1963
- const [range, setRange] = require$$0.useState(currentRange);
2011
+ const [range, setRange] = require$$0.useState(_range);
2012
+ const [headers, setHeaders] = require$$0.useState(jsxRuntimeExports.jsx(RlsPickerDayRangeHeaders, {}));
2013
+ const [component, setComponent] = require$$0.useState(jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {}));
2014
+ require$$0.useEffect(() => {
2015
+ return i18n.i18nSubscribe(() => {
2016
+ setHeaders(jsxRuntimeExports.jsx(RlsPickerDayRangeHeaders, {}));
2017
+ });
2018
+ }, []);
2019
+ require$$0.useEffect(() => {
2020
+ setComponent(jsxRuntimeExports.jsx("div", { className: "rls-picker-day-range__component", children: weeks.map(({ days }, index) => (jsxRuntimeExports.jsx("div", { className: "rls-picker-day-range__week", children: days.map((day, index) => (jsxRuntimeExports.jsx(RlsPickerDayRangeItem, { day: day, onSelect: onSelect, disabled: disabled }, index))) }, index))) }));
2021
+ }, [weeks]);
1964
2022
  require$$0.useEffect(() => {
1965
2023
  setWeeks(components.createDayRangePicker({
1966
- date: currentDate,
2024
+ date,
1967
2025
  range,
1968
2026
  sourceDate: sourceDate.current,
1969
2027
  minDate,
1970
2028
  maxDate
1971
2029
  }));
1972
- }, [range, date, minDate, maxDate]);
1973
- function onChange(value) {
1974
- const date = dates.assignDayInDate(currentDate, value);
1975
- const range = dates.dateIsBefore(date, sourceDate.current)
1976
- ? new dates.DateRange(sourceDate.current, date)
1977
- : new dates.DateRange(date, sourceDate.current);
1978
- sourceDate.current = date;
2030
+ }, [date, range, minDate, maxDate]);
2031
+ const title = require$$0.useMemo(() => {
2032
+ return (jsxRuntimeExports.jsx("div", { className: "rls-picker-day-range__title", children: dates.dateFormatTemplate(sourceDate.current, formatRange) }));
2033
+ }, [sourceDate.current]);
2034
+ const onSelect = require$$0.useCallback((value) => {
2035
+ const _date = dates.assignDayInDate(date, value);
2036
+ const range = dates.dateIsBefore(_date, sourceDate.current)
2037
+ ? new dates.DateRange(sourceDate.current, _date)
2038
+ : new dates.DateRange(_date, sourceDate.current);
2039
+ sourceDate.current = _date;
1979
2040
  setRange(range);
1980
2041
  formControl?.setValue(range);
1981
- }
1982
- return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-day-range", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-day-range__title", children: dates.dateFormatTemplate(sourceDate.current, FORMAT_RANGE) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-day-range__header", children: dates.DAY_LABELS().map((title, index) => (jsxRuntimeExports.jsx("label", { className: "rls-picker-day-range__label", children: title }, index))) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-day-range__component", children: weeks.map(({ days }, index) => (jsxRuntimeExports.jsx("div", { className: "rls-picker-day-range__week", children: days.map(({ disabled, end, forbidden, source, ranged, value }, index) => (jsxRuntimeExports.jsx("div", { className: renderClassStatus('rls-picker-day-range__element', {
1983
- disabled: disabled || _disabled,
1984
- end,
1985
- forbidden,
1986
- ranged,
1987
- source
1988
- }), onClick: value && !_disabled
1989
- ? () => {
1990
- onChange(value);
1991
- }
1992
- : undefined, children: jsxRuntimeExports.jsx("span", { className: "rls-picker-day-range__element__span", children: value || '??' }) }, index))) }, index))) })] }));
1993
- }
1994
-
1995
- function RlsPickerMonth({ date, disabled: _disabled, formControl, maxDate, minDate, onValue, rlsTheme, year }) {
1996
- const currentDate = date || new Date();
2042
+ }, [date, sourceDate.current, formControl]);
2043
+ return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-day-range", "rls-theme": rlsTheme, children: [title, headers, component] }));
2044
+ }
2045
+
2046
+ function RlsPickerMonthItem({ month, onSelect, disabled }) {
2047
+ const [label, setLabel] = require$$0.useState(dates.MONTH_NAMES(month.value));
2048
+ require$$0.useEffect(() => {
2049
+ return i18n.i18nSubscribe(() => {
2050
+ setLabel(dates.MONTH_NAMES(month.value));
2051
+ });
2052
+ }, []);
2053
+ const className = require$$0.useMemo(() => {
2054
+ return renderClassStatus('rls-picker-month__component', {
2055
+ disabled: month.disabled || disabled,
2056
+ focused: month.focused,
2057
+ selected: month.selected
2058
+ });
2059
+ }, [month.disabled, month.focused, month.selected, disabled]);
2060
+ const onClick = require$$0.useCallback(() => {
2061
+ commons.itIsDefined(month.value) &&
2062
+ !month.disabled &&
2063
+ !disabled &&
2064
+ onSelect(month.value);
2065
+ }, [month.value, month.disabled, disabled, onSelect]);
2066
+ return (jsxRuntimeExports.jsx("div", { className: className, onClick: onClick, children: jsxRuntimeExports.jsx("span", { className: "rls-picker-month__span", children: label }) }));
2067
+ }
2068
+ function RlsPickerMonth({ date: _date, disabled, formControl, maxDate, minDate, onValue, rlsTheme, year }) {
2069
+ const date = require$$0.useMemo(() => _date || new Date(), [_date]);
1997
2070
  const [months, setMonths] = require$$0.useState([]);
1998
- const [value, setValue] = require$$0.useState(formControl?.value || currentDate.getMonth());
2071
+ const [value, setValue] = require$$0.useState(formControl?.value ?? date.getMonth());
2072
+ const [component, setComponent] = require$$0.useState(jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {}));
2073
+ require$$0.useEffect(() => {
2074
+ setComponent(jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: months.map((month, index) => (jsxRuntimeExports.jsx(RlsPickerMonthItem, { month: month, onSelect: onSelect, disabled: disabled }, index))) }));
2075
+ }, [months]);
1999
2076
  require$$0.useEffect(() => {
2000
- const options = createPickerOptions(); // MonthPickerProps
2077
+ const options = {
2078
+ date,
2079
+ month: formControl?.value ?? value,
2080
+ year: year ?? date.getFullYear(),
2081
+ minDate,
2082
+ maxDate
2083
+ };
2001
2084
  const month = components.verifyMonthPicker(options);
2002
- month ? setMonthValue(month) : setMonths(components.createMonthPicker(options));
2085
+ commons.itIsDefined(month)
2086
+ ? setMonthValue(month)
2087
+ : setMonths(components.createMonthPicker(options));
2003
2088
  }, [date, year, value, minDate, maxDate]);
2004
2089
  require$$0.useEffect(() => {
2005
- const month = components.verifyMonthPicker(createPickerOptions());
2090
+ const month = components.verifyMonthPicker({
2091
+ date,
2092
+ month: formControl?.value ?? value,
2093
+ year: year ?? date.getFullYear(),
2094
+ minDate,
2095
+ maxDate
2096
+ });
2006
2097
  commons.itIsDefined(month)
2007
2098
  ? formControl?.setValue(month)
2008
- : setValue(formControl?.value || currentDate.getMonth());
2099
+ : setValue(formControl?.value ?? date.getMonth());
2009
2100
  }, [formControl?.value]);
2010
- function createPickerOptions() {
2011
- return {
2012
- date: currentDate,
2013
- month: commons.itIsDefined(formControl?.value) ? formControl?.value : value,
2014
- year: year || currentDate.getFullYear(),
2015
- minDate,
2016
- maxDate
2017
- };
2018
- }
2019
- function setMonthValue(value) {
2101
+ const setMonthValue = require$$0.useCallback((value) => {
2020
2102
  formControl ? formControl.setValue(value) : setValue(value);
2021
- }
2022
- function onChange(value) {
2103
+ }, [formControl]);
2104
+ const onSelect = require$$0.useCallback((value) => {
2023
2105
  setMonthValue(value);
2024
- if (onValue) {
2025
- onValue(value);
2026
- }
2027
- }
2028
- return (jsxRuntimeExports.jsx("div", { className: "rls-picker-month", "rls-theme": rlsTheme, children: months.map(({ label, value, disabled, focused, selected }, index) => (jsxRuntimeExports.jsx("div", { className: renderClassStatus('rls-picker-month__component', {
2029
- disabled: disabled || _disabled,
2030
- focused,
2031
- selected
2032
- }), onClick: !(disabled || _disabled)
2033
- ? () => {
2034
- onChange(value);
2035
- }
2036
- : undefined, children: jsxRuntimeExports.jsx("span", { className: "rls-picker-month__span", children: label }) }, index))) }));
2106
+ onValue && onValue(value);
2107
+ }, [setMonthValue, onValue]);
2108
+ return (jsxRuntimeExports.jsx("div", { className: "rls-picker-month", "rls-theme": rlsTheme, children: component }));
2037
2109
  }
2038
2110
 
2039
- function RlsPickerMonthTitle({ monthControl, type, yearControl, date, disabled, maxDate, minDate, onClick }) {
2040
- const { limitNext, limitPrevious } = components.monthLimitTemplate({
2041
- date,
2042
- maxDate,
2043
- minDate,
2044
- month: monthControl.value
2045
- });
2046
- const monthName = dates.MONTH_NAMES()[monthControl.value || 0];
2047
- function onPreviousMonth() {
2111
+ function RlsPickerSelectorTitle({ monthControl, type, yearControl, date, disabled, maxDate, minDate, onClick }) {
2112
+ const { limitNext, limitPrevious } = require$$0.useMemo(() => {
2113
+ return components.monthLimitTemplate({
2114
+ date,
2115
+ maxDate,
2116
+ minDate,
2117
+ month: monthControl.value
2118
+ });
2119
+ }, [date, maxDate, minDate, monthControl.value]);
2120
+ const [label, setLabel] = require$$0.useState(dates.MONTH_NAMES(monthControl.value ?? dates.Month.January));
2121
+ require$$0.useEffect(() => {
2122
+ return i18n.i18nSubscribe(() => {
2123
+ setLabel(dates.MONTH_NAMES(monthControl.value ?? dates.Month.January));
2124
+ });
2125
+ }, []);
2126
+ require$$0.useEffect(() => {
2127
+ setLabel(dates.MONTH_NAMES(monthControl.value ?? dates.Month.January));
2128
+ }, [monthControl.value]);
2129
+ const onPreviousMonth = require$$0.useCallback(() => {
2048
2130
  if (commons.itIsDefined(monthControl.value) && commons.itIsDefined(yearControl.value)) {
2049
2131
  if (monthControl.value > dates.Month.January) {
2050
2132
  monthControl.setValue(monthControl.value - 1);
@@ -2054,15 +2136,15 @@ function RlsPickerMonthTitle({ monthControl, type, yearControl, date, disabled,
2054
2136
  yearControl.setValue(yearControl.value - 1);
2055
2137
  }
2056
2138
  }
2057
- }
2058
- function onPreviousYear() {
2139
+ }, [monthControl.value, yearControl.value]);
2140
+ const onPreviousYear = require$$0.useCallback(() => {
2059
2141
  commons.itIsDefined(yearControl.value) &&
2060
2142
  yearControl.setValue(yearControl.value - 1);
2061
- }
2062
- function onPrevious() {
2143
+ }, [yearControl.value]);
2144
+ const onPrevious = require$$0.useCallback(() => {
2063
2145
  type === 'month' ? onPreviousMonth() : onPreviousYear();
2064
- }
2065
- function onNextMonth() {
2146
+ }, [type, onPreviousMonth, onPreviousYear]);
2147
+ const onNextMonth = require$$0.useCallback(() => {
2066
2148
  if (commons.itIsDefined(monthControl.value) && commons.itIsDefined(yearControl.value)) {
2067
2149
  if (monthControl.value < dates.Month.December) {
2068
2150
  monthControl.setValue(monthControl.value + 1);
@@ -2072,66 +2154,73 @@ function RlsPickerMonthTitle({ monthControl, type, yearControl, date, disabled,
2072
2154
  yearControl.setValue(yearControl.value + 1);
2073
2155
  }
2074
2156
  }
2075
- }
2076
- function onNextYear() {
2157
+ }, [monthControl.value, yearControl.value]);
2158
+ const onNextYear = require$$0.useCallback(() => {
2077
2159
  commons.itIsDefined(yearControl.value) &&
2078
2160
  yearControl.setValue(yearControl.value + 1);
2079
- }
2080
- function onNext() {
2161
+ }, [yearControl.value]);
2162
+ const onNext = require$$0.useCallback(() => {
2081
2163
  type === 'month' ? onNextMonth() : onNextYear();
2082
- }
2083
- return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-month-title", children: [jsxRuntimeExports.jsx(RlsButtonAction, { icon: "arrow-ios-left", onClick: onPrevious, disabled: limitPrevious || disabled }), jsxRuntimeExports.jsx("span", { onClick: onClick, children: monthName }), jsxRuntimeExports.jsx(RlsButtonAction, { icon: "arrow-ios-right", onClick: onNext, disabled: limitNext || disabled })] }));
2164
+ }, [type, onNextMonth, onNextYear]);
2165
+ return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-selector-title", children: [jsxRuntimeExports.jsx(RlsButtonAction, { icon: "arrow-ios-left", onClick: onPrevious, disabled: limitPrevious || disabled }), jsxRuntimeExports.jsx("span", { onClick: onClick, children: label }), jsxRuntimeExports.jsx(RlsButtonAction, { icon: "arrow-ios-right", onClick: onNext, disabled: limitNext || disabled })] }));
2084
2166
  }
2085
2167
 
2086
- function RlsPickerYear({ date, disabled: _disabled, formControl, maxDate, minDate, onValue, rlsTheme }) {
2087
- const currentDate = date || new Date();
2088
- const [value, setValue] = require$$0.useState(formControl?.value || currentDate.getFullYear());
2089
- const [year, setYear] = require$$0.useState(formControl?.value || currentDate.getFullYear());
2168
+ function RlsPickerYearItem({ onSelect, year, disabled }) {
2169
+ const className = require$$0.useMemo(() => {
2170
+ return renderClassStatus('rls-picker-year__element', {
2171
+ disabled: year.disabled || disabled,
2172
+ focused: year.focused,
2173
+ selected: year.selected
2174
+ });
2175
+ }, [year.disabled, year.focused, year.selected, disabled]);
2176
+ const onClick = require$$0.useCallback(() => {
2177
+ year.value && !year.disabled && !disabled && onSelect(year.value);
2178
+ }, [year.value, year.disabled, disabled, onSelect]);
2179
+ return (jsxRuntimeExports.jsx("div", { className: className, onClick: onClick, children: jsxRuntimeExports.jsx("span", { className: "rls-picker-year__span rls-body1-medium", children: year.value || '????' }) }));
2180
+ }
2181
+ function RlsPickerYear({ date: _date, disabled, formControl, maxDate, minDate, onValue, rlsTheme }) {
2182
+ const date = require$$0.useMemo(() => _date || new Date(), [_date]);
2183
+ const [value, setValue] = require$$0.useState(formControl?.value ?? date.getFullYear());
2184
+ const [year, setYear] = require$$0.useState(formControl?.value ?? date.getFullYear());
2185
+ const [component, setComponent] = require$$0.useState(jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {}));
2186
+ const createPickerOptions = require$$0.useCallback(() => {
2187
+ return {
2188
+ date,
2189
+ year,
2190
+ minDate,
2191
+ maxDate
2192
+ };
2193
+ }, [date, year, minDate, maxDate]);
2090
2194
  const [template, setTemplate] = require$$0.useState(components.createYearPicker(createPickerOptions()));
2091
2195
  require$$0.useEffect(() => {
2092
2196
  const options = createPickerOptions(); // YearPickerProps
2093
2197
  const year = components.verifyYearPicker(options);
2094
- year
2095
- ? setYearValue(year)
2096
- : setTemplate(components.createYearPicker(createPickerOptions()));
2198
+ year ? setYearValue(year) : setTemplate(components.createYearPicker(options));
2097
2199
  }, [date, year, value, minDate, maxDate]);
2200
+ require$$0.useEffect(() => {
2201
+ setComponent(jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: template.years.map((year, index) => (jsxRuntimeExports.jsx(RlsPickerYearItem, { year: year, onSelect: onSelect, disabled: disabled }, index))) }));
2202
+ }, [template.years]);
2098
2203
  require$$0.useEffect(() => {
2099
2204
  const year = components.verifyYearPicker(createPickerOptions());
2100
2205
  commons.itIsDefined(year)
2101
2206
  ? formControl?.setValue(year)
2102
- : setValue(formControl?.value || currentDate.getFullYear());
2207
+ : setValue(formControl?.value ?? date.getFullYear());
2103
2208
  }, [formControl?.value]);
2104
- function createPickerOptions() {
2105
- return {
2106
- date: currentDate,
2107
- year,
2108
- minDate,
2109
- maxDate
2110
- };
2111
- }
2112
- function setYearValue(value) {
2209
+ const setYearValue = require$$0.useCallback((value) => {
2113
2210
  formControl ? formControl.setValue(value) : setValue(value);
2114
2211
  setYear(value);
2115
- }
2116
- function onClickPrev() {
2117
- setYear(year - 8);
2118
- }
2119
- function onClickNext() {
2120
- setYear(year + 8);
2121
- }
2122
- function onChange(value) {
2212
+ }, [formControl]);
2213
+ const onClickPrev = require$$0.useCallback(() => {
2214
+ setYear((year) => year - 8);
2215
+ }, []);
2216
+ const onClickNext = require$$0.useCallback(() => {
2217
+ setYear((year) => year + 8);
2218
+ }, []);
2219
+ const onSelect = require$$0.useCallback((value) => {
2123
2220
  setYearValue(value);
2124
2221
  onValue && onValue(value);
2125
- }
2126
- return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-year", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: "rls-picker-year__header", children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-year__action rls-picker-year__action--prev", children: jsxRuntimeExports.jsx(RlsButtonAction, { icon: "arrow-ios-left", onClick: onClickPrev, disabled: !template.canPrevious || _disabled }) }), jsxRuntimeExports.jsxs("label", { className: "rls-title-bold", children: [template.minRange, " - ", template.maxRange] }), jsxRuntimeExports.jsx("div", { className: "rls-picker-year__action rls-picker-year__action--next", children: jsxRuntimeExports.jsx(RlsButtonAction, { icon: "arrow-ios-right", onClick: onClickNext, disabled: !template.canNext || _disabled }) })] }), jsxRuntimeExports.jsx("div", { className: "rls-picker-year__component", children: template.years.map(({ value, disabled, focused, selected }, index) => (jsxRuntimeExports.jsx("div", { className: renderClassStatus('rls-picker-year__year', {
2127
- disabled: disabled || _disabled,
2128
- focused,
2129
- selected
2130
- }), onClick: value && !_disabled
2131
- ? () => {
2132
- onChange(value);
2133
- }
2134
- : undefined, children: jsxRuntimeExports.jsx("span", { className: "rls-picker-year__year__span rls-body1-medium", children: value || '????' }) }, index))) })] }));
2222
+ }, [setYearValue, onValue]);
2223
+ return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-year", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: "rls-picker-year__header", children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-year__action rls-picker-year__action--prev", children: jsxRuntimeExports.jsx(RlsButtonAction, { icon: "arrow-ios-left", onClick: onClickPrev, disabled: !template.canPrevious || disabled }) }), jsxRuntimeExports.jsxs("label", { className: "rls-title-bold", children: [template.minRange, " - ", template.maxRange] }), jsxRuntimeExports.jsx("div", { className: "rls-picker-year__action rls-picker-year__action--next", children: jsxRuntimeExports.jsx(RlsButtonAction, { icon: "arrow-ios-right", onClick: onClickNext, disabled: !template.canNext || disabled }) })] }), jsxRuntimeExports.jsx("div", { className: "rls-picker-year__component", children: component })] }));
2135
2224
  }
2136
2225
 
2137
2226
  function RlsToolbar({ actions, children, subtitle }) {
@@ -2324,10 +2413,6 @@ function useListController(props) {
2324
2413
  if (listIsOpen.current && !state.modalIsVisible) {
2325
2414
  formControl?.touch();
2326
2415
  }
2327
- refreshState((state) => ({
2328
- ...state,
2329
- higher: components.locationListCanTop(contentRef.current, listRef.current)
2330
- }));
2331
2416
  }, [state.modalIsVisible]);
2332
2417
  require$$0.useEffect(() => {
2333
2418
  setCollection(new components.ListCollection(suggestions, reference));
@@ -2357,7 +2442,13 @@ function useListController(props) {
2357
2442
  changeValueInternal.current = false;
2358
2443
  }, [collection, formControl?.value]);
2359
2444
  const setState = require$$0.useCallback((state) => {
2360
- refreshState((_state) => ({ ..._state, ...state }));
2445
+ const _state = state.modalIsVisible
2446
+ ? {
2447
+ ...state,
2448
+ higher: components.locationListCanTop(contentRef.current, listRef.current)
2449
+ }
2450
+ : state;
2451
+ refreshState((state) => ({ ...state, ..._state }));
2361
2452
  }, []);
2362
2453
  const setFormValue = require$$0.useCallback((element, initialValue = false) => {
2363
2454
  refreshState((state) => ({
@@ -2400,14 +2491,6 @@ function useListController(props) {
2400
2491
  };
2401
2492
  }
2402
2493
 
2403
- function useRenderClassStatus(base, status = {}, additionals) {
2404
- const [className, setClassName] = require$$0.useState('');
2405
- require$$0.useEffect(() => {
2406
- setClassName(renderClassStatus(base, status, additionals));
2407
- }, [base, Object.values(status), additionals]);
2408
- return className;
2409
- }
2410
-
2411
2494
  const DURATION_ANIMATION$1 = 240;
2412
2495
  const MAX_ELEMENTS = 6;
2413
2496
  function useFieldAutocomplete(props) {
@@ -2419,19 +2502,29 @@ function useFieldAutocomplete(props) {
2419
2502
  pattern: '',
2420
2503
  previous: null
2421
2504
  });
2505
+ const refreshCoincidences = require$$0.useCallback((suggestions, pattern, reboot = false) => {
2506
+ const { collection, store } = components.createAutocompleteStore({
2507
+ pattern,
2508
+ suggestions,
2509
+ reboot,
2510
+ store: currentStore.current
2511
+ });
2512
+ currentStore.current = store;
2513
+ setCoincidences(collection.slice(0, MAX_ELEMENTS));
2514
+ }, []);
2422
2515
  require$$0.useEffect(() => {
2423
- refreshCoincidences(pattern, true);
2516
+ refreshCoincidences(props.suggestions, pattern, true);
2424
2517
  }, [props.suggestions]);
2425
2518
  require$$0.useEffect(() => {
2426
- refreshCoincidences(pattern);
2519
+ refreshCoincidences(props.suggestions, pattern);
2427
2520
  }, [pattern]);
2428
- function onFocusInput() {
2521
+ const onFocusInput = require$$0.useCallback(() => {
2429
2522
  controller.setState({ focused: true });
2430
- }
2431
- function onBlurInput() {
2523
+ }, [controller.setState]);
2524
+ const onBlurInput = require$$0.useCallback(() => {
2432
2525
  controller.setState({ focused: false });
2433
- }
2434
- function onKeydownInput(event) {
2526
+ }, [controller.setState]);
2527
+ const onKeydownInput = require$$0.useCallback((event) => {
2435
2528
  switch (event.code) {
2436
2529
  case 'Escape':
2437
2530
  case 'Tab':
@@ -2441,14 +2534,14 @@ function useFieldAutocomplete(props) {
2441
2534
  controller.navigationInput(event);
2442
2535
  break;
2443
2536
  }
2444
- }
2445
- function onClickControl() {
2537
+ }, [controller.setState, controller.navigationInput]);
2538
+ const onClickControl = require$$0.useCallback(() => {
2446
2539
  controller.setState({ modalIsVisible: true });
2447
2540
  setTimeout(() => {
2448
2541
  controller.inputRef?.current?.focus();
2449
2542
  }, DURATION_ANIMATION$1);
2450
- }
2451
- function onClickAction() {
2543
+ }, [controller.setState]);
2544
+ const onClickAction = require$$0.useCallback(() => {
2452
2545
  if (controller.value) {
2453
2546
  controller.setState({ modalIsVisible: false });
2454
2547
  controller.setFormValue(undefined);
@@ -2457,44 +2550,43 @@ function useFieldAutocomplete(props) {
2457
2550
  else {
2458
2551
  onClickControl();
2459
2552
  }
2460
- }
2461
- function onClickBackdrop() {
2553
+ }, [
2554
+ controller.value,
2555
+ controller.setState,
2556
+ controller.setFormValue,
2557
+ props.onValue
2558
+ ]);
2559
+ const onClickBackdrop = require$$0.useCallback(() => {
2462
2560
  controller.setState({ modalIsVisible: false });
2463
- }
2464
- function onClickElement(element) {
2561
+ }, [controller.setState]);
2562
+ const onChange = require$$0.useCallback((element) => {
2563
+ if (props.onSelect) {
2564
+ controller.setState({ modalIsVisible: false });
2565
+ element.value && props.onSelect(element.value);
2566
+ }
2567
+ else {
2568
+ controller.setState({ modalIsVisible: false });
2569
+ controller.setFormValue(element);
2570
+ }
2571
+ props.onValue && props.onValue(element.value);
2572
+ }, [
2573
+ controller.setState,
2574
+ controller.setFormValue,
2575
+ props.onSelect,
2576
+ props.onValue
2577
+ ]);
2578
+ const onClickElement = require$$0.useCallback((element) => {
2465
2579
  return () => {
2466
2580
  onChange(element);
2467
2581
  };
2468
- }
2469
- function onKeydownElement(element) {
2582
+ }, []);
2583
+ const onKeydownElement = require$$0.useCallback((element) => {
2470
2584
  return (event) => {
2471
2585
  event.code === 'Enter'
2472
2586
  ? onChange(element)
2473
2587
  : controller.navigationElement(event);
2474
2588
  };
2475
- }
2476
- function onChange(element) {
2477
- const { onSelect, onValue } = props;
2478
- if (onSelect) {
2479
- controller.setState({ modalIsVisible: false });
2480
- element.value && onSelect(element.value);
2481
- }
2482
- else {
2483
- controller.setState({ modalIsVisible: false });
2484
- controller.setFormValue(element);
2485
- }
2486
- onValue && onValue(element.value);
2487
- }
2488
- function refreshCoincidences(pattern, reboot = false) {
2489
- const { collection, store } = components.createAutocompleteStore({
2490
- pattern,
2491
- suggestions: props.suggestions,
2492
- reboot,
2493
- store: currentStore.current
2494
- });
2495
- currentStore.current = store;
2496
- setCoincidences(collection.slice(0, MAX_ELEMENTS));
2497
- }
2589
+ }, [controller.navigationElement]);
2498
2590
  return {
2499
2591
  ...controller,
2500
2592
  coincidences,
@@ -2514,7 +2606,23 @@ function useFieldAutocomplete(props) {
2514
2606
  function RlsFieldAutocompleteTemplate(props) {
2515
2607
  const autocomplete = useFieldAutocomplete(props);
2516
2608
  const { render, children, formControl, msgErrorDisabled, onSearch, placeholder, rlsTheme, searching } = props;
2517
- const _disabled = formControl?.disabled || props.disabled;
2609
+ const [labels, setLabels] = require$$0.useState({
2610
+ listEmptyDescription: reactI18n('listEmptyDescription'),
2611
+ listEmptyTitle: reactI18n('listEmptyTitle'),
2612
+ listInputPlaceholder: reactI18n('listInputPlaceholder')
2613
+ });
2614
+ require$$0.useEffect(() => {
2615
+ return i18n.i18nSubscribe(() => {
2616
+ setLabels({
2617
+ listEmptyDescription: reactI18n('listEmptyDescription'),
2618
+ listEmptyTitle: reactI18n('listEmptyTitle'),
2619
+ listInputPlaceholder: reactI18n('listInputPlaceholder')
2620
+ });
2621
+ });
2622
+ }, []);
2623
+ const _disabled = require$$0.useMemo(() => {
2624
+ return formControl?.disabled || props.disabled;
2625
+ }, [formControl?.disabled, props.disabled]);
2518
2626
  const className = require$$0.useMemo(() => {
2519
2627
  return renderClassStatus('rls-field-box', {
2520
2628
  focused: autocomplete.focused && !_disabled,
@@ -2522,24 +2630,20 @@ function RlsFieldAutocompleteTemplate(props) {
2522
2630
  disabled: _disabled,
2523
2631
  selected: !!autocomplete.value
2524
2632
  }, 'rls-field-list rls-field-autocomplete');
2525
- }, [
2526
- formControl?.wrong,
2527
- formControl?.disabled,
2528
- autocomplete.value,
2529
- autocomplete.focused,
2530
- props.disabled
2531
- ]);
2633
+ }, [formControl?.wrong, autocomplete.value, autocomplete.focused, _disabled]);
2532
2634
  const classNameList = require$$0.useMemo(() => {
2533
2635
  return renderClassStatus('rls-field-list__suggestions', {
2534
2636
  higher: autocomplete.higher,
2535
2637
  visible: autocomplete.modalIsVisible
2536
2638
  });
2537
2639
  }, [autocomplete.higher, autocomplete.modalIsVisible]);
2538
- return (jsxRuntimeExports.jsxs("div", { id: props.identifier, ref: autocomplete.contentRef, className: className, "rls-theme": rlsTheme, children: [children && jsxRuntimeExports.jsx("label", { 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-list__control", readOnly: true, disabled: _disabled, placeholder: placeholder, value: autocomplete.value, onClick: autocomplete.onClickControl }), jsxRuntimeExports.jsx("button", { className: "rls-field-list__action", disabled: _disabled, onClick: autocomplete.onClickAction, children: jsxRuntimeExports.jsx(RlsIcon, { value: autocomplete.value ? 'trash-2' : 'arrow-ios-down' }) })] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl })), jsxRuntimeExports.jsx("div", { className: classNameList, children: autocomplete.modalIsVisible && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("div", { className: "rls-field-list__suggestions__body", children: jsxRuntimeExports.jsxs("ul", { ref: autocomplete.listRef, className: "rls-field-list__ul", children: [jsxRuntimeExports.jsxs("div", { className: "rls-field-list__ul__search", children: [jsxRuntimeExports.jsx("input", { ref: autocomplete.inputRef, className: "rls-field-list__ul__control", type: "text", placeholder: reactI18n('listInputPlaceholder'), value: autocomplete.pattern, onChange: (event) => {
2539
- autocomplete.setPattern(event.target.value);
2540
- }, disabled: _disabled || searching, onFocus: autocomplete.onFocusInput, onBlur: autocomplete.onBlurInput, onKeyDown: autocomplete.onKeydownInput }), onSearch && (jsxRuntimeExports.jsx("button", { disabled: _disabled || searching, onClick: () => {
2541
- onSearch(autocomplete.pattern);
2542
- }, children: jsxRuntimeExports.jsx(RlsIcon, { value: "search" }) }))] }), searching && jsxRuntimeExports.jsx(RlsProgressBar, { indeterminate: true }), autocomplete.coincidences.map((element, index) => (jsxRuntimeExports.jsx("li", { className: "rls-field-list__element", tabIndex: -1, onClick: autocomplete.onClickElement(element), onKeyDown: autocomplete.onKeydownElement(element), children: render(element) }, index))), !autocomplete.coincidences.length && (jsxRuntimeExports.jsx("li", { className: "rls-field-list__empty", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-list__empty__description", children: [jsxRuntimeExports.jsx("label", { className: "rls-label-bold truncate", children: reactI18n('listEmptyTitle') }), jsxRuntimeExports.jsx("p", { className: "rls-caption-regular", children: reactI18n('listEmptyDescription') })] }) }))] }) }), jsxRuntimeExports.jsx("div", { className: "rls-field-list__backdrop", onClick: autocomplete.onClickBackdrop })] })) })] }));
2640
+ const onInputSearch = require$$0.useCallback((event) => {
2641
+ autocomplete.setPattern(event.target.value);
2642
+ }, []);
2643
+ const onClickSearch = require$$0.useCallback(() => {
2644
+ onSearch && onSearch(autocomplete.pattern);
2645
+ }, [onSearch, autocomplete.pattern]);
2646
+ return (jsxRuntimeExports.jsxs("div", { id: props.identifier, ref: autocomplete.contentRef, className: className, "rls-theme": rlsTheme, children: [children && jsxRuntimeExports.jsx("label", { 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-list__control", readOnly: true, disabled: _disabled, placeholder: placeholder, value: autocomplete.value, onClick: autocomplete.onClickControl }), jsxRuntimeExports.jsx("button", { className: "rls-field-list__action", disabled: _disabled, onClick: autocomplete.onClickAction, children: jsxRuntimeExports.jsx(RlsIcon, { value: autocomplete.value ? 'trash-2' : 'arrow-ios-down' }) })] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl })), jsxRuntimeExports.jsx("div", { className: classNameList, children: autocomplete.modalIsVisible && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("div", { className: "rls-field-list__suggestions__body", children: jsxRuntimeExports.jsxs("ul", { ref: autocomplete.listRef, className: "rls-field-list__ul", children: [jsxRuntimeExports.jsxs("div", { className: "rls-field-list__ul__search", children: [jsxRuntimeExports.jsx("input", { ref: autocomplete.inputRef, className: "rls-field-list__ul__control", type: "text", placeholder: labels.listInputPlaceholder, value: autocomplete.pattern, onChange: onInputSearch, disabled: _disabled || searching, onFocus: autocomplete.onFocusInput, onBlur: autocomplete.onBlurInput, onKeyDown: autocomplete.onKeydownInput }), onSearch && (jsxRuntimeExports.jsx("button", { disabled: _disabled || searching, onClick: onClickSearch, children: jsxRuntimeExports.jsx(RlsIcon, { value: "search" }) }))] }), searching && jsxRuntimeExports.jsx(RlsProgressBar, { indeterminate: true }), autocomplete.coincidences.map((element, index) => (jsxRuntimeExports.jsx("li", { className: "rls-field-list__element", tabIndex: -1, onClick: autocomplete.onClickElement(element), onKeyDown: autocomplete.onKeydownElement(element), children: render(element) }, index))), !autocomplete.coincidences.length && (jsxRuntimeExports.jsx("li", { className: "rls-field-list__empty", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-list__empty__description", children: [jsxRuntimeExports.jsx("label", { className: "rls-label-bold truncate", children: labels.listEmptyTitle }), jsxRuntimeExports.jsx("p", { className: "rls-caption-regular", children: labels.listEmptyDescription })] }) }))] }) }), jsxRuntimeExports.jsx("div", { className: "rls-field-list__backdrop", onClick: autocomplete.onClickBackdrop })] })) })] }));
2543
2647
  }
2544
2648
  function RlsFieldAutocomplete(props) {
2545
2649
  return (jsxRuntimeExports.jsx(RlsFieldAutocompleteTemplate, { ...props, render: (element) => (jsxRuntimeExports.jsx(RlsBallot, { subtitle: element.subtitle, img: element.img, initials: element.initials, children: jsxRuntimeExports.jsx("span", { children: element.title }) })) }));
@@ -2552,91 +2656,120 @@ function RlsModal({ children, overflow, visible, rlsTheme }) {
2552
2656
  return ReactDOM.createPortal(jsxRuntimeExports.jsxs("div", { className: className, "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsx("div", { className: "rls-modal__component", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-modal__backdrop" })] }), document.body);
2553
2657
  }
2554
2658
 
2555
- const FORMAT_TITLE = '{dw}, {mx} {dd} de {aa}';
2659
+ const formatTitle = '{dw}, {mx} {dd} de {aa}';
2556
2660
  function RlsPickerDate({ automatic, date, disabled, formControl, maxDate, minDate, onListener, rlsTheme }) {
2557
- const today = new Date(); // Initial current date in component
2558
- const dateInitial = formControl?.value || date || today;
2559
- const yearControl = reactForms.useReactControl(dateInitial.getFullYear());
2560
- const dayControl = reactForms.useReactControl(dateInitial.getDate());
2561
- const monthControl = reactForms.useReactControl(dateInitial.getMonth());
2562
- const [value, setValue] = require$$0.useState(dateInitial);
2661
+ const today = require$$0.useRef(new Date()); // Initial current date in component
2662
+ const _date = require$$0.useMemo(() => {
2663
+ return formControl?.value ?? date ?? today.current;
2664
+ }, [formControl?.value, date]);
2665
+ const yearControl = reactForms.useReactControl(_date.getFullYear());
2666
+ const dayControl = reactForms.useReactControl(_date.getDate());
2667
+ const monthControl = reactForms.useReactControl(_date.getMonth());
2668
+ const [value, setValue] = require$$0.useState(_date);
2563
2669
  const [visibility, setVisibility] = require$$0.useState('DAY');
2670
+ const [labels, setLabels] = require$$0.useState({
2671
+ dateActionCancel: reactI18n('dateActionCancel'),
2672
+ dateActionSelect: reactI18n('dateActionSelect'),
2673
+ dateActionToday: reactI18n('dateActionToday')
2674
+ });
2675
+ const classNameComponent = require$$0.useMemo(() => {
2676
+ return renderClassStatus('rls-picker-date__component', {
2677
+ day: visibility === 'DAY',
2678
+ month: visibility === 'MONTH',
2679
+ year: visibility === 'YEAR'
2680
+ });
2681
+ }, [visibility]);
2682
+ const title = require$$0.useMemo(() => {
2683
+ return dates.dateFormatTemplate(_date, formatTitle);
2684
+ }, [_date]);
2685
+ const itIsDisabledToday = require$$0.useMemo(() => components.dateOutRange({
2686
+ date: today.current,
2687
+ maxDate,
2688
+ minDate
2689
+ }), [today.current, maxDate, minDate]);
2564
2690
  require$$0.useEffect(() => {
2565
- const dateRange = components.verifyDateRange({
2566
- date: formControl?.value || date || today,
2567
- minDate,
2568
- maxDate
2691
+ const date = components.verifyDateRange({ date: _date, minDate, maxDate });
2692
+ setValue(date);
2693
+ formControl?.setValue(date);
2694
+ return i18n.i18nSubscribe(() => {
2695
+ setLabels({
2696
+ dateActionCancel: reactI18n('dateActionCancel'),
2697
+ dateActionSelect: reactI18n('dateActionSelect'),
2698
+ dateActionToday: reactI18n('dateActionToday')
2699
+ });
2569
2700
  });
2570
- setValue(dateRange);
2571
- formControl?.setValue(dateRange);
2572
2701
  }, []);
2573
2702
  require$$0.useEffect(() => {
2574
- commons.itIsDefined(yearControl.value) &&
2575
- setValue(dates.assignYearInDate(value, yearControl.value));
2576
- }, [yearControl.value]);
2577
- require$$0.useEffect(() => {
2578
- commons.itIsDefined(monthControl.value) &&
2579
- setValue(dates.assignMonthInDate(value, monthControl.value));
2580
- }, [monthControl.value]);
2581
- require$$0.useEffect(() => {
2582
- commons.itIsDefined(dayControl.value) &&
2583
- setValue(dates.assignDayInDate(value, dayControl.value));
2584
- }, [dayControl.value]);
2585
- function onVisibilityDay() {
2703
+ setValue(new Date(yearControl.value, monthControl.value, dayControl.value));
2704
+ }, [yearControl.value, monthControl.value, dayControl.value]);
2705
+ const onVisibilityDay = require$$0.useCallback(() => {
2586
2706
  setVisibility('DAY');
2587
- }
2588
- function onVisibilityMonth() {
2707
+ }, []);
2708
+ const onVisibilityMonth = require$$0.useCallback(() => {
2589
2709
  setVisibility('MONTH');
2590
- }
2591
- function onVisibilityYear() {
2710
+ }, []);
2711
+ const onVisibilityYear = require$$0.useCallback(() => {
2592
2712
  setVisibility('YEAR');
2593
- }
2594
- function onCancel() {
2713
+ }, []);
2714
+ const onCancel = require$$0.useCallback(() => {
2595
2715
  onListener && onListener({ event: components.PickerListenerEvent.Cancel });
2596
- }
2597
- function onToday() {
2598
- yearControl.setValue(today.getFullYear());
2599
- dayControl.setValue(today.getDate());
2600
- monthControl.setValue(today.getMonth());
2601
- formControl?.setValue(today);
2602
- onListener && onListener({ event: components.PickerListenerEvent.Now, value: today });
2603
- }
2604
- function onSelect() {
2716
+ }, [onListener]);
2717
+ const onToday = require$$0.useCallback(() => {
2718
+ yearControl.setValue(today.current.getFullYear());
2719
+ dayControl.setValue(today.current.getDate());
2720
+ monthControl.setValue(today.current.getMonth());
2721
+ formControl?.setValue(today.current);
2722
+ onListener &&
2723
+ onListener({
2724
+ event: components.PickerListenerEvent.Now,
2725
+ value: today.current
2726
+ });
2727
+ }, [today.current, formControl, onListener]);
2728
+ const onSelect = require$$0.useCallback(() => {
2605
2729
  formControl?.setValue(value);
2606
- onListener && onListener({ event: components.PickerListenerEvent.Select, value });
2607
- }
2608
- const classNameComponent = require$$0.useMemo(() => {
2609
- return renderClassStatus('rls-picker-date__component', {
2610
- day: visibility === 'DAY',
2611
- month: visibility === 'MONTH',
2612
- year: visibility === 'YEAR'
2613
- });
2614
- }, [visibility]);
2615
- return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-date", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: "rls-picker-date__header", children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-date__title rls-picker-date__title--description", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityDay, children: dates.dateFormatTemplate(dateInitial, FORMAT_TITLE) }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__title rls-picker-date__title--year", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityYear, children: yearControl.value }) }), jsxRuntimeExports.jsx(RlsPickerMonthTitle, { monthControl: monthControl, yearControl: yearControl, date: value, maxDate: maxDate, minDate: minDate, disabled: visibility === 'YEAR', type: 'month', onClick: onVisibilityMonth })] }), jsxRuntimeExports.jsxs("div", { className: classNameComponent, children: [jsxRuntimeExports.jsx(RlsPickerDay, { formControl: dayControl, date: dateInitial, month: monthControl.value, year: yearControl.value, maxDate: maxDate, minDate: minDate, disabled: disabled }), jsxRuntimeExports.jsx(RlsPickerMonth, { formControl: monthControl, date: dateInitial, year: yearControl.value, maxDate: maxDate, minDate: minDate, disabled: disabled, onValue: onVisibilityDay }), jsxRuntimeExports.jsx(RlsPickerYear, { formControl: yearControl, date: dateInitial, 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: "ghost", onClick: onCancel, children: reactI18n('dateActionCancel') }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__actions--today", children: jsxRuntimeExports.jsx(RlsButton, { type: "ghost", onClick: onToday, disabled: components.dateOutRange({ date: today, maxDate, minDate }), children: reactI18n('dateActionToday') }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__actions--ok", children: jsxRuntimeExports.jsx(RlsButton, { type: "raised", onClick: onSelect, children: reactI18n('dateActionSelect') }) })] }) }))] }));
2730
+ onListener &&
2731
+ onListener({
2732
+ event: components.PickerListenerEvent.Select,
2733
+ value
2734
+ });
2735
+ }, [formControl, value, onListener]);
2736
+ return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-date", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: "rls-picker-date__header", children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-date__title rls-picker-date__title--description", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityDay, children: title }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__title rls-picker-date__title--year", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityYear, children: yearControl.value }) }), jsxRuntimeExports.jsx(RlsPickerSelectorTitle, { monthControl: monthControl, yearControl: yearControl, date: value, maxDate: maxDate, minDate: minDate, disabled: visibility === 'YEAR', type: 'month', onClick: onVisibilityMonth })] }), jsxRuntimeExports.jsxs("div", { className: classNameComponent, children: [jsxRuntimeExports.jsx(RlsPickerDay, { formControl: dayControl, date: _date, month: monthControl.value, year: yearControl.value, maxDate: maxDate, minDate: minDate, disabled: disabled }), jsxRuntimeExports.jsx(RlsPickerMonth, { formControl: monthControl, date: _date, year: yearControl.value, maxDate: maxDate, minDate: minDate, disabled: disabled, onValue: onVisibilityDay }), jsxRuntimeExports.jsx(RlsPickerYear, { formControl: yearControl, date: _date, 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: "ghost", onClick: onCancel, children: labels.dateActionCancel }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__actions--today", children: jsxRuntimeExports.jsx(RlsButton, { type: "ghost", onClick: onToday, disabled: itIsDisabledToday, children: labels.dateActionToday }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__actions--ok", children: jsxRuntimeExports.jsx(RlsButton, { type: "raised", onClick: onSelect, children: labels.dateActionSelect }) })] }) }))] }));
2616
2737
  }
2617
2738
 
2618
- const FORMAT_DATE = '{dd}/{mx}/{aa}';
2739
+ const formatDate = '{dd}/{mx}/{aa}';
2619
2740
  function RlsFieldDate({ children, date, disabled, formControl, format, identifier, maxDate, minDate, msgErrorDisabled, onValue, placeholder, rlsTheme, value: _value }) {
2620
- const today = new Date(); // Initial current date in component
2621
- const [value, setValue] = require$$0.useState(formControl?.value || _value);
2741
+ const today = require$$0.useRef(new Date()); // Initial current date in component
2742
+ const [value, setValue] = require$$0.useState(formControl?.value ?? _value);
2622
2743
  const [modalIsVisible, setModalIsVisible] = require$$0.useState(false);
2744
+ const _disabled = require$$0.useMemo(() => {
2745
+ return formControl?.disabled || disabled;
2746
+ }, [formControl?.disabled, disabled]);
2747
+ const className = require$$0.useMemo(() => {
2748
+ return renderClassStatus('rls-field-box', { disabled: _disabled });
2749
+ }, [_disabled]);
2750
+ const { icon, valueInput } = require$$0.useMemo(() => {
2751
+ return {
2752
+ icon: value ? 'trash-2' : 'calendar',
2753
+ valueInput: value ? dates.dateFormatTemplate(value, format || formatDate) : ''
2754
+ };
2755
+ }, [value]);
2623
2756
  require$$0.useEffect(() => {
2624
- const dateRange = components.verifyDateRange({
2625
- date: formControl?.value || date || today,
2757
+ const _date = components.verifyDateRange({
2758
+ date: formControl?.value ?? date ?? today.current,
2626
2759
  minDate,
2627
2760
  maxDate
2628
2761
  });
2629
- setValue(dateRange);
2630
- formControl?.setValue(dateRange);
2762
+ setValue(_date);
2763
+ formControl?.setValue(_date);
2764
+ }, []);
2765
+ const onClickInput = require$$0.useCallback(() => {
2766
+ setModalIsVisible(true);
2631
2767
  }, []);
2632
- function onChange(value) {
2768
+ const onChange = require$$0.useCallback((value) => {
2633
2769
  setValue(value);
2634
2770
  onValue && onValue(value);
2635
- }
2636
- function onClickInput() {
2637
- setModalIsVisible(true);
2638
- }
2639
- function onClickAction() {
2771
+ }, [onValue]);
2772
+ const onClickAction = require$$0.useCallback(() => {
2640
2773
  if (value) {
2641
2774
  formControl?.setValue(_value);
2642
2775
  formControl?.touch();
@@ -2645,123 +2778,137 @@ function RlsFieldDate({ children, date, disabled, formControl, format, identifie
2645
2778
  else {
2646
2779
  setModalIsVisible(true);
2647
2780
  }
2648
- }
2649
- const valueInput = value
2650
- ? dates.dateFormatTemplate(value, format || FORMAT_DATE)
2651
- : '';
2652
- const _disabled = formControl?.disabled || disabled;
2653
- const className = require$$0.useMemo(() => {
2654
- return renderClassStatus('rls-field-box', { disabled: _disabled });
2655
- }, [formControl?.disabled, disabled]);
2656
- return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-date", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("label", { 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: valueInput, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: _disabled }), jsxRuntimeExports.jsx("button", { className: "rls-field-date__action", onClick: onClickAction, disabled: disabled, children: jsxRuntimeExports.jsx(RlsIcon, { value: value ? 'trash-2' : 'calendar' }) })] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl }))] }), jsxRuntimeExports.jsx(RlsModal, { visible: modalIsVisible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerDate, { formControl: formControl, date: date, disabled: _disabled, maxDate: maxDate, minDate: minDate, onListener: ({ event, value }) => {
2657
- event !== components.PickerListenerEvent.Cancel && onChange(value);
2658
- formControl?.touch();
2659
- setModalIsVisible(false);
2660
- } }) })] }));
2661
- }
2662
-
2663
- function RlsPickerDateRange({ automatic, date: datePicker, disabled, formControl, maxDate, minDate, onListener, rlsTheme }) {
2664
- const dateInitial = dates.normalizeMinTime(datePicker || new Date());
2665
- const rangeInitial = formControl?.value || dates.DateRange.now();
2666
- const yearControl = reactForms.useReactControl(dateInitial.getFullYear());
2667
- const monthControl = reactForms.useReactControl(dateInitial.getMonth());
2668
- const dayControl = reactForms.useReactControl(rangeInitial);
2669
- const [value, setValue] = require$$0.useState(rangeInitial);
2670
- const [date, setDate] = require$$0.useState(dateInitial);
2781
+ }, [value, formControl, _value, onChange]);
2782
+ const onListener = require$$0.useCallback(({ event, value }) => {
2783
+ event !== components.PickerListenerEvent.Cancel && onChange(value);
2784
+ formControl?.touch();
2785
+ setModalIsVisible(false);
2786
+ }, [formControl, onChange]);
2787
+ return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-date", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("label", { 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: valueInput, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: _disabled }), jsxRuntimeExports.jsx("button", { className: "rls-field-date__action", onClick: onClickAction, disabled: _disabled, children: jsxRuntimeExports.jsx(RlsIcon, { value: icon }) })] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl }))] }), jsxRuntimeExports.jsx(RlsModal, { visible: modalIsVisible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerDate, { formControl: formControl, date: date, disabled: _disabled, maxDate: maxDate, minDate: minDate, onListener: onListener }) })] }));
2788
+ }
2789
+
2790
+ function RlsPickerDateRange({ automatic, date: _picker, disabled, formControl, maxDate, minDate, onListener, rlsTheme }) {
2791
+ const _date = require$$0.useMemo(() => dates.normalizeMinTime(_picker ?? new Date()), [_picker]);
2792
+ const _range = require$$0.useMemo(() => formControl?.value ?? dates.DateRange.now(), [formControl?.value]);
2793
+ const yearControl = reactForms.useReactControl(_date.getFullYear());
2794
+ const monthControl = reactForms.useReactControl(_date.getMonth());
2795
+ const rangeControl = reactForms.useReactControl(_range);
2796
+ const [value, setValue] = require$$0.useState(_range);
2797
+ const [date, setDate] = require$$0.useState(_date);
2671
2798
  const [visibility, setVisibility] = require$$0.useState('DAY');
2799
+ const [labels, setLabels] = require$$0.useState({
2800
+ dateActionCancel: reactI18n('dateActionCancel'),
2801
+ dateActionSelect: reactI18n('dateActionSelect')
2802
+ });
2803
+ const classNameComponent = require$$0.useMemo(() => {
2804
+ return renderClassStatus('rls-picker-date-range__component', {
2805
+ day: visibility === 'DAY',
2806
+ month: visibility === 'MONTH',
2807
+ year: visibility === 'YEAR'
2808
+ });
2809
+ }, [visibility]);
2810
+ const classNameFooter = require$$0.useMemo(() => {
2811
+ return renderClassStatus('rls-picker-date-range__footer', { automatic });
2812
+ }, [automatic]);
2813
+ const title = require$$0.useMemo(() => rangeFormatTemplate(value), [value]);
2672
2814
  require$$0.useEffect(() => {
2673
- setDate((prevValue) => {
2674
- return typeof yearControl.value === 'number'
2675
- ? dates.assignYearInDate(prevValue, yearControl.value)
2676
- : prevValue;
2815
+ return i18n.i18nSubscribe(() => {
2816
+ setLabels({
2817
+ dateActionCancel: reactI18n('dateActionCancel'),
2818
+ dateActionSelect: reactI18n('dateActionSelect')
2819
+ });
2820
+ });
2821
+ }, []);
2822
+ require$$0.useEffect(() => {
2823
+ setDate((date) => {
2824
+ return commons.itIsDefined(yearControl.value)
2825
+ ? dates.assignYearInDate(date, yearControl.value)
2826
+ : date;
2677
2827
  });
2678
2828
  }, [yearControl.value]);
2679
2829
  require$$0.useEffect(() => {
2680
- setDate((prevValue) => {
2681
- return typeof monthControl.value === 'number'
2682
- ? dates.assignMonthInDate(prevValue, monthControl.value)
2683
- : prevValue;
2830
+ setDate((date) => {
2831
+ return commons.itIsDefined(monthControl.value)
2832
+ ? dates.assignMonthInDate(date, monthControl.value)
2833
+ : date;
2684
2834
  });
2685
2835
  }, [monthControl.value]);
2686
2836
  require$$0.useEffect(() => {
2687
- dayControl.value && setValue(dayControl.value);
2837
+ rangeControl.value && setValue(rangeControl.value);
2688
2838
  setVisibility('DAY');
2689
- }, [dayControl.value]);
2690
- function onVisibilityDay() {
2839
+ }, [rangeControl.value]);
2840
+ const onVisibilityDay = require$$0.useCallback(() => {
2691
2841
  setVisibility('DAY');
2692
- }
2693
- function onVisibilityMonth() {
2842
+ }, []);
2843
+ const onVisibilityMonth = require$$0.useCallback(() => {
2694
2844
  setVisibility('MONTH');
2695
- }
2696
- function onVisibilityYear() {
2845
+ }, []);
2846
+ const onVisibilityYear = require$$0.useCallback(() => {
2697
2847
  setVisibility('YEAR');
2698
- }
2699
- function onCancel() {
2848
+ }, []);
2849
+ const onCancel = require$$0.useCallback(() => {
2700
2850
  onListener && onListener({ event: components.PickerListenerEvent.Cancel });
2701
- }
2702
- function onSelect() {
2851
+ }, [onListener]);
2852
+ const onSelect = require$$0.useCallback(() => {
2703
2853
  formControl?.setValue(value);
2704
2854
  onListener && onListener({ event: components.PickerListenerEvent.Select, value });
2705
- }
2706
- const classNameComponent = require$$0.useMemo(() => {
2707
- return renderClassStatus('rls-picker-date-range__component', {
2708
- day: visibility === 'DAY',
2709
- month: visibility === 'MONTH',
2710
- year: visibility === 'YEAR'
2711
- });
2712
- }, [visibility]);
2713
- const classNameFooter = require$$0.useMemo(() => {
2714
- return renderClassStatus('rls-picker-date-range__footer', {
2715
- automatic
2716
- });
2717
- }, [automatic]);
2718
- 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("div", { className: "rls-picker-date-range__title rls-picker-date-range__title--description", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityDay, children: rangeFormatTemplate(value) }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date-range__title rls-picker-date-range__title--year", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityYear, children: yearControl.value }) }), jsxRuntimeExports.jsx(RlsPickerMonthTitle, { monthControl: monthControl, yearControl: yearControl, date: date, maxDate: maxDate, minDate: minDate, disabled: visibility === 'YEAR', type: visibility === 'MONTH' ? 'year' : 'month', onClick: onVisibilityMonth })] }), jsxRuntimeExports.jsxs("div", { className: classNameComponent, children: [jsxRuntimeExports.jsx(RlsPickerDayRange, { formControl: dayControl, 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: "ghost", onClick: onCancel, children: reactI18n('dateActionCancel') }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date-range__actions--ok", children: jsxRuntimeExports.jsx(RlsButton, { type: "raised", onClick: onSelect, children: reactI18n('dateActionSelect') }) })] }) })] }));
2855
+ }, [formControl, value, onListener]);
2856
+ 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("div", { className: "rls-picker-date-range__title rls-picker-date-range__title--description", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityDay, children: title }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date-range__title rls-picker-date-range__title--year", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityYear, children: yearControl.value }) }), jsxRuntimeExports.jsx(RlsPickerSelectorTitle, { monthControl: monthControl, yearControl: yearControl, date: date, maxDate: maxDate, minDate: minDate, disabled: visibility === 'YEAR', type: visibility === 'MONTH' ? 'year' : 'month', onClick: onVisibilityMonth })] }), 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: "ghost", onClick: onCancel, children: labels.dateActionCancel }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date-range__actions--ok", children: jsxRuntimeExports.jsx(RlsButton, { type: "raised", onClick: onSelect, children: labels.dateActionSelect }) })] }) })] }));
2719
2857
  }
2720
2858
 
2721
- function RlsFieldDateRange({ children, date: datePicker, disabled, formControl, identifier, maxDate, minDate, msgErrorDisabled, onValue, placeholder, rlsTheme, value: defaultValue }) {
2722
- const currentDate = datePicker || new Date();
2723
- const [value, setValue] = require$$0.useState(formControl?.value || defaultValue);
2859
+ function RlsFieldDateRange({ children, date: _date, disabled, formControl, identifier, maxDate, minDate, msgErrorDisabled, onValue, placeholder, rlsTheme, value: _value }) {
2860
+ const currentDate = require$$0.useMemo(() => _date ?? new Date(), [_date]);
2861
+ const [value, setValue] = require$$0.useState(formControl?.value || _value);
2724
2862
  const [modalIsVisible, setModalIsVisible] = require$$0.useState(false);
2725
- function onClickInput() {
2863
+ const _disabled = require$$0.useMemo(() => {
2864
+ return formControl?.disabled || disabled;
2865
+ }, [formControl?.disabled, disabled]);
2866
+ const className = require$$0.useMemo(() => {
2867
+ return renderClassStatus('rls-field-box', { disabled: _disabled });
2868
+ }, [_disabled]);
2869
+ const { icon, valueInput } = require$$0.useMemo(() => {
2870
+ return {
2871
+ icon: value ? 'trash-2' : 'calendar',
2872
+ valueInput: value ? rangeFormatTemplate(value) : ''
2873
+ };
2874
+ }, [value]);
2875
+ const onClickInput = require$$0.useCallback(() => {
2726
2876
  setModalIsVisible(true);
2727
- }
2728
- function onClickAction() {
2877
+ }, []);
2878
+ const onChange = require$$0.useCallback((value) => {
2879
+ setValue(value);
2880
+ onValue && onValue(value);
2881
+ }, [onValue]);
2882
+ const onClickAction = require$$0.useCallback(() => {
2729
2883
  if (value) {
2730
- formControl?.setValue(defaultValue);
2884
+ formControl?.setValue(_value);
2731
2885
  formControl?.touch();
2732
- onChange(defaultValue);
2886
+ onChange(_value);
2733
2887
  }
2734
2888
  else {
2735
2889
  setModalIsVisible(true);
2736
2890
  }
2737
- }
2738
- function onChange(value) {
2739
- setValue(value);
2740
- onValue && onValue(value);
2741
- }
2742
- const _disabled = formControl?.disabled || disabled;
2743
- const className = require$$0.useMemo(() => {
2744
- return renderClassStatus('rls-field-box', { disabled: _disabled });
2745
- }, [formControl?.disabled, disabled]);
2746
- return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-date-range", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("label", { 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: value ? rangeFormatTemplate(value) : '', readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: _disabled }), jsxRuntimeExports.jsx("button", { className: "rls-field-date-range__action", onClick: onClickAction, disabled: _disabled, children: jsxRuntimeExports.jsx(RlsIcon, { value: value ? 'trash-2' : 'calendar' }) })] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl }))] }), jsxRuntimeExports.jsx(RlsModal, { visible: modalIsVisible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerDateRange, { formControl: formControl, date: currentDate, disabled: _disabled, maxDate: maxDate, minDate: minDate, onListener: ({ event, value }) => {
2747
- event !== components.PickerListenerEvent.Cancel && onChange(value);
2748
- formControl?.touch();
2749
- setModalIsVisible(false);
2750
- } }) })] }));
2891
+ }, [value, formControl, _value, onChange]);
2892
+ const onListener = require$$0.useCallback(({ event, value }) => {
2893
+ event !== components.PickerListenerEvent.Cancel && onChange(value);
2894
+ formControl?.touch();
2895
+ setModalIsVisible(false);
2896
+ }, [formControl, onChange]);
2897
+ return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-date-range", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("label", { 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: valueInput, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: _disabled }), jsxRuntimeExports.jsx("button", { className: "rls-field-date-range__action", onClick: onClickAction, disabled: _disabled, children: jsxRuntimeExports.jsx(RlsIcon, { value: icon }) })] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl }))] }), jsxRuntimeExports.jsx(RlsModal, { visible: modalIsVisible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerDateRange, { formControl: formControl, date: currentDate, disabled: _disabled, maxDate: maxDate, minDate: minDate, onListener: onListener }) })] }));
2751
2898
  }
2752
2899
 
2753
2900
  function useFieldSelect(props) {
2754
2901
  const controller = useListController(props);
2755
- function onFocusInput() {
2902
+ const onFocusInput = require$$0.useCallback(() => {
2756
2903
  controller.setState({ focused: true });
2757
- }
2758
- function onBlurInput() {
2904
+ }, [controller.setState]);
2905
+ const onBlurInput = require$$0.useCallback(() => {
2759
2906
  controller.setState({ focused: false });
2760
- }
2761
- function onClickInput() {
2907
+ }, [controller.setState]);
2908
+ const onClickInput = require$$0.useCallback(() => {
2762
2909
  controller.setState({ modalIsVisible: true });
2763
- }
2764
- function onKeydownInput(event) {
2910
+ }, [controller.setState]);
2911
+ const onKeydownInput = require$$0.useCallback((event) => {
2765
2912
  switch (event.code) {
2766
2913
  case 'Space':
2767
2914
  case 'Enter':
@@ -2775,8 +2922,8 @@ function useFieldSelect(props) {
2775
2922
  controller.navigationInput(event);
2776
2923
  break;
2777
2924
  }
2778
- }
2779
- function onClickAction() {
2925
+ }, [controller.setState, controller.navigationInput]);
2926
+ const onClickAction = require$$0.useCallback(() => {
2780
2927
  const removable = !props.unremovable && !!controller.value;
2781
2928
  if (removable) {
2782
2929
  controller.setState({ modalIsVisible: false });
@@ -2788,35 +2935,46 @@ function useFieldSelect(props) {
2788
2935
  controller.setState({ modalIsVisible });
2789
2936
  modalIsVisible && controller.inputRef?.current?.focus();
2790
2937
  }
2791
- }
2792
- function onClickBackdrop() {
2938
+ }, [
2939
+ controller.modalIsVisible,
2940
+ controller.value,
2941
+ controller.setState,
2942
+ controller.setFormValue,
2943
+ props.unremovable,
2944
+ props.onValue
2945
+ ]);
2946
+ const onClickBackdrop = require$$0.useCallback(() => {
2793
2947
  controller.setState({ modalIsVisible: false });
2794
- }
2795
- function onClickElement(element) {
2948
+ }, [controller.setState]);
2949
+ const onChange = require$$0.useCallback((element) => {
2950
+ controller.inputRef?.current?.focus();
2951
+ if (props.onSelect) {
2952
+ controller.setState({ modalIsVisible: false });
2953
+ element.value && props.onSelect(element.value);
2954
+ }
2955
+ else {
2956
+ controller.setFormValue(element);
2957
+ controller.setState({ modalIsVisible: false });
2958
+ }
2959
+ props.onValue && props.onValue(element.value);
2960
+ }, [
2961
+ controller.setState,
2962
+ controller.setFormValue,
2963
+ props.onSelect,
2964
+ props.onValue
2965
+ ]);
2966
+ const onClickElement = require$$0.useCallback((element) => {
2796
2967
  return () => {
2797
2968
  onChange(element);
2798
2969
  };
2799
- }
2800
- function onKeydownElement(element) {
2970
+ }, []);
2971
+ const onKeydownElement = require$$0.useCallback((element) => {
2801
2972
  return (event) => {
2802
2973
  event.code === 'Enter'
2803
2974
  ? onChange(element)
2804
2975
  : controller.navigationElement(event);
2805
2976
  };
2806
- }
2807
- function onChange(element) {
2808
- const { onSelect, onValue } = props;
2809
- controller.inputRef?.current?.focus();
2810
- if (onSelect) {
2811
- controller.setState({ modalIsVisible: false });
2812
- element.value && onSelect(element.value);
2813
- }
2814
- else {
2815
- controller.setFormValue(element);
2816
- controller.setState({ modalIsVisible: false });
2817
- }
2818
- onValue && onValue(element.value);
2819
- }
2977
+ }, [controller.navigationElement]);
2820
2978
  return {
2821
2979
  ...controller,
2822
2980
  onBlurInput,
@@ -2833,16 +2991,35 @@ function useFieldSelect(props) {
2833
2991
  function RlsFieldSelectTemplate(props) {
2834
2992
  const select = useFieldSelect(props);
2835
2993
  const { render, suggestions, children, formControl, msgErrorDisabled, placeholder, rlsTheme, unremovable } = props;
2836
- const _disabled = formControl?.disabled || props.disabled;
2837
- const className = useRenderClassStatus('rls-field-box', {
2838
- disabled: _disabled,
2839
- error: formControl?.wrong,
2840
- focused: select.focused && !_disabled
2841
- }, 'rls-field-list rls-field-select');
2842
- return (jsxRuntimeExports.jsxs("div", { id: props.identifier, ref: select.contentRef, className: className, "rls-theme": rlsTheme, children: [children && jsxRuntimeExports.jsx("label", { 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", { ref: select.inputRef, className: "rls-field-list__control", readOnly: true, disabled: _disabled, placeholder: placeholder, value: select.value, onFocus: select.onFocusInput, onBlur: select.onBlurInput, onClick: select.onClickInput, onKeyDown: select.onKeydownInput }), jsxRuntimeExports.jsx("button", { className: 'rls-field-list__action', disabled: _disabled, onClick: select.onClickAction, children: jsxRuntimeExports.jsx(RlsIcon, { value: !unremovable && !!select.value ? 'close' : 'arrow-ios-down' }) })] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl })), jsxRuntimeExports.jsx("div", { className: useRenderClassStatus('rls-field-list__suggestions', {
2843
- higher: select.higher,
2844
- visible: select.modalIsVisible
2845
- }), children: select.modalIsVisible && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("div", { className: "rls-field-list__suggestions__body", children: jsxRuntimeExports.jsxs("ul", { ref: select.listRef, className: "rls-field-list__ul", children: [suggestions.map((element, index) => (jsxRuntimeExports.jsx("li", { className: "rls-field-list__element", tabIndex: -1, onClick: select.onClickElement(element), onKeyDown: select.onKeydownElement(element), children: render(element) }, index))), !suggestions.length && (jsxRuntimeExports.jsx("li", { className: "rls-field-list__empty", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-list__empty__description", children: [jsxRuntimeExports.jsx("label", { className: "rls-label-bold truncate", children: reactI18n('listEmptyTitle') }), jsxRuntimeExports.jsx("p", { className: "rls-caption-regular", children: reactI18n('listEmptyDescription') })] }) }))] }) }), jsxRuntimeExports.jsx("div", { className: "rls-field-list__backdrop", onClick: select.onClickBackdrop })] })) })] }));
2994
+ const [labels, setLabels] = require$$0.useState({
2995
+ listEmptyDescription: reactI18n('listEmptyDescription'),
2996
+ listEmptyTitle: reactI18n('listEmptyTitle')
2997
+ });
2998
+ require$$0.useEffect(() => {
2999
+ return i18n.i18nSubscribe(() => {
3000
+ setLabels({
3001
+ listEmptyDescription: reactI18n('listEmptyDescription'),
3002
+ listEmptyTitle: reactI18n('listEmptyTitle')
3003
+ });
3004
+ });
3005
+ }, []);
3006
+ const _disabled = require$$0.useMemo(() => {
3007
+ return formControl?.disabled || props.disabled;
3008
+ }, [formControl?.disabled, props.disabled]);
3009
+ const className = require$$0.useMemo(() => {
3010
+ return renderClassStatus('rls-field-box', {
3011
+ disabled: _disabled,
3012
+ error: formControl?.wrong,
3013
+ focused: select.focused && !_disabled
3014
+ }, 'rls-field-list rls-field-select');
3015
+ }, [formControl?.wrong, select.focused, _disabled]);
3016
+ const classNameList = require$$0.useMemo(() => {
3017
+ return renderClassStatus('rls-field-list__suggestions', {
3018
+ higher: select.higher,
3019
+ visible: select.modalIsVisible
3020
+ });
3021
+ }, [select.modalIsVisible, select.higher]);
3022
+ return (jsxRuntimeExports.jsxs("div", { id: props.identifier, ref: select.contentRef, className: className, "rls-theme": rlsTheme, children: [children && jsxRuntimeExports.jsx("label", { 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", { ref: select.inputRef, className: "rls-field-list__control", readOnly: true, disabled: _disabled, placeholder: placeholder, value: select.value, onFocus: select.onFocusInput, onBlur: select.onBlurInput, onClick: select.onClickInput, onKeyDown: select.onKeydownInput }), jsxRuntimeExports.jsx("button", { className: 'rls-field-list__action', disabled: _disabled, onClick: select.onClickAction, children: jsxRuntimeExports.jsx(RlsIcon, { value: !unremovable && !!select.value ? 'close' : 'arrow-ios-down' }) })] }) }), !msgErrorDisabled && (jsxRuntimeExports.jsx(RlsMessageFormError, { className: "rls-field-box__error", formControl: formControl })), jsxRuntimeExports.jsx("div", { className: classNameList, children: select.modalIsVisible && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("div", { className: "rls-field-list__suggestions__body", children: jsxRuntimeExports.jsxs("ul", { ref: select.listRef, className: "rls-field-list__ul", children: [suggestions.map((element, index) => (jsxRuntimeExports.jsx("li", { className: "rls-field-list__element", tabIndex: -1, onClick: select.onClickElement(element), onKeyDown: select.onKeydownElement(element), children: render(element) }, index))), !suggestions.length && (jsxRuntimeExports.jsx("li", { className: "rls-field-list__empty", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-list__empty__description", children: [jsxRuntimeExports.jsx("label", { className: "rls-label-bold truncate", children: labels.listEmptyTitle }), jsxRuntimeExports.jsx("p", { className: "rls-caption-regular", children: labels.listEmptyDescription })] }) }))] }) }), jsxRuntimeExports.jsx("div", { className: "rls-field-list__backdrop", onClick: select.onClickBackdrop })] })) })] }));
2846
3023
  }
2847
3024
  function RlsFieldSelect(props) {
2848
3025
  return (jsxRuntimeExports.jsx(RlsFieldSelectTemplate, { ...props, render: (element) => (jsxRuntimeExports.jsx(RlsBallot, { subtitle: element.subtitle, img: element.img, initials: element.initials, children: jsxRuntimeExports.jsx("span", { children: element.title }) })) }));
@@ -2877,29 +3054,36 @@ function RlsSnackbar({ content, icon, title, visible, rlsTheme }) {
2877
3054
  return (jsxRuntimeExports.jsxs("div", { className: className, "rls-theme": rlsTheme, children: [icon && (jsxRuntimeExports.jsx("div", { className: "rls-snackbar__avatar", children: jsxRuntimeExports.jsx(RlsIcon, { value: icon }) })), jsxRuntimeExports.jsxs("div", { className: "rls-snackbar__component", children: [title && jsxRuntimeExports.jsx("div", { className: "rls-snackbar__title", children: title }), jsxRuntimeExports.jsx("div", { className: "rls-snackbar__content", children: content })] })] }));
2878
3055
  }
2879
3056
  function useSnackbar() {
2880
- const [config, setConfig] = require$$0.useState({});
2881
- const [duration, setDuration] = require$$0.useState(4000);
2882
- const [timeoutId, setTimeoutId] = require$$0.useState();
2883
- const [visible, setVisible] = require$$0.useState(false);
2884
- const rlsSnackbar = jsxRuntimeExports.jsx(RlsSnackbar, { ...config, visible: visible });
3057
+ const [state, setState] = require$$0.useState({
3058
+ config: {},
3059
+ duration: 4000,
3060
+ timeoutId: undefined,
3061
+ visible: false
3062
+ });
3063
+ const rlsSnackbar = jsxRuntimeExports.jsx(RlsSnackbar, { ...state.config, visible: state.visible });
2885
3064
  require$$0.useEffect(() => {
2886
- if (visible) {
3065
+ if (state.visible) {
2887
3066
  const timeoutId = setTimeout(() => {
2888
- setVisible(false);
2889
- setTimeoutId(undefined);
2890
- }, duration);
2891
- setTimeoutId(timeoutId);
3067
+ setState((state) => ({
3068
+ ...state,
3069
+ visible: false,
3070
+ timeoutId: undefined
3071
+ }));
3072
+ }, state.duration);
3073
+ setState((state) => ({ ...state, timeoutId }));
2892
3074
  }
2893
- else if (timeoutId) {
2894
- clearTimeout(timeoutId);
2895
- setTimeout(() => snackbar(config), DURATION_ANIMATION);
3075
+ else if (state.timeoutId) {
3076
+ clearTimeout(state.timeoutId);
3077
+ setTimeout(() => snackbar(state.config), DURATION_ANIMATION);
2896
3078
  }
2897
- }, [visible]);
3079
+ }, [state.visible]);
2898
3080
  const snackbar = require$$0.useCallback((config) => {
2899
- const { content } = config;
2900
- setConfig(config);
2901
- setDuration(calculateDuration(String(content)));
2902
- setVisible((visible) => !visible);
3081
+ setState((state) => ({
3082
+ ...state,
3083
+ config,
3084
+ duration: calculateDuration(String(config.content)),
3085
+ visible: !state.visible
3086
+ }));
2903
3087
  }, []);
2904
3088
  return {
2905
3089
  RlsSnackbar: rlsSnackbar,
@@ -2980,7 +3164,7 @@ exports.RlsPickerDateRange = RlsPickerDateRange;
2980
3164
  exports.RlsPickerDay = RlsPickerDay;
2981
3165
  exports.RlsPickerDayRange = RlsPickerDayRange;
2982
3166
  exports.RlsPickerMonth = RlsPickerMonth;
2983
- exports.RlsPickerMonthTitle = RlsPickerMonthTitle;
3167
+ exports.RlsPickerSelectorTitle = RlsPickerSelectorTitle;
2984
3168
  exports.RlsPickerYear = RlsPickerYear;
2985
3169
  exports.RlsPoster = RlsPoster;
2986
3170
  exports.RlsProgressBar = RlsProgressBar;
@@ -2999,6 +3183,5 @@ exports.setErrorsI18n = setErrorsI18n;
2999
3183
  exports.useConfirmation = useConfirmation;
3000
3184
  exports.useDatatable = useDatatable;
3001
3185
  exports.useListController = useListController;
3002
- exports.useRenderClassStatus = useRenderClassStatus;
3003
3186
  exports.useSnackbar = useSnackbar;
3004
3187
  //# sourceMappingURL=index.js.map