@paygreen/pgui 2.7.0 → 2.8.0

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/index.js CHANGED
@@ -42852,7 +42852,7 @@ var containsAnyLetters = function (str) {
42852
42852
  return /[a-zA-Z]/.test(str);
42853
42853
  };
42854
42854
  var NewDayPicker = function (_a) {
42855
- var defaultValue = _a.defaultValue, onChange = _a.onChange, _b = _a.locale, locale = _b === void 0 ? 'fr' : _b, customFormat = _a.customFormat, _c = _a.withTime, withTime = _c === void 0 ? false : _c, props = __rest$2(_a, ["defaultValue", "onChange", "locale", "customFormat", "withTime"]);
42855
+ var defaultValue = _a.defaultValue, onChange = _a.onChange, _b = _a.locale, locale = _b === void 0 ? 'fr' : _b, customFormat = _a.customFormat, _c = _a.withTime, withTime = _c === void 0 ? false : _c, minDate = _a.minDate, maxDate = _a.maxDate, calendarFunc = _a.calendarFunc, props = __rest$2(_a, ["defaultValue", "onChange", "locale", "customFormat", "withTime", "minDate", "maxDate", "calendarFunc"]);
42856
42856
  var initialFormat = function () {
42857
42857
  if (locale === 'fr' && withTime)
42858
42858
  return "DD/MM/YYYY HH:mm";
@@ -42866,16 +42866,31 @@ var NewDayPicker = function (_a) {
42866
42866
  var _d = React.useState(defaultValue), value = _d[0], setValue = _d[1];
42867
42867
  var _e = React.useState('00:00'), timeValue = _e[0], setTimeValue = _e[1];
42868
42868
  var _f = React.useState(false), isInvalid = _f[0], setIsInvalid = _f[1];
42869
- var _g = React.useState(dayjs()
42870
- .set('hours', 0)
42871
- .set('minutes', 0)
42872
- .set('seconds', 0)
42873
- .locale(locale)
42874
- .format(format)), inputValue = _g[0], setInputValue = _g[1];
42869
+ var _g = React.useState(dayjs(defaultValue).format(withTime ? 'DD/MM/YYYY HH:mm' : 'DD/MM/YYYY') ||
42870
+ dayjs()
42871
+ .set('hours', 0)
42872
+ .set('minutes', 0)
42873
+ .set('seconds', 0)
42874
+ .locale(locale)
42875
+ .format(format)), inputValue = _g[0], setInputValue = _g[1];
42875
42876
  var theme = react.useTheme();
42876
42877
  React.useEffect(function () {
42877
42878
  if (value) {
42878
- setInputValue(dayjs(value).format(format));
42879
+ if (minDate || maxDate) {
42880
+ if (minDate && dayjs(value).diff(dayjs(minDate)) < 0) {
42881
+ setInputValue(dayjs(minDate).format(format));
42882
+ setValue(minDate);
42883
+ onChange(dayjs(minDate).toISOString());
42884
+ }
42885
+ if (maxDate && dayjs(value).diff(dayjs(maxDate)) > 0) {
42886
+ setInputValue(dayjs(maxDate).format(format));
42887
+ setValue(maxDate);
42888
+ onChange(dayjs(maxDate).toISOString());
42889
+ }
42890
+ }
42891
+ else {
42892
+ setInputValue(dayjs(value).format(format));
42893
+ }
42879
42894
  if (withTime) {
42880
42895
  setTimeValue(dayjs(value).format('HH:mm'));
42881
42896
  }
@@ -42883,7 +42898,7 @@ var NewDayPicker = function (_a) {
42883
42898
  else {
42884
42899
  setInputValue('');
42885
42900
  }
42886
- }, [value]);
42901
+ }, [defaultValue, value]);
42887
42902
  var timer = [
42888
42903
  '00:00',
42889
42904
  '00:30',
@@ -42947,7 +42962,7 @@ var NewDayPicker = function (_a) {
42947
42962
  };
42948
42963
  return (React__default["default"].createElement(react.VStack, __assign$2({ spacing: "2", maxW: "full", p: 2, w: "fit-content", maxWidth: "30rem", borderRadius: "md" }, props),
42949
42964
  React__default["default"].createElement(react.Stack, { direction: { base: 'column', sm: 'row' }, spacing: 2, w: "full" },
42950
- React__default["default"].createElement(Calendar, { locale: locale, onChange: function (e) {
42965
+ React__default["default"].createElement(Calendar, { locale: locale, minDate: minDate, maxDate: maxDate, tileClassName: calendarFunc, onChange: function (e) {
42951
42966
  setValue(e);
42952
42967
  onChange(dayjs(e).toISOString());
42953
42968
  setTimeValue('00:00');
@@ -42961,14 +42976,36 @@ var NewDayPicker = function (_a) {
42961
42976
  .set('hours', parseInt(t.slice(0, 2), 10))
42962
42977
  .set('minutes', parseInt(t.slice(-2), 10));
42963
42978
  setValue(settedValue.toDate());
42964
- onChange(settedValue.toISOString());
42979
+ if (minDate && settedValue.diff(dayjs(minDate)) < 0) {
42980
+ onChange(dayjs(minDate).toISOString());
42981
+ }
42982
+ else if (maxDate &&
42983
+ settedValue.diff(dayjs(maxDate)) > 0) {
42984
+ onChange(dayjs(maxDate).toISOString());
42985
+ }
42986
+ else {
42987
+ onChange(settedValue.toISOString());
42988
+ }
42965
42989
  setTimeValue(t);
42966
42990
  setInputValue(dayjs(settedValue.toDate()).format(format));
42967
42991
  setIsInvalid(false);
42968
42992
  }, _active: {
42969
42993
  backgroundColor: 'white',
42970
42994
  color: 'brand.600'
42971
- } }, t)); })))))),
42995
+ }, isDisabled: (minDate === null
42996
+ ? undefined
42997
+ : minDate &&
42998
+ dayjs(value)
42999
+ .set('hours', parseInt(t.slice(0, 2), 10))
43000
+ .set('minutes', parseInt(t.slice(-2), 10))
43001
+ .diff(dayjs(minDate)) < 0) ||
43002
+ (maxDate === null
43003
+ ? undefined
43004
+ : maxDate &&
43005
+ dayjs(value)
43006
+ .set('hours', parseInt(t.slice(0, 2), 10))
43007
+ .set('minutes', parseInt(t.slice(-2), 10))
43008
+ .diff(dayjs(maxDate)) > 0) }, t)); })))))),
42972
43009
  React__default["default"].createElement(react.HStack, { w: "full" },
42973
43010
  React__default["default"].createElement(react.InputGroup, { w: "full", size: "sm" },
42974
43011
  React__default["default"].createElement(react.InputLeftElement, { pointerEvents: "none", color: "gray.300", fontSize: "1.2em", children: React__default["default"].createElement(react.Icon, { as: MdCalendarToday }) }),
@@ -42978,9 +43015,17 @@ var NewDayPicker = function (_a) {
42978
43015
  containsAnyLetters(e.target.value);
42979
43016
  if (!isInvalidFormat &&
42980
43017
  ((_a = dayjs(e.target.value, format)) === null || _a === void 0 ? void 0 : _a.isValid())) {
43018
+ onChange((_c = (_b = dayjs(e.target.value, format)) === null || _b === void 0 ? void 0 : _b.locale(locale)) === null || _c === void 0 ? void 0 : _c.toISOString());
42981
43019
  setInputValue(dayjs(e.target.value, format).locale(locale).format(format));
42982
43020
  setValue(dayjs(e.target.value, format).locale(locale).toDate());
42983
- onChange((_c = (_b = dayjs(e.target.value, format)) === null || _b === void 0 ? void 0 : _b.locale(locale)) === null || _c === void 0 ? void 0 : _c.toISOString());
43021
+ if (minDate &&
43022
+ dayjs(e.target.value, format).diff(dayjs(minDate)) < 0) {
43023
+ onChange(dayjs(minDate).toISOString());
43024
+ }
43025
+ else if (maxDate &&
43026
+ dayjs(e.target.value, format).diff(dayjs(maxDate)) > 0) {
43027
+ onChange(dayjs(maxDate).toISOString());
43028
+ }
42984
43029
  setIsInvalid(false);
42985
43030
  }
42986
43031
  else {
@@ -42997,7 +43042,7 @@ var NewDayPicker = function (_a) {
42997
43042
  dayjs.extend(customParseFormat);
42998
43043
  dayjs.extend(utc);
42999
43044
  var InputDayPicker = function (_a) {
43000
- var name = _a.name, placeholder = _a.placeholder, value = _a.value, onChange = _a.onChange, _b = _a.locale, locale = _b === void 0 ? 'fr' : _b, _c = _a.variant, variant = _c === void 0 ? 'filled' : _c, _d = _a.format, format = _d === void 0 ? 'DD/MM/YYYY' : _d, _e = _a.withTime, withTime = _e === void 0 ? false : _e, inputProps = __rest$2(_a, ["name", "placeholder", "value", "onChange", "locale", "variant", "format", "withTime"]);
43045
+ var name = _a.name, placeholder = _a.placeholder, value = _a.value, onChange = _a.onChange, _b = _a.locale, locale = _b === void 0 ? 'fr' : _b, _c = _a.variant, variant = _c === void 0 ? 'filled' : _c, _d = _a.format, format = _d === void 0 ? 'DD/MM/YYYY' : _d, _e = _a.withTime, withTime = _e === void 0 ? false : _e, minDate = _a.minDate, maxDate = _a.maxDate, calendarFunc = _a.calendarFunc, inputProps = __rest$2(_a, ["name", "placeholder", "value", "onChange", "locale", "variant", "format", "withTime", "minDate", "maxDate", "calendarFunc"]);
43001
43046
  var _f = react.useDisclosure(), isOpen = _f.isOpen, onClose = _f.onClose, onToggle = _f.onToggle;
43002
43047
  var _g = React.useState(''), prev = _g[0], setPrev = _g[1];
43003
43048
  React.useEffect(function () {
@@ -43024,7 +43069,9 @@ var InputDayPicker = function (_a) {
43024
43069
  React__default["default"].createElement(react.Popover, { closeOnBlur: true, closeOnEsc: true, isOpen: isOpen, onClose: onClose, placement: "bottom", autoFocus: true },
43025
43070
  React__default["default"].createElement(react.PopoverTrigger, null,
43026
43071
  React__default["default"].createElement(react.InputGroup, null,
43027
- React__default["default"].createElement(react.Input, __assign$2({ as: react.Button, onClick: onToggle, name: name, fontWeight: "normal", justifyContent: "flex-start", variant: variant }, inputProps), value ? dayjs(value).format(format) : placeholder),
43072
+ React__default["default"].createElement(react.Input, __assign$2({ as: react.Button, onClick: onToggle, name: name, fontWeight: "normal", justifyContent: "flex-start", background: variant === 'filled' ? 'gray.100' : 'white', _hover: {
43073
+ background: variant === 'filled' ? 'gray.200' : 'gray.50'
43074
+ } }, inputProps), value ? dayjs(value).format(format) : placeholder),
43028
43075
  value && (React__default["default"].createElement(react.InputRightElement, { onClick: function () {
43029
43076
  onChange(null);
43030
43077
  }, _hover: {
@@ -43035,7 +43082,7 @@ var InputDayPicker = function (_a) {
43035
43082
  } }))))),
43036
43083
  React__default["default"].createElement(react.PopoverContent, { mx: 1, width: "fit-content" },
43037
43084
  React__default["default"].createElement(react.PopoverArrow, null),
43038
- isOpen && (React__default["default"].createElement(NewDayPicker, { locale: locale, defaultValue: value, onChange: onChange, format: format, withTime: withTime }))))));
43085
+ isOpen && (React__default["default"].createElement(NewDayPicker, { locale: locale, defaultValue: value, onChange: onChange, withTime: withTime, minDate: minDate, maxDate: maxDate, calendarFunc: calendarFunc }))))));
43039
43086
  };
43040
43087
 
43041
43088
  // This file is a workaround for a bug in web browsers' "native"
@@ -62302,10 +62349,126 @@ var InputPhone = function (_a) {
62302
62349
  }
62303
62350
  }
62304
62351
  }, [countryFromLocale, phoneNumber]);
62305
- return (React__default["default"].createElement(react.InputGroup, { position: "relative", display: "block" },
62352
+ return (React__default["default"].createElement(react.InputGroup, { position: "relative", display: "block", sx: { isolation: 'auto' } },
62306
62353
  React__default["default"].createElement(PhoneInput, __assign$2({ international: true, inputComponent: react.Input, numberInputProps: { paddingLeft: '4rem' }, value: phoneNumber, labels: locale === 'fr' ? fr : en, defaultCountry: country || 'FR', disabled: isDisabled, onChange: function (val) { return setPhoneNumber(val || ''); }, addInternationalOption: false, countryCallingCodeEditable: false, countryOptionsOrder: ['FR', 'GB', 'BE', 'ES', 'DE', 'IT', 'CH'], countrySelectComponent: function (selectProps) { return (React__default["default"].createElement(SearchOnList, __assign$2({ locale: locale }, selectProps))); } }, props))));
62307
62354
  };
62308
62355
 
62356
+ var isoWeek$1 = {exports: {}};
62357
+
62358
+ (function (module, exports) {
62359
+ !function(e,t){module.exports=t();}(commonjsGlobal,(function(){var e="day";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf("year"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,"week")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return "isoweek"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):n.bind(this)(e,t)};}}));
62360
+ } (isoWeek$1));
62361
+
62362
+ var isoWeek = isoWeek$1.exports;
62363
+
62364
+ dayjs.extend(customParseFormat);
62365
+ dayjs.extend(utc);
62366
+ dayjs.extend(isoWeek);
62367
+ var InputRangePicker = function (_a) {
62368
+ var fromLabel = _a.fromLabel, toLabel = _a.toLabel, value = _a.value, onChange = _a.onChange, minDate = _a.minDate, maxDate = _a.maxDate, _b = _a.withTime, withTime = _b === void 0 ? false : _b, _c = _a.format, format = _c === void 0 ? withTime ? 'DD/MM/YYYY HH:mm' : 'DD/MM/YYYY' : _c, _d = _a.variant, variant = _d === void 0 ? 'unstyled' : _d, props = __rest$2(_a, ["fromLabel", "toLabel", "value", "onChange", "minDate", "maxDate", "withTime", "format", "variant"]);
62369
+ var _e = React.useState(), fromValue = _e[0], setFromValue = _e[1];
62370
+ var _f = React.useState(), toValue = _f[0], setToValue = _f[1];
62371
+ var _g = React.useState(minDate), formatedMinDate = _g[0], setFormatedMinDate = _g[1];
62372
+ var _h = React.useState(maxDate), formatedMaxDate = _h[0], setFormatedMaxDate = _h[1];
62373
+ React.useEffect(function () {
62374
+ if (!withTime) {
62375
+ var formatedMin = minDate
62376
+ ? dayjs(dayjs(minDate).startOf('day').toISOString()).toDate()
62377
+ : null;
62378
+ var formatedMax = maxDate
62379
+ ? dayjs(dayjs(maxDate).endOf('day').toISOString()).toDate()
62380
+ : null;
62381
+ setFormatedMinDate(formatedMin);
62382
+ setFormatedMaxDate(formatedMax);
62383
+ }
62384
+ }, [withTime]);
62385
+ React.useEffect(function () {
62386
+ onChange({
62387
+ from: fromValue ? dayjs(fromValue).toDate() : null,
62388
+ to: toValue ? dayjs(toValue).toDate() : null
62389
+ });
62390
+ }, [fromValue, toValue]);
62391
+ React.useEffect(function () {
62392
+ if (!withTime) {
62393
+ if (value === null || value === void 0 ? void 0 : value.from) {
62394
+ if (dayjs(value.from).diff(dayjs(formatedMinDate).utcOffset(0, true)) < 0) {
62395
+ setFromValue(dayjs(formatedMinDate).utcOffset(0, true).toISOString());
62396
+ }
62397
+ }
62398
+ if (value === null || value === void 0 ? void 0 : value.to) {
62399
+ if (dayjs(value.to).diff(dayjs(formatedMaxDate).utcOffset(0, true)) > 0) {
62400
+ setToValue(dayjs(formatedMaxDate).utcOffset(0, true).toISOString());
62401
+ }
62402
+ }
62403
+ }
62404
+ }, [withTime, fromValue, toValue]);
62405
+ var fromFunc = function (_a) {
62406
+ var date = _a.date;
62407
+ if (toValue) {
62408
+ if (dayjs(date)
62409
+ .startOf('day')
62410
+ .utcOffset(0, true)
62411
+ .diff(dayjs(toValue).endOf('day').utcOffset(0, true)) > 0) {
62412
+ return 'after-max-date';
62413
+ }
62414
+ }
62415
+ else {
62416
+ if (formatedMaxDate &&
62417
+ dayjs(date)
62418
+ .startOf('date')
62419
+ .utcOffset(0, true)
62420
+ .diff(dayjs(formatedMaxDate).startOf('date').utcOffset(0, true)) > 0) {
62421
+ return 'after-max-date';
62422
+ }
62423
+ }
62424
+ if (formatedMinDate &&
62425
+ dayjs(date)
62426
+ .startOf('day')
62427
+ .utcOffset(0, true)
62428
+ .diff(dayjs(formatedMinDate).startOf('day').utcOffset(0, true)) < 0) {
62429
+ return 'before-min-date';
62430
+ }
62431
+ };
62432
+ var toFunc = function (_a) {
62433
+ var date = _a.date;
62434
+ if (fromValue) {
62435
+ if (dayjs(date)
62436
+ .startOf('day')
62437
+ .utcOffset(0, true)
62438
+ .diff(dayjs(fromValue).startOf('day').utcOffset(0, true)) < 0) {
62439
+ return 'before-min-date';
62440
+ }
62441
+ }
62442
+ else {
62443
+ if (formatedMinDate &&
62444
+ dayjs(date)
62445
+ .startOf('day')
62446
+ .utcOffset(0, true)
62447
+ .diff(dayjs(formatedMinDate).startOf('date').utcOffset(0, true)) < 0) {
62448
+ return 'before-min-date';
62449
+ }
62450
+ }
62451
+ if (formatedMaxDate &&
62452
+ dayjs(date)
62453
+ .startOf('day')
62454
+ .utcOffset(0, true)
62455
+ .diff(dayjs(formatedMaxDate).startOf('day').utcOffset(0, true)) > 0) {
62456
+ return 'after-max-date';
62457
+ }
62458
+ };
62459
+ return (React__default["default"].createElement(react.Wrap, __assign$2({ flexWrap: "wrap", w: "full", maxW: "full" }, props),
62460
+ React__default["default"].createElement(react.WrapItem, { flex: "1", alignItems: "center", minW: "fit-content" },
62461
+ React__default["default"].createElement(react.Text, { mr: 2, wordBreak: "normal" }, fromLabel),
62462
+ React__default["default"].createElement(InputDayPicker, { name: "from", onChange: function (e) {
62463
+ setFromValue(e);
62464
+ }, value: fromValue, format: format, minDate: formatedMinDate, maxDate: (value === null || value === void 0 ? void 0 : value.to) || maxDate, calendarFunc: fromFunc, withTime: withTime, variant: variant, minW: "11.5rem", w: "full" })),
62465
+ React__default["default"].createElement(react.WrapItem, { flex: "1", alignItems: "center", minW: "fit-content" },
62466
+ React__default["default"].createElement(react.Text, { mr: 2, wordBreak: "normal" }, toLabel),
62467
+ React__default["default"].createElement(InputDayPicker, { name: "to", onChange: function (e) {
62468
+ setToValue(e);
62469
+ }, value: toValue, format: format, minDate: (value === null || value === void 0 ? void 0 : value.from) || formatedMinDate, maxDate: formatedMaxDate, calendarFunc: toFunc, withTime: withTime, variant: variant, minW: "11.5rem", w: "full" }))));
62470
+ };
62471
+
62309
62472
  var ModalResponsive = function (_a) {
62310
62473
  var _b;
62311
62474
  var isOpen = _a.isOpen, onClose = _a.onClose, finalFocusRef = _a.finalFocusRef, children = _a.children, rest = __rest$2(_a, ["isOpen", "onClose", "finalFocusRef", "children"]);
@@ -68064,6 +68227,12 @@ var reactCalendar = function (props) {
68064
68227
  color: props.theme.colors.gray[400]
68065
68228
  }
68066
68229
  }
68230
+ },
68231
+ '.before-min-date': {
68232
+ color: props.theme.colors.gray[400]
68233
+ },
68234
+ '.after-max-date': {
68235
+ color: props.theme.colors.gray[400]
68067
68236
  }
68068
68237
  };
68069
68238
  };
@@ -68152,6 +68321,7 @@ exports.DayPicker = DayPicker;
68152
68321
  exports.FormGroup = FormGroup;
68153
68322
  exports.InputDayPicker = InputDayPicker;
68154
68323
  exports.InputPhone = InputPhone;
68324
+ exports.InputRangePicker = InputRangePicker;
68155
68325
  exports.LayoutContainer = LayoutContainer;
68156
68326
  exports.MenuItem = MenuItem;
68157
68327
  exports.ModalResponsive = ModalResponsive;