@vuu-ui/vuu-ui-controls 0.13.2 → 0.13.4
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/cjs/column-picker/ColumnPicker.js +2 -2
- package/cjs/column-picker/ColumnPicker.js.map +1 -1
- package/cjs/column-picker/ColumnSearch.js +4 -24
- package/cjs/column-picker/ColumnSearch.js.map +1 -1
- package/cjs/context-panel-provider/ContextPanelProvider.js +55 -0
- package/cjs/context-panel-provider/ContextPanelProvider.js.map +1 -0
- package/cjs/index.js +6 -80
- package/cjs/index.js.map +1 -1
- package/cjs/sortable-list/SortableList.js +38 -0
- package/cjs/sortable-list/SortableList.js.map +1 -0
- package/cjs/toolbar/Toolbar.js.map +1 -1
- package/cjs/toolbar/useSelection.js +0 -1
- package/cjs/toolbar/useSelection.js.map +1 -1
- package/esm/column-picker/ColumnPicker.js +2 -2
- package/esm/column-picker/ColumnPicker.js.map +1 -1
- package/esm/column-picker/ColumnSearch.js +5 -25
- package/esm/column-picker/ColumnSearch.js.map +1 -1
- package/esm/context-panel-provider/ContextPanelProvider.js +51 -0
- package/esm/context-panel-provider/ContextPanelProvider.js.map +1 -0
- package/esm/index.js +2 -21
- package/esm/index.js.map +1 -1
- package/esm/sortable-list/SortableList.js +35 -0
- package/esm/sortable-list/SortableList.js.map +1 -0
- package/esm/toolbar/Toolbar.js.map +1 -1
- package/esm/toolbar/useSelection.js +0 -1
- package/esm/toolbar/useSelection.js.map +1 -1
- package/package.json +15 -17
- package/cjs/common-hooks/collectionProvider.js +0 -24
- package/cjs/common-hooks/collectionProvider.js.map +0 -1
- package/cjs/common-hooks/isPlainObject.js +0 -6
- package/cjs/common-hooks/isPlainObject.js.map +0 -1
- package/cjs/common-hooks/itemToString.js +0 -24
- package/cjs/common-hooks/itemToString.js.map +0 -1
- package/cjs/common-hooks/useCollectionItems.js +0 -309
- package/cjs/common-hooks/useCollectionItems.js.map +0 -1
- package/cjs/common-hooks/useSelection.js +0 -212
- package/cjs/common-hooks/useSelection.js.map +0 -1
- package/cjs/list/Highlighter.css.js +0 -6
- package/cjs/list/Highlighter.css.js.map +0 -1
- package/cjs/list/Highlighter.js +0 -36
- package/cjs/list/Highlighter.js.map +0 -1
- package/cjs/list/List.css.js +0 -6
- package/cjs/list/List.css.js.map +0 -1
- package/cjs/list/List.js +0 -317
- package/cjs/list/List.js.map +0 -1
- package/cjs/list/ListItem.css.js +0 -6
- package/cjs/list/ListItem.css.js.map +0 -1
- package/cjs/list/ListItem.js +0 -84
- package/cjs/list/ListItem.js.map +0 -1
- package/cjs/list/ListItemGroup.js +0 -6
- package/cjs/list/ListItemGroup.js.map +0 -1
- package/cjs/list/ListItemHeader.js +0 -6
- package/cjs/list/ListItemHeader.js.map +0 -1
- package/cjs/list/RadioIcon.css.js +0 -6
- package/cjs/list/RadioIcon.css.js.map +0 -1
- package/cjs/list/RadioIcon.js +0 -27
- package/cjs/list/RadioIcon.js.map +0 -1
- package/cjs/list/common-hooks/keyUtils.js +0 -78
- package/cjs/list/common-hooks/keyUtils.js.map +0 -1
- package/cjs/list/common-hooks/list-dom-utils.js +0 -25
- package/cjs/list/common-hooks/list-dom-utils.js.map +0 -1
- package/cjs/list/common-hooks/useCollapsibleGroups.js +0 -72
- package/cjs/list/common-hooks/useCollapsibleGroups.js.map +0 -1
- package/cjs/list/common-hooks/useImperativeScrollingAPI.js +0 -52
- package/cjs/list/common-hooks/useImperativeScrollingAPI.js.map +0 -1
- package/cjs/list/common-hooks/useKeyboardNavigation.js +0 -289
- package/cjs/list/common-hooks/useKeyboardNavigation.js.map +0 -1
- package/cjs/list/common-hooks/useTypeahead.js +0 -74
- package/cjs/list/common-hooks/useTypeahead.js.map +0 -1
- package/cjs/list/common-hooks/useViewportTracking.js +0 -133
- package/cjs/list/common-hooks/useViewportTracking.js.map +0 -1
- package/cjs/list/common-hooks/utils/collection-item-utils.js +0 -182
- package/cjs/list/common-hooks/utils/collection-item-utils.js.map +0 -1
- package/cjs/list/common-hooks/utils/filter-utils.js +0 -11
- package/cjs/list/common-hooks/utils/filter-utils.js.map +0 -1
- package/cjs/list/common-hooks/utils/isSelected.js +0 -9
- package/cjs/list/common-hooks/utils/isSelected.js.map +0 -1
- package/cjs/list/useList.js +0 -278
- package/cjs/list/useList.js.map +0 -1
- package/cjs/list/useListDrop.js +0 -92
- package/cjs/list/useListDrop.js.map +0 -1
- package/cjs/list/useListHeight.js +0 -77
- package/cjs/list/useListHeight.js.map +0 -1
- package/cjs/list/useScrollPosition.js +0 -74
- package/cjs/list/useScrollPosition.js.map +0 -1
- package/esm/common-hooks/collectionProvider.js +0 -20
- package/esm/common-hooks/collectionProvider.js.map +0 -1
- package/esm/common-hooks/isPlainObject.js +0 -4
- package/esm/common-hooks/isPlainObject.js.map +0 -1
- package/esm/common-hooks/itemToString.js +0 -22
- package/esm/common-hooks/itemToString.js.map +0 -1
- package/esm/common-hooks/useCollectionItems.js +0 -307
- package/esm/common-hooks/useCollectionItems.js.map +0 -1
- package/esm/common-hooks/useSelection.js +0 -205
- package/esm/common-hooks/useSelection.js.map +0 -1
- package/esm/list/Highlighter.css.js +0 -4
- package/esm/list/Highlighter.css.js.map +0 -1
- package/esm/list/Highlighter.js +0 -34
- package/esm/list/Highlighter.js.map +0 -1
- package/esm/list/List.css.js +0 -4
- package/esm/list/List.css.js.map +0 -1
- package/esm/list/List.js +0 -315
- package/esm/list/List.js.map +0 -1
- package/esm/list/ListItem.css.js +0 -4
- package/esm/list/ListItem.css.js.map +0 -1
- package/esm/list/ListItem.js +0 -81
- package/esm/list/ListItem.js.map +0 -1
- package/esm/list/ListItemGroup.js +0 -4
- package/esm/list/ListItemGroup.js.map +0 -1
- package/esm/list/ListItemHeader.js +0 -4
- package/esm/list/ListItemHeader.js.map +0 -1
- package/esm/list/RadioIcon.css.js +0 -4
- package/esm/list/RadioIcon.css.js.map +0 -1
- package/esm/list/RadioIcon.js +0 -25
- package/esm/list/RadioIcon.js.map +0 -1
- package/esm/list/common-hooks/keyUtils.js +0 -64
- package/esm/list/common-hooks/keyUtils.js.map +0 -1
- package/esm/list/common-hooks/list-dom-utils.js +0 -19
- package/esm/list/common-hooks/list-dom-utils.js.map +0 -1
- package/esm/list/common-hooks/useCollapsibleGroups.js +0 -70
- package/esm/list/common-hooks/useCollapsibleGroups.js.map +0 -1
- package/esm/list/common-hooks/useImperativeScrollingAPI.js +0 -50
- package/esm/list/common-hooks/useImperativeScrollingAPI.js.map +0 -1
- package/esm/list/common-hooks/useKeyboardNavigation.js +0 -286
- package/esm/list/common-hooks/useKeyboardNavigation.js.map +0 -1
- package/esm/list/common-hooks/useTypeahead.js +0 -72
- package/esm/list/common-hooks/useTypeahead.js.map +0 -1
- package/esm/list/common-hooks/useViewportTracking.js +0 -131
- package/esm/list/common-hooks/useViewportTracking.js.map +0 -1
- package/esm/list/common-hooks/utils/collection-item-utils.js +0 -168
- package/esm/list/common-hooks/utils/collection-item-utils.js.map +0 -1
- package/esm/list/common-hooks/utils/filter-utils.js +0 -8
- package/esm/list/common-hooks/utils/filter-utils.js.map +0 -1
- package/esm/list/common-hooks/utils/isSelected.js +0 -7
- package/esm/list/common-hooks/utils/isSelected.js.map +0 -1
- package/esm/list/useList.js +0 -276
- package/esm/list/useList.js.map +0 -1
- package/esm/list/useListDrop.js +0 -90
- package/esm/list/useListDrop.js.map +0 -1
- package/esm/list/useListHeight.js +0 -75
- package/esm/list/useListHeight.js.map +0 -1
- package/esm/list/useScrollPosition.js +0 -72
- package/esm/list/useScrollPosition.js.map +0 -1
- package/types/calendar/Calendar.d.ts +0 -13
- package/types/calendar/index.d.ts +0 -4
- package/types/calendar/internal/CalendarCarousel.d.ts +0 -3
- package/types/calendar/internal/CalendarContext.d.ts +0 -8
- package/types/calendar/internal/CalendarDay.d.ts +0 -14
- package/types/calendar/internal/CalendarMonth.d.ts +0 -10
- package/types/calendar/internal/CalendarNavigation.d.ts +0 -16
- package/types/calendar/internal/CalendarWeekHeader.d.ts +0 -3
- package/types/calendar/internal/useFocusManagement.d.ts +0 -9
- package/types/calendar/internal/utils.d.ts +0 -15
- package/types/calendar/useCalendar.d.ts +0 -54
- package/types/calendar/useCalendarDay.d.ts +0 -22
- package/types/calendar/useSelection.d.ts +0 -78
- package/types/column-picker/ColumnPicker.d.ts +0 -7
- package/types/column-picker/ColumnSearch.d.ts +0 -6
- package/types/column-picker/index.d.ts +0 -2
- package/types/column-picker/moving-window.d.ts +0 -14
- package/types/common-hooks/collectionProvider.d.ts +0 -13
- package/types/common-hooks/collectionTypes.d.ts +0 -58
- package/types/common-hooks/index.d.ts +0 -8
- package/types/common-hooks/isPlainObject.d.ts +0 -1
- package/types/common-hooks/itemToString.d.ts +0 -2
- package/types/common-hooks/navigationTypes.d.ts +0 -36
- package/types/common-hooks/selectionTypes.d.ts +0 -70
- package/types/common-hooks/use-resize-observer.d.ts +0 -16
- package/types/common-hooks/useCollectionItems.d.ts +0 -2
- package/types/common-hooks/useControlled.d.ts +0 -24
- package/types/common-hooks/useSelection.d.ts +0 -8
- package/types/cycle-state-button/CycleStateButton.d.ts +0 -11
- package/types/cycle-state-button/index.d.ts +0 -1
- package/types/date-input/DateInput.d.ts +0 -60
- package/types/date-input/index.d.ts +0 -1
- package/types/date-picker/DatePicker.d.ts +0 -66
- package/types/date-picker/DatePickerContext.d.ts +0 -19
- package/types/date-picker/DatePickerPanel.d.ts +0 -10
- package/types/date-picker/index.d.ts +0 -1
- package/types/drag-drop/DragDropProvider.d.ts +0 -38
- package/types/drag-drop/DragDropState.d.ts +0 -15
- package/types/drag-drop/Draggable.d.ts +0 -13
- package/types/drag-drop/DropIndicator.d.ts +0 -5
- package/types/drag-drop/dragDropTypes.d.ts +0 -100
- package/types/drag-drop/drop-target-utils.d.ts +0 -82
- package/types/drag-drop/index.d.ts +0 -6
- package/types/drag-drop/useAutoScroll.d.ts +0 -11
- package/types/drag-drop/useDragDisplacers.d.ts +0 -17
- package/types/drag-drop/useDragDrop.d.ts +0 -2
- package/types/drag-drop/useDragDropCopy.d.ts +0 -6
- package/types/drag-drop/useDragDropIndicator.d.ts +0 -2
- package/types/drag-drop/useDragDropNaturalMovement.d.ts +0 -2
- package/types/drag-drop/useDropIndicator.d.ts +0 -8
- package/types/drag-drop/useGlobalDragDrop.d.ts +0 -11
- package/types/drag-drop/useTransition.d.ts +0 -3
- package/types/editable/index.d.ts +0 -1
- package/types/editable/useEditableText.d.ts +0 -19
- package/types/editable-label/EditableLabel.d.ts +0 -19
- package/types/editable-label/index.d.ts +0 -1
- package/types/expando-input/ExpandoInput.d.ts +0 -6
- package/types/expando-input/index.d.ts +0 -1
- package/types/icon-button/Icon.d.ts +0 -6
- package/types/icon-button/IconButton.d.ts +0 -6
- package/types/icon-button/ToggleIconButton.d.ts +0 -5
- package/types/icon-button/index.d.ts +0 -3
- package/types/index.d.ts +0 -27
- package/types/instrument-picker/SearchCell.d.ts +0 -2
- package/types/instrument-picker/TablePicker.d.ts +0 -10
- package/types/instrument-picker/index.d.ts +0 -1
- package/types/instrument-picker/moving-window.d.ts +0 -14
- package/types/instrument-picker/useDataSource.d.ts +0 -6
- package/types/instrument-picker/useTablePicker.d.ts +0 -47
- package/types/list/ChevronIcon.d.ts +0 -7
- package/types/list/Highlighter.d.ts +0 -6
- package/types/list/List.d.ts +0 -6
- package/types/list/ListItem.d.ts +0 -6
- package/types/list/ListItemGroup.d.ts +0 -6
- package/types/list/ListItemHeader.d.ts +0 -5
- package/types/list/RadioIcon.d.ts +0 -4
- package/types/list/common-hooks/index.d.ts +0 -10
- package/types/list/common-hooks/keyUtils.d.ts +0 -14
- package/types/list/common-hooks/list-dom-utils.d.ts +0 -5
- package/types/list/common-hooks/useCollapsibleGroups.d.ts +0 -14
- package/types/list/common-hooks/useImperativeScrollingAPI.d.ts +0 -14
- package/types/list/common-hooks/useKeyboardNavigation.d.ts +0 -3
- package/types/list/common-hooks/useTypeahead.d.ts +0 -14
- package/types/list/common-hooks/useViewportTracking.d.ts +0 -14
- package/types/list/common-hooks/utils/collection-item-utils.d.ts +0 -21
- package/types/list/common-hooks/utils/filter-utils.d.ts +0 -4
- package/types/list/common-hooks/utils/index.d.ts +0 -4
- package/types/list/common-hooks/utils/isSelected.d.ts +0 -2
- package/types/list/index.d.ts +0 -9
- package/types/list/keyset.d.ts +0 -9
- package/types/list/listTypes.d.ts +0 -200
- package/types/list/useList.d.ts +0 -3
- package/types/list/useListDrop.d.ts +0 -15
- package/types/list/useListHeight.d.ts +0 -19
- package/types/list/useScrollPosition.d.ts +0 -19
- package/types/measured-container/MeasuredContainer.d.ts +0 -14
- package/types/measured-container/index.d.ts +0 -2
- package/types/measured-container/useMeasuredContainer.d.ts +0 -23
- package/types/measured-container/useResizeObserver.d.ts +0 -15
- package/types/overflow-container/OverflowContainer.d.ts +0 -15
- package/types/overflow-container/index.d.ts +0 -2
- package/types/overflow-container/overflow-utils.d.ts +0 -48
- package/types/overflow-container/useOverflowContainer.d.ts +0 -19
- package/types/price-ticker/PriceTicker.d.ts +0 -7
- package/types/price-ticker/index.d.ts +0 -1
- package/types/split-button/SplitButton.d.ts +0 -11
- package/types/split-button/SplitStateButton.d.ts +0 -5
- package/types/split-button/index.d.ts +0 -2
- package/types/split-button/useSplitButton.d.ts +0 -311
- package/types/table-search/SearchCell.d.ts +0 -2
- package/types/table-search/TableSearch.d.ts +0 -9
- package/types/table-search/index.d.ts +0 -1
- package/types/table-search/moving-window.d.ts +0 -14
- package/types/table-search/useTableSearch.d.ts +0 -15
- package/types/tabs-next/TabBar.d.ts +0 -12
- package/types/tabs-next/TabListNext.d.ts +0 -12
- package/types/tabs-next/TabNext.d.ts +0 -12
- package/types/tabs-next/TabNextAction.d.ts +0 -5
- package/types/tabs-next/TabNextContext.d.ts +0 -12
- package/types/tabs-next/TabNextPanel.d.ts +0 -8
- package/types/tabs-next/TabNextTrigger.d.ts +0 -5
- package/types/tabs-next/TabOverflowList.d.ts +0 -11
- package/types/tabs-next/TabsNext.d.ts +0 -17
- package/types/tabs-next/TabsNextContext.d.ts +0 -21
- package/types/tabs-next/hooks/useCollection.d.ts +0 -18
- package/types/tabs-next/hooks/useFocusOutside.d.ts +0 -2
- package/types/tabs-next/hooks/useOverflow.d.ts +0 -11
- package/types/tabs-next/index.d.ts +0 -7
- package/types/tabstrip/Tab.d.ts +0 -27
- package/types/tabstrip/TabMenu.d.ts +0 -23
- package/types/tabstrip/TabMenuOptions.d.ts +0 -10
- package/types/tabstrip/TabsTypes.d.ts +0 -127
- package/types/tabstrip/Tabstrip.d.ts +0 -2
- package/types/tabstrip/index.d.ts +0 -5
- package/types/tabstrip/tabstrip-dom-utils.d.ts +0 -2
- package/types/tabstrip/useAnimatedSelectionThumb.d.ts +0 -7
- package/types/tabstrip/useKeyboardNavigation.d.ts +0 -29
- package/types/tabstrip/useSelection.d.ts +0 -13
- package/types/tabstrip/useTabstrip.d.ts +0 -55
- package/types/toolbar/Toolbar.d.ts +0 -19
- package/types/toolbar/index.d.ts +0 -1
- package/types/toolbar/toolbar-dom-utils.d.ts +0 -3
- package/types/toolbar/useKeyboardNavigation.d.ts +0 -32
- package/types/toolbar/useSelection.d.ts +0 -22
- package/types/toolbar/useToolbar.d.ts +0 -28
- package/types/utils/deprecated-types.d.ts +0 -2
- package/types/utils/escapeRegExp.d.ts +0 -1
- package/types/utils/forwardCallbackProps.d.ts +0 -3
- package/types/utils/index.d.ts +0 -5
- package/types/utils/isOverflowElement.d.ts +0 -1
- package/types/utils/isPlainObject.d.ts +0 -1
- package/types/vuu-date-picker/VuuDatePicker.d.ts +0 -7
- package/types/vuu-date-picker/index.d.ts +0 -1
- package/types/vuu-input/VuuInput.d.ts +0 -17
- package/types/vuu-input/index.d.ts +0 -1
- package/types/vuu-typeahead-input/VuuTypeaheadInput.d.ts +0 -29
- package/types/vuu-typeahead-input/index.d.ts +0 -1
- package/types/vuu-typeahead-input/useVuuTypeaheadInput.d.ts +0 -15
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { createContext, useState, useCallback, useContext } from 'react';
|
|
3
|
+
import { useLayoutOperation, isUnconfiguredProperty, layoutFromJson } from '@vuu-ui/vuu-layout';
|
|
4
|
+
import { Dialog, DialogContent } from '@salt-ds/core';
|
|
5
|
+
|
|
6
|
+
const ContextPanelContext = createContext({
|
|
7
|
+
showContextPanel: () => {
|
|
8
|
+
console.warn(
|
|
9
|
+
"[ContextPanelContext] no implementation for showContextPanel, you need to add a ContextPanelProvider"
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
const ContextPanelProvider = ({
|
|
14
|
+
children,
|
|
15
|
+
showContextPanel: showContextPanelProp
|
|
16
|
+
}) => {
|
|
17
|
+
const { showComponentInContextPanel } = useLayoutOperation();
|
|
18
|
+
const [dialog, setDialog] = useState(null);
|
|
19
|
+
const showContextPanel = useCallback(
|
|
20
|
+
(componentType, title, props) => {
|
|
21
|
+
if (showContextPanelProp) {
|
|
22
|
+
console.log(`show context panel will use method from prop`);
|
|
23
|
+
} else if (!isUnconfiguredProperty(showComponentInContextPanel)) {
|
|
24
|
+
showComponentInContextPanel(
|
|
25
|
+
{ type: componentType, props },
|
|
26
|
+
title
|
|
27
|
+
);
|
|
28
|
+
} else {
|
|
29
|
+
const component = layoutFromJson(
|
|
30
|
+
{ type: componentType, props },
|
|
31
|
+
""
|
|
32
|
+
);
|
|
33
|
+
setDialog(
|
|
34
|
+
/* @__PURE__ */ jsx(Dialog, { open: true, children: /* @__PURE__ */ jsx(DialogContent, { children: component }) })
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
[showComponentInContextPanel, showContextPanelProp]
|
|
39
|
+
);
|
|
40
|
+
return /* @__PURE__ */ jsxs(ContextPanelContext.Provider, { value: { showContextPanel }, children: [
|
|
41
|
+
children,
|
|
42
|
+
dialog
|
|
43
|
+
] });
|
|
44
|
+
};
|
|
45
|
+
function useContextPanel() {
|
|
46
|
+
const { showContextPanel } = useContext(ContextPanelContext);
|
|
47
|
+
return showContextPanel;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { ContextPanelContext, ContextPanelProvider, useContextPanel };
|
|
51
|
+
//# sourceMappingURL=ContextPanelProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextPanelProvider.js","sources":["../../src/context-panel-provider/ContextPanelProvider.tsx"],"sourcesContent":["import {\n createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from \"react\";\nimport {\n isUnconfiguredProperty,\n layoutFromJson,\n useLayoutOperation,\n} from \"@vuu-ui/vuu-layout\";\nimport { LayoutJSON } from \"@vuu-ui/vuu-utils\";\nimport { Dialog, DialogContent } from \"@salt-ds/core\";\n\nexport type ShowContextPanel = (\n componentType: string,\n title: string,\n componentProps: unknown,\n) => void;\n\nexport interface ContextPanelProps {\n showContextPanel: ShowContextPanel;\n}\n\nexport const ContextPanelContext = createContext<ContextPanelProps>({\n showContextPanel: () => {\n console.warn(\n \"[ContextPanelContext] no implementation for showContextPanel, you need to add a ContextPanelProvider\",\n );\n },\n});\n\nexport const ContextPanelProvider = ({\n children,\n showContextPanel: showContextPanelProp,\n}: Partial<ContextPanelProps> & {\n children: ReactNode;\n}) => {\n const { showComponentInContextPanel } = useLayoutOperation();\n const [dialog, setDialog] = useState<ReactElement | null>(null);\n\n const showContextPanel = useCallback<ShowContextPanel>(\n (componentType, title, props) => {\n if (showContextPanelProp) {\n console.log(`show context panel will use method from prop`);\n } else if (!isUnconfiguredProperty(showComponentInContextPanel)) {\n showComponentInContextPanel(\n { type: componentType, props } as LayoutJSON,\n title,\n );\n } else {\n const component = layoutFromJson(\n { type: componentType, props } as LayoutJSON,\n \"\",\n );\n setDialog(\n <Dialog open={true}>\n <DialogContent>{component}</DialogContent>\n </Dialog>,\n );\n }\n },\n [showComponentInContextPanel, showContextPanelProp],\n );\n\n return (\n <ContextPanelContext.Provider value={{ showContextPanel }}>\n {children}\n {dialog}\n </ContextPanelContext.Provider>\n );\n};\n\nexport function useContextPanel() {\n const { showContextPanel } = useContext(ContextPanelContext);\n return showContextPanel;\n}\n"],"names":[],"mappings":";;;;;AA0BO,MAAM,sBAAsB,aAAiC,CAAA;AAAA,EAClE,kBAAkB,MAAM;AACtB,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN;AAAA,KACF;AAAA;AAEJ,CAAC;AAEM,MAAM,uBAAuB,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,gBAAkB,EAAA;AACpB,CAEM,KAAA;AACJ,EAAM,MAAA,EAAE,2BAA4B,EAAA,GAAI,kBAAmB,EAAA;AAC3D,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAA8B,IAAI,CAAA;AAE9D,EAAA,MAAM,gBAAmB,GAAA,WAAA;AAAA,IACvB,CAAC,aAAe,EAAA,KAAA,EAAO,KAAU,KAAA;AAC/B,MAAA,IAAI,oBAAsB,EAAA;AACxB,QAAA,OAAA,CAAQ,IAAI,CAA8C,4CAAA,CAAA,CAAA;AAAA,OACjD,MAAA,IAAA,CAAC,sBAAuB,CAAA,2BAA2B,CAAG,EAAA;AAC/D,QAAA,2BAAA;AAAA,UACE,EAAE,IAAM,EAAA,aAAA,EAAe,KAAM,EAAA;AAAA,UAC7B;AAAA,SACF;AAAA,OACK,MAAA;AACL,QAAA,MAAM,SAAY,GAAA,cAAA;AAAA,UAChB,EAAE,IAAM,EAAA,aAAA,EAAe,KAAM,EAAA;AAAA,UAC7B;AAAA,SACF;AACA,QAAA,SAAA;AAAA,8BACG,MAAO,EAAA,EAAA,IAAA,EAAM,MACZ,QAAC,kBAAA,GAAA,CAAA,aAAA,EAAA,EAAe,qBAAU,CAC5B,EAAA;AAAA,SACF;AAAA;AACF,KACF;AAAA,IACA,CAAC,6BAA6B,oBAAoB;AAAA,GACpD;AAEA,EAAA,4BACG,mBAAoB,CAAA,QAAA,EAApB,EAA6B,KAAO,EAAA,EAAE,kBACpC,EAAA,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA;AAAA,GACH,EAAA,CAAA;AAEJ;AAEO,SAAS,eAAkB,GAAA;AAChC,EAAA,MAAM,EAAE,gBAAA,EAAqB,GAAA,UAAA,CAAW,mBAAmB,CAAA;AAC3D,EAAO,OAAA,gBAAA;AACT;;;;"}
|
package/esm/index.js
CHANGED
|
@@ -4,9 +4,6 @@ export { useCalendar } from './calendar/useCalendar.js';
|
|
|
4
4
|
export { isRangeOrOffsetSelectionValue, isRangeOrOffsetSelectionWithStartDate, useSelectionCalendar, useSelectionDay } from './calendar/useSelection.js';
|
|
5
5
|
export { ColumnPicker } from './column-picker/ColumnPicker.js';
|
|
6
6
|
export { ColumnSearch } from './column-picker/ColumnSearch.js';
|
|
7
|
-
export { CollectionContext, CollectionProvider, useCollection } from './common-hooks/collectionProvider.js';
|
|
8
|
-
export { itemToString } from './common-hooks/itemToString.js';
|
|
9
|
-
export { useCollectionItems } from './common-hooks/useCollectionItems.js';
|
|
10
7
|
export { useControlled } from './common-hooks/useControlled.js';
|
|
11
8
|
export { HeightOnly, WidthHeight, WidthOnly, useResizeObserver } from './common-hooks/use-resize-observer.js';
|
|
12
9
|
export { allowMultipleSelection, deselectionIsAllowed, getFirstSelectedItem, hasSelection, isMultiSelection, isSingleSelection, selectionIsDisallowed } from './common-hooks/selectionTypes.js';
|
|
@@ -27,24 +24,6 @@ export { IconButton } from './icon-button/IconButton.js';
|
|
|
27
24
|
export { ToggleIconButton } from './icon-button/ToggleIconButton.js';
|
|
28
25
|
export { TablePicker } from './instrument-picker/TablePicker.js';
|
|
29
26
|
export { TableSearch } from './table-search/TableSearch.js';
|
|
30
|
-
export { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Enter, Escape, Home, PageDown, PageUp, Space, isCharacterKey, isNavigationKey } from './list/common-hooks/keyUtils.js';
|
|
31
|
-
export { useCollapsibleGroups } from './list/common-hooks/useCollapsibleGroups.js';
|
|
32
|
-
export { closestListItemId, closestListItemIndex, listItemElement, listItemId, listItemIndex } from './list/common-hooks/list-dom-utils.js';
|
|
33
|
-
export { useImperativeScrollingAPI } from './list/common-hooks/useImperativeScrollingAPI.js';
|
|
34
|
-
export { LIST_FOCUS_VISIBLE, useKeyboardNavigation } from './list/common-hooks/useKeyboardNavigation.js';
|
|
35
|
-
export { CHECKBOX, GROUP_SELECTION_CASCADE, GROUP_SELECTION_NONE, GROUP_SELECTION_SINGLE, groupSelectionEnabled, useSelection } from './common-hooks/useSelection.js';
|
|
36
|
-
export { useTypeahead } from './list/common-hooks/useTypeahead.js';
|
|
37
|
-
export { useViewportTracking } from './list/common-hooks/useViewportTracking.js';
|
|
38
|
-
export { childIsGroup, childItems, countChildItems, getChildLabel, getChildNodes, isDisabled, isFocusable, isGroupNode, isHeader, isParentPath, replaceCollectionItem, sourceItemHasProp, sourceItems } from './list/common-hooks/utils/collection-item-utils.js';
|
|
39
|
-
export { getDefaultFilter, getDefaultFilterRegex } from './list/common-hooks/utils/filter-utils.js';
|
|
40
|
-
export { isSelected } from './list/common-hooks/utils/isSelected.js';
|
|
41
|
-
export { Highlighter } from './list/Highlighter.js';
|
|
42
|
-
export { ListItem, ListItemProxy } from './list/ListItem.js';
|
|
43
|
-
export { List } from './list/List.js';
|
|
44
|
-
export { ListItemHeader } from './list/ListItemHeader.js';
|
|
45
|
-
export { ListItemGroup } from './list/ListItemGroup.js';
|
|
46
|
-
export { useList } from './list/useList.js';
|
|
47
|
-
export { RadioIcon } from './list/RadioIcon.js';
|
|
48
27
|
export { MeasuredContainer } from './measured-container/MeasuredContainer.js';
|
|
49
28
|
export { reduceSizeHeight, useMeasuredContainer } from './measured-container/useMeasuredContainer.js';
|
|
50
29
|
export { OverflowContainer } from './overflow-container/OverflowContainer.js';
|
|
@@ -70,4 +49,6 @@ export { forwardCallbackProps } from './utils/forwardCallbackProps.js';
|
|
|
70
49
|
export { VuuDatePicker } from './vuu-date-picker/VuuDatePicker.js';
|
|
71
50
|
export { VuuInput } from './vuu-input/VuuInput.js';
|
|
72
51
|
export { VuuTypeaheadInput } from './vuu-typeahead-input/VuuTypeaheadInput.js';
|
|
52
|
+
export { ContextPanelProvider, useContextPanel } from './context-panel-provider/ContextPanelProvider.js';
|
|
53
|
+
export { SortableList, SortableOption } from './sortable-list/SortableList.js';
|
|
73
54
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Option, ListBox } from '@salt-ds/core';
|
|
3
|
+
import { useSortable } from '@dnd-kit/react/sortable';
|
|
4
|
+
import { DragDropProvider } from '@dnd-kit/react';
|
|
5
|
+
import { useRef, useCallback } from 'react';
|
|
6
|
+
|
|
7
|
+
const SortableOption = ({
|
|
8
|
+
id,
|
|
9
|
+
index,
|
|
10
|
+
value,
|
|
11
|
+
...optionProps
|
|
12
|
+
}) => {
|
|
13
|
+
const { ref } = useSortable({ id, index });
|
|
14
|
+
return /* @__PURE__ */ jsx(Option, { ...optionProps, id, ref, value });
|
|
15
|
+
};
|
|
16
|
+
const SortableList = ({
|
|
17
|
+
children,
|
|
18
|
+
onReorderListItems,
|
|
19
|
+
...listBoxProps
|
|
20
|
+
}) => {
|
|
21
|
+
const listRef = useRef(null);
|
|
22
|
+
const handleDragEnd = useCallback(() => {
|
|
23
|
+
setTimeout(() => {
|
|
24
|
+
const listItems = listRef.current?.querySelectorAll(".saltOption");
|
|
25
|
+
if (listItems) {
|
|
26
|
+
const items = Array.from(listItems).map(({ id }) => id);
|
|
27
|
+
onReorderListItems?.(items);
|
|
28
|
+
}
|
|
29
|
+
}, 300);
|
|
30
|
+
}, [onReorderListItems]);
|
|
31
|
+
return /* @__PURE__ */ jsx(DragDropProvider, { onDragEnd: handleDragEnd, children: /* @__PURE__ */ jsx(ListBox, { ...listBoxProps, ref: listRef, children }) });
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export { SortableList, SortableOption };
|
|
35
|
+
//# sourceMappingURL=SortableList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SortableList.js","sources":["../../src/sortable-list/SortableList.tsx"],"sourcesContent":["import { ListBox, ListBoxProps, Option, OptionProps } from \"@salt-ds/core\";\nimport { useSortable } from \"@dnd-kit/react/sortable\";\nimport { DragDropProvider } from \"@dnd-kit/react\";\nimport { useCallback, useRef } from \"react\";\n\nexport const SortableOption = ({\n id,\n index,\n value,\n ...optionProps\n}: OptionProps & { id: string; index: number }) => {\n const { ref } = useSortable({ id, index });\n return <Option {...optionProps} id={id} ref={ref} value={value} />;\n};\n\nexport const SortableList = ({\n children,\n onReorderListItems,\n ...listBoxProps\n}: ListBoxProps & {\n onReorderListItems?: (listItems: unknown[]) => void;\n}) => {\n const listRef = useRef<HTMLDivElement>(null);\n const handleDragEnd = useCallback(() => {\n setTimeout(() => {\n const listItems = listRef.current?.querySelectorAll(\".saltOption\");\n if (listItems) {\n const items = Array.from(listItems).map(({ id }) => id);\n onReorderListItems?.(items);\n }\n }, 300);\n }, [onReorderListItems]);\n\n return (\n <DragDropProvider onDragEnd={handleDragEnd}>\n <ListBox {...listBoxProps} ref={listRef}>\n {children}\n </ListBox>\n </DragDropProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;AAKO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,EAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAmD,KAAA;AACjD,EAAA,MAAM,EAAE,GAAI,EAAA,GAAI,YAAY,EAAE,EAAA,EAAI,OAAO,CAAA;AACzC,EAAA,2BAAQ,MAAQ,EAAA,EAAA,GAAG,WAAa,EAAA,EAAA,EAAQ,KAAU,KAAc,EAAA,CAAA;AAClE;AAEO,MAAM,eAAe,CAAC;AAAA,EAC3B,QAAA;AAAA,EACA,kBAAA;AAAA,EACA,GAAG;AACL,CAEM,KAAA;AACJ,EAAM,MAAA,OAAA,GAAU,OAAuB,IAAI,CAAA;AAC3C,EAAM,MAAA,aAAA,GAAgB,YAAY,MAAM;AACtC,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,MAAM,SAAY,GAAA,OAAA,CAAQ,OAAS,EAAA,gBAAA,CAAiB,aAAa,CAAA;AACjE,MAAA,IAAI,SAAW,EAAA;AACb,QAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,IAAA,CAAK,SAAS,CAAA,CAAE,IAAI,CAAC,EAAE,EAAG,EAAA,KAAM,EAAE,CAAA;AACtD,QAAA,kBAAA,GAAqB,KAAK,CAAA;AAAA;AAC5B,OACC,GAAG,CAAA;AAAA,GACR,EAAG,CAAC,kBAAkB,CAAC,CAAA;AAEvB,EACE,uBAAA,GAAA,CAAC,gBAAiB,EAAA,EAAA,SAAA,EAAW,aAC3B,EAAA,QAAA,kBAAA,GAAA,CAAC,OAAS,EAAA,EAAA,GAAG,YAAc,EAAA,GAAA,EAAK,OAC7B,EAAA,QAAA,EACH,CACF,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar.js","sources":["../../src/toolbar/Toolbar.tsx"],"sourcesContent":["import { asReactElements, useId } from \"@vuu-ui/vuu-utils\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport React, { useMemo, useRef } from \"react\";\nimport {\n OverflowContainer,\n OverflowContainerProps,\n} from \"../overflow-container\";\nimport { useToolbar } from \"./useToolbar\";\nimport { forwardCallbackProps } from \"../utils\";\
|
|
1
|
+
{"version":3,"file":"Toolbar.js","sources":["../../src/toolbar/Toolbar.tsx"],"sourcesContent":["import { asReactElements, useId } from \"@vuu-ui/vuu-utils\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport React, { useMemo, useRef } from \"react\";\nimport {\n OverflowContainer,\n OverflowContainerProps,\n} from \"../overflow-container\";\nimport { useToolbar } from \"./useToolbar\";\nimport { forwardCallbackProps } from \"../utils\";\nimport {\n SelectionStrategy,\n SpecialKeyMultipleSelection,\n} from \"../common-hooks\";\n\nimport toolbarCss from \"./Toolbar.css\";\n\nconst classBase = \"vuuToolbar\";\n\nexport type ActiveItemChangeHandler = (itemIndex: number[]) => void;\n\nexport type NavigationOutOfBoundsHandler = (direction: \"start\" | \"end\") => void;\nexport interface ToolbarProps extends OverflowContainerProps {\n activeItemIndex?: number[];\n alignItems?: \"start\" | \"center\" | \"end\";\n defaultActiveItemIndex?: number[];\n onActiveChange?: ActiveItemChangeHandler;\n /**\n * Indicates that user has used Arrow key navigation to move beyond the\n * last or before the first item. A higher level component may want to\n * use this to implement a seamless navigation across components.\n */\n onNavigateOutOfBounds?: NavigationOutOfBoundsHandler;\n selectionStrategy?: SelectionStrategy | SpecialKeyMultipleSelection;\n showSeparators?: boolean;\n}\n\nexport const Toolbar = ({\n activeItemIndex: activeItemIndexProp,\n alignItems = \"start\",\n defaultActiveItemIndex,\n children,\n className,\n id: idProp,\n onActiveChange,\n onNavigateOutOfBounds,\n orientation = \"horizontal\",\n selectionStrategy = \"none\",\n showSeparators = false,\n ...props\n}: ToolbarProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-toolbar\",\n css: toolbarCss,\n window: targetWindow,\n });\n\n const rootRef = useRef<HTMLDivElement>(null);\n const {\n activeItemIndex,\n focusableIdx,\n focusVisible,\n itemProps,\n ...toolbarHook\n } = useToolbar({\n activeItemIndex: activeItemIndexProp,\n defaultActiveItemIndex,\n containerRef: rootRef,\n onActiveChange,\n onNavigateOutOfBounds,\n orientation,\n selectionStrategy,\n });\n\n const id = useId(idProp);\n\n const items = useMemo(\n () =>\n asReactElements(children).map((child, index) => {\n const {\n id: itemId = `${id}-tab-${index}`,\n className: itemClassName,\n ...ownProps\n } = child.props as any;\n const selected = activeItemIndex.includes(index);\n return React.cloneElement(child, {\n ...forwardCallbackProps(ownProps, itemProps),\n className: cx(\"vuuToolbarItem\", itemClassName),\n \"data-overflow-priority\": selected ? \"1\" : undefined,\n id: itemId,\n key: index,\n \"aria-selected\": selected,\n tabIndex: focusableIdx === index ? 0 : -1,\n });\n }),\n [activeItemIndex, children, focusableIdx, id, itemProps],\n );\n\n return (\n <OverflowContainer\n {...props}\n {...toolbarHook.containerProps}\n className={cx(className, classBase, `${classBase}-${orientation}`, {\n [`${classBase}-alignCenter`]: alignItems === \"center\",\n [`${classBase}-alignEnd`]: alignItems === \"end\",\n [`${classBase}-withSeparators`]: showSeparators,\n })}\n {...props}\n ref={rootRef}\n >\n {items}\n </OverflowContainer>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAkBA,MAAM,SAAY,GAAA,YAAA;AAoBX,MAAM,UAAU,CAAC;AAAA,EACtB,eAAiB,EAAA,mBAAA;AAAA,EACjB,UAAa,GAAA,OAAA;AAAA,EACb,sBAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,EAAI,EAAA,MAAA;AAAA,EACJ,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,WAAc,GAAA,YAAA;AAAA,EACd,iBAAoB,GAAA,MAAA;AAAA,EACpB,cAAiB,GAAA,KAAA;AAAA,EACjB,GAAG;AACL,CAAoB,KAAA;AAClB,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAA,UAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,OAAA,GAAU,OAAuB,IAAI,CAAA;AAC3C,EAAM,MAAA;AAAA,IACJ,eAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,MACD,UAAW,CAAA;AAAA,IACb,eAAiB,EAAA,mBAAA;AAAA,IACjB,sBAAA;AAAA,IACA,YAAc,EAAA,OAAA;AAAA,IACd,cAAA;AAAA,IACA,qBAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAM,MAAA,EAAA,GAAK,MAAM,MAAM,CAAA;AAEvB,EAAA,MAAM,KAAQ,GAAA,OAAA;AAAA,IACZ,MACE,eAAgB,CAAA,QAAQ,EAAE,GAAI,CAAA,CAAC,OAAO,KAAU,KAAA;AAC9C,MAAM,MAAA;AAAA,QACJ,EAAI,EAAA,MAAA,GAAS,CAAG,EAAA,EAAE,QAAQ,KAAK,CAAA,CAAA;AAAA,QAC/B,SAAW,EAAA,aAAA;AAAA,QACX,GAAG;AAAA,UACD,KAAM,CAAA,KAAA;AACV,MAAM,MAAA,QAAA,GAAW,eAAgB,CAAA,QAAA,CAAS,KAAK,CAAA;AAC/C,MAAO,OAAA,KAAA,CAAM,aAAa,KAAO,EAAA;AAAA,QAC/B,GAAG,oBAAqB,CAAA,QAAA,EAAU,SAAS,CAAA;AAAA,QAC3C,SAAA,EAAW,EAAG,CAAA,gBAAA,EAAkB,aAAa,CAAA;AAAA,QAC7C,wBAAA,EAA0B,WAAW,GAAM,GAAA,KAAA,CAAA;AAAA,QAC3C,EAAI,EAAA,MAAA;AAAA,QACJ,GAAK,EAAA,KAAA;AAAA,QACL,eAAiB,EAAA,QAAA;AAAA,QACjB,QAAA,EAAU,YAAiB,KAAA,KAAA,GAAQ,CAAI,GAAA,CAAA;AAAA,OACxC,CAAA;AAAA,KACF,CAAA;AAAA,IACH,CAAC,eAAA,EAAiB,QAAU,EAAA,YAAA,EAAc,IAAI,SAAS;AAAA,GACzD;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACH,GAAG,WAAY,CAAA,cAAA;AAAA,MAChB,SAAA,EAAW,GAAG,SAAW,EAAA,SAAA,EAAW,GAAG,SAAS,CAAA,CAAA,EAAI,WAAW,CAAI,CAAA,EAAA;AAAA,QACjE,CAAC,CAAA,EAAG,SAAS,CAAA,YAAA,CAAc,GAAG,UAAe,KAAA,QAAA;AAAA,QAC7C,CAAC,CAAA,EAAG,SAAS,CAAA,SAAA,CAAW,GAAG,UAAe,KAAA,KAAA;AAAA,QAC1C,CAAC,CAAA,EAAG,SAAS,CAAA,eAAA,CAAiB,GAAG;AAAA,OAClC,CAAA;AAAA,MACA,GAAG,KAAA;AAAA,MACJ,GAAK,EAAA,OAAA;AAAA,MAEJ,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;;;;"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
|
-
import '../common-hooks/collectionProvider.js';
|
|
3
2
|
import '../common-hooks/use-resize-observer.js';
|
|
4
3
|
import { allowMultipleSelection, deselectionIsAllowed, selectionIsDisallowed } from '../common-hooks/selectionTypes.js';
|
|
5
4
|
import { useControlled } from '@salt-ds/core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelection.js","sources":["../../src/toolbar/useSelection.ts"],"sourcesContent":["import { KeyboardEvent, MouseEvent, RefObject, useCallback } from \"react\";\nimport {\n SelectionStrategy,\n SpecialKeyMultipleSelection,\n allowMultipleSelection,\n deselectionIsAllowed,\n selectionIsDisallowed,\n} from \"../common-hooks\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { getClosestIndexItem, isSelectableElement } from \"@vuu-ui/vuu-utils\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nexport interface SelectionHookProps {\n containerRef: RefObject<HTMLElement | null>;\n defaultSelected?: number[];\n highlightedIdx: number;\n itemQuery: string;\n onSelectionChange?: (selectedIndices: number[]) => void;\n selected?: number[];\n selectionStrategy: SelectionStrategy | SpecialKeyMultipleSelection;\n}\n\nexport interface ItemHandlers {\n onClick?: (e: MouseEvent, itemIndex: number) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n}\n\nconst NO_SELECTION_HANDLERS: ItemHandlers = {};\n\nexport interface SelectionHookResult {\n activateItem: (tabIndex: number) => void;\n itemHandlers: ItemHandlers;\n isControlled: boolean;\n selected: number[];\n}\n\n// TODO use SelectionProps\nexport const useSelection = ({\n defaultSelected,\n highlightedIdx,\n onSelectionChange,\n selected: selectedProp,\n selectionStrategy,\n}: SelectionHookProps): SelectionHookResult => {\n const [selected, setSelected, isControlled] = useControlled({\n controlled: selectedProp,\n default: defaultSelected ?? [],\n name: \"useSelection\",\n state: \"selected\",\n });\n\n // const isSelectableElement = useMemo(\n // () =>\n // (el: HTMLElement): boolean =>\n // el && el.matches(`[class*=\"${itemQuery} \"]`),\n // [itemQuery]\n // );\n\n const isSelectionEvent = useCallback(\n (evt: KeyboardEvent) => defaultSelectionKeys.includes(evt.key),\n [],\n );\n\n const selectItem = useCallback(\n (itemIndex: number, specialKey = false) => {\n const newSelected = allowMultipleSelection(selectionStrategy, specialKey)\n ? selected.concat(itemIndex)\n : [itemIndex];\n\n setSelected(newSelected);\n onSelectionChange?.(newSelected);\n },\n [onSelectionChange, selected, selectionStrategy, setSelected],\n );\n\n const deselectItem = useCallback(\n (itemIndex: number, specialKey = false) => {\n const newSelected =\n selectionStrategy === \"deselectable\" ||\n (selectionStrategy === \"multiple-special-key\" && !specialKey)\n ? []\n : selected.filter((index) => index !== itemIndex);\n setSelected(newSelected);\n onSelectionChange?.(newSelected);\n },\n [onSelectionChange, selected, selectionStrategy, setSelected],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isSelectionEvent(e) && isSelectableElement(e.target as HTMLElement)) {\n if (!selected.includes(highlightedIdx)) {\n e.stopPropagation();\n e.preventDefault();\n selectItem(highlightedIdx, e.shiftKey);\n } else if (deselectionIsAllowed(selectionStrategy)) {\n e.stopPropagation();\n e.preventDefault();\n deselectItem(highlightedIdx, e.shiftKey);\n }\n }\n },\n [\n isSelectionEvent,\n selected,\n highlightedIdx,\n selectionStrategy,\n selectItem,\n deselectItem,\n ],\n );\n\n const handleClick = useCallback(\n (e: MouseEvent, itemIndex: number) => {\n const element = getClosestIndexItem(e.target as HTMLElement);\n if (isSelectableElement(element)) {\n if (!selected.includes(itemIndex)) {\n selectItem(itemIndex, e.shiftKey);\n } else if (deselectionIsAllowed(selectionStrategy)) {\n deselectItem(itemIndex, e.shiftKey);\n }\n }\n },\n [deselectItem, selectItem, selected, selectionStrategy],\n );\n\n const itemHandlers = selectionIsDisallowed(selectionStrategy)\n ? NO_SELECTION_HANDLERS\n : {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n };\n\n return {\n activateItem: selectItem,\n itemHandlers,\n isControlled,\n selected,\n };\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSelection.js","sources":["../../src/toolbar/useSelection.ts"],"sourcesContent":["import { KeyboardEvent, MouseEvent, RefObject, useCallback } from \"react\";\nimport {\n SelectionStrategy,\n SpecialKeyMultipleSelection,\n allowMultipleSelection,\n deselectionIsAllowed,\n selectionIsDisallowed,\n} from \"../common-hooks\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { getClosestIndexItem, isSelectableElement } from \"@vuu-ui/vuu-utils\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nexport interface SelectionHookProps {\n containerRef: RefObject<HTMLElement | null>;\n defaultSelected?: number[];\n highlightedIdx: number;\n itemQuery: string;\n onSelectionChange?: (selectedIndices: number[]) => void;\n selected?: number[];\n selectionStrategy: SelectionStrategy | SpecialKeyMultipleSelection;\n}\n\nexport interface ItemHandlers {\n onClick?: (e: MouseEvent, itemIndex: number) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n}\n\nconst NO_SELECTION_HANDLERS: ItemHandlers = {};\n\nexport interface SelectionHookResult {\n activateItem: (tabIndex: number) => void;\n itemHandlers: ItemHandlers;\n isControlled: boolean;\n selected: number[];\n}\n\n// TODO use SelectionProps\nexport const useSelection = ({\n defaultSelected,\n highlightedIdx,\n onSelectionChange,\n selected: selectedProp,\n selectionStrategy,\n}: SelectionHookProps): SelectionHookResult => {\n const [selected, setSelected, isControlled] = useControlled({\n controlled: selectedProp,\n default: defaultSelected ?? [],\n name: \"useSelection\",\n state: \"selected\",\n });\n\n // const isSelectableElement = useMemo(\n // () =>\n // (el: HTMLElement): boolean =>\n // el && el.matches(`[class*=\"${itemQuery} \"]`),\n // [itemQuery]\n // );\n\n const isSelectionEvent = useCallback(\n (evt: KeyboardEvent) => defaultSelectionKeys.includes(evt.key),\n [],\n );\n\n const selectItem = useCallback(\n (itemIndex: number, specialKey = false) => {\n const newSelected = allowMultipleSelection(selectionStrategy, specialKey)\n ? selected.concat(itemIndex)\n : [itemIndex];\n\n setSelected(newSelected);\n onSelectionChange?.(newSelected);\n },\n [onSelectionChange, selected, selectionStrategy, setSelected],\n );\n\n const deselectItem = useCallback(\n (itemIndex: number, specialKey = false) => {\n const newSelected =\n selectionStrategy === \"deselectable\" ||\n (selectionStrategy === \"multiple-special-key\" && !specialKey)\n ? []\n : selected.filter((index) => index !== itemIndex);\n setSelected(newSelected);\n onSelectionChange?.(newSelected);\n },\n [onSelectionChange, selected, selectionStrategy, setSelected],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isSelectionEvent(e) && isSelectableElement(e.target as HTMLElement)) {\n if (!selected.includes(highlightedIdx)) {\n e.stopPropagation();\n e.preventDefault();\n selectItem(highlightedIdx, e.shiftKey);\n } else if (deselectionIsAllowed(selectionStrategy)) {\n e.stopPropagation();\n e.preventDefault();\n deselectItem(highlightedIdx, e.shiftKey);\n }\n }\n },\n [\n isSelectionEvent,\n selected,\n highlightedIdx,\n selectionStrategy,\n selectItem,\n deselectItem,\n ],\n );\n\n const handleClick = useCallback(\n (e: MouseEvent, itemIndex: number) => {\n const element = getClosestIndexItem(e.target as HTMLElement);\n if (isSelectableElement(element)) {\n if (!selected.includes(itemIndex)) {\n selectItem(itemIndex, e.shiftKey);\n } else if (deselectionIsAllowed(selectionStrategy)) {\n deselectItem(itemIndex, e.shiftKey);\n }\n }\n },\n [deselectItem, selectItem, selected, selectionStrategy],\n );\n\n const itemHandlers = selectionIsDisallowed(selectionStrategy)\n ? NO_SELECTION_HANDLERS\n : {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n };\n\n return {\n activateItem: selectItem,\n itemHandlers,\n isControlled,\n selected,\n };\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.13.
|
|
2
|
+
"version": "0.13.4",
|
|
3
3
|
"description": "VUU UI Controls",
|
|
4
4
|
"author": "heswell",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"devDependencies": {
|
|
7
|
-
"@vuu-ui/vuu-data-types": "0.13.
|
|
8
|
-
"@vuu-ui/vuu-protocol-types": "0.13.
|
|
9
|
-
"@vuu-ui/vuu-table-types": "0.13.
|
|
7
|
+
"@vuu-ui/vuu-data-types": "0.13.4",
|
|
8
|
+
"@vuu-ui/vuu-protocol-types": "0.13.4",
|
|
9
|
+
"@vuu-ui/vuu-table-types": "0.13.4"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@vuu-ui/vuu-context-menu": "0.13.
|
|
13
|
-
"@vuu-ui/vuu-data-react": "0.13.
|
|
14
|
-
"@vuu-ui/vuu-layout": "0.13.
|
|
15
|
-
"@vuu-ui/vuu-popups": "0.13.
|
|
16
|
-
"@vuu-ui/vuu-table": "0.13.
|
|
17
|
-
"@vuu-ui/vuu-utils": "0.13.
|
|
18
|
-
"@floating-ui/react": "^0.26.28",
|
|
12
|
+
"@vuu-ui/vuu-context-menu": "0.13.4",
|
|
13
|
+
"@vuu-ui/vuu-data-react": "0.13.4",
|
|
14
|
+
"@vuu-ui/vuu-layout": "0.13.4",
|
|
15
|
+
"@vuu-ui/vuu-popups": "0.13.4",
|
|
16
|
+
"@vuu-ui/vuu-table": "0.13.4",
|
|
17
|
+
"@vuu-ui/vuu-utils": "0.13.4",
|
|
19
18
|
"@salt-ds/core": "1.43.0",
|
|
20
19
|
"@salt-ds/icons": "1.13.2",
|
|
21
20
|
"@salt-ds/styles": "0.2.1",
|
|
@@ -24,6 +23,8 @@
|
|
|
24
23
|
},
|
|
25
24
|
"peerDependencies": {
|
|
26
25
|
"@internationalized/date": "^3.0.0",
|
|
26
|
+
"@dnd-kit/react": "^0.1.19",
|
|
27
|
+
"@floating-ui/react": "^0.26.28",
|
|
27
28
|
"clsx": "^2.0.0",
|
|
28
29
|
"react": "^19.1.0",
|
|
29
30
|
"react-dom": "^19.1.0"
|
|
@@ -33,18 +34,15 @@
|
|
|
33
34
|
"files": [
|
|
34
35
|
"README.md",
|
|
35
36
|
"esm",
|
|
36
|
-
"cjs"
|
|
37
|
-
"/types"
|
|
37
|
+
"cjs"
|
|
38
38
|
],
|
|
39
39
|
"exports": {
|
|
40
40
|
".": {
|
|
41
41
|
"require": "./cjs/index.js",
|
|
42
|
-
"import": "./esm/index.js"
|
|
43
|
-
"types": "./types/index.d.ts"
|
|
42
|
+
"import": "./esm/index.js"
|
|
44
43
|
}
|
|
45
44
|
},
|
|
46
45
|
"main": "cjs/index.js",
|
|
47
46
|
"module": "esm/index.js",
|
|
48
|
-
"name": "@vuu-ui/vuu-ui-controls"
|
|
49
|
-
"types": "types/index.d.ts"
|
|
47
|
+
"name": "@vuu-ui/vuu-ui-controls"
|
|
50
48
|
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
|
|
6
|
-
const CollectionContext = React.createContext(void 0);
|
|
7
|
-
function CollectionProvider({
|
|
8
|
-
children,
|
|
9
|
-
collectionHook,
|
|
10
|
-
...props
|
|
11
|
-
}) {
|
|
12
|
-
return /* @__PURE__ */ jsxRuntime.jsx(CollectionContext.Provider, { value: collectionHook, children: Object.keys(props).length > 0 ? React.cloneElement(children, props) : children });
|
|
13
|
-
}
|
|
14
|
-
function useCollection() {
|
|
15
|
-
const collection = React.useContext(CollectionContext);
|
|
16
|
-
if (collection) {
|
|
17
|
-
return collection;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
exports.CollectionContext = CollectionContext;
|
|
22
|
-
exports.CollectionProvider = CollectionProvider;
|
|
23
|
-
exports.useCollection = useCollection;
|
|
24
|
-
//# sourceMappingURL=collectionProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collectionProvider.js","sources":["../../src/common-hooks/collectionProvider.tsx"],"sourcesContent":["import { cloneElement, createContext, ReactElement, useContext } from \"react\";\nimport { CollectionHookResult } from \"./collectionTypes\";\n\nexport interface collectionContext<T> {\n collection: CollectionHookResult<T>;\n}\n\nexport const CollectionContext = createContext<\n CollectionHookResult<any> | undefined\n>(undefined);\n\ninterface ContextProviderProps<Item> {\n children: ReactElement;\n collectionHook: CollectionHookResult<Item>;\n}\n\nexport function CollectionProvider<Item>({\n children,\n collectionHook,\n ...props\n}: ContextProviderProps<Item>) {\n return (\n <CollectionContext.Provider value={collectionHook}>\n {Object.keys(props).length > 0 ? cloneElement(children, props) : children}\n </CollectionContext.Provider>\n );\n}\n\nexport function useCollection<Item>(): CollectionHookResult<Item> | undefined {\n const collection = useContext(CollectionContext);\n if (collection) {\n return collection as CollectionHookResult<Item>;\n }\n}\n"],"names":["createContext","cloneElement","useContext"],"mappings":";;;;;AAOa,MAAA,iBAAA,GAAoBA,oBAE/B,KAAS,CAAA;AAOJ,SAAS,kBAAyB,CAAA;AAAA,EACvC,QAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAG;AACL,CAA+B,EAAA;AAC7B,EAAA,sCACG,iBAAkB,CAAA,QAAA,EAAlB,EAA2B,KAAA,EAAO,gBAChC,QAAO,EAAA,MAAA,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,SAAS,CAAI,GAAAC,kBAAA,CAAa,QAAU,EAAA,KAAK,IAAI,QACnE,EAAA,CAAA;AAEJ;AAEO,SAAS,aAA8D,GAAA;AAC5E,EAAM,MAAA,UAAA,GAAaC,iBAAW,iBAAiB,CAAA;AAC/C,EAAA,IAAI,UAAY,EAAA;AACd,IAAO,OAAA,UAAA;AAAA;AAEX;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isPlainObject.js","sources":["../../src/common-hooks/isPlainObject.ts"],"sourcesContent":["export const isPlainObject = (obj: unknown) =>\n Object.prototype.toString.call(obj) === \"[object Object]\";\n"],"names":[],"mappings":";;AAAa,MAAA,aAAA,GAAgB,CAAC,GAC5B,KAAA,MAAA,CAAO,UAAU,QAAS,CAAA,IAAA,CAAK,GAAG,CAAM,KAAA;;;;"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var isPlainObject = require('./isPlainObject.js');
|
|
4
|
-
|
|
5
|
-
function itemToString(item) {
|
|
6
|
-
if (typeof item === "string") {
|
|
7
|
-
return item;
|
|
8
|
-
} else if (!isPlainObject.isPlainObject(item)) {
|
|
9
|
-
return String(item);
|
|
10
|
-
}
|
|
11
|
-
if (Object.prototype.hasOwnProperty.call(item, "label")) {
|
|
12
|
-
return String(item.label);
|
|
13
|
-
}
|
|
14
|
-
console.warn(
|
|
15
|
-
[
|
|
16
|
-
"itemToString: you've likely forgotten to set the label prop on the item object.",
|
|
17
|
-
"You can also provide your own `itemToString` implementation."
|
|
18
|
-
].join("\n")
|
|
19
|
-
);
|
|
20
|
-
return "";
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
exports.itemToString = itemToString;
|
|
24
|
-
//# sourceMappingURL=itemToString.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"itemToString.js","sources":["../../src/common-hooks/itemToString.ts"],"sourcesContent":["import { isPlainObject } from \"./isPlainObject\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ItemToStringFunction = (item: any) => string;\n\nexport function itemToString(item: unknown): string {\n if (typeof item === \"string\") {\n return item;\n } else if (!isPlainObject(item)) {\n return String(item);\n }\n\n if (Object.prototype.hasOwnProperty.call(item, \"label\")) {\n return String((item as { label?: string }).label);\n }\n\n console.warn(\n [\n \"itemToString: you've likely forgotten to set the label prop on the item object.\",\n \"You can also provide your own `itemToString` implementation.\",\n ].join(\"\\n\")\n );\n\n return \"\";\n}\n"],"names":["isPlainObject"],"mappings":";;;;AAKO,SAAS,aAAa,IAAuB,EAAA;AAClD,EAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,IAAO,OAAA,IAAA;AAAA,GACE,MAAA,IAAA,CAACA,2BAAc,CAAA,IAAI,CAAG,EAAA;AAC/B,IAAA,OAAO,OAAO,IAAI,CAAA;AAAA;AAGpB,EAAA,IAAI,OAAO,SAAU,CAAA,cAAA,CAAe,IAAK,CAAA,IAAA,EAAM,OAAO,CAAG,EAAA;AACvD,IAAO,OAAA,MAAA,CAAQ,KAA4B,KAAK,CAAA;AAAA;AAGlD,EAAQ,OAAA,CAAA,IAAA;AAAA,IACN;AAAA,MACE,iFAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAEA,EAAO,OAAA,EAAA;AACT;;;;"}
|