@choice-ui/react 1.5.2 → 1.5.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/dist/components/combobox/dist/index.d.ts +2 -1
- package/dist/components/combobox/dist/index.js +7 -6
- package/dist/components/combobox/src/combobox.d.ts +2 -1
- package/dist/components/combobox/src/combobox.js +7 -6
- package/dist/components/context-menu/dist/index.d.ts +2 -1
- package/dist/components/context-menu/src/context-menu.d.ts +2 -1
- package/dist/components/context-menu/src/context-menu.js +8 -7
- package/dist/components/dropdown/dist/index.d.ts +2 -1
- package/dist/components/dropdown/dist/index.js +8 -7
- package/dist/components/dropdown/src/dropdown.d.ts +2 -1
- package/dist/components/dropdown/src/dropdown.js +8 -7
- package/dist/components/menus/dist/index.d.ts +6 -1
- package/dist/components/menus/dist/index.js +25 -1
- package/dist/components/menus/src/components/index.d.ts +1 -0
- package/dist/components/menus/src/components/menu-empty.d.ts +4 -0
- package/dist/components/menus/src/components/menu-empty.js +20 -0
- package/dist/components/menus/src/index.d.ts +1 -1
- package/dist/components/menus/src/tv.d.ts +25 -0
- package/dist/components/menus/src/tv.js +11 -0
- package/dist/components/multi-select/dist/index.d.ts +2 -1
- package/dist/components/multi-select/dist/index.js +13 -6
- package/dist/components/multi-select/src/multi-select.d.ts +2 -1
- package/dist/components/multi-select/src/multi-select.js +8 -4
- package/dist/components/multi-select/src/utils/extract-options.d.ts +16 -2
- package/dist/components/multi-select/src/utils/extract-options.js +6 -3
- package/dist/components/select/dist/index.d.ts +2 -1
- package/dist/components/select/dist/index.js +13 -6
- package/dist/components/select/src/select.d.ts +2 -1
- package/dist/components/select/src/select.js +13 -6
- package/dist/components/slot/dist/index.js +10 -4
- package/dist/index.js +2 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuButton, MenuContextContent, MenuDivider, MenuInput, MenuContextItem, MenuContextLabel, MenuValue } from '../../menus/src';
|
|
1
|
+
import { MenuButton, MenuContextContent, MenuDivider, MenuEmpty, MenuInput, MenuContextItem, MenuContextLabel, MenuValue } from '../../menus/src';
|
|
2
2
|
import { FloatingFocusManagerProps, Placement } from '@floating-ui/react';
|
|
3
3
|
import { default as React, HTMLProps, ReactNode } from 'react';
|
|
4
4
|
interface ComboboxTriggerProps extends Omit<HTMLProps<HTMLInputElement>, "size" | "onChange"> {
|
|
@@ -69,6 +69,7 @@ interface ComboboxComponentType extends React.ForwardRefExoticComponent<Combobox
|
|
|
69
69
|
Button: typeof MenuButton;
|
|
70
70
|
Content: typeof MenuContextContent;
|
|
71
71
|
Divider: typeof MenuDivider;
|
|
72
|
+
Empty: typeof MenuEmpty;
|
|
72
73
|
Input: typeof MenuInput;
|
|
73
74
|
Item: typeof MenuContextItem;
|
|
74
75
|
Label: typeof MenuContextLabel;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuValue,
|
|
1
|
+
import { MenuValue, MenuContextLabel, MenuContextItem, MenuInput, MenuEmpty, MenuDivider, MenuContextContent, MenuButton, useMenuBaseRefs, useMenuScrollHeight, useMenuScroll, MenuContext, MenuScrollArrow } from "../../menus/dist/index.js";
|
|
2
2
|
import { useFloatingParentNodeId, FloatingTree, useFloatingTree, useFloatingNodeId, useFloating, offset, flip, shift, size, autoUpdate, useRole, useDismiss, useListNavigation, useInteractions, FloatingNode, FloatingList, FloatingPortal, FloatingOverlay, FloatingFocusManager } from "@floating-ui/react";
|
|
3
3
|
import { memo, forwardRef, useState, useRef, useId, useEffect, useMemo, Children, isValidElement, cloneElement } from "react";
|
|
4
4
|
import { useEventCallback } from "usehooks-ts";
|
|
@@ -620,13 +620,14 @@ var BaseCombobox = memo(function Combobox(props) {
|
|
|
620
620
|
});
|
|
621
621
|
var Combobox2 = Object.assign(BaseCombobox, {
|
|
622
622
|
displayName: "Combobox",
|
|
623
|
-
Trigger: ComboboxTrigger,
|
|
624
|
-
Item: MenuContextItem,
|
|
625
|
-
Divider: MenuDivider,
|
|
626
|
-
Label: MenuContextLabel,
|
|
627
623
|
Button: MenuButton,
|
|
628
|
-
Input: MenuInput,
|
|
629
624
|
Content: MenuContextContent,
|
|
625
|
+
Divider: MenuDivider,
|
|
626
|
+
Empty: MenuEmpty,
|
|
627
|
+
Input: MenuInput,
|
|
628
|
+
Item: MenuContextItem,
|
|
629
|
+
Label: MenuContextLabel,
|
|
630
|
+
Trigger: ComboboxTrigger,
|
|
630
631
|
Value: MenuValue
|
|
631
632
|
});
|
|
632
633
|
export {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuButton, MenuContextContent, MenuContextItem, MenuContextLabel, MenuDivider, MenuInput, MenuValue } from '../../menus/src';
|
|
1
|
+
import { MenuButton, MenuContextContent, MenuContextItem, MenuContextLabel, MenuDivider, MenuEmpty, MenuInput, MenuValue } from '../../menus/src';
|
|
2
2
|
import { FloatingFocusManagerProps, Placement } from '@floating-ui/react';
|
|
3
3
|
import { default as React } from 'react';
|
|
4
4
|
import { ComboboxTrigger } from './combobox-trigger';
|
|
@@ -50,6 +50,7 @@ interface ComboboxComponentType extends React.ForwardRefExoticComponent<Combobox
|
|
|
50
50
|
Button: typeof MenuButton;
|
|
51
51
|
Content: typeof MenuContextContent;
|
|
52
52
|
Divider: typeof MenuDivider;
|
|
53
|
+
Empty: typeof MenuEmpty;
|
|
53
54
|
Input: typeof MenuInput;
|
|
54
55
|
Item: typeof MenuContextItem;
|
|
55
56
|
Label: typeof MenuContextLabel;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { MenuValue,
|
|
2
|
+
import { MenuValue, MenuContextLabel, MenuContextItem, MenuInput, MenuEmpty, MenuDivider, MenuContextContent, MenuButton, useMenuBaseRefs, useMenuScrollHeight, useMenuScroll, MenuContext, MenuScrollArrow } from "../../menus/dist/index.js";
|
|
3
3
|
import { useFloatingParentNodeId, FloatingTree, useFloatingTree, useFloatingNodeId, useFloating, offset, flip, shift, size, autoUpdate, useRole, useDismiss, useListNavigation, useInteractions, FloatingNode, FloatingList, FloatingPortal, FloatingOverlay, FloatingFocusManager } from "@floating-ui/react";
|
|
4
4
|
import { memo, useRef, useState, useId, useEffect, useMemo, Children, isValidElement, cloneElement } from "react";
|
|
5
5
|
import { useEventCallback } from "usehooks-ts";
|
|
@@ -411,13 +411,14 @@ const BaseCombobox = memo(function Combobox2(props) {
|
|
|
411
411
|
});
|
|
412
412
|
const Combobox = Object.assign(BaseCombobox, {
|
|
413
413
|
displayName: "Combobox",
|
|
414
|
-
Trigger: ComboboxTrigger,
|
|
415
|
-
Item: MenuContextItem,
|
|
416
|
-
Divider: MenuDivider,
|
|
417
|
-
Label: MenuContextLabel,
|
|
418
414
|
Button: MenuButton,
|
|
419
|
-
Input: MenuInput,
|
|
420
415
|
Content: MenuContextContent,
|
|
416
|
+
Divider: MenuDivider,
|
|
417
|
+
Empty: MenuEmpty,
|
|
418
|
+
Input: MenuInput,
|
|
419
|
+
Item: MenuContextItem,
|
|
420
|
+
Label: MenuContextLabel,
|
|
421
|
+
Trigger: ComboboxTrigger,
|
|
421
422
|
Value: MenuValue
|
|
422
423
|
});
|
|
423
424
|
export {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuButton, MenuContextContent, MenuDivider, MenuInput, MenuContextItem, MenuContextLabel, MenuSearch, MenuContextSubTrigger, MenuValue } from '../../menus/src';
|
|
1
|
+
import { MenuButton, MenuContextContent, MenuDivider, MenuEmpty, MenuInput, MenuContextItem, MenuContextLabel, MenuSearch, MenuContextSubTrigger, MenuValue } from '../../menus/src';
|
|
2
2
|
import { FloatingFocusManagerProps, Placement } from '@floating-ui/react';
|
|
3
3
|
import { default as React, HTMLProps, ReactNode } from 'react';
|
|
4
4
|
interface ContextMenuProps extends HTMLProps<HTMLDivElement> {
|
|
@@ -25,6 +25,7 @@ interface ContextMenuComponentProps extends React.ForwardRefExoticComponent<Cont
|
|
|
25
25
|
Button: typeof MenuButton;
|
|
26
26
|
Content: typeof MenuContextContent;
|
|
27
27
|
Divider: typeof MenuDivider;
|
|
28
|
+
Empty: typeof MenuEmpty;
|
|
28
29
|
Input: typeof MenuInput;
|
|
29
30
|
Item: typeof MenuContextItem;
|
|
30
31
|
Label: typeof MenuContextLabel;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuButton, MenuContextContent, MenuContextItem, MenuContextLabel, MenuContextSubTrigger, MenuDivider, MenuInput, MenuSearch, MenuValue } from '../../menus/src';
|
|
1
|
+
import { MenuButton, MenuContextContent, MenuContextItem, MenuContextLabel, MenuContextSubTrigger, MenuDivider, MenuEmpty, MenuInput, MenuSearch, MenuValue } from '../../menus/src';
|
|
2
2
|
import { FloatingFocusManagerProps, Placement } from '@floating-ui/react';
|
|
3
3
|
import { default as React, HTMLProps, ReactNode } from 'react';
|
|
4
4
|
export interface ContextMenuProps extends HTMLProps<HTMLDivElement> {
|
|
@@ -25,6 +25,7 @@ interface ContextMenuComponentProps extends React.ForwardRefExoticComponent<Cont
|
|
|
25
25
|
Button: typeof MenuButton;
|
|
26
26
|
Content: typeof MenuContextContent;
|
|
27
27
|
Divider: typeof MenuDivider;
|
|
28
|
+
Empty: typeof MenuEmpty;
|
|
28
29
|
Input: typeof MenuInput;
|
|
29
30
|
Item: typeof MenuContextItem;
|
|
30
31
|
Label: typeof MenuContextLabel;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { MenuValue,
|
|
2
|
+
import { MenuValue, MenuContextSubTrigger, MenuSearch, MenuContextLabel, MenuContextItem, MenuInput, MenuEmpty, MenuDivider, MenuContextContent, MenuButton, useMenuBaseRefs, useMenuTree, useMenuScrollHeight, useMenuScroll, MenuContext, MenuScrollArrow } from "../../menus/dist/index.js";
|
|
3
3
|
import { useFloatingParentNodeId, FloatingTree, offset, flip, shift, size, useFloating, autoUpdate, useHover, safePolygon, useClick, useRole, useDismiss, useListNavigation, useTypeahead, useInteractions, FloatingNode, FloatingList, FloatingPortal, FloatingOverlay, FloatingFocusManager } from "@floating-ui/react";
|
|
4
4
|
import React, { memo, useContext, useCallback, useRef, useState, useId, useMemo, useEffect, cloneElement } from "react";
|
|
5
5
|
import { useEventCallback } from "usehooks-ts";
|
|
@@ -382,15 +382,16 @@ const BaseContextMenu = memo(function ContextMenu2(props) {
|
|
|
382
382
|
});
|
|
383
383
|
const ContextMenu = Object.assign(BaseContextMenu, {
|
|
384
384
|
displayName: "ContextMenu",
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
SubTrigger: MenuContextSubTrigger,
|
|
385
|
+
Button: MenuButton,
|
|
386
|
+
Content: MenuContextContent,
|
|
388
387
|
Divider: MenuDivider,
|
|
388
|
+
Empty: MenuEmpty,
|
|
389
|
+
Input: MenuInput,
|
|
390
|
+
Item: MenuContextItem,
|
|
389
391
|
Label: MenuContextLabel,
|
|
390
392
|
Search: MenuSearch,
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
Content: MenuContextContent,
|
|
393
|
+
SubTrigger: MenuContextSubTrigger,
|
|
394
|
+
Trigger: ContextMenuTrigger,
|
|
394
395
|
Value: MenuValue
|
|
395
396
|
});
|
|
396
397
|
export {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuButton, MenuContextContent, MenuDivider, MenuInput, MenuContextItem, MenuContextLabel, MenuSearch, MenuContextSubTrigger, MenuTrigger, MenuValue } from '../../menus/src';
|
|
1
|
+
import { MenuButton, MenuContextContent, MenuDivider, MenuEmpty, MenuInput, MenuContextItem, MenuContextLabel, MenuSearch, MenuContextSubTrigger, MenuTrigger, MenuValue } from '../../menus/src';
|
|
2
2
|
import { FloatingFocusManagerProps, Placement } from '@floating-ui/react';
|
|
3
3
|
import { default as React } from 'react';
|
|
4
4
|
interface DropdownProps {
|
|
@@ -31,6 +31,7 @@ interface DropdownComponentType extends React.ForwardRefExoticComponent<Dropdown
|
|
|
31
31
|
Button: typeof MenuButton;
|
|
32
32
|
Content: typeof MenuContextContent;
|
|
33
33
|
Divider: typeof MenuDivider;
|
|
34
|
+
Empty: typeof MenuEmpty;
|
|
34
35
|
Input: typeof MenuInput;
|
|
35
36
|
Item: typeof MenuContextItem;
|
|
36
37
|
Label: typeof MenuContextLabel;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Slot } from "../../slot/dist/index.js";
|
|
2
|
-
import { MenuValue,
|
|
2
|
+
import { MenuValue, MenuTrigger, MenuContextSubTrigger, MenuSearch, MenuContextLabel, MenuContextItem, MenuInput, MenuEmpty, MenuDivider, MenuContextContent, MenuButton, useMenuBaseRefs, MenuContext, useMenuTree, useMenuScrollHeight, useMenuScroll, MenuScrollArrow } from "../../menus/dist/index.js";
|
|
3
3
|
import { useFloatingParentNodeId, FloatingTree, useFloating, offset, flip, shift, size, autoUpdate, useHover, safePolygon, useClick, useRole, useDismiss, useListNavigation, useTypeahead, useInteractions, FloatingNode, FloatingList, FloatingPortal, FloatingOverlay, FloatingFocusManager } from "@floating-ui/react";
|
|
4
4
|
import { memo, useState, useId, useContext, useRef, useMemo, useEffect, Children, isValidElement, cloneElement } from "react";
|
|
5
5
|
import { useEventCallback } from "usehooks-ts";
|
|
@@ -383,15 +383,16 @@ var BaseDropdown = memo(function Dropdown(props) {
|
|
|
383
383
|
});
|
|
384
384
|
var Dropdown2 = Object.assign(BaseDropdown, {
|
|
385
385
|
displayName: "Dropdown",
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
SubTrigger: MenuContextSubTrigger,
|
|
386
|
+
Button: MenuButton,
|
|
387
|
+
Content: MenuContextContent,
|
|
389
388
|
Divider: MenuDivider,
|
|
389
|
+
Empty: MenuEmpty,
|
|
390
|
+
Input: MenuInput,
|
|
391
|
+
Item: MenuContextItem,
|
|
390
392
|
Label: MenuContextLabel,
|
|
391
393
|
Search: MenuSearch,
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
Content: MenuContextContent,
|
|
394
|
+
SubTrigger: MenuContextSubTrigger,
|
|
395
|
+
Trigger: MenuTrigger,
|
|
395
396
|
Value: MenuValue
|
|
396
397
|
});
|
|
397
398
|
export {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuButton, MenuContextContent, MenuContextItem, MenuContextLabel, MenuContextSubTrigger, MenuDivider, MenuInput, MenuSearch, MenuTrigger, MenuValue } from '../../menus/src';
|
|
1
|
+
import { MenuButton, MenuContextContent, MenuContextItem, MenuContextLabel, MenuContextSubTrigger, MenuDivider, MenuEmpty, MenuInput, MenuSearch, MenuTrigger, MenuValue } from '../../menus/src';
|
|
2
2
|
import { FloatingFocusManagerProps, Placement } from '@floating-ui/react';
|
|
3
3
|
import { default as React } from 'react';
|
|
4
4
|
export interface DropdownProps {
|
|
@@ -31,6 +31,7 @@ interface DropdownComponentType extends React.ForwardRefExoticComponent<Dropdown
|
|
|
31
31
|
Button: typeof MenuButton;
|
|
32
32
|
Content: typeof MenuContextContent;
|
|
33
33
|
Divider: typeof MenuDivider;
|
|
34
|
+
Empty: typeof MenuEmpty;
|
|
34
35
|
Input: typeof MenuInput;
|
|
35
36
|
Item: typeof MenuContextItem;
|
|
36
37
|
Label: typeof MenuContextLabel;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Slot } from "../../slot/dist/index.js";
|
|
3
|
-
import { MenuValue,
|
|
3
|
+
import { MenuValue, MenuTrigger, MenuContextSubTrigger, MenuSearch, MenuContextLabel, MenuContextItem, MenuInput, MenuEmpty, MenuDivider, MenuContextContent, MenuButton, useMenuBaseRefs, MenuContext, useMenuTree, useMenuScrollHeight, useMenuScroll, MenuScrollArrow } from "../../menus/dist/index.js";
|
|
4
4
|
import { useFloatingParentNodeId, FloatingTree, useFloating, offset, flip, shift, size, autoUpdate, useHover, safePolygon, useClick, useRole, useDismiss, useListNavigation, useTypeahead, useInteractions, FloatingNode, FloatingList, FloatingPortal, FloatingOverlay, FloatingFocusManager } from "@floating-ui/react";
|
|
5
5
|
import { memo, useState, useId, useContext, useRef, useMemo, useEffect, Children, isValidElement, cloneElement } from "react";
|
|
6
6
|
import { useEventCallback } from "usehooks-ts";
|
|
@@ -383,15 +383,16 @@ const BaseDropdown = memo(function Dropdown2(props) {
|
|
|
383
383
|
});
|
|
384
384
|
const Dropdown = Object.assign(BaseDropdown, {
|
|
385
385
|
displayName: "Dropdown",
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
SubTrigger: MenuContextSubTrigger,
|
|
386
|
+
Button: MenuButton,
|
|
387
|
+
Content: MenuContextContent,
|
|
389
388
|
Divider: MenuDivider,
|
|
389
|
+
Empty: MenuEmpty,
|
|
390
|
+
Input: MenuInput,
|
|
391
|
+
Item: MenuContextItem,
|
|
390
392
|
Label: MenuContextLabel,
|
|
391
393
|
Search: MenuSearch,
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
Content: MenuContextContent,
|
|
394
|
+
SubTrigger: MenuContextSubTrigger,
|
|
395
|
+
Trigger: MenuTrigger,
|
|
395
396
|
Value: MenuValue
|
|
396
397
|
});
|
|
397
398
|
export {
|
|
@@ -19,6 +19,11 @@ declare const MenuCheckbox: react.NamedExoticComponent<MenuCheckboxProps>;
|
|
|
19
19
|
|
|
20
20
|
declare const MenuDivider: react.ForwardRefExoticComponent<Omit<HTMLProps<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
|
|
21
21
|
|
|
22
|
+
interface MenuEmptyProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
23
|
+
children?: React.ReactNode;
|
|
24
|
+
}
|
|
25
|
+
declare const MenuEmpty: react.NamedExoticComponent<MenuEmptyProps>;
|
|
26
|
+
|
|
22
27
|
interface MenuItemProps extends React.HTMLAttributes<HTMLButtonElement> {
|
|
23
28
|
active?: boolean;
|
|
24
29
|
children?: ReactNode;
|
|
@@ -480,4 +485,4 @@ declare const MenuContextLabel: react.NamedExoticComponent<MenuLabelProps>;
|
|
|
480
485
|
|
|
481
486
|
declare const MenuContextSubTrigger: react.MemoExoticComponent<react.ForwardRefExoticComponent<MenuItemProps & react.RefAttributes<HTMLButtonElement>>>;
|
|
482
487
|
|
|
483
|
-
export { MenuButton, MenuCheckbox, type MenuCheckboxProps, MenuContext, MenuContextContent, MenuContextItem, type MenuContextItemProps, MenuContextLabel, MenuContextSubTrigger, type MenuContextType, MenuDivider, MenuInput, MenuItem, type MenuItemProps, MenuLabel, type MenuLabelProps, MenuScrollArrow, type MenuScrollArrowProps, MenuSearch, MenuSearchEmpty, MenuTrigger, type MenuTriggerProps, MenuValue, Menus, type MenusProps, useMenuBaseRefs, useMenuChildren, useMenuFloating, useMenuRefs, useMenuScroll, useMenuScrollHeight, useMenuSelection, useMenuState, useMenuTree };
|
|
488
|
+
export { MenuButton, MenuCheckbox, type MenuCheckboxProps, MenuContext, MenuContextContent, MenuContextItem, type MenuContextItemProps, MenuContextLabel, MenuContextSubTrigger, type MenuContextType, MenuDivider, MenuEmpty, MenuInput, MenuItem, type MenuItemProps, MenuLabel, type MenuLabelProps, MenuScrollArrow, type MenuScrollArrowProps, MenuSearch, MenuSearchEmpty, MenuTrigger, type MenuTriggerProps, MenuValue, Menus, type MenusProps, useMenuBaseRefs, useMenuChildren, useMenuFloating, useMenuRefs, useMenuScroll, useMenuScrollHeight, useMenuSelection, useMenuState, useMenuTree };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Button } from "../../button/dist/index.js";
|
|
2
|
-
import React, { forwardRef, memo,
|
|
2
|
+
import React, { forwardRef, memo, useContext, createContext, useMemo, startTransition, useCallback, useRef, Children, isValidElement, Fragment as Fragment$1, useState, useEffect } from "react";
|
|
3
3
|
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { Check, ChevronRightSmall, ChevronDownSmall, ChevronUpSmall } from "@choiceform/icons-react";
|
|
5
5
|
import { Kbd } from "../../kbd/dist/index.js";
|
|
@@ -192,6 +192,16 @@ var MenuSearchEmptyTv = tcv({
|
|
|
192
192
|
text: "text-white/50"
|
|
193
193
|
}
|
|
194
194
|
});
|
|
195
|
+
var MenuEmptyTv = tcv({
|
|
196
|
+
slots: {
|
|
197
|
+
root: [
|
|
198
|
+
"flex items-center justify-center py-3 px-2",
|
|
199
|
+
"text-body-medium text-secondary-foreground",
|
|
200
|
+
"group-data-[variant=light]/menus:text-gray-500",
|
|
201
|
+
"group-data-[variant=default]/menus:text-white/50"
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
});
|
|
195
205
|
var MenuLabelTv = tcv({
|
|
196
206
|
base: "flex h-6 w-full flex-none items-center gap-2 opacity-50",
|
|
197
207
|
variants: {
|
|
@@ -322,6 +332,19 @@ var MenuDivider = forwardRef((props, ref) => {
|
|
|
322
332
|
);
|
|
323
333
|
});
|
|
324
334
|
MenuDivider.displayName = "MenuDivider";
|
|
335
|
+
var MenuEmpty = memo(function MenuEmpty2(props) {
|
|
336
|
+
const { children, className, ...rest } = props;
|
|
337
|
+
const tv = MenuEmptyTv();
|
|
338
|
+
return /* @__PURE__ */ jsx(
|
|
339
|
+
"div",
|
|
340
|
+
{
|
|
341
|
+
...rest,
|
|
342
|
+
className: tcx(tv.root(), className),
|
|
343
|
+
children
|
|
344
|
+
}
|
|
345
|
+
);
|
|
346
|
+
});
|
|
347
|
+
MenuEmpty.displayName = "MenuEmpty";
|
|
325
348
|
var MenuItem = memo(
|
|
326
349
|
forwardRef((props, ref) => {
|
|
327
350
|
const {
|
|
@@ -1125,6 +1148,7 @@ export {
|
|
|
1125
1148
|
MenuContextLabel,
|
|
1126
1149
|
MenuContextSubTrigger,
|
|
1127
1150
|
MenuDivider,
|
|
1151
|
+
MenuEmpty,
|
|
1128
1152
|
MenuInput,
|
|
1129
1153
|
MenuItem,
|
|
1130
1154
|
MenuLabel,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from "react";
|
|
3
|
+
import { MenuEmptyTv } from "../tv.js";
|
|
4
|
+
import { tcx } from "../../../../shared/utils/tcx/tcx.js";
|
|
5
|
+
const MenuEmpty = memo(function MenuEmpty2(props) {
|
|
6
|
+
const { children, className, ...rest } = props;
|
|
7
|
+
const tv = MenuEmptyTv();
|
|
8
|
+
return /* @__PURE__ */ jsx(
|
|
9
|
+
"div",
|
|
10
|
+
{
|
|
11
|
+
...rest,
|
|
12
|
+
className: tcx(tv.root(), className),
|
|
13
|
+
children
|
|
14
|
+
}
|
|
15
|
+
);
|
|
16
|
+
});
|
|
17
|
+
MenuEmpty.displayName = "MenuEmpty";
|
|
18
|
+
export {
|
|
19
|
+
MenuEmpty
|
|
20
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { MenuButton, MenuCheckbox, MenuDivider, MenuInput, MenuItem, MenuLabel, MenuSearch, MenuSearchEmpty, MenuValue, MenuTrigger, MenuScrollArrow, } from './components';
|
|
1
|
+
export { MenuButton, MenuCheckbox, MenuDivider, MenuEmpty, MenuInput, MenuItem, MenuLabel, MenuSearch, MenuSearchEmpty, MenuValue, MenuTrigger, MenuScrollArrow, } from './components';
|
|
2
2
|
export { Menus } from './menus';
|
|
3
3
|
export { useMenuBaseRefs, useMenuChildren, useMenuFloating, useMenuRefs, useMenuScroll, useMenuScrollHeight, useMenuSelection, useMenuState, useMenuTree, } from './hooks';
|
|
4
4
|
export { MenuContext, MenuContextSubTrigger, MenuContextContent, MenuContextItem, MenuContextLabel, } from './context';
|
|
@@ -339,6 +339,31 @@ export declare const MenuSearchEmptyTv: import('tailwind-variants').TVReturnType
|
|
|
339
339
|
root: string;
|
|
340
340
|
text: string;
|
|
341
341
|
}, undefined, unknown, unknown, undefined>>;
|
|
342
|
+
export declare const MenuEmptyTv: import('tailwind-variants').TVReturnType<{
|
|
343
|
+
[key: string]: {
|
|
344
|
+
[key: string]: import('tailwind-merge').ClassNameValue | {
|
|
345
|
+
root?: import('tailwind-merge').ClassNameValue;
|
|
346
|
+
};
|
|
347
|
+
};
|
|
348
|
+
} | {
|
|
349
|
+
[x: string]: {
|
|
350
|
+
[x: string]: import('tailwind-merge').ClassNameValue | {
|
|
351
|
+
root?: import('tailwind-merge').ClassNameValue;
|
|
352
|
+
};
|
|
353
|
+
};
|
|
354
|
+
} | {}, {
|
|
355
|
+
root: string[];
|
|
356
|
+
}, undefined, {
|
|
357
|
+
[key: string]: {
|
|
358
|
+
[key: string]: import('tailwind-merge').ClassNameValue | {
|
|
359
|
+
root?: import('tailwind-merge').ClassNameValue;
|
|
360
|
+
};
|
|
361
|
+
};
|
|
362
|
+
} | {}, {
|
|
363
|
+
root: string[];
|
|
364
|
+
}, import('tailwind-variants').TVReturnType<unknown, {
|
|
365
|
+
root: string[];
|
|
366
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
342
367
|
export declare const MenuLabelTv: import('tailwind-variants').TVReturnType<{
|
|
343
368
|
selection: {
|
|
344
369
|
true: string;
|
|
@@ -180,6 +180,16 @@ const MenuSearchEmptyTv = tcv({
|
|
|
180
180
|
text: "text-white/50"
|
|
181
181
|
}
|
|
182
182
|
});
|
|
183
|
+
const MenuEmptyTv = tcv({
|
|
184
|
+
slots: {
|
|
185
|
+
root: [
|
|
186
|
+
"flex items-center justify-center py-3 px-2",
|
|
187
|
+
"text-body-medium text-secondary-foreground",
|
|
188
|
+
"group-data-[variant=light]/menus:text-gray-500",
|
|
189
|
+
"group-data-[variant=default]/menus:text-white/50"
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
});
|
|
183
193
|
const MenuLabelTv = tcv({
|
|
184
194
|
base: "flex h-6 w-full flex-none items-center gap-2 opacity-50",
|
|
185
195
|
variants: {
|
|
@@ -278,6 +288,7 @@ export {
|
|
|
278
288
|
MenuButtonTv,
|
|
279
289
|
MenuCheckboxTv,
|
|
280
290
|
MenuDividerTv,
|
|
291
|
+
MenuEmptyTv,
|
|
281
292
|
MenuItemTv,
|
|
282
293
|
MenuLabelTv,
|
|
283
294
|
MenuScrollArrowTv,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChipProps } from '../../chip/src';
|
|
2
|
-
import { MenuContextContent, MenuDivider, MenuContextItem, MenuContextLabel, MenuValue } from '../../menus/src';
|
|
2
|
+
import { MenuContextContent, MenuDivider, MenuEmpty, MenuContextItem, MenuContextLabel, MenuValue } from '../../menus/src';
|
|
3
3
|
import { FloatingFocusManagerProps, Placement } from '@floating-ui/react';
|
|
4
4
|
import { default as React__default, HTMLProps, ReactNode } from 'react';
|
|
5
5
|
import * as React$1 from 'react';
|
|
@@ -67,6 +67,7 @@ interface MultiSelectProps {
|
|
|
67
67
|
interface MultiSelectComponentType extends React__default.ForwardRefExoticComponent<MultiSelectProps & React__default.RefAttributes<HTMLDivElement>> {
|
|
68
68
|
Content: typeof MenuContextContent;
|
|
69
69
|
Divider: typeof MenuDivider;
|
|
70
|
+
Empty: typeof MenuEmpty;
|
|
70
71
|
Item: typeof MenuContextItem;
|
|
71
72
|
Label: typeof MenuContextLabel;
|
|
72
73
|
Trigger: typeof MultiSelectTrigger;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Slot } from "../../slot/dist/index.js";
|
|
2
|
-
import { MenuValue,
|
|
2
|
+
import { MenuValue, MenuContextLabel, MenuContextItem, MenuEmpty, MenuDivider, MenuContextContent, useMenuBaseRefs, useMenuScroll, useMenuScrollHeight, MenuContext, MenuScrollArrow } from "../../menus/dist/index.js";
|
|
3
3
|
import { useFloatingParentNodeId, FloatingTree, useFloatingNodeId, useFloatingTree, offset, flip, shift, size, useFloating, autoUpdate, useClick, useDismiss, useRole, useListNavigation, useTypeahead, useInteractions, FloatingNode, FloatingPortal, FloatingOverlay, FloatingFocusManager, FloatingList } from "@floating-ui/react";
|
|
4
4
|
import React, { memo, forwardRef, useRef, useCallback, useMemo, Children, isValidElement, useId, useEffect, useState, cloneElement } from "react";
|
|
5
5
|
import { useEventCallback } from "usehooks-ts";
|
|
@@ -354,7 +354,7 @@ function extractItemElements(children) {
|
|
|
354
354
|
const result = [];
|
|
355
355
|
children2.forEach((child) => {
|
|
356
356
|
if (!isValidElement(child)) return;
|
|
357
|
-
if (child.type === MenuContextItem || child.type === MenuDivider || child.type === MenuContextLabel) {
|
|
357
|
+
if (child.type === MenuContextItem || child.type === MenuDivider || child.type === MenuContextLabel || child.type === MenuEmpty) {
|
|
358
358
|
result.push(child);
|
|
359
359
|
} else if (child.type === React.Fragment && child.props.children) {
|
|
360
360
|
const fragmentChildren = Children.toArray(child.props.children);
|
|
@@ -375,6 +375,9 @@ function processOptions(itemElements) {
|
|
|
375
375
|
if (child.type === MenuContextLabel) {
|
|
376
376
|
return { label: true, children: child.props.children };
|
|
377
377
|
}
|
|
378
|
+
if (child.type === MenuEmpty) {
|
|
379
|
+
return { empty: true, children: child.props.children, element: child };
|
|
380
|
+
}
|
|
378
381
|
const {
|
|
379
382
|
value: itemValue,
|
|
380
383
|
children: itemChildren,
|
|
@@ -390,7 +393,7 @@ function processOptions(itemElements) {
|
|
|
390
393
|
});
|
|
391
394
|
}
|
|
392
395
|
function filterSelectableOptions(options) {
|
|
393
|
-
return options.filter((option) => !option.divider && !option.label);
|
|
396
|
+
return options.filter((option) => !option.divider && !option.label && !option.empty);
|
|
394
397
|
}
|
|
395
398
|
var PORTAL_ROOT_ID = "floating-menu-root";
|
|
396
399
|
var MultiSelectComponent = memo(
|
|
@@ -654,6 +657,9 @@ var MultiSelectComponent = memo(
|
|
|
654
657
|
if (option.label) {
|
|
655
658
|
return /* @__PURE__ */ jsx(MenuContextLabel, { children: option.children }, `label-${index}`);
|
|
656
659
|
}
|
|
660
|
+
if (option.empty) {
|
|
661
|
+
return /* @__PURE__ */ jsx(MenuEmpty, { children: option.children }, `empty-${index}`);
|
|
662
|
+
}
|
|
657
663
|
const currentSelectableIndex = selectableIndex;
|
|
658
664
|
selectableIndex++;
|
|
659
665
|
const isSelected = values.includes(option.value || "");
|
|
@@ -844,11 +850,12 @@ var BaseMultiSelect = memo(function MultiSelect(props) {
|
|
|
844
850
|
return /* @__PURE__ */ jsx(MultiSelectComponent, { ...props, children });
|
|
845
851
|
});
|
|
846
852
|
var MultiSelect2 = Object.assign(BaseMultiSelect, {
|
|
847
|
-
|
|
848
|
-
Trigger: MultiSelectTrigger,
|
|
853
|
+
Content: MenuContextContent,
|
|
849
854
|
Divider: MenuDivider,
|
|
855
|
+
Empty: MenuEmpty,
|
|
856
|
+
Item: MenuContextItem,
|
|
850
857
|
Label: MenuContextLabel,
|
|
851
|
-
|
|
858
|
+
Trigger: MultiSelectTrigger,
|
|
852
859
|
Value: MenuValue
|
|
853
860
|
});
|
|
854
861
|
MultiSelect2.displayName = "MultiSelect";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChipProps } from '../../chip/src';
|
|
2
|
-
import { MenuContextContent, MenuContextItem, MenuContextLabel, MenuDivider, MenuValue } from '../../menus/src';
|
|
2
|
+
import { MenuContextContent, MenuContextItem, MenuContextLabel, MenuDivider, MenuEmpty, MenuValue } from '../../menus/src';
|
|
3
3
|
import { FloatingFocusManagerProps, Placement } from '@floating-ui/react';
|
|
4
4
|
import { default as React } from 'react';
|
|
5
5
|
import { MultiSelectTrigger } from './components';
|
|
@@ -42,6 +42,7 @@ export interface MultiSelectProps {
|
|
|
42
42
|
interface MultiSelectComponentType extends React.ForwardRefExoticComponent<MultiSelectProps & React.RefAttributes<HTMLDivElement>> {
|
|
43
43
|
Content: typeof MenuContextContent;
|
|
44
44
|
Divider: typeof MenuDivider;
|
|
45
|
+
Empty: typeof MenuEmpty;
|
|
45
46
|
Item: typeof MenuContextItem;
|
|
46
47
|
Label: typeof MenuContextLabel;
|
|
47
48
|
Trigger: typeof MultiSelectTrigger;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Slot } from "../../slot/dist/index.js";
|
|
3
|
-
import { MenuValue,
|
|
3
|
+
import { MenuValue, MenuContextLabel, MenuContextItem, MenuEmpty, MenuDivider, MenuContextContent, useMenuBaseRefs, useMenuScroll, useMenuScrollHeight, MenuContext, MenuScrollArrow } from "../../menus/dist/index.js";
|
|
4
4
|
import { useFloatingParentNodeId, FloatingTree, useFloatingNodeId, useFloatingTree, offset, flip, shift, size, useFloating, autoUpdate, useClick, useDismiss, useRole, useListNavigation, useTypeahead, useInteractions, FloatingNode, FloatingPortal, FloatingOverlay, FloatingFocusManager, FloatingList } from "@floating-ui/react";
|
|
5
5
|
import { memo, forwardRef, useMemo, Children, isValidElement, useRef, useId, useEffect, useState, cloneElement } from "react";
|
|
6
6
|
import { useEventCallback } from "usehooks-ts";
|
|
@@ -272,6 +272,9 @@ const MultiSelectComponent = memo(
|
|
|
272
272
|
if (option.label) {
|
|
273
273
|
return /* @__PURE__ */ jsx(MenuContextLabel, { children: option.children }, `label-${index}`);
|
|
274
274
|
}
|
|
275
|
+
if (option.empty) {
|
|
276
|
+
return /* @__PURE__ */ jsx(MenuEmpty, { children: option.children }, `empty-${index}`);
|
|
277
|
+
}
|
|
275
278
|
const currentSelectableIndex = selectableIndex;
|
|
276
279
|
selectableIndex++;
|
|
277
280
|
const isSelected = values.includes(option.value || "");
|
|
@@ -462,11 +465,12 @@ const BaseMultiSelect = memo(function MultiSelect2(props) {
|
|
|
462
465
|
return /* @__PURE__ */ jsx(MultiSelectComponent, { ...props, children });
|
|
463
466
|
});
|
|
464
467
|
const MultiSelect = Object.assign(BaseMultiSelect, {
|
|
465
|
-
|
|
466
|
-
Trigger: MultiSelectTrigger,
|
|
468
|
+
Content: MenuContextContent,
|
|
467
469
|
Divider: MenuDivider,
|
|
470
|
+
Empty: MenuEmpty,
|
|
471
|
+
Item: MenuContextItem,
|
|
468
472
|
Label: MenuContextLabel,
|
|
469
|
-
|
|
473
|
+
Trigger: MultiSelectTrigger,
|
|
470
474
|
Value: MenuValue
|
|
471
475
|
});
|
|
472
476
|
MultiSelect.displayName = "MultiSelect";
|
|
@@ -4,18 +4,29 @@ export declare function processOptions(itemElements: React.ReactNode[]): ({
|
|
|
4
4
|
divider: boolean;
|
|
5
5
|
label?: undefined;
|
|
6
6
|
children?: undefined;
|
|
7
|
+
empty?: undefined;
|
|
8
|
+
element?: undefined;
|
|
7
9
|
value?: undefined;
|
|
8
10
|
disabled?: undefined;
|
|
9
11
|
_originalIndex?: undefined;
|
|
10
|
-
element?: undefined;
|
|
11
12
|
} | {
|
|
12
13
|
label: boolean;
|
|
13
14
|
children: any;
|
|
14
15
|
divider?: undefined;
|
|
16
|
+
empty?: undefined;
|
|
17
|
+
element?: undefined;
|
|
18
|
+
value?: undefined;
|
|
19
|
+
disabled?: undefined;
|
|
20
|
+
_originalIndex?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
empty: boolean;
|
|
23
|
+
children: any;
|
|
24
|
+
element: React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
25
|
+
divider?: undefined;
|
|
26
|
+
label?: undefined;
|
|
15
27
|
value?: undefined;
|
|
16
28
|
disabled?: undefined;
|
|
17
29
|
_originalIndex?: undefined;
|
|
18
|
-
element?: undefined;
|
|
19
30
|
} | {
|
|
20
31
|
value: string | undefined;
|
|
21
32
|
disabled: boolean | undefined;
|
|
@@ -24,17 +35,20 @@ export declare function processOptions(itemElements: React.ReactNode[]): ({
|
|
|
24
35
|
children: React.ReactNode;
|
|
25
36
|
divider?: undefined;
|
|
26
37
|
label?: undefined;
|
|
38
|
+
empty?: undefined;
|
|
27
39
|
})[];
|
|
28
40
|
export declare function filterSelectableOptions(options: Array<{
|
|
29
41
|
disabled?: boolean;
|
|
30
42
|
divider?: boolean;
|
|
31
43
|
element?: React.ReactElement;
|
|
44
|
+
empty?: boolean;
|
|
32
45
|
label?: boolean;
|
|
33
46
|
value?: string;
|
|
34
47
|
}>): {
|
|
35
48
|
disabled?: boolean;
|
|
36
49
|
divider?: boolean;
|
|
37
50
|
element?: React.ReactElement;
|
|
51
|
+
empty?: boolean;
|
|
38
52
|
label?: boolean;
|
|
39
53
|
value?: string;
|
|
40
54
|
}[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuDivider, MenuContextLabel, MenuContextItem } from "../../../menus/dist/index.js";
|
|
1
|
+
import { MenuDivider, MenuContextLabel, MenuEmpty, MenuContextItem } from "../../../menus/dist/index.js";
|
|
2
2
|
import React, { Children, isValidElement } from "react";
|
|
3
3
|
function extractItemElements(children) {
|
|
4
4
|
if (!children) return [];
|
|
@@ -7,7 +7,7 @@ function extractItemElements(children) {
|
|
|
7
7
|
const result = [];
|
|
8
8
|
children2.forEach((child) => {
|
|
9
9
|
if (!isValidElement(child)) return;
|
|
10
|
-
if (child.type === MenuContextItem || child.type === MenuDivider || child.type === MenuContextLabel) {
|
|
10
|
+
if (child.type === MenuContextItem || child.type === MenuDivider || child.type === MenuContextLabel || child.type === MenuEmpty) {
|
|
11
11
|
result.push(child);
|
|
12
12
|
} else if (child.type === React.Fragment && child.props.children) {
|
|
13
13
|
const fragmentChildren = Children.toArray(child.props.children);
|
|
@@ -28,6 +28,9 @@ function processOptions(itemElements) {
|
|
|
28
28
|
if (child.type === MenuContextLabel) {
|
|
29
29
|
return { label: true, children: child.props.children };
|
|
30
30
|
}
|
|
31
|
+
if (child.type === MenuEmpty) {
|
|
32
|
+
return { empty: true, children: child.props.children, element: child };
|
|
33
|
+
}
|
|
31
34
|
const {
|
|
32
35
|
value: itemValue,
|
|
33
36
|
children: itemChildren,
|
|
@@ -43,7 +46,7 @@ function processOptions(itemElements) {
|
|
|
43
46
|
});
|
|
44
47
|
}
|
|
45
48
|
function filterSelectableOptions(options) {
|
|
46
|
-
return options.filter((option) => !option.divider && !option.label);
|
|
49
|
+
return options.filter((option) => !option.divider && !option.label && !option.empty);
|
|
47
50
|
}
|
|
48
51
|
export {
|
|
49
52
|
extractItemElements,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuContextContent, MenuDivider, MenuContextItem, MenuContextLabel, MenuTrigger, MenuValue } from '../../menus/src';
|
|
1
|
+
import { MenuContextContent, MenuDivider, MenuEmpty, MenuContextItem, MenuContextLabel, MenuTrigger, MenuValue } from '../../menus/src';
|
|
2
2
|
import { FloatingFocusManagerProps } from '@floating-ui/react';
|
|
3
3
|
import { default as React } from 'react';
|
|
4
4
|
interface SelectProps {
|
|
@@ -22,6 +22,7 @@ interface SelectProps {
|
|
|
22
22
|
interface SelectComponentType extends React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>> {
|
|
23
23
|
Content: typeof MenuContextContent;
|
|
24
24
|
Divider: typeof MenuDivider;
|
|
25
|
+
Empty: typeof MenuEmpty;
|
|
25
26
|
Item: typeof MenuContextItem;
|
|
26
27
|
Label: typeof MenuContextLabel;
|
|
27
28
|
Trigger: typeof MenuTrigger;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Slot } from "../../slot/dist/index.js";
|
|
2
|
-
import { MenuValue,
|
|
2
|
+
import { MenuValue, MenuTrigger, MenuContextLabel, MenuContextItem, MenuEmpty, MenuDivider, MenuContextContent, useMenuScroll, MenuContext, MenuScrollArrow } from "../../menus/dist/index.js";
|
|
3
3
|
import { useFloatingParentNodeId, FloatingTree, useFloatingNodeId, useFloating, offset, shift, flip, size, inner, autoUpdate, useClick, useDismiss, useRole, useInnerOffset, useListNavigation, useTypeahead, useInteractions, FloatingNode, FloatingPortal, FloatingOverlay, FloatingFocusManager, FloatingList } from "@floating-ui/react";
|
|
4
4
|
import React, { memo, useMemo, Children, isValidElement, useRef, useState, useId, useEffect, cloneElement } from "react";
|
|
5
5
|
import { useEventCallback } from "usehooks-ts";
|
|
@@ -45,7 +45,7 @@ var SelectComponent = memo(function SelectComponent2(props) {
|
|
|
45
45
|
const result = [];
|
|
46
46
|
children2.forEach((child) => {
|
|
47
47
|
if (!isValidElement(child)) return;
|
|
48
|
-
if (child.type === MenuContextItem || child.type === MenuDivider || child.type === MenuContextLabel) {
|
|
48
|
+
if (child.type === MenuContextItem || child.type === MenuDivider || child.type === MenuContextLabel || child.type === MenuEmpty) {
|
|
49
49
|
result.push(child);
|
|
50
50
|
} else if (child.type === React.Fragment && child.props.children) {
|
|
51
51
|
const fragmentChildren = Children.toArray(child.props.children);
|
|
@@ -67,6 +67,9 @@ var SelectComponent = memo(function SelectComponent2(props) {
|
|
|
67
67
|
if (child.type === MenuContextLabel) {
|
|
68
68
|
return { label: true, children: child.props.children };
|
|
69
69
|
}
|
|
70
|
+
if (child.type === MenuEmpty) {
|
|
71
|
+
return { empty: true, children: child.props.children, element: child };
|
|
72
|
+
}
|
|
70
73
|
const {
|
|
71
74
|
value: itemValue,
|
|
72
75
|
children: itemChildren,
|
|
@@ -82,7 +85,7 @@ var SelectComponent = memo(function SelectComponent2(props) {
|
|
|
82
85
|
});
|
|
83
86
|
}, [itemElements]);
|
|
84
87
|
const selectableOptions = useMemo(() => {
|
|
85
|
-
return options.filter((option) => !option.divider && !option.label);
|
|
88
|
+
return options.filter((option) => !option.divider && !option.label && !option.empty);
|
|
86
89
|
}, [options]);
|
|
87
90
|
const listRef = useRef([]);
|
|
88
91
|
const listContentRef = useRef([]);
|
|
@@ -287,6 +290,9 @@ var SelectComponent = memo(function SelectComponent2(props) {
|
|
|
287
290
|
if (option.label) {
|
|
288
291
|
return /* @__PURE__ */ jsx(MenuContextLabel, { children: option.children }, `label-${index}`);
|
|
289
292
|
}
|
|
293
|
+
if (option.empty) {
|
|
294
|
+
return /* @__PURE__ */ jsx(MenuEmpty, { children: option.children }, `empty-${index}`);
|
|
295
|
+
}
|
|
290
296
|
const currentSelectableIndex = selectableIndex;
|
|
291
297
|
selectableIndex++;
|
|
292
298
|
const isSelected = currentSelectedIndex === currentSelectableIndex;
|
|
@@ -467,11 +473,12 @@ var BaseSelect = memo(function Select(props) {
|
|
|
467
473
|
return /* @__PURE__ */ jsx(SelectComponent, { ...props, children });
|
|
468
474
|
});
|
|
469
475
|
var Select2 = Object.assign(BaseSelect, {
|
|
470
|
-
|
|
471
|
-
Trigger: MenuTrigger,
|
|
476
|
+
Content: MenuContextContent,
|
|
472
477
|
Divider: MenuDivider,
|
|
478
|
+
Empty: MenuEmpty,
|
|
479
|
+
Item: MenuContextItem,
|
|
473
480
|
Label: MenuContextLabel,
|
|
474
|
-
|
|
481
|
+
Trigger: MenuTrigger,
|
|
475
482
|
Value: MenuValue
|
|
476
483
|
});
|
|
477
484
|
Select2.displayName = "Select";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MenuContextContent, MenuContextItem, MenuContextLabel, MenuDivider, MenuTrigger, MenuValue } from '../../menus/src';
|
|
1
|
+
import { MenuContextContent, MenuContextItem, MenuContextLabel, MenuDivider, MenuEmpty, MenuTrigger, MenuValue } from '../../menus/src';
|
|
2
2
|
import { FloatingFocusManagerProps } from '@floating-ui/react';
|
|
3
3
|
import { default as React } from 'react';
|
|
4
4
|
export interface SelectProps {
|
|
@@ -22,6 +22,7 @@ export interface SelectProps {
|
|
|
22
22
|
interface SelectComponentType extends React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>> {
|
|
23
23
|
Content: typeof MenuContextContent;
|
|
24
24
|
Divider: typeof MenuDivider;
|
|
25
|
+
Empty: typeof MenuEmpty;
|
|
25
26
|
Item: typeof MenuContextItem;
|
|
26
27
|
Label: typeof MenuContextLabel;
|
|
27
28
|
Trigger: typeof MenuTrigger;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Slot } from "../../slot/dist/index.js";
|
|
3
|
-
import { MenuValue,
|
|
3
|
+
import { MenuValue, MenuTrigger, MenuContextLabel, MenuContextItem, MenuEmpty, MenuDivider, MenuContextContent, useMenuScroll, MenuContext, MenuScrollArrow } from "../../menus/dist/index.js";
|
|
4
4
|
import { useFloatingParentNodeId, FloatingTree, useFloatingNodeId, useFloating, offset, shift, flip, size, inner, autoUpdate, useClick, useDismiss, useRole, useInnerOffset, useListNavigation, useTypeahead, useInteractions, FloatingNode, FloatingPortal, FloatingOverlay, FloatingFocusManager, FloatingList } from "@floating-ui/react";
|
|
5
5
|
import React, { memo, useMemo, Children, isValidElement, useRef, useState, useId, useEffect, cloneElement } from "react";
|
|
6
6
|
import { useEventCallback } from "usehooks-ts";
|
|
@@ -45,7 +45,7 @@ const SelectComponent = memo(function SelectComponent2(props) {
|
|
|
45
45
|
const result = [];
|
|
46
46
|
children2.forEach((child) => {
|
|
47
47
|
if (!isValidElement(child)) return;
|
|
48
|
-
if (child.type === MenuContextItem || child.type === MenuDivider || child.type === MenuContextLabel) {
|
|
48
|
+
if (child.type === MenuContextItem || child.type === MenuDivider || child.type === MenuContextLabel || child.type === MenuEmpty) {
|
|
49
49
|
result.push(child);
|
|
50
50
|
} else if (child.type === React.Fragment && child.props.children) {
|
|
51
51
|
const fragmentChildren = Children.toArray(child.props.children);
|
|
@@ -67,6 +67,9 @@ const SelectComponent = memo(function SelectComponent2(props) {
|
|
|
67
67
|
if (child.type === MenuContextLabel) {
|
|
68
68
|
return { label: true, children: child.props.children };
|
|
69
69
|
}
|
|
70
|
+
if (child.type === MenuEmpty) {
|
|
71
|
+
return { empty: true, children: child.props.children, element: child };
|
|
72
|
+
}
|
|
70
73
|
const {
|
|
71
74
|
value: itemValue,
|
|
72
75
|
children: itemChildren,
|
|
@@ -82,7 +85,7 @@ const SelectComponent = memo(function SelectComponent2(props) {
|
|
|
82
85
|
});
|
|
83
86
|
}, [itemElements]);
|
|
84
87
|
const selectableOptions = useMemo(() => {
|
|
85
|
-
return options.filter((option) => !option.divider && !option.label);
|
|
88
|
+
return options.filter((option) => !option.divider && !option.label && !option.empty);
|
|
86
89
|
}, [options]);
|
|
87
90
|
const listRef = useRef([]);
|
|
88
91
|
const listContentRef = useRef([]);
|
|
@@ -287,6 +290,9 @@ const SelectComponent = memo(function SelectComponent2(props) {
|
|
|
287
290
|
if (option.label) {
|
|
288
291
|
return /* @__PURE__ */ jsx(MenuContextLabel, { children: option.children }, `label-${index}`);
|
|
289
292
|
}
|
|
293
|
+
if (option.empty) {
|
|
294
|
+
return /* @__PURE__ */ jsx(MenuEmpty, { children: option.children }, `empty-${index}`);
|
|
295
|
+
}
|
|
290
296
|
const currentSelectableIndex = selectableIndex;
|
|
291
297
|
selectableIndex++;
|
|
292
298
|
const isSelected = currentSelectedIndex === currentSelectableIndex;
|
|
@@ -467,11 +473,12 @@ const BaseSelect = memo(function Select2(props) {
|
|
|
467
473
|
return /* @__PURE__ */ jsx(SelectComponent, { ...props, children });
|
|
468
474
|
});
|
|
469
475
|
const Select = Object.assign(BaseSelect, {
|
|
470
|
-
|
|
471
|
-
Trigger: MenuTrigger,
|
|
476
|
+
Content: MenuContextContent,
|
|
472
477
|
Divider: MenuDivider,
|
|
478
|
+
Empty: MenuEmpty,
|
|
479
|
+
Item: MenuContextItem,
|
|
473
480
|
Label: MenuContextLabel,
|
|
474
|
-
|
|
481
|
+
Trigger: MenuTrigger,
|
|
475
482
|
Value: MenuValue
|
|
476
483
|
});
|
|
477
484
|
Select.displayName = "Select";
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import React, { forwardRef, useMemo } from "react";
|
|
2
2
|
import { jsx, Fragment } from "react/jsx-runtime";
|
|
3
|
+
var REACT_MAJOR = parseInt(React.version.split(".")[0], 10);
|
|
4
|
+
var IS_REACT_19 = REACT_MAJOR >= 19;
|
|
5
|
+
function getChildRef(children) {
|
|
6
|
+
if (IS_REACT_19) {
|
|
7
|
+
return children.props.ref;
|
|
8
|
+
}
|
|
9
|
+
return void 0;
|
|
10
|
+
}
|
|
3
11
|
var Slot = forwardRef(
|
|
4
12
|
({ children, ...slotProps }, forwardedRef) => {
|
|
5
13
|
const slottedChild = useMemo(() => {
|
|
6
14
|
if (!React.isValidElement(children)) {
|
|
7
15
|
return children;
|
|
8
16
|
}
|
|
9
|
-
const
|
|
10
|
-
const childRef = childProps.ref;
|
|
17
|
+
const childRef = getChildRef(children);
|
|
11
18
|
const mergedProps = mergeProps(slotProps, children.props);
|
|
12
19
|
return React.cloneElement(children, {
|
|
13
20
|
...mergedProps,
|
|
@@ -24,8 +31,7 @@ var SlotClone = forwardRef(
|
|
|
24
31
|
if (!React.isValidElement(children)) {
|
|
25
32
|
return children;
|
|
26
33
|
}
|
|
27
|
-
const
|
|
28
|
-
const childRef = childProps.ref;
|
|
34
|
+
const childRef = getChildRef(children);
|
|
29
35
|
const mergedProps = mergeProps(slotProps, children.props);
|
|
30
36
|
return React.cloneElement(children, {
|
|
31
37
|
...mergedProps,
|
package/dist/index.js
CHANGED
|
@@ -136,6 +136,7 @@ import { Menubar } from "./components/menubar/src/menubar.js";
|
|
|
136
136
|
import { MenuButton } from "./components/menus/src/components/menu-button.js";
|
|
137
137
|
import { MenuCheckbox } from "./components/menus/src/components/menu-checkbox.js";
|
|
138
138
|
import { MenuDivider } from "./components/menus/src/components/menu-divider.js";
|
|
139
|
+
import { MenuEmpty } from "./components/menus/src/components/menu-empty.js";
|
|
139
140
|
import { MenuInput } from "./components/menus/src/components/menu-input.js";
|
|
140
141
|
import { MenuItem } from "./components/menus/src/components/menu-item.js";
|
|
141
142
|
import { MenuLabel } from "./components/menus/src/components/menu-label.js";
|
|
@@ -346,6 +347,7 @@ export {
|
|
|
346
347
|
MenuContextLabel,
|
|
347
348
|
MenuContextSubTrigger,
|
|
348
349
|
MenuDivider,
|
|
350
|
+
MenuEmpty,
|
|
349
351
|
MenuInput,
|
|
350
352
|
MenuItem,
|
|
351
353
|
MenuLabel,
|
package/package.json
CHANGED