@7shifts/sous-chef 2.5.1 → 2.6.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.
@@ -5113,8 +5113,17 @@ var DatePickerCalendar = function DatePickerCalendar(_ref) {
5113
5113
  children = _ref.children,
5114
5114
  onBlur = _ref.onBlur,
5115
5115
  onFocus = _ref.onFocus,
5116
- tabIndex = _ref.tabIndex;
5116
+ tabIndex = _ref.tabIndex,
5117
+ showCalendar = _ref.showCalendar,
5118
+ onClickOutside = _ref.onClickOutside;
5117
5119
  var inputPosition = inputNode.getBoundingClientRect();
5120
+ var calendarRef = useRef(null);
5121
+ useOnClickOutside(calendarRef, onClickOutside);
5122
+
5123
+ if (!showCalendar) {
5124
+ return null;
5125
+ }
5126
+
5118
5127
  return React__default.createElement(Portal, null, React__default.createElement("div", {
5119
5128
  className: classNames.overlayWrapper,
5120
5129
  onBlur: onBlur,
@@ -5124,7 +5133,8 @@ var DatePickerCalendar = function DatePickerCalendar(_ref) {
5124
5133
  zIndex: 9999,
5125
5134
  left: inputPosition.left,
5126
5135
  top: inputPosition.top + window.scrollY + inputPosition.height + 3
5127
- }
5136
+ },
5137
+ ref: calendarRef
5128
5138
  }, React__default.createElement("div", {
5129
5139
  className: classNames.overlay
5130
5140
  }, children)));
@@ -5194,6 +5204,11 @@ var DateField = function DateField(_ref) {
5194
5204
  _ref$readOnly = _ref.readOnly,
5195
5205
  readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly;
5196
5206
  var inputRef = useRef();
5207
+
5208
+ var _useState = useState(false),
5209
+ showCalendar = _useState[0],
5210
+ setShowCalendar = _useState[1];
5211
+
5197
5212
  var controllers = useDateFieldControllers({
5198
5213
  name: name,
5199
5214
  id: inputId,
@@ -5235,10 +5250,17 @@ var DateField = function DateField(_ref) {
5235
5250
  defaultValue: defaultValue,
5236
5251
  value: controllers.value || '',
5237
5252
  onDayChange: controllers.onChange,
5238
- onDayPickerHide: controllers.onBlur,
5253
+ onDayPickerHide: function onDayPickerHide() {
5254
+ controllers.onBlur();
5255
+ setShowCalendar(false);
5256
+ },
5239
5257
  overlayComponent: function overlayComponent(props) {
5240
5258
  return React__default.createElement(DatePickerCalendar, Object.assign({}, props, {
5241
- inputNode: inputRef.current
5259
+ inputNode: inputRef.current,
5260
+ showCalendar: showCalendar,
5261
+ onClickOutside: function onClickOutside() {
5262
+ return setShowCalendar(false);
5263
+ }
5242
5264
  }));
5243
5265
  },
5244
5266
  dayPickerProps: dayPickerProps,
@@ -5252,7 +5274,13 @@ var DateField = function DateField(_ref) {
5252
5274
  autoComplete: 'off',
5253
5275
  ref: inputRef,
5254
5276
  readOnly: readOnly,
5255
- disabled: disabled
5277
+ disabled: disabled,
5278
+ onFocus: function onFocus() {
5279
+ return setShowCalendar(true);
5280
+ }
5281
+ },
5282
+ onDayPickerShow: function onDayPickerShow() {
5283
+ return setShowCalendar(true);
5256
5284
  }
5257
5285
  })));
5258
5286
  };
@@ -5290,7 +5318,7 @@ var useRangeFieldControllers = function useRangeFieldControllers(_ref) {
5290
5318
 
5291
5319
  if (formik && formikState) {
5292
5320
  return _extends({}, initialControllers, {
5293
- error: error !== undefined ? initialControllers.error : formikState.error,
5321
+ error: error !== undefined ? initialControllers.error : getFormikError(formikState.error),
5294
5322
  value: value !== undefined ? initialControllers.value : formikState.value,
5295
5323
  onChange: _onChange ? initialControllers.onChange : function (newValue) {
5296
5324
  formik.setFieldValue(name, newValue === undefined ? null : newValue);
@@ -5304,12 +5332,33 @@ var useRangeFieldControllers = function useRangeFieldControllers(_ref) {
5304
5332
  return initialControllers;
5305
5333
  };
5306
5334
 
5335
+ var getFormikError = function getFormikError(error) {
5336
+ if (!error) {
5337
+ return undefined;
5338
+ }
5339
+
5340
+ if (typeof error === 'string') {
5341
+ return error;
5342
+ }
5343
+
5344
+ if (error.start) {
5345
+ return error.start;
5346
+ }
5347
+
5348
+ if (error.end) {
5349
+ return error.end;
5350
+ }
5351
+
5352
+ return undefined;
5353
+ };
5354
+
5307
5355
  var styles$s = {"container":"_1Ini2","wrapper":"_21VnL","interactionDisabled":"_wJ6Cb","DayPicker-Day":"_1c48y","navBar":"_3KwsN","todayButton":"_10CBO","navButtonInteractionDisabled":"_dHL-D","navButtonPrev":"_6kNi3","navButtonNext":"_13W_e","months":"_1FeSY","month":"_wU6A4","caption":"_AMbAo","weekdays":"_1LEst","weekdaysRow":"_2XECo","weekday":"_1C5ry","body":"_11F-Y","week":"_3MAFk","day":"_mG73F","disabled":"_2pgnH","selected":"_MtLaz","outside":"_CRqyX","footer":"_2KG9-","today":"_2JA2y","overlayWrapper":"_1JWbc","overlay":"_2tL6g","weekNumber":"_3u72O","text-field":"_25rf7","date-range-field":"_3qVhi","text-field--invalid":"_2M9Ud","text-field--prefixed":"_3TUb2","text-field--suffixed":"_foqL0","date-range-field--invalid":"_3df9R","date-range-field--disabled":"_2Nkht"};
5308
5356
 
5309
5357
  var FromDate = function FromDate(_ref) {
5310
5358
  var name = _ref.name,
5311
5359
  id = _ref.id,
5312
5360
  format = _ref.format,
5361
+ disabledDays = _ref.disabledDays,
5313
5362
  start = _ref.start,
5314
5363
  end = _ref.end,
5315
5364
  placeholder = _ref.placeholder,
@@ -5317,12 +5366,29 @@ var FromDate = function FromDate(_ref) {
5317
5366
  disabled = _ref.disabled,
5318
5367
  readOnly = _ref.readOnly,
5319
5368
  onChange = _ref.onChange,
5320
- onDayClick = _ref.onDayClick;
5369
+ _onDayClick = _ref.onDayClick;
5370
+
5371
+ var _useState = useState(false),
5372
+ showCalendar = _useState[0],
5373
+ setShowCalendar = _useState[1];
5374
+
5321
5375
  var inputRef = useRef();
5322
5376
  var modifiers = {
5323
5377
  from: start,
5324
5378
  to: end
5325
5379
  };
5380
+ var disabledDaysChecks = end ? [{
5381
+ after: end
5382
+ }] : [];
5383
+
5384
+ if (disabledDays) {
5385
+ if (Array.isArray(disabledDays)) {
5386
+ disabledDaysChecks.push.apply(disabledDaysChecks, disabledDays);
5387
+ } else {
5388
+ disabledDaysChecks.push(disabledDays);
5389
+ }
5390
+ }
5391
+
5326
5392
  var dayPickerProps = {
5327
5393
  classNames: styles$s,
5328
5394
  months: MONTH_NAMES,
@@ -5336,12 +5402,18 @@ var FromDate = function FromDate(_ref) {
5336
5402
  from: start,
5337
5403
  to: end
5338
5404
  }],
5339
- disabledDays: {
5340
- after: end
5341
- },
5405
+ disabledDays: disabledDaysChecks,
5342
5406
  toMonth: end,
5343
5407
  modifiers: modifiers,
5344
- onDayClick: onDayClick
5408
+ onDayClick: function onDayClick(_, activeModifiers) {
5409
+ var isDateDisabled = Object.keys(activeModifiers).find(function (modifier) {
5410
+ return modifier;
5411
+ });
5412
+
5413
+ if (!Boolean(isDateDisabled)) {
5414
+ _onDayClick();
5415
+ }
5416
+ }
5345
5417
  };
5346
5418
  return React__default.createElement(DayPickerInput, {
5347
5419
  format: format,
@@ -5352,9 +5424,16 @@ var FromDate = function FromDate(_ref) {
5352
5424
  parseDate: parseDate,
5353
5425
  placeholder: placeholder,
5354
5426
  onDayChange: onChange,
5427
+ onDayPickerHide: function onDayPickerHide() {
5428
+ return setShowCalendar(false);
5429
+ },
5355
5430
  overlayComponent: function overlayComponent(props) {
5356
5431
  return React__default.createElement(DatePickerCalendar, Object.assign({}, props, {
5357
- inputNode: inputRef.current
5432
+ inputNode: inputRef.current,
5433
+ showCalendar: showCalendar,
5434
+ onClickOutside: function onClickOutside() {
5435
+ return setShowCalendar(false);
5436
+ }
5358
5437
  }));
5359
5438
  },
5360
5439
  dayPickerProps: dayPickerProps,
@@ -5366,7 +5445,13 @@ var FromDate = function FromDate(_ref) {
5366
5445
  readOnly: readOnly,
5367
5446
  disabled: disabled,
5368
5447
  'data-testid': "range-picker-field-from-" + name,
5369
- type: 'text'
5448
+ type: 'text',
5449
+ onFocus: function onFocus() {
5450
+ return setShowCalendar(true);
5451
+ }
5452
+ },
5453
+ onDayPickerShow: function onDayPickerShow() {
5454
+ return setShowCalendar(true);
5370
5455
  }
5371
5456
  });
5372
5457
  };
@@ -5374,17 +5459,36 @@ var FromDate = function FromDate(_ref) {
5374
5459
  var ToDate = function ToDate(_ref, ref) {
5375
5460
  var name = _ref.name,
5376
5461
  format = _ref.format,
5462
+ disabledDays = _ref.disabledDays,
5377
5463
  start = _ref.start,
5378
5464
  end = _ref.end,
5379
5465
  placeholder = _ref.placeholder,
5380
5466
  weekStart = _ref.weekStart,
5381
5467
  disabled = _ref.disabled,
5382
5468
  readOnly = _ref.readOnly,
5383
- onChange = _ref.onChange;
5469
+ onChange = _ref.onChange,
5470
+ _onBlur = _ref.onBlur;
5471
+
5472
+ var _useState = useState(false),
5473
+ showCalendar = _useState[0],
5474
+ setShowCalendar = _useState[1];
5475
+
5384
5476
  var modifiers = {
5385
5477
  from: start,
5386
5478
  to: end
5387
5479
  };
5480
+ var disabledDaysChecks = start ? [{
5481
+ before: start
5482
+ }] : [];
5483
+
5484
+ if (disabledDays) {
5485
+ if (Array.isArray(disabledDays)) {
5486
+ disabledDaysChecks.push.apply(disabledDaysChecks, disabledDays);
5487
+ } else {
5488
+ disabledDaysChecks.push(disabledDays);
5489
+ }
5490
+ }
5491
+
5388
5492
  var dayPickerProps = {
5389
5493
  classNames: styles$s,
5390
5494
  months: MONTH_NAMES,
@@ -5398,9 +5502,7 @@ var ToDate = function ToDate(_ref, ref) {
5398
5502
  from: start,
5399
5503
  to: end
5400
5504
  }],
5401
- disabledDays: {
5402
- before: start
5403
- },
5505
+ disabledDays: disabledDaysChecks,
5404
5506
  modifiers: modifiers,
5405
5507
  month: end || start,
5406
5508
  fromMonth: start
@@ -5414,9 +5516,16 @@ var ToDate = function ToDate(_ref, ref) {
5414
5516
  parseDate: parseDate,
5415
5517
  placeholder: placeholder,
5416
5518
  onDayChange: onChange,
5519
+ onDayPickerHide: function onDayPickerHide() {
5520
+ return setShowCalendar(false);
5521
+ },
5417
5522
  overlayComponent: function overlayComponent(props) {
5418
5523
  return React__default.createElement(DatePickerCalendar, Object.assign({}, props, {
5419
- inputNode: ref === null || ref === void 0 ? void 0 : ref.current
5524
+ inputNode: ref === null || ref === void 0 ? void 0 : ref.current,
5525
+ showCalendar: showCalendar,
5526
+ onClickOutside: function onClickOutside() {
5527
+ return setShowCalendar(false);
5528
+ }
5420
5529
  }));
5421
5530
  },
5422
5531
  dayPickerProps: dayPickerProps,
@@ -5427,7 +5536,16 @@ var ToDate = function ToDate(_ref, ref) {
5427
5536
  readOnly: readOnly,
5428
5537
  disabled: disabled,
5429
5538
  'data-testid': "range-picker-field-to-" + name,
5430
- type: 'text'
5539
+ type: 'text',
5540
+ onFocus: function onFocus() {
5541
+ return setShowCalendar(true);
5542
+ },
5543
+ onBlur: function onBlur() {
5544
+ setTimeout(_onBlur, 200);
5545
+ }
5546
+ },
5547
+ onDayPickerShow: function onDayPickerShow() {
5548
+ return setShowCalendar(true);
5431
5549
  }
5432
5550
  });
5433
5551
  };
@@ -5435,11 +5553,12 @@ var ToDate = function ToDate(_ref, ref) {
5435
5553
  var ToDate$1 = forwardRef(ToDate);
5436
5554
 
5437
5555
  var DateRangeField = function DateRangeField(_ref) {
5438
- var _classnames, _classnames2;
5556
+ var _classnames;
5439
5557
 
5440
5558
  var name = _ref.name,
5441
5559
  inputId = _ref.id,
5442
5560
  value = _ref.value,
5561
+ disabledDays = _ref.disabledDays,
5443
5562
  _ref$format = _ref.format,
5444
5563
  format = _ref$format === void 0 ? 'MM/dd/yyyy' : _ref$format,
5445
5564
  onChange = _ref.onChange,
@@ -5474,7 +5593,7 @@ var DateRangeField = function DateRangeField(_ref) {
5474
5593
  start = _controllers$value.start,
5475
5594
  end = _controllers$value.end;
5476
5595
  return React__default.createElement(Field, Object.assign({}, fieldProps), React__default.createElement("div", {
5477
- className: classnames(styles$s['date-range-field'], (_classnames = {}, _classnames[styles$s['date-range-field--invalid']] = hasError, _classnames), (_classnames2 = {}, _classnames2[styles$s['date-range-field--disabled']] = disabled, _classnames2))
5596
+ className: classnames(styles$s['date-range-field'], (_classnames = {}, _classnames[styles$s['date-range-field--invalid']] = hasError, _classnames[styles$s['date-range-field--disabled']] = disabled, _classnames))
5478
5597
  }, React__default.createElement(IconCalendarAlt, {
5479
5598
  size: "medium",
5480
5599
  color: GREY400
@@ -5487,6 +5606,7 @@ var DateRangeField = function DateRangeField(_ref) {
5487
5606
  placeholder: placeholder || format.toUpperCase(),
5488
5607
  weekStart: weekStart,
5489
5608
  disabled: disabled,
5609
+ disabledDays: disabledDays,
5490
5610
  readOnly: readOnly,
5491
5611
  onChange: function onChange(val) {
5492
5612
  return controllers.onChange({
@@ -5510,7 +5630,9 @@ var DateRangeField = function DateRangeField(_ref) {
5510
5630
  placeholder: placeholder || format.toUpperCase(),
5511
5631
  weekStart: weekStart,
5512
5632
  disabled: disabled,
5633
+ disabledDays: disabledDays,
5513
5634
  readOnly: readOnly,
5635
+ onBlur: controllers.onBlur,
5514
5636
  onChange: function onChange(val) {
5515
5637
  return controllers.onChange({
5516
5638
  start: start,
@@ -5550,6 +5672,10 @@ var WeekField = function WeekField(_ref) {
5550
5672
  hoverDate = _useState[0],
5551
5673
  setHoverDate = _useState[1];
5552
5674
 
5675
+ var _useState2 = useState(false),
5676
+ showCalendar = _useState2[0],
5677
+ setShowCalendar = _useState2[1];
5678
+
5553
5679
  var inputRef = useRef();
5554
5680
  var controllers = useDateFieldControllers({
5555
5681
  name: name,
@@ -5632,7 +5758,11 @@ var WeekField = function WeekField(_ref) {
5632
5758
  onDayPickerHide: controllers.onBlur,
5633
5759
  overlayComponent: function overlayComponent(props) {
5634
5760
  return React__default.createElement(DatePickerCalendar, Object.assign({}, props, {
5635
- inputNode: inputRef.current
5761
+ inputNode: inputRef.current,
5762
+ showCalendar: showCalendar,
5763
+ onClickOutside: function onClickOutside() {
5764
+ return setShowCalendar(false);
5765
+ }
5636
5766
  }));
5637
5767
  },
5638
5768
  dayPickerProps: dayPickerProps,
@@ -5646,7 +5776,13 @@ var WeekField = function WeekField(_ref) {
5646
5776
  autoComplete: 'off',
5647
5777
  ref: inputRef,
5648
5778
  readOnly: readOnly,
5649
- disabled: disabled
5779
+ disabled: disabled,
5780
+ onFocus: function onFocus() {
5781
+ return setShowCalendar(true);
5782
+ }
5783
+ },
5784
+ onDayPickerShow: function onDayPickerShow() {
5785
+ return setShowCalendar(true);
5650
5786
  }
5651
5787
  })));
5652
5788
  };