@jobber/components 8.14.0 → 8.15.0
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/FilterPicker.d.ts +1 -0
- package/{Combobox.js → FilterPicker.js} +3 -3
- package/dist/Autocomplete-es.js +1 -1
- package/dist/BottomSheet-cjs.js +109 -77
- package/dist/BottomSheet-es.js +103 -75
- package/dist/Card/index.cjs +1 -2
- package/dist/Card/index.mjs +1 -2
- package/dist/DataDump/index.cjs +1 -2
- package/dist/DataDump/index.mjs +1 -2
- package/dist/DataList/components/DataListFilters/components/DataListSort/index.cjs +11 -11
- package/dist/DataList/components/DataListFilters/components/DataListSort/index.mjs +11 -11
- package/dist/DataList/components/DataListFilters/index.cjs +11 -11
- package/dist/DataList/components/DataListFilters/index.mjs +11 -11
- package/dist/DataList/index.cjs +11 -11
- package/dist/DataList/index.mjs +11 -11
- package/dist/DataListSort-cjs.js +5 -5
- package/dist/DataListSort-es.js +5 -5
- package/dist/FilterPicker/FilterPicker.d.ts +11 -0
- package/dist/{Combobox/Combobox.types.d.ts → FilterPicker/FilterPicker.types.d.ts} +51 -51
- package/dist/FilterPicker/FilterPickerProvider.d.ts +18 -0
- package/dist/FilterPicker/components/FilterPickerAction/FilterPickerAction.d.ts +3 -0
- package/dist/FilterPicker/components/FilterPickerAction/index.cjs +12 -0
- package/dist/FilterPicker/components/FilterPickerAction/index.d.ts +1 -0
- package/dist/FilterPicker/components/FilterPickerAction/index.mjs +6 -0
- package/dist/FilterPicker/components/FilterPickerActivator/FilterPickerActivator.d.ts +3 -0
- package/dist/{Combobox/components/ComboboxActivator → FilterPicker/components/FilterPickerActivator}/index.cjs +3 -3
- package/dist/FilterPicker/components/FilterPickerActivator/index.d.ts +1 -0
- package/dist/{Combobox/components/ComboboxActivator → FilterPicker/components/FilterPickerActivator}/index.mjs +2 -2
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContent.d.ts +3 -0
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentHeader/FilterPickerContentHeader.d.ts +3 -0
- package/dist/{Combobox/components/ComboboxContent/ComboboxContentHeader → FilterPicker/components/FilterPickerContent/FilterPickerContentHeader}/index.cjs +2 -2
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentHeader/index.d.ts +1 -0
- package/dist/{Combobox/components/ComboboxContent/ComboboxContentHeader → FilterPicker/components/FilterPickerContent/FilterPickerContentHeader}/index.mjs +1 -1
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentList/FilterPickerContentList.d.ts +3 -0
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentList/FilterPickerContentList.module.css.d.ts +13 -0
- package/dist/{Combobox/components/ComboboxContent/ComboboxContentList → FilterPicker/components/FilterPickerContent/FilterPickerContentList}/index.cjs +5 -5
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentList/index.d.ts +1 -0
- package/dist/{Combobox/components/ComboboxContent/ComboboxContentList → FilterPicker/components/FilterPickerContent/FilterPickerContentList}/index.mjs +4 -4
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentSearch/FilterPickerContentSearch.d.ts +3 -0
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentSearch/index.cjs +10 -0
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentSearch/index.d.ts +1 -0
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerContentSearch/index.mjs +4 -0
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerLoadMore/FilterPickerLoadMore.d.ts +6 -0
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerLoadMore/index.cjs +9 -0
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerLoadMore/index.d.ts +1 -0
- package/dist/FilterPicker/components/FilterPickerContent/FilterPickerLoadMore/index.mjs +3 -0
- package/dist/{Combobox/components/ComboboxContent → FilterPicker/components/FilterPickerContent}/index.cjs +8 -8
- package/dist/FilterPicker/components/FilterPickerContent/index.d.ts +1 -0
- package/dist/{Combobox/components/ComboboxContent → FilterPicker/components/FilterPickerContent}/index.mjs +7 -7
- package/dist/FilterPicker/components/FilterPickerOption/FilterPickerOption.d.ts +3 -0
- package/dist/{Combobox/components/ComboboxOption → FilterPicker/components/FilterPickerOption}/index.cjs +3 -3
- package/dist/FilterPicker/components/FilterPickerOption/index.d.ts +1 -0
- package/dist/{Combobox/components/ComboboxOption → FilterPicker/components/FilterPickerOption}/index.mjs +2 -2
- package/dist/FilterPicker/components/FilterPickerTrigger/FilterPickerTrigger.d.ts +3 -0
- package/dist/{Combobox/components/ComboboxTrigger → FilterPicker/components/FilterPickerTrigger}/index.cjs +3 -3
- package/dist/FilterPicker/components/FilterPickerTrigger/index.d.ts +1 -0
- package/dist/{Combobox/components/ComboboxTrigger → FilterPicker/components/FilterPickerTrigger}/index.mjs +2 -2
- package/dist/FilterPicker/constants.d.ts +1 -0
- package/dist/FilterPicker/hooks/useFilterPicker.d.ts +17 -0
- package/dist/FilterPicker/hooks/useFilterPickerAccessibility.d.ts +9 -0
- package/dist/FilterPicker/hooks/useFilterPickerActivatorAccessibility.d.ts +2 -0
- package/dist/FilterPicker/hooks/useFilterPickerContent.d.ts +9 -0
- package/dist/FilterPicker/hooks/useFilterPickerValidation.d.ts +12 -0
- package/dist/FilterPicker/hooks/useMakeFilterPickerHandlers.d.ts +8 -0
- package/dist/{Combobox → FilterPicker}/index.cjs +13 -13
- package/dist/FilterPicker/index.d.ts +3 -0
- package/dist/{Combobox → FilterPicker}/index.mjs +11 -11
- package/dist/{Combobox-cjs.js → FilterPicker-cjs.js} +25 -25
- package/dist/{Combobox-es.js → FilterPicker-es.js} +25 -25
- package/dist/{ComboboxAction-cjs.js → FilterPickerAction-cjs.js} +5 -5
- package/dist/{ComboboxAction-es.js → FilterPickerAction-es.js} +5 -5
- package/dist/{ComboboxActivator-cjs.js → FilterPickerActivator-cjs.js} +8 -8
- package/dist/{ComboboxActivator-es.js → FilterPickerActivator-es.js} +9 -9
- package/dist/{ComboboxContent-cjs.js → FilterPickerContent-cjs.js} +19 -19
- package/dist/{ComboboxContent-es.js → FilterPickerContent-es.js} +20 -20
- package/dist/{ComboboxContentHeader-cjs.js → FilterPickerContentHeader-cjs.js} +4 -4
- package/dist/{ComboboxContentHeader-es.js → FilterPickerContentHeader-es.js} +4 -4
- package/dist/{ComboboxContentList-cjs.js → FilterPickerContentList-cjs.js} +7 -7
- package/dist/{ComboboxContentList-es.js → FilterPickerContentList-es.js} +7 -7
- package/dist/{ComboboxContentSearch-cjs.js → FilterPickerContentSearch-cjs.js} +4 -4
- package/dist/{ComboboxContentSearch-es.js → FilterPickerContentSearch-es.js} +4 -4
- package/dist/FilterPickerLoadMore-cjs.js +16 -0
- package/dist/{ComboboxLoadMore-es.js → FilterPickerLoadMore-es.js} +4 -4
- package/dist/{ComboboxOption-cjs.js → FilterPickerOption-cjs.js} +5 -5
- package/dist/{ComboboxOption-es.js → FilterPickerOption-es.js} +5 -5
- package/dist/FilterPickerProvider-cjs.js +13 -0
- package/dist/FilterPickerProvider-es.js +10 -0
- package/dist/{ComboboxTrigger-cjs.js → FilterPickerTrigger-cjs.js} +4 -4
- package/dist/{ComboboxTrigger-es.js → FilterPickerTrigger-es.js} +4 -4
- package/dist/InputNumberExperimental-cjs.js +3 -4
- package/dist/InputNumberExperimental-es.js +2 -3
- package/dist/Menu/index.cjs +1 -2
- package/dist/Menu/index.mjs +1 -2
- package/dist/Menu-cjs.js +11 -56
- package/dist/Menu-es.js +4 -49
- package/dist/MenuSubmenuTrigger-cjs.js +160 -345
- package/dist/MenuSubmenuTrigger-es.js +4 -186
- package/dist/Modal/index.mjs +1 -1
- package/dist/NumberFieldInput-cjs.js +3 -4
- package/dist/NumberFieldInput-es.js +2 -3
- package/dist/Page/index.cjs +1 -2
- package/dist/Page/index.mjs +1 -2
- package/dist/{DrawerRoot-cjs.js → ScrollAreaViewport-cjs.js} +1042 -3
- package/dist/{DrawerRoot-es.js → ScrollAreaViewport-es.js} +1035 -5
- package/dist/constants-cjs.js +2 -2
- package/dist/constants-es.js +2 -2
- package/dist/docs/Autocomplete/Autocomplete.md +1 -1
- package/dist/docs/Chip/Chip.md +4 -4
- package/dist/docs/DataList/DataList.md +16 -15
- package/dist/docs/{Combobox/Combobox.md → FilterPicker/FilterPicker.md} +91 -85
- package/dist/docs/Menu/Menu.md +1 -1
- package/dist/docs/MultiSelect/MultiSelect.md +1 -1
- package/dist/docs/Tabs/Tabs.md +2 -2
- package/dist/docs/index.md +1 -1
- package/dist/docs/usage-guidelines/usage-guidelines.md +5 -5
- package/dist/floating-ui.react-es.js +1 -1
- package/dist/index.cjs +14 -15
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +12 -13
- package/dist/primitives/BottomSheet/BottomSheet.d.ts +15 -16
- package/dist/primitives/BottomSheet/BottomSheet.types.d.ts +27 -0
- package/dist/primitives/BottomSheet/BottomSheet.utils.d.ts +6 -0
- package/dist/primitives/BottomSheet/index.cjs +7 -2
- package/dist/primitives/BottomSheet/index.d.ts +1 -0
- package/dist/primitives/BottomSheet/index.mjs +7 -2
- package/dist/primitives/InputNumberExperimental/index.cjs +1 -2
- package/dist/primitives/InputNumberExperimental/index.mjs +1 -2
- package/dist/primitives/index.cjs +7 -8
- package/dist/primitives/index.mjs +7 -8
- package/dist/styles.css +115 -54
- package/dist/unstyledPrimitives/index.cjs +665 -297
- package/dist/unstyledPrimitives/index.d.ts +1 -0
- package/dist/unstyledPrimitives/index.mjs +375 -8
- package/dist/useRenderElement-es.js +1 -1
- package/dist/useValueChanged-cjs.js +251 -1
- package/dist/useValueChanged-es.js +248 -2
- package/dist/utils/meta/meta.json +5 -5
- package/package.json +6 -6
- package/rollup.config.mjs +2 -2
- package/Combobox.d.ts +0 -1
- package/dist/Combobox/Combobox.d.ts +0 -11
- package/dist/Combobox/ComboboxProvider.d.ts +0 -18
- package/dist/Combobox/components/ComboboxAction/ComboboxAction.d.ts +0 -3
- package/dist/Combobox/components/ComboboxAction/index.cjs +0 -12
- package/dist/Combobox/components/ComboboxAction/index.d.ts +0 -1
- package/dist/Combobox/components/ComboboxAction/index.mjs +0 -6
- package/dist/Combobox/components/ComboboxActivator/ComboboxActivator.d.ts +0 -3
- package/dist/Combobox/components/ComboboxActivator/index.d.ts +0 -1
- package/dist/Combobox/components/ComboboxContent/ComboboxContent.d.ts +0 -3
- package/dist/Combobox/components/ComboboxContent/ComboboxContentHeader/ComboboxContentHeader.d.ts +0 -3
- package/dist/Combobox/components/ComboboxContent/ComboboxContentHeader/index.d.ts +0 -1
- package/dist/Combobox/components/ComboboxContent/ComboboxContentList/ComboboxContentList.d.ts +0 -3
- package/dist/Combobox/components/ComboboxContent/ComboboxContentList/index.d.ts +0 -1
- package/dist/Combobox/components/ComboboxContent/ComboboxContentSearch/ComboboxContentSearch.d.ts +0 -3
- package/dist/Combobox/components/ComboboxContent/ComboboxContentSearch/index.cjs +0 -10
- package/dist/Combobox/components/ComboboxContent/ComboboxContentSearch/index.d.ts +0 -1
- package/dist/Combobox/components/ComboboxContent/ComboboxContentSearch/index.mjs +0 -4
- package/dist/Combobox/components/ComboboxContent/ComboboxLoadMore/ComboboxLoadMore.d.ts +0 -6
- package/dist/Combobox/components/ComboboxContent/ComboboxLoadMore/index.cjs +0 -9
- package/dist/Combobox/components/ComboboxContent/ComboboxLoadMore/index.d.ts +0 -1
- package/dist/Combobox/components/ComboboxContent/ComboboxLoadMore/index.mjs +0 -3
- package/dist/Combobox/components/ComboboxContent/index.d.ts +0 -1
- package/dist/Combobox/components/ComboboxOption/ComboboxOption.d.ts +0 -3
- package/dist/Combobox/components/ComboboxOption/index.d.ts +0 -1
- package/dist/Combobox/components/ComboboxTrigger/ComboboxTrigger.d.ts +0 -3
- package/dist/Combobox/components/ComboboxTrigger/index.d.ts +0 -1
- package/dist/Combobox/constants.d.ts +0 -1
- package/dist/Combobox/hooks/useCombobox.d.ts +0 -17
- package/dist/Combobox/hooks/useComboboxAccessibility.d.ts +0 -9
- package/dist/Combobox/hooks/useComboboxActivatorAccessibility.d.ts +0 -2
- package/dist/Combobox/hooks/useComboboxContent.d.ts +0 -9
- package/dist/Combobox/hooks/useComboboxValidation.d.ts +0 -12
- package/dist/Combobox/hooks/useMakeComboboxHandlers.d.ts +0 -8
- package/dist/Combobox/index.d.ts +0 -3
- package/dist/ComboboxLoadMore-cjs.js +0 -16
- package/dist/ComboboxProvider-cjs.js +0 -13
- package/dist/ComboboxProvider-es.js +0 -10
- package/dist/useBaseUiId-cjs.js +0 -275
- package/dist/useBaseUiId-es.js +0 -251
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import React__default, { useCallback, useRef, useState, Children, isValidElement, useMemo } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { F as FilterPickerContent } from './FilterPickerContent-es.js';
|
|
3
|
+
import { F as FilterPickerAction } from './FilterPickerAction-es.js';
|
|
4
|
+
import { F as FilterPickerContextProvider } from './FilterPickerProvider-es.js';
|
|
5
|
+
import { F as FilterPickerTrigger } from './FilterPickerTrigger-es.js';
|
|
6
|
+
import { F as FilterPickerOption } from './FilterPickerOption-es.js';
|
|
7
7
|
import { n as noop } from './noop-es.js';
|
|
8
8
|
import { useDebounce } from '@jobber/hooks';
|
|
9
|
-
import {
|
|
9
|
+
import { F as FilterPickerActivator } from './FilterPickerActivator-es.js';
|
|
10
10
|
|
|
11
|
-
var styles = {"overlay":"
|
|
11
|
+
var styles = {"overlay":"pWccl-Pw3hY-","wrapper":"CGh3PQqBZ1c-","spinning":"Cf-fmDM7clM-"};
|
|
12
12
|
|
|
13
|
-
function
|
|
13
|
+
function useMakeFilterPickerHandlers(setOpen, open, setSearchValue, selectedOptions, shouldScroll, selectedStateSetter, multiSelect, onClose, onSearch) {
|
|
14
14
|
const handleClose = useCallback(() => {
|
|
15
15
|
setOpen(false);
|
|
16
16
|
setSearchValue("");
|
|
@@ -50,13 +50,13 @@ function handleMultiSelect(selectCallback, selected, selection) {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
function
|
|
53
|
+
function useFilterPicker(selected, onSelect, options, onClose, multiSelect, onSearch, debounceTime = 300) {
|
|
54
54
|
const wrapperRef = useRef(null);
|
|
55
55
|
const shouldScroll = useRef(false);
|
|
56
56
|
const [open, setOpen] = useState(false);
|
|
57
57
|
const [searchValue, setSearchValue] = useState("");
|
|
58
58
|
const searchCallback = useDebounce((value) => onSearch === null || onSearch === void 0 ? void 0 : onSearch(value), debounceTime);
|
|
59
|
-
const { handleClose, handleSelection, handleOpen } =
|
|
59
|
+
const { handleClose, handleSelection, handleOpen } = useMakeFilterPickerHandlers(setOpen, open, setSearchValue, selected, shouldScroll, onSelect, multiSelect, onClose, onSearch);
|
|
60
60
|
const internalFilteredOptions = options.filter(option => option.label.toLowerCase().includes(searchValue.toLowerCase()));
|
|
61
61
|
return {
|
|
62
62
|
wrapperRef,
|
|
@@ -74,10 +74,10 @@ function useCombobox(selected, onSelect, options, onClose, multiSelect, onSearch
|
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
function
|
|
78
|
-
const optionElements = getCompoundComponents(
|
|
79
|
-
const actionElements = getCompoundComponents(
|
|
80
|
-
const activatorElements = getCompoundComponents(
|
|
77
|
+
function useFilterPickerValidation(children) {
|
|
78
|
+
const optionElements = getCompoundComponents(FilterPickerOption, children);
|
|
79
|
+
const actionElements = getCompoundComponents(FilterPickerAction, children);
|
|
80
|
+
const activatorElements = getCompoundComponents(FilterPickerActivator, children);
|
|
81
81
|
return {
|
|
82
82
|
optionElements,
|
|
83
83
|
triggerElement: activatorElements[0],
|
|
@@ -93,18 +93,18 @@ function getCompoundComponents(type, children) {
|
|
|
93
93
|
return elements;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
function
|
|
97
|
-
const { optionElements, triggerElement, actionElements } =
|
|
96
|
+
function FilterPicker(props) {
|
|
97
|
+
const { optionElements, triggerElement, actionElements } = useFilterPickerValidation(props.children);
|
|
98
98
|
const options = useMemo(() => (optionElements === null || optionElements === void 0 ? void 0 : optionElements.map(option => (Object.assign({}, option.props)))) || [], [optionElements]);
|
|
99
|
-
const { selectedOptions, selectedStateSetter, shouldScroll, wrapperRef, searchValue, setSearchValue, open, handleClose, handleSelection, handleOpen, internalFilteredOptions, handleSearchChange, } =
|
|
100
|
-
return (React__default.createElement(
|
|
99
|
+
const { selectedOptions, selectedStateSetter, shouldScroll, wrapperRef, searchValue, setSearchValue, open, handleClose, handleSelection, handleOpen, internalFilteredOptions, handleSearchChange, } = useFilterPicker(props.selected, props.onSelect, options, props.onClose, props.multiSelect, props.onSearch, props.onSearchDebounce);
|
|
100
|
+
return (React__default.createElement(FilterPickerContextProvider, { selected: selectedOptions, selectionHandler: handleSelection, open: open, handleOpen: handleOpen, handleClose: handleClose, shouldScroll: shouldScroll, searchValue: searchValue, label: props.label, onClear: props.onClear, onSelectAll: props.onSelectAll },
|
|
101
101
|
React__default.createElement("div", { ref: wrapperRef, className: styles.wrapper },
|
|
102
|
-
open && (React__default.createElement("div", { className: styles.overlay, onClick: handleClose, "data-testid": "ATL-
|
|
103
|
-
triggerElement || (React__default.createElement(
|
|
104
|
-
React__default.createElement(
|
|
102
|
+
open && (React__default.createElement("div", { className: styles.overlay, onClick: handleClose, "data-testid": "ATL-FilterPicker-Overlay" })),
|
|
103
|
+
triggerElement || (React__default.createElement(FilterPickerTrigger, { label: props.label, selected: props.selected, activatorRef: props.defaultActivatorRef })),
|
|
104
|
+
React__default.createElement(FilterPickerContent, { multiselect: props.multiSelect, subjectNoun: props.subjectNoun, selected: selectedOptions, actionElements: actionElements, selectedStateSetter: selectedStateSetter, handleSelection: handleSelection, searchValue: searchValue, setSearchValue: setSearchValue, wrapperRef: wrapperRef, open: open, options: props.onSearch ? options : internalFilteredOptions, loading: props.loading, handleSearchChange: handleSearchChange, onLoadMore: props.onLoadMore }))));
|
|
105
105
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
FilterPicker.Activator = FilterPickerActivator;
|
|
107
|
+
FilterPicker.Action = FilterPickerAction;
|
|
108
|
+
FilterPicker.Option = FilterPickerOption;
|
|
109
109
|
|
|
110
|
-
export {
|
|
110
|
+
export { FilterPicker as F };
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var Typography = require('./Typography-cjs.js');
|
|
5
|
-
var
|
|
5
|
+
var FilterPickerProvider = require('./FilterPickerProvider-cjs.js');
|
|
6
6
|
|
|
7
|
-
var styles = {"actionContainer":"
|
|
7
|
+
var styles = {"actionContainer":"wnyB0d1ZE70-","actionButton":"mljM3ouZmbM-","spinning":"uMfMpnitRs0-"};
|
|
8
8
|
|
|
9
|
-
function
|
|
10
|
-
const { searchValue, handleClose } = React.useContext(
|
|
9
|
+
function FilterPickerAction(props) {
|
|
10
|
+
const { searchValue, handleClose } = React.useContext(FilterPickerProvider.FilterPickerContext);
|
|
11
11
|
if (props.visible !== undefined) {
|
|
12
12
|
const isVisible = typeof props.visible === "function"
|
|
13
13
|
? props.visible({ searchValue })
|
|
@@ -29,4 +29,4 @@ function ComboboxAction(props) {
|
|
|
29
29
|
React.createElement(Typography.Typography, { element: "span", size: "base", textColor: "interactive", fontWeight: "semiBold" }, computedLabel))));
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
exports.
|
|
32
|
+
exports.FilterPickerAction = FilterPickerAction;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React__default, { useContext } from 'react';
|
|
2
2
|
import { T as Typography } from './Typography-es.js';
|
|
3
|
-
import { a as
|
|
3
|
+
import { a as FilterPickerContext } from './FilterPickerProvider-es.js';
|
|
4
4
|
|
|
5
|
-
var styles = {"actionContainer":"
|
|
5
|
+
var styles = {"actionContainer":"wnyB0d1ZE70-","actionButton":"mljM3ouZmbM-","spinning":"uMfMpnitRs0-"};
|
|
6
6
|
|
|
7
|
-
function
|
|
8
|
-
const { searchValue, handleClose } = useContext(
|
|
7
|
+
function FilterPickerAction(props) {
|
|
8
|
+
const { searchValue, handleClose } = useContext(FilterPickerContext);
|
|
9
9
|
if (props.visible !== undefined) {
|
|
10
10
|
const isVisible = typeof props.visible === "function"
|
|
11
11
|
? props.visible({ searchValue })
|
|
@@ -27,4 +27,4 @@ function ComboboxAction(props) {
|
|
|
27
27
|
React__default.createElement(Typography, { element: "span", size: "base", textColor: "interactive", fontWeight: "semiBold" }, computedLabel))));
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
export {
|
|
30
|
+
export { FilterPickerAction as F };
|
|
@@ -6,22 +6,22 @@ require('classnames');
|
|
|
6
6
|
var Chip = require('./Chip-cjs.js');
|
|
7
7
|
require('./tslib.es6-cjs.js');
|
|
8
8
|
require('@jobber/design');
|
|
9
|
-
var
|
|
9
|
+
var FilterPickerProvider = require('./FilterPickerProvider-cjs.js');
|
|
10
10
|
var constants = require('./constants-cjs.js');
|
|
11
11
|
|
|
12
|
-
function
|
|
13
|
-
const { label, open } = React.useContext(
|
|
12
|
+
function useFilterPickerActivatorAccessibility() {
|
|
13
|
+
const { label, open } = React.useContext(FilterPickerProvider.FilterPickerContext);
|
|
14
14
|
return {
|
|
15
15
|
ariaLabel: label,
|
|
16
16
|
ariaExpanded: open,
|
|
17
|
-
ariaControls: constants.
|
|
17
|
+
ariaControls: constants.FILTER_PICKER_MENU_ID,
|
|
18
18
|
role: "combobox",
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
function
|
|
23
|
-
const { handleOpen } = React.useContext(
|
|
24
|
-
const accessibilityAttributes =
|
|
22
|
+
function FilterPickerActivator(props) {
|
|
23
|
+
const { handleOpen } = React.useContext(FilterPickerProvider.FilterPickerContext);
|
|
24
|
+
const accessibilityAttributes = useFilterPickerActivatorAccessibility();
|
|
25
25
|
if (React.isValidElement(props.children) &&
|
|
26
26
|
(props.children.type === Button.Button || props.children.type === Chip.Chip)) {
|
|
27
27
|
return React.cloneElement(props.children, {
|
|
@@ -35,4 +35,4 @@ function ComboboxActivator(props) {
|
|
|
35
35
|
return null;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
exports.
|
|
38
|
+
exports.FilterPickerActivator = FilterPickerActivator;
|
|
@@ -4,22 +4,22 @@ import 'classnames';
|
|
|
4
4
|
import { C as Chip } from './Chip-es.js';
|
|
5
5
|
import './tslib.es6-es.js';
|
|
6
6
|
import '@jobber/design';
|
|
7
|
-
import { a as
|
|
8
|
-
import {
|
|
7
|
+
import { a as FilterPickerContext } from './FilterPickerProvider-es.js';
|
|
8
|
+
import { F as FILTER_PICKER_MENU_ID } from './constants-es.js';
|
|
9
9
|
|
|
10
|
-
function
|
|
11
|
-
const { label, open } = useContext(
|
|
10
|
+
function useFilterPickerActivatorAccessibility() {
|
|
11
|
+
const { label, open } = useContext(FilterPickerContext);
|
|
12
12
|
return {
|
|
13
13
|
ariaLabel: label,
|
|
14
14
|
ariaExpanded: open,
|
|
15
|
-
ariaControls:
|
|
15
|
+
ariaControls: FILTER_PICKER_MENU_ID,
|
|
16
16
|
role: "combobox",
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
function
|
|
21
|
-
const { handleOpen } = React__default.useContext(
|
|
22
|
-
const accessibilityAttributes =
|
|
20
|
+
function FilterPickerActivator(props) {
|
|
21
|
+
const { handleOpen } = React__default.useContext(FilterPickerContext);
|
|
22
|
+
const accessibilityAttributes = useFilterPickerActivatorAccessibility();
|
|
23
23
|
if (React__default.isValidElement(props.children) &&
|
|
24
24
|
(props.children.type === Button || props.children.type === Chip)) {
|
|
25
25
|
return React__default.cloneElement(props.children, {
|
|
@@ -33,4 +33,4 @@ function ComboboxActivator(props) {
|
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
export {
|
|
36
|
+
export { FilterPickerActivator as F };
|
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var classnames = require('classnames');
|
|
5
5
|
var floatingUi_react = require('./floating-ui.react-cjs.js');
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
6
|
+
var FilterPickerContentSearch = require('./FilterPickerContentSearch-cjs.js');
|
|
7
|
+
var FilterPickerContentList = require('./FilterPickerContentList-cjs.js');
|
|
8
|
+
var FilterPickerContentHeader = require('./FilterPickerContentHeader-cjs.js');
|
|
9
|
+
var FilterPickerProvider = require('./FilterPickerProvider-cjs.js');
|
|
10
10
|
var jobberHooks = require('@jobber/hooks');
|
|
11
11
|
var floatingUi_reactDom = require('./floating-ui.react-dom-cjs.js');
|
|
12
12
|
var constants = require('./constants-cjs.js');
|
|
13
13
|
|
|
14
|
-
var styles = {"content":"
|
|
14
|
+
var styles = {"content":"bog6pntD050-","hidden":"CLGExWp0HOc-","actions":"Tuw6ng4mYhg-","actionPadding":"uC0PW9BRcl4-","spinning":"TWLS2ZoEtnQ-"};
|
|
15
15
|
|
|
16
|
-
function
|
|
17
|
-
const { onClear, onSelectAll, shouldScroll } = React.useContext(
|
|
16
|
+
function useFilterPickerContent(open, selected) {
|
|
17
|
+
const { onClear, onSelectAll, shouldScroll } = React.useContext(FilterPickerProvider.FilterPickerContext);
|
|
18
18
|
const optionsListRef = React.useRef(null);
|
|
19
19
|
React.useEffect(() => {
|
|
20
20
|
var _a;
|
|
@@ -42,10 +42,10 @@ function scrollToFirstSelected(firstSelected, shouldScroll) {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
const
|
|
45
|
+
const FILTER_PICKER_OFFSET = 8;
|
|
46
46
|
// eslint-disable-next-line max-statements
|
|
47
|
-
function
|
|
48
|
-
const { handleClose } = React.useContext(
|
|
47
|
+
function useFilterPickerAccessibility(selectionCallback, filteredOptions, optionsListRef, open, wrapperRef) {
|
|
48
|
+
const { handleClose } = React.useContext(FilterPickerProvider.FilterPickerContext);
|
|
49
49
|
const hasOptionsVisible = open && filteredOptions.length > 0;
|
|
50
50
|
const focusedIndex = React.useRef(null);
|
|
51
51
|
const parentNodeId = floatingUi_react.useFloatingParentNodeId();
|
|
@@ -65,7 +65,7 @@ function useComboboxAccessibility(selectionCallback, filteredOptions, optionsLis
|
|
|
65
65
|
handleClose();
|
|
66
66
|
},
|
|
67
67
|
middleware: [
|
|
68
|
-
floatingUi_reactDom.offset(
|
|
68
|
+
floatingUi_reactDom.offset(FILTER_PICKER_OFFSET),
|
|
69
69
|
floatingUi_reactDom.flip({ fallbackPlacements: ["top-start", "bottom-end", "top-end"] }),
|
|
70
70
|
],
|
|
71
71
|
});
|
|
@@ -139,10 +139,10 @@ function useComboboxAccessibility(selectionCallback, filteredOptions, optionsLis
|
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
function
|
|
142
|
+
function FilterPickerContent(props) {
|
|
143
143
|
const optionsExist = props.options.length > 0;
|
|
144
|
-
const { onClear, onSelectAll, optionsListRef } =
|
|
145
|
-
const { floatingRef, floatingStyles, floatingProps, nodeId, parentNodeId } =
|
|
144
|
+
const { onClear, onSelectAll, optionsListRef } = useFilterPickerContent(props.open, props.selected);
|
|
145
|
+
const { floatingRef, floatingStyles, floatingProps, nodeId, parentNodeId } = useFilterPickerAccessibility(props.handleSelection, props.options, optionsListRef, props.open, props.wrapperRef);
|
|
146
146
|
// options that are passed back to consumers via onSelectAll callback
|
|
147
147
|
// should only contain id and label
|
|
148
148
|
const optionsData = React.useMemo(() => {
|
|
@@ -151,18 +151,18 @@ function ComboboxContent(props) {
|
|
|
151
151
|
label: option.label,
|
|
152
152
|
}));
|
|
153
153
|
}, [props.options]);
|
|
154
|
-
const content = (React.createElement("div", Object.assign({ ref: floatingRef, id: constants.
|
|
154
|
+
const content = (React.createElement("div", Object.assign({ ref: floatingRef, id: constants.FILTER_PICKER_MENU_ID, "data-testid": constants.FILTER_PICKER_MENU_ID, "data-elevation": "elevated", tabIndex: 0, className: classnames(styles.content, {
|
|
155
155
|
[styles.hidden]: !props.open,
|
|
156
156
|
}), style: floatingStyles }, floatingProps),
|
|
157
|
-
React.createElement(
|
|
158
|
-
props.multiselect && (optionsExist || props.selected.length > 0) && (React.createElement(
|
|
157
|
+
React.createElement(FilterPickerContentSearch.FilterPickerContentSearch, { open: props.open, placeholder: props.subjectNoun, searchValue: props.searchValue, setSearchValue: props.setSearchValue, handleSearchChange: props.handleSearchChange }),
|
|
158
|
+
props.multiselect && (optionsExist || props.selected.length > 0) && (React.createElement(FilterPickerContentHeader.FilterPickerContentHeader, { hasOptionsVisible: optionsExist, subjectNoun: props.subjectNoun, selectedCount: props.selected.length, onClearAll: () => {
|
|
159
159
|
props.selectedStateSetter([]);
|
|
160
160
|
onClear === null || onClear === void 0 ? void 0 : onClear();
|
|
161
161
|
}, onSelectAll: () => {
|
|
162
162
|
props.selectedStateSetter(props.options);
|
|
163
163
|
onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(optionsData);
|
|
164
164
|
} })),
|
|
165
|
-
React.createElement(
|
|
165
|
+
React.createElement(FilterPickerContentList.FilterPickerContentList, { multiselect: props.multiselect, options: props.options, selected: props.selected, optionsListRef: optionsListRef, searchValue: props.searchValue, subjectNoun: props.subjectNoun, loading: props.loading, onLoadMore: props.onLoadMore }),
|
|
166
166
|
props.actionElements && (React.createElement("div", { className: styles.actions, role: "group" }, props.actionElements.map((child, index, childrenArray) => (React.createElement("div", { key: index, className: classnames({
|
|
167
167
|
[styles.actionPadding]: index === childrenArray.length - 1,
|
|
168
168
|
}) }, child)))))));
|
|
@@ -174,4 +174,4 @@ function ComboboxContent(props) {
|
|
|
174
174
|
return (globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) ? (React.createElement(floatingUi_react.FloatingPortal, null, content)) : (content);
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
exports.
|
|
177
|
+
exports.FilterPickerContent = FilterPickerContent;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import React__default, { useContext, useRef, useEffect, useMemo } from 'react';
|
|
2
2
|
import classnames from 'classnames';
|
|
3
3
|
import { a as useFloatingParentNodeId, b as useFloatingNodeId, u as useFloating, c as useDismiss, d as useInteractions, e as FloatingTree, f as FloatingNode, F as FloatingPortal } from './floating-ui.react-es.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { a as
|
|
4
|
+
import { F as FilterPickerContentSearch } from './FilterPickerContentSearch-es.js';
|
|
5
|
+
import { F as FilterPickerContentList } from './FilterPickerContentList-es.js';
|
|
6
|
+
import { F as FilterPickerContentHeader } from './FilterPickerContentHeader-es.js';
|
|
7
|
+
import { a as FilterPickerContext } from './FilterPickerProvider-es.js';
|
|
8
8
|
import { useRefocusOnActivator, useFocusTrap } from '@jobber/hooks';
|
|
9
9
|
import { o as offset, f as flip, b as autoUpdate } from './floating-ui.react-dom-es.js';
|
|
10
|
-
import {
|
|
10
|
+
import { F as FILTER_PICKER_MENU_ID } from './constants-es.js';
|
|
11
11
|
|
|
12
|
-
var styles = {"content":"
|
|
12
|
+
var styles = {"content":"bog6pntD050-","hidden":"CLGExWp0HOc-","actions":"Tuw6ng4mYhg-","actionPadding":"uC0PW9BRcl4-","spinning":"TWLS2ZoEtnQ-"};
|
|
13
13
|
|
|
14
|
-
function
|
|
15
|
-
const { onClear, onSelectAll, shouldScroll } = useContext(
|
|
14
|
+
function useFilterPickerContent(open, selected) {
|
|
15
|
+
const { onClear, onSelectAll, shouldScroll } = useContext(FilterPickerContext);
|
|
16
16
|
const optionsListRef = useRef(null);
|
|
17
17
|
useEffect(() => {
|
|
18
18
|
var _a;
|
|
@@ -40,10 +40,10 @@ function scrollToFirstSelected(firstSelected, shouldScroll) {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
const
|
|
43
|
+
const FILTER_PICKER_OFFSET = 8;
|
|
44
44
|
// eslint-disable-next-line max-statements
|
|
45
|
-
function
|
|
46
|
-
const { handleClose } = useContext(
|
|
45
|
+
function useFilterPickerAccessibility(selectionCallback, filteredOptions, optionsListRef, open, wrapperRef) {
|
|
46
|
+
const { handleClose } = useContext(FilterPickerContext);
|
|
47
47
|
const hasOptionsVisible = open && filteredOptions.length > 0;
|
|
48
48
|
const focusedIndex = useRef(null);
|
|
49
49
|
const parentNodeId = useFloatingParentNodeId();
|
|
@@ -63,7 +63,7 @@ function useComboboxAccessibility(selectionCallback, filteredOptions, optionsLis
|
|
|
63
63
|
handleClose();
|
|
64
64
|
},
|
|
65
65
|
middleware: [
|
|
66
|
-
offset(
|
|
66
|
+
offset(FILTER_PICKER_OFFSET),
|
|
67
67
|
flip({ fallbackPlacements: ["top-start", "bottom-end", "top-end"] }),
|
|
68
68
|
],
|
|
69
69
|
});
|
|
@@ -137,10 +137,10 @@ function useComboboxAccessibility(selectionCallback, filteredOptions, optionsLis
|
|
|
137
137
|
};
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
function
|
|
140
|
+
function FilterPickerContent(props) {
|
|
141
141
|
const optionsExist = props.options.length > 0;
|
|
142
|
-
const { onClear, onSelectAll, optionsListRef } =
|
|
143
|
-
const { floatingRef, floatingStyles, floatingProps, nodeId, parentNodeId } =
|
|
142
|
+
const { onClear, onSelectAll, optionsListRef } = useFilterPickerContent(props.open, props.selected);
|
|
143
|
+
const { floatingRef, floatingStyles, floatingProps, nodeId, parentNodeId } = useFilterPickerAccessibility(props.handleSelection, props.options, optionsListRef, props.open, props.wrapperRef);
|
|
144
144
|
// options that are passed back to consumers via onSelectAll callback
|
|
145
145
|
// should only contain id and label
|
|
146
146
|
const optionsData = useMemo(() => {
|
|
@@ -149,18 +149,18 @@ function ComboboxContent(props) {
|
|
|
149
149
|
label: option.label,
|
|
150
150
|
}));
|
|
151
151
|
}, [props.options]);
|
|
152
|
-
const content = (React__default.createElement("div", Object.assign({ ref: floatingRef, id:
|
|
152
|
+
const content = (React__default.createElement("div", Object.assign({ ref: floatingRef, id: FILTER_PICKER_MENU_ID, "data-testid": FILTER_PICKER_MENU_ID, "data-elevation": "elevated", tabIndex: 0, className: classnames(styles.content, {
|
|
153
153
|
[styles.hidden]: !props.open,
|
|
154
154
|
}), style: floatingStyles }, floatingProps),
|
|
155
|
-
React__default.createElement(
|
|
156
|
-
props.multiselect && (optionsExist || props.selected.length > 0) && (React__default.createElement(
|
|
155
|
+
React__default.createElement(FilterPickerContentSearch, { open: props.open, placeholder: props.subjectNoun, searchValue: props.searchValue, setSearchValue: props.setSearchValue, handleSearchChange: props.handleSearchChange }),
|
|
156
|
+
props.multiselect && (optionsExist || props.selected.length > 0) && (React__default.createElement(FilterPickerContentHeader, { hasOptionsVisible: optionsExist, subjectNoun: props.subjectNoun, selectedCount: props.selected.length, onClearAll: () => {
|
|
157
157
|
props.selectedStateSetter([]);
|
|
158
158
|
onClear === null || onClear === void 0 ? void 0 : onClear();
|
|
159
159
|
}, onSelectAll: () => {
|
|
160
160
|
props.selectedStateSetter(props.options);
|
|
161
161
|
onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(optionsData);
|
|
162
162
|
} })),
|
|
163
|
-
React__default.createElement(
|
|
163
|
+
React__default.createElement(FilterPickerContentList, { multiselect: props.multiselect, options: props.options, selected: props.selected, optionsListRef: optionsListRef, searchValue: props.searchValue, subjectNoun: props.subjectNoun, loading: props.loading, onLoadMore: props.onLoadMore }),
|
|
164
164
|
props.actionElements && (React__default.createElement("div", { className: styles.actions, role: "group" }, props.actionElements.map((child, index, childrenArray) => (React__default.createElement("div", { key: index, className: classnames({
|
|
165
165
|
[styles.actionPadding]: index === childrenArray.length - 1,
|
|
166
166
|
}) }, child)))))));
|
|
@@ -172,4 +172,4 @@ function ComboboxContent(props) {
|
|
|
172
172
|
return (globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) ? (React__default.createElement(FloatingPortal, null, content)) : (content);
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
export {
|
|
175
|
+
export { FilterPickerContent as F };
|
|
@@ -5,15 +5,15 @@ var Typography = require('./Typography-cjs.js');
|
|
|
5
5
|
var Button = require('./Button-cjs.js');
|
|
6
6
|
require('classnames');
|
|
7
7
|
|
|
8
|
-
var styles = {"header":"
|
|
8
|
+
var styles = {"header":"qsCrV9XnUYQ-","spinning":"cDKMYcrIogE-"};
|
|
9
9
|
|
|
10
|
-
function
|
|
10
|
+
function FilterPickerContentHeader(props) {
|
|
11
11
|
const hasSelected = props.selectedCount > 0;
|
|
12
12
|
const actionLabel = hasSelected ? "Clear" : "Select all";
|
|
13
13
|
const label = getLabel(hasSelected, props.selectedCount, props.subjectNoun);
|
|
14
14
|
const handleSelectAll = hasSelected ? props.onClearAll : props.onSelectAll;
|
|
15
15
|
const showAction = hasSelected || props.hasOptionsVisible;
|
|
16
|
-
return (React.createElement("div", { className: styles.header, "data-testid": "ATL-
|
|
16
|
+
return (React.createElement("div", { className: styles.header, "data-testid": "ATL-FilterPicker-Header" },
|
|
17
17
|
React.createElement(Typography.Typography, { textColor: "heading", fontWeight: "semiBold" }, label),
|
|
18
18
|
showAction && (React.createElement(Button.Button, { size: "small", label: actionLabel, type: "tertiary", onClick: handleSelectAll }))));
|
|
19
19
|
}
|
|
@@ -27,4 +27,4 @@ function getLabel(hasSelected, count, subjectNoun) {
|
|
|
27
27
|
return "Select";
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
exports.
|
|
30
|
+
exports.FilterPickerContentHeader = FilterPickerContentHeader;
|
|
@@ -3,15 +3,15 @@ import { T as Typography } from './Typography-es.js';
|
|
|
3
3
|
import { B as Button } from './Button-es.js';
|
|
4
4
|
import 'classnames';
|
|
5
5
|
|
|
6
|
-
var styles = {"header":"
|
|
6
|
+
var styles = {"header":"qsCrV9XnUYQ-","spinning":"cDKMYcrIogE-"};
|
|
7
7
|
|
|
8
|
-
function
|
|
8
|
+
function FilterPickerContentHeader(props) {
|
|
9
9
|
const hasSelected = props.selectedCount > 0;
|
|
10
10
|
const actionLabel = hasSelected ? "Clear" : "Select all";
|
|
11
11
|
const label = getLabel(hasSelected, props.selectedCount, props.subjectNoun);
|
|
12
12
|
const handleSelectAll = hasSelected ? props.onClearAll : props.onSelectAll;
|
|
13
13
|
const showAction = hasSelected || props.hasOptionsVisible;
|
|
14
|
-
return (React__default.createElement("div", { className: styles.header, "data-testid": "ATL-
|
|
14
|
+
return (React__default.createElement("div", { className: styles.header, "data-testid": "ATL-FilterPicker-Header" },
|
|
15
15
|
React__default.createElement(Typography, { textColor: "heading", fontWeight: "semiBold" }, label),
|
|
16
16
|
showAction && (React__default.createElement(Button, { size: "small", label: actionLabel, type: "tertiary", onClick: handleSelectAll }))));
|
|
17
17
|
}
|
|
@@ -25,4 +25,4 @@ function getLabel(hasSelected, count, subjectNoun) {
|
|
|
25
25
|
return "Select";
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export {
|
|
28
|
+
export { FilterPickerContentHeader as F };
|
|
@@ -7,12 +7,12 @@ var Text = require('./Text-cjs.js');
|
|
|
7
7
|
var Glimmer = require('./Glimmer-cjs.js');
|
|
8
8
|
var Spinner = require('./Spinner-cjs.js');
|
|
9
9
|
var AtlantisThemeContext = require('./AtlantisThemeContext-cjs.js');
|
|
10
|
-
var
|
|
11
|
-
var
|
|
10
|
+
var FilterPickerOption = require('./FilterPickerOption-cjs.js');
|
|
11
|
+
var FilterPickerLoadMore = require('./FilterPickerLoadMore-cjs.js');
|
|
12
12
|
|
|
13
|
-
var styles = {"container":"
|
|
13
|
+
var styles = {"container":"d-JzbXbz3vI-","optionsList":"_9sPZShzetbo-","filterMessage":"_7iUzJFaZYDs-","emptyStateMessage":"I3lJfMgm-Io-","scrollTop":"VNhhUhatkmw-","scrollNone":"w8LsXerWI7I-","scrollBottom":"-Bk1T-RD-tA-","loadingContainer":"czPVeCUK2Zc-","hasOptions":"_9IwiWJBxJxQ-","spinning":"BrOPnXbFiHU-"};
|
|
14
14
|
|
|
15
|
-
function
|
|
15
|
+
function FilterPickerContentList(props) {
|
|
16
16
|
const { tokens } = AtlantisThemeContext.useAtlantisTheme();
|
|
17
17
|
const optionsExist = props.options.length > 0;
|
|
18
18
|
const hasSearchTerm = props.searchValue.length > 0;
|
|
@@ -20,12 +20,12 @@ function ComboboxContentList(props) {
|
|
|
20
20
|
return (React.createElement("div", { className: classnames(styles.container, styles[listScrollState]) },
|
|
21
21
|
optionsExist && (React.createElement("ul", { className: styles.optionsList, role: "listbox", "aria-multiselectable": props.multiselect, ref: props.optionsListRef },
|
|
22
22
|
props.options.map(option => {
|
|
23
|
-
return (React.createElement(
|
|
23
|
+
return (React.createElement(FilterPickerOption.FilterPickerOption, { key: option.id, id: option.id, label: option.label, prefix: option.prefix, customRender: option.customRender, onClick: option.onClick }));
|
|
24
24
|
}),
|
|
25
25
|
React.createElement("div", { className: classnames([styles.loadingContainer, styles.hasOptions]) },
|
|
26
26
|
React.createElement(framerMotion.AnimatePresence, { initial: false }, Boolean(props.loading && optionsExist) && (React.createElement(framerMotion.motion.div, { initial: { opacity: 0, y: tokens["space-base"] }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: tokens["space-base"] }, transition: { duration: tokens["timing-base"] / 1000 } },
|
|
27
27
|
React.createElement(Spinner.Spinner, { size: "small" }))))),
|
|
28
|
-
props.onLoadMore && (React.createElement(
|
|
28
|
+
props.onLoadMore && (React.createElement(FilterPickerLoadMore.FilterPickerLoadMore, { onLoadMore: props.onLoadMore })))),
|
|
29
29
|
props.loading && !optionsExist && (React.createElement(React.Fragment, null, Array.from({ length: 5 }).map((_, index) => (React.createElement("div", { className: styles.loadingContainer, key: index },
|
|
30
30
|
React.createElement(Glimmer.Glimmer, { shape: "rectangle", size: "small" })))))),
|
|
31
31
|
hasSearchTerm && !props.loading && !optionsExist && (React.createElement("div", { className: styles.filterMessage },
|
|
@@ -77,4 +77,4 @@ function useScrollState(optionsListRef, options) {
|
|
|
77
77
|
return { listScrollState };
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
exports.
|
|
80
|
+
exports.FilterPickerContentList = FilterPickerContentList;
|
|
@@ -5,12 +5,12 @@ import { T as Text } from './Text-es.js';
|
|
|
5
5
|
import { G as Glimmer } from './Glimmer-es.js';
|
|
6
6
|
import { S as Spinner } from './Spinner-es.js';
|
|
7
7
|
import { u as useAtlantisTheme } from './AtlantisThemeContext-es.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { F as FilterPickerOption } from './FilterPickerOption-es.js';
|
|
9
|
+
import { F as FilterPickerLoadMore } from './FilterPickerLoadMore-es.js';
|
|
10
10
|
|
|
11
|
-
var styles = {"container":"
|
|
11
|
+
var styles = {"container":"d-JzbXbz3vI-","optionsList":"_9sPZShzetbo-","filterMessage":"_7iUzJFaZYDs-","emptyStateMessage":"I3lJfMgm-Io-","scrollTop":"VNhhUhatkmw-","scrollNone":"w8LsXerWI7I-","scrollBottom":"-Bk1T-RD-tA-","loadingContainer":"czPVeCUK2Zc-","hasOptions":"_9IwiWJBxJxQ-","spinning":"BrOPnXbFiHU-"};
|
|
12
12
|
|
|
13
|
-
function
|
|
13
|
+
function FilterPickerContentList(props) {
|
|
14
14
|
const { tokens } = useAtlantisTheme();
|
|
15
15
|
const optionsExist = props.options.length > 0;
|
|
16
16
|
const hasSearchTerm = props.searchValue.length > 0;
|
|
@@ -18,12 +18,12 @@ function ComboboxContentList(props) {
|
|
|
18
18
|
return (React__default.createElement("div", { className: classnames(styles.container, styles[listScrollState]) },
|
|
19
19
|
optionsExist && (React__default.createElement("ul", { className: styles.optionsList, role: "listbox", "aria-multiselectable": props.multiselect, ref: props.optionsListRef },
|
|
20
20
|
props.options.map(option => {
|
|
21
|
-
return (React__default.createElement(
|
|
21
|
+
return (React__default.createElement(FilterPickerOption, { key: option.id, id: option.id, label: option.label, prefix: option.prefix, customRender: option.customRender, onClick: option.onClick }));
|
|
22
22
|
}),
|
|
23
23
|
React__default.createElement("div", { className: classnames([styles.loadingContainer, styles.hasOptions]) },
|
|
24
24
|
React__default.createElement(AnimatePresence, { initial: false }, Boolean(props.loading && optionsExist) && (React__default.createElement(motion.div, { initial: { opacity: 0, y: tokens["space-base"] }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: tokens["space-base"] }, transition: { duration: tokens["timing-base"] / 1000 } },
|
|
25
25
|
React__default.createElement(Spinner, { size: "small" }))))),
|
|
26
|
-
props.onLoadMore && (React__default.createElement(
|
|
26
|
+
props.onLoadMore && (React__default.createElement(FilterPickerLoadMore, { onLoadMore: props.onLoadMore })))),
|
|
27
27
|
props.loading && !optionsExist && (React__default.createElement(React__default.Fragment, null, Array.from({ length: 5 }).map((_, index) => (React__default.createElement("div", { className: styles.loadingContainer, key: index },
|
|
28
28
|
React__default.createElement(Glimmer, { shape: "rectangle", size: "small" })))))),
|
|
29
29
|
hasSearchTerm && !props.loading && !optionsExist && (React__default.createElement("div", { className: styles.filterMessage },
|
|
@@ -75,4 +75,4 @@ function useScrollState(optionsListRef, options) {
|
|
|
75
75
|
return { listScrollState };
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
export {
|
|
78
|
+
export { FilterPickerContentList as F };
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var Icon = require('./Icon-cjs.js');
|
|
5
5
|
|
|
6
|
-
var styles = {"search":"
|
|
6
|
+
var styles = {"search":"_74R4ICUNw-M-","searchInput":"icUzhma-GJs-","clearSearch":"ePmiDYZ2boo-","spinning":"_-2bwJZqt-do-"};
|
|
7
7
|
|
|
8
|
-
function
|
|
8
|
+
function FilterPickerContentSearch(props) {
|
|
9
9
|
const searchRef = React.useRef(null);
|
|
10
10
|
React.useEffect(() => {
|
|
11
11
|
if (props.open) {
|
|
@@ -17,7 +17,7 @@ function ComboboxContentSearch(props) {
|
|
|
17
17
|
}, [props.open]);
|
|
18
18
|
return (React.createElement("div", { className: styles.search },
|
|
19
19
|
React.createElement("input", { type: "search", ref: searchRef, className: styles.searchInput, placeholder: props.placeholder ? `Search ${props.placeholder}` : "Search", onChange: (event) => handleSearch(event), value: props.searchValue }),
|
|
20
|
-
props.searchValue && (React.createElement("button", { className: styles.clearSearch, onClick: clearSearch, type: "button", "data-testid": "ATL-
|
|
20
|
+
props.searchValue && (React.createElement("button", { className: styles.clearSearch, onClick: clearSearch, type: "button", "data-testid": "ATL-FilterPicker-Content-Search-Clear", "aria-label": "Clear search" },
|
|
21
21
|
React.createElement(Icon.Icon, { name: "remove", size: "small" })))));
|
|
22
22
|
function clearSearch() {
|
|
23
23
|
var _a;
|
|
@@ -31,4 +31,4 @@ function ComboboxContentSearch(props) {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
exports.
|
|
34
|
+
exports.FilterPickerContentSearch = FilterPickerContentSearch;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React__default, { useRef, useEffect } from 'react';
|
|
2
2
|
import { I as Icon } from './Icon-es.js';
|
|
3
3
|
|
|
4
|
-
var styles = {"search":"
|
|
4
|
+
var styles = {"search":"_74R4ICUNw-M-","searchInput":"icUzhma-GJs-","clearSearch":"ePmiDYZ2boo-","spinning":"_-2bwJZqt-do-"};
|
|
5
5
|
|
|
6
|
-
function
|
|
6
|
+
function FilterPickerContentSearch(props) {
|
|
7
7
|
const searchRef = useRef(null);
|
|
8
8
|
useEffect(() => {
|
|
9
9
|
if (props.open) {
|
|
@@ -15,7 +15,7 @@ function ComboboxContentSearch(props) {
|
|
|
15
15
|
}, [props.open]);
|
|
16
16
|
return (React__default.createElement("div", { className: styles.search },
|
|
17
17
|
React__default.createElement("input", { type: "search", ref: searchRef, className: styles.searchInput, placeholder: props.placeholder ? `Search ${props.placeholder}` : "Search", onChange: (event) => handleSearch(event), value: props.searchValue }),
|
|
18
|
-
props.searchValue && (React__default.createElement("button", { className: styles.clearSearch, onClick: clearSearch, type: "button", "data-testid": "ATL-
|
|
18
|
+
props.searchValue && (React__default.createElement("button", { className: styles.clearSearch, onClick: clearSearch, type: "button", "data-testid": "ATL-FilterPicker-Content-Search-Clear", "aria-label": "Clear search" },
|
|
19
19
|
React__default.createElement(Icon, { name: "remove", size: "small" })))));
|
|
20
20
|
function clearSearch() {
|
|
21
21
|
var _a;
|
|
@@ -29,4 +29,4 @@ function ComboboxContentSearch(props) {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export {
|
|
32
|
+
export { FilterPickerContentSearch as F };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var jobberHooks = require('@jobber/hooks');
|
|
5
|
+
|
|
6
|
+
var styles = {"trigger":"_8SCmS4wfKOQ-","spinning":"coGWl7tznJU-"};
|
|
7
|
+
|
|
8
|
+
function FilterPickerLoadMore({ onLoadMore, }) {
|
|
9
|
+
const [inViewRef, isInView] = jobberHooks.useInView();
|
|
10
|
+
React.useEffect(() => {
|
|
11
|
+
isInView && onLoadMore();
|
|
12
|
+
}, [isInView]);
|
|
13
|
+
return (React.createElement("div", { "data-testid": "ATL-FilterPicker-Loadmore-Trigger", ref: inViewRef, className: styles.trigger }));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
exports.FilterPickerLoadMore = FilterPickerLoadMore;
|