willba-component-library 0.2.28 → 0.2.29
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/assets/SpinnerSvg.d.ts +5 -0
- package/lib/core/components/calendar/CalendarTypes.d.ts +2 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.esm.js +25 -17
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +25 -17
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +25 -17
- package/lib/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/SpinnerSvg.tsx +40 -0
- package/src/components/FilterCalendar/FilterCalendar.tsx +1 -0
- package/src/core/components/calendar/Calendar.tsx +19 -15
- package/src/core/components/calendar/CalendarTypes.ts +2 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DateRange, Matcher } from 'react-day-picker';
|
|
2
|
+
import { Palette } from 'src/themes/useTheme';
|
|
2
3
|
export type CalendarOffset = {
|
|
3
4
|
[key: string]: number;
|
|
4
5
|
};
|
|
@@ -33,4 +34,5 @@ export type CalendarTypes = {
|
|
|
33
34
|
initialCalendarRange?: DateRange | undefined;
|
|
34
35
|
showFeedback?: boolean;
|
|
35
36
|
noActiveSelection?: boolean;
|
|
37
|
+
palette?: Palette;
|
|
36
38
|
};
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { DateRange, Matcher } from 'react-day-picker';
|
|
3
|
+
import { Palette as Palette$1 } from 'src/themes/useTheme';
|
|
3
4
|
|
|
4
5
|
interface ButtonProps {
|
|
5
6
|
/**
|
|
@@ -62,6 +63,7 @@ type CalendarTypes = {
|
|
|
62
63
|
initialCalendarRange?: DateRange | undefined;
|
|
63
64
|
showFeedback?: boolean;
|
|
64
65
|
noActiveSelection?: boolean;
|
|
66
|
+
palette?: Palette$1;
|
|
65
67
|
};
|
|
66
68
|
|
|
67
69
|
type Palette = {
|
package/lib/index.esm.js
CHANGED
|
@@ -10787,6 +10787,14 @@ var reactResponsive = {exports: {}};
|
|
|
10787
10787
|
|
|
10788
10788
|
var reactResponsiveExports = reactResponsive.exports;
|
|
10789
10789
|
|
|
10790
|
+
var SpinnerSVG = function (_a) {
|
|
10791
|
+
var fill = _a.fill, size = _a.size;
|
|
10792
|
+
return (React__default__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "".concat(size || 25), height: "".concat(size || 25), viewBox: "0 0 24 24" },
|
|
10793
|
+
React__default__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 "),
|
|
10794
|
+
React__default__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 }),
|
|
10795
|
+
React__default__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 })));
|
|
10796
|
+
};
|
|
10797
|
+
|
|
10790
10798
|
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}";
|
|
10791
10799
|
styleInject(css_248z$9);
|
|
10792
10800
|
|
|
@@ -10795,7 +10803,7 @@ styleInject(css_248z$8);
|
|
|
10795
10803
|
|
|
10796
10804
|
var Calendar = forwardRef(function (_a, ref) {
|
|
10797
10805
|
var _b;
|
|
10798
|
-
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
|
|
10806
|
+
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;
|
|
10799
10807
|
// Translations
|
|
10800
10808
|
var t = useTranslation('common').t;
|
|
10801
10809
|
var isTablet = reactResponsiveExports.useMediaQuery({ maxWidth: 960 });
|
|
@@ -10846,17 +10854,19 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10846
10854
|
useEffect(function () {
|
|
10847
10855
|
if (typeof document === 'undefined' || !showFeedback)
|
|
10848
10856
|
return;
|
|
10857
|
+
// Children
|
|
10849
10858
|
var calendarTooltip = document.querySelector('.will-calendar-tooltip');
|
|
10850
10859
|
var calendarTooltipCheckOut = document.querySelector('.will-calendar-tooltip-check-out');
|
|
10851
10860
|
var calendarTooltipOverlappingDate = document.querySelector('.will-calendar-tooltip-overlapping-date');
|
|
10852
10861
|
var loadingSpinner = document.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
10862
|
+
// Parents
|
|
10853
10863
|
var calendarButtons = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
10854
10864
|
var calendarButtonsCheckOut = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
10855
10865
|
var calendarMonthContainer = document.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
10856
|
-
var calendarOverlappingDate = document.
|
|
10857
|
-
var appendedOverlappingDateTooltip = document.querySelector('.will-filter-bar-calendar .rdp-cell .will-calendar-tooltip-overlapping-date');
|
|
10866
|
+
var calendarOverlappingDate = document.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
|
|
10858
10867
|
var tooltipClones = [];
|
|
10859
10868
|
var tooltipClonesCheckOut = [];
|
|
10869
|
+
var tooltipClonesOverlappingDates = [];
|
|
10860
10870
|
if (calendarTooltip && calendarButtons.length > 0) {
|
|
10861
10871
|
calendarButtons.forEach(function (element) {
|
|
10862
10872
|
var tooltipClone = calendarTooltip.cloneNode(true);
|
|
@@ -10874,23 +10884,20 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10874
10884
|
if (loadingSpinner && calendarMonthContainer) {
|
|
10875
10885
|
calendarMonthContainer.appendChild(loadingSpinner);
|
|
10876
10886
|
}
|
|
10877
|
-
if (
|
|
10878
|
-
|
|
10879
|
-
|
|
10880
|
-
|
|
10881
|
-
|
|
10882
|
-
|
|
10883
|
-
|
|
10884
|
-
appendedOverlappingDateTooltip.style.display = 'none';
|
|
10885
|
-
}
|
|
10886
|
-
else if (!calendarRange && appendedOverlappingDateTooltip) {
|
|
10887
|
-
appendedOverlappingDateTooltip.style.display = 'block';
|
|
10887
|
+
if (calendarTooltipOverlappingDate &&
|
|
10888
|
+
calendarOverlappingDate.length > 0) {
|
|
10889
|
+
calendarOverlappingDate.forEach(function (element) {
|
|
10890
|
+
var tooltipClone = calendarTooltipOverlappingDate.cloneNode(true);
|
|
10891
|
+
element.appendChild(tooltipClone);
|
|
10892
|
+
tooltipClonesOverlappingDates.push(tooltipClone);
|
|
10893
|
+
});
|
|
10888
10894
|
}
|
|
10889
10895
|
return function () {
|
|
10890
10896
|
tooltipClones.forEach(function (clone) { return clone.remove(); });
|
|
10891
10897
|
tooltipClonesCheckOut.forEach(function (clone) { return clone.remove(); });
|
|
10898
|
+
tooltipClonesOverlappingDates.forEach(function (clone) { return clone.remove(); });
|
|
10892
10899
|
};
|
|
10893
|
-
}, [calendarRange, overlappingDate]);
|
|
10900
|
+
}, [calendarRange, updateCalendar, overlappingDate]);
|
|
10894
10901
|
return (React__default__default.createElement("div", { className: "will-filter-bar-calendar", ref: ref },
|
|
10895
10902
|
React__default__default.createElement("div", { className: "will-calendar-filter-container" },
|
|
10896
10903
|
React__default__default.createElement(DayPicker, { id: "will-calendar", mode: "range", locale: language === 'en' ? enUS : fi, numberOfMonths: !isTablet ? 2 : 1, weekStartsOn: 1, selected: calendarRange, onSelect: function (range) {
|
|
@@ -10954,7 +10961,8 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
10954
10961
|
React__default__default.createElement("div", null, t('noCheckOut'))),
|
|
10955
10962
|
React__default__default.createElement("div", { className: 'will-calendar-tooltip-overlapping-date' },
|
|
10956
10963
|
React__default__default.createElement("div", null, t('checkOutOnly'))),
|
|
10957
|
-
React__default__default.createElement("div", { className: 'will-calendar-spinner' },
|
|
10964
|
+
React__default__default.createElement("div", { className: 'will-calendar-spinner' },
|
|
10965
|
+
React__default__default.createElement(SpinnerSVG, { fill: (palette === null || palette === void 0 ? void 0 : palette.primary) || 'inherit', size: 50 })))));
|
|
10958
10966
|
});
|
|
10959
10967
|
/////////
|
|
10960
10968
|
var handleSelectedCheckIn = function (_a) {
|
|
@@ -11490,7 +11498,7 @@ function FilterCalendar(_a) {
|
|
|
11490
11498
|
React__default__default.createElement("h2", null, t('filterBar:calendar.title')),
|
|
11491
11499
|
React__default__default.createElement(CloseButton, { handleClose: function () { return setToggleCalendar(false); } })),
|
|
11492
11500
|
React__default__default.createElement("div", { className: "will-calendar-main" },
|
|
11493
|
-
React__default__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 })),
|
|
11501
|
+
React__default__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 })),
|
|
11494
11502
|
React__default__default.createElement("div", { className: "will-calendar-footer" },
|
|
11495
11503
|
React__default__default.createElement("div", { className: "will-calendar-footer-dates" },
|
|
11496
11504
|
React__default__default.createElement("div", null,
|