@box/blueprint-web 10.0.0 → 10.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib-esm/combobox/combobox.js +24 -18
- package/dist/lib-esm/combobox/types.d.ts +5 -0
- package/dist/lib-esm/index.css +229 -222
- package/dist/lib-esm/list-item/cell/cell.js +1 -1
- package/dist/lib-esm/list-item/index.d.ts +5 -2
- package/dist/lib-esm/list-item/index.js +15 -0
- package/dist/lib-esm/list-item/list-item.d.ts +5 -2
- package/dist/lib-esm/list-item/main.module.js +1 -1
- package/dist/lib-esm/list-item/table-column.js +1 -1
- package/dist/lib-esm/list-item/table-header-default.d.ts +9 -0
- package/dist/lib-esm/list-item/table-header-default.js +23 -0
- package/dist/lib-esm/list-item/table-header-dropdown.d.ts +9 -0
- package/dist/lib-esm/list-item/table-header-dropdown.js +66 -0
- package/dist/lib-esm/list-item/table-header.js +8 -4
- package/dist/lib-esm/list-item/table.d.ts +26 -2
- package/dist/lib-esm/list-item/table.js +60 -20
- package/dist/lib-esm/list-item/utils/{column-metadata.d.ts → column-visibility-context/column-metadata.d.ts} +1 -0
- package/dist/lib-esm/list-item/utils/{columnVisibilityContext.d.ts → column-visibility-context/columnVisibilityContext.d.ts} +2 -1
- package/dist/lib-esm/list-item/utils/{columnVisibilityContext.js → column-visibility-context/columnVisibilityContext.js} +4 -2
- package/dist/lib-esm/list-item/utils/{useColumnVisibilityManager.d.ts → column-visibility-context/useColumnVisibilityManager.d.ts} +2 -1
- package/dist/lib-esm/list-item/utils/{useColumnVisibilityManager.js → column-visibility-context/useColumnVisibilityManager.js} +13 -4
- package/dist/lib-esm/list-item/utils/table-sorting-context/tableSortingContext.d.ts +17 -0
- package/dist/lib-esm/list-item/utils/table-sorting-context/tableSortingContext.js +42 -0
- package/dist/lib-esm/list-item/utils/table-sorting-context/useSortingTableManager.d.ts +9 -0
- package/dist/lib-esm/list-item/utils/table-sorting-context/useSortingTableManager.js +36 -0
- package/package.json +1 -1
- /package/dist/lib-esm/list-item/utils/{useThrottledContainerResize.d.ts → column-visibility-context/useThrottledContainerResize.d.ts} +0 -0
- /package/dist/lib-esm/list-item/utils/{useThrottledContainerResize.js → column-visibility-context/useThrottledContainerResize.js} +0 -0
|
@@ -69,6 +69,7 @@ const RootInner = ({
|
|
|
69
69
|
noResultMessage = '',
|
|
70
70
|
clearOnBlur = !freeInput,
|
|
71
71
|
clearOnEscape = false,
|
|
72
|
+
deleteChipOnBackspace = false,
|
|
72
73
|
portalElement,
|
|
73
74
|
hideSelectedOptions = false,
|
|
74
75
|
unmountOnHide = false,
|
|
@@ -188,6 +189,23 @@ const RootInner = ({
|
|
|
188
189
|
},
|
|
189
190
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
190
191
|
[selectedValueMemoized, setInputValue, focusInput]);
|
|
192
|
+
const removeMultiSelectInputChip = useCallback(id => {
|
|
193
|
+
// For multi-select variant only
|
|
194
|
+
selectStore.setValue(prev => {
|
|
195
|
+
if (Array.isArray(prev)) {
|
|
196
|
+
// unselect corresponding option
|
|
197
|
+
const remainingValues = prev.filter(val => val !== id);
|
|
198
|
+
// focus combobox input if no more input chips
|
|
199
|
+
if (remainingValues.length === 0) {
|
|
200
|
+
focusInput();
|
|
201
|
+
}
|
|
202
|
+
// update state
|
|
203
|
+
return remainingValues;
|
|
204
|
+
}
|
|
205
|
+
// do nothing it single-select
|
|
206
|
+
return prev;
|
|
207
|
+
});
|
|
208
|
+
}, [selectStore, focusInput]);
|
|
191
209
|
const handleKeyDown = useCallback(event => {
|
|
192
210
|
// Close menu
|
|
193
211
|
if (event.key === 'Enter' || event.key === 'Tab') {
|
|
@@ -209,7 +227,12 @@ const RootInner = ({
|
|
|
209
227
|
resetSelectedValue();
|
|
210
228
|
}
|
|
211
229
|
}
|
|
212
|
-
|
|
230
|
+
if (event.key === 'Backspace') {
|
|
231
|
+
if (deleteChipOnBackspace && multiselect && !inputValue && selectedValue.length) {
|
|
232
|
+
removeMultiSelectInputChip(selectedValue[selectedValue.length - 1]);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}, [clearOnEscape, removeMultiSelectInputChip, deleteChipOnBackspace, isOpen, resetSelectedValue, setInputValue, setOpen, inputValue, multiselect, selectedValue]);
|
|
213
236
|
// Reset input on blur
|
|
214
237
|
const handleOnBlur = useCallback(() => {
|
|
215
238
|
if (!clearOnBlur || isOpen) {
|
|
@@ -222,23 +245,6 @@ const RootInner = ({
|
|
|
222
245
|
const handleOnFocus = useCallback(event => {
|
|
223
246
|
onFocus?.(event);
|
|
224
247
|
}, [onFocus]);
|
|
225
|
-
const removeMultiSelectInputChip = id => {
|
|
226
|
-
// For multi-select variant only
|
|
227
|
-
selectStore.setValue(prev => {
|
|
228
|
-
if (Array.isArray(prev)) {
|
|
229
|
-
// unselect corresponding option
|
|
230
|
-
const remainingValues = prev.filter(val => val !== id);
|
|
231
|
-
// focus combobox input if no more input chips
|
|
232
|
-
if (remainingValues.length === 0) {
|
|
233
|
-
focusInput();
|
|
234
|
-
}
|
|
235
|
-
// update state
|
|
236
|
-
return remainingValues;
|
|
237
|
-
}
|
|
238
|
-
// do nothing it single-select
|
|
239
|
-
return prev;
|
|
240
|
-
});
|
|
241
|
-
};
|
|
242
248
|
const handleFocusInputOnEvent = useCallback(event => {
|
|
243
249
|
// don't focus if child element event was triggered
|
|
244
250
|
if (event.target !== event.currentTarget) {
|
|
@@ -125,6 +125,11 @@ export interface ComboboxBaseProps<Multiple extends boolean, FreeInput extends b
|
|
|
125
125
|
* If `true`, clear all values when the user presses escape and the dropdown menu is closed.
|
|
126
126
|
*/
|
|
127
127
|
clearOnEscape?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* If `true`, clear last multiselect chip when the user presses backspace and the input has no value.
|
|
130
|
+
* @default false
|
|
131
|
+
*/
|
|
132
|
+
deleteChipOnBackspace?: boolean;
|
|
128
133
|
/**
|
|
129
134
|
* The name of the combobox. Submitted with its owning form as part of a name/value pair.
|
|
130
135
|
*/
|