@jobber/components 8.14.0 → 8.14.1
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/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/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/index.cjs +13 -13
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +11 -11
- package/dist/styles.css +53 -53
- 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
|
@@ -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;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import React__default, { useEffect } from 'react';
|
|
2
2
|
import { useInView } from '@jobber/hooks';
|
|
3
3
|
|
|
4
|
-
var styles = {"trigger":"
|
|
4
|
+
var styles = {"trigger":"_8SCmS4wfKOQ-","spinning":"coGWl7tznJU-"};
|
|
5
5
|
|
|
6
|
-
function
|
|
6
|
+
function FilterPickerLoadMore({ onLoadMore, }) {
|
|
7
7
|
const [inViewRef, isInView] = useInView();
|
|
8
8
|
useEffect(() => {
|
|
9
9
|
isInView && onLoadMore();
|
|
10
10
|
}, [isInView]);
|
|
11
|
-
return (React__default.createElement("div", { "data-testid": "ATL-
|
|
11
|
+
return (React__default.createElement("div", { "data-testid": "ATL-FilterPicker-Loadmore-Trigger", ref: inViewRef, className: styles.trigger }));
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export {
|
|
14
|
+
export { FilterPickerLoadMore as F };
|
|
@@ -5,13 +5,13 @@ var React = require('react');
|
|
|
5
5
|
var classnames = require('classnames');
|
|
6
6
|
var Icon = require('./Icon-cjs.js');
|
|
7
7
|
var Flex = require('./Flex-cjs.js');
|
|
8
|
-
var
|
|
8
|
+
var FilterPickerProvider = require('./FilterPickerProvider-cjs.js');
|
|
9
9
|
|
|
10
|
-
var styles = {"option":"
|
|
10
|
+
var styles = {"option":"tjXkqP6ZdSk-","spinning":"yDp0Y9ojp0Y-"};
|
|
11
11
|
|
|
12
|
-
function
|
|
12
|
+
function FilterPickerOption(props) {
|
|
13
13
|
const { customRender, onClick } = props, contentProps = tslib_es6.__rest(props, ["customRender", "onClick"]);
|
|
14
|
-
const { selected, selectionHandler } = React.useContext(
|
|
14
|
+
const { selected, selectionHandler } = React.useContext(FilterPickerProvider.FilterPickerContext);
|
|
15
15
|
const isSelected = selected.some(selection => selection.id.toString() === props.id.toString());
|
|
16
16
|
const handleClick = () => {
|
|
17
17
|
const { id, label } = props;
|
|
@@ -28,4 +28,4 @@ function InternalDefaultContent(props) {
|
|
|
28
28
|
React.createElement("div", null, props.isSelected && (React.createElement(Icon.Icon, { name: "checkmark", color: "interactiveSubtle" })))));
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
exports.
|
|
31
|
+
exports.FilterPickerOption = FilterPickerOption;
|
|
@@ -3,13 +3,13 @@ import React__default, { useContext } from 'react';
|
|
|
3
3
|
import classnames from 'classnames';
|
|
4
4
|
import { I as Icon } from './Icon-es.js';
|
|
5
5
|
import { F as Flex } from './Flex-es.js';
|
|
6
|
-
import { a as
|
|
6
|
+
import { a as FilterPickerContext } from './FilterPickerProvider-es.js';
|
|
7
7
|
|
|
8
|
-
var styles = {"option":"
|
|
8
|
+
var styles = {"option":"tjXkqP6ZdSk-","spinning":"yDp0Y9ojp0Y-"};
|
|
9
9
|
|
|
10
|
-
function
|
|
10
|
+
function FilterPickerOption(props) {
|
|
11
11
|
const { customRender, onClick } = props, contentProps = __rest(props, ["customRender", "onClick"]);
|
|
12
|
-
const { selected, selectionHandler } = useContext(
|
|
12
|
+
const { selected, selectionHandler } = useContext(FilterPickerContext);
|
|
13
13
|
const isSelected = selected.some(selection => selection.id.toString() === props.id.toString());
|
|
14
14
|
const handleClick = () => {
|
|
15
15
|
const { id, label } = props;
|
|
@@ -26,4 +26,4 @@ function InternalDefaultContent(props) {
|
|
|
26
26
|
React__default.createElement("div", null, props.isSelected && (React__default.createElement(Icon, { name: "checkmark", color: "interactiveSubtle" })))));
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
export {
|
|
29
|
+
export { FilterPickerOption as F };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('./tslib.es6-cjs.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
|
|
6
|
+
const FilterPickerContext = React.createContext({});
|
|
7
|
+
function FilterPickerContextProvider(_a) {
|
|
8
|
+
var { children } = _a, props = tslib_es6.__rest(_a, ["children"]);
|
|
9
|
+
return (React.createElement(FilterPickerContext.Provider, { value: props }, children));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
exports.FilterPickerContext = FilterPickerContext;
|
|
13
|
+
exports.FilterPickerContextProvider = FilterPickerContextProvider;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { _ as __rest } from './tslib.es6-es.js';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
|
|
4
|
+
const FilterPickerContext = React__default.createContext({});
|
|
5
|
+
function FilterPickerContextProvider(_a) {
|
|
6
|
+
var { children } = _a, props = __rest(_a, ["children"]);
|
|
7
|
+
return (React__default.createElement(FilterPickerContext.Provider, { value: props }, children));
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { FilterPickerContextProvider as F, FilterPickerContext as a };
|
|
@@ -4,14 +4,14 @@ var React = require('react');
|
|
|
4
4
|
var Chip = require('./Chip-cjs.js');
|
|
5
5
|
require('./tslib.es6-cjs.js');
|
|
6
6
|
var Icon = require('./Icon-cjs.js');
|
|
7
|
-
var
|
|
7
|
+
var FilterPickerProvider = require('./FilterPickerProvider-cjs.js');
|
|
8
8
|
|
|
9
|
-
function
|
|
10
|
-
const { handleOpen } = React.useContext(
|
|
9
|
+
function FilterPickerTrigger({ label = "Select", selected, activatorRef, }) {
|
|
10
|
+
const { handleOpen } = React.useContext(FilterPickerProvider.FilterPickerContext);
|
|
11
11
|
const hasSelection = selected.length;
|
|
12
12
|
const selectedLabel = selected.map(option => option.label).join(", ");
|
|
13
13
|
return (React.createElement(Chip.Chip, { variation: hasSelection ? "base" : "subtle", label: hasSelection ? selectedLabel : "", ariaLabel: label, heading: label, onClick: handleOpen, role: "combobox", ref: activatorRef }, !hasSelection && (React.createElement(Chip.Chip.Suffix, null,
|
|
14
14
|
React.createElement(Icon.Icon, { name: "add", size: "small" })))));
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
exports.
|
|
17
|
+
exports.FilterPickerTrigger = FilterPickerTrigger;
|
|
@@ -2,14 +2,14 @@ import React__default from 'react';
|
|
|
2
2
|
import { C as Chip } from './Chip-es.js';
|
|
3
3
|
import './tslib.es6-es.js';
|
|
4
4
|
import { I as Icon } from './Icon-es.js';
|
|
5
|
-
import { a as
|
|
5
|
+
import { a as FilterPickerContext } from './FilterPickerProvider-es.js';
|
|
6
6
|
|
|
7
|
-
function
|
|
8
|
-
const { handleOpen } = React__default.useContext(
|
|
7
|
+
function FilterPickerTrigger({ label = "Select", selected, activatorRef, }) {
|
|
8
|
+
const { handleOpen } = React__default.useContext(FilterPickerContext);
|
|
9
9
|
const hasSelection = selected.length;
|
|
10
10
|
const selectedLabel = selected.map(option => option.label).join(", ");
|
|
11
11
|
return (React__default.createElement(Chip, { variation: hasSelection ? "base" : "subtle", label: hasSelection ? selectedLabel : "", ariaLabel: label, heading: label, onClick: handleOpen, role: "combobox", ref: activatorRef }, !hasSelection && (React__default.createElement(Chip.Suffix, null,
|
|
12
12
|
React__default.createElement(Icon, { name: "add", size: "small" })))));
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export {
|
|
15
|
+
export { FilterPickerTrigger as F };
|
package/dist/constants-cjs.js
CHANGED
package/dist/constants-es.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const
|
|
1
|
+
const FILTER_PICKER_MENU_ID = "ATL-FilterPicker-Content";
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { FILTER_PICKER_MENU_ID as F };
|
|
@@ -459,7 +459,7 @@ different from the rest.
|
|
|
459
459
|
* If autocompleted results are not required for the text input, use
|
|
460
460
|
[InputText](../InputText/InputText.md)
|
|
461
461
|
* If a text input appearance is not required, and options can only be from a
|
|
462
|
-
predefined set then a
|
|
462
|
+
predefined set then a FilterPicker can be used
|
|
463
463
|
|
|
464
464
|
|
|
465
465
|
## Configuration
|
package/dist/docs/Chip/Chip.md
CHANGED
|
@@ -4,7 +4,7 @@ Chip is a flexible component that can be used for
|
|
|
4
4
|
|
|
5
5
|
* inline single- or multi-selection of items
|
|
6
6
|
* triggering filtering and selection components like
|
|
7
|
-
[
|
|
7
|
+
[FilterPicker](../FilterPicker/FilterPicker.md)
|
|
8
8
|
* presenting grouped items that can be added or removed
|
|
9
9
|
|
|
10
10
|
```tsx
|
|
@@ -236,8 +236,8 @@ export function ChipInvalidExample(
|
|
|
236
236
|
|
|
237
237
|
* [Chips](../Chips/Chips.md) is a convenience wrapper that offers the
|
|
238
238
|
single-select, multi-select, and add/dismiss functionality "out of the box"
|
|
239
|
-
* [
|
|
240
|
-
a separate component
|
|
239
|
+
* [FilterPicker](../FilterPicker/FilterPicker.md) is most commonly triggered by a Chip,
|
|
240
|
+
but is a separate component
|
|
241
241
|
* [Select](../Select/Select.md) is a simpler single-select "dropdown" that
|
|
242
242
|
presents as a form element and should be preferred in forms
|
|
243
243
|
* [RadioGroup](../RadioGroup/RadioGroup.md) should be used to allow the user to
|
|
@@ -256,7 +256,7 @@ ideally 1–2 words. If any of the options in the group may have longer labels,
|
|
|
256
256
|
consider Checkbox or Radio as necessary for your selection type.
|
|
257
257
|
|
|
258
258
|
In cases where a Chip displays name of its selections, such as when used to
|
|
259
|
-
trigger a
|
|
259
|
+
trigger a FilterPicker or a date range selector, use the heading to identify the
|
|
260
260
|
"category" and the label to identify the selected items.
|
|
261
261
|
|
|
262
262
|
## Accessibility
|