@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
|
@@ -20,6 +20,10 @@ interface DateRangePickerProps {
|
|
|
20
20
|
range: DateRange;
|
|
21
21
|
}>;
|
|
22
22
|
align?: 'left' | 'right';
|
|
23
|
+
enableApplyButton?: boolean;
|
|
24
|
+
applyButtonText?: string;
|
|
25
|
+
enableCancelButton?: boolean;
|
|
26
|
+
cancelButtonText?: string;
|
|
23
27
|
}
|
|
24
|
-
export declare function DateRangePicker({ value, onChange, placeholder, disabled, required, clearable, minDate, maxDate, numberOfMonths, className, format, presets, align }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
-
export
|
|
28
|
+
export declare function DateRangePicker({ value, onChange, placeholder, disabled, required, clearable, minDate, maxDate, selectsRange, numberOfMonths, className, format, presets, align, enableApplyButton, applyButtonText, enableCancelButton, cancelButtonText }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export {};
|
package/dist/index.esm.js
CHANGED
|
@@ -36476,8 +36476,9 @@ function DateRangePicker(_ref3) {
|
|
|
36476
36476
|
var _ref3$clearable = _ref3.clearable,
|
|
36477
36477
|
clearable = _ref3$clearable === void 0 ? true : _ref3$clearable,
|
|
36478
36478
|
minDate = _ref3.minDate,
|
|
36479
|
-
maxDate = _ref3.maxDate
|
|
36480
|
-
_ref3
|
|
36479
|
+
maxDate = _ref3.maxDate;
|
|
36480
|
+
_ref3.selectsRange;
|
|
36481
|
+
var _ref3$numberOfMonths = _ref3.numberOfMonths,
|
|
36481
36482
|
numberOfMonths = _ref3$numberOfMonths === void 0 ? 1 : _ref3$numberOfMonths,
|
|
36482
36483
|
className = _ref3.className,
|
|
36483
36484
|
_ref3$format = _ref3.format,
|
|
@@ -36485,7 +36486,15 @@ function DateRangePicker(_ref3) {
|
|
|
36485
36486
|
_ref3$presets = _ref3.presets,
|
|
36486
36487
|
presets = _ref3$presets === void 0 ? defaultPresets$1 : _ref3$presets,
|
|
36487
36488
|
_ref3$align = _ref3.align,
|
|
36488
|
-
align = _ref3$align === void 0 ? 'left' : _ref3$align
|
|
36489
|
+
align = _ref3$align === void 0 ? 'left' : _ref3$align,
|
|
36490
|
+
_ref3$enableApplyButt = _ref3.enableApplyButton,
|
|
36491
|
+
enableApplyButton = _ref3$enableApplyButt === void 0 ? false : _ref3$enableApplyButt,
|
|
36492
|
+
_ref3$applyButtonText = _ref3.applyButtonText,
|
|
36493
|
+
applyButtonText = _ref3$applyButtonText === void 0 ? 'Apply' : _ref3$applyButtonText,
|
|
36494
|
+
_ref3$enableCancelBut = _ref3.enableCancelButton,
|
|
36495
|
+
enableCancelButton = _ref3$enableCancelBut === void 0 ? true : _ref3$enableCancelBut,
|
|
36496
|
+
_ref3$cancelButtonTex = _ref3.cancelButtonText,
|
|
36497
|
+
cancelButtonText = _ref3$cancelButtonTex === void 0 ? 'Cancel' : _ref3$cancelButtonTex;
|
|
36489
36498
|
var _useState = useState(false),
|
|
36490
36499
|
_useState2 = _slicedToArray(_useState, 2),
|
|
36491
36500
|
isOpen = _useState2[0],
|
|
@@ -36497,71 +36506,111 @@ function DateRangePicker(_ref3) {
|
|
|
36497
36506
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
36498
36507
|
selectedRange = _useState4[0],
|
|
36499
36508
|
setSelectedRange = _useState4[1];
|
|
36500
|
-
var _useState5 = useState(
|
|
36509
|
+
var _useState5 = useState(value || {
|
|
36510
|
+
from: null,
|
|
36511
|
+
to: null
|
|
36512
|
+
}),
|
|
36501
36513
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
36502
|
-
|
|
36503
|
-
|
|
36504
|
-
var _useState7 = useState(
|
|
36514
|
+
pendingRange = _useState6[0],
|
|
36515
|
+
setPendingRange = _useState6[1];
|
|
36516
|
+
var _useState7 = useState(new Date()),
|
|
36505
36517
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
36506
|
-
|
|
36507
|
-
|
|
36518
|
+
currentMonth = _useState8[0],
|
|
36519
|
+
setCurrentMonth = _useState8[1];
|
|
36520
|
+
var _useState9 = useState(true),
|
|
36521
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
36522
|
+
selectingStart = _useState0[0],
|
|
36523
|
+
setSelectingStart = _useState0[1];
|
|
36508
36524
|
var containerRef = useRef(null);
|
|
36509
36525
|
useEffect(function () {
|
|
36510
36526
|
if (value) {
|
|
36511
36527
|
setSelectedRange(value);
|
|
36528
|
+
setPendingRange(value);
|
|
36512
36529
|
}
|
|
36513
36530
|
}, [value]);
|
|
36514
36531
|
useEffect(function () {
|
|
36515
36532
|
function handleClickOutside(event) {
|
|
36516
36533
|
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
36517
36534
|
setIsOpen(false);
|
|
36535
|
+
// Reset pending to selected when closing without apply
|
|
36536
|
+
setPendingRange(selectedRange);
|
|
36518
36537
|
}
|
|
36519
36538
|
}
|
|
36520
36539
|
document.addEventListener('mousedown', handleClickOutside);
|
|
36521
36540
|
return function () {
|
|
36522
36541
|
return document.removeEventListener('mousedown', handleClickOutside);
|
|
36523
36542
|
};
|
|
36524
|
-
}, []);
|
|
36543
|
+
}, [selectedRange]);
|
|
36525
36544
|
var handleDateSelect = function handleDateSelect(date) {
|
|
36526
36545
|
var newRange;
|
|
36527
|
-
if (selectingStart || !
|
|
36546
|
+
if (selectingStart || !pendingRange.from) {
|
|
36528
36547
|
newRange = {
|
|
36529
36548
|
from: date,
|
|
36530
36549
|
to: null
|
|
36531
36550
|
};
|
|
36532
36551
|
setSelectingStart(false);
|
|
36533
36552
|
} else {
|
|
36534
|
-
if (date <
|
|
36553
|
+
if (date < pendingRange.from) {
|
|
36535
36554
|
newRange = {
|
|
36536
36555
|
from: date,
|
|
36537
|
-
to:
|
|
36556
|
+
to: null
|
|
36538
36557
|
};
|
|
36539
|
-
} else {
|
|
36558
|
+
} else if (date > pendingRange.from) {
|
|
36540
36559
|
newRange = {
|
|
36541
|
-
from:
|
|
36560
|
+
from: pendingRange.from,
|
|
36542
36561
|
to: date
|
|
36543
36562
|
};
|
|
36563
|
+
setSelectingStart(true);
|
|
36564
|
+
} else {
|
|
36565
|
+
newRange = {
|
|
36566
|
+
from: date,
|
|
36567
|
+
to: null
|
|
36568
|
+
};
|
|
36544
36569
|
}
|
|
36545
|
-
setSelectingStart(true);
|
|
36546
36570
|
}
|
|
36547
|
-
|
|
36548
|
-
|
|
36549
|
-
|
|
36571
|
+
// Update pending range, don't call onChange yet
|
|
36572
|
+
setPendingRange(newRange);
|
|
36573
|
+
// Without Apply button, fire onChange immediately when full range selected
|
|
36574
|
+
if (!enableApplyButton && newRange.from && newRange.to) {
|
|
36575
|
+
setSelectedRange(newRange);
|
|
36576
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(newRange);
|
|
36550
36577
|
setIsOpen(false);
|
|
36551
36578
|
}
|
|
36552
36579
|
};
|
|
36553
|
-
var
|
|
36554
|
-
|
|
36555
|
-
|
|
36580
|
+
var handleApply = function handleApply() {
|
|
36581
|
+
// Apply pending range and call onChange
|
|
36582
|
+
setSelectedRange(pendingRange);
|
|
36583
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(pendingRange);
|
|
36556
36584
|
setIsOpen(false);
|
|
36557
36585
|
};
|
|
36586
|
+
var handleCancel = function handleCancel() {
|
|
36587
|
+
// Cancel: restore original selection, don't call onChange
|
|
36588
|
+
setPendingRange(selectedRange);
|
|
36589
|
+
setIsOpen(false);
|
|
36590
|
+
};
|
|
36591
|
+
var handlePresetSelect = function handlePresetSelect(preset) {
|
|
36592
|
+
setPendingRange(preset.range);
|
|
36593
|
+
// Navigate calendar to show the start month of the preset range
|
|
36594
|
+
if (preset.range.from) {
|
|
36595
|
+
setCurrentMonth(new Date(preset.range.from.getFullYear(), preset.range.from.getMonth(), 1));
|
|
36596
|
+
}
|
|
36597
|
+
setSelectingStart(true);
|
|
36598
|
+
// If Apply button is enabled, keep calendar open so user can confirm
|
|
36599
|
+
if (!enableApplyButton) {
|
|
36600
|
+
setSelectedRange(preset.range);
|
|
36601
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(preset.range);
|
|
36602
|
+
setIsOpen(false);
|
|
36603
|
+
}
|
|
36604
|
+
};
|
|
36558
36605
|
var handleClear = function handleClear() {
|
|
36559
36606
|
var clearedRange = {
|
|
36560
36607
|
from: null,
|
|
36561
36608
|
to: null
|
|
36562
36609
|
};
|
|
36563
36610
|
setSelectedRange(clearedRange);
|
|
36611
|
+
setPendingRange(clearedRange);
|
|
36564
36612
|
onChange === null || onChange === void 0 ? void 0 : onChange(clearedRange);
|
|
36613
|
+
setIsOpen(false);
|
|
36565
36614
|
};
|
|
36566
36615
|
var formatDisplayValue = function formatDisplayValue() {
|
|
36567
36616
|
if (!selectedRange.from && !selectedRange.to) return placeholder;
|
|
@@ -36577,19 +36626,31 @@ function DateRangePicker(_ref3) {
|
|
|
36577
36626
|
return jsxs("div", {
|
|
36578
36627
|
ref: containerRef,
|
|
36579
36628
|
className: cn$p('relative', className),
|
|
36580
|
-
children: [jsxs("
|
|
36581
|
-
|
|
36629
|
+
children: [jsxs("div", {
|
|
36630
|
+
role: "button",
|
|
36631
|
+
tabIndex: disabled ? -1 : 0,
|
|
36582
36632
|
onClick: function onClick() {
|
|
36583
|
-
|
|
36633
|
+
if (!disabled) {
|
|
36634
|
+
if (!isOpen) setPendingRange(selectedRange);
|
|
36635
|
+
setIsOpen(!isOpen);
|
|
36636
|
+
setSelectingStart(true);
|
|
36637
|
+
}
|
|
36584
36638
|
},
|
|
36585
|
-
|
|
36586
|
-
|
|
36639
|
+
onKeyDown: function onKeyDown(e) {
|
|
36640
|
+
if (!disabled && (e.key === 'Enter' || e.key === ' ')) {
|
|
36641
|
+
if (!isOpen) setPendingRange(selectedRange);
|
|
36642
|
+
setIsOpen(!isOpen);
|
|
36643
|
+
setSelectingStart(true);
|
|
36644
|
+
}
|
|
36645
|
+
},
|
|
36646
|
+
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'),
|
|
36587
36647
|
children: [jsx("span", {
|
|
36588
36648
|
className: "truncate",
|
|
36589
36649
|
children: formatDisplayValue()
|
|
36590
36650
|
}), jsxs("div", {
|
|
36591
36651
|
className: "flex items-center gap-1 ml-2",
|
|
36592
36652
|
children: [clearable && (selectedRange.from || selectedRange.to) && jsx("button", {
|
|
36653
|
+
type: "button",
|
|
36593
36654
|
onClick: function onClick(e) {
|
|
36594
36655
|
e.stopPropagation();
|
|
36595
36656
|
handleClear();
|
|
@@ -36615,6 +36676,7 @@ function DateRangePicker(_ref3) {
|
|
|
36615
36676
|
className: "space-y-0.5",
|
|
36616
36677
|
children: presets.map(function (preset, index) {
|
|
36617
36678
|
return jsx("button", {
|
|
36679
|
+
type: "button",
|
|
36618
36680
|
onClick: function onClick() {
|
|
36619
36681
|
return handlePresetSelect(preset);
|
|
36620
36682
|
},
|
|
@@ -36627,7 +36689,7 @@ function DateRangePicker(_ref3) {
|
|
|
36627
36689
|
className: "flex",
|
|
36628
36690
|
children: [jsx(CalendarMonth, {
|
|
36629
36691
|
currentMonth: currentMonth,
|
|
36630
|
-
selectedRange:
|
|
36692
|
+
selectedRange: pendingRange,
|
|
36631
36693
|
onDateSelect: handleDateSelect,
|
|
36632
36694
|
onMonthChange: setCurrentMonth,
|
|
36633
36695
|
minDate: minDate,
|
|
@@ -36635,7 +36697,7 @@ function DateRangePicker(_ref3) {
|
|
|
36635
36697
|
selectingStart: selectingStart
|
|
36636
36698
|
}), numberOfMonths === 2 && jsx(CalendarMonth, {
|
|
36637
36699
|
currentMonth: new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1),
|
|
36638
|
-
selectedRange:
|
|
36700
|
+
selectedRange: pendingRange,
|
|
36639
36701
|
onDateSelect: handleDateSelect,
|
|
36640
36702
|
onMonthChange: function onMonthChange(month) {
|
|
36641
36703
|
var prevMonth = new Date(month);
|
|
@@ -36654,19 +36716,17 @@ function DateRangePicker(_ref3) {
|
|
|
36654
36716
|
children: selectingStart ? 'Select start date' : 'Select end date'
|
|
36655
36717
|
}), jsxs("div", {
|
|
36656
36718
|
className: "flex gap-2 items-center",
|
|
36657
|
-
children: [jsx("button", {
|
|
36658
|
-
|
|
36659
|
-
|
|
36660
|
-
|
|
36661
|
-
|
|
36662
|
-
|
|
36663
|
-
|
|
36664
|
-
onClick:
|
|
36665
|
-
|
|
36666
|
-
|
|
36667
|
-
|
|
36668
|
-
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",
|
|
36669
|
-
children: "Apply"
|
|
36719
|
+
children: [enableCancelButton && jsx("button", {
|
|
36720
|
+
type: "button",
|
|
36721
|
+
onClick: handleCancel,
|
|
36722
|
+
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",
|
|
36723
|
+
children: cancelButtonText
|
|
36724
|
+
}), enableApplyButton && jsx("button", {
|
|
36725
|
+
type: "button",
|
|
36726
|
+
onClick: handleApply,
|
|
36727
|
+
disabled: !pendingRange.from || !pendingRange.to,
|
|
36728
|
+
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",
|
|
36729
|
+
children: applyButtonText
|
|
36670
36730
|
})]
|
|
36671
36731
|
})]
|
|
36672
36732
|
})]
|