@rolster/react-components 18.12.4 → 18.12.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/assets/{index-XotqmUMW.css → index-r16o2aIF.css} +21 -8
- package/dist/cjs/index.js +52 -26
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/assets/{index-XotqmUMW.css → index-r16o2aIF.css} +21 -8
- package/dist/es/index.js +53 -27
- package/dist/es/index.js.map +1 -1
- package/dist/esm/components/definitions.d.ts +1 -1
- package/dist/esm/components/molecules/DayRangePicker/DayRangePicker.css +17 -3
- package/dist/esm/components/molecules/DayRangePicker/DayRangePicker.js +14 -7
- package/dist/esm/components/molecules/DayRangePicker/DayRangePicker.js.map +1 -1
- package/dist/esm/components/organisms/DateField/DateField.js +1 -1
- package/dist/esm/components/organisms/DateField/DateField.js.map +1 -1
- package/dist/esm/components/organisms/DatePicker/DatePicker.js +3 -3
- package/dist/esm/components/organisms/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/organisms/DateRangeField/DateRangeField.js +1 -1
- package/dist/esm/components/organisms/DateRangeField/DateRangeField.js.map +1 -1
- package/dist/esm/components/organisms/DateRangePicker/DateRangePicker.css +4 -5
- package/dist/esm/components/organisms/DateRangePicker/DateRangePicker.js +3 -3
- package/dist/esm/components/organisms/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/esm/helpers/date-range-picker.d.ts +2 -0
- package/dist/esm/helpers/date-range-picker.js +18 -13
- package/dist/esm/helpers/date-range-picker.js.map +1 -1
- package/dist/esm/models.d.ts +3 -2
- package/package.json +5 -5
|
@@ -1066,15 +1066,25 @@
|
|
|
1066
1066
|
--pvt-span-nothover-font-color: inherit;
|
|
1067
1067
|
--pvt-span-background: transparent;
|
|
1068
1068
|
position: relative;
|
|
1069
|
-
|
|
1069
|
+
display: flex;
|
|
1070
1070
|
width: 100%;
|
|
1071
1071
|
max-width: 140rem;
|
|
1072
|
+
flex-direction: column;
|
|
1073
|
+
row-gap: var(--sizing-x4);
|
|
1072
1074
|
box-sizing: border-box;
|
|
1073
1075
|
user-select: none;
|
|
1074
1076
|
}
|
|
1077
|
+
.rls-day-range-picker__title {
|
|
1078
|
+
color: var(--color-rolster-500);
|
|
1079
|
+
text-align: center;
|
|
1080
|
+
padding: var(--sizing-x4) 0rem;
|
|
1081
|
+
font-size: var(--subtitle-font-size);
|
|
1082
|
+
letter-spacing: var(--subtitle-letter-spacing);
|
|
1083
|
+
line-height: var(--subtitle-line-height);
|
|
1084
|
+
font-weight: var(--font-weight-bold);
|
|
1085
|
+
}
|
|
1075
1086
|
.rls-day-range-picker__header {
|
|
1076
1087
|
display: flex;
|
|
1077
|
-
margin-bottom: var(--sizing-x4);
|
|
1078
1088
|
background: var(--background-theme-100);
|
|
1079
1089
|
color: var(--color-theme-500);
|
|
1080
1090
|
border-radius: var(--sizing-x2);
|
|
@@ -1113,7 +1123,11 @@
|
|
|
1113
1123
|
color: var(--color-light-500);
|
|
1114
1124
|
background: var(--color-rolster-900);
|
|
1115
1125
|
}
|
|
1116
|
-
.rls-day-range-picker__day--
|
|
1126
|
+
.rls-day-range-picker__day--end {
|
|
1127
|
+
--pvt-span-nothover-background: var(--color-theme-500);
|
|
1128
|
+
--pvt-span-nothover-font-color: var(--background-theme-500);
|
|
1129
|
+
}
|
|
1130
|
+
.rls-day-range-picker__day--source {
|
|
1117
1131
|
--pvt-span-nothover-background: var(--color-rolster-500);
|
|
1118
1132
|
--pvt-span-nothover-font-color: var(--color-light-500);
|
|
1119
1133
|
}
|
|
@@ -1924,6 +1938,7 @@
|
|
|
1924
1938
|
position: relative;
|
|
1925
1939
|
display: flex;
|
|
1926
1940
|
flex-direction: column;
|
|
1941
|
+
row-gap: var(--sizing-x4);
|
|
1927
1942
|
overflow: hidden;
|
|
1928
1943
|
max-width: 150rem;
|
|
1929
1944
|
}
|
|
@@ -1931,7 +1946,6 @@
|
|
|
1931
1946
|
background: var(--color-rolster-100);
|
|
1932
1947
|
padding: var(--sizing-x4);
|
|
1933
1948
|
box-sizing: border-box;
|
|
1934
|
-
margin-bottom: var(--sizing-x8);
|
|
1935
1949
|
}
|
|
1936
1950
|
.rls-date-range-picker__title {
|
|
1937
1951
|
color: var(--color-theme-500);
|
|
@@ -1967,17 +1981,16 @@
|
|
|
1967
1981
|
}
|
|
1968
1982
|
.rls-date-range-picker__component {
|
|
1969
1983
|
display: flex;
|
|
1984
|
+
justify-content: center;
|
|
1970
1985
|
width: 150rem;
|
|
1971
1986
|
padding: 0rem var(--sizing-x2);
|
|
1972
1987
|
box-sizing: border-box;
|
|
1973
|
-
margin-bottom: var(--sizing-x4);
|
|
1974
1988
|
}
|
|
1975
1989
|
.rls-date-range-picker__component > * {
|
|
1976
|
-
margin: 0rem auto;
|
|
1977
1990
|
display: none;
|
|
1978
1991
|
}
|
|
1979
1992
|
.rls-date-range-picker__component--day .rls-day-range-picker {
|
|
1980
|
-
display:
|
|
1993
|
+
display: flex;
|
|
1981
1994
|
}
|
|
1982
1995
|
.rls-date-range-picker__component--month .rls-month-picker {
|
|
1983
1996
|
display: grid;
|
|
@@ -1992,7 +2005,7 @@
|
|
|
1992
2005
|
display: flex;
|
|
1993
2006
|
flex-wrap: wrap;
|
|
1994
2007
|
gap: var(--sizing-x4);
|
|
1995
|
-
padding:
|
|
2008
|
+
padding: 0rem var(--sizing-x8) var(--sizing-x6) var(--sizing-x8);
|
|
1996
2009
|
overflow: hidden;
|
|
1997
2010
|
box-sizing: border-box;
|
|
1998
2011
|
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -384,12 +384,13 @@ function RlsDayPicker({ date, disabled: disabledPicker, formControl, maxDate, mi
|
|
|
384
384
|
}, children: jsxRuntime.jsx("span", { className: "rls-day-picker__day__span", children: value || '??' }) }, index))) }, index))) })] }));
|
|
385
385
|
}
|
|
386
386
|
|
|
387
|
-
const
|
|
387
|
+
const DATE_RANGE_FORMAT = '{dd}/{mx}/{aa}';
|
|
388
388
|
class DateRangePickerFactory {
|
|
389
389
|
constructor(props) {
|
|
390
|
-
const { date, range, maxDate, minDate } = props;
|
|
390
|
+
const { date, range, sourceDate, maxDate, minDate } = props;
|
|
391
391
|
this.date = new Date(date.getTime());
|
|
392
392
|
this.range = range;
|
|
393
|
+
this.sourceDate = sourceDate;
|
|
393
394
|
this.maxDate = maxDate;
|
|
394
395
|
this.minDate = minDate;
|
|
395
396
|
this.date.setDate(1);
|
|
@@ -442,16 +443,10 @@ class DateRangePickerFactory {
|
|
|
442
443
|
}
|
|
443
444
|
return daysPending;
|
|
444
445
|
}
|
|
445
|
-
|
|
446
|
-
return
|
|
447
|
-
value: day,
|
|
448
|
-
disabled: this.overflowDay(day || 0),
|
|
449
|
-
forbidden: !day,
|
|
450
|
-
ranged: day ? this.isRangedFromDate(day) : false,
|
|
451
|
-
selected: day ? this.isSelected(day) : false
|
|
452
|
-
};
|
|
446
|
+
isSelectedSource(day) {
|
|
447
|
+
return this.isSelectedForDate(this.sourceDate, day);
|
|
453
448
|
}
|
|
454
|
-
|
|
449
|
+
isSelectedEnd(day) {
|
|
455
450
|
return (this.isSelectedForDate(this.range.minDate, day) ||
|
|
456
451
|
this.isSelectedForDate(this.range.maxDate, day));
|
|
457
452
|
}
|
|
@@ -476,10 +471,20 @@ class DateRangePickerFactory {
|
|
|
476
471
|
? helpersDate.weight(helpersDate.assignDay(this.date, day)) > helpersDate.weight(this.maxDate)
|
|
477
472
|
: false;
|
|
478
473
|
}
|
|
474
|
+
createDayRangeState(day) {
|
|
475
|
+
return {
|
|
476
|
+
value: day,
|
|
477
|
+
disabled: this.overflowDay(day || 0),
|
|
478
|
+
forbidden: !day,
|
|
479
|
+
ranged: day ? this.isRangedFromDate(day) : false,
|
|
480
|
+
end: day ? this.isSelectedEnd(day) : false,
|
|
481
|
+
source: day ? this.isSelectedSource(day) : false
|
|
482
|
+
};
|
|
483
|
+
}
|
|
479
484
|
}
|
|
480
485
|
function formatRange(range) {
|
|
481
|
-
const minFormat = helpersDate.formatDate(range.minDate,
|
|
482
|
-
const maxFormat = helpersDate.formatDate(range.maxDate,
|
|
486
|
+
const minFormat = helpersDate.formatDate(range.minDate, DATE_RANGE_FORMAT);
|
|
487
|
+
const maxFormat = helpersDate.formatDate(range.maxDate, DATE_RANGE_FORMAT);
|
|
483
488
|
return `${minFormat} - ${maxFormat}`;
|
|
484
489
|
}
|
|
485
490
|
function createRangePicker(props) {
|
|
@@ -489,26 +494,33 @@ function createRangePicker(props) {
|
|
|
489
494
|
function RlsDayRangePicker({ date, disabled: disabledPicker, formControl, maxDate, minDate, rlsTheme }) {
|
|
490
495
|
const initialRange = formControl?.state || helpersDate.DateRange.now();
|
|
491
496
|
const initialDate = helpersDate.normalizeMinTime(date || initialRange.minDate);
|
|
497
|
+
const sourceDate = react.useRef(initialRange.minDate);
|
|
492
498
|
const [weeks, setWeeks] = react.useState([]);
|
|
493
499
|
const [range, setRange] = react.useState(initialRange);
|
|
494
500
|
react.useEffect(() => {
|
|
495
501
|
setWeeks(createRangePicker({
|
|
496
502
|
date: initialDate,
|
|
497
503
|
range,
|
|
504
|
+
sourceDate: sourceDate.current,
|
|
498
505
|
minDate,
|
|
499
506
|
maxDate
|
|
500
507
|
}));
|
|
501
508
|
}, [range, date, minDate, maxDate]);
|
|
502
509
|
function onChange(value) {
|
|
503
|
-
const
|
|
510
|
+
const newDate = helpersDate.assignDay(initialDate, value);
|
|
511
|
+
const newRange = helpersDate.before(newDate, sourceDate.current)
|
|
512
|
+
? new helpersDate.DateRange(sourceDate.current, newDate)
|
|
513
|
+
: new helpersDate.DateRange(newDate, sourceDate.current);
|
|
514
|
+
sourceDate.current = newDate;
|
|
504
515
|
setRange(newRange);
|
|
505
516
|
formControl?.setState(newRange);
|
|
506
517
|
}
|
|
507
|
-
return (jsxRuntime.jsxs("div", { className: "rls-day-range-picker", "rls-theme": rlsTheme, children: [jsxRuntime.jsx("div", { className: "rls-day-range-picker__header", children: helpersDate.DAY_LABELS().map((title, index) => (jsxRuntime.jsx("label", { className: "rls-day-range-picker__label", children: title }, index))) }), jsxRuntime.jsx("div", { className: "rls-day-range-picker__component", children: weeks.map(({ days }, index) => (jsxRuntime.jsx("div", { className: "rls-day-range-picker__week", children: days.map(({
|
|
518
|
+
return (jsxRuntime.jsxs("div", { className: "rls-day-range-picker", "rls-theme": rlsTheme, children: [jsxRuntime.jsx("div", { className: "rls-day-range-picker__title", children: helpersDate.formatDate(sourceDate.current, DATE_RANGE_FORMAT) }), jsxRuntime.jsx("div", { className: "rls-day-range-picker__header", children: helpersDate.DAY_LABELS().map((title, index) => (jsxRuntime.jsx("label", { className: "rls-day-range-picker__label", children: title }, index))) }), jsxRuntime.jsx("div", { className: "rls-day-range-picker__component", children: weeks.map(({ days }, index) => (jsxRuntime.jsx("div", { className: "rls-day-range-picker__week", children: days.map(({ disabled, end, forbidden, source, ranged, value }, index) => (jsxRuntime.jsx("div", { className: renderClassStatus('rls-day-range-picker__day', {
|
|
508
519
|
disabled: disabled || disabledPicker,
|
|
520
|
+
end,
|
|
509
521
|
forbidden,
|
|
510
|
-
|
|
511
|
-
|
|
522
|
+
ranged,
|
|
523
|
+
source
|
|
512
524
|
}), onClick: () => {
|
|
513
525
|
if (value && !disabled) {
|
|
514
526
|
onChange(value);
|
|
@@ -1540,7 +1552,21 @@ const controlIsValid = (props) => {
|
|
|
1540
1552
|
}, []);
|
|
1541
1553
|
};
|
|
1542
1554
|
|
|
1543
|
-
function
|
|
1555
|
+
function instanceOfReactControlProps(props) {
|
|
1556
|
+
return (typeof props === 'object' && ('state' in props || 'validators' in props));
|
|
1557
|
+
}
|
|
1558
|
+
function getReactControlProps(props, validators) {
|
|
1559
|
+
if (props === undefined || props === null) {
|
|
1560
|
+
return { state: undefined, validators: undefined };
|
|
1561
|
+
}
|
|
1562
|
+
if (instanceOfReactControlProps(props)) {
|
|
1563
|
+
return props;
|
|
1564
|
+
}
|
|
1565
|
+
const state = props;
|
|
1566
|
+
return { state, validators };
|
|
1567
|
+
}
|
|
1568
|
+
function useReactControl(reactProps, validatorsFn) {
|
|
1569
|
+
const props = getReactControlProps(reactProps, validatorsFn);
|
|
1544
1570
|
const [state, setCurrentState] = react.useState(props.state);
|
|
1545
1571
|
const [value, setValue] = react.useState(props.state);
|
|
1546
1572
|
const [touched, setTouched] = react.useState(props.touched || false);
|
|
@@ -1654,9 +1680,9 @@ const VISIBILITY$1 = {
|
|
|
1654
1680
|
};
|
|
1655
1681
|
function RlsDatePicker({ automatic, date, formControl, disabled, maxDate, minDate, rlsTheme, onListener }) {
|
|
1656
1682
|
const dateInitial = formControl?.state || date || new Date();
|
|
1657
|
-
const yearControl = useReactControl(
|
|
1658
|
-
const dayControl = useReactControl(
|
|
1659
|
-
const monthControl = useReactControl(
|
|
1683
|
+
const yearControl = useReactControl(dateInitial.getFullYear());
|
|
1684
|
+
const dayControl = useReactControl(dateInitial.getDate());
|
|
1685
|
+
const monthControl = useReactControl(dateInitial.getMonth());
|
|
1660
1686
|
const [value, setValue] = react.useState(dateInitial);
|
|
1661
1687
|
const [{ day, month, year }, setVisibility] = react.useState(VISIBILITY$1.DAY);
|
|
1662
1688
|
const title = helpersDate.formatDate(value, FORMAT_DESCRIPTION);
|
|
@@ -1754,7 +1780,7 @@ function RlsDateField({ children, date, disabled, formControl, maxDate, minDate,
|
|
|
1754
1780
|
setShow(true);
|
|
1755
1781
|
}
|
|
1756
1782
|
}
|
|
1757
|
-
return (jsxRuntime.jsxs("div", { className: "rls-date-field", "rls-theme": rlsTheme, children: [jsxRuntime.jsxs("div", { className: renderClassStatus('rls-box-field', { disabled }), children: [children && jsxRuntime.jsx("label", { className: "rls-box-field__label", children: children }), jsxRuntime.jsx("div", { className: "rls-box-field__component", children: jsxRuntime.jsxs("div", { className: "rls-box-field__body", children: [jsxRuntime.jsx("input", { className: "rls-date-field__control", type: "text", value: description, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: disabled }), jsxRuntime.jsx("button", { className: "rls-date-field__action", onClick: onClean, disabled: disabled, children: jsxRuntime.jsx(RlsIcon, { value: value ? 'trash-2' : 'calendar' }) })] }) }), formControl?.touched && formControl?.error && (jsxRuntime.jsx("div", { className: "rls-box-field__error", children: jsxRuntime.jsx(RlsMessageIcon, { icon: "alert-triangle", rlsTheme: "danger", children: formControl.error.message }) }))] }), jsxRuntime.jsx(RlsModal, { visible: show, children: jsxRuntime.jsx(RlsDatePicker, { formControl: formControl, date: date, disabled: disabled, maxDate: maxDate, minDate: minDate, onListener: ({ value, type }) => {
|
|
1783
|
+
return (jsxRuntime.jsxs("div", { className: "rls-date-field", "rls-theme": rlsTheme, children: [jsxRuntime.jsxs("div", { className: renderClassStatus('rls-box-field', { disabled }), children: [children && jsxRuntime.jsx("label", { className: "rls-box-field__label", children: children }), jsxRuntime.jsx("div", { className: "rls-box-field__component", children: jsxRuntime.jsxs("div", { className: "rls-box-field__body", children: [jsxRuntime.jsx("input", { className: "rls-date-field__control", type: "text", value: description, readOnly: true, placeholder: placeholder, onClick: onClickInput, disabled: disabled }), jsxRuntime.jsx("button", { className: "rls-date-field__action", onClick: onClean, disabled: disabled, children: jsxRuntime.jsx(RlsIcon, { value: value ? 'trash-2' : 'calendar' }) })] }) }), formControl?.touched && formControl?.error && (jsxRuntime.jsx("div", { className: "rls-box-field__error", children: jsxRuntime.jsx(RlsMessageIcon, { icon: "alert-triangle", rlsTheme: "danger", children: formControl.error.message }) }))] }), jsxRuntime.jsx(RlsModal, { visible: show, rlsTheme: rlsTheme, children: jsxRuntime.jsx(RlsDatePicker, { formControl: formControl, date: date, disabled: disabled, maxDate: maxDate, minDate: minDate, onListener: ({ value, type }) => {
|
|
1758
1784
|
if (type !== PickerListenerType.Cancel) {
|
|
1759
1785
|
onChange(value, true);
|
|
1760
1786
|
}
|
|
@@ -1787,9 +1813,9 @@ const VISIBILITY = {
|
|
|
1787
1813
|
function RlsDateRangePicker({ automatic, date: datePicker, disabled, formControl, maxDate, minDate, rlsTheme, onListener }) {
|
|
1788
1814
|
const dateInitial = helpersDate.normalizeMinTime(datePicker || new Date());
|
|
1789
1815
|
const rangeInitial = formControl?.state || helpersDate.DateRange.now();
|
|
1790
|
-
const yearControl = useReactControl(
|
|
1791
|
-
const monthControl = useReactControl(
|
|
1792
|
-
const dayControl = useReactControl(
|
|
1816
|
+
const yearControl = useReactControl(dateInitial.getFullYear());
|
|
1817
|
+
const monthControl = useReactControl(dateInitial.getMonth());
|
|
1818
|
+
const dayControl = useReactControl(rangeInitial);
|
|
1793
1819
|
const [value, setValue] = react.useState(rangeInitial);
|
|
1794
1820
|
const [date, setDate] = react.useState(dateInitial);
|
|
1795
1821
|
const [{ day, month, year }, setVisibility] = react.useState(VISIBILITY.DAY);
|
|
@@ -1864,7 +1890,7 @@ function RlsDateRangeField({ children, date: datePicker, disabled, formControl,
|
|
|
1864
1890
|
setShow(true);
|
|
1865
1891
|
}
|
|
1866
1892
|
}
|
|
1867
|
-
return (jsxRuntime.jsxs("div", { className: "rls-date-field", "rls-theme": rlsTheme, children: [jsxRuntime.jsxs("div", { className: "rls-box-field", children: [children && jsxRuntime.jsx("label", { className: "rls-box-field__label", children: children }), jsxRuntime.jsx("div", { className: "rls-box-field__component", children: jsxRuntime.jsxs("div", { className: "rls-box-field__body", children: [jsxRuntime.jsx("input", { className: "rls-date-field__control", type: "text", value: description, readOnly: true, placeholder: placeholder, onClick: onClickInput }), jsxRuntime.jsx("button", { className: "rls-date-field__action", onClick: onClickAction, children: jsxRuntime.jsx(RlsIcon, { value: value ? 'trash-2' : 'calendar' }) })] }) })] }), jsxRuntime.jsx(RlsModal, { visible: show, children: jsxRuntime.jsx(RlsDateRangePicker, { formControl: formControl, date: date, disabled: disabled, maxDate: maxDate, minDate: minDate, onListener: ({ value }) => {
|
|
1893
|
+
return (jsxRuntime.jsxs("div", { className: "rls-date-field", "rls-theme": rlsTheme, children: [jsxRuntime.jsxs("div", { className: "rls-box-field", children: [children && jsxRuntime.jsx("label", { className: "rls-box-field__label", children: children }), jsxRuntime.jsx("div", { className: "rls-box-field__component", children: jsxRuntime.jsxs("div", { className: "rls-box-field__body", children: [jsxRuntime.jsx("input", { className: "rls-date-field__control", type: "text", value: description, readOnly: true, placeholder: placeholder, onClick: onClickInput }), jsxRuntime.jsx("button", { className: "rls-date-field__action", onClick: onClickAction, children: jsxRuntime.jsx(RlsIcon, { value: value ? 'trash-2' : 'calendar' }) })] }) })] }), jsxRuntime.jsx(RlsModal, { visible: show, rlsTheme: rlsTheme, children: jsxRuntime.jsx(RlsDateRangePicker, { formControl: formControl, date: date, disabled: disabled, maxDate: maxDate, minDate: minDate, onListener: ({ value }) => {
|
|
1868
1894
|
if (value) {
|
|
1869
1895
|
setValue(value);
|
|
1870
1896
|
}
|