@paygreen/pgui 2.14.1 → 2.14.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.
@@ -13,5 +13,8 @@ export type InputDayPickerProps = {
13
13
  isDisabled?: boolean;
14
14
  inputProps?: any;
15
15
  dayPickerProps?: any;
16
+ isOpen?: boolean;
17
+ onOpen?: () => void;
18
+ onClose?: () => void;
16
19
  };
17
- export declare const InputDayPicker: ({ value, onChange, placeholder, name, isDisabled, withTime, locale, minDate, maxDate, variant, inputProps, dayPickerProps, }: InputDayPickerProps) => React.JSX.Element;
20
+ export declare const InputDayPicker: ({ value, onChange, placeholder, name, isDisabled, withTime, locale, minDate, maxDate, variant, inputProps, dayPickerProps, isOpen: isOpenProp, onOpen: onOpenProp, onClose: onCloseProp, }: InputDayPickerProps) => React.JSX.Element;
@@ -13,11 +13,13 @@ export type InputRangePickerProps = {
13
13
  locale?: 'fr' | 'en';
14
14
  variant?: 'filled' | 'outline';
15
15
  withTime?: boolean;
16
- minDate?: Date | null | undefined;
17
- maxDate?: Date | null | undefined;
16
+ minStartDate?: Date | null | undefined;
17
+ maxStartDate?: Date | null | undefined;
18
+ minEndDate?: Date | null | undefined;
19
+ maxEndDate?: Date | null | undefined;
18
20
  isDisabled?: boolean;
19
21
  breakpoint?: 'base' | 'sm' | 'md' | 'lg';
20
22
  inputProps?: any;
21
23
  dayPickerProps?: any;
22
24
  };
23
- export declare const InputRangePicker: ({ value, onChange, placeholder, name, isDisabled, withTime, locale, minDate, maxDate, variant, breakpoint, inputProps, dayPickerProps, }: InputRangePickerProps) => React.JSX.Element;
25
+ export declare const InputRangePicker: ({ value, onChange, placeholder, name, isDisabled, withTime, locale, minStartDate, maxStartDate, minEndDate, maxEndDate, variant, breakpoint, inputProps, dayPickerProps, }: InputRangePickerProps) => React.JSX.Element;
package/dist/esm/index.js CHANGED
@@ -7905,8 +7905,11 @@ function MdCalendarToday (props) {
7905
7905
  dayjs.extend(customParseFormat);
7906
7906
  dayjs.extend(utc);
7907
7907
  var InputDayPicker = function (_a) {
7908
- var value = _a.value, onChange = _a.onChange, placeholder = _a.placeholder, name = _a.name, isDisabled = _a.isDisabled, withTime = _a.withTime, _b = _a.locale, locale = _b === void 0 ? 'en' : _b, minDate = _a.minDate, maxDate = _a.maxDate, _c = _a.variant, variant = _c === void 0 ? 'filled' : _c, inputProps = _a.inputProps, dayPickerProps = _a.dayPickerProps;
7909
- var _d = useDisclosure(), isOpen = _d.isOpen, onOpen = _d.onOpen, onClose = _d.onClose;
7908
+ var value = _a.value, onChange = _a.onChange, placeholder = _a.placeholder, name = _a.name, isDisabled = _a.isDisabled, withTime = _a.withTime, _b = _a.locale, locale = _b === void 0 ? 'en' : _b, minDate = _a.minDate, maxDate = _a.maxDate, _c = _a.variant, variant = _c === void 0 ? 'filled' : _c, inputProps = _a.inputProps, dayPickerProps = _a.dayPickerProps, isOpenProp = _a.isOpen, onOpenProp = _a.onOpen, onCloseProp = _a.onClose;
7909
+ var disclosure = useDisclosure();
7910
+ var isOpen = isOpenProp || disclosure.isOpen;
7911
+ var onOpen = onOpenProp || disclosure.onOpen;
7912
+ var onClose = onCloseProp || disclosure.onClose;
7910
7913
  var inputLeftElementColor = useColorModeValue('gray.400', 'gray.600');
7911
7914
  var inputLeftElementDisabledColor = useColorModeValue('gray.600', 'gray.400');
7912
7915
  var dialogSheetBg = useColorModeValue('gray.50', 'gray.800');
@@ -7917,18 +7920,20 @@ var InputDayPicker = function (_a) {
7917
7920
  : withTime
7918
7921
  ? 'MM/DD/YYYY HH:mm'
7919
7922
  : 'MM/DD/YYYY';
7920
- var _e = useState(value ? dayjs(value).format(defaultDateFormat) : ''), dateValue = _e[0], setDateValue = _e[1];
7923
+ var _d = useState(value ? dayjs(value).format(defaultDateFormat) : ''), dateValue = _d[0], setDateValue = _d[1];
7921
7924
  // Update the input value when the value prop changes
7922
7925
  useEffect(function () {
7923
- setDateValue(value ? dayjs(value).format(defaultDateFormat) : '');
7926
+ setDateValue(dayjs(value).isValid() ? dayjs(value).format(defaultDateFormat) : '');
7924
7927
  }, [value]);
7925
7928
  // Add new state variables for hours and minutes
7926
- var _f = useState('00'), hours = _f[0], setHours = _f[1];
7927
- var _g = useState('00'), minutes = _g[0], setMinutes = _g[1];
7929
+ var _e = useState('00'), hours = _e[0], setHours = _e[1];
7930
+ var _f = useState('00'), minutes = _f[0], setMinutes = _f[1];
7928
7931
  // Update the input value when the value prop changes
7929
7932
  var handleInputChange = function (date) {
7930
- if (!date)
7933
+ if (!date) {
7931
7934
  setDateValue('');
7935
+ onChange(null);
7936
+ }
7932
7937
  var dateInput = dayjs(date, defaultDateFormat, true);
7933
7938
  if (dateInput.isValid()) {
7934
7939
  if (isOpen)
@@ -7939,9 +7944,6 @@ var InputDayPicker = function (_a) {
7939
7944
  setMinutes(parseInt(dateInput.format('mm'), 10).toString());
7940
7945
  onChange(dateInput.toDate());
7941
7946
  }
7942
- else {
7943
- onChange(null);
7944
- }
7945
7947
  };
7946
7948
  // Update the input value when the value prop changes
7947
7949
  var handleDateSelection = function (date) {
@@ -19024,13 +19026,30 @@ var InputPhone = function (_a) {
19024
19026
 
19025
19027
  var InputRangePicker = function (_a) {
19026
19028
  var _b;
19027
- var value = _a.value, onChange = _a.onChange, placeholder = _a.placeholder, name = _a.name, isDisabled = _a.isDisabled, withTime = _a.withTime, _c = _a.locale, locale = _c === void 0 ? 'en' : _c, minDate = _a.minDate, maxDate = _a.maxDate, _d = _a.variant, variant = _d === void 0 ? 'filled' : _d, _e = _a.breakpoint, breakpoint = _e === void 0 ? 'md' : _e, inputProps = _a.inputProps, dayPickerProps = _a.dayPickerProps;
19029
+ var value = _a.value, onChange = _a.onChange, placeholder = _a.placeholder, name = _a.name, isDisabled = _a.isDisabled, withTime = _a.withTime, _c = _a.locale, locale = _c === void 0 ? 'en' : _c, minStartDate = _a.minStartDate, maxStartDate = _a.maxStartDate, minEndDate = _a.minEndDate, maxEndDate = _a.maxEndDate, _d = _a.variant, variant = _d === void 0 ? 'filled' : _d, _e = _a.breakpoint, breakpoint = _e === void 0 ? 'md' : _e, inputProps = _a.inputProps, dayPickerProps = _a.dayPickerProps;
19028
19030
  var _f = useState((value === null || value === void 0 ? void 0 : value.from) || null), fromValue = _f[0], setFromValue = _f[1];
19029
19031
  var _g = useState((value === null || value === void 0 ? void 0 : value.to) || null), toValue = _g[0], setToValue = _g[1];
19032
+ var _h = useDisclosure(), isOpenFrom = _h.isOpen, onOpenFrom = _h.onOpen, onCloseFrom = _h.onClose;
19033
+ var _j = useDisclosure(), isOpenTo = _j.isOpen, onOpenTo = _j.onOpen, onCloseTo = _j.onClose;
19034
+ // close the other date picker when one is opened
19030
19035
  useEffect(function () {
19031
- onChange({ from: fromValue, to: toValue });
19036
+ if (isOpenFrom) {
19037
+ onCloseTo();
19038
+ }
19039
+ }, [isOpenFrom]);
19040
+ useEffect(function () {
19041
+ if (isOpenTo) {
19042
+ onCloseFrom();
19043
+ }
19044
+ }, [isOpenTo]);
19045
+ // Update the parent state when the local state changes
19046
+ useEffect(function () {
19047
+ var newValue = { from: fromValue, to: toValue };
19048
+ if (JSON.stringify(newValue) !== JSON.stringify(value)) {
19049
+ onChange(newValue);
19050
+ }
19032
19051
  }, [fromValue, toValue]);
19033
- // Update the state when the value changes
19052
+ // Update the state when the props value changes
19034
19053
  useEffect(function () {
19035
19054
  setFromValue((value === null || value === void 0 ? void 0 : value.from) || null);
19036
19055
  setToValue((value === null || value === void 0 ? void 0 : value.to) || null);
@@ -19041,8 +19060,8 @@ var InputRangePicker = function (_a) {
19041
19060
  _b[breakpoint] = 'row',
19042
19061
  _b));
19043
19062
  return (React__default.createElement(Flex, { flexDirection: flexDirection, gap: 2 },
19044
- React__default.createElement(InputDayPicker, { value: fromValue, onChange: setFromValue, placeholder: placeholder, name: name, isDisabled: isDisabled, withTime: withTime, locale: locale, minDate: minDate, maxDate: maxDate, variant: variant, inputProps: inputProps, dayPickerProps: dayPickerProps }),
19045
- React__default.createElement(InputDayPicker, { value: toValue, onChange: setToValue, placeholder: placeholder, name: name, isDisabled: isDisabled, withTime: withTime, locale: locale, minDate: minDate, maxDate: maxDate, variant: variant, inputProps: inputProps, dayPickerProps: dayPickerProps })));
19063
+ React__default.createElement(InputDayPicker, { value: fromValue, onChange: setFromValue, placeholder: placeholder, name: name, isDisabled: isDisabled, withTime: withTime, locale: locale, minDate: minStartDate, maxDate: maxStartDate, variant: variant, inputProps: inputProps, dayPickerProps: dayPickerProps, onClose: onCloseFrom, onOpen: onOpenFrom, isOpen: isOpenFrom }),
19064
+ React__default.createElement(InputDayPicker, { value: toValue, onChange: setToValue, placeholder: placeholder, name: name, isDisabled: isDisabled, withTime: withTime, locale: locale, minDate: minEndDate, maxDate: maxEndDate, variant: variant, inputProps: inputProps, dayPickerProps: dayPickerProps, onClose: onCloseTo, onOpen: onOpenTo, isOpen: isOpenTo })));
19046
19065
  };
19047
19066
 
19048
19067
  var ModalResponsive = function (_a) {