@jobber/components 8.13.1 → 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/Checkbox/Checkbox.d.ts +1 -1
- 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/components/DataListHeader/index.cjs +0 -1
- package/dist/DataList/components/DataListHeader/index.mjs +0 -1
- package/dist/DataList/components/DataListSearch/index.cjs +1 -2
- package/dist/DataList/components/DataListSearch/index.mjs +1 -2
- package/dist/DataList/index.cjs +11 -12
- package/dist/DataList/index.mjs +11 -12
- package/dist/DataListHeader-cjs.js +22 -5
- package/dist/DataListHeader-es.js +22 -5
- package/dist/DataListSearch-cjs.js +19 -2
- package/dist/DataListSearch-es.js +19 -2
- 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/Banner/Banner.md +2 -2
- package/dist/docs/Box/Box.md +2 -2
- package/dist/docs/Card/Card.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/Icon/Icon.md +1 -1
- package/dist/docs/Menu/Menu.md +2 -2
- package/dist/docs/MultiSelect/MultiSelect.md +1 -1
- package/dist/docs/Tabs/Tabs.md +2 -2
- package/dist/docs/index.md +1 -2
- package/dist/docs/usage-guidelines/usage-guidelines.md +5 -5
- package/dist/index.cjs +14 -16
- package/dist/index.d.mts +1 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.mjs +12 -13
- package/dist/styles.css +53 -53
- package/dist/utils/meta/meta.json +5 -7
- package/package.json +6 -11
- package/rollup.config.mjs +2 -2
- package/AnimatedSwitcher.d.ts +0 -1
- package/AnimatedSwitcher.js +0 -17
- package/Combobox.d.ts +0 -1
- package/dist/AnimatedSwitcher/AnimatedSwitcher.d.ts +0 -32
- package/dist/AnimatedSwitcher/index.cjs +0 -11
- package/dist/AnimatedSwitcher/index.d.ts +0 -1
- package/dist/AnimatedSwitcher/index.mjs +0 -5
- package/dist/AnimatedSwitcher/transitions.d.ts +0 -8
- package/dist/AnimatedSwitcher-cjs.js +0 -95
- package/dist/AnimatedSwitcher-es.js +0 -93
- 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/docs/AnimatedSwitcher/AnimatedSwitcher.md +0 -34
|
@@ -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
|
|
@@ -441,8 +441,8 @@ Use `UNSAFE_style` to apply inline custom styles to the Banner.
|
|
|
441
441
|
|
|
442
442
|
| Prop | Type | Required | Default | Description |
|
|
443
443
|
|------|------|----------|---------|-------------|
|
|
444
|
-
| `backgroundColor` | `"
|
|
445
|
-
| `color` | `"
|
|
444
|
+
| `backgroundColor` | `"disabled" | "icon" | "event" | "invoice" | "job" | "quote" | "request" | "task" | "text" | "visit" | "warning" | "success" | "base-grey--100" | "base-grey--200" | "base-grey--300" | ... 269 more ... | "client--onSurface"` | No | — | Sets the background color of the icon. |
|
|
445
|
+
| `color` | `"disabled" | "icon" | "task" | "text" | "warning" | "success" | "blue" | "green" | "yellow" | "red" | "grey" | "white" | "greyBlue" | "lightBlue" | "orange" | "navy" | "interactive" | ... 32 more ... | "brandHighlight"` | No | — | Determines the color of the icon. Some icons have a default system colour like quotes, jobs, and invoices. Others tha... |
|
|
446
446
|
| `customColor` | `string` | No | — | Sets a custom color for the icon. Can be a rgb() or hex value. |
|
|
447
447
|
| `name` | `IconNames` | No | — | The icon to show. |
|
|
448
448
|
| `size` | `"base" | "large" | "small"` | No | `base` | Changes the size to small or large. |
|
package/dist/docs/Box/Box.md
CHANGED
|
@@ -206,9 +206,9 @@ defaults to respecting theme/modes.
|
|
|
206
206
|
| `alignItems` | `AlignItems` | No | — | This feature is well established and works across many devices and browser versions. It’s been available across brows... |
|
|
207
207
|
| `alignSelf` | `AlignSelf` | No | — | This feature is well established and works across many devices and browser versions. It’s been available across brows... |
|
|
208
208
|
| `as` | `"article" | "aside" | "div" | "main" | "section" | "span"` | No | `div` | |
|
|
209
|
-
| `background` | `"
|
|
209
|
+
| `background` | `"disabled" | "icon" | "event" | "invoice" | "job" | "quote" | "request" | "task" | "text" | "visit" | "warning" | "success" | "base-grey--100" | "base-grey--200" | "base-grey--300" | ... 269 more ... | "client--onSurface"` | No | — | |
|
|
210
210
|
| `border` | `"base" | "thick" | "thicker" | "thickest" | BoxBorderWidth` | No | — | |
|
|
211
|
-
| `borderColor` | `"
|
|
211
|
+
| `borderColor` | `"disabled" | "icon" | "event" | "invoice" | "job" | "quote" | "request" | "task" | "text" | "visit" | "warning" | "success" | "base-grey--100" | "base-grey--200" | "base-grey--300" | ... 269 more ... | "client--onSurface"` | No | — | |
|
|
212
212
|
| `direction` | `FlexDirection` | No | — | |
|
|
213
213
|
| `gap` | `"base" | "extravagant" | "large" | "larger" | "largest" | "minuscule" | "slim" | "small" | "smaller" | "smallest"` | No | — | |
|
|
214
214
|
| `height` | `BoxDimension` | No | `auto` | |
|
package/dist/docs/Card/Card.md
CHANGED
|
@@ -265,7 +265,7 @@ desired markup and have no need for either UNSAFE.
|
|
|
265
265
|
| `accent` | `"indigo" | "teal" | "blue" | "green" | "lime" | "yellowGreen" | "yellow" | "red" | "grey" | "white" | "greyBlue" | "lightBlue" | "purple" | "pink" | "orange" | "brown" | "navy" | ... 68 more ... | "yellowLightest"` | No | — | The `accent`, if provided, will effect the color accent at the top of the card. |
|
|
266
266
|
| `elevation` | `elevationProp` | No | — | |
|
|
267
267
|
| `external` | `boolean` | No | — | Makes the URL open in new tab on click. |
|
|
268
|
-
| `header` | `string | ReactElement<unknown, string | JSXElementConstructor<any
|
|
268
|
+
| `header` | `string | HeaderActionProps | ReactElement<unknown, string | JSXElementConstructor<any>>` | No | — | The header props of the card. |
|
|
269
269
|
| `onClick` | `(event: MouseEvent<HTMLAnchorElement | HTMLDivElement, MouseEvent>) => void` | No | — | Event handler that gets called when the card is clicked. |
|
|
270
270
|
| `title` | `string` | No | — | @deprecated Use header instead. |
|
|
271
271
|
| `UNSAFE_className` | `{ container?: string; header?: string; }` | No | — | **Use at your own risk:** Custom class names for specific elements. This should only be used as a **last resort**. Us... |
|