@useblu/ocean-react 1.130.0 → 1.131.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/index.js CHANGED
@@ -34592,8 +34592,42 @@ var getInputPlaceholder = function (localeOption) {
34592
34592
  return localeOption.code === 'pt-BR' ? 'dd/mm/aaaa' : 'mm/dd/yyyy';
34593
34593
  };
34594
34594
 
34595
+ function useDisabledDaysTooltip(disabledDaysMessage) {
34596
+ var _a = e.useState(false), showDisabledTooltip = _a[0], setShowDisabledTooltip = _a[1];
34597
+ var tooltipTimerRef = e.useRef(null);
34598
+ var handleDisabledDayClick = e.useCallback(function () {
34599
+ if (disabledDaysMessage) {
34600
+ if (tooltipTimerRef.current)
34601
+ clearTimeout(tooltipTimerRef.current);
34602
+ setShowDisabledTooltip(true);
34603
+ tooltipTimerRef.current = setTimeout(function () { return setShowDisabledTooltip(false); }, 4000);
34604
+ }
34605
+ }, [disabledDaysMessage]);
34606
+ var handleEnabledDayClick = e.useCallback(function () {
34607
+ setShowDisabledTooltip(false);
34608
+ }, []);
34609
+ var createDayClickHandler = e.useCallback(function (originalHandler) {
34610
+ return function (day, modifiers) {
34611
+ if (modifiers.disabled) {
34612
+ handleDisabledDayClick();
34613
+ return;
34614
+ }
34615
+ handleEnabledDayClick();
34616
+ originalHandler(day);
34617
+ };
34618
+ }, [handleDisabledDayClick, handleEnabledDayClick]);
34619
+ e.useEffect(function () { return function () {
34620
+ if (tooltipTimerRef.current)
34621
+ clearTimeout(tooltipTimerRef.current);
34622
+ }; }, []);
34623
+ return {
34624
+ showDisabledTooltip: showDisabledTooltip,
34625
+ createDayClickHandler: createDayClickHandler,
34626
+ };
34627
+ }
34628
+
34595
34629
  function useDatePickerSingle(_a) {
34596
- var value = _a.value, onSelect = _a.onSelect, startsToday = _a.startsToday, locale = _a.locale;
34630
+ var value = _a.value, onSelect = _a.onSelect, startsToday = _a.startsToday, locale = _a.locale, disabledDaysMessage = _a.disabledDaysMessage;
34597
34631
  var localeOption = locale || ptBr;
34598
34632
  var localeDateFormat = localeOption &&
34599
34633
  localeOption.formatLong &&
@@ -34604,11 +34638,8 @@ function useDatePickerSingle(_a) {
34604
34638
  var _c = e.useState(''), currentField = _c[0], setCurrentField = _c[1];
34605
34639
  var _d = e.useState(), currentMonthToDisplay = _d[0], setCurrentMonthToDisplay = _d[1];
34606
34640
  var _e = e.useState(''), datePickerCache = _e[0], setDatePickerCache = _e[1];
34641
+ var _f = useDisabledDaysTooltip(disabledDaysMessage), showDisabledTooltip = _f.showDisabledTooltip, createDayClickHandler = _f.createDayClickHandler;
34607
34642
  var fromDate = parse$1(value || '', localeDateFormat, new Date());
34608
- e.useEffect(function () {
34609
- if (value === '')
34610
- setCurrentField('');
34611
- }, [value]);
34612
34643
  var updateState = function (updateData, updateCache) {
34613
34644
  onSelect(updateData);
34614
34645
  return updateCache && setDatePickerCache(updateData);
@@ -34622,14 +34653,11 @@ function useDatePickerSingle(_a) {
34622
34653
  setShowDayPicker(false);
34623
34654
  }
34624
34655
  };
34656
+ var handleDayClickWithModifiers = createDayClickHandler(handleDayClick);
34625
34657
  var createHandleToggleClick = function (fieldId) {
34626
34658
  setShowDayPicker(!showDayPicker);
34627
34659
  setCurrentField(fieldId);
34628
34660
  };
34629
- var disabledDays = function (day) {
34630
- var startToday = handleValidateStartsToday(startsToday, day);
34631
- return startToday;
34632
- };
34633
34661
  var closeCalendarDelay = function () {
34634
34662
  setTimeout(function () { return setShowDayPicker(false); }, 500);
34635
34663
  };
@@ -34654,8 +34682,10 @@ function useDatePickerSingle(_a) {
34654
34682
  var parsedDate = parse$1(date, 'dd/MM/yyyy', new Date());
34655
34683
  setCurrentMonthToDisplay(parsedDate);
34656
34684
  };
34657
- var CustomStyles = {
34658
- root: 'ods-date__calendar ods-date_calendar_m1',
34685
+ var CustomStyles = function (inline) { return ({
34686
+ root: inline
34687
+ ? 'ods-date__inline-calendar'
34688
+ : 'ods-date__calendar ods-date_calendar_m1',
34659
34689
  caption: 'ods-date__caption',
34660
34690
  nav_button: 'ods-date__navButtons',
34661
34691
  nav_button_previous: 'ods-date__navButtonPrev-datepicker',
@@ -34671,9 +34701,13 @@ function useDatePickerSingle(_a) {
34671
34701
  day_today: 'ods-date__today',
34672
34702
  day_selected: 'ods-date__selected-datepicker',
34673
34703
  day_disabled: 'ods-date__disabled',
34674
- };
34704
+ }); };
34675
34705
  var selectedDay = fromDate;
34676
34706
  var inputPlaceholder = getInputPlaceholder(localeOption);
34707
+ e.useEffect(function () {
34708
+ if (value === '')
34709
+ setCurrentField('');
34710
+ }, [value]);
34677
34711
  return {
34678
34712
  input1Ref: input1Ref,
34679
34713
  input2Ref: input2Ref,
@@ -34683,13 +34717,13 @@ function useDatePickerSingle(_a) {
34683
34717
  localeOption: localeOption,
34684
34718
  currentField: currentField,
34685
34719
  inputPlaceholder: inputPlaceholder,
34686
- handleDayClick: handleDayClick,
34687
34720
  inputChange: inputChange,
34688
34721
  createHandleToggleClick: createHandleToggleClick,
34689
- disabledDays: disabledDays,
34690
34722
  formatDay: formatDay,
34691
34723
  handleCloseByOutside: handleCloseByOutside,
34692
34724
  currentMonthToDisplay: currentMonthToDisplay,
34725
+ showDisabledTooltip: showDisabledTooltip,
34726
+ handleDayClickWithModifiers: handleDayClickWithModifiers,
34693
34727
  };
34694
34728
  }
34695
34729
 
@@ -34723,34 +34757,48 @@ var DatePickerHeader = function (_a) {
34723
34757
  e.createElement(re, { size: 20 }))));
34724
34758
  };
34725
34759
 
34760
+ var DisabledDaysTooltip = function (_a) {
34761
+ var message = _a.message, show = _a.show, _b = _a.testId, testId = _b === void 0 ? 'datepicker-disabled-tooltip' : _b;
34762
+ if (!show)
34763
+ return null;
34764
+ return (e.createElement("div", { className: "ods-date__disabled-tooltip", role: "tooltip", "data-testid": testId }, message));
34765
+ };
34766
+
34726
34767
  var DatePickerSingle = e.forwardRef(function (_a, ref) {
34727
- var label = _a.label, value = _a.value, onSelect = _a.onSelect, editable = _a.editable, disabled = _a.disabled, error = _a.error, helperText = _a.helperText, startsToday = _a.startsToday, className = _a.className, locale = _a.locale, rest = __rest$1(_a, ["label", "value", "onSelect", "editable", "disabled", "error", "helperText", "startsToday", "className", "locale"]);
34728
- var _b = useDatePickerSingle({ value: value, onSelect: onSelect, startsToday: startsToday, locale: locale }), input1Ref = _b.input1Ref, showDayPicker = _b.showDayPicker, selectedDay = _b.selectedDay, CustomStyles = _b.CustomStyles, localeOption = _b.localeOption, currentField = _b.currentField, inputPlaceholder = _b.inputPlaceholder, handleDayClick = _b.handleDayClick, inputChange = _b.inputChange, createHandleToggleClick = _b.createHandleToggleClick, disabledDays = _b.disabledDays, formatDay = _b.formatDay, handleCloseByOutside = _b.handleCloseByOutside, currentMonthToDisplay = _b.currentMonthToDisplay;
34768
+ var label = _a.label, value = _a.value, onSelect = _a.onSelect, editable = _a.editable, disabled = _a.disabled, _b = _a.inline, inline = _b === void 0 ? false : _b, error = _a.error, helperText = _a.helperText, startsToday = _a.startsToday, disabledDays = _a.disabledDays, disabledDaysMessage = _a.disabledDaysMessage, className = _a.className, locale = _a.locale, rest = __rest$1(_a, ["label", "value", "onSelect", "editable", "disabled", "inline", "error", "helperText", "startsToday", "disabledDays", "disabledDaysMessage", "className", "locale"]);
34769
+ var _c = useDatePickerSingle({
34770
+ value: value,
34771
+ onSelect: onSelect,
34772
+ startsToday: startsToday,
34773
+ locale: locale,
34774
+ disabledDaysMessage: disabledDaysMessage,
34775
+ }), input1Ref = _c.input1Ref, showDayPicker = _c.showDayPicker, selectedDay = _c.selectedDay, CustomStyles = _c.CustomStyles, localeOption = _c.localeOption, currentField = _c.currentField, inputPlaceholder = _c.inputPlaceholder, inputChange = _c.inputChange, createHandleToggleClick = _c.createHandleToggleClick, formatDay = _c.formatDay, handleCloseByOutside = _c.handleCloseByOutside, currentMonthToDisplay = _c.currentMonthToDisplay, showDisabledTooltip = _c.showDisabledTooltip, handleDayClickWithModifiers = _c.handleDayClickWithModifiers;
34776
+ var calendarOpen = inline || showDayPicker;
34777
+ var CaptionWithTooltip = function (_a) {
34778
+ var displayMonth = _a.displayMonth;
34779
+ return (e.createElement(e.Fragment, null,
34780
+ DatePickerHeader({ displayMonth: displayMonth, locale: localeOption, mode: 'single' }),
34781
+ disabledDaysMessage && (e.createElement(DisabledDaysTooltip, { message: disabledDaysMessage, show: showDisabledTooltip }))));
34782
+ };
34729
34783
  return (e.createElement("div", null,
34730
- showDayPicker && (e.createElement("div", { className: "ods-date-background", "data-testid": "date-picker-outside", onClick: handleCloseByOutside })),
34784
+ calendarOpen && !inline && (e.createElement("div", { className: "ods-date-background", "data-testid": "date-picker-outside", onClick: handleCloseByOutside })),
34731
34785
  e.createElement("div", __assign$1({ className: classNames('ods-date', className), ref: ref }, rest),
34732
34786
  e.createElement("div", { className: "ods-date__form-row-datepicker" },
34733
- e.createElement("div", { className: "ods-date__form-controls", "data-testid": "date-picker-first-field-wrapper", onClick: function () { return createHandleToggleClick('start-date'); } },
34787
+ !inline && (e.createElement("div", { className: "ods-date__form-controls", "data-testid": "date-picker-first-field-wrapper", onClick: function () { return createHandleToggleClick('start-date'); } },
34734
34788
  label && e.createElement("label", { htmlFor: "start-date" }, label),
34735
34789
  e.createElement(Input, { ref: input1Ref, "data-testid": "datepicker-input-1", id: "start-date", type: "text", className: classNames({
34736
34790
  'date-field-focussed': currentField === 'start-date',
34737
- }), name: "start-date", value: value, onChange: (editable && inputChange) || undefined, placeholder: inputPlaceholder, adornment: e.createElement(On, { size: 20, stroke: "#B6B9CC" }), autoComplete: "off", readOnly: !editable, disabled: disabled, error: !disabled && error, inputMode: "numeric", helperText: (!disabled && !showDayPicker && helperText) || undefined, maxLength: 10 })),
34738
- !disabled && showDayPicker && (e.createElement("div", { "data-testid": "datepicker-calendar" },
34739
- e.createElement(DayPicker, { mode: "single", locale: localeOption, weekStartsOn: 0, classNames: CustomStyles, className: className, onDayClick: function (day) { return handleDayClick(day); }, formatters: { formatDay: formatDay }, selected: selectedDay, disabled: disabledDays, defaultMonth: currentMonthToDisplay, components: {
34740
- Caption: function (_a) {
34741
- var displayMonth = _a.displayMonth;
34742
- return DatePickerHeader({
34743
- displayMonth: displayMonth,
34744
- locale: localeOption,
34745
- mode: 'single',
34746
- });
34747
- },
34791
+ }), name: "start-date", value: value, onChange: (editable && inputChange) || undefined, placeholder: inputPlaceholder, adornment: e.createElement(On, { size: 20, stroke: "#B6B9CC" }), autoComplete: "off", readOnly: !editable, disabled: disabled, error: !disabled && error, inputMode: "numeric", helperText: (!disabled && !showDayPicker && helperText) || undefined, maxLength: 10 }))),
34792
+ inline && label && (e.createElement("div", { className: "ods-date__inline-label" }, label)),
34793
+ !disabled && calendarOpen && (e.createElement("div", { "data-testid": "datepicker-calendar" },
34794
+ e.createElement(DayPicker, { mode: "single", locale: localeOption, weekStartsOn: 0, classNames: CustomStyles(inline), className: className, onDayClick: handleDayClickWithModifiers, formatters: { formatDay: formatDay }, selected: selectedDay, disabled: startsToday ? { before: new Date() } : disabledDays, defaultMonth: currentMonthToDisplay, components: {
34795
+ Caption: CaptionWithTooltip,
34748
34796
  } })))))));
34749
34797
  });
34750
34798
  DatePickerSingle.displayName = 'DatePickerSingle';
34751
34799
 
34752
34800
  function useDatePicker(_a) {
34753
- var values = _a.values, onSelect = _a.onSelect, startsToday = _a.startsToday, locale = _a.locale;
34801
+ var values = _a.values, onSelect = _a.onSelect, startsToday = _a.startsToday, locale = _a.locale, disabledDaysMessage = _a.disabledDaysMessage;
34754
34802
  var localeOption = locale || ptBr;
34755
34803
  var localeDateFormat = localeOption &&
34756
34804
  localeOption.formatLong &&
@@ -34762,12 +34810,9 @@ function useDatePicker(_a) {
34762
34810
  var _d = e.useState(), currentMonthToDisplay = _d[0], setCurrentMonthToDisplay = _d[1];
34763
34811
  var _e = e.useState({ from: '', to: '' }), datePickerCache = _e[0], setDatePickerCache = _e[1];
34764
34812
  var _f = e.useState(false), firstInputClicked = _f[0], setFirstInputClicked = _f[1];
34813
+ var _g = useDisabledDaysTooltip(disabledDaysMessage), showDisabledTooltip = _g.showDisabledTooltip, createDayClickHandler = _g.createDayClickHandler;
34765
34814
  var fromDate = parse$1(values.from, localeDateFormat, new Date());
34766
34815
  var toDate = parse$1(values.to, localeDateFormat, new Date());
34767
- e.useEffect(function () {
34768
- if (values.from === '')
34769
- setCurrentField('');
34770
- }, [values.from]);
34771
34816
  var updateState = function (updateData, updateCache) {
34772
34817
  onSelect(updateData);
34773
34818
  return updateCache && setDatePickerCache(updateData);
@@ -34805,6 +34850,7 @@ function useDatePicker(_a) {
34805
34850
  }
34806
34851
  }
34807
34852
  };
34853
+ var handleDayClickWithModifiers = createDayClickHandler(handleDayClick);
34808
34854
  var updateCurrentMonth = function (date) {
34809
34855
  var parsedDate = parse$1(date, 'dd/MM/yyyy', new Date());
34810
34856
  setCurrentMonthToDisplay(parsedDate);
@@ -34838,10 +34884,6 @@ function useDatePicker(_a) {
34838
34884
  setShowDayPicker(!showDayPicker);
34839
34885
  setCurrentField(fieldId);
34840
34886
  };
34841
- var disabledDays = function (day) {
34842
- var startToday = handleValidateStartsToday(startsToday, day);
34843
- return startToday || (currentField === 'end-date' && day < fromDate);
34844
- };
34845
34887
  var closeCalendarDelay = function () {
34846
34888
  setTimeout(function () { return setShowDayPicker(false); }, 500);
34847
34889
  };
@@ -34902,6 +34944,10 @@ function useDatePicker(_a) {
34902
34944
  to: toDate,
34903
34945
  };
34904
34946
  var inputPlaceholder = getInputPlaceholder(localeOption);
34947
+ e.useEffect(function () {
34948
+ if (values.from === '')
34949
+ setCurrentField('');
34950
+ }, [values.from]);
34905
34951
  return {
34906
34952
  input1Ref: input1Ref,
34907
34953
  input2Ref: input2Ref,
@@ -34915,9 +34961,10 @@ function useDatePicker(_a) {
34915
34961
  inputPlaceholder: inputPlaceholder,
34916
34962
  handleDayMouseEnter: handleDayMouseEnter,
34917
34963
  handleDayClick: handleDayClick,
34964
+ handleDayClickWithModifiers: handleDayClickWithModifiers,
34965
+ showDisabledTooltip: showDisabledTooltip,
34918
34966
  inputChange: inputChange,
34919
34967
  createHandleToggleClick: createHandleToggleClick,
34920
- disabledDays: disabledDays,
34921
34968
  formatDay: formatDay,
34922
34969
  handleCloseByOutside: handleCloseByOutside,
34923
34970
  handleDisplayMonth: handleDisplayMonth,
@@ -34926,8 +34973,14 @@ function useDatePicker(_a) {
34926
34973
  }
34927
34974
 
34928
34975
  var DatePickerRange = e.forwardRef(function (_a, ref) {
34929
- var labels = _a.labels, values = _a.values, onSelect = _a.onSelect, editable = _a.editable, disabled = _a.disabled, error = _a.error, helperText = _a.helperText, startsToday = _a.startsToday, className = _a.className, locale = _a.locale, rest = __rest$1(_a, ["labels", "values", "onSelect", "editable", "disabled", "error", "helperText", "startsToday", "className", "locale"]);
34930
- var _b = useDatePicker({ values: values, onSelect: onSelect, startsToday: startsToday, locale: locale }), input1Ref = _b.input1Ref, input2Ref = _b.input2Ref, showDayPicker = _b.showDayPicker, selectedDays = _b.selectedDays, CustomStyles = _b.CustomStyles, localeOption = _b.localeOption, currentField = _b.currentField, inputPlaceholder = _b.inputPlaceholder, handleDayMouseEnter = _b.handleDayMouseEnter, handleDayClick = _b.handleDayClick, handleDisplayMonth = _b.handleDisplayMonth, inputChange = _b.inputChange, createHandleToggleClick = _b.createHandleToggleClick, disabledDays = _b.disabledDays, formatDay = _b.formatDay, handleCloseByOutside = _b.handleCloseByOutside, currentMonthToDisplay = _b.currentMonthToDisplay;
34976
+ var labels = _a.labels, values = _a.values, onSelect = _a.onSelect, editable = _a.editable, disabled = _a.disabled, error = _a.error, helperText = _a.helperText, startsToday = _a.startsToday, disabledDays = _a.disabledDays, disabledDaysMessage = _a.disabledDaysMessage, className = _a.className, locale = _a.locale, rest = __rest$1(_a, ["labels", "values", "onSelect", "editable", "disabled", "error", "helperText", "startsToday", "disabledDays", "disabledDaysMessage", "className", "locale"]);
34977
+ var _b = useDatePicker({
34978
+ values: values,
34979
+ onSelect: onSelect,
34980
+ startsToday: startsToday,
34981
+ locale: locale,
34982
+ disabledDaysMessage: disabledDaysMessage,
34983
+ }), input1Ref = _b.input1Ref, input2Ref = _b.input2Ref, showDayPicker = _b.showDayPicker, selectedDays = _b.selectedDays, CustomStyles = _b.CustomStyles, localeOption = _b.localeOption, currentField = _b.currentField, inputPlaceholder = _b.inputPlaceholder, handleDayMouseEnter = _b.handleDayMouseEnter, handleDayClickWithModifiers = _b.handleDayClickWithModifiers, showDisabledTooltip = _b.showDisabledTooltip, handleDisplayMonth = _b.handleDisplayMonth, inputChange = _b.inputChange, createHandleToggleClick = _b.createHandleToggleClick, formatDay = _b.formatDay, handleCloseByOutside = _b.handleCloseByOutside, currentMonthToDisplay = _b.currentMonthToDisplay;
34931
34984
  return (e.createElement("div", null,
34932
34985
  showDayPicker && (e.createElement("div", { className: "ods-date-background", "data-testid": "date-picker-outside", onClick: handleCloseByOutside })),
34933
34986
  e.createElement("div", __assign$1({ className: classNames('ods-date', className), ref: ref }, rest),
@@ -34943,10 +34996,12 @@ var DatePickerRange = e.forwardRef(function (_a, ref) {
34943
34996
  'date-field-focussed': currentField === 'end-date',
34944
34997
  }), name: "end-date", value: values.to, onChange: (editable && inputChange) || undefined, placeholder: inputPlaceholder, adornment: e.createElement(On, { size: 20, stroke: "#B6B9CC" }), autoComplete: "off", readOnly: !editable, disabled: disabled, error: !disabled && error, inputMode: "numeric", helperText: (!disabled && !showDayPicker && helperText) || undefined, maxLength: 10 })),
34945
34998
  !disabled && showDayPicker && (e.createElement("div", { "data-testid": "datepicker-calendar" },
34946
- e.createElement(DayPicker, { mode: "range", locale: localeOption, weekStartsOn: 0, classNames: CustomStyles, className: className, onDayClick: function (day) { return handleDayClick(day); }, onDayMouseEnter: function (day) { return handleDayMouseEnter(day); }, formatters: { formatDay: formatDay }, selected: selectedDays, disabled: disabledDays, defaultMonth: currentMonthToDisplay, components: {
34999
+ e.createElement(DayPicker, { mode: "range", locale: localeOption, weekStartsOn: 0, classNames: CustomStyles, className: className, onDayClick: handleDayClickWithModifiers, onDayMouseEnter: function (day) { return handleDayMouseEnter(day); }, formatters: { formatDay: formatDay }, selected: selectedDays, disabled: startsToday ? { before: new Date() } : disabledDays, defaultMonth: currentMonthToDisplay, components: {
34947
35000
  Caption: function (_a) {
34948
35001
  var displayMonth = _a.displayMonth;
34949
- return (e.createElement(DatePickerHeader, { locale: localeOption, displayMonth: handleDisplayMonth(displayMonth) }));
35002
+ return (e.createElement(e.Fragment, null,
35003
+ e.createElement(DatePickerHeader, { locale: localeOption, displayMonth: handleDisplayMonth(displayMonth) }),
35004
+ disabledDaysMessage && (e.createElement(DisabledDaysTooltip, { message: disabledDaysMessage, show: showDisabledTooltip }))));
34950
35005
  },
34951
35006
  } })))))));
34952
35007
  });