willba-component-library 0.4.1 → 0.4.3
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/README.md +17 -100
- package/lib/components/FilterCalendar/FilterCalendar.d.ts +2 -1
- package/lib/core/components/calendar/hooks/useCalendarLoadingSpinner.d.ts +3 -1
- package/lib/core/components/calendar/hooks/useCalendarTooltips.d.ts +3 -1
- package/lib/core/utils/getQueryRoot.d.ts +1 -0
- package/lib/embed.d.ts +0 -20
- package/lib/embed.esm.js +4 -4
- package/lib/embed.esm.js.map +1 -1
- package/lib/embed.umd.js +4 -4
- package/lib/embed.umd.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.esm.js +46 -31
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +46 -31
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -532,8 +532,13 @@ var useCloseFilterSection = function (_a) {
|
|
|
532
532
|
var filterSectionRef = React.useRef(null);
|
|
533
533
|
React.useEffect(function () {
|
|
534
534
|
var handleClickOutside = function (event) {
|
|
535
|
-
if (filterSectionRef.current
|
|
536
|
-
|
|
535
|
+
if (!filterSectionRef.current)
|
|
536
|
+
return;
|
|
537
|
+
// composedPath() walks through Shadow DOM boundaries; event.target is
|
|
538
|
+
// retargeted to the shadow host when crossing them, which would falsely
|
|
539
|
+
// report clicks inside the panel as "outside".
|
|
540
|
+
var path = event.composedPath();
|
|
541
|
+
if (!path.includes(filterSectionRef.current)) {
|
|
537
542
|
handleSelectedFilter(false);
|
|
538
543
|
}
|
|
539
544
|
};
|
|
@@ -3088,21 +3093,17 @@ var fiCommon = {
|
|
|
3088
3093
|
errors: errors
|
|
3089
3094
|
};
|
|
3090
3095
|
|
|
3096
|
+
var DEFAULT_LANGUAGE = 'fi';
|
|
3091
3097
|
var resources = {
|
|
3092
3098
|
en: { filterBar: enFilterBar, common: enCommon },
|
|
3093
3099
|
fi: { filterBar: fiFilterBar, common: fiCommon },
|
|
3094
3100
|
};
|
|
3095
|
-
var readLocaleFromUrl = function () {
|
|
3096
|
-
if (typeof window === 'undefined')
|
|
3097
|
-
return null;
|
|
3098
|
-
return new URLSearchParams(window.location.search).get('locale');
|
|
3099
|
-
};
|
|
3100
3101
|
var createI18nInstance = function (language) {
|
|
3101
3102
|
var instance$1 = instance.createInstance();
|
|
3102
3103
|
instance$1.use(initReactI18next).init({
|
|
3103
3104
|
resources: resources,
|
|
3104
|
-
lng: language ||
|
|
3105
|
-
fallbackLng:
|
|
3105
|
+
lng: language || DEFAULT_LANGUAGE,
|
|
3106
|
+
fallbackLng: DEFAULT_LANGUAGE,
|
|
3106
3107
|
interpolation: { escapeValue: false },
|
|
3107
3108
|
});
|
|
3108
3109
|
return instance$1;
|
|
@@ -3110,7 +3111,7 @@ var createI18nInstance = function (language) {
|
|
|
3110
3111
|
|
|
3111
3112
|
var I18nProvider = function (_a) {
|
|
3112
3113
|
var language = _a.language, children = _a.children;
|
|
3113
|
-
var i18n = React.useMemo(function () { return createI18nInstance(language); }, []);
|
|
3114
|
+
var i18n = React.useMemo(function () { return createI18nInstance(language); }, [language]);
|
|
3114
3115
|
return React.createElement(I18nextProvider, { i18n: i18n }, children);
|
|
3115
3116
|
};
|
|
3116
3117
|
|
|
@@ -11897,25 +11898,38 @@ var checkForContinuousSelection = function (_a) {
|
|
|
11897
11898
|
});
|
|
11898
11899
|
};
|
|
11899
11900
|
|
|
11901
|
+
// Returns the nearest queryable root for an element. Inside a Shadow DOM this
|
|
11902
|
+
// returns the ShadowRoot (so `querySelector` searches inside the shadow tree);
|
|
11903
|
+
// otherwise returns `document`. Both support `querySelector`/`querySelectorAll`.
|
|
11904
|
+
var getQueryRoot = function (el) {
|
|
11905
|
+
var root = el === null || el === void 0 ? void 0 : el.getRootNode();
|
|
11906
|
+
if (root instanceof ShadowRoot)
|
|
11907
|
+
return root;
|
|
11908
|
+
return document;
|
|
11909
|
+
};
|
|
11910
|
+
|
|
11900
11911
|
var useCalendarTooltips = function (_a) {
|
|
11901
|
-
var showFeedback = _a.showFeedback;
|
|
11912
|
+
var showFeedback = _a.showFeedback, rootRef = _a.rootRef;
|
|
11902
11913
|
return React.useEffect(function () {
|
|
11903
11914
|
if (typeof document === 'undefined' || !showFeedback)
|
|
11904
11915
|
return;
|
|
11916
|
+
// Use the calendar's own DOM root (ShadowRoot or Document) so queries
|
|
11917
|
+
// resolve correctly when the component is mounted inside Shadow DOM.
|
|
11918
|
+
var root = getQueryRoot(rootRef === null || rootRef === void 0 ? void 0 : rootRef.current);
|
|
11905
11919
|
// Children
|
|
11906
|
-
var calendarTooltip =
|
|
11907
|
-
var calendarTooltipCheckOut =
|
|
11908
|
-
var calendarTooltipOverlappingDate =
|
|
11909
|
-
var loadingSpinner =
|
|
11910
|
-
var calendarTooltipCheckInOnly =
|
|
11911
|
-
var calendarTooltipCheckOutOnly =
|
|
11920
|
+
var calendarTooltip = root.querySelector('.will-calendar-tooltip');
|
|
11921
|
+
var calendarTooltipCheckOut = root.querySelector('.will-calendar-tooltip-check-out');
|
|
11922
|
+
var calendarTooltipOverlappingDate = root.querySelector('.will-calendar-tooltip-overlapping-date');
|
|
11923
|
+
var loadingSpinner = root.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
11924
|
+
var calendarTooltipCheckInOnly = root.querySelector('.will-calendar-tooltip-check-in-only');
|
|
11925
|
+
var calendarTooltipCheckOutOnly = root.querySelector('.will-calendar-tooltip-check-out-only');
|
|
11912
11926
|
// Parents
|
|
11913
|
-
var calendarButtons =
|
|
11914
|
-
var calendarButtonsCheckOut =
|
|
11915
|
-
var calendarMonthContainer =
|
|
11916
|
-
var calendarOverlappingDate =
|
|
11917
|
-
var calendarCheckInOnly =
|
|
11918
|
-
var calendarCheckOutOnly =
|
|
11927
|
+
var calendarButtons = root.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
11928
|
+
var calendarButtonsCheckOut = root.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
11929
|
+
var calendarMonthContainer = root.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
11930
|
+
var calendarOverlappingDate = root.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
|
|
11931
|
+
var calendarCheckInOnly = root.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-in-only)');
|
|
11932
|
+
var calendarCheckOutOnly = root.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-out-only)');
|
|
11919
11933
|
// Append children to parents
|
|
11920
11934
|
var tooltipClonesCheckIn = [];
|
|
11921
11935
|
var tooltipClonesCheckOut = [];
|
|
@@ -11975,11 +11989,12 @@ var useCalendarTooltips = function (_a) {
|
|
|
11975
11989
|
};
|
|
11976
11990
|
|
|
11977
11991
|
var useCalendarLoadingSpinner = function (_a) {
|
|
11978
|
-
var loadingData = _a.loadingData;
|
|
11992
|
+
var loadingData = _a.loadingData, rootRef = _a.rootRef;
|
|
11979
11993
|
return React.useEffect(function () {
|
|
11980
11994
|
if (typeof document === 'undefined')
|
|
11981
11995
|
return;
|
|
11982
|
-
var
|
|
11996
|
+
var root = getQueryRoot(rootRef === null || rootRef === void 0 ? void 0 : rootRef.current);
|
|
11997
|
+
var loadingSpinner = root.querySelector('.will-filter-bar-calendar .rdp-months .will-calendar-spinner');
|
|
11983
11998
|
if (loadingData) {
|
|
11984
11999
|
if (loadingSpinner)
|
|
11985
12000
|
loadingSpinner.style.display = 'flex';
|
|
@@ -12078,10 +12093,12 @@ var Calendar = React.forwardRef(function (_a, ref) {
|
|
|
12078
12093
|
// Handle tooltip
|
|
12079
12094
|
useCalendarTooltips({
|
|
12080
12095
|
showFeedback: showFeedback,
|
|
12096
|
+
rootRef: calendarContainerRef,
|
|
12081
12097
|
});
|
|
12082
12098
|
// Handle loading spinner
|
|
12083
12099
|
useCalendarLoadingSpinner({
|
|
12084
12100
|
loadingData: loadingData,
|
|
12101
|
+
rootRef: calendarContainerRef,
|
|
12085
12102
|
});
|
|
12086
12103
|
// Handle the date selection and availability for selection logic.
|
|
12087
12104
|
var handleOnSelect = function (range) {
|
|
@@ -12626,11 +12643,9 @@ var renderCalendarErrorMessage = function (_a) {
|
|
|
12626
12643
|
var css_248z = ".will-root .will-calendar-wrapper {\n box-shadow: var(--will-box-shadow-dark);\n border-radius: 20px;\n background-color: var(--will-white);\n position: absolute;\n top: 0;\n left: 0;\n \n}\n\n.will-root .will-calendar-wrapper .will-calendar-header,\n.will-root .will-calendar-wrapper .will-calendar-main,\n.will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px;\n}\n\n/* Header */\n\n.will-root .will-calendar-wrapper .will-calendar-header {\n display: flex;\n justify-content: space-between;\n border-bottom: 1px solid var(--will-grey);\n align-items: center;\n}\n\n/* Footer */\n\n.will-root .will-calendar-wrapper .will-calendar-footer {\n border-top: 1px solid var(--will-grey);\n}\n\n/* Footer actions */\n\n.will-root .will-calendar-wrapper .will-calendar-footer-actions-wrapper {\n display: flex;\n justify-content: space-between;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates > div {\n margin-bottom: 5px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates-separator {\n margin: 0 15px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-dates .will-calendar-footer-booked {\n display: flex;\n min-height: 20.5px;\n margin-top: 10px;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-error {\n display: flex;\n max-width: 80%;\n}\n\n.will-root .will-calendar-wrapper .will-calendar-footer-error span {\n display: inline-block;\n margin-left: 10px;\n}\n\n@media (max-width: 960px) {\n .will-root .will-calendar-wrapper {\n width: -webkit-fill-available;\n margin: 0 -6%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-header,\n .will-root .will-calendar-wrapper .will-calendar-main,\n .will-root .will-calendar-wrapper .will-calendar-footer {\n padding: 20px 10px;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions-wrapper {\n flex-direction: column;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-dates {\n text-align: center;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-dates .will-calendar-footer-booked {\n justify-content: center;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions {\n flex-direction: column;\n width: 100%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-actions button{\n width: 100%;\n margin-top: 10px;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-error {\n max-width: 100%;\n }\n\n .will-root .will-calendar-wrapper .will-calendar-footer-error span {\n text-align: center;\n margin-left: 5px;\n }\n }\n\n.will-root .will-calendar-wrapper .will-calendar-header .will-filter-bar-close-button {\n position: initial;\n}";
|
|
12627
12644
|
styleInject(css_248z);
|
|
12628
12645
|
|
|
12629
|
-
function
|
|
12630
|
-
|
|
12631
|
-
|
|
12632
|
-
}
|
|
12633
|
-
function FilterCalendarInner(_a) {
|
|
12646
|
+
var FilterCalendar = function (props) { return (React.createElement(I18nProvider, { language: props.language },
|
|
12647
|
+
React.createElement(FilterCalendarInner, __assign$2({}, props)))); };
|
|
12648
|
+
var FilterCalendarInner = function (_a) {
|
|
12634
12649
|
var calendarOffset = _a.calendarOffset, language = _a.language, palette = _a.palette, onSubmit = _a.onSubmit, outerDisableCalendarDates = _a.disableCalendarDates, toggleCalendar = _a.toggleCalendar, loadingData = _a.loadingData, setToggleCalendar = _a.setToggleCalendar, requestDates = _a.requestDates, showFeedback = _a.showFeedback, noActiveSelection = _a.noActiveSelection, outerRangeContext = _a.rangeContext;
|
|
12635
12650
|
var themePalette = useTheme({ palette: palette });
|
|
12636
12651
|
// Translations
|
|
@@ -12658,7 +12673,7 @@ function FilterCalendarInner(_a) {
|
|
|
12658
12673
|
React.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, calendarOffset: calendarOffset, selectedPath: '/rooms', language: language, disableCalendarDates: disableCalendarDates, requestDates: requestDates, disabledDates: disabledDates, updateCalendarMonthNavigation: updateCalendarMonthNavigation, setUpdateCalendarMonthNavigation: setUpdateCalendarMonthNavigation, updateCalendarDefaultMonth: updateCalendarDefaultMonth, loadingData: loadingData, showFeedback: showFeedback, noActiveSelection: noActiveSelection, palette: palette, setCalendarHasError: setCalendarHasError, setUpdatedForSubmit: setUpdatedForSubmit, rangeContext: rangeContext, calendarHasError: calendarHasError })),
|
|
12659
12674
|
React.createElement("div", { className: "will-calendar-footer" },
|
|
12660
12675
|
React.createElement(Footer, { calendarHasError: calendarHasError, calendarRange: calendarRange, handleClearDates: handleClearDates, language: language, palette: palette }))))));
|
|
12661
|
-
}
|
|
12676
|
+
};
|
|
12662
12677
|
|
|
12663
12678
|
exports.Button = Button$1;
|
|
12664
12679
|
exports.FilterBar = FilterBar;
|