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.d.ts
CHANGED
|
@@ -129,6 +129,6 @@ interface FilterCalendarTypes extends Partial<CalendarTypes> {
|
|
|
129
129
|
setToggleCalendar: (val: boolean) => void;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
declare
|
|
132
|
+
declare const FilterCalendar: (props: FilterCalendarTypes) => React.JSX.Element;
|
|
133
133
|
|
|
134
134
|
export { Button, FilterBar, FilterBarTypes, FilterCalendar, FilterCalendarTypes };
|
package/lib/index.esm.js
CHANGED
|
@@ -512,8 +512,13 @@ var useCloseFilterSection = function (_a) {
|
|
|
512
512
|
var filterSectionRef = useRef(null);
|
|
513
513
|
useEffect(function () {
|
|
514
514
|
var handleClickOutside = function (event) {
|
|
515
|
-
if (filterSectionRef.current
|
|
516
|
-
|
|
515
|
+
if (!filterSectionRef.current)
|
|
516
|
+
return;
|
|
517
|
+
// composedPath() walks through Shadow DOM boundaries; event.target is
|
|
518
|
+
// retargeted to the shadow host when crossing them, which would falsely
|
|
519
|
+
// report clicks inside the panel as "outside".
|
|
520
|
+
var path = event.composedPath();
|
|
521
|
+
if (!path.includes(filterSectionRef.current)) {
|
|
517
522
|
handleSelectedFilter(false);
|
|
518
523
|
}
|
|
519
524
|
};
|
|
@@ -3068,21 +3073,17 @@ var fiCommon = {
|
|
|
3068
3073
|
errors: errors
|
|
3069
3074
|
};
|
|
3070
3075
|
|
|
3076
|
+
var DEFAULT_LANGUAGE = 'fi';
|
|
3071
3077
|
var resources = {
|
|
3072
3078
|
en: { filterBar: enFilterBar, common: enCommon },
|
|
3073
3079
|
fi: { filterBar: fiFilterBar, common: fiCommon },
|
|
3074
3080
|
};
|
|
3075
|
-
var readLocaleFromUrl = function () {
|
|
3076
|
-
if (typeof window === 'undefined')
|
|
3077
|
-
return null;
|
|
3078
|
-
return new URLSearchParams(window.location.search).get('locale');
|
|
3079
|
-
};
|
|
3080
3081
|
var createI18nInstance = function (language) {
|
|
3081
3082
|
var instance$1 = instance.createInstance();
|
|
3082
3083
|
instance$1.use(initReactI18next).init({
|
|
3083
3084
|
resources: resources,
|
|
3084
|
-
lng: language ||
|
|
3085
|
-
fallbackLng:
|
|
3085
|
+
lng: language || DEFAULT_LANGUAGE,
|
|
3086
|
+
fallbackLng: DEFAULT_LANGUAGE,
|
|
3086
3087
|
interpolation: { escapeValue: false },
|
|
3087
3088
|
});
|
|
3088
3089
|
return instance$1;
|
|
@@ -3090,7 +3091,7 @@ var createI18nInstance = function (language) {
|
|
|
3090
3091
|
|
|
3091
3092
|
var I18nProvider = function (_a) {
|
|
3092
3093
|
var language = _a.language, children = _a.children;
|
|
3093
|
-
var i18n = useMemo(function () { return createI18nInstance(language); }, []);
|
|
3094
|
+
var i18n = useMemo(function () { return createI18nInstance(language); }, [language]);
|
|
3094
3095
|
return React__default.createElement(I18nextProvider, { i18n: i18n }, children);
|
|
3095
3096
|
};
|
|
3096
3097
|
|
|
@@ -11877,25 +11878,38 @@ var checkForContinuousSelection = function (_a) {
|
|
|
11877
11878
|
});
|
|
11878
11879
|
};
|
|
11879
11880
|
|
|
11881
|
+
// Returns the nearest queryable root for an element. Inside a Shadow DOM this
|
|
11882
|
+
// returns the ShadowRoot (so `querySelector` searches inside the shadow tree);
|
|
11883
|
+
// otherwise returns `document`. Both support `querySelector`/`querySelectorAll`.
|
|
11884
|
+
var getQueryRoot = function (el) {
|
|
11885
|
+
var root = el === null || el === void 0 ? void 0 : el.getRootNode();
|
|
11886
|
+
if (root instanceof ShadowRoot)
|
|
11887
|
+
return root;
|
|
11888
|
+
return document;
|
|
11889
|
+
};
|
|
11890
|
+
|
|
11880
11891
|
var useCalendarTooltips = function (_a) {
|
|
11881
|
-
var showFeedback = _a.showFeedback;
|
|
11892
|
+
var showFeedback = _a.showFeedback, rootRef = _a.rootRef;
|
|
11882
11893
|
return useEffect(function () {
|
|
11883
11894
|
if (typeof document === 'undefined' || !showFeedback)
|
|
11884
11895
|
return;
|
|
11896
|
+
// Use the calendar's own DOM root (ShadowRoot or Document) so queries
|
|
11897
|
+
// resolve correctly when the component is mounted inside Shadow DOM.
|
|
11898
|
+
var root = getQueryRoot(rootRef === null || rootRef === void 0 ? void 0 : rootRef.current);
|
|
11885
11899
|
// Children
|
|
11886
|
-
var calendarTooltip =
|
|
11887
|
-
var calendarTooltipCheckOut =
|
|
11888
|
-
var calendarTooltipOverlappingDate =
|
|
11889
|
-
var loadingSpinner =
|
|
11890
|
-
var calendarTooltipCheckInOnly =
|
|
11891
|
-
var calendarTooltipCheckOutOnly =
|
|
11900
|
+
var calendarTooltip = root.querySelector('.will-calendar-tooltip');
|
|
11901
|
+
var calendarTooltipCheckOut = root.querySelector('.will-calendar-tooltip-check-out');
|
|
11902
|
+
var calendarTooltipOverlappingDate = root.querySelector('.will-calendar-tooltip-overlapping-date');
|
|
11903
|
+
var loadingSpinner = root.querySelector('.will-filter-bar-calendar .will-calendar-spinner');
|
|
11904
|
+
var calendarTooltipCheckInOnly = root.querySelector('.will-calendar-tooltip-check-in-only');
|
|
11905
|
+
var calendarTooltipCheckOutOnly = root.querySelector('.will-calendar-tooltip-check-out-only');
|
|
11892
11906
|
// Parents
|
|
11893
|
-
var calendarButtons =
|
|
11894
|
-
var calendarButtonsCheckOut =
|
|
11895
|
-
var calendarMonthContainer =
|
|
11896
|
-
var calendarOverlappingDate =
|
|
11897
|
-
var calendarCheckInOnly =
|
|
11898
|
-
var calendarCheckOutOnly =
|
|
11907
|
+
var calendarButtons = root.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked):not(:has(.disabled-after-check-in))');
|
|
11908
|
+
var calendarButtonsCheckOut = root.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.booked.disabled-after-check-in)');
|
|
11909
|
+
var calendarMonthContainer = root.querySelector('.will-filter-bar-calendar .rdp-months');
|
|
11910
|
+
var calendarOverlappingDate = root.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.overlapping-date)');
|
|
11911
|
+
var calendarCheckInOnly = root.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-in-only)');
|
|
11912
|
+
var calendarCheckOutOnly = root.querySelectorAll('.will-filter-bar-calendar .rdp-cell:has(.check-out-only)');
|
|
11899
11913
|
// Append children to parents
|
|
11900
11914
|
var tooltipClonesCheckIn = [];
|
|
11901
11915
|
var tooltipClonesCheckOut = [];
|
|
@@ -11955,11 +11969,12 @@ var useCalendarTooltips = function (_a) {
|
|
|
11955
11969
|
};
|
|
11956
11970
|
|
|
11957
11971
|
var useCalendarLoadingSpinner = function (_a) {
|
|
11958
|
-
var loadingData = _a.loadingData;
|
|
11972
|
+
var loadingData = _a.loadingData, rootRef = _a.rootRef;
|
|
11959
11973
|
return useEffect(function () {
|
|
11960
11974
|
if (typeof document === 'undefined')
|
|
11961
11975
|
return;
|
|
11962
|
-
var
|
|
11976
|
+
var root = getQueryRoot(rootRef === null || rootRef === void 0 ? void 0 : rootRef.current);
|
|
11977
|
+
var loadingSpinner = root.querySelector('.will-filter-bar-calendar .rdp-months .will-calendar-spinner');
|
|
11963
11978
|
if (loadingData) {
|
|
11964
11979
|
if (loadingSpinner)
|
|
11965
11980
|
loadingSpinner.style.display = 'flex';
|
|
@@ -12058,10 +12073,12 @@ var Calendar = forwardRef(function (_a, ref) {
|
|
|
12058
12073
|
// Handle tooltip
|
|
12059
12074
|
useCalendarTooltips({
|
|
12060
12075
|
showFeedback: showFeedback,
|
|
12076
|
+
rootRef: calendarContainerRef,
|
|
12061
12077
|
});
|
|
12062
12078
|
// Handle loading spinner
|
|
12063
12079
|
useCalendarLoadingSpinner({
|
|
12064
12080
|
loadingData: loadingData,
|
|
12081
|
+
rootRef: calendarContainerRef,
|
|
12065
12082
|
});
|
|
12066
12083
|
// Handle the date selection and availability for selection logic.
|
|
12067
12084
|
var handleOnSelect = function (range) {
|
|
@@ -12606,11 +12623,9 @@ var renderCalendarErrorMessage = function (_a) {
|
|
|
12606
12623
|
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}";
|
|
12607
12624
|
styleInject(css_248z);
|
|
12608
12625
|
|
|
12609
|
-
function
|
|
12610
|
-
|
|
12611
|
-
|
|
12612
|
-
}
|
|
12613
|
-
function FilterCalendarInner(_a) {
|
|
12626
|
+
var FilterCalendar = function (props) { return (React__default.createElement(I18nProvider, { language: props.language },
|
|
12627
|
+
React__default.createElement(FilterCalendarInner, __assign$2({}, props)))); };
|
|
12628
|
+
var FilterCalendarInner = function (_a) {
|
|
12614
12629
|
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;
|
|
12615
12630
|
var themePalette = useTheme({ palette: palette });
|
|
12616
12631
|
// Translations
|
|
@@ -12638,7 +12653,7 @@ function FilterCalendarInner(_a) {
|
|
|
12638
12653
|
React__default.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 })),
|
|
12639
12654
|
React__default.createElement("div", { className: "will-calendar-footer" },
|
|
12640
12655
|
React__default.createElement(Footer, { calendarHasError: calendarHasError, calendarRange: calendarRange, handleClearDates: handleClearDates, language: language, palette: palette }))))));
|
|
12641
|
-
}
|
|
12656
|
+
};
|
|
12642
12657
|
|
|
12643
12658
|
export { Button$1 as Button, FilterBar, FilterCalendar };
|
|
12644
12659
|
//# sourceMappingURL=index.esm.js.map
|