@rolster/react-components 19.0.0 → 19.0.2

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 (38) hide show
  1. package/dist/cjs/assets/{index-QCv-Uo8R.css → index-DEldF_Je.css} +203 -8
  2. package/dist/cjs/index.js +264 -23
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/es/assets/{index-QCv-Uo8R.css → index-DEldF_Je.css} +203 -8
  5. package/dist/es/index.js +266 -27
  6. package/dist/es/index.js.map +1 -1
  7. package/dist/esm/components/atoms/Badge/Badge.css +4 -2
  8. package/dist/esm/components/atoms/Badge/Badge.css.map +1 -1
  9. package/dist/esm/components/organisms/FieldClock/FieldClock.css +71 -0
  10. package/dist/esm/components/organisms/FieldClock/FieldClock.css.map +1 -0
  11. package/dist/esm/components/organisms/FieldClock/FieldClock.d.ts +37 -0
  12. package/dist/esm/components/organisms/FieldClock/FieldClock.js +52 -0
  13. package/dist/esm/components/organisms/FieldClock/FieldClock.js.map +1 -0
  14. package/dist/esm/components/organisms/FieldDate/FieldDate.css +2 -2
  15. package/dist/esm/components/organisms/FieldDate/FieldDate.css.map +1 -1
  16. package/dist/esm/components/organisms/FieldDate/FieldDate.js +5 -5
  17. package/dist/esm/components/organisms/FieldDate/FieldDate.js.map +1 -1
  18. package/dist/esm/components/organisms/FieldDateRange/FieldDateRange.css +5 -2
  19. package/dist/esm/components/organisms/FieldDateRange/FieldDateRange.css.map +1 -1
  20. package/dist/esm/components/organisms/PickerClock/PickerClock.css +116 -0
  21. package/dist/esm/components/organisms/PickerClock/PickerClock.css.map +1 -0
  22. package/dist/esm/components/organisms/PickerClock/PickerClock.d.ts +13 -0
  23. package/dist/esm/components/organisms/PickerClock/PickerClock.js +208 -0
  24. package/dist/esm/components/organisms/PickerClock/PickerClock.js.map +1 -0
  25. package/dist/esm/components/organisms/PickerDate/PickerDate.css +3 -2
  26. package/dist/esm/components/organisms/PickerDate/PickerDate.css.map +1 -1
  27. package/dist/esm/components/organisms/PickerDate/PickerDate.js +11 -13
  28. package/dist/esm/components/organisms/PickerDate/PickerDate.js.map +1 -1
  29. package/dist/esm/components/organisms/PickerDateRange/PickerDateRange.d.ts +1 -1
  30. package/dist/esm/components/organisms/PickerDateRange/PickerDateRange.js +2 -2
  31. package/dist/esm/components/organisms/PickerDateRange/PickerDateRange.js.map +1 -1
  32. package/dist/esm/index.d.ts +2 -0
  33. package/dist/esm/index.js +2 -0
  34. package/dist/esm/index.js.map +1 -1
  35. package/package.json +4 -4
  36. package/dist/esm/components/molecules/PickerClock/PickerClock.d.ts +0 -1
  37. package/dist/esm/components/molecules/PickerClock/PickerClock.js +0 -5
  38. package/dist/esm/components/molecules/PickerClock/PickerClock.js.map +0 -1
@@ -98,6 +98,8 @@
98
98
 
99
99
  .rls-badge {
100
100
  --pvt-dimension: var(--rlc-badge-dimension, var(--rls-sizing-x12));
101
+ --pvt-font-color: var(--rls-app-color-050);
102
+ --pvt-background: var(--rls-app-color-700);
101
103
  --pvt-contrast-font-color: var(--rls-app-color-600);
102
104
  --pvt-contrast-background: var(--rls-app-color-200);
103
105
  position: relative;
@@ -124,10 +126,10 @@
124
126
  background: var(--pvt-contrast-background);
125
127
  }
126
128
  .rls-badge[rls-theme] {
129
+ --pvt-font-color: var(--rls-theme-color-050);
130
+ --pvt-background: var(--rls-theme-color-500);
127
131
  --pvt-contrast-font-color: var(--rls-theme-color-700);
128
132
  --pvt-contrast-background: var(--rls-theme-color-100);
129
- color: var(--rls-theme-color-050);
130
- background: var(--rls-theme-color-500);
131
133
  }
132
134
  .rls-badge > span {
133
135
  font-size: inherit;
@@ -2619,13 +2621,203 @@
2619
2621
  bottom 120ms 0ms var(--rls-deceleration-curve);
2620
2622
  } /*# sourceMappingURL=Modal.css.map */
2621
2623
 
2622
- .rls-picker-date {
2624
+ .rls-picker-clock {
2623
2625
  position: relative;
2624
2626
  display: flex;
2625
- flex-direction: column;
2626
2627
  width: 150rem;
2628
+ flex-direction: column;
2629
+ row-gap: var(--rls-sizing-x8);
2630
+ overflow: hidden;
2631
+ user-select: none;
2632
+ padding: var(--rlc-picker-clock-padding, 0rem);
2633
+ box-sizing: border-box;
2634
+ border-radius: var(--rlc-picker-clock-radius, 0rem);
2635
+ background: var(--rlc-picker-clock-background, transparent);
2636
+ }
2637
+ .rls-picker-clock__header {
2638
+ display: flex;
2639
+ column-gap: var(--rls-sizing-x8);
2640
+ padding: var(--rls-sizing-x4) var(--rls-sizing-x4) 0rem var(--rls-sizing-x4);
2641
+ box-sizing: border-box;
2642
+ justify-content: center;
2643
+ }
2644
+ .rls-picker-clock__title {
2645
+ display: flex;
2646
+ width: auto;
2647
+ column-gap: var(--rls-sizing-x2);
2648
+ align-items: center;
2649
+ }
2650
+ .rls-picker-clock__title__value {
2651
+ width: 16rem;
2652
+ text-align: center;
2653
+ font-size: var(--rls-heading4-font-size);
2654
+ font-weight: var(--rls-font-weight-semibold);
2655
+ color: var(--rls-app-color-600);
2656
+ }
2657
+ .rls-picker-clock__title__value--active {
2658
+ color: var(--rls-theme-color-500);
2659
+ }
2660
+ .rls-picker-clock__title__value:hover {
2661
+ color: var(--rls-app-color-900);
2662
+ }
2663
+ .rls-picker-clock__title__separator {
2664
+ font-size: var(--rls-title-font-size);
2665
+ font-weight: var(--rls-font-weight-semibold);
2666
+ }
2667
+ .rls-picker-clock__zone {
2668
+ display: flex;
2669
+ width: auto;
2670
+ column-gap: var(--rls-sizing-x4);
2671
+ align-items: center;
2672
+ }
2673
+ .rls-picker-clock__zone__value {
2674
+ width: 18rem;
2675
+ text-align: center;
2676
+ padding: var(--rls-sizing-x1) var(--rls-sizing-x2);
2677
+ border-radius: var(--rls-sizing-x2);
2678
+ font-size: var(--rls-body-font-size);
2679
+ font-weight: var(--rls-font-weight-semibold);
2680
+ background: var(--rls-app-color-200);
2681
+ }
2682
+ .rls-picker-clock__zone__value--active {
2683
+ background: var(--rls-theme-gradient-500);
2684
+ color: var(--rls-theme-color-050);
2685
+ }
2686
+ .rls-picker-clock__body {
2687
+ display: flex;
2688
+ justify-content: center;
2689
+ }
2690
+ .rls-picker-clock__plate {
2691
+ width: 120rem;
2692
+ height: 120rem;
2693
+ border-radius: 50%;
2694
+ border: var(--rls-app-border-2-200);
2695
+ box-sizing: border-box;
2696
+ overflow: hidden;
2697
+ }
2698
+ .rls-picker-clock__canvas {
2699
+ position: absolute;
2700
+ }
2701
+ .rls-picker-clock__canvas__line {
2702
+ stroke: var(--rls-theme-color-500);
2703
+ stroke-width: var(--rls-sizing-x1);
2704
+ }
2705
+ .rls-picker-clock__canvas__center {
2706
+ fill: var(--rls-theme-color-500);
2707
+ }
2708
+ .rls-picker-clock__canvas__indicator {
2709
+ fill: var(--rls-theme-color-300);
2710
+ }
2711
+ .rls-picker-clock__canvas__point {
2712
+ fill: var(--rls-theme-color-050);
2713
+ }
2714
+ .rls-picker-clock__tick {
2715
+ position: absolute;
2716
+ width: var(--rls-sizing-x14);
2717
+ height: var(--rls-sizing-x14);
2718
+ line-height: var(--rls-sizing-x14);
2719
+ text-align: center;
2720
+ cursor: pointer;
2721
+ font-size: var(--rls-paragraph-font-size);
2722
+ font-weight: var(--rls-font-weight-semibold);
2723
+ }
2724
+ .rls-picker-clock__footer {
2725
+ --rlc-button-width: 100%;
2726
+ display: flex;
2727
+ column-gap: var(--rls-sizing-x6);
2728
+ align-items: center;
2729
+ padding: var(--rls-sizing-x4) var(--rls-sizing-x8) var(--rls-sizing-x6)
2730
+ var(--rls-sizing-x8);
2627
2731
  overflow: hidden;
2732
+ box-sizing: border-box;
2733
+ }
2734
+ .rls-picker-clock__footer--today {
2735
+ display: flex;
2736
+ width: var(--rls-sizing-x16);
2737
+ align-items: center;
2738
+ justify-content: center;
2739
+ } /*# sourceMappingURL=PickerClock.css.map */
2740
+
2741
+ .rls-field-clock {
2742
+ --rlc-field-box-body-padding: var(--rls-sizing-x3) var(--rls-sizing-x4);
2743
+ --pvt-font-size: var(--rlc-field-clock-font-size, var(--rls-input-font-size));
2744
+ --pvt-letter-spacing: var(
2745
+ --rlc-field-clock-letter-spacing,
2746
+ var(--rls-input-letter-spacing)
2747
+ );
2748
+ --pvt-action-dimension: var(
2749
+ --rlc-field-box-action-dimension,
2750
+ var(--rls-sizing-x12)
2751
+ );
2752
+ --pvt-action-background: var(
2753
+ --rlc-field-box-action-background,
2754
+ var(--rls-app-color-200)
2755
+ );
2756
+ --pvt-control-width: calc(100% - var(--pvt-action-dimension));
2757
+ position: relative;
2758
+ width: 100%;
2759
+ box-sizing: border-box;
2760
+ }
2761
+ .rls-field-clock .rls-field-box--readonly {
2762
+ --pvt-control-width: 100%;
2763
+ }
2764
+ .rls-field-clock .rls-field-box__body {
2765
+ column-gap: var(--rls-sizing-x2);
2766
+ }
2767
+ .rls-field-clock__control {
2768
+ position: relative;
2769
+ width: var(--pvt-control-width);
2770
+ height: var(--rls-sizing-x12);
2771
+ line-height: var(--rls-sizing-x12);
2772
+ padding: 0rem;
2773
+ cursor: default;
2774
+ border: none;
2775
+ outline: none;
2776
+ background: rgba(0, 0, 0, 0);
2777
+ color: var(--rls-app-color-900);
2778
+ font-weight: var(--rls-font-weight-medium);
2779
+ font-size: var(--pvt-font-size);
2780
+ letter-spacing: var(--pvt-letter-spacing);
2781
+ }
2782
+ .rls-field-clock__control::placeholder {
2783
+ color: var(--rls-app-color-400);
2784
+ }
2785
+ .rls-field-clock__control:disabled {
2786
+ opacity: 0.5;
2787
+ cursor: not-allowed;
2788
+ }
2789
+ .rls-field-clock__action {
2790
+ --rlc-icon-dimension: calc(var(--pvt-action-dimension) - 2rem);
2791
+ width: var(--pvt-action-dimension);
2792
+ height: var(--pvt-action-dimension);
2793
+ color: var(--rls-app-color-600);
2794
+ padding: 0rem;
2795
+ outline: none;
2796
+ border-radius: var(--rlc-field-box-action-radius, var(--rls-sizing-x2));
2797
+ background: var(--pvt-action-background);
2798
+ }
2799
+ .rls-field-clock__action:disabled {
2800
+ opacity: 0.5;
2801
+ background: rgba(0, 0, 0, 0);
2802
+ }
2803
+ .rls-field-clock__action .rls-icon {
2804
+ margin: 1rem;
2805
+ }
2806
+ .rls-field-clock-modal {
2807
+ --rlc-modal-background: transparent;
2808
+ --rlc-modal-max-width: 150rem;
2809
+ --rlc-picker-clock-radius: var(--rls-sizing-x4);
2810
+ --rlc-picker-clock-background: var(--rls-app-color-050);
2811
+ } /*# sourceMappingURL=FieldClock.css.map */
2812
+
2813
+ .rls-picker-date {
2814
+ position: relative;
2815
+ display: flex;
2816
+ width: 150rem;
2817
+ flex-direction: column;
2628
2818
  row-gap: var(--rls-sizing-x4);
2819
+ overflow: hidden;
2820
+ user-select: none;
2629
2821
  border-radius: var(--rlc-picker-date-radius, 0rem);
2630
2822
  background: var(--rlc-picker-date-background, transparent);
2631
2823
  }
@@ -2686,9 +2878,9 @@
2686
2878
 
2687
2879
  .rls-field-date {
2688
2880
  --rlc-field-box-body-padding: var(--rls-sizing-x3) var(--rls-sizing-x4);
2689
- --pvt-font-size: var(--rlc-datefield-font-size, var(--rls-input-font-size));
2881
+ --pvt-font-size: var(--rlc-field-date-font-size, var(--rls-input-font-size));
2690
2882
  --pvt-letter-spacing: var(
2691
- --rlc-datefield-letter-spacing,
2883
+ --rlc-field-date-letter-spacing,
2692
2884
  var(--rls-input-letter-spacing)
2693
2885
  );
2694
2886
  --pvt-action-dimension: var(
@@ -2821,9 +3013,12 @@
2821
3013
 
2822
3014
  .rls-field-date-range {
2823
3015
  --rlc-field-box-body-padding: var(--rls-sizing-x3) var(--rls-sizing-x4);
2824
- --pvt-font-size: var(--rlc-datefield-font-size, var(--rls-input-font-size));
3016
+ --pvt-font-size: var(
3017
+ --rlc-field-date-range-font-size,
3018
+ var(--rls-input-font-size)
3019
+ );
2825
3020
  --pvt-letter-spacing: var(
2826
- --rlc-datefield-letter-spacing,
3021
+ --rlc-field-date-range-letter-spacing,
2827
3022
  var(--rls-input-letter-spacing)
2828
3023
  );
2829
3024
  --pvt-action-dimension: var(
package/dist/cjs/index.js CHANGED
@@ -2060,10 +2060,6 @@ function RlsFieldAutocomplete(props) {
2060
2060
  return jsxRuntimeExports.jsx(RlsFieldAutocompleteTemplate, { ...props, render: render });
2061
2061
  }
2062
2062
 
2063
- const DATE_FORMAT = '{dd}/{mx}/{yy}';
2064
- const DATE_FORMAT_TITLE = '{dw}, {mx} {dd} de {yy}';
2065
- const DATE_RANGE_FORMAT = '{dd}/{mx}/{yy}';
2066
-
2067
2063
  function RlsModal({ children, className, onAutoClose, visible, rlsTheme }) {
2068
2064
  const classNameModal = require$$0.useMemo(() => {
2069
2065
  return renderClassStatus('rls-modal', { visible }, className);
@@ -2074,6 +2070,251 @@ function RlsModal({ children, className, onAutoClose, visible, rlsTheme }) {
2074
2070
  return ReactDOM.createPortal(jsxRuntimeExports.jsxs("div", { className: classNameModal, "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsx("div", { className: "rls-modal__component", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-modal__backdrop", onClick: onClickBackdrop })] }), document.body);
2075
2071
  }
2076
2072
 
2073
+ function formatTime(value) {
2074
+ return String(value).padStart(2, '0');
2075
+ }
2076
+ const CLOCK_VALUES = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
2077
+ const RADIUS = 48;
2078
+ const DIAL_RADIUS = 60;
2079
+ const TICK_RADIUS = 7;
2080
+ function RlsPickerClockTick({ onValue, selectionIsHours, value }) {
2081
+ const styleTick = require$$0.useMemo(() => {
2082
+ const radian = (value / 6) * Math.PI;
2083
+ const x = Math.sin(radian) * RADIUS;
2084
+ const y = Math.cos(radian) * RADIUS;
2085
+ return {
2086
+ left: `${DIAL_RADIUS + x - TICK_RADIUS - 1}rem`,
2087
+ top: `${DIAL_RADIUS - y - TICK_RADIUS - 1}rem`
2088
+ };
2089
+ }, []);
2090
+ const label = require$$0.useMemo(() => {
2091
+ if (selectionIsHours) {
2092
+ return formatTime(value);
2093
+ }
2094
+ if (value === 12) {
2095
+ return formatTime(0);
2096
+ }
2097
+ return formatTime(value * 5);
2098
+ }, [selectionIsHours]);
2099
+ const onClick = require$$0.useCallback((event) => {
2100
+ event.preventDefault();
2101
+ onValue(value);
2102
+ }, [onValue]);
2103
+ return (jsxRuntimeExports.jsx("div", { className: "rls-picker-clock__tick", style: styleTick, onClick: onClick, children: label }));
2104
+ }
2105
+ function RlsPickerClock({ formControl, onListener, rlsTheme, time }) {
2106
+ const timeInitial = require$$0.useMemo(() => {
2107
+ return formControl?.value ?? time ?? dates.Time.now();
2108
+ }, [formControl?.value, time]);
2109
+ const plateElement = require$$0.useRef(null);
2110
+ const lineElement = require$$0.useRef(null);
2111
+ const centerElement = require$$0.useRef(null);
2112
+ const indicatorElement = require$$0.useRef(null);
2113
+ const pointElement = require$$0.useRef(null);
2114
+ const [labels, setLabels] = require$$0.useState({
2115
+ timeActionCancel: reactI18n('dateActionCancel'),
2116
+ timeActionSelect: reactI18n('dateActionSelect')
2117
+ });
2118
+ const [zoneIsPM, setZoneIsPM] = require$$0.useState(timeInitial.hour >= 12);
2119
+ const [hour, setHour] = require$$0.useState(zoneIsPM ? timeInitial.hour - 12 : timeInitial.hour);
2120
+ const [minute, setMinute] = require$$0.useState(timeInitial.minute);
2121
+ const [selectionIsHours, setSelectionIsHours] = require$$0.useState(true);
2122
+ const selectionIsActive = require$$0.useRef(false);
2123
+ const radianUnit = require$$0.useMemo(() => {
2124
+ return Math.PI / (selectionIsHours ? 6 : 30);
2125
+ }, [selectionIsHours]);
2126
+ const hourFormat = require$$0.useMemo(() => {
2127
+ return formatTime(hour === 0 ? 12 : hour);
2128
+ }, [hour]);
2129
+ const minuteFormat = require$$0.useMemo(() => {
2130
+ return formatTime(minute);
2131
+ }, [minute]);
2132
+ const classNameHour = require$$0.useMemo(() => {
2133
+ return renderClassStatus('rls-picker-clock__title__value', {
2134
+ active: selectionIsHours
2135
+ });
2136
+ }, [selectionIsHours]);
2137
+ const classNameMinute = require$$0.useMemo(() => {
2138
+ return renderClassStatus('rls-picker-clock__title__value', {
2139
+ active: !selectionIsHours
2140
+ });
2141
+ }, [selectionIsHours]);
2142
+ const classNameAM = require$$0.useMemo(() => {
2143
+ return renderClassStatus('rls-picker-clock__zone__value', {
2144
+ active: !zoneIsPM
2145
+ });
2146
+ }, [zoneIsPM]);
2147
+ const classNamePM = require$$0.useMemo(() => {
2148
+ return renderClassStatus('rls-picker-clock__zone__value', {
2149
+ active: zoneIsPM
2150
+ });
2151
+ }, [zoneIsPM]);
2152
+ const refreshClockHour = require$$0.useEffectEvent(() => {
2153
+ refreshClock(hour > 12 ? hour - 12 : hour);
2154
+ });
2155
+ const refreshClockMinute = require$$0.useEffectEvent(() => {
2156
+ refreshClock(minute);
2157
+ });
2158
+ require$$0.useEffect(() => {
2159
+ return i18n.i18nSubscribe(() => {
2160
+ setLabels({
2161
+ timeActionCancel: reactI18n('dateActionCancel'),
2162
+ timeActionSelect: reactI18n('dateActionSelect')
2163
+ });
2164
+ });
2165
+ }, []);
2166
+ require$$0.useEffect(() => {
2167
+ selectionIsHours ? refreshClockHour() : refreshClockMinute();
2168
+ }, [selectionIsHours]);
2169
+ const refreshComponent = require$$0.useCallback((clientX, clientY) => {
2170
+ const rectangle = plateElement.current.getBoundingClientRect();
2171
+ const centerX = rectangle.left + rectangle.width / 2;
2172
+ const centerY = rectangle.top + rectangle.height / 2;
2173
+ const positionX = clientX - centerX;
2174
+ const positionY = clientY - centerY;
2175
+ const angle = Math.atan2(-positionX, positionY) + Math.PI;
2176
+ const value = Math.round(angle / radianUnit);
2177
+ refreshClock(value);
2178
+ selectionIsHours ? setHour(value === 0 ? 12 : value) : setMinute(value);
2179
+ }, [selectionIsHours, radianUnit]);
2180
+ const refreshClock = require$$0.useCallback((value) => {
2181
+ const angle = value * radianUnit;
2182
+ const x2 = Math.sin(angle) * (RADIUS - TICK_RADIUS);
2183
+ const y2 = -Math.cos(angle) * (RADIUS - TICK_RADIUS);
2184
+ const cx = Math.sin(angle) * RADIUS;
2185
+ const cy = -Math.cos(angle) * RADIUS;
2186
+ lineElement.current.setAttribute('x2', `${x2 - 1}rem`);
2187
+ lineElement.current.setAttribute('y2', `${y2 - 1}rem`);
2188
+ indicatorElement.current.setAttribute('cx', `${cx - 1}rem`);
2189
+ indicatorElement.current.setAttribute('cy', `${cy - 1}rem`);
2190
+ pointElement.current.setAttribute('cx', `${cx - 1}rem`);
2191
+ pointElement.current.setAttribute('cy', `${cy - 1}rem`);
2192
+ pointElement.current.style.visibility =
2193
+ selectionIsHours || value % 5 === 0 ? 'hidden' : 'visible';
2194
+ }, [selectionIsHours, radianUnit]);
2195
+ const onClickHour = require$$0.useCallback(() => {
2196
+ setSelectionIsHours(true);
2197
+ }, []);
2198
+ const onClickMinute = require$$0.useCallback(() => {
2199
+ setSelectionIsHours(false);
2200
+ }, []);
2201
+ const onClickAM = require$$0.useCallback(() => {
2202
+ setZoneIsPM(false);
2203
+ }, []);
2204
+ const onClickPM = require$$0.useCallback(() => {
2205
+ setZoneIsPM(true);
2206
+ }, []);
2207
+ const onActiveSelection = require$$0.useCallback(() => {
2208
+ selectionIsActive.current = true;
2209
+ }, []);
2210
+ const onMouseSelection = require$$0.useCallback((event) => {
2211
+ if (selectionIsActive.current) {
2212
+ event.preventDefault();
2213
+ refreshComponent(event.clientX, event.clientY);
2214
+ }
2215
+ }, [refreshComponent]);
2216
+ const onTouchSelection = require$$0.useCallback((event) => {
2217
+ const touch = event.touches.item(0);
2218
+ if (selectionIsActive.current && touch) {
2219
+ refreshComponent(touch.clientX, touch.clientY);
2220
+ }
2221
+ }, [refreshComponent]);
2222
+ const onInactiveSelection = require$$0.useCallback(() => {
2223
+ selectionIsActive.current = false;
2224
+ }, []);
2225
+ const onClickValue = require$$0.useCallback((value) => {
2226
+ if (selectionIsHours) {
2227
+ setHour(value);
2228
+ refreshClock(value);
2229
+ }
2230
+ else {
2231
+ const minute = value === 12 ? 0 : value * 5;
2232
+ setMinute(minute);
2233
+ refreshClock(minute);
2234
+ }
2235
+ }, [selectionIsHours]);
2236
+ const onCancel = require$$0.useCallback(() => {
2237
+ onListener?.({ event: components.PickerListenerEvent.Cancel });
2238
+ }, [onListener]);
2239
+ const onCurrentTime = require$$0.useCallback(() => {
2240
+ const currentTime = dates.Time.now();
2241
+ formControl?.setValue(currentTime);
2242
+ setHour(currentTime.hour);
2243
+ setMinute(currentTime.minute);
2244
+ onListener?.({
2245
+ event: components.PickerListenerEvent.Select,
2246
+ value: currentTime
2247
+ });
2248
+ }, [formControl, onListener]);
2249
+ const onSelect = require$$0.useCallback(() => {
2250
+ const hourValue = zoneIsPM
2251
+ ? hour !== 12
2252
+ ? hour + 12
2253
+ : 12
2254
+ : hour === 12
2255
+ ? 0
2256
+ : hour;
2257
+ const timeValue = new dates.Time(hourValue, minute);
2258
+ formControl?.setValue(timeValue);
2259
+ onListener?.({
2260
+ event: components.PickerListenerEvent.Select,
2261
+ value: timeValue
2262
+ });
2263
+ }, [formControl, hour, minute, zoneIsPM, onListener]);
2264
+ return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-clock", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: "rls-picker-clock__header", children: [jsxRuntimeExports.jsxs("div", { className: "rls-picker-clock__title", children: [jsxRuntimeExports.jsx("span", { className: classNameHour, onClick: onClickHour, children: hourFormat }), jsxRuntimeExports.jsx("span", { className: "rls-picker-clock__title__separator", children: ":" }), jsxRuntimeExports.jsx("span", { className: classNameMinute, onClick: onClickMinute, children: minuteFormat })] }), jsxRuntimeExports.jsxs("div", { className: "rls-picker-clock__zone", children: [jsxRuntimeExports.jsx("span", { className: classNameAM, onClick: onClickAM, children: "AM" }), jsxRuntimeExports.jsx("span", { className: classNamePM, onClick: onClickPM, children: "PM" })] })] }), jsxRuntimeExports.jsx("div", { className: "rls-picker-clock__body", children: jsxRuntimeExports.jsxs("div", { className: "rls-picker-clock__plate", ref: plateElement, onMouseDown: onActiveSelection, onMouseMove: onMouseSelection, onMouseUp: onInactiveSelection, onMouseLeave: onInactiveSelection, onTouchStart: onActiveSelection, onTouchMove: onTouchSelection, onTouchEnd: onInactiveSelection, children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-clock__canvas", children: jsxRuntimeExports.jsx("svg", { width: "120rem", height: "120rem", children: jsxRuntimeExports.jsxs("g", { style: {
2265
+ transform: `translate(${DIAL_RADIUS}rem, ${DIAL_RADIUS}rem)`
2266
+ }, children: [jsxRuntimeExports.jsx("line", { ref: lineElement, className: "rls-picker-clock__canvas__line", x1: "-1", y1: "-1" }), jsxRuntimeExports.jsx("circle", { ref: centerElement, className: "rls-picker-clock__canvas__center", r: "4", cx: "-1", cy: "-1" }), jsxRuntimeExports.jsx("circle", { ref: indicatorElement, className: "rls-picker-clock__canvas__indicator", r: `${TICK_RADIUS}rem` }), jsxRuntimeExports.jsx("circle", { ref: pointElement, className: "rls-picker-clock__canvas__point", r: "3.5" })] }) }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-clock__hours", children: CLOCK_VALUES.map((value) => {
2267
+ return (jsxRuntimeExports.jsx(RlsPickerClockTick, { value: value, selectionIsHours: selectionIsHours, onValue: onClickValue }, value));
2268
+ }) })] }) }), jsxRuntimeExports.jsxs("div", { className: "rls-picker-clock__footer", children: [jsxRuntimeExports.jsx("div", { className: "rls-picker-clock__footer--cancel", children: jsxRuntimeExports.jsx(RlsButton, { type: "flat", onClick: onCancel, children: labels.timeActionCancel }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-clock__footer--today", children: jsxRuntimeExports.jsx(RlsButtonAction, { icon: "timer", onClick: onCurrentTime }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-clock__footer--ok", children: jsxRuntimeExports.jsx(RlsButton, { type: "gradient", onClick: onSelect, children: labels.timeActionSelect }) })] })] }));
2269
+ }
2270
+
2271
+ function RlsFieldClock({ children, disabled, formControl, identifier, msgErrorDisabled, onValue, placeholder, readOnly, rlsTheme, time, value: valueInitial }) {
2272
+ const [value, setValue] = require$$0.useState(formControl?.value ?? valueInitial);
2273
+ const [modalIsVisible, setModalIsVisible] = require$$0.useState(false);
2274
+ const _disabled = require$$0.useMemo(() => {
2275
+ return formControl?.disabled || disabled;
2276
+ }, [formControl?.disabled, disabled]);
2277
+ const className = require$$0.useMemo(() => {
2278
+ return renderClassStatus('rls-field-box', {
2279
+ disabled: _disabled,
2280
+ readonly: readOnly
2281
+ });
2282
+ }, [_disabled, readOnly]);
2283
+ const { icon, valueInput } = require$$0.useMemo(() => {
2284
+ return {
2285
+ icon: value ? 'trash-2' : 'timer',
2286
+ valueInput: value?.normalizeMeridiemFormat || ''
2287
+ };
2288
+ }, [value]);
2289
+ const onClickInput = require$$0.useCallback(() => {
2290
+ !readOnly && setModalIsVisible(true);
2291
+ }, [readOnly]);
2292
+ const onChange = require$$0.useCallback((value) => {
2293
+ setValue(value);
2294
+ onValue?.(value);
2295
+ }, [onValue]);
2296
+ const onClickAction = require$$0.useCallback(() => {
2297
+ if (value) {
2298
+ formControl?.setValue(valueInitial);
2299
+ formControl?.touch();
2300
+ onChange(valueInitial);
2301
+ }
2302
+ else {
2303
+ setModalIsVisible(true);
2304
+ }
2305
+ }, [value, formControl, valueInitial, onChange]);
2306
+ const onListener = require$$0.useCallback(({ event, value }) => {
2307
+ event !== components.PickerListenerEvent.Cancel && onChange(value);
2308
+ formControl?.touch();
2309
+ setModalIsVisible(false);
2310
+ }, [formControl, onChange]);
2311
+ return (jsxRuntimeExports.jsxs("div", { id: identifier, className: "rls-field-date", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: className, children: [children && jsxRuntimeExports.jsx("span", { className: "rls-field-box__label", children: children }), jsxRuntimeExports.jsx("div", { className: "rls-field-box__component", children: jsxRuntimeExports.jsxs("div", { className: "rls-field-box__body", children: [jsxRuntimeExports.jsx("input", { className: "rls-field-date__control", type: "text", value: valueInput, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: _disabled }), !readOnly && (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, { className: "rls-field-clock-modal", visible: modalIsVisible, rlsTheme: rlsTheme, children: jsxRuntimeExports.jsx(RlsPickerClock, { formControl: formControl, time: time, disabled: _disabled, onListener: onListener }) })] }));
2312
+ }
2313
+
2314
+ const DATE_FORMAT = '{dd}/{mx}/{yy}';
2315
+ const DATE_FORMAT_TITLE = '{dw}, {mx} {dd} de {yy}';
2316
+ const DATE_RANGE_FORMAT = '{dd}/{mx}/{yy}';
2317
+
2077
2318
  function RlsPickerDate({ automatic, date, disabled, formControl, maxDate, minDate, onListener, rlsTheme }) {
2078
2319
  const today = require$$0.useRef(new Date()); // Initial current date in component
2079
2320
  const _date = require$$0.useMemo(() => {
@@ -2126,33 +2367,31 @@ function RlsPickerDate({ automatic, date, disabled, formControl, maxDate, minDat
2126
2367
  type === 'month' ? setVisibility('MONTH') : setVisibility('YEAR');
2127
2368
  }, []);
2128
2369
  const onCancel = require$$0.useCallback(() => {
2129
- onListener && onListener({ event: components.PickerListenerEvent.Cancel });
2370
+ onListener?.({ event: components.PickerListenerEvent.Cancel });
2130
2371
  }, [onListener]);
2131
2372
  const onToday = require$$0.useCallback(() => {
2132
2373
  yearControl.setValue(today.current.getFullYear());
2133
2374
  dayControl.setValue(today.current.getDate());
2134
2375
  monthControl.setValue(today.current.getMonth());
2135
2376
  formControl?.setValue(today.current);
2136
- onListener &&
2137
- onListener({
2138
- event: components.PickerListenerEvent.Now,
2139
- value: today.current
2140
- });
2141
- }, [today.current, formControl, onListener]);
2377
+ onListener?.({
2378
+ event: components.PickerListenerEvent.Now,
2379
+ value: today.current
2380
+ });
2381
+ }, [formControl, onListener]);
2142
2382
  const onSelect = require$$0.useCallback(() => {
2143
2383
  formControl?.setValue(value);
2144
- onListener &&
2145
- onListener({
2146
- event: components.PickerListenerEvent.Select,
2147
- value
2148
- });
2384
+ onListener?.({
2385
+ event: components.PickerListenerEvent.Select,
2386
+ value
2387
+ });
2149
2388
  }, [formControl, value, onListener]);
2150
2389
  return (jsxRuntimeExports.jsxs("div", { className: "rls-picker-date", "rls-theme": rlsTheme, children: [jsxRuntimeExports.jsxs("div", { className: "rls-picker-date__header", children: [jsxRuntimeExports.jsx(RlsPickerSelectorTitle, { monthControl: monthControl, yearControl: yearControl, date: value, maxDate: maxDate, minDate: minDate, disabled: visibility === 'YEAR', type: 'month', onClick: onVisibilityTitle }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__title", children: jsxRuntimeExports.jsx("span", { onClick: onVisibilityDay, children: title }) })] }), jsxRuntimeExports.jsxs("div", { className: classNameComponent, children: [jsxRuntimeExports.jsx(RlsPickerDay, { formControl: dayControl, date: _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: "flat", onClick: onCancel, children: labels.dateActionCancel }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__actions--today", children: jsxRuntimeExports.jsx(RlsButtonAction, { icon: "calendar", onClick: onToday, disabled: itIsDisabledToday }) }), jsxRuntimeExports.jsx("div", { className: "rls-picker-date__actions--ok", children: jsxRuntimeExports.jsx(RlsButton, { type: "gradient", onClick: onSelect, children: labels.dateActionSelect }) })] }) }))] }));
2151
2390
  }
2152
2391
 
2153
- function RlsFieldDate({ children, date, disabled, formControl, format, identifier, maxDate, minDate, msgErrorDisabled, onValue, placeholder, readOnly, rlsTheme, value: _value }) {
2392
+ function RlsFieldDate({ children, date, disabled, formControl, format, identifier, maxDate, minDate, msgErrorDisabled, onValue, placeholder, readOnly, rlsTheme, value: valueInitial }) {
2154
2393
  const today = require$$0.useRef(new Date()); // Initial current date in component
2155
- const [value, setValue] = require$$0.useState(formControl?.value ?? _value);
2394
+ const [value, setValue] = require$$0.useState(formControl?.value ?? valueInitial);
2156
2395
  const [modalIsVisible, setModalIsVisible] = require$$0.useState(false);
2157
2396
  const _disabled = require$$0.useMemo(() => {
2158
2397
  return formControl?.disabled || disabled;
@@ -2187,14 +2426,14 @@ function RlsFieldDate({ children, date, disabled, formControl, format, identifie
2187
2426
  }, [onValue]);
2188
2427
  const onClickAction = require$$0.useCallback(() => {
2189
2428
  if (value) {
2190
- formControl?.setValue(_value);
2429
+ formControl?.setValue(valueInitial);
2191
2430
  formControl?.touch();
2192
- onChange(_value);
2431
+ onChange(valueInitial);
2193
2432
  }
2194
2433
  else {
2195
2434
  setModalIsVisible(true);
2196
2435
  }
2197
- }, [value, formControl, _value, onChange]);
2436
+ }, [value, formControl, valueInitial, onChange]);
2198
2437
  const onListener = require$$0.useCallback(({ event, value }) => {
2199
2438
  event !== components.PickerListenerEvent.Cancel && onChange(value);
2200
2439
  formControl?.touch();
@@ -2209,8 +2448,8 @@ function rangeFormatTemplate({ maxDate, minDate }) {
2209
2448
  return `${minFormat} - ${maxFormat}`;
2210
2449
  }
2211
2450
 
2212
- function RlsPickerDateRange({ automatic, date: _picker, disabled, formControl, maxDate, minDate, onListener, rlsTheme }) {
2213
- const _date = require$$0.useMemo(() => dates.normalizeMinTime(_picker ?? new Date()), [_picker]);
2451
+ function RlsPickerDateRange({ automatic, date: datePicker, disabled, formControl, maxDate, minDate, onListener, rlsTheme }) {
2452
+ const _date = require$$0.useMemo(() => dates.normalizeMinTime(datePicker ?? new Date()), [datePicker]);
2214
2453
  const _range = require$$0.useMemo(() => formControl?.value ?? dates.DateRange.now(), [formControl?.value]);
2215
2454
  const yearControl = reactForms.useReactControl(_date.getFullYear());
2216
2455
  const monthControl = reactForms.useReactControl(_date.getMonth());
@@ -3045,6 +3284,7 @@ exports.RlsDatatableTitle = RlsDatatableTitle;
3045
3284
  exports.RlsDatatableTotals = RlsDatatableTotals;
3046
3285
  exports.RlsFieldAutocomplete = RlsFieldAutocomplete;
3047
3286
  exports.RlsFieldAutocompleteTemplate = RlsFieldAutocompleteTemplate;
3287
+ exports.RlsFieldClock = RlsFieldClock;
3048
3288
  exports.RlsFieldDate = RlsFieldDate;
3049
3289
  exports.RlsFieldDateRange = RlsFieldDateRange;
3050
3290
  exports.RlsFieldDecimal = RlsFieldDecimal;
@@ -3079,6 +3319,7 @@ exports.RlsModal = RlsModal;
3079
3319
  exports.RlsModalSheet = RlsModalSheet;
3080
3320
  exports.RlsNavbar = RlsNavbar;
3081
3321
  exports.RlsPagination = RlsPagination;
3322
+ exports.RlsPickerClock = RlsPickerClock;
3082
3323
  exports.RlsPickerDate = RlsPickerDate;
3083
3324
  exports.RlsPickerDateRange = RlsPickerDateRange;
3084
3325
  exports.RlsPickerDay = RlsPickerDay;