willba-component-library 0.2.28 → 0.2.30

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/lib/index.umd.js CHANGED
@@ -10809,6 +10809,14 @@
10809
10809
 
10810
10810
  var reactResponsiveExports = reactResponsive.exports;
10811
10811
 
10812
+ var SpinnerSVG = function (_a) {
10813
+ var fill = _a.fill, size = _a.size;
10814
+ return (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), viewBox: "0 0 24 24" },
10815
+ React__default.createElement("style", null, "\n .spinner_z9k8 {\n transform-origin: center;\n animation: spinner_StKS .75s infinite linear;\n }\n @keyframes spinner_StKS {\n 100% {\n transform: rotate(360deg);\n }\n }\n "),
10816
+ React__default.createElement("path", { d: "M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z", opacity: ".25", fill: fill }),
10817
+ React__default.createElement("path", { d: "M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z", className: "spinner_z9k8", fill: fill })));
10818
+ };
10819
+
10812
10820
  var css_248z$9 = ".rdp {\n --rdp-cell-size: 40px;\n --rdp-caption-font-size: 18px;\n --rdp-accent-color: #0000ff;\n --rdp-background-color: #e7edff;\n --rdp-accent-color-dark: #3003e1;\n --rdp-background-color-dark: #180270;\n --rdp-outline: 2px solid var(--rdp-accent-color); /* Outline border for focused elements */\n --rdp-outline-selected: 3px solid var(--rdp-accent-color); /* Outline border for focused _and_ selected elements */\n\n margin: 1em;\n}\n\n/* Hide elements for devices that are not screen readers */\n.rdp-vhidden {\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n background: transparent;\n border: 0;\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n position: absolute !important;\n top: 0;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n overflow: hidden !important;\n clip: rect(1px, 1px, 1px, 1px) !important;\n border: 0 !important;\n}\n\n/* Buttons */\n.rdp-button_reset {\n appearance: none;\n position: relative;\n margin: 0;\n padding: 0;\n cursor: default;\n color: inherit;\n background: none;\n font: inherit;\n\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n.rdp-button_reset:focus-visible {\n /* Make sure to reset outline only when :focus-visible is supported */\n outline: none;\n}\n\n.rdp-button {\n border: 2px solid transparent;\n}\n\n.rdp-button[disabled]:not(.rdp-day_selected) {\n opacity: 0.25;\n}\n\n.rdp-button:not([disabled]) {\n cursor: pointer;\n}\n\n.rdp-button:focus-visible:not([disabled]) {\n color: inherit;\n background-color: var(--rdp-background-color);\n border: var(--rdp-outline);\n}\n\n.rdp-button:hover:not([disabled]):not(.rdp-day_selected) {\n background-color: var(--rdp-background-color);\n}\n\n.rdp-months {\n display: flex;\n}\n\n.rdp-month {\n margin: 0 1em;\n}\n\n.rdp-month:first-child {\n margin-left: 0;\n}\n\n.rdp-month:last-child {\n margin-right: 0;\n}\n\n.rdp-table {\n margin: 0;\n max-width: calc(var(--rdp-cell-size) * 7);\n border-collapse: collapse;\n}\n\n.rdp-with_weeknumber .rdp-table {\n max-width: calc(var(--rdp-cell-size) * 8);\n border-collapse: collapse;\n}\n\n.rdp-caption {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0;\n text-align: left;\n}\n\n.rdp-multiple_months .rdp-caption {\n position: relative;\n display: block;\n text-align: center;\n}\n\n.rdp-caption_dropdowns {\n position: relative;\n display: inline-flex;\n}\n\n.rdp-caption_label {\n position: relative;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n margin: 0;\n padding: 0 0.25em;\n white-space: nowrap;\n color: currentColor;\n border: 0;\n border: 2px solid transparent;\n font-family: inherit;\n font-size: var(--rdp-caption-font-size);\n font-weight: bold;\n}\n\n.rdp-nav {\n white-space: nowrap;\n}\n\n.rdp-multiple_months .rdp-caption_start .rdp-nav {\n position: absolute;\n top: 50%;\n left: 0;\n transform: translateY(-50%);\n}\n\n.rdp-multiple_months .rdp-caption_end .rdp-nav {\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n}\n\n.rdp-nav_button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--rdp-cell-size);\n height: var(--rdp-cell-size);\n padding: 0.25em;\n border-radius: 100%;\n}\n\n/* ---------- */\n/* Dropdowns */\n/* ---------- */\n\n.rdp-dropdown_year,\n.rdp-dropdown_month {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.rdp-dropdown {\n appearance: none;\n position: absolute;\n z-index: 2;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n cursor: inherit;\n opacity: 0;\n border: none;\n background-color: transparent;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n.rdp-dropdown[disabled] {\n opacity: unset;\n color: unset;\n}\n\n.rdp-dropdown:focus-visible:not([disabled]) + .rdp-caption_label {\n background-color: var(--rdp-background-color);\n border: var(--rdp-outline);\n border-radius: 6px;\n}\n\n.rdp-dropdown_icon {\n margin: 0 0 0 5px;\n}\n\n.rdp-head {\n border: 0;\n}\n\n.rdp-head_row,\n.rdp-row {\n height: 100%;\n}\n\n.rdp-head_cell {\n vertical-align: middle;\n font-size: 0.75em;\n font-weight: 700;\n text-align: center;\n height: 100%;\n height: var(--rdp-cell-size);\n padding: 0;\n text-transform: uppercase;\n}\n\n.rdp-tbody {\n border: 0;\n}\n\n.rdp-tfoot {\n margin: 0.5em;\n}\n\n.rdp-cell {\n width: var(--rdp-cell-size);\n height: 100%;\n height: var(--rdp-cell-size);\n padding: 0;\n text-align: center;\n}\n\n.rdp-weeknumber {\n font-size: 0.75em;\n}\n\n.rdp-weeknumber,\n.rdp-day {\n display: flex;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--rdp-cell-size);\n max-width: var(--rdp-cell-size);\n height: var(--rdp-cell-size);\n margin: 0;\n border: 2px solid transparent;\n border-radius: 100%;\n}\n\n.rdp-day_today:not(.rdp-day_outside) {\n font-weight: bold;\n}\n\n.rdp-day_selected,\n.rdp-day_selected:focus-visible,\n.rdp-day_selected:hover {\n color: white;\n opacity: 1;\n background-color: var(--rdp-accent-color);\n}\n\n.rdp-day_outside {\n opacity: 0.5;\n}\n\n.rdp-day_selected:focus-visible {\n /* Since the background is the same use again the outline */\n outline: var(--rdp-outline);\n outline-offset: 2px;\n z-index: 1;\n}\n\n.rdp:not([dir='rtl']) .rdp-day_range_start:not(.rdp-day_range_end) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rdp:not([dir='rtl']) .rdp-day_range_end:not(.rdp-day_range_start) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.rdp[dir='rtl'] .rdp-day_range_start:not(.rdp-day_range_end) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.rdp[dir='rtl'] .rdp-day_range_end:not(.rdp-day_range_start) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.rdp-day_range_end.rdp-day_range_start {\n border-radius: 100%;\n}\n\n.rdp-day_range_middle {\n border-radius: 0;\n}";
10813
10821
  styleInject(css_248z$9);
10814
10822
 
@@ -10817,7 +10825,7 @@
10817
10825
 
10818
10826
  var Calendar = React__default.forwardRef(function (_a, ref) {
10819
10827
  var _b;
10820
- var selectedPath = _a.selectedPath, calendarRange = _a.calendarRange, setCalendarRange = _a.setCalendarRange, language = _a.language, disableCalendarDates = _a.disableCalendarDates, requestDates = _a.requestDates, disabledDates = _a.disabledDates, setDisabledDates = _a.setDisabledDates; _a.updateCalendar; var setUpdateCalendar = _a.setUpdateCalendar, loadingData = _a.loadingData, initialCalendarRange = _a.initialCalendarRange, showFeedback = _a.showFeedback;
10828
+ var selectedPath = _a.selectedPath, calendarRange = _a.calendarRange, setCalendarRange = _a.setCalendarRange, language = _a.language, disableCalendarDates = _a.disableCalendarDates, requestDates = _a.requestDates, disabledDates = _a.disabledDates, setDisabledDates = _a.setDisabledDates, updateCalendar = _a.updateCalendar, setUpdateCalendar = _a.setUpdateCalendar, loadingData = _a.loadingData, initialCalendarRange = _a.initialCalendarRange, showFeedback = _a.showFeedback, palette = _a.palette;
10821
10829
  // Translations
10822
10830
  var t = useTranslation('common').t;
10823
10831
  var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
@@ -10868,17 +10876,19 @@
10868
10876
  React__default.useEffect(function () {
10869
10877
  if (typeof document === 'undefined' || !showFeedback)
10870
10878
  return;
10879
+ // Children
10871
10880
  var calendarTooltip = document.querySelector('.will-calendar-tooltip');
10872
10881
  var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
10873
10882
  var calendarTooltipOverlappingDate = document.querySelector('.will-calendar-tooltip-overlapping-date');
10874
10883
  var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
10884
+ // Parents
10875
10885
  var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
10876
10886
  var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
10877
10887
  var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
10878
- var calendarOverlappingDate = document.querySelector('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
10879
- var appendedOverlappingDateTooltip = document.querySelector('.will-filter-bar-calendar .rdp-cell .will-calendar-tooltip-overlapping-date');
10888
+ var calendarOverlappingDate = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
10880
10889
  var tooltipClones = [];
10881
10890
  var tooltipClonesCheckOut = [];
10891
+ var tooltipClonesOverlappingDates = [];
10882
10892
  if (calendarTooltip && calendarButtons.length > 0) {
10883
10893
  calendarButtons.forEach(function (element) {
10884
10894
  var tooltipClone = calendarTooltip.cloneNode(true);
@@ -10896,23 +10906,20 @@
10896
10906
  if (loadingSpinner && calendarMonthContainer) {
10897
10907
  calendarMonthContainer.appendChild(loadingSpinner);
10898
10908
  }
10899
- if (calendarOverlappingDate &&
10900
- calendarTooltipOverlappingDate &&
10901
- !appendedOverlappingDateTooltip &&
10902
- !calendarRange) {
10903
- calendarOverlappingDate.appendChild(calendarTooltipOverlappingDate);
10904
- }
10905
- else if (calendarRange && appendedOverlappingDateTooltip) {
10906
- appendedOverlappingDateTooltip.style.display = 'none';
10907
- }
10908
- else if (!calendarRange && appendedOverlappingDateTooltip) {
10909
- appendedOverlappingDateTooltip.style.display = 'block';
10909
+ if (calendarTooltipOverlappingDate &&
10910
+ calendarOverlappingDate.length > 0) {
10911
+ calendarOverlappingDate.forEach(function (element) {
10912
+ var tooltipClone = calendarTooltipOverlappingDate.cloneNode(true);
10913
+ element.appendChild(tooltipClone);
10914
+ tooltipClonesOverlappingDates.push(tooltipClone);
10915
+ });
10910
10916
  }
10911
10917
  return function () {
10912
10918
  tooltipClones.forEach(function (clone) { return clone.remove(); });
10913
10919
  tooltipClonesCheckOut.forEach(function (clone) { return clone.remove(); });
10920
+ tooltipClonesOverlappingDates.forEach(function (clone) { return clone.remove(); });
10914
10921
  };
10915
- }, [calendarRange, overlappingDate]);
10922
+ }, [calendarRange, updateCalendar, overlappingDate]);
10916
10923
  return (React__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
10917
10924
  React__default.createElement("div", { className: "will-calendar-filter-container" },
10918
10925
  React__default.createElement(DayPicker, { id: "will-calendar", mode: "range", locale: language === 'en' ? enUS : fi, numberOfMonths: !isTablet ? 2 : 1, weekStartsOn: 1, selected: calendarRange, onSelect: function (range) {
@@ -10924,7 +10931,8 @@
10924
10931
  calendarRange: calendarRange,
10925
10932
  overlappingDate: overlappingDate,
10926
10933
  });
10927
- }, captionLayout: "dropdown-buttons", defaultMonth: selectedStartDate ||
10934
+ }, captionLayout: "dropdown-buttons", defaultMonth: (initialCalendarRange === null || initialCalendarRange === void 0 ? void 0 : initialCalendarRange.from) ||
10935
+ selectedStartDate ||
10928
10936
  (((_b = disableCalendarDates === null || disableCalendarDates === void 0 ? void 0 : disableCalendarDates.disabledDates) === null || _b === void 0 ? void 0 : _b.length)
10929
10937
  ? disableCalendarDates.disabledDates[0].from
10930
10938
  : today), disabled: disabledDatesByPage.length
@@ -10976,7 +10984,8 @@
10976
10984
  React__default.createElement("div", null, t('noCheckOut'))),
10977
10985
  React__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
10978
10986
  React__default.createElement("div", null, t('checkOutOnly'))),
10979
- React__default.createElement("div", { className: 'will-calendar-spinner' }, "Loading..."))));
10987
+ React__default.createElement("div", { className: 'will-calendar-spinner' },
10988
+ React__default.createElement(SpinnerSVG, { fill: (palette === null || palette === void 0 ? void 0 : palette.primary) || 'inherit', size: 50 })))));
10980
10989
  });
10981
10990
  /////////
10982
10991
  var handleSelectedCheckIn = function (_a) {
@@ -11512,7 +11521,7 @@
11512
11521
  React__default.createElement("h2", null, t('filterBar:calendar.title')),
11513
11522
  React__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
11514
11523
  React__default.createElement("div", { className: "will-calendar-main" },
11515
- React__default.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, calendarOffset: calendarOffset, selectedPath: '/rooms', language: language, disableCalendarDates: disableCalendarDates, requestDates: requestDates, disabledDates: disabledDates, setDisabledDates: setDisabledDates, updateCalendar: updateCalendar, setUpdateCalendar: setUpdateCalendar, loadingData: loadingData, initialCalendarRange: initialCalendarRange, showFeedback: showFeedback, noActiveSelection: noActiveSelection })),
11524
+ React__default.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, calendarOffset: calendarOffset, selectedPath: '/rooms', language: language, disableCalendarDates: disableCalendarDates, requestDates: requestDates, disabledDates: disabledDates, setDisabledDates: setDisabledDates, updateCalendar: updateCalendar, setUpdateCalendar: setUpdateCalendar, loadingData: loadingData, initialCalendarRange: initialCalendarRange, showFeedback: showFeedback, noActiveSelection: noActiveSelection, palette: palette })),
11516
11525
  React__default.createElement("div", { className: "will-calendar-footer" },
11517
11526
  React__default.createElement("div", { className: "will-calendar-footer-dates" },
11518
11527
  React__default.createElement("div", null,