@useblu/ocean-react 1.131.0 → 1.132.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
@@ -34594,35 +34594,65 @@ var getInputPlaceholder = function (localeOption) {
34594
34594
 
34595
34595
  function useDisabledDaysTooltip(disabledDaysMessage) {
34596
34596
  var _a = e.useState(false), showDisabledTooltip = _a[0], setShowDisabledTooltip = _a[1];
34597
+ var _b = e.useState(''), tooltipMessage = _b[0], setTooltipMessage = _b[1];
34598
+ var _c = e.useState(null), tooltipPosition = _c[0], setTooltipPosition = _c[1];
34597
34599
  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
- }
34600
+ var lastDisabledClickRef = e.useRef(null);
34601
+ var resolveMessage = e.useCallback(function (day) {
34602
+ var _a;
34603
+ if (!disabledDaysMessage)
34604
+ return '';
34605
+ if (typeof disabledDaysMessage === 'string')
34606
+ return disabledDaysMessage;
34607
+ if (!day)
34608
+ return '';
34609
+ var entry = disabledDaysMessage.find(function (e) { return isSameDay(e.date, day); });
34610
+ return (_a = entry === null || entry === void 0 ? void 0 : entry.message) !== null && _a !== void 0 ? _a : '';
34605
34611
  }, [disabledDaysMessage]);
34606
- var handleEnabledDayClick = e.useCallback(function () {
34607
- setShowDisabledTooltip(false);
34608
- }, []);
34612
+ var handleCalendarClick = e.useCallback(function (event) {
34613
+ if (!disabledDaysMessage)
34614
+ return;
34615
+ var target = event.target;
34616
+ var disabledDay = target.closest('button.ods-date__disabled');
34617
+ if (!disabledDay)
34618
+ return;
34619
+ var message = resolveMessage(lastDisabledClickRef.current);
34620
+ if (!message)
34621
+ return;
34622
+ var container = event.currentTarget;
34623
+ var containerRect = container.getBoundingClientRect();
34624
+ var dayRect = disabledDay.getBoundingClientRect();
34625
+ var arrowLeft = dayRect.left - containerRect.left + dayRect.width / 2;
34626
+ var top = dayRect.top - containerRect.top - 12;
34627
+ if (tooltipTimerRef.current)
34628
+ clearTimeout(tooltipTimerRef.current);
34629
+ setTooltipMessage(message);
34630
+ setTooltipPosition({ top: top, arrowLeft: arrowLeft });
34631
+ setShowDisabledTooltip(true);
34632
+ tooltipTimerRef.current = setTimeout(function () { return setShowDisabledTooltip(false); }, 5000);
34633
+ }, [disabledDaysMessage, resolveMessage]);
34609
34634
  var createDayClickHandler = e.useCallback(function (originalHandler) {
34610
34635
  return function (day, modifiers) {
34611
34636
  if (modifiers.disabled) {
34612
- handleDisabledDayClick();
34637
+ lastDisabledClickRef.current = day;
34613
34638
  return;
34614
34639
  }
34615
- handleEnabledDayClick();
34640
+ lastDisabledClickRef.current = null;
34641
+ setShowDisabledTooltip(false);
34642
+ setTooltipPosition(null);
34616
34643
  originalHandler(day);
34617
34644
  };
34618
- }, [handleDisabledDayClick, handleEnabledDayClick]);
34645
+ }, []);
34619
34646
  e.useEffect(function () { return function () {
34620
34647
  if (tooltipTimerRef.current)
34621
34648
  clearTimeout(tooltipTimerRef.current);
34622
34649
  }; }, []);
34623
34650
  return {
34624
34651
  showDisabledTooltip: showDisabledTooltip,
34652
+ tooltipMessage: tooltipMessage,
34653
+ tooltipPosition: tooltipPosition,
34625
34654
  createDayClickHandler: createDayClickHandler,
34655
+ handleCalendarClick: handleCalendarClick,
34626
34656
  };
34627
34657
  }
34628
34658
 
@@ -34638,7 +34668,7 @@ function useDatePickerSingle(_a) {
34638
34668
  var _c = e.useState(''), currentField = _c[0], setCurrentField = _c[1];
34639
34669
  var _d = e.useState(), currentMonthToDisplay = _d[0], setCurrentMonthToDisplay = _d[1];
34640
34670
  var _e = e.useState(''), datePickerCache = _e[0], setDatePickerCache = _e[1];
34641
- var _f = useDisabledDaysTooltip(disabledDaysMessage), showDisabledTooltip = _f.showDisabledTooltip, createDayClickHandler = _f.createDayClickHandler;
34671
+ var _f = useDisabledDaysTooltip(disabledDaysMessage), showDisabledTooltip = _f.showDisabledTooltip, tooltipMessage = _f.tooltipMessage, tooltipPosition = _f.tooltipPosition, createDayClickHandler = _f.createDayClickHandler, handleCalendarClick = _f.handleCalendarClick;
34642
34672
  var fromDate = parse$1(value || '', localeDateFormat, new Date());
34643
34673
  var updateState = function (updateData, updateCache) {
34644
34674
  onSelect(updateData);
@@ -34723,6 +34753,9 @@ function useDatePickerSingle(_a) {
34723
34753
  handleCloseByOutside: handleCloseByOutside,
34724
34754
  currentMonthToDisplay: currentMonthToDisplay,
34725
34755
  showDisabledTooltip: showDisabledTooltip,
34756
+ tooltipMessage: tooltipMessage,
34757
+ tooltipPosition: tooltipPosition,
34758
+ handleCalendarClick: handleCalendarClick,
34726
34759
  handleDayClickWithModifiers: handleDayClickWithModifiers,
34727
34760
  };
34728
34761
  }
@@ -34758,10 +34791,12 @@ var DatePickerHeader = function (_a) {
34758
34791
  };
34759
34792
 
34760
34793
  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)
34794
+ var message = _a.message, show = _a.show, position = _a.position, _b = _a.testId, testId = _b === void 0 ? 'datepicker-disabled-tooltip' : _b;
34795
+ if (!show || !position)
34763
34796
  return null;
34764
- return (e.createElement("div", { className: "ods-date__disabled-tooltip", role: "tooltip", "data-testid": testId }, message));
34797
+ return (e.createElement("div", { className: "ods-date__disabled-tooltip", role: "tooltip", "data-testid": testId, style: { top: "".concat(position.top, "px") } },
34798
+ message,
34799
+ e.createElement("div", { className: "ods-date__disabled-tooltip__arrow", style: { left: "".concat(position.arrowLeft, "px") } })));
34765
34800
  };
34766
34801
 
34767
34802
  var DatePickerSingle = e.forwardRef(function (_a, ref) {
@@ -34772,13 +34807,11 @@ var DatePickerSingle = e.forwardRef(function (_a, ref) {
34772
34807
  startsToday: startsToday,
34773
34808
  locale: locale,
34774
34809
  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;
34810
+ }), 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, tooltipMessage = _c.tooltipMessage, tooltipPosition = _c.tooltipPosition, handleCalendarClick = _c.handleCalendarClick, handleDayClickWithModifiers = _c.handleDayClickWithModifiers;
34776
34811
  var calendarOpen = inline || showDayPicker;
34777
34812
  var CaptionWithTooltip = function (_a) {
34778
34813
  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 }))));
34814
+ return (e.createElement(e.Fragment, null, DatePickerHeader({ displayMonth: displayMonth, locale: localeOption, mode: 'single' })));
34782
34815
  };
34783
34816
  return (e.createElement("div", null,
34784
34817
  calendarOpen && !inline && (e.createElement("div", { className: "ods-date-background", "data-testid": "date-picker-outside", onClick: handleCloseByOutside })),
@@ -34790,10 +34823,11 @@ var DatePickerSingle = e.forwardRef(function (_a, ref) {
34790
34823
  'date-field-focussed': currentField === 'start-date',
34791
34824
  }), 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
34825
  inline && label && (e.createElement("div", { className: "ods-date__inline-label" }, label)),
34793
- !disabled && calendarOpen && (e.createElement("div", { "data-testid": "datepicker-calendar" },
34826
+ !disabled && calendarOpen && (e.createElement("div", { "data-testid": "datepicker-calendar", className: "ods-date__calendar-container", role: "presentation", onClick: handleCalendarClick },
34794
34827
  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
34828
  Caption: CaptionWithTooltip,
34796
- } })))))));
34829
+ } }),
34830
+ disabledDaysMessage && (e.createElement(DisabledDaysTooltip, { message: tooltipMessage, show: showDisabledTooltip, position: tooltipPosition }))))))));
34797
34831
  });
34798
34832
  DatePickerSingle.displayName = 'DatePickerSingle';
34799
34833
 
@@ -34810,7 +34844,7 @@ function useDatePicker(_a) {
34810
34844
  var _d = e.useState(), currentMonthToDisplay = _d[0], setCurrentMonthToDisplay = _d[1];
34811
34845
  var _e = e.useState({ from: '', to: '' }), datePickerCache = _e[0], setDatePickerCache = _e[1];
34812
34846
  var _f = e.useState(false), firstInputClicked = _f[0], setFirstInputClicked = _f[1];
34813
- var _g = useDisabledDaysTooltip(disabledDaysMessage), showDisabledTooltip = _g.showDisabledTooltip, createDayClickHandler = _g.createDayClickHandler;
34847
+ var _g = useDisabledDaysTooltip(disabledDaysMessage), showDisabledTooltip = _g.showDisabledTooltip, tooltipMessage = _g.tooltipMessage, tooltipPosition = _g.tooltipPosition, createDayClickHandler = _g.createDayClickHandler, handleCalendarClick = _g.handleCalendarClick;
34814
34848
  var fromDate = parse$1(values.from, localeDateFormat, new Date());
34815
34849
  var toDate = parse$1(values.to, localeDateFormat, new Date());
34816
34850
  var updateState = function (updateData, updateCache) {
@@ -34963,6 +34997,9 @@ function useDatePicker(_a) {
34963
34997
  handleDayClick: handleDayClick,
34964
34998
  handleDayClickWithModifiers: handleDayClickWithModifiers,
34965
34999
  showDisabledTooltip: showDisabledTooltip,
35000
+ tooltipMessage: tooltipMessage,
35001
+ tooltipPosition: tooltipPosition,
35002
+ handleCalendarClick: handleCalendarClick,
34966
35003
  inputChange: inputChange,
34967
35004
  createHandleToggleClick: createHandleToggleClick,
34968
35005
  formatDay: formatDay,
@@ -34980,7 +35017,7 @@ var DatePickerRange = e.forwardRef(function (_a, ref) {
34980
35017
  startsToday: startsToday,
34981
35018
  locale: locale,
34982
35019
  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;
35020
+ }), 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, tooltipMessage = _b.tooltipMessage, tooltipPosition = _b.tooltipPosition, handleCalendarClick = _b.handleCalendarClick, handleDisplayMonth = _b.handleDisplayMonth, inputChange = _b.inputChange, createHandleToggleClick = _b.createHandleToggleClick, formatDay = _b.formatDay, handleCloseByOutside = _b.handleCloseByOutside, currentMonthToDisplay = _b.currentMonthToDisplay;
34984
35021
  return (e.createElement("div", null,
34985
35022
  showDayPicker && (e.createElement("div", { className: "ods-date-background", "data-testid": "date-picker-outside", onClick: handleCloseByOutside })),
34986
35023
  e.createElement("div", __assign$1({ className: classNames('ods-date', className), ref: ref }, rest),
@@ -34995,15 +35032,14 @@ var DatePickerRange = e.forwardRef(function (_a, ref) {
34995
35032
  e.createElement(Input, { ref: input2Ref, "data-testid": "datepicker-input-2", id: "end-date", type: "text", className: classNames({
34996
35033
  'date-field-focussed': currentField === 'end-date',
34997
35034
  }), 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 })),
34998
- !disabled && showDayPicker && (e.createElement("div", { "data-testid": "datepicker-calendar" },
35035
+ !disabled && showDayPicker && (e.createElement("div", { "data-testid": "datepicker-calendar", className: "ods-date__calendar-container", role: "presentation", onClick: handleCalendarClick },
34999
35036
  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: {
35000
35037
  Caption: function (_a) {
35001
35038
  var displayMonth = _a.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 }))));
35039
+ return (e.createElement(DatePickerHeader, { locale: localeOption, displayMonth: handleDisplayMonth(displayMonth) }));
35005
35040
  },
35006
- } })))))));
35041
+ } }),
35042
+ disabledDaysMessage && (e.createElement(DisabledDaysTooltip, { message: tooltipMessage, show: showDisabledTooltip, position: tooltipPosition }))))))));
35007
35043
  });
35008
35044
  DatePickerRange.displayName = 'DatePickerRange';
35009
35045