@digital-ai/dot-components 2.7.3 → 2.7.4

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/index.umd.js CHANGED
@@ -4748,6 +4748,7 @@
4748
4748
  filterSelectedOptions = _f === void 0 ? true : _f,
4749
4749
  _g = _a.freesolo,
4750
4750
  freesolo = _g === void 0 ? true : _g,
4751
+ checkIfOptionDisabled = _a.checkIfOptionDisabled,
4751
4752
  _h = _a.group,
4752
4753
  group = _h === void 0 ? false : _h,
4753
4754
  helperText = _a.helperText,
@@ -4985,6 +4986,7 @@
4985
4986
  getOptionLabel: function (option) {
4986
4987
  return parseAutoCompleteValue(option);
4987
4988
  },
4989
+ getOptionDisabled: checkIfOptionDisabled,
4988
4990
  groupBy: group ? function (option) {
4989
4991
  return option.group;
4990
4992
  } : undefined,
@@ -10298,6 +10300,28 @@
10298
10300
  }, void 0);
10299
10301
  };
10300
10302
 
10303
+ exports.DatePickerKeydownContext = void 0;
10304
+ (function (DatePickerKeydownContext) {
10305
+ DatePickerKeydownContext[DatePickerKeydownContext["Input"] = 0] = "Input";
10306
+ DatePickerKeydownContext[DatePickerKeydownContext["PickerButton"] = 1] = "PickerButton";
10307
+ DatePickerKeydownContext[DatePickerKeydownContext["Popper"] = 2] = "Popper";
10308
+ })(exports.DatePickerKeydownContext || (exports.DatePickerKeydownContext = {}));
10309
+
10310
+ /** This returns a `boolean` indicating whether the Day.js object contains a valid date or not. */
10311
+ var checkIfValidDate = function checkIfValidDate(date, format) {
10312
+ return dayjs__default["default"](date, format, true).isValid();
10313
+ };
10314
+ var getContextEnumBasedOnTarget = function getContextEnumBasedOnTarget(event, inputElement, contextEnum) {
10315
+ var targetElement = event.target;
10316
+ var isWithinInput = inputElement === null || inputElement === void 0 ? void 0 : inputElement.contains(targetElement);
10317
+ var currentContextEnum = contextEnum;
10318
+ // Key was captured within text field but not on the input itself
10319
+ if (contextEnum === exports.DatePickerKeydownContext.Input && !isWithinInput) {
10320
+ currentContextEnum = exports.DatePickerKeydownContext.PickerButton;
10321
+ }
10322
+ return currentContextEnum;
10323
+ };
10324
+
10301
10325
  var rootClassName$1 = 'dot-date-picker';
10302
10326
  var containerClassName$1 = 'dot-date-picker-container';
10303
10327
  var rectanglePickersDayClassName = 'dot-rectangle-pickers-day';
@@ -10327,6 +10351,7 @@
10327
10351
  disableRipple: true
10328
10352
  }), void 0);
10329
10353
  };
10354
+ var DEFAULT_DATE_FORMAT = 'YYYY-MM-DD';
10330
10355
  var DotDatePicker = function DotDatePicker(_a) {
10331
10356
  var ariaLabel = _a.ariaLabel,
10332
10357
  _b = _a.autoFocus,
@@ -10362,6 +10387,7 @@
10362
10387
  onChange = _a.onChange,
10363
10388
  onClose = _a.onClose,
10364
10389
  onError = _a.onError,
10390
+ onKeyDown = _a.onKeyDown,
10365
10391
  onOpen = _a.onOpen,
10366
10392
  open = _a.open,
10367
10393
  persistentLabel = _a.persistentLabel,
@@ -10371,7 +10397,7 @@
10371
10397
  required = _h === void 0 ? false : _h,
10372
10398
  showDaysOutsideCurrentMonth = _a.showDaysOutsideCurrentMonth,
10373
10399
  value = _a.value;
10374
- var dateFormat = format || 'YYYY-MM-DD';
10400
+ var displayFormat = format || DEFAULT_DATE_FORMAT;
10375
10401
  var hasValueWithoutChangeHandler = value !== undefined && onChange === undefined;
10376
10402
  var hasBothValueAndDefaultValue = value !== undefined && defaultValue !== undefined;
10377
10403
  var isInputReadOnly = readOnly || hasValueWithoutChangeHandler || hasBothValueAndDefaultValue;
@@ -10405,14 +10431,14 @@
10405
10431
  }, [locale]);
10406
10432
  var handleChange = function handleChange(changedValue, context) {
10407
10433
  if (!onChange || changedValue && !changedValue.isValid()) return;
10408
- onChange(changedValue ? changedValue.format(dateFormat) : null, context);
10434
+ onChange(changedValue ? changedValue.format(DEFAULT_DATE_FORMAT) : null, context);
10409
10435
  };
10410
10436
  var handleAccept = function handleAccept(changedValue) {
10411
10437
  if (!onAccept) return;
10412
- onAccept(changedValue ? changedValue.format(dateFormat) : null);
10438
+ onAccept(changedValue ? changedValue.format(DEFAULT_DATE_FORMAT) : null);
10413
10439
  };
10414
10440
  var handleError = function handleError(validationError, currentValue) {
10415
- return onError === null || onError === void 0 ? void 0 : onError(validationError, dayjs__default["default"](currentValue).format(dateFormat));
10441
+ return onError === null || onError === void 0 ? void 0 : onError(validationError, dayjs__default["default"](currentValue).format(DEFAULT_DATE_FORMAT));
10416
10442
  };
10417
10443
  var handleOpen = function handleOpen() {
10418
10444
  if (focusInputOnPopperOpened && inputRef.current) {
@@ -10429,6 +10455,12 @@
10429
10455
  }
10430
10456
  return actionBar;
10431
10457
  };
10458
+ var handleKeyDown = function handleKeyDown(contextEnum) {
10459
+ return function (event) {
10460
+ var currentContextEnum = getContextEnumBasedOnTarget(event, inputRef === null || inputRef === void 0 ? void 0 : inputRef.current, contextEnum);
10461
+ onKeyDown(event, currentContextEnum);
10462
+ };
10463
+ };
10432
10464
  return jsxRuntime.jsx(StyledDatePickerContainer, __assign({
10433
10465
  className: containerClasses,
10434
10466
  "data-testid": dataTestId
@@ -10448,16 +10480,16 @@
10448
10480
  autoFocus: autoFocus,
10449
10481
  closeOnSelect: closeOnSelect,
10450
10482
  className: rootClasses,
10451
- defaultValue: defaultValue && dayjs__default["default"](defaultValue, dateFormat),
10483
+ defaultValue: defaultValue && dayjs__default["default"](defaultValue, DEFAULT_DATE_FORMAT),
10452
10484
  disableOpenPicker: disableOpenPicker || isInputReadOnly || disabled,
10453
10485
  disablePast: disablePast,
10454
10486
  disabled: disabled,
10455
10487
  displayWeekNumber: displayWeekNumber,
10456
10488
  fixedWeekNumber: fixedWeekNumber,
10457
- format: dateFormat,
10489
+ format: displayFormat,
10458
10490
  label: persistentLabel ? null : label,
10459
- maxDate: maxDate && dayjs__default["default"](maxDate, dateFormat),
10460
- minDate: minDate && dayjs__default["default"](minDate, dateFormat),
10491
+ maxDate: maxDate && dayjs__default["default"](maxDate, DEFAULT_DATE_FORMAT),
10492
+ minDate: minDate && dayjs__default["default"](minDate, DEFAULT_DATE_FORMAT),
10461
10493
  onAccept: handleAccept,
10462
10494
  onChange: handleChange,
10463
10495
  onClose: onClose,
@@ -10496,6 +10528,7 @@
10496
10528
  'data-testid': 'dot-date-picker-input',
10497
10529
  onBlur: onBlur
10498
10530
  },
10531
+ onKeyDown: onKeyDown && handleKeyDown(exports.DatePickerKeydownContext.Input),
10499
10532
  inputRef: inputRef,
10500
10533
  fullWidth: fullWidth,
10501
10534
  name: inputName
@@ -10507,10 +10540,11 @@
10507
10540
  disableEnforceFocus: true
10508
10541
  },
10509
10542
  popper: {
10510
- disablePortal: disablePortal
10543
+ disablePortal: disablePortal,
10544
+ onKeyDown: onKeyDown && handleKeyDown(exports.DatePickerKeydownContext.Popper)
10511
10545
  }
10512
10546
  },
10513
- value: value && dayjs__default["default"](value, dateFormat)
10547
+ value: value && dayjs__default["default"](value, DEFAULT_DATE_FORMAT)
10514
10548
  }, void 0)]
10515
10549
  }), void 0)
10516
10550
  }), void 0);
@@ -10597,6 +10631,12 @@
10597
10631
  var getTimePickerButtonType = function getTimePickerButtonType(selectedDaytime) {
10598
10632
  return selectedDaytime && selectedDaytime === exports.Daytime.PM ? 'primary' : 'text';
10599
10633
  };
10634
+ var checkIfOpenPropDefined = function checkIfOpenPropDefined(open) {
10635
+ return open !== null && open !== undefined;
10636
+ };
10637
+ var getDaytimeButtonType = function getDaytimeButtonType(daytimeSelected) {
10638
+ return daytimeSelected && daytimeSelected === exports.Daytime.AM ? 'primary' : 'text';
10639
+ };
10600
10640
 
10601
10641
  var rootClassName = 'dot-time-picker';
10602
10642
  var containerClassName = 'dot-time-picker-container';
@@ -10621,12 +10661,12 @@
10621
10661
  var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
10622
10662
 
10623
10663
  dayjs__default["default"].extend(utc__default["default"]);
10624
- var DEFAULT_PICKER_TIME_FORMAT = 'hh:mm';
10625
- var DEFAULT_TIME_FORMAT = 'hh:mm A';
10664
+ var DEFAULT_PICKER_TIME_FORMAT = 'HH:mm';
10665
+ var DEFAULT_TIME_FORMAT = 'HH:mm';
10626
10666
  var DEFAULT_TIME = '01:00';
10627
10667
  var DotTimePicker = function DotTimePicker(_a) {
10628
10668
  var _b = _a.ampm,
10629
- ampm = _b === void 0 ? true : _b,
10669
+ ampm = _b === void 0 ? false : _b,
10630
10670
  ariaLabel = _a.ariaLabel,
10631
10671
  _c = _a.autoFocus,
10632
10672
  autoFocus = _c === void 0 ? false : _c,
@@ -10635,11 +10675,13 @@
10635
10675
  defaultValue = _a.defaultValue,
10636
10676
  _d = _a.disableOpenPicker,
10637
10677
  disableOpenPicker = _d === void 0 ? false : _d,
10678
+ _e = _a.disableClickAwayListener,
10679
+ disableClickAwayListener = _e === void 0 ? false : _e,
10638
10680
  disabled = _a.disabled,
10639
10681
  error = _a.error,
10640
10682
  format = _a.format,
10641
- _e = _a.fullWidth,
10642
- fullWidth = _e === void 0 ? false : _e,
10683
+ _f = _a.fullWidth,
10684
+ fullWidth = _f === void 0 ? false : _f,
10643
10685
  helperText = _a.helperText,
10644
10686
  hideActionButtons = _a.hideActionButtons,
10645
10687
  inputId = _a.inputId,
@@ -10647,32 +10689,34 @@
10647
10689
  label = _a.label,
10648
10690
  onAccept = _a.onAccept,
10649
10691
  onBlur = _a.onBlur,
10692
+ onCancel = _a.onCancel,
10650
10693
  onChange = _a.onChange,
10651
10694
  onClose = _a.onClose,
10695
+ onKeyDown = _a.onKeyDown,
10652
10696
  onOpen = _a.onOpen,
10653
10697
  open = _a.open,
10654
10698
  persistentLabel = _a.persistentLabel,
10655
- _f = _a.readOnly,
10656
- readOnly = _f === void 0 ? false : _f,
10657
- _g = _a.required,
10658
- required = _g === void 0 ? false : _g,
10699
+ _g = _a.readOnly,
10700
+ readOnly = _g === void 0 ? false : _g,
10701
+ _h = _a.required,
10702
+ required = _h === void 0 ? false : _h,
10659
10703
  value = _a.value;
10660
- var timeFormat = format || DEFAULT_TIME_FORMAT;
10704
+ var displayFormat = format || DEFAULT_TIME_FORMAT;
10661
10705
  var hasValueWithoutChangeHandler = value !== undefined && onChange === undefined;
10662
10706
  var hasBothValueAndDefaultValue = value !== undefined && defaultValue !== undefined;
10663
10707
  var isComponentReadOnly = readOnly || hasValueWithoutChangeHandler || hasBothValueAndDefaultValue;
10664
10708
  var rootClasses = useStylesWithRootClass(rootClassName, className, isComponentReadOnly ? 'read-only' : '');
10665
10709
  var containerClasses = useStylesWithRootClass(containerClassName, fullWidth ? 'full-width' : '', className);
10666
10710
  var inputRef = React.useRef(null);
10667
- var _h = React.useState(false),
10668
- isPickerOpened = _h[0],
10669
- setIsPickerOpened = _h[1];
10670
- var _j = React.useState(null),
10671
- time = _j[0],
10672
- setTime = _j[1];
10673
- var _k = React.useState(),
10674
- pickerTime = _k[0],
10675
- setPickerTime = _k[1];
10711
+ var _j = React.useState(false),
10712
+ isPickerOpened = _j[0],
10713
+ setIsPickerOpened = _j[1];
10714
+ var _k = React.useState(null),
10715
+ time = _k[0],
10716
+ setTime = _k[1];
10717
+ var _l = React.useState(),
10718
+ pickerTime = _l[0],
10719
+ setPickerTime = _l[1];
10676
10720
  var hoursRef = React.useRef(null);
10677
10721
  var minutesRef = React.useRef(null);
10678
10722
  var daytimeRef = React.useRef(null);
@@ -10680,7 +10724,7 @@
10680
10724
  var minutes = getMinutesForTimePicker();
10681
10725
  var daytimeSelected = getSelectedDaytime(pickerTime);
10682
10726
  var selectedPickerHour = pickerTime && calculateHourBasedOnTimeFormat(pickerTime, ampm);
10683
- var isOpenPropDefined = open !== null && open !== undefined;
10727
+ var isOpenPropDefined = checkIfOpenPropDefined(open);
10684
10728
  var isControlledComponent = onChange && value !== undefined;
10685
10729
  React.useEffect(function () {
10686
10730
  if (hasValueWithoutChangeHandler) {
@@ -10693,9 +10737,9 @@
10693
10737
  React.useEffect(function () {
10694
10738
  var timeValue = null;
10695
10739
  if (defaultValue) {
10696
- timeValue = getDayjsUtcDate(defaultValue, timeFormat);
10740
+ timeValue = getDayjsUtcDate(defaultValue, DEFAULT_TIME_FORMAT);
10697
10741
  } else if (value) {
10698
- timeValue = getDayjsUtcDate(value, timeFormat);
10742
+ timeValue = getDayjsUtcDate(value, DEFAULT_TIME_FORMAT);
10699
10743
  }
10700
10744
  setTime(timeValue);
10701
10745
  setPickerTime(timeValue);
@@ -10721,7 +10765,7 @@
10721
10765
  var currentTimeValue = currentValue ? currentValue : null;
10722
10766
  setPickerTime(currentValue ? currentValue : null);
10723
10767
  !isControlledComponent && setTime(currentTimeValue);
10724
- onChange === null || onChange === void 0 ? void 0 : onChange(currentValue ? currentValue.format(timeFormat) : null, context);
10768
+ onChange === null || onChange === void 0 ? void 0 : onChange(currentValue ? currentValue.format(DEFAULT_TIME_FORMAT) : null, context);
10725
10769
  };
10726
10770
  var handleClose = function handleClose() {
10727
10771
  !isOpenPropDefined && setIsPickerOpened(false);
@@ -10746,6 +10790,7 @@
10746
10790
  };
10747
10791
  var handleCancel = function handleCancel() {
10748
10792
  setPickerTime(time);
10793
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
10749
10794
  handleClose();
10750
10795
  };
10751
10796
  var handleSet = function handleSet() {
@@ -10754,12 +10799,18 @@
10754
10799
  return;
10755
10800
  }
10756
10801
  setTime(pickerTime);
10757
- onChange === null || onChange === void 0 ? void 0 : onChange(pickerTime.format(timeFormat), {
10802
+ onChange === null || onChange === void 0 ? void 0 : onChange(pickerTime.format(DEFAULT_TIME_FORMAT), {
10758
10803
  validationError: null
10759
10804
  });
10760
- onAccept === null || onAccept === void 0 ? void 0 : onAccept(pickerTime.format(timeFormat));
10805
+ onAccept === null || onAccept === void 0 ? void 0 : onAccept(pickerTime.format(DEFAULT_TIME_FORMAT));
10761
10806
  handleClose();
10762
10807
  };
10808
+ var handleKeyDown = function handleKeyDown(contextEnum) {
10809
+ return function (event) {
10810
+ var currentContextEnum = getContextEnumBasedOnTarget(event, inputRef === null || inputRef === void 0 ? void 0 : inputRef.current, contextEnum);
10811
+ onKeyDown(event, currentContextEnum);
10812
+ };
10813
+ };
10763
10814
  var scrollToSelectedTime = function scrollToSelectedTime() {
10764
10815
  if (!(hoursRef === null || hoursRef === void 0 ? void 0 : hoursRef.current) || !(minutesRef === null || minutesRef === void 0 ? void 0 : minutesRef.current)) return;
10765
10816
  var selectedHour = calculateHourBasedOnTimeFormat(time, ampm);
@@ -10794,6 +10845,118 @@
10794
10845
  if (event.key !== 'Escape' || !isPickerOpened) return;
10795
10846
  handleCancel();
10796
10847
  };
10848
+ var wrapWithClickAwayListener = function wrapWithClickAwayListener(children) {
10849
+ return jsxRuntime.jsx(material.ClickAwayListener, __assign({
10850
+ onClickAway: handleSet
10851
+ }, {
10852
+ children: children
10853
+ }), void 0);
10854
+ };
10855
+ var renderTimePickerHours = function renderTimePickerHours() {
10856
+ return hours.map(function (hour, index) {
10857
+ var isSelected = pickerTime ? selectedPickerHour === hour : false;
10858
+ return jsxRuntime.jsx(DotButton, __assign({
10859
+ className: "dot-picker-button",
10860
+ "data-testid": dataTestId && dataTestId + "-hour-button-" + hour,
10861
+ onClick: function () {
10862
+ return handleHourClick(hour);
10863
+ },
10864
+ onKeyDown: handleTimeKeydown(hoursRef, index),
10865
+ tabIndex: getPopperButtonTabIndex(index, isSelected, selectedPickerHour),
10866
+ type: isSelected ? 'primary' : 'text'
10867
+ }, {
10868
+ children: hour.toString().padStart(2, '0')
10869
+ }), hour);
10870
+ });
10871
+ };
10872
+ var renderTimePickerMinutes = function renderTimePickerMinutes() {
10873
+ return minutes.map(function (minute, index) {
10874
+ var isSelected = pickerTime ? pickerTime.minute() === minute : false;
10875
+ return jsxRuntime.jsx(DotButton, __assign({
10876
+ className: "dot-picker-button",
10877
+ "data-testid": dataTestId && dataTestId + "-minute-button-" + minute,
10878
+ type: isSelected ? 'primary' : 'text',
10879
+ onClick: function () {
10880
+ return handleMinuteClick(minute);
10881
+ },
10882
+ onKeyDown: handleTimeKeydown(minutesRef, index),
10883
+ tabIndex: getPopperButtonTabIndex(index, isSelected, pickerTime === null || pickerTime === void 0 ? void 0 : pickerTime.minute())
10884
+ }, {
10885
+ children: minute.toString().padStart(2, '0')
10886
+ }), minute);
10887
+ });
10888
+ };
10889
+ var renderTimePickerActionButtons = function renderTimePickerActionButtons() {
10890
+ return jsxRuntime.jsxs("div", __assign({
10891
+ className: "dot-time-picker-action-buttons"
10892
+ }, {
10893
+ children: [jsxRuntime.jsx(DotButton, __assign({
10894
+ "data-testid": dataTestId && dataTestId + "-cancel",
10895
+ onClick: handleCancel,
10896
+ size: "small",
10897
+ type: "text"
10898
+ }, {
10899
+ children: "Cancel"
10900
+ }), void 0), jsxRuntime.jsx(DotButton, __assign({
10901
+ "data-testid": dataTestId && dataTestId + "-set",
10902
+ onClick: handleSet,
10903
+ size: "small",
10904
+ type: "text"
10905
+ }, {
10906
+ children: "Set"
10907
+ }), void 0)]
10908
+ }), void 0);
10909
+ };
10910
+ var renderDaytime = function renderDaytime() {
10911
+ return jsxRuntime.jsxs("div", __assign({
10912
+ className: "dot-time-picker-daytime",
10913
+ ref: daytimeRef
10914
+ }, {
10915
+ children: [jsxRuntime.jsx(DotButton, __assign({
10916
+ className: "dot-picker-button",
10917
+ "data-testid": dataTestId && dataTestId + "-am-button",
10918
+ onClick: function () {
10919
+ return handleDaytimeSelection(exports.Daytime.AM);
10920
+ },
10921
+ onKeyDown: handleTimeKeydown(daytimeRef, 0),
10922
+ tabIndex: getDaytimeButtonTabIndex(exports.Daytime.AM, daytimeSelected),
10923
+ type: getDaytimeButtonType(daytimeSelected)
10924
+ }, {
10925
+ children: exports.Daytime.AM
10926
+ }), exports.Daytime.AM), jsxRuntime.jsx(DotButton, __assign({
10927
+ className: "dot-picker-button",
10928
+ "data-testid": dataTestId && dataTestId + "-pm-button",
10929
+ onClick: function () {
10930
+ return handleDaytimeSelection(exports.Daytime.PM);
10931
+ },
10932
+ onKeyDown: handleTimeKeydown(daytimeRef, 1),
10933
+ tabIndex: getDaytimeButtonTabIndex(exports.Daytime.PM, daytimeSelected),
10934
+ type: getTimePickerButtonType(daytimeSelected)
10935
+ }, {
10936
+ children: exports.Daytime.PM
10937
+ }), exports.Daytime.PM)]
10938
+ }), void 0);
10939
+ };
10940
+ var paperComponent = jsxRuntime.jsxs(material.Paper, __assign({
10941
+ className: "dot-time-picker-paper",
10942
+ elevation: 8
10943
+ }, {
10944
+ children: [jsxRuntime.jsxs("div", __assign({
10945
+ className: "dot-time-picker-selection"
10946
+ }, {
10947
+ children: [jsxRuntime.jsx("div", __assign({
10948
+ className: "dot-time-picker-hours",
10949
+ ref: hoursRef
10950
+ }, {
10951
+ children: renderTimePickerHours()
10952
+ }), void 0), jsxRuntime.jsx("div", __assign({
10953
+ className: "dot-time-picker-minutes",
10954
+ ref: minutesRef
10955
+ }, {
10956
+ children: renderTimePickerMinutes()
10957
+ }), void 0), ampm && renderDaytime()]
10958
+ }), void 0), !hideActionButtons && renderTimePickerActionButtons()]
10959
+ }), void 0);
10797
10960
  return jsxRuntime.jsxs(StyledTimePickerContainer, __assign({
10798
10961
  className: containerClasses,
10799
10962
  "data-testid": dataTestId,
@@ -10815,7 +10978,7 @@
10815
10978
  autoFocus: autoFocus,
10816
10979
  className: rootClasses,
10817
10980
  disabled: disabled,
10818
- format: format,
10981
+ format: displayFormat,
10819
10982
  inputRef: inputRef,
10820
10983
  label: persistentLabel ? null : label,
10821
10984
  onChange: handleInputChange,
@@ -10847,7 +11010,8 @@
10847
11010
  onBlur: onBlur
10848
11011
  },
10849
11012
  fullWidth: fullWidth,
10850
- name: inputName
11013
+ name: inputName,
11014
+ onKeyDown: onKeyDown && handleKeyDown(exports.DatePickerKeydownContext.Input)
10851
11015
  },
10852
11016
  field: {
10853
11017
  readOnly: isComponentReadOnly
@@ -10861,105 +11025,10 @@
10861
11025
  "data-testid": dataTestId && dataTestId + "-popper",
10862
11026
  disablePortal: true,
10863
11027
  open: isPickerOpened,
11028
+ onKeyDown: onKeyDown && handleKeyDown(exports.DatePickerKeydownContext.Popper),
10864
11029
  placement: "bottom-start"
10865
11030
  }, {
10866
- children: jsxRuntime.jsx(material.ClickAwayListener, __assign({
10867
- onClickAway: handleSet
10868
- }, {
10869
- children: jsxRuntime.jsxs(material.Paper, __assign({
10870
- className: "dot-time-picker-paper",
10871
- elevation: 8
10872
- }, {
10873
- children: [jsxRuntime.jsxs("div", __assign({
10874
- className: "dot-time-picker-selection"
10875
- }, {
10876
- children: [jsxRuntime.jsx("div", __assign({
10877
- className: "dot-time-picker-hours",
10878
- ref: hoursRef
10879
- }, {
10880
- children: hours.map(function (hour, index) {
10881
- var isSelected = pickerTime ? selectedPickerHour === hour : false;
10882
- return jsxRuntime.jsx(DotButton, __assign({
10883
- className: "dot-picker-button",
10884
- "data-testid": dataTestId && dataTestId + "-hour-button-" + hour,
10885
- onClick: function () {
10886
- return handleHourClick(hour);
10887
- },
10888
- onKeyDown: handleTimeKeydown(hoursRef, index),
10889
- tabIndex: getPopperButtonTabIndex(index, isSelected, selectedPickerHour),
10890
- type: isSelected ? 'primary' : 'text'
10891
- }, {
10892
- children: hour.toString().padStart(2, '0')
10893
- }), hour);
10894
- })
10895
- }), void 0), jsxRuntime.jsx("div", __assign({
10896
- className: "dot-time-picker-minutes",
10897
- ref: minutesRef
10898
- }, {
10899
- children: minutes.map(function (minute, index) {
10900
- var isSelected = pickerTime ? pickerTime.minute() === minute : false;
10901
- return jsxRuntime.jsx(DotButton, __assign({
10902
- className: "dot-picker-button",
10903
- "data-testid": dataTestId && dataTestId + "-minute-button-" + minute,
10904
- type: isSelected ? 'primary' : 'text',
10905
- onClick: function () {
10906
- return handleMinuteClick(minute);
10907
- },
10908
- onKeyDown: handleTimeKeydown(minutesRef, index),
10909
- tabIndex: getPopperButtonTabIndex(index, isSelected, pickerTime === null || pickerTime === void 0 ? void 0 : pickerTime.minute())
10910
- }, {
10911
- children: minute.toString().padStart(2, '0')
10912
- }), minute);
10913
- })
10914
- }), void 0), ampm && jsxRuntime.jsxs("div", __assign({
10915
- className: "dot-time-picker-daytime",
10916
- ref: daytimeRef
10917
- }, {
10918
- children: [jsxRuntime.jsx(DotButton, __assign({
10919
- className: "dot-picker-button",
10920
- "data-testid": dataTestId && dataTestId + "-am-button",
10921
- onClick: function () {
10922
- return handleDaytimeSelection(exports.Daytime.AM);
10923
- },
10924
- onKeyDown: handleTimeKeydown(daytimeRef, 0),
10925
- tabIndex: getDaytimeButtonTabIndex(exports.Daytime.AM, daytimeSelected),
10926
- type: daytimeSelected && daytimeSelected === exports.Daytime.AM ? 'primary' : 'text'
10927
- }, {
10928
- children: exports.Daytime.AM
10929
- }), exports.Daytime.AM), jsxRuntime.jsx(DotButton, __assign({
10930
- className: "dot-picker-button",
10931
- "data-testid": dataTestId && dataTestId + "-pm-button",
10932
- onClick: function () {
10933
- return handleDaytimeSelection(exports.Daytime.PM);
10934
- },
10935
- onKeyDown: handleTimeKeydown(daytimeRef, 1),
10936
- tabIndex: getDaytimeButtonTabIndex(exports.Daytime.PM, daytimeSelected),
10937
- type: getTimePickerButtonType(daytimeSelected)
10938
- }, {
10939
- children: exports.Daytime.PM
10940
- }), exports.Daytime.PM)]
10941
- }), void 0)]
10942
- }), void 0), !hideActionButtons && jsxRuntime.jsxs("div", __assign({
10943
- className: "dot-time-picker-action-buttons"
10944
- }, {
10945
- children: [jsxRuntime.jsx(DotButton, __assign({
10946
- "data-testid": dataTestId && dataTestId + "-cancel",
10947
- onClick: handleCancel,
10948
- size: "small",
10949
- type: "text"
10950
- }, {
10951
- children: "Cancel"
10952
- }), void 0), jsxRuntime.jsx(DotButton, __assign({
10953
- "data-testid": dataTestId && dataTestId + "-set",
10954
- onClick: handleSet,
10955
- size: "small",
10956
- type: "text"
10957
- }, {
10958
- children: "Set"
10959
- }), void 0)]
10960
- }), void 0)]
10961
- }), void 0)
10962
- }), void 0)
11031
+ children: disableClickAwayListener ? paperComponent : wrapWithClickAwayListener(paperComponent)
10963
11032
  }), void 0)]
10964
11033
  }), void 0);
10965
11034
  };
@@ -11052,6 +11121,7 @@
11052
11121
  exports.DotTruncateWithTooltip = DotTruncateWithTooltip;
11053
11122
  exports.DotTypography = DotTypography;
11054
11123
  exports.avatarColors = avatarColors;
11124
+ exports.checkIfValidDate = checkIfValidDate;
11055
11125
  exports.lightColors = lightThemeColors;
11056
11126
  exports.mockScrollIntoView = mockScrollIntoView;
11057
11127
  exports.parseAutoCompleteValue = parseAutoCompleteValue;
@@ -30,6 +30,8 @@ export interface AutoCompleteProps<T extends AutoCompleteOption = AutoCompleteOp
30
30
  actionItem?: ActionItem;
31
31
  /** This prop helps users to fill forms faster */
32
32
  autoFocus?: boolean;
33
+ /** Used to determine the disabled state for a given option. */
34
+ checkIfOptionDisabled?: (option: T) => boolean;
33
35
  /** default option that is selected */
34
36
  defaultValue?: AutoCompleteValue;
35
37
  /** Controls size of chip spacing within the autocomplete **/
@@ -94,4 +96,4 @@ export interface AutoCompleteProps<T extends AutoCompleteOption = AutoCompleteOp
94
96
  /** If true, the label will be displayed in a warning state. */
95
97
  warning?: boolean;
96
98
  }
97
- export declare const DotAutoComplete: <T extends AutoCompleteOption>({ ListboxComponent, actionItem, ariaLabel, autoFocus, className, "data-testid": dataTestId, defaultValue, dense, disabled, disablePortal, endAdornmentTooltip, error, filterSelectedOptions, freesolo, group, helperText, inputId, inputRef, label, loading, maxHeight, multiple, onBlur, onChange, onClose, onInputChange, onOpen, open, options, persistentLabel, placeholder, readOnly, renderOption, renderTags, required, size, value, warning, }: AutoCompleteProps<T>) => JSX.Element;
99
+ export declare const DotAutoComplete: <T extends AutoCompleteOption>({ ListboxComponent, actionItem, ariaLabel, autoFocus, className, "data-testid": dataTestId, defaultValue, dense, disabled, disablePortal, endAdornmentTooltip, error, filterSelectedOptions, freesolo, checkIfOptionDisabled, group, helperText, inputId, inputRef, label, loading, maxHeight, multiple, onBlur, onChange, onClose, onInputChange, onOpen, open, options, persistentLabel, placeholder, readOnly, renderOption, renderTags, required, size, value, warning, }: AutoCompleteProps<T>) => JSX.Element;
@@ -1,10 +1,11 @@
1
1
  import { ComponentMeta, Story } from '@storybook/react';
2
2
  import { AutoCompleteOption, AutoCompleteProps } from './AutoComplete';
3
3
  import { AutoCompleteWithRenderOption } from './Autocomplete.stories.data';
4
- declare const _default: ComponentMeta<(<T extends AutoCompleteOption>({ ListboxComponent, actionItem, ariaLabel, autoFocus, className, "data-testid": dataTestId, defaultValue, dense, disabled, disablePortal, endAdornmentTooltip, error, filterSelectedOptions, freesolo, group, helperText, inputId, inputRef, label, loading, maxHeight, multiple, onBlur, onChange, onClose, onInputChange, onOpen, open, options, persistentLabel, placeholder, readOnly, renderOption, renderTags, required, size, value, warning, }: AutoCompleteProps<T>) => JSX.Element)>;
4
+ declare const _default: ComponentMeta<(<T extends AutoCompleteOption>({ ListboxComponent, actionItem, ariaLabel, autoFocus, className, "data-testid": dataTestId, defaultValue, dense, disabled, disablePortal, endAdornmentTooltip, error, filterSelectedOptions, freesolo, checkIfOptionDisabled, group, helperText, inputId, inputRef, label, loading, maxHeight, multiple, onBlur, onChange, onClose, onInputChange, onOpen, open, options, persistentLabel, placeholder, readOnly, renderOption, renderTags, required, size, value, warning, }: AutoCompleteProps<T>) => JSX.Element)>;
5
5
  export default _default;
6
6
  export declare const Default: any;
7
7
  export declare const WithActionItem: any;
8
+ export declare const WithDisabledItems: any;
8
9
  export declare const WithCustomActionItem: Story<AutoCompleteProps>;
9
10
  export declare const WithAsyncLoad: Story<AutoCompleteProps>;
10
11
  declare type AutoCompleteWithRenderOptionProps = AutoCompleteProps<AutoCompleteWithRenderOption>;
@@ -1,8 +1,9 @@
1
- import { FocusEvent, ReactNode } from 'react';
1
+ import { FocusEvent, KeyboardEvent, ReactNode } from 'react';
2
2
  import { PickersDayProps } from '@mui/x-date-pickers';
3
3
  import { FieldChangeHandlerContext } from '@mui/x-date-pickers/internals';
4
4
  import { CommonProps } from '../CommonProps';
5
5
  import { DatePickerLocale } from './';
6
+ import { DatePickerKeydownContext } from './utils/models';
6
7
  export declare const RectanglePickersDay: (pickersDayProps: PickersDayProps<unknown>) => JSX.Element;
7
8
  export interface DatePickerProps extends CommonProps {
8
9
  /** If `true`, the `input` element is focused during the first mount. */
@@ -57,6 +58,8 @@ export interface DatePickerProps extends CommonProps {
57
58
  onClose?: () => void;
58
59
  /** Callback fired when the error associated to the current value changes. */
59
60
  onError?: (error: string, value: string) => void;
61
+ /** A function that should be executed when key is pressed from input or popper */
62
+ onKeyDown?: (e: KeyboardEvent<HTMLElement>, contextEnum: DatePickerKeydownContext) => void;
60
63
  /** Callback fired when the popup requests to be opened. Use in controlled mode (see `open`). */
61
64
  onOpen?: () => void;
62
65
  /** Control the popup or dialog open state. */
@@ -74,7 +77,7 @@ export interface DatePickerProps extends CommonProps {
74
77
  * - ignored if `calendars` equals more than `1` on range pickers.
75
78
  */
76
79
  showDaysOutsideCurrentMonth?: boolean;
77
- /** The selected value. Used when the component is controlled. */
80
+ /** The selected value. Used when the component is controlled. Date in ISO 8601 format, ie: YYYY-MM-DD */
78
81
  value?: string;
79
82
  }
80
- export declare const DotDatePicker: ({ ariaLabel, autoFocus, className, closeOnSelect, "data-testid": dataTestId, defaultValue, disableOpenPicker, disablePast, disablePortal, disabled, displayWeekNumber, displayClearButton, error, fixedWeekNumber, focusInputOnPopperOpened, format, fullWidth, helperText, inputId, inputName, label, locale, maxDate, minDate, onAccept, onBlur, onChange, onClose, onError, onOpen, open, persistentLabel, readOnly, required, showDaysOutsideCurrentMonth, value, }: DatePickerProps) => JSX.Element;
83
+ export declare const DotDatePicker: ({ ariaLabel, autoFocus, className, closeOnSelect, "data-testid": dataTestId, defaultValue, disableOpenPicker, disablePast, disablePortal, disabled, displayWeekNumber, displayClearButton, error, fixedWeekNumber, focusInputOnPopperOpened, format, fullWidth, helperText, inputId, inputName, label, locale, maxDate, minDate, onAccept, onBlur, onChange, onClose, onError, onKeyDown, onOpen, open, persistentLabel, readOnly, required, showDaysOutsideCurrentMonth, value, }: DatePickerProps) => JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import { ComponentMeta, Story } from '@storybook/react';
2
2
  import { DatePickerProps } from './';
3
- declare const _default: ComponentMeta<({ ariaLabel, autoFocus, className, closeOnSelect, "data-testid": dataTestId, defaultValue, disableOpenPicker, disablePast, disablePortal, disabled, displayWeekNumber, displayClearButton, error, fixedWeekNumber, focusInputOnPopperOpened, format, fullWidth, helperText, inputId, inputName, label, locale, maxDate, minDate, onAccept, onBlur, onChange, onClose, onError, onOpen, open, persistentLabel, readOnly, required, showDaysOutsideCurrentMonth, value, }: DatePickerProps) => JSX.Element>;
3
+ declare const _default: ComponentMeta<({ ariaLabel, autoFocus, className, closeOnSelect, "data-testid": dataTestId, defaultValue, disableOpenPicker, disablePast, disablePortal, disabled, displayWeekNumber, displayClearButton, error, fixedWeekNumber, focusInputOnPopperOpened, format, fullWidth, helperText, inputId, inputName, label, locale, maxDate, minDate, onAccept, onBlur, onChange, onClose, onError, onKeyDown, onOpen, open, persistentLabel, readOnly, required, showDaysOutsideCurrentMonth, value, }: DatePickerProps) => JSX.Element>;
4
4
  export default _default;
5
5
  export declare const Default: DatePickerProps;
6
6
  export declare const WithHelperText: any;
@@ -24,8 +24,4 @@ export declare const WithMinMaxDates: Story<DatePickerProps>;
24
24
  export declare const WithLocaleConfiguration: Story<DatePickerProps>;
25
25
  export declare const WithChangeOnBlur: Story<DatePickerProps>;
26
26
  export declare const WithOpenedPopperInControlledMode: Story<DatePickerProps>;
27
- export interface TaskDateViewContentProps {
28
- date: string;
29
- }
30
- export declare const TaskDateViewContent: ({ date }: TaskDateViewContentProps) => JSX.Element;
31
27
  export declare const WithConditionalRendering: Story<DatePickerProps>;
@@ -1,3 +1,5 @@
1
1
  export type { FieldChangeHandlerContext } from '@mui/x-date-pickers/internals';
2
2
  export type { DatePickerLocale } from './utils/models';
3
+ export { DatePickerKeydownContext } from './utils/models';
4
+ export { checkIfValidDate } from './utils/helpers';
3
5
  export * from './DatePicker';
@@ -0,0 +1,5 @@
1
+ import { DatePickerKeydownContext } from './models';
2
+ import { KeyboardEvent } from 'react';
3
+ /** This returns a `boolean` indicating whether the Day.js object contains a valid date or not. */
4
+ export declare const checkIfValidDate: (date: string, format?: string) => boolean;
5
+ export declare const getContextEnumBasedOnTarget: (event: KeyboardEvent<HTMLElement>, inputElement: HTMLInputElement | null, contextEnum: DatePickerKeydownContext) => DatePickerKeydownContext;
@@ -36,3 +36,8 @@ export interface DatePickerLocale {
36
36
  weekdaysShort?: string[];
37
37
  yearStart?: number;
38
38
  }
39
+ export declare enum DatePickerKeydownContext {
40
+ Input = 0,
41
+ PickerButton = 1,
42
+ Popper = 2
43
+ }
@@ -96,7 +96,7 @@ export { DotPopper } from './popper';
96
96
  export { DotTruncateWithTooltip } from './truncate-with-tooltip';
97
97
  export { DotDraggableList } from './draggable-list';
98
98
  export { DotLinearProgress } from './linear-progress';
99
- export { DotDatePicker } from './date-picker';
99
+ export { DatePickerKeydownContext, DotDatePicker, checkIfValidDate, } from './date-picker';
100
100
  export { Daytime, DotTimePicker, mockScrollIntoView } from './time-picker';
101
101
  export { DotClickAwayListener } from './click-away-listener';
102
102
  export { CreateUUID } from './createUUID';