@moving-walls/design-system 1.0.24 → 2.0.1
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/components/ui/DateRangePicker.d.ts +6 -2
- package/dist/index.esm.js +102 -42
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +102 -42
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +144 -144
package/dist/index.js
CHANGED
|
@@ -36496,8 +36496,9 @@ function DateRangePicker(_ref3) {
|
|
|
36496
36496
|
var _ref3$clearable = _ref3.clearable,
|
|
36497
36497
|
clearable = _ref3$clearable === void 0 ? true : _ref3$clearable,
|
|
36498
36498
|
minDate = _ref3.minDate,
|
|
36499
|
-
maxDate = _ref3.maxDate
|
|
36500
|
-
_ref3
|
|
36499
|
+
maxDate = _ref3.maxDate;
|
|
36500
|
+
_ref3.selectsRange;
|
|
36501
|
+
var _ref3$numberOfMonths = _ref3.numberOfMonths,
|
|
36501
36502
|
numberOfMonths = _ref3$numberOfMonths === void 0 ? 1 : _ref3$numberOfMonths,
|
|
36502
36503
|
className = _ref3.className,
|
|
36503
36504
|
_ref3$format = _ref3.format,
|
|
@@ -36505,7 +36506,15 @@ function DateRangePicker(_ref3) {
|
|
|
36505
36506
|
_ref3$presets = _ref3.presets,
|
|
36506
36507
|
presets = _ref3$presets === void 0 ? defaultPresets$1 : _ref3$presets,
|
|
36507
36508
|
_ref3$align = _ref3.align,
|
|
36508
|
-
align = _ref3$align === void 0 ? 'left' : _ref3$align
|
|
36509
|
+
align = _ref3$align === void 0 ? 'left' : _ref3$align,
|
|
36510
|
+
_ref3$enableApplyButt = _ref3.enableApplyButton,
|
|
36511
|
+
enableApplyButton = _ref3$enableApplyButt === void 0 ? false : _ref3$enableApplyButt,
|
|
36512
|
+
_ref3$applyButtonText = _ref3.applyButtonText,
|
|
36513
|
+
applyButtonText = _ref3$applyButtonText === void 0 ? 'Apply' : _ref3$applyButtonText,
|
|
36514
|
+
_ref3$enableCancelBut = _ref3.enableCancelButton,
|
|
36515
|
+
enableCancelButton = _ref3$enableCancelBut === void 0 ? true : _ref3$enableCancelBut,
|
|
36516
|
+
_ref3$cancelButtonTex = _ref3.cancelButtonText,
|
|
36517
|
+
cancelButtonText = _ref3$cancelButtonTex === void 0 ? 'Cancel' : _ref3$cancelButtonTex;
|
|
36509
36518
|
var _useState = React.useState(false),
|
|
36510
36519
|
_useState2 = _slicedToArray(_useState, 2),
|
|
36511
36520
|
isOpen = _useState2[0],
|
|
@@ -36517,71 +36526,111 @@ function DateRangePicker(_ref3) {
|
|
|
36517
36526
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
36518
36527
|
selectedRange = _useState4[0],
|
|
36519
36528
|
setSelectedRange = _useState4[1];
|
|
36520
|
-
var _useState5 = React.useState(
|
|
36529
|
+
var _useState5 = React.useState(value || {
|
|
36530
|
+
from: null,
|
|
36531
|
+
to: null
|
|
36532
|
+
}),
|
|
36521
36533
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
36522
|
-
|
|
36523
|
-
|
|
36524
|
-
var _useState7 = React.useState(
|
|
36534
|
+
pendingRange = _useState6[0],
|
|
36535
|
+
setPendingRange = _useState6[1];
|
|
36536
|
+
var _useState7 = React.useState(new Date()),
|
|
36525
36537
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
36526
|
-
|
|
36527
|
-
|
|
36538
|
+
currentMonth = _useState8[0],
|
|
36539
|
+
setCurrentMonth = _useState8[1];
|
|
36540
|
+
var _useState9 = React.useState(true),
|
|
36541
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
36542
|
+
selectingStart = _useState0[0],
|
|
36543
|
+
setSelectingStart = _useState0[1];
|
|
36528
36544
|
var containerRef = React.useRef(null);
|
|
36529
36545
|
React.useEffect(function () {
|
|
36530
36546
|
if (value) {
|
|
36531
36547
|
setSelectedRange(value);
|
|
36548
|
+
setPendingRange(value);
|
|
36532
36549
|
}
|
|
36533
36550
|
}, [value]);
|
|
36534
36551
|
React.useEffect(function () {
|
|
36535
36552
|
function handleClickOutside(event) {
|
|
36536
36553
|
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
36537
36554
|
setIsOpen(false);
|
|
36555
|
+
// Reset pending to selected when closing without apply
|
|
36556
|
+
setPendingRange(selectedRange);
|
|
36538
36557
|
}
|
|
36539
36558
|
}
|
|
36540
36559
|
document.addEventListener('mousedown', handleClickOutside);
|
|
36541
36560
|
return function () {
|
|
36542
36561
|
return document.removeEventListener('mousedown', handleClickOutside);
|
|
36543
36562
|
};
|
|
36544
|
-
}, []);
|
|
36563
|
+
}, [selectedRange]);
|
|
36545
36564
|
var handleDateSelect = function handleDateSelect(date) {
|
|
36546
36565
|
var newRange;
|
|
36547
|
-
if (selectingStart || !
|
|
36566
|
+
if (selectingStart || !pendingRange.from) {
|
|
36548
36567
|
newRange = {
|
|
36549
36568
|
from: date,
|
|
36550
36569
|
to: null
|
|
36551
36570
|
};
|
|
36552
36571
|
setSelectingStart(false);
|
|
36553
36572
|
} else {
|
|
36554
|
-
if (date <
|
|
36573
|
+
if (date < pendingRange.from) {
|
|
36555
36574
|
newRange = {
|
|
36556
36575
|
from: date,
|
|
36557
|
-
to:
|
|
36576
|
+
to: null
|
|
36558
36577
|
};
|
|
36559
|
-
} else {
|
|
36578
|
+
} else if (date > pendingRange.from) {
|
|
36560
36579
|
newRange = {
|
|
36561
|
-
from:
|
|
36580
|
+
from: pendingRange.from,
|
|
36562
36581
|
to: date
|
|
36563
36582
|
};
|
|
36583
|
+
setSelectingStart(true);
|
|
36584
|
+
} else {
|
|
36585
|
+
newRange = {
|
|
36586
|
+
from: date,
|
|
36587
|
+
to: null
|
|
36588
|
+
};
|
|
36564
36589
|
}
|
|
36565
|
-
setSelectingStart(true);
|
|
36566
36590
|
}
|
|
36567
|
-
|
|
36568
|
-
|
|
36569
|
-
|
|
36591
|
+
// Update pending range, don't call onChange yet
|
|
36592
|
+
setPendingRange(newRange);
|
|
36593
|
+
// Without Apply button, fire onChange immediately when full range selected
|
|
36594
|
+
if (!enableApplyButton && newRange.from && newRange.to) {
|
|
36595
|
+
setSelectedRange(newRange);
|
|
36596
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(newRange);
|
|
36570
36597
|
setIsOpen(false);
|
|
36571
36598
|
}
|
|
36572
36599
|
};
|
|
36573
|
-
var
|
|
36574
|
-
|
|
36575
|
-
|
|
36600
|
+
var handleApply = function handleApply() {
|
|
36601
|
+
// Apply pending range and call onChange
|
|
36602
|
+
setSelectedRange(pendingRange);
|
|
36603
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(pendingRange);
|
|
36576
36604
|
setIsOpen(false);
|
|
36577
36605
|
};
|
|
36606
|
+
var handleCancel = function handleCancel() {
|
|
36607
|
+
// Cancel: restore original selection, don't call onChange
|
|
36608
|
+
setPendingRange(selectedRange);
|
|
36609
|
+
setIsOpen(false);
|
|
36610
|
+
};
|
|
36611
|
+
var handlePresetSelect = function handlePresetSelect(preset) {
|
|
36612
|
+
setPendingRange(preset.range);
|
|
36613
|
+
// Navigate calendar to show the start month of the preset range
|
|
36614
|
+
if (preset.range.from) {
|
|
36615
|
+
setCurrentMonth(new Date(preset.range.from.getFullYear(), preset.range.from.getMonth(), 1));
|
|
36616
|
+
}
|
|
36617
|
+
setSelectingStart(true);
|
|
36618
|
+
// If Apply button is enabled, keep calendar open so user can confirm
|
|
36619
|
+
if (!enableApplyButton) {
|
|
36620
|
+
setSelectedRange(preset.range);
|
|
36621
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(preset.range);
|
|
36622
|
+
setIsOpen(false);
|
|
36623
|
+
}
|
|
36624
|
+
};
|
|
36578
36625
|
var handleClear = function handleClear() {
|
|
36579
36626
|
var clearedRange = {
|
|
36580
36627
|
from: null,
|
|
36581
36628
|
to: null
|
|
36582
36629
|
};
|
|
36583
36630
|
setSelectedRange(clearedRange);
|
|
36631
|
+
setPendingRange(clearedRange);
|
|
36584
36632
|
onChange === null || onChange === void 0 ? void 0 : onChange(clearedRange);
|
|
36633
|
+
setIsOpen(false);
|
|
36585
36634
|
};
|
|
36586
36635
|
var formatDisplayValue = function formatDisplayValue() {
|
|
36587
36636
|
if (!selectedRange.from && !selectedRange.to) return placeholder;
|
|
@@ -36597,19 +36646,31 @@ function DateRangePicker(_ref3) {
|
|
|
36597
36646
|
return require$$1.jsxs("div", {
|
|
36598
36647
|
ref: containerRef,
|
|
36599
36648
|
className: cn$p('relative', className),
|
|
36600
|
-
children: [require$$1.jsxs("
|
|
36601
|
-
|
|
36649
|
+
children: [require$$1.jsxs("div", {
|
|
36650
|
+
role: "button",
|
|
36651
|
+
tabIndex: disabled ? -1 : 0,
|
|
36602
36652
|
onClick: function onClick() {
|
|
36603
|
-
|
|
36653
|
+
if (!disabled) {
|
|
36654
|
+
if (!isOpen) setPendingRange(selectedRange);
|
|
36655
|
+
setIsOpen(!isOpen);
|
|
36656
|
+
setSelectingStart(true);
|
|
36657
|
+
}
|
|
36604
36658
|
},
|
|
36605
|
-
|
|
36606
|
-
|
|
36659
|
+
onKeyDown: function onKeyDown(e) {
|
|
36660
|
+
if (!disabled && (e.key === 'Enter' || e.key === ' ')) {
|
|
36661
|
+
if (!isOpen) setPendingRange(selectedRange);
|
|
36662
|
+
setIsOpen(!isOpen);
|
|
36663
|
+
setSelectingStart(true);
|
|
36664
|
+
}
|
|
36665
|
+
},
|
|
36666
|
+
className: cn$p('w-full flex items-center justify-between px-3 py-2 text-left cursor-pointer', 'border border-mw-neutral-200 dark:border-mw-neutral-600 rounded-md', 'bg-white dark:bg-mw-neutral-800', 'text-mw-neutral-800 dark:text-white', 'hover:border-mw-neutral-300 dark:hover:border-mw-neutral-500', 'focus:outline-none focus:ring-2 focus:ring-mw-primary-500 focus:border-transparent', disabled && 'opacity-50 cursor-not-allowed pointer-events-none', !selectedRange.from && !selectedRange.to && 'text-mw-neutral-500 dark:text-mw-neutral-400'),
|
|
36607
36667
|
children: [require$$1.jsx("span", {
|
|
36608
36668
|
className: "truncate",
|
|
36609
36669
|
children: formatDisplayValue()
|
|
36610
36670
|
}), require$$1.jsxs("div", {
|
|
36611
36671
|
className: "flex items-center gap-1 ml-2",
|
|
36612
36672
|
children: [clearable && (selectedRange.from || selectedRange.to) && require$$1.jsx("button", {
|
|
36673
|
+
type: "button",
|
|
36613
36674
|
onClick: function onClick(e) {
|
|
36614
36675
|
e.stopPropagation();
|
|
36615
36676
|
handleClear();
|
|
@@ -36635,6 +36696,7 @@ function DateRangePicker(_ref3) {
|
|
|
36635
36696
|
className: "space-y-0.5",
|
|
36636
36697
|
children: presets.map(function (preset, index) {
|
|
36637
36698
|
return require$$1.jsx("button", {
|
|
36699
|
+
type: "button",
|
|
36638
36700
|
onClick: function onClick() {
|
|
36639
36701
|
return handlePresetSelect(preset);
|
|
36640
36702
|
},
|
|
@@ -36647,7 +36709,7 @@ function DateRangePicker(_ref3) {
|
|
|
36647
36709
|
className: "flex",
|
|
36648
36710
|
children: [require$$1.jsx(CalendarMonth, {
|
|
36649
36711
|
currentMonth: currentMonth,
|
|
36650
|
-
selectedRange:
|
|
36712
|
+
selectedRange: pendingRange,
|
|
36651
36713
|
onDateSelect: handleDateSelect,
|
|
36652
36714
|
onMonthChange: setCurrentMonth,
|
|
36653
36715
|
minDate: minDate,
|
|
@@ -36655,7 +36717,7 @@ function DateRangePicker(_ref3) {
|
|
|
36655
36717
|
selectingStart: selectingStart
|
|
36656
36718
|
}), numberOfMonths === 2 && require$$1.jsx(CalendarMonth, {
|
|
36657
36719
|
currentMonth: new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1),
|
|
36658
|
-
selectedRange:
|
|
36720
|
+
selectedRange: pendingRange,
|
|
36659
36721
|
onDateSelect: handleDateSelect,
|
|
36660
36722
|
onMonthChange: function onMonthChange(month) {
|
|
36661
36723
|
var prevMonth = new Date(month);
|
|
@@ -36674,19 +36736,17 @@ function DateRangePicker(_ref3) {
|
|
|
36674
36736
|
children: selectingStart ? 'Select start date' : 'Select end date'
|
|
36675
36737
|
}), require$$1.jsxs("div", {
|
|
36676
36738
|
className: "flex gap-2 items-center",
|
|
36677
|
-
children: [require$$1.jsx("button", {
|
|
36678
|
-
|
|
36679
|
-
|
|
36680
|
-
|
|
36681
|
-
|
|
36682
|
-
|
|
36683
|
-
|
|
36684
|
-
onClick:
|
|
36685
|
-
|
|
36686
|
-
|
|
36687
|
-
|
|
36688
|
-
className: "px-3 py-1 text-xs bg-mw-primary-500 text-white rounded hover:bg-mw-primary-600 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
36689
|
-
children: "Apply"
|
|
36739
|
+
children: [enableCancelButton && require$$1.jsx("button", {
|
|
36740
|
+
type: "button",
|
|
36741
|
+
onClick: handleCancel,
|
|
36742
|
+
className: "px-3 py-1.5 text-xs text-mw-neutral-600 dark:text-mw-neutral-400 hover:text-mw-neutral-900 dark:hover:text-white border border-mw-neutral-200 dark:border-mw-neutral-600 rounded",
|
|
36743
|
+
children: cancelButtonText
|
|
36744
|
+
}), enableApplyButton && require$$1.jsx("button", {
|
|
36745
|
+
type: "button",
|
|
36746
|
+
onClick: handleApply,
|
|
36747
|
+
disabled: !pendingRange.from || !pendingRange.to,
|
|
36748
|
+
className: "px-3 py-1.5 text-xs bg-mw-primary-500 text-white rounded hover:bg-mw-primary-600 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
36749
|
+
children: applyButtonText
|
|
36690
36750
|
})]
|
|
36691
36751
|
})]
|
|
36692
36752
|
})]
|