willba-component-library 0.3.25 → 0.3.26
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 +1 -1
- package/lib/components/FilterBar/hooks/usePanelPosition.d.ts +5 -3
- package/lib/index.esm.js +16 -13
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +16 -13
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +16 -13
- package/lib/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FilterBar/components/FilterControls/FilterControls.css +4 -0
- package/src/components/FilterBar/components/FilterControls/FilterControls.tsx +1 -1
- package/src/components/FilterBar/components/FilterPanels/FilterPanels.css +0 -2
- package/src/components/FilterBar/components/FilterPanels/FilterPanels.tsx +3 -5
- package/src/components/FilterBar/hooks/usePanelPosition.tsx +12 -13
package/README.md
CHANGED
|
@@ -107,7 +107,7 @@ ReactDOM.render(<App />, document.querySelector('#app'))
|
|
|
107
107
|
|
|
108
108
|
<script src="https://unpkg.com/react@18.3.1/umd/react.production.min.js"></script>
|
|
109
109
|
<script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.production.min.js"></script>
|
|
110
|
-
<script src="https://cdn.jsdelivr.net/npm/willba-component-library@0.3.
|
|
110
|
+
<script src="https://cdn.jsdelivr.net/npm/willba-component-library@0.3.26/lib/index.umd.js"></script>
|
|
111
111
|
|
|
112
112
|
<script>
|
|
113
113
|
const renderFilterBar = async () => {
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MutableRefObject, RefObject } from 'react';
|
|
2
2
|
type Props = {
|
|
3
3
|
selectedFilter: string | boolean;
|
|
4
4
|
panelRef: RefObject<HTMLDivElement | null>;
|
|
5
5
|
filtersRef: RefObject<HTMLDivElement | null>;
|
|
6
6
|
buttonRefs: MutableRefObject<Record<string, HTMLButtonElement | null>>;
|
|
7
7
|
isMobile: boolean;
|
|
8
|
+
tabs?: unknown[];
|
|
8
9
|
};
|
|
9
|
-
export declare const usePanelPosition: ({ selectedFilter, panelRef, filtersRef, buttonRefs, isMobile, }: Props) => {
|
|
10
|
-
|
|
10
|
+
export declare const usePanelPosition: ({ selectedFilter, panelRef, filtersRef, buttonRefs, isMobile, tabs, }: Props) => {
|
|
11
|
+
top: number;
|
|
12
|
+
left: number | undefined;
|
|
11
13
|
};
|
|
12
14
|
export {};
|
package/lib/index.esm.js
CHANGED
|
@@ -6828,11 +6828,13 @@ var useFilterRefs = function (selectedFilter) {
|
|
|
6828
6828
|
};
|
|
6829
6829
|
|
|
6830
6830
|
var usePanelPosition = function (_a) {
|
|
6831
|
-
var selectedFilter = _a.selectedFilter, panelRef = _a.panelRef, filtersRef = _a.filtersRef, buttonRefs = _a.buttonRefs, isMobile = _a.isMobile;
|
|
6832
|
-
var _b = __read(useState(
|
|
6831
|
+
var selectedFilter = _a.selectedFilter, panelRef = _a.panelRef, filtersRef = _a.filtersRef, buttonRefs = _a.buttonRefs, isMobile = _a.isMobile, tabs = _a.tabs;
|
|
6832
|
+
var _b = __read(useState(), 2), left = _b[0], setLeft = _b[1];
|
|
6833
|
+
var hasMultipleTabs = tabs && tabs.length > 1;
|
|
6834
|
+
var top = isMobile ? (hasMultipleTabs ? 60 : 0) : hasMultipleTabs ? 125 : 66;
|
|
6833
6835
|
useLayoutEffect(function () {
|
|
6834
6836
|
if (!selectedFilter || typeof selectedFilter !== 'string' || isMobile) {
|
|
6835
|
-
|
|
6837
|
+
setLeft(undefined);
|
|
6836
6838
|
return;
|
|
6837
6839
|
}
|
|
6838
6840
|
var panel = panelRef.current;
|
|
@@ -6843,11 +6845,11 @@ var usePanelPosition = function (_a) {
|
|
|
6843
6845
|
var panelRect = panel.getBoundingClientRect();
|
|
6844
6846
|
var containerRect = container.getBoundingClientRect();
|
|
6845
6847
|
var buttonRect = button.getBoundingClientRect();
|
|
6846
|
-
var buttonLeft = buttonRect.left - containerRect.left - 10;
|
|
6847
|
-
var
|
|
6848
|
-
|
|
6848
|
+
var buttonLeft = buttonRect.left - containerRect.left - 10;
|
|
6849
|
+
var newLeft = Math.max(0, Math.min(buttonLeft, containerRect.width - panelRect.width));
|
|
6850
|
+
setLeft(newLeft);
|
|
6849
6851
|
}, [selectedFilter, isMobile]);
|
|
6850
|
-
return {
|
|
6852
|
+
return { top: top, left: left };
|
|
6851
6853
|
};
|
|
6852
6854
|
|
|
6853
6855
|
var FilterBarContext = createContext(undefined);
|
|
@@ -12143,20 +12145,21 @@ var Categories = function (_a) {
|
|
|
12143
12145
|
};
|
|
12144
12146
|
Categories.displayName = 'Categories';
|
|
12145
12147
|
|
|
12146
|
-
var css_248z$5 = ".will-filter-bar-panels {\n background-color: var(--will-white);\n min-height: 100px;\n position: absolute;\n
|
|
12148
|
+
var css_248z$5 = ".will-filter-bar-panels {\n background-color: var(--will-white);\n min-height: 100px;\n position: absolute;\n z-index: 111;\n border-radius: 25px;\n box-shadow: var(--will-box-shadow);\n}\n\n@media (max-width: 960px) {\n .will-root {\n width: 100%;\n min-width: auto;\n max-height: 100vh;\n z-index: 3;\n }\n\n .will-filter-bar-panels {\n width: 100%;\n z-index: 999;\n }\n}\n";
|
|
12147
12149
|
styleInject(css_248z$5);
|
|
12148
12150
|
|
|
12149
12151
|
var FilterPanels = function () {
|
|
12150
12152
|
var _a = useFilterBar(), categories = _a.categories, calendarRange = _a.calendarRange, selectedFilter = _a.selectedFilter, selectedPath = _a.selectedPath, ageCategoryCounts = _a.ageCategoryCounts, selectedLocations = _a.selectedLocations, mode = _a.mode, tabs = _a.tabs, disableCalendarDates = _a.disableCalendarDates, ageCategories = _a.ageCategories, locations = _a.locations, language = _a.language, isMobile = _a.isMobile, panelRef = _a.panelRef, buttonRefs = _a.buttonRefs, filtersRef = _a.filtersRef, setSelectedLocations = _a.setSelectedLocations, setCalendarRange = _a.setCalendarRange, handleSelectedFilter = _a.handleSelectedFilter, updateGuestsCount = _a.updateGuestsCount, setCategories = _a.setCategories;
|
|
12151
12153
|
// Handle close filter section
|
|
12152
12154
|
var filterSectionRef = useCloseFilterSection({ handleSelectedFilter: handleSelectedFilter }).filterSectionRef;
|
|
12153
|
-
var
|
|
12155
|
+
var _b = usePanelPosition({
|
|
12154
12156
|
selectedFilter: selectedFilter,
|
|
12155
12157
|
panelRef: panelRef,
|
|
12156
12158
|
filtersRef: filtersRef,
|
|
12157
12159
|
buttonRefs: buttonRefs,
|
|
12158
12160
|
isMobile: isMobile,
|
|
12159
|
-
|
|
12161
|
+
tabs: tabs,
|
|
12162
|
+
}), left = _b.left, top = _b.top;
|
|
12160
12163
|
var renderContent = function () {
|
|
12161
12164
|
switch (selectedFilter) {
|
|
12162
12165
|
case FilterSections.CALENDAR:
|
|
@@ -12171,10 +12174,10 @@ var FilterPanels = function () {
|
|
|
12171
12174
|
return null;
|
|
12172
12175
|
}
|
|
12173
12176
|
};
|
|
12174
|
-
return (selectedFilter && (React__default.createElement("div", { ref: panelRef, className: "will-filter-bar-panels ".concat(mode || 'light'), style:
|
|
12177
|
+
return (selectedFilter && (React__default.createElement("div", { ref: panelRef, className: "will-filter-bar-panels ".concat(mode || 'light'), style: { left: left, top: top } }, renderContent())));
|
|
12175
12178
|
};
|
|
12176
12179
|
|
|
12177
|
-
var css_248z$4 = ".will-filter-bar-controls {\n display: flex;\n justify-content: space-between;\n padding: 10px;\n position: relative;\n z-index: 222;\n border-radius: 40px;\n background-color: var(--will-white);\n}\n\n@media (max-width: 960px) {\n .will-filter-bar-controls {\n flex-direction: column;\n padding: 20px;\n border-radius: 25px;\n overflow: hidden;\n }\n}\n";
|
|
12180
|
+
var css_248z$4 = ".will-filter-bar-controls {\n display: flex;\n justify-content: space-between;\n padding: 10px;\n position: relative;\n z-index: 222;\n border-radius: 40px;\n background-color: var(--will-white);\n}\n\n@media (max-width: 960px) {\n .will-filter-bar-controls {\n flex-direction: column;\n padding: 20px;\n border-radius: 25px;\n overflow: hidden;\n }\n\n .will-filter-bar-controls.disabled {\n opacity: 0.1;\n }\n}\n";
|
|
12178
12181
|
styleInject(css_248z$4);
|
|
12179
12182
|
|
|
12180
12183
|
var FilterControls = function () {
|
|
@@ -12202,7 +12205,7 @@ var FilterControls = function () {
|
|
|
12202
12205
|
locationsPlaceholder: t('locations.placeholder'),
|
|
12203
12206
|
locationsSelectedLabel: t('locations.selected'),
|
|
12204
12207
|
});
|
|
12205
|
-
return (React__default.createElement("div", { className: "will-filter-bar-controls ".concat(mode || 'light'), ref: function (el) {
|
|
12208
|
+
return (React__default.createElement("div", { className: "will-filter-bar-controls ".concat(mode || 'light', " ").concat(selectedFilter ? 'disabled' : ''), ref: function (el) {
|
|
12206
12209
|
filtersRef.current = el;
|
|
12207
12210
|
if ((tabs === null || tabs === void 0 ? void 0 : tabs.length) === 1) {
|
|
12208
12211
|
tabsRef.current = el;
|