willba-component-library 0.2.46 → 0.2.48
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/components/FilterBar/FilterBar.d.ts +1 -1
- package/lib/components/FilterBar/FilterBarTypes.d.ts +1 -0
- package/lib/components/FilterBar/hooks/useFilterBar.d.ts +3 -1
- package/lib/core/components/buttons/submit-button/SubmitButton.d.ts +2 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.esm.js +15 -9
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +15 -9
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +15 -9
- package/lib/index.umd.js.map +1 -1
- package/lib/themes/useTheme.d.ts +1 -2
- package/package.json +1 -1
- package/src/components/FilterBar/FilterBar.stories.tsx +1 -0
- package/src/components/FilterBar/FilterBar.tsx +4 -0
- package/src/components/FilterBar/FilterBarTypes.ts +1 -0
- package/src/components/FilterBar/hooks/useFilterBar.tsx +5 -0
- package/src/core/components/buttons/submit-button/SubmitButton.css +7 -0
- package/src/core/components/buttons/submit-button/SubmitButton.tsx +14 -2
- package/src/themes/useTheme.tsx +1 -1
|
@@ -2,4 +2,4 @@ import React from 'react';
|
|
|
2
2
|
import '../../themes/Default.css';
|
|
3
3
|
import { FilterBarProps } from './FilterBarTypes';
|
|
4
4
|
import './FilterBar.css';
|
|
5
|
-
export default function FilterBar({ language, ageCategories, redirectUrl, palette, onSubmit, fullWidth, disableCalendarDates, mode, tabs, }: FilterBarProps): React.JSX.Element;
|
|
5
|
+
export default function FilterBar({ language, ageCategories, redirectUrl, palette, onSubmit, fullWidth, disableCalendarDates, mode, tabs, isLoading, }: FilterBarProps): React.JSX.Element;
|
|
@@ -6,13 +6,15 @@ type Props = {
|
|
|
6
6
|
ageCategories?: AgeCategoryType[];
|
|
7
7
|
onSubmit?: ((val: Filters) => void) | null;
|
|
8
8
|
tabs?: Tab[];
|
|
9
|
+
isLoading?: boolean;
|
|
9
10
|
};
|
|
10
|
-
export declare const useFilterBar: ({ redirectUrl, ageCategories, onSubmit, tabs, }: Props) => {
|
|
11
|
+
export declare const useFilterBar: ({ redirectUrl, ageCategories, onSubmit, tabs, isLoading, }: Props) => {
|
|
11
12
|
selectedFilter: string | boolean;
|
|
12
13
|
ageCategoryCounts: AgeCategoryCount;
|
|
13
14
|
categories: number;
|
|
14
15
|
calendarRange: DateRange | undefined;
|
|
15
16
|
selectedPath: string;
|
|
17
|
+
loading: boolean;
|
|
16
18
|
setCalendarRange: import("react").Dispatch<import("react").SetStateAction<DateRange | undefined>>;
|
|
17
19
|
setSelectedFilter: import("react").Dispatch<import("react").SetStateAction<string | boolean>>;
|
|
18
20
|
setAgeCategoryCounts: import("react").Dispatch<import("react").SetStateAction<AgeCategoryCount>>;
|
|
@@ -5,6 +5,7 @@ type Props = {
|
|
|
5
5
|
startIcon?: ReactNode;
|
|
6
6
|
label?: string;
|
|
7
7
|
disabled?: boolean;
|
|
8
|
+
isLoading?: boolean;
|
|
8
9
|
};
|
|
9
|
-
export declare const SubmitButton: ({ onClick, startIcon, label, disabled, }: Props) => React.JSX.Element;
|
|
10
|
+
export declare const SubmitButton: ({ onClick, startIcon, label, disabled, isLoading, }: Props) => React.JSX.Element;
|
|
10
11
|
export {};
|
package/lib/index.d.ts
CHANGED
|
@@ -82,6 +82,7 @@ type FilterBarProps = {
|
|
|
82
82
|
mode?: string;
|
|
83
83
|
defaultTab?: string;
|
|
84
84
|
tabs?: Tab[];
|
|
85
|
+
isLoading?: boolean;
|
|
85
86
|
};
|
|
86
87
|
type AgeCategoryType = {
|
|
87
88
|
id: string;
|
|
@@ -104,7 +105,7 @@ type Tab = {
|
|
|
104
105
|
label?: Translations;
|
|
105
106
|
};
|
|
106
107
|
|
|
107
|
-
declare function FilterBar({ language, ageCategories, redirectUrl, palette, onSubmit, fullWidth, disableCalendarDates, mode, tabs, }: FilterBarProps): React.JSX.Element;
|
|
108
|
+
declare function FilterBar({ language, ageCategories, redirectUrl, palette, onSubmit, fullWidth, disableCalendarDates, mode, tabs, isLoading, }: FilterBarProps): React.JSX.Element;
|
|
108
109
|
|
|
109
110
|
interface FilterCalendarTypes extends Partial<CalendarTypes> {
|
|
110
111
|
palette: Palette;
|
package/lib/index.esm.js
CHANGED
|
@@ -513,6 +513,8 @@ function IconBase(props) {
|
|
|
513
513
|
// THIS FILE IS AUTO GENERATED
|
|
514
514
|
function FaSearch (props) {
|
|
515
515
|
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 512 512"},"child":[{"tag":"path","attr":{"d":"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"}}]})(props);
|
|
516
|
+
}function FaSpinner (props) {
|
|
517
|
+
return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 512 512"},"child":[{"tag":"path","attr":{"d":"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"}}]})(props);
|
|
516
518
|
}
|
|
517
519
|
|
|
518
520
|
function useTheme(_a) {
|
|
@@ -2968,13 +2970,13 @@ var useCloseFilterSection = function (_a) {
|
|
|
2968
2970
|
return { filtersRef: filtersRef };
|
|
2969
2971
|
};
|
|
2970
2972
|
|
|
2971
|
-
var css_248z$b = ".will-filter-bar-submit-button {\n width: auto;\n height: auto;\n background-color: var(--will-primary);\n color: var(--will-white);\n padding: 10px 20px;\n border-radius: 20px;\n cursor: pointer;\n border: none;\n white-space: nowrap;\n text-transform: uppercase;\n font-size: 12px;\n display: flex;\n align-items: center;\n}\n\n.will-filter-bar-submit-button span {\n margin-right: 10px;\n display: flex;\n}\n\nbutton.will-filter-bar-submit-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n@media (max-width: 960px) {\n .will-filter-bar-submit-button {\n justify-content: center;\n \n }\n}\n";
|
|
2973
|
+
var css_248z$b = ".will-filter-bar-submit-button {\n width: auto;\n height: auto;\n background-color: var(--will-primary);\n color: var(--will-white);\n padding: 10px 20px;\n border-radius: 20px;\n cursor: pointer;\n border: none;\n white-space: nowrap;\n text-transform: uppercase;\n font-size: 12px;\n display: flex;\n align-items: center;\n}\n\n.will-filter-bar-submit-button span {\n margin-right: 10px;\n display: flex;\n}\n\nbutton.will-filter-bar-submit-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n@media (max-width: 960px) {\n .will-filter-bar-submit-button {\n justify-content: center;\n \n }\n}\n\n/* --- */\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n";
|
|
2972
2974
|
styleInject(css_248z$b);
|
|
2973
2975
|
|
|
2974
2976
|
var SubmitButton = function (_a) {
|
|
2975
|
-
var onClick = _a.onClick, startIcon = _a.startIcon, label = _a.label, disabled = _a.disabled;
|
|
2976
|
-
return (React__default__default.createElement("button", { className: "will-filter-bar-submit-button", onClick: onClick, disabled: disabled },
|
|
2977
|
-
startIcon && React__default__default.createElement("span", null, startIcon),
|
|
2977
|
+
var onClick = _a.onClick, startIcon = _a.startIcon, label = _a.label, disabled = _a.disabled, isLoading = _a.isLoading;
|
|
2978
|
+
return (React__default__default.createElement("button", { className: "will-filter-bar-submit-button", onClick: onClick, disabled: disabled || isLoading },
|
|
2979
|
+
isLoading ? (React__default__default.createElement("span", null, React__default__default.createElement(FaSpinner, { style: { animation: 'spin 1s linear infinite' } }))) : (startIcon && React__default__default.createElement("span", null, startIcon)),
|
|
2978
2980
|
label || 'Label'));
|
|
2979
2981
|
};
|
|
2980
2982
|
|
|
@@ -11134,12 +11136,13 @@ var Pages;
|
|
|
11134
11136
|
})(Pages || (Pages = {}));
|
|
11135
11137
|
|
|
11136
11138
|
var useFilterBar = function (_a) {
|
|
11137
|
-
var redirectUrl = _a.redirectUrl, ageCategories = _a.ageCategories, onSubmit = _a.onSubmit, tabs = _a.tabs;
|
|
11139
|
+
var redirectUrl = _a.redirectUrl, ageCategories = _a.ageCategories, onSubmit = _a.onSubmit, tabs = _a.tabs, isLoading = _a.isLoading;
|
|
11138
11140
|
var _b = __read(useState(Pages.EVENTS), 2), selectedPath = _b[0], setSelectedPath = _b[1];
|
|
11139
11141
|
var _c = __read(useState(false), 2), selectedFilter = _c[0], setSelectedFilter = _c[1];
|
|
11140
11142
|
var _d = __read(useState(), 2), calendarRange = _d[0], setCalendarRange = _d[1];
|
|
11141
|
-
var _e = __read(useState(
|
|
11142
|
-
var _f = __read(useState(
|
|
11143
|
+
var _e = __read(useState(isLoading || false), 2), loading = _e[0], setLoading = _e[1];
|
|
11144
|
+
var _f = __read(useState(0), 2), categories = _f[0], setCategories = _f[1];
|
|
11145
|
+
var _g = __read(useState({}), 2), ageCategoryCounts = _g[0], setAgeCategoryCounts = _g[1];
|
|
11143
11146
|
useEffect(function () {
|
|
11144
11147
|
var urlSearchParams = new URLSearchParams(window.location.search);
|
|
11145
11148
|
var startDateParam = urlSearchParams.get('startDate');
|
|
@@ -11231,6 +11234,7 @@ var useFilterBar = function (_a) {
|
|
|
11231
11234
|
finally { if (e_2) throw e_2.error; }
|
|
11232
11235
|
}
|
|
11233
11236
|
handleSelectedFilter(false);
|
|
11237
|
+
setLoading(true);
|
|
11234
11238
|
return onSubmit && selectedPath === Pages.ROOMS
|
|
11235
11239
|
? onSubmit(newParams)
|
|
11236
11240
|
: (window.location.href = "".concat(redirectUrl, "/").concat(selectedPath).concat(querySearchParams ? "?".concat(querySearchParams.toString()) : ''));
|
|
@@ -11245,6 +11249,7 @@ var useFilterBar = function (_a) {
|
|
|
11245
11249
|
categories: categories,
|
|
11246
11250
|
calendarRange: calendarRange,
|
|
11247
11251
|
selectedPath: selectedPath,
|
|
11252
|
+
loading: loading,
|
|
11248
11253
|
setCalendarRange: setCalendarRange,
|
|
11249
11254
|
setSelectedFilter: setSelectedFilter,
|
|
11250
11255
|
setAgeCategoryCounts: setAgeCategoryCounts,
|
|
@@ -11392,7 +11397,7 @@ var css_248z$1 = ".will-root {\n z-index: 999;\n width: fit-content;\n min-wi
|
|
|
11392
11397
|
styleInject(css_248z$1);
|
|
11393
11398
|
|
|
11394
11399
|
function FilterBar(_a) {
|
|
11395
|
-
var language = _a.language, _b = _a.ageCategories, ageCategories = _b === void 0 ? AGE_CATEGORIES_FALLBACK : _b, _c = _a.redirectUrl, redirectUrl = _c === void 0 ? REDIRECT_URL_FALLBACK : _c, palette = _a.palette, onSubmit = _a.onSubmit, fullWidth = _a.fullWidth, disableCalendarDates = _a.disableCalendarDates, mode = _a.mode, tabs = _a.tabs;
|
|
11400
|
+
var language = _a.language, _b = _a.ageCategories, ageCategories = _b === void 0 ? AGE_CATEGORIES_FALLBACK : _b, _c = _a.redirectUrl, redirectUrl = _c === void 0 ? REDIRECT_URL_FALLBACK : _c, palette = _a.palette, onSubmit = _a.onSubmit, fullWidth = _a.fullWidth, disableCalendarDates = _a.disableCalendarDates, mode = _a.mode, tabs = _a.tabs, isLoading = _a.isLoading;
|
|
11396
11401
|
var themePalette = useTheme({ palette: palette });
|
|
11397
11402
|
// Translations
|
|
11398
11403
|
useUpdateTranslations({ language: language });
|
|
@@ -11403,6 +11408,7 @@ function FilterBar(_a) {
|
|
|
11403
11408
|
ageCategories: ageCategories,
|
|
11404
11409
|
onSubmit: onSubmit,
|
|
11405
11410
|
tabs: tabs,
|
|
11411
|
+
isLoading: isLoading,
|
|
11406
11412
|
}), selectedFilter = _d.selectedFilter, ageCategoryCounts = _d.ageCategoryCounts, categories = _d.categories, calendarRange = _d.calendarRange, selectedPath = _d.selectedPath, setCalendarRange = _d.setCalendarRange, setCategories = _d.setCategories, handleSelectedFilter = _d.handleSelectedFilter, handleSubmit = _d.handleSubmit, updateGuestsCount = _d.updateGuestsCount, setSelectedPath = _d.setSelectedPath, handleResetFilters = _d.handleResetFilters;
|
|
11407
11413
|
// Scroll in to view
|
|
11408
11414
|
var _e = useScrollInToView({ selectedFilter: selectedFilter }), isMobile = _e.isMobile, targetFilterBarRef = _e.targetFilterBarRef;
|
|
@@ -11436,7 +11442,7 @@ function FilterBar(_a) {
|
|
|
11436
11442
|
selectedPath === Pages.ROOMS && (React__default__default.createElement(React__default__default.Fragment, null,
|
|
11437
11443
|
React__default__default.createElement(Divider, null),
|
|
11438
11444
|
React__default__default.createElement(SelectButton, { label: t('guests.label'), description: parsedGuests.content, onClick: function () { return handleSelectedFilter(FilterSections.GUESTS); }, active: !!parsedGuests.data.total }))),
|
|
11439
|
-
React__default__default.createElement(SubmitButton, { onClick: handleSubmit, startIcon: React__default__default.createElement(FaSearch, null), label: t('common:search') })),
|
|
11445
|
+
React__default__default.createElement(SubmitButton, { onClick: handleSubmit, startIcon: React__default__default.createElement(FaSearch, null), label: t('common:search'), isLoading: isLoading })),
|
|
11440
11446
|
selectedFilter && (React__default__default.createElement("div", { className: "will-filter-bar-container ".concat(mode || 'light'), style: (!tabs || tabs.length < 2) && !isMobile ? { top: 66 } : {} },
|
|
11441
11447
|
React__default__default.createElement(CloseButton, { handleClose: function () { return handleSelectedFilter(false); } }),
|
|
11442
11448
|
selectedFilter === FilterSections.CALENDAR && (React__default__default.createElement(Calendar, { calendarRange: calendarRange, setCalendarRange: setCalendarRange, ref: filtersRef, disableCalendarDates: disableCalendarDates, selectedPath: selectedPath, language: language })),
|