@mirohq/design-system-combobox 0.6.0-new-focus-keyboard.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +38 -9
- package/dist/main.js.map +1 -1
- package/dist/module.js +38 -9
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +34 -24
- package/package.json +13 -13
package/dist/main.js
CHANGED
|
@@ -534,7 +534,7 @@ const Item = React__default["default"].forwardRef(
|
|
|
534
534
|
restProps.onClick(event);
|
|
535
535
|
}
|
|
536
536
|
};
|
|
537
|
-
const isSelected = comboboxValue.includes(value);
|
|
537
|
+
const isSelected = Array.isArray(comboboxValue) ? comboboxValue.includes(value) : comboboxValue === value;
|
|
538
538
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
539
539
|
StyledItem,
|
|
540
540
|
{
|
|
@@ -598,7 +598,10 @@ const StyledGroupLabel = designSystemStitches.styled(react.GroupLabel, designSys
|
|
|
598
598
|
|
|
599
599
|
const GroupLabel = React__default["default"].forwardRef((props, forwardRef) => /* @__PURE__ */ jsxRuntime.jsx(StyledGroupLabel, { ...props, ref: forwardRef }));
|
|
600
600
|
|
|
601
|
-
const Value = ({
|
|
601
|
+
const Value = ({
|
|
602
|
+
unselectAriaLabel,
|
|
603
|
+
multiple = true
|
|
604
|
+
}) => {
|
|
602
605
|
const {
|
|
603
606
|
value = [],
|
|
604
607
|
setValue,
|
|
@@ -610,9 +613,15 @@ const Value = ({ unselectAriaLabel }) => {
|
|
|
610
613
|
const canRemoveItem = !designSystemUtils.booleanify(ariaDisabled) && !designSystemUtils.booleanify(disabled) && !designSystemUtils.booleanify(readOnly);
|
|
611
614
|
const onItemRemove = React.useCallback(
|
|
612
615
|
(item) => {
|
|
613
|
-
|
|
616
|
+
if (multiple) {
|
|
617
|
+
setValue(
|
|
618
|
+
(prevValue) => prevValue.filter((value2) => value2 !== item)
|
|
619
|
+
);
|
|
620
|
+
} else {
|
|
621
|
+
setValue("");
|
|
622
|
+
}
|
|
614
623
|
},
|
|
615
|
-
[setValue]
|
|
624
|
+
[setValue, multiple]
|
|
616
625
|
);
|
|
617
626
|
const getItemText = React.useCallback(
|
|
618
627
|
(itemValue) => {
|
|
@@ -637,7 +646,7 @@ const Value = ({ unselectAriaLabel }) => {
|
|
|
637
646
|
},
|
|
638
647
|
[canRemoveItem, itemsMap, onItemRemove, unselectAriaLabel]
|
|
639
648
|
);
|
|
640
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: value.map(getItemText) });
|
|
649
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: multiple && Array.isArray(value) ? value.map(getItemText) : getItemText(value) });
|
|
641
650
|
};
|
|
642
651
|
|
|
643
652
|
const StyledSeparator = designSystemStitches.styled(designSystemPrimitive.Primitive.div, designSystemBaseSelect.separatorStyles);
|
|
@@ -674,7 +683,14 @@ const NoResult = React__default["default"].forwardRef((props, forwardRef) => {
|
|
|
674
683
|
});
|
|
675
684
|
|
|
676
685
|
const Root = React__default["default"].forwardRef(
|
|
677
|
-
({
|
|
686
|
+
({
|
|
687
|
+
multiple = true,
|
|
688
|
+
value: valueProp,
|
|
689
|
+
onValueChange,
|
|
690
|
+
name,
|
|
691
|
+
children,
|
|
692
|
+
...restProps
|
|
693
|
+
}, forwardRef) => {
|
|
678
694
|
var _a;
|
|
679
695
|
const {
|
|
680
696
|
openState,
|
|
@@ -725,7 +741,13 @@ const Root = React__default["default"].forwardRef(
|
|
|
725
741
|
const shouldUseFloatingLabel = label !== null && isFloatingLabel;
|
|
726
742
|
const isFloating = placeholder !== void 0 || value.length !== 0 || focused;
|
|
727
743
|
const onSetSelectedValue = (newValue) => {
|
|
728
|
-
|
|
744
|
+
if (!multiple && Array.isArray(newValue)) {
|
|
745
|
+
setValue(newValue[0]);
|
|
746
|
+
} else if (multiple && !Array.isArray(newValue)) {
|
|
747
|
+
setValue([newValue]);
|
|
748
|
+
} else {
|
|
749
|
+
setValue(newValue);
|
|
750
|
+
}
|
|
729
751
|
};
|
|
730
752
|
const onOpenChange = (value2) => {
|
|
731
753
|
if (!designSystemUtils.booleanify(readOnly)) {
|
|
@@ -733,6 +755,13 @@ const Root = React__default["default"].forwardRef(
|
|
|
733
755
|
}
|
|
734
756
|
};
|
|
735
757
|
const isFormControl = Boolean((_a = triggerRef.current) == null ? void 0 : _a.closest("form"));
|
|
758
|
+
const getOptionValue = (itemValue) => {
|
|
759
|
+
if (multiple && Array.isArray(itemValue)) {
|
|
760
|
+
return value.map((itemValue2) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: itemValue2, children: itemValue2 }, itemValue2));
|
|
761
|
+
} else {
|
|
762
|
+
return /* @__PURE__ */ jsxRuntime.jsx("option", { value: itemValue, children: itemValue }, itemValue);
|
|
763
|
+
}
|
|
764
|
+
};
|
|
736
765
|
return /* @__PURE__ */ jsxRuntime.jsxs(RadixPopover__namespace.Root, { open: openState, onOpenChange, children: [
|
|
737
766
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
738
767
|
react.ComboboxProvider,
|
|
@@ -759,7 +788,7 @@ const Root = React__default["default"].forwardRef(
|
|
|
759
788
|
isFormControl && /* @__PURE__ */ jsxRuntime.jsx(
|
|
760
789
|
StyledNativeSelect,
|
|
761
790
|
{
|
|
762
|
-
multiple
|
|
791
|
+
multiple,
|
|
763
792
|
autoComplete: "off",
|
|
764
793
|
name,
|
|
765
794
|
tabIndex: -1,
|
|
@@ -773,7 +802,7 @@ const Root = React__default["default"].forwardRef(
|
|
|
773
802
|
},
|
|
774
803
|
children: value.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("option", { value: "" }) : (
|
|
775
804
|
// since we don't support autoComplete we can render here only selected values
|
|
776
|
-
|
|
805
|
+
getOptionValue(value)
|
|
777
806
|
)
|
|
778
807
|
}
|
|
779
808
|
)
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../src/partials/trigger.styled.tsx","../src/utils.ts","../src/hooks/use-combobox-context.tsx","../src/partials/trigger-action-button.styled.tsx","../src/partials/trigger-action-button.tsx","../src/partials/trigger.tsx","../src/partials/content.styled.tsx","../src/hooks/use-document-fragment.ts","../src/hooks/use-invisible-content.tsx","../src/partials/content.tsx","../src/partials/item.styled.tsx","../src/hooks/use-group-context.tsx","../src/partials/item.tsx","../src/partials/portal.tsx","../src/partials/group.styled.tsx","../src/partials/group.tsx","../src/partials/group-label.styled.tsx","../src/partials/group-label.tsx","../src/partials/value.tsx","../src/partials/separator.styled.tsx","../src/partials/separator.tsx","../src/combobox.styled.tsx","../src/partials/no-result.styled.tsx","../src/partials/no-result.tsx","../src/combobox.tsx"],"sourcesContent":["import { styled } from '@mirohq/design-system-stitches'\nimport { BaseInput } from '@mirohq/design-system-base-input'\nimport type { ComponentPropsWithRef } from 'react'\n\nexport const StyledBaseInput = styled(BaseInput, {\n flexWrap: 'wrap',\n flexGrow: 1,\n gap: '$50',\n\n '&[data-valid], &[data-invalid]': {\n // we don't need a bigger padding here as Input component will render its own icon\n paddingRight: '$100',\n },\n\n '& input': {\n minWidth: '$8',\n flexBasis: 0,\n flexGrow: 1,\n },\n\n variants: {\n size: {\n medium: {\n minHeight: '$8',\n height: 'auto',\n padding: '3px $100',\n paddingRight: '$500',\n fontSize: '$175',\n },\n large: {\n minHeight: '$10',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n 'x-large': {\n minHeight: '$12',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n },\n v1: {\n true: {},\n },\n },\n compoundVariants: [\n {\n v1: true,\n size: 'x-large',\n css: {\n fontSize: '$200',\n lineHeight: '$500',\n },\n },\n ],\n})\n\nexport type StyledBaseInputProps = ComponentPropsWithRef<typeof StyledBaseInput>\n","export function searchQueryMatch(\n displayedText: string,\n searchValue: string\n): boolean {\n return displayedText.toLowerCase().includes(searchValue.toLowerCase())\n}\n","import React, {\n createContext,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { useControllableState } from '@radix-ui/react-use-controllable-state'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\n\nimport type { Direction } from '../types'\nimport type { StyledBaseInputProps } from '../partials/trigger.styled'\nimport { searchQueryMatch } from '../utils'\n\ninterface ItemData {\n displayedText: string\n groupId: string | undefined\n}\n\ninterface ComboboxProviderSharedProps extends FormElementProps {\n value?: string[]\n direction?: Direction\n autoFilter: boolean\n}\n\ninterface ComboboxContextProps extends ComboboxProviderSharedProps {\n setOpenState: React.Dispatch<React.SetStateAction<boolean | undefined>>\n openState: boolean\n\n setValue: React.Dispatch<React.SetStateAction<string[] | undefined>>\n\n triggerRef: React.RefObject<HTMLInputElement>\n inputRef: React.RefObject<HTMLInputElement>\n contentRef: React.RefObject<HTMLDivElement>\n\n searchValue: string\n setSearchValue: React.Dispatch<React.SetStateAction<string | undefined>>\n\n placeholder?: string\n setPlaceholder: React.Dispatch<React.SetStateAction<string | undefined>>\n\n size: StyledBaseInputProps['size']\n setSize: React.Dispatch<React.SetStateAction<StyledBaseInputProps['size']>>\n\n /**\n * includes all visible and hidden items to render Chips and get filtered items\n */\n itemsMap: Map<string, ItemData>\n setItemsMap: React.Dispatch<React.SetStateAction<Map<string, ItemData>>>\n\n /**\n * @returns filtered items based on itemsMap\n * @returns empty array when searchValue is empty or auto filtering is disabled\n */\n filteredItems: ItemData[]\n}\n\ninterface ComboboxProviderProps extends ComboboxProviderSharedProps {\n open?: boolean\n defaultOpen?: boolean\n onOpen?: () => void\n onClose?: () => void\n\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n\n searchValue?: string\n onSearchValueChange?: (value: string) => void\n}\n\nconst ComboboxContext = createContext<ComboboxContextProps>({} as any)\n\nexport const ComboboxProvider = ({\n children,\n open: openProp,\n defaultOpen,\n onOpen,\n onClose,\n valid,\n value: valueProp,\n defaultValue: defaultValueProp,\n onValueChange,\n searchValue: searchValueProp,\n onSearchValueChange,\n autoFilter,\n ...restProps\n}: PropsWithChildren<ComboboxProviderProps>): JSX.Element => {\n const triggerRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n // todo MDS-1141: remove default false value\n const [openState = false, setOpenState] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: state => {\n if (state) {\n onOpen?.()\n } else {\n onClose?.()\n }\n },\n })\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValueProp,\n onChange: onValueChange,\n })\n\n // todo MDS-1141: remove default false value\n const [searchValue = '', setSearchValue] = useControllableState({\n prop: searchValueProp,\n defaultProp: '',\n onChange: onSearchValueChange,\n })\n\n const [size, setSize] = useState<StyledBaseInputProps['size']>()\n const [placeholder, setPlaceholder] = useState<string | undefined>()\n\n const [itemsMap, setItemsMap] = useState<Map<string, ItemData>>(new Map())\n\n const { valid: formFieldValid } = useFormFieldContext()\n\n const filteredItems = useMemo(() => {\n if (searchValue.length > 0) {\n return Array.from(itemsMap.values()).filter(item =>\n searchQueryMatch(item.displayedText, searchValue)\n )\n }\n\n return []\n }, [itemsMap, searchValue])\n\n return (\n <ComboboxContext.Provider\n value={{\n ...restProps,\n valid: valid ?? formFieldValid,\n openState,\n setOpenState,\n value,\n setValue,\n triggerRef,\n inputRef,\n contentRef,\n autoFilter,\n searchValue,\n setSearchValue,\n itemsMap,\n setItemsMap,\n filteredItems,\n placeholder,\n setPlaceholder,\n size,\n setSize,\n }}\n >\n {children}\n </ComboboxContext.Provider>\n )\n}\n\nexport const useComboboxContext = (): ComboboxContextProps =>\n useContext(ComboboxContext)\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { BaseInput } from '@mirohq/design-system-base-input'\n\nexport const StyledActionButton = styled(BaseInput.ActionButton, {\n position: 'absolute',\n right: '$100',\n\n variants: {\n size: {\n medium: {\n top: '1px',\n },\n large: {\n top: '5px',\n },\n 'x-large': {\n top: '9px',\n },\n },\n },\n\n defaultVariants: {\n size: 'large',\n },\n})\n\nexport type StyledActionButtonProps = StrictComponentProps<\n typeof StyledActionButton\n>\n","import React, { useCallback } from 'react'\nimport { IconChevronDown, IconCross } from '@mirohq/design-system-icons'\nimport { Trigger as RadixTrigger } from '@radix-ui/react-popover'\n\nimport type { StyledActionButtonProps } from './trigger-action-button.styled'\nimport { StyledActionButton } from './trigger-action-button.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport type TriggerActionButtonProps = Omit<\n StyledActionButtonProps,\n 'label'\n> & {\n openActionLabel: string\n closeActionLabel: string\n clearable?: boolean\n clearActionLabel?: string\n}\n\nexport const TriggerActionButton: React.FC<TriggerActionButtonProps> = ({\n openActionLabel,\n closeActionLabel,\n clearActionLabel,\n clearable,\n size,\n}) => {\n const { openState, setOpenState, value = [], setValue } = useComboboxContext()\n\n const isEmpty = value.length === 0\n\n const onToggleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (openState) {\n // open action will be performed by radix since it's RadixTrigger\n setOpenState(false)\n }\n\n event.stopPropagation()\n },\n [setOpenState, openState]\n )\n\n const onClearClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n setValue([])\n\n event.stopPropagation()\n },\n [setValue]\n )\n\n if (isEmpty || clearable === false || clearActionLabel === undefined) {\n return (\n <RadixTrigger asChild aria-haspopup='listbox'>\n <StyledActionButton\n label={openState ? closeActionLabel : openActionLabel}\n size={size}\n onClick={onToggleClick}\n >\n <IconChevronDown size='small' weight='thin' />\n </StyledActionButton>\n </RadixTrigger>\n )\n }\n\n return (\n <StyledActionButton\n label={clearActionLabel}\n size={size}\n onClick={onClearClick}\n >\n <IconCross size='small' weight='thin' />\n </StyledActionButton>\n )\n}\n","import React, { useEffect } from 'react'\nimport type { ElementRef } from 'react'\nimport { Combobox as AriakitComboboxTrigger } from '@ariakit/react'\nimport {\n booleanify,\n mergeRefs,\n stringAttrValue,\n} from '@mirohq/design-system-utils'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport { Anchor as RadixAnchor } from '@radix-ui/react-popover'\nimport type {\n BaseInputProps,\n BaseInputStyledProps,\n} from '@mirohq/design-system-base-input'\nimport { BaseInput } from '@mirohq/design-system-base-input'\nimport { mergeProps } from '@react-aria/utils'\nimport { useNewDesignLanguage } from '@mirohq/design-system-experiments'\n\nimport { StyledBaseInput } from './trigger.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { TriggerActionButton } from './trigger-action-button'\n\ninterface TriggerSharedProps extends Omit<BaseInputStyledProps, 'size'> {\n /**\n * The content.\n */\n children?: React.ReactNode\n\n /**\n * The size of the trigger.\n * @default 'large'\n */\n size?: BaseInputProps['size']\n\n /**\n * The content that will be rendered inside the Combobox.Trigger when no value or\n * defaultValue is set.\n */\n placeholder?: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and closed. Will be rendered in a Tooltip.\n */\n openActionLabel: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and open. Will be rendered in a Tooltip.\n */\n closeActionLabel: string\n\n /**\n * Show a button to clear the Combobox value.\n * @default true\n */\n clearable?: boolean\n}\n\nexport type TriggerProps = TriggerSharedProps &\n (\n | { clearable: false; clearActionLabel?: never }\n | {\n /**\n * The label text for Trigger's action button when Combobox has values selected. Will be rendered in a Tooltip.\n */\n clearActionLabel: string\n }\n )\n\nexport const Trigger = React.forwardRef<ElementRef<'input'>, TriggerProps>(\n (\n {\n id,\n children,\n size = 'large',\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n placeholder,\n openActionLabel,\n closeActionLabel,\n clearable = true,\n clearActionLabel,\n onChange,\n onFocus,\n css,\n // @ts-expect-error className required when extending the component with styled()\n className,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n 'aria-disabled': ariaDisabled,\n valid: comboboxValid,\n disabled,\n value = [],\n readOnly,\n triggerRef,\n inputRef,\n searchValue,\n setSearchValue,\n setOpenState,\n setSize,\n setPlaceholder,\n } = useComboboxContext()\n\n const {\n formElementId,\n ariaDescribedBy: formFieldContextDescribedBy,\n ariaInvalid: formFieldAriaInvalid,\n valid: formFieldValid,\n } = useFormFieldContext()\n\n const [v1] = useNewDesignLanguage()\n\n useEffect(() => {\n setSize(size)\n }, [size, setSize])\n\n useEffect(() => {\n setPlaceholder(placeholder)\n }, [setPlaceholder, placeholder])\n\n const valid = formFieldValid ?? comboboxValid\n\n const scrollIntoView = (\n event: React.FocusEvent<HTMLInputElement>\n ): void => {\n const trigger = triggerRef?.current\n const baseInput = inputRef?.current?.parentElement\n\n if (baseInput != null && trigger != null) {\n event.preventDefault()\n baseInput.scrollTo({\n top: trigger.scrollHeight,\n })\n }\n\n if (onFocus !== undefined) {\n onFocus(event)\n }\n }\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n setSearchValue(e.target.value)\n onChange?.(e)\n }\n\n return (\n <RadixAnchor\n ref={mergeRefs([triggerRef, forwardRef])}\n // todo MDS-1112: move this logic to AriakitComboboxTrigger's showOnClick\n onClick={() => {\n if (\n !booleanify(disabled) &&\n !booleanify(ariaDisabled) &&\n !booleanify(readOnly)\n ) {\n setOpenState(true)\n }\n }}\n >\n <AriakitComboboxTrigger\n render={({ ref: ariakitTriggerRef, ...ariakitProps }) => (\n <StyledBaseInput\n aria-disabled={ariaDisabled}\n valid={valid}\n disabled={disabled}\n readOnly={readOnly}\n size={size}\n onChange={onInputChange}\n css={css}\n v1={v1}\n // @ts-expect-error className required when extending the component with styled()\n className={className}\n >\n <BaseInput.Input\n {...mergeProps(ariakitProps, restProps)}\n ref={mergeRefs([\n inputRef,\n ariakitTriggerRef as React.RefObject<HTMLInputElement>,\n ])}\n value={searchValue}\n id={id ?? formElementId}\n aria-describedby={stringAttrValue(\n ariaDescribedBy,\n formFieldContextDescribedBy\n )}\n aria-invalid={ariaInvalid ?? formFieldAriaInvalid}\n placeholder={\n children === null ||\n children === undefined ||\n value.length === 0\n ? placeholder\n : undefined\n }\n onFocus={scrollIntoView}\n />\n {children}\n <TriggerActionButton\n openActionLabel={openActionLabel}\n closeActionLabel={closeActionLabel}\n clearActionLabel={clearActionLabel}\n clearable={clearable}\n size={size}\n />\n </StyledBaseInput>\n )}\n />\n </RadixAnchor>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport {\n contentStyles,\n itemsContainerStyles,\n} from '@mirohq/design-system-base-select'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledItemsContainer = styled(Primitive.div, itemsContainerStyles)\n\nexport const StyledContent = styled(RadixPopover.Content, {\n ...contentStyles,\n width: 'var(--radix-popover-trigger-width)',\n overflowY: 'auto',\n boxSizing: 'border-box',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nexport const useDocumentFragment = (): DocumentFragment | undefined => {\n const [fragment, setFragment] = React.useState<DocumentFragment>()\n\n // we need `useLayoutEffect` here because `DocumentFragment` doesn't exist on the server\n useLayoutEffect(() => {\n setFragment(new DocumentFragment())\n }, [])\n\n return fragment\n}\n","import React, { useCallback } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useDocumentFragment } from './use-document-fragment'\n\n/**\n * Render content in DocumentFragment so items can send its text value to context,\n * otherwise we will have empty chips.\n * Content won't be visible in DOM.\n */\nexport const useInvisibleContent = (): ((\n children: React.ReactNode\n) => React.ReactElement | null) => {\n const fragment = useDocumentFragment()\n\n return useCallback(\n (children: React.ReactNode): React.ReactElement | null =>\n fragment !== undefined\n ? createPortal(<div>{children}</div>, fragment)\n : null,\n [fragment]\n )\n}\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\nimport { ScrollArea } from '@mirohq/design-system-scroll-area'\nimport { theme } from '@mirohq/design-system-stitches'\nimport type { CSSProperties } from '@stitches/react'\nimport { ComboboxList as AriakitComboboxList } from '@ariakit/react'\n\nimport { StyledContent, StyledItemsContainer } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport type {\n Align,\n Overflow,\n PointerDownOutsideEvent,\n Side,\n Sticky,\n} from '../types'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\n\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\nconst RADIX_CONTENT_AVAILABLE_HEIGHT =\n 'var(--radix-popover-content-available-height)'\n\nconst isInsideRef = (\n element: Element | null,\n ref: React.RefObject<Element>\n): boolean => (element != null && ref.current?.contains(element)) ?? false\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Combobox's content.\n */\n children?: ReactNode\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n\n /**\n * Event handler called when a pointer event occurs outside the bounds of the\n * component. It can be prevented by calling event.preventDefault.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void\n\n /**\n * The preferred side of the anchor to render against when open. Will be\n * reversed when collisions occur and avoidCollisions is enabled.\n * @default 'bottom'\n */\n side?: Side\n\n /**\n * The distance in pixels from the anchor.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the anchor. May change when collisions\n * occur.\n * @default 'center'\n */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default 0\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with boundary edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The element used as the collision boundary. By default this is the\n * viewport, though you can provide additional element(s) to be included in\n * this check.\n */\n collisionBoundary?: Element | null\n\n /**\n * The distance in pixels from the boundary edges where collision detection\n * should occur. Accepts a number (same for all sides), or a partial padding\n * object, for example: { top: 20, left: 20 }.\n * @default 0\n */\n collisionPadding?: number | Partial<Record<Side, number>>\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in the\n * boundary as long as the trigger is at least partially in the boundary whilst\n * \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: Sticky\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default true\n */\n hideWhenDetached?: boolean\n\n /**\n * The max height for the content.\n */\n maxHeight?: CSSProperties['maxHeight']\n\n /**\n * Setting overflow as \"visible\" means that the content can extend beyond\n * its collision boundary without any clipping or scrolling being\n * applied.\n * When set to \"auto,\" a scrollbar is added if the content exceeds its\n * boundaries. If no maxHeight is defined, it will be automatically adjusted\n * to fit the remaining space between the trigger and the boundary edge.\n * @default 'visible'\n */\n overflow?: Overflow\n}\n\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(\n (\n {\n side = 'bottom',\n sideOffset = CONTENT_OFFSET,\n align = 'center',\n alignOffset = 0,\n collisionPadding = 0,\n avoidCollisions = true,\n sticky = 'partial',\n hideWhenDetached = true,\n overflow = 'visible',\n maxHeight,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const { triggerRef, contentRef, direction, openState } =\n useComboboxContext()\n\n const getInvisibleContent = useInvisibleContent()\n\n if (!openState) {\n return getInvisibleContent(children)\n }\n\n const content = <StyledItemsContainer>{children}</StyledItemsContainer>\n\n return (\n <StyledContent\n {...restProps}\n dir={direction}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n ref={mergeRefs([forwardRef, contentRef])}\n onOpenAutoFocus={event => event.preventDefault()}\n onInteractOutside={event => {\n const target = event.target as Element | null\n const isTrigger = isInsideRef(target, triggerRef)\n const isContent = isInsideRef(target, contentRef)\n\n if (isTrigger || isContent) {\n event.preventDefault()\n }\n }}\n >\n {/* we have to specify role here otherwise it would be overwritten by Radix.Content */}\n <AriakitComboboxList role='listbox'>\n {overflow === 'auto' ? (\n <ScrollArea type='always' dir={direction}>\n <ScrollArea.Viewport\n css={{\n maxHeight:\n maxHeight !== undefined\n ? `min(${RADIX_CONTENT_AVAILABLE_HEIGHT}, ${\n typeof maxHeight === 'number'\n ? `${maxHeight}px`\n : maxHeight\n })`\n : RADIX_CONTENT_AVAILABLE_HEIGHT,\n }}\n >\n {content}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\n ) : (\n content\n )}\n </AriakitComboboxList>\n </StyledContent>\n )\n }\n)\n","import { ComboboxItem } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { itemStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledItem = styled(ComboboxItem, itemStyles)\n\nexport type StyledItemProps = StrictComponentProps<typeof StyledItem>\n","import React, { createContext, useContext } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\n\ninterface GroupProviderSharedProps extends FormElementProps {\n groupId?: string\n}\n\ninterface GroupContextProps extends GroupProviderSharedProps {}\n\ninterface GroupProviderProps extends GroupProviderSharedProps {}\n\nconst GroupContext = createContext<GroupContextProps>({} as any)\n\nexport const GroupProvider = ({\n children,\n ...restProps\n}: PropsWithChildren<GroupProviderProps>): JSX.Element => (\n <GroupContext.Provider\n value={{\n ...restProps,\n }}\n >\n {children}\n </GroupContext.Provider>\n)\n\nexport const useGroupContext = (): GroupContextProps => useContext(GroupContext)\n","import React, { useMemo } from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { ComboboxItemCheck as AriakitComboboxItemCheck } from '@ariakit/react'\nimport { mergeProps } from '@react-aria/utils'\nimport { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\nimport { IconCheckMark } from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\nimport { StyledItemCheck } from '@mirohq/design-system-base-select'\n\nimport { StyledItem } from './item.styled'\nimport type { StyledItemProps } from './item.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { useGroupContext } from '../hooks/use-group-context'\nimport { searchQueryMatch } from '../utils'\n\nexport interface ItemProps extends StyledItemProps {\n /**\n * The value given as data when submitted with a name.\n */\n value: string\n\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the Combobox's item text. Use this when the content is\n * complex, or you have non-textual content inside.\n */\n textValue?: string\n\n /**\n * Item's content.\n */\n children?: ReactNode\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n (\n { disabled = false, value, textValue, children, ...restProps },\n forwardRef\n ) => {\n const { 'aria-disabled': ariaDisabled, ...restAriaDisabledProps } =\n useAriaDisabled(restProps, { allowArrows: true })\n const {\n searchValue,\n autoFilter,\n setItemsMap,\n triggerRef,\n inputRef,\n value: comboboxValue = [],\n } = useComboboxContext()\n\n const { groupId } = useGroupContext()\n\n const displayedText = useMemo((): string => {\n if (textValue !== undefined) {\n return textValue\n }\n\n return typeof children === 'string' ? children : ''\n }, [textValue, children])\n\n useLayoutEffect(() => {\n setItemsMap(\n prevState => new Map(prevState.set(value, { displayedText, groupId }))\n )\n\n return () => {\n setItemsMap(prevState => {\n prevState.delete(value)\n return new Map(prevState)\n })\n }\n }, [setItemsMap, groupId, value, displayedText])\n\n if (\n autoFilter &&\n searchValue.length > 0 &&\n !searchQueryMatch(displayedText, searchValue)\n ) {\n return null\n }\n\n const scrollIntoView = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (\n inputRef?.current?.parentElement != null &&\n triggerRef?.current != null\n ) {\n inputRef.current.parentElement.scrollTo({\n top: triggerRef.current.scrollHeight,\n })\n }\n\n if (restProps.onClick !== undefined) {\n restProps.onClick(event)\n }\n }\n\n // todo MDS-1142 find a better way to fix blinking.\n // We need to use custom state because Ariakit changes its state internally on click even for controlled Combobox\n // and it case `aria-selected` value and checkmark to blink.\n const isSelected = comboboxValue.includes(value)\n\n return (\n <StyledItem\n {...mergeProps(restProps, restAriaDisabledProps)}\n focusable\n hideOnClick={false}\n accessibleWhenDisabled={booleanify(ariaDisabled)}\n disabled={booleanify(ariaDisabled) || disabled}\n ref={forwardRef}\n value={value}\n onClick={scrollIntoView}\n aria-selected={isSelected}\n >\n <AriakitComboboxItemCheck\n checked={isSelected}\n render={({ style, ...props }) => (\n // AriakitComboboxItemCheck adds its owm inline styles which we want to omit here\n <StyledItemCheck {...props} />\n )}\n >\n <IconCheckMark\n size='small'\n data-testid={\n process.env.NODE_ENV === 'test'\n ? 'combobox-item-check'\n : undefined\n }\n />\n </AriakitComboboxItemCheck>\n {children}\n </StyledItem>\n )\n }\n)\n","import React from 'react'\nimport type { PopoverPortalProps } from '@radix-ui/react-popover'\nimport { Portal as RadixPortal } from '@radix-ui/react-popover'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface PortalProps extends PopoverPortalProps {\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal: React.FC<PortalProps> = ({\n forceMount: forceMountProp,\n ...restProps\n}) => {\n const { openState } = useComboboxContext()\n\n // We always need to render content with items to be able to render Chips in Value,\n // but without forceMount Radix will not render Portal when Popover is closed\n const forceMount = !openState || forceMountProp\n\n return <RadixPortal forceMount={forceMount} {...restProps} />\n}\n","import { Group as AriakitGroup } from '@ariakit/react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledGroup = styled(AriakitGroup, {})\n\nexport type StyledGroupProps = StrictComponentProps<typeof StyledGroup>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useId } from '@mirohq/design-system-use-id'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport type { StyledGroupProps } from './group.styled'\nimport { StyledGroup } from './group.styled'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\nimport { GroupProvider } from '../hooks/use-group-context'\n\nexport type GroupProps = StyledGroupProps\n\nexport const Group = React.forwardRef<\n ElementRef<typeof StyledGroup>,\n GroupProps\n>(({ children, ...rest }, forwardRef) => {\n const { autoFilter, searchValue, filteredItems } = useComboboxContext()\n\n const id = useId()\n const getInvisibleContent = useInvisibleContent()\n\n let hasVisibleContent = true\n\n if (autoFilter && searchValue.length > 0) {\n hasVisibleContent = filteredItems.some(item => item.groupId === id)\n }\n\n return (\n <GroupProvider groupId={id}>\n {hasVisibleContent ? (\n <StyledGroup {...rest} ref={forwardRef}>\n {children}\n </StyledGroup>\n ) : (\n getInvisibleContent(children)\n )}\n </GroupProvider>\n )\n})\n","import { GroupLabel } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { groupLabelStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledGroupLabel = styled(GroupLabel, groupLabelStyles)\n\nexport type StyledGroupLabelProps = StrictComponentProps<\n typeof StyledGroupLabel\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledGroupLabel } from './group-label.styled'\nimport type { StyledGroupLabelProps } from './group-label.styled'\n\nexport interface GroupLabelProps extends StyledGroupLabelProps {}\n\nexport const GroupLabel = React.forwardRef<\n ElementRef<typeof StyledGroupLabel>,\n GroupLabelProps\n>((props, forwardRef) => <StyledGroupLabel {...props} ref={forwardRef} />)\n","import React, { useCallback } from 'react'\nimport type { FC } from 'react'\nimport { Chip } from '@mirohq/design-system-chip'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface ValueProps {\n /**\n * The label to make the remove button recognizable by the screen readers.\n */\n unselectAriaLabel: string\n}\n\nexport const Value: FC<ValueProps> = ({ unselectAriaLabel }) => {\n const {\n value = [],\n setValue,\n disabled,\n readOnly,\n 'aria-disabled': ariaDisabled,\n itemsMap,\n } = useComboboxContext()\n const canRemoveItem =\n !booleanify(ariaDisabled) && !booleanify(disabled) && !booleanify(readOnly)\n\n const onItemRemove = useCallback(\n (item: string): void => {\n setValue(prevValue => prevValue?.filter(value => value !== item))\n },\n [setValue]\n )\n\n const getItemText = useCallback(\n (itemValue: string) => {\n const itemData = itemsMap.get(itemValue)\n if (itemData === undefined || itemData.displayedText === '') {\n return null\n }\n\n return (\n <Chip\n key={itemValue}\n onRemove={e => {\n onItemRemove(itemValue)\n e.stopPropagation()\n }}\n removable={canRemoveItem}\n removeAriaLabel={`${unselectAriaLabel} ${itemData.displayedText}`}\n data-testid={\n process.env.NODE_ENV === 'test'\n ? `combobox-value-${itemValue}`\n : undefined\n }\n >\n {itemData.displayedText}\n </Chip>\n )\n },\n [canRemoveItem, itemsMap, onItemRemove, unselectAriaLabel]\n )\n\n return <>{value.map(getItemText)}</>\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { separatorStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledSeparator = styled(Primitive.div, separatorStyles)\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { StyledSeparator } from './separator.styled'\nimport type { StyledSeparatorProps } from './separator.styled'\n\nexport interface SeparatorProps extends StyledSeparatorProps {}\n\nexport const Separator = React.forwardRef<\n ElementRef<typeof StyledSeparator>,\n SeparatorProps\n>((props, forwardRef) => {\n const { autoFilter, searchValue } = useComboboxContext()\n\n if (autoFilter && searchValue.length > 0) {\n return null\n }\n\n return <StyledSeparator {...props} ref={forwardRef} aria-hidden />\n})\n","import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledNativeSelect = styled(Primitive.select, {\n // if we support autoComplete, we would have to use visually-hidden styles here\n display: 'none',\n})\n\nexport const StyledComboboxContent = styled(Primitive.div, {\n position: 'relative',\n width: '100%',\n})\n\nexport type StyledComboboxProps = ComponentPropsWithRef<\n typeof StyledComboboxContent\n>\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledNoResult = styled(Primitive.div, {\n padding: '$100',\n})\n\nexport type StyledNoResultProps = StrictComponentProps<typeof StyledNoResult>\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\n\nimport type { StyledNoResultProps } from './no-result.styled'\nimport { StyledNoResult } from './no-result.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface NoResultProps extends StyledNoResultProps {\n /**\n * The content.\n */\n children?: ReactNode\n}\n\nexport const NoResult = React.forwardRef<\n ElementRef<typeof StyledNoResult>,\n NoResultProps\n>((props, forwardRef) => {\n const { autoFilter, searchValue, filteredItems, itemsMap } =\n useComboboxContext()\n\n // when filtering is disabled or idle, just checking if there are any items provided\n const noActiveFiltering =\n !autoFilter || (autoFilter && searchValue.length === 0)\n\n const isVisible = noActiveFiltering\n ? itemsMap.size === 0\n : filteredItems.length === 0\n\n if (isVisible) {\n return <StyledNoResult {...props} ref={forwardRef} />\n }\n\n return null\n})\n","import React, { useEffect } from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\nimport { ComboboxProvider as AriakitComboboxProvider } from '@ariakit/react'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\nimport {\n FloatingLabel,\n useFormFieldContext,\n} from '@mirohq/design-system-base-form'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport {\n BaseTooltipProvider,\n useBaseTooltipContext,\n} from '@mirohq/design-system-base-tooltip'\nimport { usePrevious } from '@mirohq/design-system-use-previous'\n\nimport { Trigger } from './partials/trigger'\nimport { Content } from './partials/content'\nimport { Item } from './partials/item'\nimport { Portal } from './partials/portal'\nimport { Group } from './partials/group'\nimport { GroupLabel } from './partials/group-label'\nimport { Value } from './partials/value'\nimport { Separator } from './partials/separator'\nimport { StyledComboboxContent, StyledNativeSelect } from './combobox.styled'\nimport type { StyledComboboxProps } from './combobox.styled'\nimport {\n ComboboxProvider,\n useComboboxContext,\n} from './hooks/use-combobox-context'\nimport type { Direction } from './types'\nimport { NoResult } from './partials/no-result'\n\nexport interface ComboboxProps extends FormElementProps, StyledComboboxProps {\n /**\n * The value of the combobox when initially rendered. Use when you do not need\n * to control the state of the combobox.\n */\n defaultValue?: string[]\n\n /**\n * The controlled value of the combobox. Should be used in conjunction with\n * onValueChange.\n */\n value?: string[]\n\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string[]) => void\n\n /**\n * The controlled search value to filter items. Should be used in conjunction with\n * onSearchValueChange.\n */\n searchValue?: string\n\n /**\n * Event handler called when the trigger input value changes.\n */\n onSearchValueChange?: (value: string) => void\n\n /**\n * The open state of the combobox when it is initially rendered. Use when you do\n * not need to control its open state.\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * The controlled open state of the combobox. Must be used in conjunction with\n * onOpen and onClose.\n */\n open?: boolean\n\n /**\n * Event handler called when the combobox opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the combobox closes.\n */\n onClose?: () => void\n\n /**\n * The reading direction of the combobox when applicable. If omitted, inherits\n * globally from DirectionProvider or assumes LTR (left-to-right) reading\n * mode.\n * @default 'ltr'\n */\n direction?: Direction\n\n /**\n * The content of the combobox\n */\n children?: React.ReactNode\n\n /**\n * Enables/disabled automatic filtering.\n * @default true\n */\n autoFilter?: boolean\n\n /**\n * The name of the combobox. Submitted with its owning form as part of a\n * name/value pair.\n */\n name?: string\n}\n\nconst Root = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n { value: valueProp, onValueChange, name, children, ...restProps },\n forwardRef\n ) => {\n const {\n openState,\n setOpenState,\n value = [],\n setValue,\n required,\n readOnly,\n 'aria-disabled': ariaDisabled,\n disabled,\n direction,\n size,\n placeholder,\n triggerRef,\n } = useComboboxContext()\n\n const {\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n label,\n isFloatingLabel,\n focused,\n formElementRef,\n } = useFormFieldContext<HTMLSelectElement>()\n\n useEffect(() => {\n setRequired?.(required)\n setDisabled?.(disabled)\n setAriaDisabled?.(ariaDisabled)\n setReadOnly?.(readOnly)\n }, [\n readOnly,\n disabled,\n ariaDisabled,\n required,\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n ])\n\n const { ignoreNextTooltip } = useBaseTooltipContext()\n const prevOpen = usePrevious(openState)\n\n useEffect(() => {\n if (prevOpen === true && !openState) {\n ignoreNextTooltip()\n }\n }, [ignoreNextTooltip, openState, prevOpen])\n\n const shouldUseFloatingLabel = label !== null && isFloatingLabel\n const isFloating =\n placeholder !== undefined || value.length !== 0 || focused\n\n const onSetSelectedValue = (newValue: string | string[]): void => {\n setValue(typeof newValue === 'string' ? [newValue] : newValue)\n }\n\n const onOpenChange = (value: boolean): void => {\n if (!booleanify(readOnly)) {\n setOpenState(value)\n }\n }\n\n const isFormControl = Boolean(triggerRef.current?.closest('form'))\n\n return (\n <RadixPopover.Root open={openState} onOpenChange={onOpenChange}>\n <AriakitComboboxProvider\n open={openState}\n setOpen={onOpenChange}\n selectedValue={value}\n setSelectedValue={onSetSelectedValue}\n >\n <StyledComboboxContent\n ref={forwardRef}\n {...restProps}\n dir={direction}\n data-form-element='select'\n >\n {shouldUseFloatingLabel && (\n <FloatingLabel floating={isFloating} size={size}>\n {label}\n </FloatingLabel>\n )}\n {children}\n </StyledComboboxContent>\n </AriakitComboboxProvider>\n {isFormControl && (\n <StyledNativeSelect\n multiple\n autoComplete='off'\n name={name}\n tabIndex={-1}\n aria-hidden='true'\n ref={formElementRef}\n required={required}\n disabled={disabled}\n aria-disabled={ariaDisabled}\n value={value}\n // since we don't support autoComplete there is no way this select value will change,\n // although we still need to provide `onChange` since we use `value` and not `defaultValue`\n onChange={() => {}}\n >\n {value.length === 0 ? (\n <option value='' />\n ) : (\n // since we don't support autoComplete we can render here only selected values\n value.map(itemValue => (\n <option key={itemValue} value={itemValue}>\n {itemValue}\n </option>\n ))\n )}\n </StyledNativeSelect>\n )}\n </RadixPopover.Root>\n )\n }\n)\n\nexport const Combobox = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled,\n defaultOpen = false,\n open,\n valid,\n disabled,\n readOnly,\n required,\n value,\n defaultValue,\n onOpen,\n onClose,\n searchValue,\n onSearchValueChange,\n onValueChange,\n direction = 'ltr',\n autoFilter = true,\n ...restProps\n },\n forwardRef\n ) => (\n <ComboboxProvider\n defaultValue={defaultValue}\n value={value}\n onValueChange={onValueChange}\n searchValue={searchValue}\n onSearchValueChange={onSearchValueChange}\n defaultOpen={defaultOpen}\n open={open}\n onOpen={onOpen}\n onClose={onClose}\n valid={valid}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n aria-disabled={ariaDisabled}\n direction={direction}\n autoFilter={autoFilter}\n >\n <BaseTooltipProvider>\n <Root {...restProps} value={value} ref={forwardRef} />\n </BaseTooltipProvider>\n </ComboboxProvider>\n )\n) as ForwardRefExoticComponent<ComboboxProps> & Partials\n\nexport interface Partials {\n Portal: typeof Portal\n Trigger: typeof Trigger\n Content: typeof Content\n Item: typeof Item\n Group: typeof Group\n GroupLabel: typeof GroupLabel\n Value: typeof Value\n Separator: typeof Separator\n NoResult: typeof NoResult\n}\n\nCombobox.Portal = Portal\nCombobox.Trigger = Trigger\nCombobox.Content = Content\nCombobox.Item = Item\nCombobox.Group = Group\nCombobox.GroupLabel = GroupLabel\nCombobox.Value = Value\nCombobox.Separator = Separator\nCombobox.NoResult = NoResult\n"],"names":["styled","BaseInput","createContext","useRef","useControllableState","useState","useFormFieldContext","useMemo","jsx","useContext","useCallback","RadixTrigger","IconChevronDown","IconCross","React","useNewDesignLanguage","useEffect","RadixAnchor","mergeRefs","booleanify","AriakitComboboxTrigger","jsxs","mergeProps","stringAttrValue","Primitive","itemsContainerStyles","RadixPopover","contentStyles","useLayoutEffect","createPortal","theme","AriakitComboboxList","ScrollArea","ComboboxItem","itemStyles","useAriaDisabled","AriakitComboboxItemCheck","StyledItemCheck","IconCheckMark","RadixPortal","AriakitGroup","useId","GroupLabel","groupLabelStyles","value","Chip","Fragment","separatorStyles","useBaseTooltipContext","usePrevious","AriakitComboboxProvider","FloatingLabel","BaseTooltipProvider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../src/partials/trigger.styled.tsx","../src/utils.ts","../src/hooks/use-combobox-context.tsx","../src/partials/trigger-action-button.styled.tsx","../src/partials/trigger-action-button.tsx","../src/partials/trigger.tsx","../src/partials/content.styled.tsx","../src/hooks/use-document-fragment.ts","../src/hooks/use-invisible-content.tsx","../src/partials/content.tsx","../src/partials/item.styled.tsx","../src/hooks/use-group-context.tsx","../src/partials/item.tsx","../src/partials/portal.tsx","../src/partials/group.styled.tsx","../src/partials/group.tsx","../src/partials/group-label.styled.tsx","../src/partials/group-label.tsx","../src/partials/value.tsx","../src/partials/separator.styled.tsx","../src/partials/separator.tsx","../src/combobox.styled.tsx","../src/partials/no-result.styled.tsx","../src/partials/no-result.tsx","../src/combobox.tsx"],"sourcesContent":["import { styled } from '@mirohq/design-system-stitches'\nimport { BaseInput } from '@mirohq/design-system-base-input'\nimport type { ComponentPropsWithRef } from 'react'\n\nexport const StyledBaseInput = styled(BaseInput, {\n flexWrap: 'wrap',\n flexGrow: 1,\n gap: '$50',\n\n '&[data-valid], &[data-invalid]': {\n // we don't need a bigger padding here as Input component will render its own icon\n paddingRight: '$100',\n },\n\n '& input': {\n minWidth: '$8',\n flexBasis: 0,\n flexGrow: 1,\n },\n\n variants: {\n size: {\n medium: {\n minHeight: '$8',\n height: 'auto',\n padding: '3px $100',\n paddingRight: '$500',\n fontSize: '$175',\n },\n large: {\n minHeight: '$10',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n 'x-large': {\n minHeight: '$12',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n },\n v1: {\n true: {},\n },\n },\n compoundVariants: [\n {\n v1: true,\n size: 'x-large',\n css: {\n fontSize: '$200',\n lineHeight: '$500',\n },\n },\n ],\n})\n\nexport type StyledBaseInputProps = ComponentPropsWithRef<typeof StyledBaseInput>\n","export function searchQueryMatch(\n displayedText: string,\n searchValue: string\n): boolean {\n return displayedText.toLowerCase().includes(searchValue.toLowerCase())\n}\n","import React, {\n createContext,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { useControllableState } from '@radix-ui/react-use-controllable-state'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\n\nimport type { Direction } from '../types'\nimport type { StyledBaseInputProps } from '../partials/trigger.styled'\nimport { searchQueryMatch } from '../utils'\n\ninterface ItemData {\n displayedText: string\n groupId: string | undefined\n}\n\ninterface ComboboxProviderSharedProps extends FormElementProps {\n value?: string[] | string\n direction?: Direction\n autoFilter: boolean\n}\n\ninterface ComboboxContextProps extends ComboboxProviderSharedProps {\n setOpenState: React.Dispatch<React.SetStateAction<boolean | undefined>>\n openState: boolean\n\n setValue: React.Dispatch<React.SetStateAction<string[] | string | undefined>>\n\n triggerRef: React.RefObject<HTMLInputElement>\n inputRef: React.RefObject<HTMLInputElement>\n contentRef: React.RefObject<HTMLDivElement>\n\n searchValue: string\n setSearchValue: React.Dispatch<React.SetStateAction<string | undefined>>\n\n placeholder?: string\n setPlaceholder: React.Dispatch<React.SetStateAction<string | undefined>>\n\n size: StyledBaseInputProps['size']\n setSize: React.Dispatch<React.SetStateAction<StyledBaseInputProps['size']>>\n\n /**\n * includes all visible and hidden items to render Chips and get filtered items\n */\n itemsMap: Map<string, ItemData>\n setItemsMap: React.Dispatch<React.SetStateAction<Map<string, ItemData>>>\n\n /**\n * @returns filtered items based on itemsMap\n * @returns empty array when searchValue is empty or auto filtering is disabled\n */\n filteredItems: ItemData[]\n}\n\ninterface ComboboxProviderProps extends ComboboxProviderSharedProps {\n children?: React.ReactNode\n open?: boolean\n defaultOpen?: boolean\n onOpen?: () => void\n onClose?: () => void\n\n defaultValue?: string[] | string\n onValueChange?: (value: string[] | string) => void\n\n searchValue?: string\n onSearchValueChange?: (value: string) => void\n}\n\nconst ComboboxContext = createContext<ComboboxContextProps>({} as any)\n\nexport const ComboboxProvider = ({\n children,\n open: openProp,\n defaultOpen,\n onOpen,\n onClose,\n valid,\n value: valueProp,\n defaultValue: defaultValueProp,\n onValueChange,\n searchValue: searchValueProp,\n onSearchValueChange,\n autoFilter,\n ...restProps\n}: ComboboxProviderProps): JSX.Element => {\n const triggerRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n // todo MDS-1141: remove default false value\n const [openState = false, setOpenState] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: state => {\n if (state) {\n onOpen?.()\n } else {\n onClose?.()\n }\n },\n })\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValueProp,\n onChange: onValueChange,\n })\n\n // todo MDS-1141: remove default false value\n const [searchValue = '', setSearchValue] = useControllableState({\n prop: searchValueProp,\n defaultProp: '',\n onChange: onSearchValueChange,\n })\n\n const [size, setSize] = useState<StyledBaseInputProps['size']>()\n const [placeholder, setPlaceholder] = useState<string | undefined>()\n\n const [itemsMap, setItemsMap] = useState<Map<string, ItemData>>(new Map())\n\n const { valid: formFieldValid } = useFormFieldContext()\n\n const filteredItems = useMemo(() => {\n if (searchValue.length > 0) {\n return Array.from(itemsMap.values()).filter(item =>\n searchQueryMatch(item.displayedText, searchValue)\n )\n }\n\n return []\n }, [itemsMap, searchValue])\n\n return (\n <ComboboxContext.Provider\n value={{\n ...restProps,\n valid: valid ?? formFieldValid,\n openState,\n setOpenState,\n value,\n setValue,\n triggerRef,\n inputRef,\n contentRef,\n autoFilter,\n searchValue,\n setSearchValue,\n itemsMap,\n setItemsMap,\n filteredItems,\n placeholder,\n setPlaceholder,\n size,\n setSize,\n }}\n >\n {children}\n </ComboboxContext.Provider>\n )\n}\n\nexport const useComboboxContext = (): ComboboxContextProps =>\n useContext(ComboboxContext)\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { BaseInput } from '@mirohq/design-system-base-input'\n\nexport const StyledActionButton = styled(BaseInput.ActionButton, {\n position: 'absolute',\n right: '$100',\n\n variants: {\n size: {\n medium: {\n top: '1px',\n },\n large: {\n top: '5px',\n },\n 'x-large': {\n top: '9px',\n },\n },\n },\n\n defaultVariants: {\n size: 'large',\n },\n})\n\nexport type StyledActionButtonProps = StrictComponentProps<\n typeof StyledActionButton\n>\n","import React, { useCallback } from 'react'\nimport { IconChevronDown, IconCross } from '@mirohq/design-system-icons'\nimport { Trigger as RadixTrigger } from '@radix-ui/react-popover'\n\nimport type { StyledActionButtonProps } from './trigger-action-button.styled'\nimport { StyledActionButton } from './trigger-action-button.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport type TriggerActionButtonProps = Omit<\n StyledActionButtonProps,\n 'label'\n> & {\n openActionLabel: string\n closeActionLabel: string\n clearable?: boolean\n clearActionLabel?: string\n}\n\nexport const TriggerActionButton = ({\n openActionLabel,\n closeActionLabel,\n clearActionLabel,\n clearable,\n size,\n}: TriggerActionButtonProps): React.ReactNode => {\n const { openState, setOpenState, value = [], setValue } = useComboboxContext()\n\n const isEmpty = value.length === 0\n\n const onToggleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (openState) {\n // open action will be performed by radix since it's RadixTrigger\n setOpenState(false)\n }\n\n event.stopPropagation()\n },\n [setOpenState, openState]\n )\n\n const onClearClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n setValue([])\n\n event.stopPropagation()\n },\n [setValue]\n )\n\n if (isEmpty || clearable === false || clearActionLabel === undefined) {\n return (\n <RadixTrigger asChild aria-haspopup='listbox'>\n <StyledActionButton\n label={openState ? closeActionLabel : openActionLabel}\n size={size}\n onClick={onToggleClick}\n >\n <IconChevronDown size='small' weight='thin' />\n </StyledActionButton>\n </RadixTrigger>\n )\n }\n\n return (\n <StyledActionButton\n label={clearActionLabel}\n size={size}\n onClick={onClearClick}\n >\n <IconCross size='small' weight='thin' />\n </StyledActionButton>\n )\n}\n","import React, { useEffect } from 'react'\nimport type { ElementRef } from 'react'\nimport { Combobox as AriakitComboboxTrigger } from '@ariakit/react'\nimport {\n booleanify,\n mergeRefs,\n stringAttrValue,\n} from '@mirohq/design-system-utils'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport { Anchor as RadixAnchor } from '@radix-ui/react-popover'\nimport type {\n BaseInputProps,\n BaseInputStyledProps,\n} from '@mirohq/design-system-base-input'\nimport { BaseInput } from '@mirohq/design-system-base-input'\nimport { mergeProps } from '@react-aria/utils'\nimport { useNewDesignLanguage } from '@mirohq/design-system-experiments'\n\nimport { StyledBaseInput } from './trigger.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { TriggerActionButton } from './trigger-action-button'\n\ninterface TriggerSharedProps extends Omit<BaseInputStyledProps, 'size'> {\n /**\n * The content.\n */\n children?: React.ReactNode\n\n /**\n * The size of the trigger.\n * @default 'large'\n */\n size?: BaseInputProps['size']\n\n /**\n * The content that will be rendered inside the Combobox.Trigger when no value or\n * defaultValue is set.\n */\n placeholder?: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and closed. Will be rendered in a Tooltip.\n */\n openActionLabel: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and open. Will be rendered in a Tooltip.\n */\n closeActionLabel: string\n\n /**\n * Show a button to clear the Combobox value.\n * @default true\n */\n clearable?: boolean\n}\n\nexport type TriggerProps = TriggerSharedProps &\n (\n | { clearable: false; clearActionLabel?: never }\n | {\n /**\n * The label text for Trigger's action button when Combobox has values selected. Will be rendered in a Tooltip.\n */\n clearActionLabel: string\n }\n )\n\nexport const Trigger = React.forwardRef<ElementRef<'input'>, TriggerProps>(\n (\n {\n id,\n children,\n size = 'large',\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n placeholder,\n openActionLabel,\n closeActionLabel,\n clearable = true,\n clearActionLabel,\n onChange,\n onFocus,\n css,\n // @ts-expect-error className required when extending the component with styled()\n className,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n 'aria-disabled': ariaDisabled,\n valid: comboboxValid,\n disabled,\n value = [],\n readOnly,\n triggerRef,\n inputRef,\n searchValue,\n setSearchValue,\n setOpenState,\n setSize,\n setPlaceholder,\n } = useComboboxContext()\n\n const {\n formElementId,\n ariaDescribedBy: formFieldContextDescribedBy,\n ariaInvalid: formFieldAriaInvalid,\n valid: formFieldValid,\n } = useFormFieldContext()\n\n const [v1] = useNewDesignLanguage()\n\n useEffect(() => {\n setSize(size)\n }, [size, setSize])\n\n useEffect(() => {\n setPlaceholder(placeholder)\n }, [setPlaceholder, placeholder])\n\n const valid = formFieldValid ?? comboboxValid\n\n const scrollIntoView = (\n event: React.FocusEvent<HTMLInputElement>\n ): void => {\n const trigger = triggerRef?.current\n const baseInput = inputRef?.current?.parentElement\n\n if (baseInput != null && trigger != null) {\n event.preventDefault()\n baseInput.scrollTo({\n top: trigger.scrollHeight,\n })\n }\n\n if (onFocus !== undefined) {\n onFocus(event)\n }\n }\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n setSearchValue(e.target.value)\n onChange?.(e)\n }\n\n return (\n <RadixAnchor\n ref={mergeRefs([triggerRef, forwardRef])}\n // todo MDS-1112: move this logic to AriakitComboboxTrigger's showOnClick\n onClick={() => {\n if (\n !booleanify(disabled) &&\n !booleanify(ariaDisabled) &&\n !booleanify(readOnly)\n ) {\n setOpenState(true)\n }\n }}\n >\n <AriakitComboboxTrigger\n render={({ ref: ariakitTriggerRef, ...ariakitProps }) => (\n <StyledBaseInput\n aria-disabled={ariaDisabled}\n valid={valid}\n disabled={disabled}\n readOnly={readOnly}\n size={size}\n onChange={onInputChange}\n css={css}\n v1={v1}\n // @ts-expect-error className required when extending the component with styled()\n className={className}\n >\n <BaseInput.Input\n {...mergeProps(ariakitProps, restProps)}\n ref={mergeRefs([\n inputRef,\n ariakitTriggerRef as React.RefObject<HTMLInputElement>,\n ])}\n value={searchValue}\n id={id ?? formElementId}\n aria-describedby={stringAttrValue(\n ariaDescribedBy,\n formFieldContextDescribedBy\n )}\n aria-invalid={ariaInvalid ?? formFieldAriaInvalid}\n placeholder={\n children === null ||\n children === undefined ||\n value.length === 0\n ? placeholder\n : undefined\n }\n onFocus={scrollIntoView}\n />\n {children}\n <TriggerActionButton\n openActionLabel={openActionLabel}\n closeActionLabel={closeActionLabel}\n clearActionLabel={clearActionLabel}\n clearable={clearable}\n size={size}\n />\n </StyledBaseInput>\n )}\n />\n </RadixAnchor>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport {\n contentStyles,\n itemsContainerStyles,\n} from '@mirohq/design-system-base-select'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledItemsContainer = styled(Primitive.div, itemsContainerStyles)\n\nexport const StyledContent = styled(RadixPopover.Content, {\n ...contentStyles,\n width: 'var(--radix-popover-trigger-width)',\n overflowY: 'auto',\n boxSizing: 'border-box',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nexport const useDocumentFragment = (): DocumentFragment | undefined => {\n const [fragment, setFragment] = React.useState<DocumentFragment>()\n\n // we need `useLayoutEffect` here because `DocumentFragment` doesn't exist on the server\n useLayoutEffect(() => {\n setFragment(new DocumentFragment())\n }, [])\n\n return fragment\n}\n","import React, { useCallback } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useDocumentFragment } from './use-document-fragment'\n\n/**\n * Render content in DocumentFragment so items can send its text value to context,\n * otherwise we will have empty chips.\n * Content won't be visible in DOM.\n */\nexport const useInvisibleContent = (): ((\n children: React.ReactNode\n) => React.ReactElement | null) => {\n const fragment = useDocumentFragment()\n\n return useCallback(\n (children: React.ReactNode): React.ReactElement | null =>\n fragment !== undefined\n ? createPortal(<div>{children}</div>, fragment)\n : null,\n [fragment]\n )\n}\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\nimport { ScrollArea } from '@mirohq/design-system-scroll-area'\nimport { theme } from '@mirohq/design-system-stitches'\nimport type { CSSProperties } from '@stitches/react'\nimport { ComboboxList as AriakitComboboxList } from '@ariakit/react'\n\nimport { StyledContent, StyledItemsContainer } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport type {\n Align,\n Overflow,\n PointerDownOutsideEvent,\n Side,\n Sticky,\n} from '../types'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\n\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\nconst RADIX_CONTENT_AVAILABLE_HEIGHT =\n 'var(--radix-popover-content-available-height)'\n\nconst isInsideRef = (\n element: Element | null,\n ref: React.RefObject<Element>\n): boolean => (element != null && ref.current?.contains(element)) ?? false\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Combobox's content.\n */\n children?: ReactNode\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n\n /**\n * Event handler called when a pointer event occurs outside the bounds of the\n * component. It can be prevented by calling event.preventDefault.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void\n\n /**\n * The preferred side of the anchor to render against when open. Will be\n * reversed when collisions occur and avoidCollisions is enabled.\n * @default 'bottom'\n */\n side?: Side\n\n /**\n * The distance in pixels from the anchor.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the anchor. May change when collisions\n * occur.\n * @default 'center'\n */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default 0\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with boundary edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The element used as the collision boundary. By default this is the\n * viewport, though you can provide additional element(s) to be included in\n * this check.\n */\n collisionBoundary?: Element | null\n\n /**\n * The distance in pixels from the boundary edges where collision detection\n * should occur. Accepts a number (same for all sides), or a partial padding\n * object, for example: { top: 20, left: 20 }.\n * @default 0\n */\n collisionPadding?: number | Partial<Record<Side, number>>\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in the\n * boundary as long as the trigger is at least partially in the boundary whilst\n * \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: Sticky\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default true\n */\n hideWhenDetached?: boolean\n\n /**\n * The max height for the content.\n */\n maxHeight?: CSSProperties['maxHeight']\n\n /**\n * Setting overflow as \"visible\" means that the content can extend beyond\n * its collision boundary without any clipping or scrolling being\n * applied.\n * When set to \"auto,\" a scrollbar is added if the content exceeds its\n * boundaries. If no maxHeight is defined, it will be automatically adjusted\n * to fit the remaining space between the trigger and the boundary edge.\n * @default 'visible'\n */\n overflow?: Overflow\n}\n\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(\n (\n {\n side = 'bottom',\n sideOffset = CONTENT_OFFSET,\n align = 'center',\n alignOffset = 0,\n collisionPadding = 0,\n avoidCollisions = true,\n sticky = 'partial',\n hideWhenDetached = true,\n overflow = 'visible',\n maxHeight,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const { triggerRef, contentRef, direction, openState } =\n useComboboxContext()\n\n const getInvisibleContent = useInvisibleContent()\n\n if (!openState) {\n return getInvisibleContent(children)\n }\n\n const content = <StyledItemsContainer>{children}</StyledItemsContainer>\n\n return (\n <StyledContent\n {...restProps}\n dir={direction}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n ref={mergeRefs([forwardRef, contentRef])}\n onOpenAutoFocus={event => event.preventDefault()}\n onInteractOutside={event => {\n const target = event.target as Element | null\n const isTrigger = isInsideRef(target, triggerRef)\n const isContent = isInsideRef(target, contentRef)\n\n if (isTrigger || isContent) {\n event.preventDefault()\n }\n }}\n >\n {/* we have to specify role here otherwise it would be overwritten by Radix.Content */}\n <AriakitComboboxList role='listbox'>\n {overflow === 'auto' ? (\n <ScrollArea type='always' dir={direction}>\n <ScrollArea.Viewport\n css={{\n maxHeight:\n maxHeight !== undefined\n ? `min(${RADIX_CONTENT_AVAILABLE_HEIGHT}, ${\n typeof maxHeight === 'number'\n ? `${maxHeight}px`\n : maxHeight\n })`\n : RADIX_CONTENT_AVAILABLE_HEIGHT,\n }}\n >\n {content}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\n ) : (\n content\n )}\n </AriakitComboboxList>\n </StyledContent>\n )\n }\n)\n","import { ComboboxItem } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { itemStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledItem = styled(ComboboxItem, itemStyles)\n\nexport type StyledItemProps = StrictComponentProps<typeof StyledItem>\n","import React, { createContext, useContext } from 'react'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\n\ninterface GroupProviderSharedProps extends FormElementProps {\n groupId?: string\n}\n\ninterface GroupContextProps extends GroupProviderSharedProps {}\n\ninterface GroupProviderProps extends GroupProviderSharedProps {\n children: React.ReactNode\n}\n\nconst GroupContext = createContext<GroupContextProps>({} as any)\n\nexport const GroupProvider = ({\n children,\n ...restProps\n}: GroupProviderProps): JSX.Element => (\n <GroupContext.Provider\n value={{\n ...restProps,\n }}\n >\n {children}\n </GroupContext.Provider>\n)\n\nexport const useGroupContext = (): GroupContextProps => useContext(GroupContext)\n","import React, { useMemo } from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { ComboboxItemCheck as AriakitComboboxItemCheck } from '@ariakit/react'\nimport { mergeProps } from '@react-aria/utils'\nimport { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\nimport { IconCheckMark } from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\nimport { StyledItemCheck } from '@mirohq/design-system-base-select'\n\nimport { StyledItem } from './item.styled'\nimport type { StyledItemProps } from './item.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { useGroupContext } from '../hooks/use-group-context'\nimport { searchQueryMatch } from '../utils'\n\nexport interface ItemProps extends StyledItemProps {\n /**\n * The value given as data when submitted with a name.\n */\n value: string\n\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the Combobox's item text. Use this when the content is\n * complex, or you have non-textual content inside.\n */\n textValue?: string\n\n /**\n * Item's content.\n */\n children?: ReactNode\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n (\n { disabled = false, value, textValue, children, ...restProps },\n forwardRef\n ) => {\n const { 'aria-disabled': ariaDisabled, ...restAriaDisabledProps } =\n useAriaDisabled(restProps, { allowArrows: true })\n const {\n searchValue,\n autoFilter,\n setItemsMap,\n triggerRef,\n inputRef,\n value: comboboxValue = [],\n } = useComboboxContext()\n\n const { groupId } = useGroupContext()\n\n const displayedText = useMemo((): string => {\n if (textValue !== undefined) {\n return textValue\n }\n\n return typeof children === 'string' ? children : ''\n }, [textValue, children])\n\n useLayoutEffect(() => {\n setItemsMap(\n prevState => new Map(prevState.set(value, { displayedText, groupId }))\n )\n\n return () => {\n setItemsMap(prevState => {\n prevState.delete(value)\n return new Map(prevState)\n })\n }\n }, [setItemsMap, groupId, value, displayedText])\n\n if (\n autoFilter &&\n searchValue.length > 0 &&\n !searchQueryMatch(displayedText, searchValue)\n ) {\n return null\n }\n\n const scrollIntoView = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (\n inputRef?.current?.parentElement != null &&\n triggerRef?.current != null\n ) {\n inputRef.current.parentElement.scrollTo({\n top: triggerRef.current.scrollHeight,\n })\n }\n\n if (restProps.onClick !== undefined) {\n restProps.onClick(event)\n }\n }\n\n // todo MDS-1142 find a better way to fix blinking.\n // We need to use custom state because Ariakit changes its state internally on click even for controlled Combobox\n // and it case `aria-selected` value and checkmark to blink.\n const isSelected = Array.isArray(comboboxValue)\n ? comboboxValue.includes(value)\n : comboboxValue === value\n\n return (\n <StyledItem\n {...mergeProps(restProps, restAriaDisabledProps)}\n focusable\n hideOnClick={false}\n accessibleWhenDisabled={booleanify(ariaDisabled)}\n disabled={booleanify(ariaDisabled) || disabled}\n ref={forwardRef}\n value={value}\n onClick={scrollIntoView}\n aria-selected={isSelected}\n >\n <AriakitComboboxItemCheck\n checked={isSelected}\n render={({ style, ...props }) => (\n // AriakitComboboxItemCheck adds its owm inline styles which we want to omit here\n <StyledItemCheck {...props} />\n )}\n >\n <IconCheckMark\n size='small'\n data-testid={\n process.env.NODE_ENV === 'test'\n ? 'combobox-item-check'\n : undefined\n }\n />\n </AriakitComboboxItemCheck>\n {children}\n </StyledItem>\n )\n }\n)\n","import React from 'react'\nimport type { PopoverPortalProps } from '@radix-ui/react-popover'\nimport { Portal as RadixPortal } from '@radix-ui/react-popover'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface PortalProps extends PopoverPortalProps {\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal = ({\n forceMount: forceMountProp,\n ...restProps\n}: PortalProps): React.ReactNode => {\n const { openState } = useComboboxContext()\n\n // We always need to render content with items to be able to render Chips in Value,\n // but without forceMount Radix will not render Portal when Popover is closed\n const forceMount = !openState || forceMountProp\n\n return <RadixPortal forceMount={forceMount} {...restProps} />\n}\n","import { Group as AriakitGroup } from '@ariakit/react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledGroup = styled(AriakitGroup, {})\n\nexport type StyledGroupProps = StrictComponentProps<typeof StyledGroup>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useId } from '@mirohq/design-system-use-id'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport type { StyledGroupProps } from './group.styled'\nimport { StyledGroup } from './group.styled'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\nimport { GroupProvider } from '../hooks/use-group-context'\n\nexport type GroupProps = StyledGroupProps\n\nexport const Group = React.forwardRef<\n ElementRef<typeof StyledGroup>,\n GroupProps\n>(({ children, ...rest }, forwardRef) => {\n const { autoFilter, searchValue, filteredItems } = useComboboxContext()\n\n const id = useId()\n const getInvisibleContent = useInvisibleContent()\n\n let hasVisibleContent = true\n\n if (autoFilter && searchValue.length > 0) {\n hasVisibleContent = filteredItems.some(item => item.groupId === id)\n }\n\n return (\n <GroupProvider groupId={id}>\n {hasVisibleContent ? (\n <StyledGroup {...rest} ref={forwardRef}>\n {children}\n </StyledGroup>\n ) : (\n getInvisibleContent(children)\n )}\n </GroupProvider>\n )\n})\n","import { GroupLabel } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { groupLabelStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledGroupLabel = styled(GroupLabel, groupLabelStyles)\n\nexport type StyledGroupLabelProps = StrictComponentProps<\n typeof StyledGroupLabel\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledGroupLabel } from './group-label.styled'\nimport type { StyledGroupLabelProps } from './group-label.styled'\n\nexport interface GroupLabelProps extends StyledGroupLabelProps {}\n\nexport const GroupLabel = React.forwardRef<\n ElementRef<typeof StyledGroupLabel>,\n GroupLabelProps\n>((props, forwardRef) => <StyledGroupLabel {...props} ref={forwardRef} />)\n","import React, { useCallback } from 'react'\nimport type { FC } from 'react'\nimport { Chip } from '@mirohq/design-system-chip'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface ValueProps {\n /**\n * The label to make the remove button recognizable by the screen readers.\n */\n unselectAriaLabel: string\n\n /**\n * Allow single or multiple selection.\n * @default true\n */\n multiple?: boolean\n}\n\nexport const Value: FC<ValueProps> = ({\n unselectAriaLabel,\n multiple = true,\n}) => {\n const {\n value = [],\n setValue,\n disabled,\n readOnly,\n 'aria-disabled': ariaDisabled,\n itemsMap,\n } = useComboboxContext()\n const canRemoveItem =\n !booleanify(ariaDisabled) && !booleanify(disabled) && !booleanify(readOnly)\n\n const onItemRemove = useCallback(\n (item: string): void => {\n if (multiple) {\n setValue(prevValue =>\n (prevValue as string[]).filter(value => value !== item)\n )\n } else {\n setValue('')\n }\n },\n [setValue, multiple]\n )\n\n const getItemText = useCallback(\n (itemValue: string) => {\n const itemData = itemsMap.get(itemValue)\n if (itemData === undefined || itemData.displayedText === '') {\n return null\n }\n\n return (\n <Chip\n key={itemValue}\n onRemove={e => {\n onItemRemove(itemValue)\n e.stopPropagation()\n }}\n removable={canRemoveItem}\n removeAriaLabel={`${unselectAriaLabel} ${itemData.displayedText}`}\n data-testid={\n process.env.NODE_ENV === 'test'\n ? `combobox-value-${itemValue}`\n : undefined\n }\n >\n {itemData.displayedText}\n </Chip>\n )\n },\n [canRemoveItem, itemsMap, onItemRemove, unselectAriaLabel]\n )\n\n return (\n <>\n {multiple && Array.isArray(value)\n ? value.map(getItemText)\n : getItemText(value as string)}\n </>\n )\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { separatorStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledSeparator = styled(Primitive.div, separatorStyles)\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { StyledSeparator } from './separator.styled'\nimport type { StyledSeparatorProps } from './separator.styled'\n\nexport interface SeparatorProps extends StyledSeparatorProps {}\n\nexport const Separator = React.forwardRef<\n ElementRef<typeof StyledSeparator>,\n SeparatorProps\n>((props, forwardRef) => {\n const { autoFilter, searchValue } = useComboboxContext()\n\n if (autoFilter && searchValue.length > 0) {\n return null\n }\n\n return <StyledSeparator {...props} ref={forwardRef} aria-hidden />\n})\n","import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledNativeSelect = styled(Primitive.select, {\n // if we support autoComplete, we would have to use visually-hidden styles here\n display: 'none',\n})\n\nexport const StyledComboboxContent = styled(Primitive.div, {\n position: 'relative',\n width: '100%',\n})\n\nexport type StyledComboboxProps = ComponentPropsWithRef<\n typeof StyledComboboxContent\n>\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledNoResult = styled(Primitive.div, {\n padding: '$100',\n})\n\nexport type StyledNoResultProps = StrictComponentProps<typeof StyledNoResult>\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\n\nimport type { StyledNoResultProps } from './no-result.styled'\nimport { StyledNoResult } from './no-result.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface NoResultProps extends StyledNoResultProps {\n /**\n * The content.\n */\n children?: ReactNode\n}\n\nexport const NoResult = React.forwardRef<\n ElementRef<typeof StyledNoResult>,\n NoResultProps\n>((props, forwardRef) => {\n const { autoFilter, searchValue, filteredItems, itemsMap } =\n useComboboxContext()\n\n // when filtering is disabled or idle, just checking if there are any items provided\n const noActiveFiltering =\n !autoFilter || (autoFilter && searchValue.length === 0)\n\n const isVisible = noActiveFiltering\n ? itemsMap.size === 0\n : filteredItems.length === 0\n\n if (isVisible) {\n return <StyledNoResult {...props} ref={forwardRef} />\n }\n\n return null\n})\n","import React, { useEffect } from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\nimport { ComboboxProvider as AriakitComboboxProvider } from '@ariakit/react'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\nimport {\n FloatingLabel,\n useFormFieldContext,\n} from '@mirohq/design-system-base-form'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport {\n BaseTooltipProvider,\n useBaseTooltipContext,\n} from '@mirohq/design-system-base-tooltip'\nimport { usePrevious } from '@mirohq/design-system-use-previous'\n\nimport { Trigger } from './partials/trigger'\nimport { Content } from './partials/content'\nimport { Item } from './partials/item'\nimport { Portal } from './partials/portal'\nimport { Group } from './partials/group'\nimport { GroupLabel } from './partials/group-label'\nimport { Value } from './partials/value'\nimport { Separator } from './partials/separator'\nimport { StyledComboboxContent, StyledNativeSelect } from './combobox.styled'\nimport type { StyledComboboxProps } from './combobox.styled'\nimport {\n ComboboxProvider,\n useComboboxContext,\n} from './hooks/use-combobox-context'\nimport type { Direction } from './types'\nimport { NoResult } from './partials/no-result'\n\nexport interface ComboboxProps extends FormElementProps, StyledComboboxProps {\n /**\n * The value of the combobox when initially rendered. Use when you do not need\n * to control the state of the combobox.\n */\n defaultValue?: string[] | string\n\n /**\n * The controlled value of the combobox. Should be used in conjunction with\n * onValueChange.\n */\n value?: string[] | string\n\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string[] | string) => void\n\n /**\n * The controlled search value to filter items. Should be used in conjunction with\n * onSearchValueChange.\n */\n searchValue?: string\n\n /**\n * Event handler called when the trigger input value changes.\n */\n onSearchValueChange?: (value: string) => void\n\n /**\n * The open state of the combobox when it is initially rendered. Use when you do\n * not need to control its open state.\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * The controlled open state of the combobox. Must be used in conjunction with\n * onOpen and onClose.\n */\n open?: boolean\n\n /**\n * Event handler called when the combobox opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the combobox closes.\n */\n onClose?: () => void\n\n /**\n * The reading direction of the combobox when applicable. If omitted, inherits\n * globally from DirectionProvider or assumes LTR (left-to-right) reading\n * mode.\n * @default 'ltr'\n */\n direction?: Direction\n\n /**\n * The content of the combobox\n */\n children?: React.ReactNode\n\n /**\n * Enables/disabled automatic filtering.\n * @default true\n */\n autoFilter?: boolean\n\n /**\n * The name of the combobox. Submitted with its owning form as part of a\n * name/value pair.\n */\n name?: string\n\n /**\n * Allow single or multiple selection.\n * @default true\n */\n multiple?: boolean\n}\n\nconst Root = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n {\n multiple = true,\n value: valueProp,\n onValueChange,\n name,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n openState,\n setOpenState,\n value = [],\n setValue,\n required,\n readOnly,\n 'aria-disabled': ariaDisabled,\n disabled,\n direction,\n size,\n placeholder,\n triggerRef,\n } = useComboboxContext()\n\n const {\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n label,\n isFloatingLabel,\n focused,\n formElementRef,\n } = useFormFieldContext<HTMLSelectElement>()\n\n useEffect(() => {\n setRequired?.(required)\n setDisabled?.(disabled)\n setAriaDisabled?.(ariaDisabled)\n setReadOnly?.(readOnly)\n }, [\n readOnly,\n disabled,\n ariaDisabled,\n required,\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n ])\n\n const { ignoreNextTooltip } = useBaseTooltipContext()\n const prevOpen = usePrevious(openState)\n\n useEffect(() => {\n if (prevOpen === true && !openState) {\n ignoreNextTooltip()\n }\n }, [ignoreNextTooltip, openState, prevOpen])\n\n const shouldUseFloatingLabel = label !== null && isFloatingLabel\n const isFloating =\n placeholder !== undefined || value.length !== 0 || focused\n\n const onSetSelectedValue = (newValue: string | string[]): void => {\n // If no defaultValue is provided the newValue is always an array so we need validate the types\n if (!multiple && Array.isArray(newValue)) {\n setValue(newValue[0])\n } else if (multiple && !Array.isArray(newValue)) {\n setValue([newValue])\n } else {\n setValue(newValue)\n }\n }\n\n const onOpenChange = (value: boolean): void => {\n if (!booleanify(readOnly)) {\n setOpenState(value)\n }\n }\n\n const isFormControl = Boolean(triggerRef.current?.closest('form'))\n\n const getOptionValue = (\n itemValue: string | string[]\n ): JSX.Element | JSX.Element[] => {\n if (multiple && Array.isArray(itemValue)) {\n return (value as string[]).map(itemValue => (\n <option key={itemValue} value={itemValue}>\n {itemValue}\n </option>\n ))\n } else {\n return (\n <option key={itemValue as string} value={itemValue}>\n {itemValue}\n </option>\n )\n }\n }\n\n return (\n <RadixPopover.Root open={openState} onOpenChange={onOpenChange}>\n <AriakitComboboxProvider\n open={openState}\n setOpen={onOpenChange}\n selectedValue={value}\n setSelectedValue={onSetSelectedValue}\n >\n <StyledComboboxContent\n ref={forwardRef}\n {...restProps}\n dir={direction}\n data-form-element='select'\n >\n {shouldUseFloatingLabel && (\n <FloatingLabel floating={isFloating} size={size}>\n {label}\n </FloatingLabel>\n )}\n {children}\n </StyledComboboxContent>\n </AriakitComboboxProvider>\n {isFormControl && (\n <StyledNativeSelect\n multiple={multiple}\n autoComplete='off'\n name={name}\n tabIndex={-1}\n aria-hidden='true'\n ref={formElementRef}\n required={required}\n disabled={disabled}\n aria-disabled={ariaDisabled}\n value={value}\n // since we don't support autoComplete there is no way this select value will change,\n // although we still need to provide `onChange` since we use `value` and not `defaultValue`\n onChange={() => {}}\n >\n {value.length === 0 ? (\n <option value='' />\n ) : (\n // since we don't support autoComplete we can render here only selected values\n getOptionValue(value)\n )}\n </StyledNativeSelect>\n )}\n </RadixPopover.Root>\n )\n }\n)\n\nexport const Combobox = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled,\n defaultOpen = false,\n open,\n valid,\n disabled,\n readOnly,\n required,\n value,\n defaultValue,\n onOpen,\n onClose,\n searchValue,\n onSearchValueChange,\n onValueChange,\n direction = 'ltr',\n autoFilter = true,\n ...restProps\n },\n forwardRef\n ) => (\n <ComboboxProvider\n defaultValue={defaultValue}\n value={value}\n onValueChange={onValueChange}\n searchValue={searchValue}\n onSearchValueChange={onSearchValueChange}\n defaultOpen={defaultOpen}\n open={open}\n onOpen={onOpen}\n onClose={onClose}\n valid={valid}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n aria-disabled={ariaDisabled}\n direction={direction}\n autoFilter={autoFilter}\n >\n <BaseTooltipProvider>\n <Root {...restProps} value={value} ref={forwardRef} />\n </BaseTooltipProvider>\n </ComboboxProvider>\n )\n) as ForwardRefExoticComponent<ComboboxProps> & Partials\n\nexport interface Partials {\n Portal: typeof Portal\n Trigger: typeof Trigger\n Content: typeof Content\n Item: typeof Item\n Group: typeof Group\n GroupLabel: typeof GroupLabel\n Value: typeof Value\n Separator: typeof Separator\n NoResult: typeof NoResult\n}\n\nCombobox.Portal = Portal\nCombobox.Trigger = Trigger\nCombobox.Content = Content\nCombobox.Item = Item\nCombobox.Group = Group\nCombobox.GroupLabel = GroupLabel\nCombobox.Value = Value\nCombobox.Separator = Separator\nCombobox.NoResult = NoResult\n"],"names":["styled","BaseInput","createContext","useRef","useControllableState","useState","useFormFieldContext","useMemo","jsx","useContext","useCallback","RadixTrigger","IconChevronDown","IconCross","React","useNewDesignLanguage","useEffect","RadixAnchor","mergeRefs","booleanify","AriakitComboboxTrigger","jsxs","mergeProps","stringAttrValue","Primitive","itemsContainerStyles","RadixPopover","contentStyles","useLayoutEffect","createPortal","theme","AriakitComboboxList","ScrollArea","ComboboxItem","itemStyles","useAriaDisabled","AriakitComboboxItemCheck","StyledItemCheck","IconCheckMark","RadixPortal","AriakitGroup","useId","GroupLabel","groupLabelStyles","value","Chip","Fragment","separatorStyles","useBaseTooltipContext","usePrevious","itemValue","AriakitComboboxProvider","FloatingLabel","BaseTooltipProvider"],"mappings":"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"}
|
package/dist/module.js
CHANGED
|
@@ -508,7 +508,7 @@ const Item = React.forwardRef(
|
|
|
508
508
|
restProps.onClick(event);
|
|
509
509
|
}
|
|
510
510
|
};
|
|
511
|
-
const isSelected = comboboxValue.includes(value);
|
|
511
|
+
const isSelected = Array.isArray(comboboxValue) ? comboboxValue.includes(value) : comboboxValue === value;
|
|
512
512
|
return /* @__PURE__ */ jsxs(
|
|
513
513
|
StyledItem,
|
|
514
514
|
{
|
|
@@ -572,7 +572,10 @@ const StyledGroupLabel = styled(GroupLabel$1, groupLabelStyles);
|
|
|
572
572
|
|
|
573
573
|
const GroupLabel = React.forwardRef((props, forwardRef) => /* @__PURE__ */ jsx(StyledGroupLabel, { ...props, ref: forwardRef }));
|
|
574
574
|
|
|
575
|
-
const Value = ({
|
|
575
|
+
const Value = ({
|
|
576
|
+
unselectAriaLabel,
|
|
577
|
+
multiple = true
|
|
578
|
+
}) => {
|
|
576
579
|
const {
|
|
577
580
|
value = [],
|
|
578
581
|
setValue,
|
|
@@ -584,9 +587,15 @@ const Value = ({ unselectAriaLabel }) => {
|
|
|
584
587
|
const canRemoveItem = !booleanify(ariaDisabled) && !booleanify(disabled) && !booleanify(readOnly);
|
|
585
588
|
const onItemRemove = useCallback(
|
|
586
589
|
(item) => {
|
|
587
|
-
|
|
590
|
+
if (multiple) {
|
|
591
|
+
setValue(
|
|
592
|
+
(prevValue) => prevValue.filter((value2) => value2 !== item)
|
|
593
|
+
);
|
|
594
|
+
} else {
|
|
595
|
+
setValue("");
|
|
596
|
+
}
|
|
588
597
|
},
|
|
589
|
-
[setValue]
|
|
598
|
+
[setValue, multiple]
|
|
590
599
|
);
|
|
591
600
|
const getItemText = useCallback(
|
|
592
601
|
(itemValue) => {
|
|
@@ -611,7 +620,7 @@ const Value = ({ unselectAriaLabel }) => {
|
|
|
611
620
|
},
|
|
612
621
|
[canRemoveItem, itemsMap, onItemRemove, unselectAriaLabel]
|
|
613
622
|
);
|
|
614
|
-
return /* @__PURE__ */ jsx(Fragment, { children: value.map(getItemText) });
|
|
623
|
+
return /* @__PURE__ */ jsx(Fragment, { children: multiple && Array.isArray(value) ? value.map(getItemText) : getItemText(value) });
|
|
615
624
|
};
|
|
616
625
|
|
|
617
626
|
const StyledSeparator = styled(Primitive.div, separatorStyles);
|
|
@@ -648,7 +657,14 @@ const NoResult = React.forwardRef((props, forwardRef) => {
|
|
|
648
657
|
});
|
|
649
658
|
|
|
650
659
|
const Root = React.forwardRef(
|
|
651
|
-
({
|
|
660
|
+
({
|
|
661
|
+
multiple = true,
|
|
662
|
+
value: valueProp,
|
|
663
|
+
onValueChange,
|
|
664
|
+
name,
|
|
665
|
+
children,
|
|
666
|
+
...restProps
|
|
667
|
+
}, forwardRef) => {
|
|
652
668
|
var _a;
|
|
653
669
|
const {
|
|
654
670
|
openState,
|
|
@@ -699,7 +715,13 @@ const Root = React.forwardRef(
|
|
|
699
715
|
const shouldUseFloatingLabel = label !== null && isFloatingLabel;
|
|
700
716
|
const isFloating = placeholder !== void 0 || value.length !== 0 || focused;
|
|
701
717
|
const onSetSelectedValue = (newValue) => {
|
|
702
|
-
|
|
718
|
+
if (!multiple && Array.isArray(newValue)) {
|
|
719
|
+
setValue(newValue[0]);
|
|
720
|
+
} else if (multiple && !Array.isArray(newValue)) {
|
|
721
|
+
setValue([newValue]);
|
|
722
|
+
} else {
|
|
723
|
+
setValue(newValue);
|
|
724
|
+
}
|
|
703
725
|
};
|
|
704
726
|
const onOpenChange = (value2) => {
|
|
705
727
|
if (!booleanify(readOnly)) {
|
|
@@ -707,6 +729,13 @@ const Root = React.forwardRef(
|
|
|
707
729
|
}
|
|
708
730
|
};
|
|
709
731
|
const isFormControl = Boolean((_a = triggerRef.current) == null ? void 0 : _a.closest("form"));
|
|
732
|
+
const getOptionValue = (itemValue) => {
|
|
733
|
+
if (multiple && Array.isArray(itemValue)) {
|
|
734
|
+
return value.map((itemValue2) => /* @__PURE__ */ jsx("option", { value: itemValue2, children: itemValue2 }, itemValue2));
|
|
735
|
+
} else {
|
|
736
|
+
return /* @__PURE__ */ jsx("option", { value: itemValue, children: itemValue }, itemValue);
|
|
737
|
+
}
|
|
738
|
+
};
|
|
710
739
|
return /* @__PURE__ */ jsxs(RadixPopover.Root, { open: openState, onOpenChange, children: [
|
|
711
740
|
/* @__PURE__ */ jsx(
|
|
712
741
|
ComboboxProvider$1,
|
|
@@ -733,7 +762,7 @@ const Root = React.forwardRef(
|
|
|
733
762
|
isFormControl && /* @__PURE__ */ jsx(
|
|
734
763
|
StyledNativeSelect,
|
|
735
764
|
{
|
|
736
|
-
multiple
|
|
765
|
+
multiple,
|
|
737
766
|
autoComplete: "off",
|
|
738
767
|
name,
|
|
739
768
|
tabIndex: -1,
|
|
@@ -747,7 +776,7 @@ const Root = React.forwardRef(
|
|
|
747
776
|
},
|
|
748
777
|
children: value.length === 0 ? /* @__PURE__ */ jsx("option", { value: "" }) : (
|
|
749
778
|
// since we don't support autoComplete we can render here only selected values
|
|
750
|
-
|
|
779
|
+
getOptionValue(value)
|
|
751
780
|
)
|
|
752
781
|
}
|
|
753
782
|
)
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../src/partials/trigger.styled.tsx","../src/utils.ts","../src/hooks/use-combobox-context.tsx","../src/partials/trigger-action-button.styled.tsx","../src/partials/trigger-action-button.tsx","../src/partials/trigger.tsx","../src/partials/content.styled.tsx","../src/hooks/use-document-fragment.ts","../src/hooks/use-invisible-content.tsx","../src/partials/content.tsx","../src/partials/item.styled.tsx","../src/hooks/use-group-context.tsx","../src/partials/item.tsx","../src/partials/portal.tsx","../src/partials/group.styled.tsx","../src/partials/group.tsx","../src/partials/group-label.styled.tsx","../src/partials/group-label.tsx","../src/partials/value.tsx","../src/partials/separator.styled.tsx","../src/partials/separator.tsx","../src/combobox.styled.tsx","../src/partials/no-result.styled.tsx","../src/partials/no-result.tsx","../src/combobox.tsx"],"sourcesContent":["import { styled } from '@mirohq/design-system-stitches'\nimport { BaseInput } from '@mirohq/design-system-base-input'\nimport type { ComponentPropsWithRef } from 'react'\n\nexport const StyledBaseInput = styled(BaseInput, {\n flexWrap: 'wrap',\n flexGrow: 1,\n gap: '$50',\n\n '&[data-valid], &[data-invalid]': {\n // we don't need a bigger padding here as Input component will render its own icon\n paddingRight: '$100',\n },\n\n '& input': {\n minWidth: '$8',\n flexBasis: 0,\n flexGrow: 1,\n },\n\n variants: {\n size: {\n medium: {\n minHeight: '$8',\n height: 'auto',\n padding: '3px $100',\n paddingRight: '$500',\n fontSize: '$175',\n },\n large: {\n minHeight: '$10',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n 'x-large': {\n minHeight: '$12',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n },\n v1: {\n true: {},\n },\n },\n compoundVariants: [\n {\n v1: true,\n size: 'x-large',\n css: {\n fontSize: '$200',\n lineHeight: '$500',\n },\n },\n ],\n})\n\nexport type StyledBaseInputProps = ComponentPropsWithRef<typeof StyledBaseInput>\n","export function searchQueryMatch(\n displayedText: string,\n searchValue: string\n): boolean {\n return displayedText.toLowerCase().includes(searchValue.toLowerCase())\n}\n","import React, {\n createContext,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { useControllableState } from '@radix-ui/react-use-controllable-state'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\n\nimport type { Direction } from '../types'\nimport type { StyledBaseInputProps } from '../partials/trigger.styled'\nimport { searchQueryMatch } from '../utils'\n\ninterface ItemData {\n displayedText: string\n groupId: string | undefined\n}\n\ninterface ComboboxProviderSharedProps extends FormElementProps {\n value?: string[]\n direction?: Direction\n autoFilter: boolean\n}\n\ninterface ComboboxContextProps extends ComboboxProviderSharedProps {\n setOpenState: React.Dispatch<React.SetStateAction<boolean | undefined>>\n openState: boolean\n\n setValue: React.Dispatch<React.SetStateAction<string[] | undefined>>\n\n triggerRef: React.RefObject<HTMLInputElement>\n inputRef: React.RefObject<HTMLInputElement>\n contentRef: React.RefObject<HTMLDivElement>\n\n searchValue: string\n setSearchValue: React.Dispatch<React.SetStateAction<string | undefined>>\n\n placeholder?: string\n setPlaceholder: React.Dispatch<React.SetStateAction<string | undefined>>\n\n size: StyledBaseInputProps['size']\n setSize: React.Dispatch<React.SetStateAction<StyledBaseInputProps['size']>>\n\n /**\n * includes all visible and hidden items to render Chips and get filtered items\n */\n itemsMap: Map<string, ItemData>\n setItemsMap: React.Dispatch<React.SetStateAction<Map<string, ItemData>>>\n\n /**\n * @returns filtered items based on itemsMap\n * @returns empty array when searchValue is empty or auto filtering is disabled\n */\n filteredItems: ItemData[]\n}\n\ninterface ComboboxProviderProps extends ComboboxProviderSharedProps {\n open?: boolean\n defaultOpen?: boolean\n onOpen?: () => void\n onClose?: () => void\n\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n\n searchValue?: string\n onSearchValueChange?: (value: string) => void\n}\n\nconst ComboboxContext = createContext<ComboboxContextProps>({} as any)\n\nexport const ComboboxProvider = ({\n children,\n open: openProp,\n defaultOpen,\n onOpen,\n onClose,\n valid,\n value: valueProp,\n defaultValue: defaultValueProp,\n onValueChange,\n searchValue: searchValueProp,\n onSearchValueChange,\n autoFilter,\n ...restProps\n}: PropsWithChildren<ComboboxProviderProps>): JSX.Element => {\n const triggerRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n // todo MDS-1141: remove default false value\n const [openState = false, setOpenState] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: state => {\n if (state) {\n onOpen?.()\n } else {\n onClose?.()\n }\n },\n })\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValueProp,\n onChange: onValueChange,\n })\n\n // todo MDS-1141: remove default false value\n const [searchValue = '', setSearchValue] = useControllableState({\n prop: searchValueProp,\n defaultProp: '',\n onChange: onSearchValueChange,\n })\n\n const [size, setSize] = useState<StyledBaseInputProps['size']>()\n const [placeholder, setPlaceholder] = useState<string | undefined>()\n\n const [itemsMap, setItemsMap] = useState<Map<string, ItemData>>(new Map())\n\n const { valid: formFieldValid } = useFormFieldContext()\n\n const filteredItems = useMemo(() => {\n if (searchValue.length > 0) {\n return Array.from(itemsMap.values()).filter(item =>\n searchQueryMatch(item.displayedText, searchValue)\n )\n }\n\n return []\n }, [itemsMap, searchValue])\n\n return (\n <ComboboxContext.Provider\n value={{\n ...restProps,\n valid: valid ?? formFieldValid,\n openState,\n setOpenState,\n value,\n setValue,\n triggerRef,\n inputRef,\n contentRef,\n autoFilter,\n searchValue,\n setSearchValue,\n itemsMap,\n setItemsMap,\n filteredItems,\n placeholder,\n setPlaceholder,\n size,\n setSize,\n }}\n >\n {children}\n </ComboboxContext.Provider>\n )\n}\n\nexport const useComboboxContext = (): ComboboxContextProps =>\n useContext(ComboboxContext)\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { BaseInput } from '@mirohq/design-system-base-input'\n\nexport const StyledActionButton = styled(BaseInput.ActionButton, {\n position: 'absolute',\n right: '$100',\n\n variants: {\n size: {\n medium: {\n top: '1px',\n },\n large: {\n top: '5px',\n },\n 'x-large': {\n top: '9px',\n },\n },\n },\n\n defaultVariants: {\n size: 'large',\n },\n})\n\nexport type StyledActionButtonProps = StrictComponentProps<\n typeof StyledActionButton\n>\n","import React, { useCallback } from 'react'\nimport { IconChevronDown, IconCross } from '@mirohq/design-system-icons'\nimport { Trigger as RadixTrigger } from '@radix-ui/react-popover'\n\nimport type { StyledActionButtonProps } from './trigger-action-button.styled'\nimport { StyledActionButton } from './trigger-action-button.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport type TriggerActionButtonProps = Omit<\n StyledActionButtonProps,\n 'label'\n> & {\n openActionLabel: string\n closeActionLabel: string\n clearable?: boolean\n clearActionLabel?: string\n}\n\nexport const TriggerActionButton: React.FC<TriggerActionButtonProps> = ({\n openActionLabel,\n closeActionLabel,\n clearActionLabel,\n clearable,\n size,\n}) => {\n const { openState, setOpenState, value = [], setValue } = useComboboxContext()\n\n const isEmpty = value.length === 0\n\n const onToggleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (openState) {\n // open action will be performed by radix since it's RadixTrigger\n setOpenState(false)\n }\n\n event.stopPropagation()\n },\n [setOpenState, openState]\n )\n\n const onClearClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n setValue([])\n\n event.stopPropagation()\n },\n [setValue]\n )\n\n if (isEmpty || clearable === false || clearActionLabel === undefined) {\n return (\n <RadixTrigger asChild aria-haspopup='listbox'>\n <StyledActionButton\n label={openState ? closeActionLabel : openActionLabel}\n size={size}\n onClick={onToggleClick}\n >\n <IconChevronDown size='small' weight='thin' />\n </StyledActionButton>\n </RadixTrigger>\n )\n }\n\n return (\n <StyledActionButton\n label={clearActionLabel}\n size={size}\n onClick={onClearClick}\n >\n <IconCross size='small' weight='thin' />\n </StyledActionButton>\n )\n}\n","import React, { useEffect } from 'react'\nimport type { ElementRef } from 'react'\nimport { Combobox as AriakitComboboxTrigger } from '@ariakit/react'\nimport {\n booleanify,\n mergeRefs,\n stringAttrValue,\n} from '@mirohq/design-system-utils'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport { Anchor as RadixAnchor } from '@radix-ui/react-popover'\nimport type {\n BaseInputProps,\n BaseInputStyledProps,\n} from '@mirohq/design-system-base-input'\nimport { BaseInput } from '@mirohq/design-system-base-input'\nimport { mergeProps } from '@react-aria/utils'\nimport { useNewDesignLanguage } from '@mirohq/design-system-experiments'\n\nimport { StyledBaseInput } from './trigger.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { TriggerActionButton } from './trigger-action-button'\n\ninterface TriggerSharedProps extends Omit<BaseInputStyledProps, 'size'> {\n /**\n * The content.\n */\n children?: React.ReactNode\n\n /**\n * The size of the trigger.\n * @default 'large'\n */\n size?: BaseInputProps['size']\n\n /**\n * The content that will be rendered inside the Combobox.Trigger when no value or\n * defaultValue is set.\n */\n placeholder?: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and closed. Will be rendered in a Tooltip.\n */\n openActionLabel: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and open. Will be rendered in a Tooltip.\n */\n closeActionLabel: string\n\n /**\n * Show a button to clear the Combobox value.\n * @default true\n */\n clearable?: boolean\n}\n\nexport type TriggerProps = TriggerSharedProps &\n (\n | { clearable: false; clearActionLabel?: never }\n | {\n /**\n * The label text for Trigger's action button when Combobox has values selected. Will be rendered in a Tooltip.\n */\n clearActionLabel: string\n }\n )\n\nexport const Trigger = React.forwardRef<ElementRef<'input'>, TriggerProps>(\n (\n {\n id,\n children,\n size = 'large',\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n placeholder,\n openActionLabel,\n closeActionLabel,\n clearable = true,\n clearActionLabel,\n onChange,\n onFocus,\n css,\n // @ts-expect-error className required when extending the component with styled()\n className,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n 'aria-disabled': ariaDisabled,\n valid: comboboxValid,\n disabled,\n value = [],\n readOnly,\n triggerRef,\n inputRef,\n searchValue,\n setSearchValue,\n setOpenState,\n setSize,\n setPlaceholder,\n } = useComboboxContext()\n\n const {\n formElementId,\n ariaDescribedBy: formFieldContextDescribedBy,\n ariaInvalid: formFieldAriaInvalid,\n valid: formFieldValid,\n } = useFormFieldContext()\n\n const [v1] = useNewDesignLanguage()\n\n useEffect(() => {\n setSize(size)\n }, [size, setSize])\n\n useEffect(() => {\n setPlaceholder(placeholder)\n }, [setPlaceholder, placeholder])\n\n const valid = formFieldValid ?? comboboxValid\n\n const scrollIntoView = (\n event: React.FocusEvent<HTMLInputElement>\n ): void => {\n const trigger = triggerRef?.current\n const baseInput = inputRef?.current?.parentElement\n\n if (baseInput != null && trigger != null) {\n event.preventDefault()\n baseInput.scrollTo({\n top: trigger.scrollHeight,\n })\n }\n\n if (onFocus !== undefined) {\n onFocus(event)\n }\n }\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n setSearchValue(e.target.value)\n onChange?.(e)\n }\n\n return (\n <RadixAnchor\n ref={mergeRefs([triggerRef, forwardRef])}\n // todo MDS-1112: move this logic to AriakitComboboxTrigger's showOnClick\n onClick={() => {\n if (\n !booleanify(disabled) &&\n !booleanify(ariaDisabled) &&\n !booleanify(readOnly)\n ) {\n setOpenState(true)\n }\n }}\n >\n <AriakitComboboxTrigger\n render={({ ref: ariakitTriggerRef, ...ariakitProps }) => (\n <StyledBaseInput\n aria-disabled={ariaDisabled}\n valid={valid}\n disabled={disabled}\n readOnly={readOnly}\n size={size}\n onChange={onInputChange}\n css={css}\n v1={v1}\n // @ts-expect-error className required when extending the component with styled()\n className={className}\n >\n <BaseInput.Input\n {...mergeProps(ariakitProps, restProps)}\n ref={mergeRefs([\n inputRef,\n ariakitTriggerRef as React.RefObject<HTMLInputElement>,\n ])}\n value={searchValue}\n id={id ?? formElementId}\n aria-describedby={stringAttrValue(\n ariaDescribedBy,\n formFieldContextDescribedBy\n )}\n aria-invalid={ariaInvalid ?? formFieldAriaInvalid}\n placeholder={\n children === null ||\n children === undefined ||\n value.length === 0\n ? placeholder\n : undefined\n }\n onFocus={scrollIntoView}\n />\n {children}\n <TriggerActionButton\n openActionLabel={openActionLabel}\n closeActionLabel={closeActionLabel}\n clearActionLabel={clearActionLabel}\n clearable={clearable}\n size={size}\n />\n </StyledBaseInput>\n )}\n />\n </RadixAnchor>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport {\n contentStyles,\n itemsContainerStyles,\n} from '@mirohq/design-system-base-select'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledItemsContainer = styled(Primitive.div, itemsContainerStyles)\n\nexport const StyledContent = styled(RadixPopover.Content, {\n ...contentStyles,\n width: 'var(--radix-popover-trigger-width)',\n overflowY: 'auto',\n boxSizing: 'border-box',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nexport const useDocumentFragment = (): DocumentFragment | undefined => {\n const [fragment, setFragment] = React.useState<DocumentFragment>()\n\n // we need `useLayoutEffect` here because `DocumentFragment` doesn't exist on the server\n useLayoutEffect(() => {\n setFragment(new DocumentFragment())\n }, [])\n\n return fragment\n}\n","import React, { useCallback } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useDocumentFragment } from './use-document-fragment'\n\n/**\n * Render content in DocumentFragment so items can send its text value to context,\n * otherwise we will have empty chips.\n * Content won't be visible in DOM.\n */\nexport const useInvisibleContent = (): ((\n children: React.ReactNode\n) => React.ReactElement | null) => {\n const fragment = useDocumentFragment()\n\n return useCallback(\n (children: React.ReactNode): React.ReactElement | null =>\n fragment !== undefined\n ? createPortal(<div>{children}</div>, fragment)\n : null,\n [fragment]\n )\n}\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\nimport { ScrollArea } from '@mirohq/design-system-scroll-area'\nimport { theme } from '@mirohq/design-system-stitches'\nimport type { CSSProperties } from '@stitches/react'\nimport { ComboboxList as AriakitComboboxList } from '@ariakit/react'\n\nimport { StyledContent, StyledItemsContainer } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport type {\n Align,\n Overflow,\n PointerDownOutsideEvent,\n Side,\n Sticky,\n} from '../types'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\n\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\nconst RADIX_CONTENT_AVAILABLE_HEIGHT =\n 'var(--radix-popover-content-available-height)'\n\nconst isInsideRef = (\n element: Element | null,\n ref: React.RefObject<Element>\n): boolean => (element != null && ref.current?.contains(element)) ?? false\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Combobox's content.\n */\n children?: ReactNode\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n\n /**\n * Event handler called when a pointer event occurs outside the bounds of the\n * component. It can be prevented by calling event.preventDefault.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void\n\n /**\n * The preferred side of the anchor to render against when open. Will be\n * reversed when collisions occur and avoidCollisions is enabled.\n * @default 'bottom'\n */\n side?: Side\n\n /**\n * The distance in pixels from the anchor.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the anchor. May change when collisions\n * occur.\n * @default 'center'\n */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default 0\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with boundary edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The element used as the collision boundary. By default this is the\n * viewport, though you can provide additional element(s) to be included in\n * this check.\n */\n collisionBoundary?: Element | null\n\n /**\n * The distance in pixels from the boundary edges where collision detection\n * should occur. Accepts a number (same for all sides), or a partial padding\n * object, for example: { top: 20, left: 20 }.\n * @default 0\n */\n collisionPadding?: number | Partial<Record<Side, number>>\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in the\n * boundary as long as the trigger is at least partially in the boundary whilst\n * \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: Sticky\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default true\n */\n hideWhenDetached?: boolean\n\n /**\n * The max height for the content.\n */\n maxHeight?: CSSProperties['maxHeight']\n\n /**\n * Setting overflow as \"visible\" means that the content can extend beyond\n * its collision boundary without any clipping or scrolling being\n * applied.\n * When set to \"auto,\" a scrollbar is added if the content exceeds its\n * boundaries. If no maxHeight is defined, it will be automatically adjusted\n * to fit the remaining space between the trigger and the boundary edge.\n * @default 'visible'\n */\n overflow?: Overflow\n}\n\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(\n (\n {\n side = 'bottom',\n sideOffset = CONTENT_OFFSET,\n align = 'center',\n alignOffset = 0,\n collisionPadding = 0,\n avoidCollisions = true,\n sticky = 'partial',\n hideWhenDetached = true,\n overflow = 'visible',\n maxHeight,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const { triggerRef, contentRef, direction, openState } =\n useComboboxContext()\n\n const getInvisibleContent = useInvisibleContent()\n\n if (!openState) {\n return getInvisibleContent(children)\n }\n\n const content = <StyledItemsContainer>{children}</StyledItemsContainer>\n\n return (\n <StyledContent\n {...restProps}\n dir={direction}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n ref={mergeRefs([forwardRef, contentRef])}\n onOpenAutoFocus={event => event.preventDefault()}\n onInteractOutside={event => {\n const target = event.target as Element | null\n const isTrigger = isInsideRef(target, triggerRef)\n const isContent = isInsideRef(target, contentRef)\n\n if (isTrigger || isContent) {\n event.preventDefault()\n }\n }}\n >\n {/* we have to specify role here otherwise it would be overwritten by Radix.Content */}\n <AriakitComboboxList role='listbox'>\n {overflow === 'auto' ? (\n <ScrollArea type='always' dir={direction}>\n <ScrollArea.Viewport\n css={{\n maxHeight:\n maxHeight !== undefined\n ? `min(${RADIX_CONTENT_AVAILABLE_HEIGHT}, ${\n typeof maxHeight === 'number'\n ? `${maxHeight}px`\n : maxHeight\n })`\n : RADIX_CONTENT_AVAILABLE_HEIGHT,\n }}\n >\n {content}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\n ) : (\n content\n )}\n </AriakitComboboxList>\n </StyledContent>\n )\n }\n)\n","import { ComboboxItem } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { itemStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledItem = styled(ComboboxItem, itemStyles)\n\nexport type StyledItemProps = StrictComponentProps<typeof StyledItem>\n","import React, { createContext, useContext } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\n\ninterface GroupProviderSharedProps extends FormElementProps {\n groupId?: string\n}\n\ninterface GroupContextProps extends GroupProviderSharedProps {}\n\ninterface GroupProviderProps extends GroupProviderSharedProps {}\n\nconst GroupContext = createContext<GroupContextProps>({} as any)\n\nexport const GroupProvider = ({\n children,\n ...restProps\n}: PropsWithChildren<GroupProviderProps>): JSX.Element => (\n <GroupContext.Provider\n value={{\n ...restProps,\n }}\n >\n {children}\n </GroupContext.Provider>\n)\n\nexport const useGroupContext = (): GroupContextProps => useContext(GroupContext)\n","import React, { useMemo } from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { ComboboxItemCheck as AriakitComboboxItemCheck } from '@ariakit/react'\nimport { mergeProps } from '@react-aria/utils'\nimport { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\nimport { IconCheckMark } from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\nimport { StyledItemCheck } from '@mirohq/design-system-base-select'\n\nimport { StyledItem } from './item.styled'\nimport type { StyledItemProps } from './item.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { useGroupContext } from '../hooks/use-group-context'\nimport { searchQueryMatch } from '../utils'\n\nexport interface ItemProps extends StyledItemProps {\n /**\n * The value given as data when submitted with a name.\n */\n value: string\n\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the Combobox's item text. Use this when the content is\n * complex, or you have non-textual content inside.\n */\n textValue?: string\n\n /**\n * Item's content.\n */\n children?: ReactNode\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n (\n { disabled = false, value, textValue, children, ...restProps },\n forwardRef\n ) => {\n const { 'aria-disabled': ariaDisabled, ...restAriaDisabledProps } =\n useAriaDisabled(restProps, { allowArrows: true })\n const {\n searchValue,\n autoFilter,\n setItemsMap,\n triggerRef,\n inputRef,\n value: comboboxValue = [],\n } = useComboboxContext()\n\n const { groupId } = useGroupContext()\n\n const displayedText = useMemo((): string => {\n if (textValue !== undefined) {\n return textValue\n }\n\n return typeof children === 'string' ? children : ''\n }, [textValue, children])\n\n useLayoutEffect(() => {\n setItemsMap(\n prevState => new Map(prevState.set(value, { displayedText, groupId }))\n )\n\n return () => {\n setItemsMap(prevState => {\n prevState.delete(value)\n return new Map(prevState)\n })\n }\n }, [setItemsMap, groupId, value, displayedText])\n\n if (\n autoFilter &&\n searchValue.length > 0 &&\n !searchQueryMatch(displayedText, searchValue)\n ) {\n return null\n }\n\n const scrollIntoView = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (\n inputRef?.current?.parentElement != null &&\n triggerRef?.current != null\n ) {\n inputRef.current.parentElement.scrollTo({\n top: triggerRef.current.scrollHeight,\n })\n }\n\n if (restProps.onClick !== undefined) {\n restProps.onClick(event)\n }\n }\n\n // todo MDS-1142 find a better way to fix blinking.\n // We need to use custom state because Ariakit changes its state internally on click even for controlled Combobox\n // and it case `aria-selected` value and checkmark to blink.\n const isSelected = comboboxValue.includes(value)\n\n return (\n <StyledItem\n {...mergeProps(restProps, restAriaDisabledProps)}\n focusable\n hideOnClick={false}\n accessibleWhenDisabled={booleanify(ariaDisabled)}\n disabled={booleanify(ariaDisabled) || disabled}\n ref={forwardRef}\n value={value}\n onClick={scrollIntoView}\n aria-selected={isSelected}\n >\n <AriakitComboboxItemCheck\n checked={isSelected}\n render={({ style, ...props }) => (\n // AriakitComboboxItemCheck adds its owm inline styles which we want to omit here\n <StyledItemCheck {...props} />\n )}\n >\n <IconCheckMark\n size='small'\n data-testid={\n process.env.NODE_ENV === 'test'\n ? 'combobox-item-check'\n : undefined\n }\n />\n </AriakitComboboxItemCheck>\n {children}\n </StyledItem>\n )\n }\n)\n","import React from 'react'\nimport type { PopoverPortalProps } from '@radix-ui/react-popover'\nimport { Portal as RadixPortal } from '@radix-ui/react-popover'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface PortalProps extends PopoverPortalProps {\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal: React.FC<PortalProps> = ({\n forceMount: forceMountProp,\n ...restProps\n}) => {\n const { openState } = useComboboxContext()\n\n // We always need to render content with items to be able to render Chips in Value,\n // but without forceMount Radix will not render Portal when Popover is closed\n const forceMount = !openState || forceMountProp\n\n return <RadixPortal forceMount={forceMount} {...restProps} />\n}\n","import { Group as AriakitGroup } from '@ariakit/react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledGroup = styled(AriakitGroup, {})\n\nexport type StyledGroupProps = StrictComponentProps<typeof StyledGroup>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useId } from '@mirohq/design-system-use-id'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport type { StyledGroupProps } from './group.styled'\nimport { StyledGroup } from './group.styled'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\nimport { GroupProvider } from '../hooks/use-group-context'\n\nexport type GroupProps = StyledGroupProps\n\nexport const Group = React.forwardRef<\n ElementRef<typeof StyledGroup>,\n GroupProps\n>(({ children, ...rest }, forwardRef) => {\n const { autoFilter, searchValue, filteredItems } = useComboboxContext()\n\n const id = useId()\n const getInvisibleContent = useInvisibleContent()\n\n let hasVisibleContent = true\n\n if (autoFilter && searchValue.length > 0) {\n hasVisibleContent = filteredItems.some(item => item.groupId === id)\n }\n\n return (\n <GroupProvider groupId={id}>\n {hasVisibleContent ? (\n <StyledGroup {...rest} ref={forwardRef}>\n {children}\n </StyledGroup>\n ) : (\n getInvisibleContent(children)\n )}\n </GroupProvider>\n )\n})\n","import { GroupLabel } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { groupLabelStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledGroupLabel = styled(GroupLabel, groupLabelStyles)\n\nexport type StyledGroupLabelProps = StrictComponentProps<\n typeof StyledGroupLabel\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledGroupLabel } from './group-label.styled'\nimport type { StyledGroupLabelProps } from './group-label.styled'\n\nexport interface GroupLabelProps extends StyledGroupLabelProps {}\n\nexport const GroupLabel = React.forwardRef<\n ElementRef<typeof StyledGroupLabel>,\n GroupLabelProps\n>((props, forwardRef) => <StyledGroupLabel {...props} ref={forwardRef} />)\n","import React, { useCallback } from 'react'\nimport type { FC } from 'react'\nimport { Chip } from '@mirohq/design-system-chip'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface ValueProps {\n /**\n * The label to make the remove button recognizable by the screen readers.\n */\n unselectAriaLabel: string\n}\n\nexport const Value: FC<ValueProps> = ({ unselectAriaLabel }) => {\n const {\n value = [],\n setValue,\n disabled,\n readOnly,\n 'aria-disabled': ariaDisabled,\n itemsMap,\n } = useComboboxContext()\n const canRemoveItem =\n !booleanify(ariaDisabled) && !booleanify(disabled) && !booleanify(readOnly)\n\n const onItemRemove = useCallback(\n (item: string): void => {\n setValue(prevValue => prevValue?.filter(value => value !== item))\n },\n [setValue]\n )\n\n const getItemText = useCallback(\n (itemValue: string) => {\n const itemData = itemsMap.get(itemValue)\n if (itemData === undefined || itemData.displayedText === '') {\n return null\n }\n\n return (\n <Chip\n key={itemValue}\n onRemove={e => {\n onItemRemove(itemValue)\n e.stopPropagation()\n }}\n removable={canRemoveItem}\n removeAriaLabel={`${unselectAriaLabel} ${itemData.displayedText}`}\n data-testid={\n process.env.NODE_ENV === 'test'\n ? `combobox-value-${itemValue}`\n : undefined\n }\n >\n {itemData.displayedText}\n </Chip>\n )\n },\n [canRemoveItem, itemsMap, onItemRemove, unselectAriaLabel]\n )\n\n return <>{value.map(getItemText)}</>\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { separatorStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledSeparator = styled(Primitive.div, separatorStyles)\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { StyledSeparator } from './separator.styled'\nimport type { StyledSeparatorProps } from './separator.styled'\n\nexport interface SeparatorProps extends StyledSeparatorProps {}\n\nexport const Separator = React.forwardRef<\n ElementRef<typeof StyledSeparator>,\n SeparatorProps\n>((props, forwardRef) => {\n const { autoFilter, searchValue } = useComboboxContext()\n\n if (autoFilter && searchValue.length > 0) {\n return null\n }\n\n return <StyledSeparator {...props} ref={forwardRef} aria-hidden />\n})\n","import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledNativeSelect = styled(Primitive.select, {\n // if we support autoComplete, we would have to use visually-hidden styles here\n display: 'none',\n})\n\nexport const StyledComboboxContent = styled(Primitive.div, {\n position: 'relative',\n width: '100%',\n})\n\nexport type StyledComboboxProps = ComponentPropsWithRef<\n typeof StyledComboboxContent\n>\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledNoResult = styled(Primitive.div, {\n padding: '$100',\n})\n\nexport type StyledNoResultProps = StrictComponentProps<typeof StyledNoResult>\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\n\nimport type { StyledNoResultProps } from './no-result.styled'\nimport { StyledNoResult } from './no-result.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface NoResultProps extends StyledNoResultProps {\n /**\n * The content.\n */\n children?: ReactNode\n}\n\nexport const NoResult = React.forwardRef<\n ElementRef<typeof StyledNoResult>,\n NoResultProps\n>((props, forwardRef) => {\n const { autoFilter, searchValue, filteredItems, itemsMap } =\n useComboboxContext()\n\n // when filtering is disabled or idle, just checking if there are any items provided\n const noActiveFiltering =\n !autoFilter || (autoFilter && searchValue.length === 0)\n\n const isVisible = noActiveFiltering\n ? itemsMap.size === 0\n : filteredItems.length === 0\n\n if (isVisible) {\n return <StyledNoResult {...props} ref={forwardRef} />\n }\n\n return null\n})\n","import React, { useEffect } from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\nimport { ComboboxProvider as AriakitComboboxProvider } from '@ariakit/react'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\nimport {\n FloatingLabel,\n useFormFieldContext,\n} from '@mirohq/design-system-base-form'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport {\n BaseTooltipProvider,\n useBaseTooltipContext,\n} from '@mirohq/design-system-base-tooltip'\nimport { usePrevious } from '@mirohq/design-system-use-previous'\n\nimport { Trigger } from './partials/trigger'\nimport { Content } from './partials/content'\nimport { Item } from './partials/item'\nimport { Portal } from './partials/portal'\nimport { Group } from './partials/group'\nimport { GroupLabel } from './partials/group-label'\nimport { Value } from './partials/value'\nimport { Separator } from './partials/separator'\nimport { StyledComboboxContent, StyledNativeSelect } from './combobox.styled'\nimport type { StyledComboboxProps } from './combobox.styled'\nimport {\n ComboboxProvider,\n useComboboxContext,\n} from './hooks/use-combobox-context'\nimport type { Direction } from './types'\nimport { NoResult } from './partials/no-result'\n\nexport interface ComboboxProps extends FormElementProps, StyledComboboxProps {\n /**\n * The value of the combobox when initially rendered. Use when you do not need\n * to control the state of the combobox.\n */\n defaultValue?: string[]\n\n /**\n * The controlled value of the combobox. Should be used in conjunction with\n * onValueChange.\n */\n value?: string[]\n\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string[]) => void\n\n /**\n * The controlled search value to filter items. Should be used in conjunction with\n * onSearchValueChange.\n */\n searchValue?: string\n\n /**\n * Event handler called when the trigger input value changes.\n */\n onSearchValueChange?: (value: string) => void\n\n /**\n * The open state of the combobox when it is initially rendered. Use when you do\n * not need to control its open state.\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * The controlled open state of the combobox. Must be used in conjunction with\n * onOpen and onClose.\n */\n open?: boolean\n\n /**\n * Event handler called when the combobox opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the combobox closes.\n */\n onClose?: () => void\n\n /**\n * The reading direction of the combobox when applicable. If omitted, inherits\n * globally from DirectionProvider or assumes LTR (left-to-right) reading\n * mode.\n * @default 'ltr'\n */\n direction?: Direction\n\n /**\n * The content of the combobox\n */\n children?: React.ReactNode\n\n /**\n * Enables/disabled automatic filtering.\n * @default true\n */\n autoFilter?: boolean\n\n /**\n * The name of the combobox. Submitted with its owning form as part of a\n * name/value pair.\n */\n name?: string\n}\n\nconst Root = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n { value: valueProp, onValueChange, name, children, ...restProps },\n forwardRef\n ) => {\n const {\n openState,\n setOpenState,\n value = [],\n setValue,\n required,\n readOnly,\n 'aria-disabled': ariaDisabled,\n disabled,\n direction,\n size,\n placeholder,\n triggerRef,\n } = useComboboxContext()\n\n const {\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n label,\n isFloatingLabel,\n focused,\n formElementRef,\n } = useFormFieldContext<HTMLSelectElement>()\n\n useEffect(() => {\n setRequired?.(required)\n setDisabled?.(disabled)\n setAriaDisabled?.(ariaDisabled)\n setReadOnly?.(readOnly)\n }, [\n readOnly,\n disabled,\n ariaDisabled,\n required,\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n ])\n\n const { ignoreNextTooltip } = useBaseTooltipContext()\n const prevOpen = usePrevious(openState)\n\n useEffect(() => {\n if (prevOpen === true && !openState) {\n ignoreNextTooltip()\n }\n }, [ignoreNextTooltip, openState, prevOpen])\n\n const shouldUseFloatingLabel = label !== null && isFloatingLabel\n const isFloating =\n placeholder !== undefined || value.length !== 0 || focused\n\n const onSetSelectedValue = (newValue: string | string[]): void => {\n setValue(typeof newValue === 'string' ? [newValue] : newValue)\n }\n\n const onOpenChange = (value: boolean): void => {\n if (!booleanify(readOnly)) {\n setOpenState(value)\n }\n }\n\n const isFormControl = Boolean(triggerRef.current?.closest('form'))\n\n return (\n <RadixPopover.Root open={openState} onOpenChange={onOpenChange}>\n <AriakitComboboxProvider\n open={openState}\n setOpen={onOpenChange}\n selectedValue={value}\n setSelectedValue={onSetSelectedValue}\n >\n <StyledComboboxContent\n ref={forwardRef}\n {...restProps}\n dir={direction}\n data-form-element='select'\n >\n {shouldUseFloatingLabel && (\n <FloatingLabel floating={isFloating} size={size}>\n {label}\n </FloatingLabel>\n )}\n {children}\n </StyledComboboxContent>\n </AriakitComboboxProvider>\n {isFormControl && (\n <StyledNativeSelect\n multiple\n autoComplete='off'\n name={name}\n tabIndex={-1}\n aria-hidden='true'\n ref={formElementRef}\n required={required}\n disabled={disabled}\n aria-disabled={ariaDisabled}\n value={value}\n // since we don't support autoComplete there is no way this select value will change,\n // although we still need to provide `onChange` since we use `value` and not `defaultValue`\n onChange={() => {}}\n >\n {value.length === 0 ? (\n <option value='' />\n ) : (\n // since we don't support autoComplete we can render here only selected values\n value.map(itemValue => (\n <option key={itemValue} value={itemValue}>\n {itemValue}\n </option>\n ))\n )}\n </StyledNativeSelect>\n )}\n </RadixPopover.Root>\n )\n }\n)\n\nexport const Combobox = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled,\n defaultOpen = false,\n open,\n valid,\n disabled,\n readOnly,\n required,\n value,\n defaultValue,\n onOpen,\n onClose,\n searchValue,\n onSearchValueChange,\n onValueChange,\n direction = 'ltr',\n autoFilter = true,\n ...restProps\n },\n forwardRef\n ) => (\n <ComboboxProvider\n defaultValue={defaultValue}\n value={value}\n onValueChange={onValueChange}\n searchValue={searchValue}\n onSearchValueChange={onSearchValueChange}\n defaultOpen={defaultOpen}\n open={open}\n onOpen={onOpen}\n onClose={onClose}\n valid={valid}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n aria-disabled={ariaDisabled}\n direction={direction}\n autoFilter={autoFilter}\n >\n <BaseTooltipProvider>\n <Root {...restProps} value={value} ref={forwardRef} />\n </BaseTooltipProvider>\n </ComboboxProvider>\n )\n) as ForwardRefExoticComponent<ComboboxProps> & Partials\n\nexport interface Partials {\n Portal: typeof Portal\n Trigger: typeof Trigger\n Content: typeof Content\n Item: typeof Item\n Group: typeof Group\n GroupLabel: typeof GroupLabel\n Value: typeof Value\n Separator: typeof Separator\n NoResult: typeof NoResult\n}\n\nCombobox.Portal = Portal\nCombobox.Trigger = Trigger\nCombobox.Content = Content\nCombobox.Item = Item\nCombobox.Group = Group\nCombobox.GroupLabel = GroupLabel\nCombobox.Value = Value\nCombobox.Separator = Separator\nCombobox.NoResult = NoResult\n"],"names":["RadixTrigger","RadixAnchor","AriakitComboboxTrigger","AriakitComboboxList","AriakitComboboxItemCheck","RadixPortal","AriakitGroup","GroupLabel","value","AriakitComboboxProvider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../src/partials/trigger.styled.tsx","../src/utils.ts","../src/hooks/use-combobox-context.tsx","../src/partials/trigger-action-button.styled.tsx","../src/partials/trigger-action-button.tsx","../src/partials/trigger.tsx","../src/partials/content.styled.tsx","../src/hooks/use-document-fragment.ts","../src/hooks/use-invisible-content.tsx","../src/partials/content.tsx","../src/partials/item.styled.tsx","../src/hooks/use-group-context.tsx","../src/partials/item.tsx","../src/partials/portal.tsx","../src/partials/group.styled.tsx","../src/partials/group.tsx","../src/partials/group-label.styled.tsx","../src/partials/group-label.tsx","../src/partials/value.tsx","../src/partials/separator.styled.tsx","../src/partials/separator.tsx","../src/combobox.styled.tsx","../src/partials/no-result.styled.tsx","../src/partials/no-result.tsx","../src/combobox.tsx"],"sourcesContent":["import { styled } from '@mirohq/design-system-stitches'\nimport { BaseInput } from '@mirohq/design-system-base-input'\nimport type { ComponentPropsWithRef } from 'react'\n\nexport const StyledBaseInput = styled(BaseInput, {\n flexWrap: 'wrap',\n flexGrow: 1,\n gap: '$50',\n\n '&[data-valid], &[data-invalid]': {\n // we don't need a bigger padding here as Input component will render its own icon\n paddingRight: '$100',\n },\n\n '& input': {\n minWidth: '$8',\n flexBasis: 0,\n flexGrow: 1,\n },\n\n variants: {\n size: {\n medium: {\n minHeight: '$8',\n height: 'auto',\n padding: '3px $100',\n paddingRight: '$500',\n fontSize: '$175',\n },\n large: {\n minHeight: '$10',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n 'x-large': {\n minHeight: '$12',\n height: 'auto',\n padding: '5px $100',\n paddingRight: '$500',\n },\n },\n v1: {\n true: {},\n },\n },\n compoundVariants: [\n {\n v1: true,\n size: 'x-large',\n css: {\n fontSize: '$200',\n lineHeight: '$500',\n },\n },\n ],\n})\n\nexport type StyledBaseInputProps = ComponentPropsWithRef<typeof StyledBaseInput>\n","export function searchQueryMatch(\n displayedText: string,\n searchValue: string\n): boolean {\n return displayedText.toLowerCase().includes(searchValue.toLowerCase())\n}\n","import React, {\n createContext,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { useControllableState } from '@radix-ui/react-use-controllable-state'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\n\nimport type { Direction } from '../types'\nimport type { StyledBaseInputProps } from '../partials/trigger.styled'\nimport { searchQueryMatch } from '../utils'\n\ninterface ItemData {\n displayedText: string\n groupId: string | undefined\n}\n\ninterface ComboboxProviderSharedProps extends FormElementProps {\n value?: string[] | string\n direction?: Direction\n autoFilter: boolean\n}\n\ninterface ComboboxContextProps extends ComboboxProviderSharedProps {\n setOpenState: React.Dispatch<React.SetStateAction<boolean | undefined>>\n openState: boolean\n\n setValue: React.Dispatch<React.SetStateAction<string[] | string | undefined>>\n\n triggerRef: React.RefObject<HTMLInputElement>\n inputRef: React.RefObject<HTMLInputElement>\n contentRef: React.RefObject<HTMLDivElement>\n\n searchValue: string\n setSearchValue: React.Dispatch<React.SetStateAction<string | undefined>>\n\n placeholder?: string\n setPlaceholder: React.Dispatch<React.SetStateAction<string | undefined>>\n\n size: StyledBaseInputProps['size']\n setSize: React.Dispatch<React.SetStateAction<StyledBaseInputProps['size']>>\n\n /**\n * includes all visible and hidden items to render Chips and get filtered items\n */\n itemsMap: Map<string, ItemData>\n setItemsMap: React.Dispatch<React.SetStateAction<Map<string, ItemData>>>\n\n /**\n * @returns filtered items based on itemsMap\n * @returns empty array when searchValue is empty or auto filtering is disabled\n */\n filteredItems: ItemData[]\n}\n\ninterface ComboboxProviderProps extends ComboboxProviderSharedProps {\n children?: React.ReactNode\n open?: boolean\n defaultOpen?: boolean\n onOpen?: () => void\n onClose?: () => void\n\n defaultValue?: string[] | string\n onValueChange?: (value: string[] | string) => void\n\n searchValue?: string\n onSearchValueChange?: (value: string) => void\n}\n\nconst ComboboxContext = createContext<ComboboxContextProps>({} as any)\n\nexport const ComboboxProvider = ({\n children,\n open: openProp,\n defaultOpen,\n onOpen,\n onClose,\n valid,\n value: valueProp,\n defaultValue: defaultValueProp,\n onValueChange,\n searchValue: searchValueProp,\n onSearchValueChange,\n autoFilter,\n ...restProps\n}: ComboboxProviderProps): JSX.Element => {\n const triggerRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n // todo MDS-1141: remove default false value\n const [openState = false, setOpenState] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: state => {\n if (state) {\n onOpen?.()\n } else {\n onClose?.()\n }\n },\n })\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValueProp,\n onChange: onValueChange,\n })\n\n // todo MDS-1141: remove default false value\n const [searchValue = '', setSearchValue] = useControllableState({\n prop: searchValueProp,\n defaultProp: '',\n onChange: onSearchValueChange,\n })\n\n const [size, setSize] = useState<StyledBaseInputProps['size']>()\n const [placeholder, setPlaceholder] = useState<string | undefined>()\n\n const [itemsMap, setItemsMap] = useState<Map<string, ItemData>>(new Map())\n\n const { valid: formFieldValid } = useFormFieldContext()\n\n const filteredItems = useMemo(() => {\n if (searchValue.length > 0) {\n return Array.from(itemsMap.values()).filter(item =>\n searchQueryMatch(item.displayedText, searchValue)\n )\n }\n\n return []\n }, [itemsMap, searchValue])\n\n return (\n <ComboboxContext.Provider\n value={{\n ...restProps,\n valid: valid ?? formFieldValid,\n openState,\n setOpenState,\n value,\n setValue,\n triggerRef,\n inputRef,\n contentRef,\n autoFilter,\n searchValue,\n setSearchValue,\n itemsMap,\n setItemsMap,\n filteredItems,\n placeholder,\n setPlaceholder,\n size,\n setSize,\n }}\n >\n {children}\n </ComboboxContext.Provider>\n )\n}\n\nexport const useComboboxContext = (): ComboboxContextProps =>\n useContext(ComboboxContext)\n","import type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { BaseInput } from '@mirohq/design-system-base-input'\n\nexport const StyledActionButton = styled(BaseInput.ActionButton, {\n position: 'absolute',\n right: '$100',\n\n variants: {\n size: {\n medium: {\n top: '1px',\n },\n large: {\n top: '5px',\n },\n 'x-large': {\n top: '9px',\n },\n },\n },\n\n defaultVariants: {\n size: 'large',\n },\n})\n\nexport type StyledActionButtonProps = StrictComponentProps<\n typeof StyledActionButton\n>\n","import React, { useCallback } from 'react'\nimport { IconChevronDown, IconCross } from '@mirohq/design-system-icons'\nimport { Trigger as RadixTrigger } from '@radix-ui/react-popover'\n\nimport type { StyledActionButtonProps } from './trigger-action-button.styled'\nimport { StyledActionButton } from './trigger-action-button.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport type TriggerActionButtonProps = Omit<\n StyledActionButtonProps,\n 'label'\n> & {\n openActionLabel: string\n closeActionLabel: string\n clearable?: boolean\n clearActionLabel?: string\n}\n\nexport const TriggerActionButton = ({\n openActionLabel,\n closeActionLabel,\n clearActionLabel,\n clearable,\n size,\n}: TriggerActionButtonProps): React.ReactNode => {\n const { openState, setOpenState, value = [], setValue } = useComboboxContext()\n\n const isEmpty = value.length === 0\n\n const onToggleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (openState) {\n // open action will be performed by radix since it's RadixTrigger\n setOpenState(false)\n }\n\n event.stopPropagation()\n },\n [setOpenState, openState]\n )\n\n const onClearClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n setValue([])\n\n event.stopPropagation()\n },\n [setValue]\n )\n\n if (isEmpty || clearable === false || clearActionLabel === undefined) {\n return (\n <RadixTrigger asChild aria-haspopup='listbox'>\n <StyledActionButton\n label={openState ? closeActionLabel : openActionLabel}\n size={size}\n onClick={onToggleClick}\n >\n <IconChevronDown size='small' weight='thin' />\n </StyledActionButton>\n </RadixTrigger>\n )\n }\n\n return (\n <StyledActionButton\n label={clearActionLabel}\n size={size}\n onClick={onClearClick}\n >\n <IconCross size='small' weight='thin' />\n </StyledActionButton>\n )\n}\n","import React, { useEffect } from 'react'\nimport type { ElementRef } from 'react'\nimport { Combobox as AriakitComboboxTrigger } from '@ariakit/react'\nimport {\n booleanify,\n mergeRefs,\n stringAttrValue,\n} from '@mirohq/design-system-utils'\nimport { useFormFieldContext } from '@mirohq/design-system-base-form'\nimport { Anchor as RadixAnchor } from '@radix-ui/react-popover'\nimport type {\n BaseInputProps,\n BaseInputStyledProps,\n} from '@mirohq/design-system-base-input'\nimport { BaseInput } from '@mirohq/design-system-base-input'\nimport { mergeProps } from '@react-aria/utils'\nimport { useNewDesignLanguage } from '@mirohq/design-system-experiments'\n\nimport { StyledBaseInput } from './trigger.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { TriggerActionButton } from './trigger-action-button'\n\ninterface TriggerSharedProps extends Omit<BaseInputStyledProps, 'size'> {\n /**\n * The content.\n */\n children?: React.ReactNode\n\n /**\n * The size of the trigger.\n * @default 'large'\n */\n size?: BaseInputProps['size']\n\n /**\n * The content that will be rendered inside the Combobox.Trigger when no value or\n * defaultValue is set.\n */\n placeholder?: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and closed. Will be rendered in a Tooltip.\n */\n openActionLabel: string\n\n /**\n * The label text for Trigger's action button when Combobox is empty and open. Will be rendered in a Tooltip.\n */\n closeActionLabel: string\n\n /**\n * Show a button to clear the Combobox value.\n * @default true\n */\n clearable?: boolean\n}\n\nexport type TriggerProps = TriggerSharedProps &\n (\n | { clearable: false; clearActionLabel?: never }\n | {\n /**\n * The label text for Trigger's action button when Combobox has values selected. Will be rendered in a Tooltip.\n */\n clearActionLabel: string\n }\n )\n\nexport const Trigger = React.forwardRef<ElementRef<'input'>, TriggerProps>(\n (\n {\n id,\n children,\n size = 'large',\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n placeholder,\n openActionLabel,\n closeActionLabel,\n clearable = true,\n clearActionLabel,\n onChange,\n onFocus,\n css,\n // @ts-expect-error className required when extending the component with styled()\n className,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n 'aria-disabled': ariaDisabled,\n valid: comboboxValid,\n disabled,\n value = [],\n readOnly,\n triggerRef,\n inputRef,\n searchValue,\n setSearchValue,\n setOpenState,\n setSize,\n setPlaceholder,\n } = useComboboxContext()\n\n const {\n formElementId,\n ariaDescribedBy: formFieldContextDescribedBy,\n ariaInvalid: formFieldAriaInvalid,\n valid: formFieldValid,\n } = useFormFieldContext()\n\n const [v1] = useNewDesignLanguage()\n\n useEffect(() => {\n setSize(size)\n }, [size, setSize])\n\n useEffect(() => {\n setPlaceholder(placeholder)\n }, [setPlaceholder, placeholder])\n\n const valid = formFieldValid ?? comboboxValid\n\n const scrollIntoView = (\n event: React.FocusEvent<HTMLInputElement>\n ): void => {\n const trigger = triggerRef?.current\n const baseInput = inputRef?.current?.parentElement\n\n if (baseInput != null && trigger != null) {\n event.preventDefault()\n baseInput.scrollTo({\n top: trigger.scrollHeight,\n })\n }\n\n if (onFocus !== undefined) {\n onFocus(event)\n }\n }\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n setSearchValue(e.target.value)\n onChange?.(e)\n }\n\n return (\n <RadixAnchor\n ref={mergeRefs([triggerRef, forwardRef])}\n // todo MDS-1112: move this logic to AriakitComboboxTrigger's showOnClick\n onClick={() => {\n if (\n !booleanify(disabled) &&\n !booleanify(ariaDisabled) &&\n !booleanify(readOnly)\n ) {\n setOpenState(true)\n }\n }}\n >\n <AriakitComboboxTrigger\n render={({ ref: ariakitTriggerRef, ...ariakitProps }) => (\n <StyledBaseInput\n aria-disabled={ariaDisabled}\n valid={valid}\n disabled={disabled}\n readOnly={readOnly}\n size={size}\n onChange={onInputChange}\n css={css}\n v1={v1}\n // @ts-expect-error className required when extending the component with styled()\n className={className}\n >\n <BaseInput.Input\n {...mergeProps(ariakitProps, restProps)}\n ref={mergeRefs([\n inputRef,\n ariakitTriggerRef as React.RefObject<HTMLInputElement>,\n ])}\n value={searchValue}\n id={id ?? formElementId}\n aria-describedby={stringAttrValue(\n ariaDescribedBy,\n formFieldContextDescribedBy\n )}\n aria-invalid={ariaInvalid ?? formFieldAriaInvalid}\n placeholder={\n children === null ||\n children === undefined ||\n value.length === 0\n ? placeholder\n : undefined\n }\n onFocus={scrollIntoView}\n />\n {children}\n <TriggerActionButton\n openActionLabel={openActionLabel}\n closeActionLabel={closeActionLabel}\n clearActionLabel={clearActionLabel}\n clearable={clearable}\n size={size}\n />\n </StyledBaseInput>\n )}\n />\n </RadixAnchor>\n )\n }\n)\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport {\n contentStyles,\n itemsContainerStyles,\n} from '@mirohq/design-system-base-select'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledItemsContainer = styled(Primitive.div, itemsContainerStyles)\n\nexport const StyledContent = styled(RadixPopover.Content, {\n ...contentStyles,\n width: 'var(--radix-popover-trigger-width)',\n overflowY: 'auto',\n boxSizing: 'border-box',\n})\n\nexport type StyledContentProps = StrictComponentProps<typeof StyledContent>\n","import React from 'react'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\n\nexport const useDocumentFragment = (): DocumentFragment | undefined => {\n const [fragment, setFragment] = React.useState<DocumentFragment>()\n\n // we need `useLayoutEffect` here because `DocumentFragment` doesn't exist on the server\n useLayoutEffect(() => {\n setFragment(new DocumentFragment())\n }, [])\n\n return fragment\n}\n","import React, { useCallback } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useDocumentFragment } from './use-document-fragment'\n\n/**\n * Render content in DocumentFragment so items can send its text value to context,\n * otherwise we will have empty chips.\n * Content won't be visible in DOM.\n */\nexport const useInvisibleContent = (): ((\n children: React.ReactNode\n) => React.ReactElement | null) => {\n const fragment = useDocumentFragment()\n\n return useCallback(\n (children: React.ReactNode): React.ReactElement | null =>\n fragment !== undefined\n ? createPortal(<div>{children}</div>, fragment)\n : null,\n [fragment]\n )\n}\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { mergeRefs } from '@mirohq/design-system-utils'\nimport { ScrollArea } from '@mirohq/design-system-scroll-area'\nimport { theme } from '@mirohq/design-system-stitches'\nimport type { CSSProperties } from '@stitches/react'\nimport { ComboboxList as AriakitComboboxList } from '@ariakit/react'\n\nimport { StyledContent, StyledItemsContainer } from './content.styled'\nimport type { StyledContentProps } from './content.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport type {\n Align,\n Overflow,\n PointerDownOutsideEvent,\n Side,\n Sticky,\n} from '../types'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\n\nexport const CONTENT_OFFSET = parseInt(theme.space[50])\nconst RADIX_CONTENT_AVAILABLE_HEIGHT =\n 'var(--radix-popover-content-available-height)'\n\nconst isInsideRef = (\n element: Element | null,\n ref: React.RefObject<Element>\n): boolean => (element != null && ref.current?.contains(element)) ?? false\n\nexport interface ContentProps extends StyledContentProps {\n /**\n * Combobox's content.\n */\n children?: ReactNode\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onCloseAutoFocus?: (event: Event) => void\n\n /**\n * Event handler called when focus moves to the trigger after closing. It can\n * be prevented by calling event.preventDefault.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void\n\n /**\n * Event handler called when a pointer event occurs outside the bounds of the\n * component. It can be prevented by calling event.preventDefault.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void\n\n /**\n * The preferred side of the anchor to render against when open. Will be\n * reversed when collisions occur and avoidCollisions is enabled.\n * @default 'bottom'\n */\n side?: Side\n\n /**\n * The distance in pixels from the anchor.\n * @default CONTENT_OFFSET\n */\n sideOffset?: number\n\n /**\n * The preferred alignment against the anchor. May change when collisions\n * occur.\n * @default 'center'\n */\n align?: Align\n\n /**\n * An offset in pixels from the \"start\" or \"end\" alignment options.\n * @default 0\n */\n alignOffset?: number\n\n /**\n * When true, overrides the side and align preferences to prevent collisions\n * with boundary edges.\n * @default true\n */\n avoidCollisions?: boolean\n\n /**\n * The element used as the collision boundary. By default this is the\n * viewport, though you can provide additional element(s) to be included in\n * this check.\n */\n collisionBoundary?: Element | null\n\n /**\n * The distance in pixels from the boundary edges where collision detection\n * should occur. Accepts a number (same for all sides), or a partial padding\n * object, for example: { top: 20, left: 20 }.\n * @default 0\n */\n collisionPadding?: number | Partial<Record<Side, number>>\n\n /**\n * The sticky behavior on the align axis. \"partial\" will keep the content in the\n * boundary as long as the trigger is at least partially in the boundary whilst\n * \"always\" will keep the content in the boundary regardless.\n * @default 'partial'\n */\n sticky?: Sticky\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n * @default true\n */\n hideWhenDetached?: boolean\n\n /**\n * The max height for the content.\n */\n maxHeight?: CSSProperties['maxHeight']\n\n /**\n * Setting overflow as \"visible\" means that the content can extend beyond\n * its collision boundary without any clipping or scrolling being\n * applied.\n * When set to \"auto,\" a scrollbar is added if the content exceeds its\n * boundaries. If no maxHeight is defined, it will be automatically adjusted\n * to fit the remaining space between the trigger and the boundary edge.\n * @default 'visible'\n */\n overflow?: Overflow\n}\n\nexport const Content = React.forwardRef<\n ElementRef<typeof StyledContent>,\n ContentProps\n>(\n (\n {\n side = 'bottom',\n sideOffset = CONTENT_OFFSET,\n align = 'center',\n alignOffset = 0,\n collisionPadding = 0,\n avoidCollisions = true,\n sticky = 'partial',\n hideWhenDetached = true,\n overflow = 'visible',\n maxHeight,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const { triggerRef, contentRef, direction, openState } =\n useComboboxContext()\n\n const getInvisibleContent = useInvisibleContent()\n\n if (!openState) {\n return getInvisibleContent(children)\n }\n\n const content = <StyledItemsContainer>{children}</StyledItemsContainer>\n\n return (\n <StyledContent\n {...restProps}\n dir={direction}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionPadding={collisionPadding}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n ref={mergeRefs([forwardRef, contentRef])}\n onOpenAutoFocus={event => event.preventDefault()}\n onInteractOutside={event => {\n const target = event.target as Element | null\n const isTrigger = isInsideRef(target, triggerRef)\n const isContent = isInsideRef(target, contentRef)\n\n if (isTrigger || isContent) {\n event.preventDefault()\n }\n }}\n >\n {/* we have to specify role here otherwise it would be overwritten by Radix.Content */}\n <AriakitComboboxList role='listbox'>\n {overflow === 'auto' ? (\n <ScrollArea type='always' dir={direction}>\n <ScrollArea.Viewport\n css={{\n maxHeight:\n maxHeight !== undefined\n ? `min(${RADIX_CONTENT_AVAILABLE_HEIGHT}, ${\n typeof maxHeight === 'number'\n ? `${maxHeight}px`\n : maxHeight\n })`\n : RADIX_CONTENT_AVAILABLE_HEIGHT,\n }}\n >\n {content}\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea>\n ) : (\n content\n )}\n </AriakitComboboxList>\n </StyledContent>\n )\n }\n)\n","import { ComboboxItem } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { itemStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledItem = styled(ComboboxItem, itemStyles)\n\nexport type StyledItemProps = StrictComponentProps<typeof StyledItem>\n","import React, { createContext, useContext } from 'react'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\n\ninterface GroupProviderSharedProps extends FormElementProps {\n groupId?: string\n}\n\ninterface GroupContextProps extends GroupProviderSharedProps {}\n\ninterface GroupProviderProps extends GroupProviderSharedProps {\n children: React.ReactNode\n}\n\nconst GroupContext = createContext<GroupContextProps>({} as any)\n\nexport const GroupProvider = ({\n children,\n ...restProps\n}: GroupProviderProps): JSX.Element => (\n <GroupContext.Provider\n value={{\n ...restProps,\n }}\n >\n {children}\n </GroupContext.Provider>\n)\n\nexport const useGroupContext = (): GroupContextProps => useContext(GroupContext)\n","import React, { useMemo } from 'react'\nimport type { ElementRef, ReactNode } from 'react'\nimport { ComboboxItemCheck as AriakitComboboxItemCheck } from '@ariakit/react'\nimport { mergeProps } from '@react-aria/utils'\nimport { useAriaDisabled } from '@mirohq/design-system-use-aria-disabled'\nimport { IconCheckMark } from '@mirohq/design-system-icons'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport { useLayoutEffect } from '@mirohq/design-system-use-layout-effect'\nimport { StyledItemCheck } from '@mirohq/design-system-base-select'\n\nimport { StyledItem } from './item.styled'\nimport type { StyledItemProps } from './item.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { useGroupContext } from '../hooks/use-group-context'\nimport { searchQueryMatch } from '../utils'\n\nexport interface ItemProps extends StyledItemProps {\n /**\n * The value given as data when submitted with a name.\n */\n value: string\n\n /**\n * When true, prevents the user from interacting with the item.\n * @default false\n */\n disabled?: boolean\n\n /**\n * Optional text used for typeahead purposes. By default the typeahead\n * behavior will use the Combobox's item text. Use this when the content is\n * complex, or you have non-textual content inside.\n */\n textValue?: string\n\n /**\n * Item's content.\n */\n children?: ReactNode\n}\n\nexport const Item = React.forwardRef<ElementRef<typeof StyledItem>, ItemProps>(\n (\n { disabled = false, value, textValue, children, ...restProps },\n forwardRef\n ) => {\n const { 'aria-disabled': ariaDisabled, ...restAriaDisabledProps } =\n useAriaDisabled(restProps, { allowArrows: true })\n const {\n searchValue,\n autoFilter,\n setItemsMap,\n triggerRef,\n inputRef,\n value: comboboxValue = [],\n } = useComboboxContext()\n\n const { groupId } = useGroupContext()\n\n const displayedText = useMemo((): string => {\n if (textValue !== undefined) {\n return textValue\n }\n\n return typeof children === 'string' ? children : ''\n }, [textValue, children])\n\n useLayoutEffect(() => {\n setItemsMap(\n prevState => new Map(prevState.set(value, { displayedText, groupId }))\n )\n\n return () => {\n setItemsMap(prevState => {\n prevState.delete(value)\n return new Map(prevState)\n })\n }\n }, [setItemsMap, groupId, value, displayedText])\n\n if (\n autoFilter &&\n searchValue.length > 0 &&\n !searchQueryMatch(displayedText, searchValue)\n ) {\n return null\n }\n\n const scrollIntoView = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (\n inputRef?.current?.parentElement != null &&\n triggerRef?.current != null\n ) {\n inputRef.current.parentElement.scrollTo({\n top: triggerRef.current.scrollHeight,\n })\n }\n\n if (restProps.onClick !== undefined) {\n restProps.onClick(event)\n }\n }\n\n // todo MDS-1142 find a better way to fix blinking.\n // We need to use custom state because Ariakit changes its state internally on click even for controlled Combobox\n // and it case `aria-selected` value and checkmark to blink.\n const isSelected = Array.isArray(comboboxValue)\n ? comboboxValue.includes(value)\n : comboboxValue === value\n\n return (\n <StyledItem\n {...mergeProps(restProps, restAriaDisabledProps)}\n focusable\n hideOnClick={false}\n accessibleWhenDisabled={booleanify(ariaDisabled)}\n disabled={booleanify(ariaDisabled) || disabled}\n ref={forwardRef}\n value={value}\n onClick={scrollIntoView}\n aria-selected={isSelected}\n >\n <AriakitComboboxItemCheck\n checked={isSelected}\n render={({ style, ...props }) => (\n // AriakitComboboxItemCheck adds its owm inline styles which we want to omit here\n <StyledItemCheck {...props} />\n )}\n >\n <IconCheckMark\n size='small'\n data-testid={\n process.env.NODE_ENV === 'test'\n ? 'combobox-item-check'\n : undefined\n }\n />\n </AriakitComboboxItemCheck>\n {children}\n </StyledItem>\n )\n }\n)\n","import React from 'react'\nimport type { PopoverPortalProps } from '@radix-ui/react-popover'\nimport { Portal as RadixPortal } from '@radix-ui/react-popover'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface PortalProps extends PopoverPortalProps {\n /**\n * Specify a container element to portal the content into.\n */\n container?: HTMLElement | null\n}\n\nexport const Portal = ({\n forceMount: forceMountProp,\n ...restProps\n}: PortalProps): React.ReactNode => {\n const { openState } = useComboboxContext()\n\n // We always need to render content with items to be able to render Chips in Value,\n // but without forceMount Radix will not render Portal when Popover is closed\n const forceMount = !openState || forceMountProp\n\n return <RadixPortal forceMount={forceMount} {...restProps} />\n}\n","import { Group as AriakitGroup } from '@ariakit/react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledGroup = styled(AriakitGroup, {})\n\nexport type StyledGroupProps = StrictComponentProps<typeof StyledGroup>\n","import React from 'react'\nimport type { ElementRef } from 'react'\nimport { useId } from '@mirohq/design-system-use-id'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport type { StyledGroupProps } from './group.styled'\nimport { StyledGroup } from './group.styled'\nimport { useInvisibleContent } from '../hooks/use-invisible-content'\nimport { GroupProvider } from '../hooks/use-group-context'\n\nexport type GroupProps = StyledGroupProps\n\nexport const Group = React.forwardRef<\n ElementRef<typeof StyledGroup>,\n GroupProps\n>(({ children, ...rest }, forwardRef) => {\n const { autoFilter, searchValue, filteredItems } = useComboboxContext()\n\n const id = useId()\n const getInvisibleContent = useInvisibleContent()\n\n let hasVisibleContent = true\n\n if (autoFilter && searchValue.length > 0) {\n hasVisibleContent = filteredItems.some(item => item.groupId === id)\n }\n\n return (\n <GroupProvider groupId={id}>\n {hasVisibleContent ? (\n <StyledGroup {...rest} ref={forwardRef}>\n {children}\n </StyledGroup>\n ) : (\n getInvisibleContent(children)\n )}\n </GroupProvider>\n )\n})\n","import { GroupLabel } from '@ariakit/react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { groupLabelStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledGroupLabel = styled(GroupLabel, groupLabelStyles)\n\nexport type StyledGroupLabelProps = StrictComponentProps<\n typeof StyledGroupLabel\n>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { StyledGroupLabel } from './group-label.styled'\nimport type { StyledGroupLabelProps } from './group-label.styled'\n\nexport interface GroupLabelProps extends StyledGroupLabelProps {}\n\nexport const GroupLabel = React.forwardRef<\n ElementRef<typeof StyledGroupLabel>,\n GroupLabelProps\n>((props, forwardRef) => <StyledGroupLabel {...props} ref={forwardRef} />)\n","import React, { useCallback } from 'react'\nimport type { FC } from 'react'\nimport { Chip } from '@mirohq/design-system-chip'\nimport { booleanify } from '@mirohq/design-system-utils'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface ValueProps {\n /**\n * The label to make the remove button recognizable by the screen readers.\n */\n unselectAriaLabel: string\n\n /**\n * Allow single or multiple selection.\n * @default true\n */\n multiple?: boolean\n}\n\nexport const Value: FC<ValueProps> = ({\n unselectAriaLabel,\n multiple = true,\n}) => {\n const {\n value = [],\n setValue,\n disabled,\n readOnly,\n 'aria-disabled': ariaDisabled,\n itemsMap,\n } = useComboboxContext()\n const canRemoveItem =\n !booleanify(ariaDisabled) && !booleanify(disabled) && !booleanify(readOnly)\n\n const onItemRemove = useCallback(\n (item: string): void => {\n if (multiple) {\n setValue(prevValue =>\n (prevValue as string[]).filter(value => value !== item)\n )\n } else {\n setValue('')\n }\n },\n [setValue, multiple]\n )\n\n const getItemText = useCallback(\n (itemValue: string) => {\n const itemData = itemsMap.get(itemValue)\n if (itemData === undefined || itemData.displayedText === '') {\n return null\n }\n\n return (\n <Chip\n key={itemValue}\n onRemove={e => {\n onItemRemove(itemValue)\n e.stopPropagation()\n }}\n removable={canRemoveItem}\n removeAriaLabel={`${unselectAriaLabel} ${itemData.displayedText}`}\n data-testid={\n process.env.NODE_ENV === 'test'\n ? `combobox-value-${itemValue}`\n : undefined\n }\n >\n {itemData.displayedText}\n </Chip>\n )\n },\n [canRemoveItem, itemsMap, onItemRemove, unselectAriaLabel]\n )\n\n return (\n <>\n {multiple && Array.isArray(value)\n ? value.map(getItemText)\n : getItemText(value as string)}\n </>\n )\n}\n","import { styled } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { separatorStyles } from '@mirohq/design-system-base-select'\n\nexport const StyledSeparator = styled(Primitive.div, separatorStyles)\n\nexport type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>\n","import React from 'react'\nimport type { ElementRef } from 'react'\n\nimport { useComboboxContext } from '../hooks/use-combobox-context'\nimport { StyledSeparator } from './separator.styled'\nimport type { StyledSeparatorProps } from './separator.styled'\n\nexport interface SeparatorProps extends StyledSeparatorProps {}\n\nexport const Separator = React.forwardRef<\n ElementRef<typeof StyledSeparator>,\n SeparatorProps\n>((props, forwardRef) => {\n const { autoFilter, searchValue } = useComboboxContext()\n\n if (autoFilter && searchValue.length > 0) {\n return null\n }\n\n return <StyledSeparator {...props} ref={forwardRef} aria-hidden />\n})\n","import type { ComponentPropsWithRef } from 'react'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport { styled } from '@mirohq/design-system-stitches'\n\nexport const StyledNativeSelect = styled(Primitive.select, {\n // if we support autoComplete, we would have to use visually-hidden styles here\n display: 'none',\n})\n\nexport const StyledComboboxContent = styled(Primitive.div, {\n position: 'relative',\n width: '100%',\n})\n\nexport type StyledComboboxProps = ComponentPropsWithRef<\n typeof StyledComboboxContent\n>\n","import { styled } from '@mirohq/design-system-stitches'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledNoResult = styled(Primitive.div, {\n padding: '$100',\n})\n\nexport type StyledNoResultProps = StrictComponentProps<typeof StyledNoResult>\n","import React from 'react'\nimport type { ElementRef, ReactNode } from 'react'\n\nimport type { StyledNoResultProps } from './no-result.styled'\nimport { StyledNoResult } from './no-result.styled'\nimport { useComboboxContext } from '../hooks/use-combobox-context'\n\nexport interface NoResultProps extends StyledNoResultProps {\n /**\n * The content.\n */\n children?: ReactNode\n}\n\nexport const NoResult = React.forwardRef<\n ElementRef<typeof StyledNoResult>,\n NoResultProps\n>((props, forwardRef) => {\n const { autoFilter, searchValue, filteredItems, itemsMap } =\n useComboboxContext()\n\n // when filtering is disabled or idle, just checking if there are any items provided\n const noActiveFiltering =\n !autoFilter || (autoFilter && searchValue.length === 0)\n\n const isVisible = noActiveFiltering\n ? itemsMap.size === 0\n : filteredItems.length === 0\n\n if (isVisible) {\n return <StyledNoResult {...props} ref={forwardRef} />\n }\n\n return null\n})\n","import React, { useEffect } from 'react'\nimport type { ElementRef, ForwardRefExoticComponent } from 'react'\nimport { ComboboxProvider as AriakitComboboxProvider } from '@ariakit/react'\nimport type { FormElementProps } from '@mirohq/design-system-base-form'\nimport {\n FloatingLabel,\n useFormFieldContext,\n} from '@mirohq/design-system-base-form'\nimport { booleanify } from '@mirohq/design-system-utils'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport {\n BaseTooltipProvider,\n useBaseTooltipContext,\n} from '@mirohq/design-system-base-tooltip'\nimport { usePrevious } from '@mirohq/design-system-use-previous'\n\nimport { Trigger } from './partials/trigger'\nimport { Content } from './partials/content'\nimport { Item } from './partials/item'\nimport { Portal } from './partials/portal'\nimport { Group } from './partials/group'\nimport { GroupLabel } from './partials/group-label'\nimport { Value } from './partials/value'\nimport { Separator } from './partials/separator'\nimport { StyledComboboxContent, StyledNativeSelect } from './combobox.styled'\nimport type { StyledComboboxProps } from './combobox.styled'\nimport {\n ComboboxProvider,\n useComboboxContext,\n} from './hooks/use-combobox-context'\nimport type { Direction } from './types'\nimport { NoResult } from './partials/no-result'\n\nexport interface ComboboxProps extends FormElementProps, StyledComboboxProps {\n /**\n * The value of the combobox when initially rendered. Use when you do not need\n * to control the state of the combobox.\n */\n defaultValue?: string[] | string\n\n /**\n * The controlled value of the combobox. Should be used in conjunction with\n * onValueChange.\n */\n value?: string[] | string\n\n /**\n * Event handler called when the value changes.\n */\n onValueChange?: (value: string[] | string) => void\n\n /**\n * The controlled search value to filter items. Should be used in conjunction with\n * onSearchValueChange.\n */\n searchValue?: string\n\n /**\n * Event handler called when the trigger input value changes.\n */\n onSearchValueChange?: (value: string) => void\n\n /**\n * The open state of the combobox when it is initially rendered. Use when you do\n * not need to control its open state.\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * The controlled open state of the combobox. Must be used in conjunction with\n * onOpen and onClose.\n */\n open?: boolean\n\n /**\n * Event handler called when the combobox opens.\n */\n onOpen?: () => void\n\n /**\n * Event handler called when the combobox closes.\n */\n onClose?: () => void\n\n /**\n * The reading direction of the combobox when applicable. If omitted, inherits\n * globally from DirectionProvider or assumes LTR (left-to-right) reading\n * mode.\n * @default 'ltr'\n */\n direction?: Direction\n\n /**\n * The content of the combobox\n */\n children?: React.ReactNode\n\n /**\n * Enables/disabled automatic filtering.\n * @default true\n */\n autoFilter?: boolean\n\n /**\n * The name of the combobox. Submitted with its owning form as part of a\n * name/value pair.\n */\n name?: string\n\n /**\n * Allow single or multiple selection.\n * @default true\n */\n multiple?: boolean\n}\n\nconst Root = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n {\n multiple = true,\n value: valueProp,\n onValueChange,\n name,\n children,\n ...restProps\n },\n forwardRef\n ) => {\n const {\n openState,\n setOpenState,\n value = [],\n setValue,\n required,\n readOnly,\n 'aria-disabled': ariaDisabled,\n disabled,\n direction,\n size,\n placeholder,\n triggerRef,\n } = useComboboxContext()\n\n const {\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n label,\n isFloatingLabel,\n focused,\n formElementRef,\n } = useFormFieldContext<HTMLSelectElement>()\n\n useEffect(() => {\n setRequired?.(required)\n setDisabled?.(disabled)\n setAriaDisabled?.(ariaDisabled)\n setReadOnly?.(readOnly)\n }, [\n readOnly,\n disabled,\n ariaDisabled,\n required,\n setRequired,\n setDisabled,\n setAriaDisabled,\n setReadOnly,\n ])\n\n const { ignoreNextTooltip } = useBaseTooltipContext()\n const prevOpen = usePrevious(openState)\n\n useEffect(() => {\n if (prevOpen === true && !openState) {\n ignoreNextTooltip()\n }\n }, [ignoreNextTooltip, openState, prevOpen])\n\n const shouldUseFloatingLabel = label !== null && isFloatingLabel\n const isFloating =\n placeholder !== undefined || value.length !== 0 || focused\n\n const onSetSelectedValue = (newValue: string | string[]): void => {\n // If no defaultValue is provided the newValue is always an array so we need validate the types\n if (!multiple && Array.isArray(newValue)) {\n setValue(newValue[0])\n } else if (multiple && !Array.isArray(newValue)) {\n setValue([newValue])\n } else {\n setValue(newValue)\n }\n }\n\n const onOpenChange = (value: boolean): void => {\n if (!booleanify(readOnly)) {\n setOpenState(value)\n }\n }\n\n const isFormControl = Boolean(triggerRef.current?.closest('form'))\n\n const getOptionValue = (\n itemValue: string | string[]\n ): JSX.Element | JSX.Element[] => {\n if (multiple && Array.isArray(itemValue)) {\n return (value as string[]).map(itemValue => (\n <option key={itemValue} value={itemValue}>\n {itemValue}\n </option>\n ))\n } else {\n return (\n <option key={itemValue as string} value={itemValue}>\n {itemValue}\n </option>\n )\n }\n }\n\n return (\n <RadixPopover.Root open={openState} onOpenChange={onOpenChange}>\n <AriakitComboboxProvider\n open={openState}\n setOpen={onOpenChange}\n selectedValue={value}\n setSelectedValue={onSetSelectedValue}\n >\n <StyledComboboxContent\n ref={forwardRef}\n {...restProps}\n dir={direction}\n data-form-element='select'\n >\n {shouldUseFloatingLabel && (\n <FloatingLabel floating={isFloating} size={size}>\n {label}\n </FloatingLabel>\n )}\n {children}\n </StyledComboboxContent>\n </AriakitComboboxProvider>\n {isFormControl && (\n <StyledNativeSelect\n multiple={multiple}\n autoComplete='off'\n name={name}\n tabIndex={-1}\n aria-hidden='true'\n ref={formElementRef}\n required={required}\n disabled={disabled}\n aria-disabled={ariaDisabled}\n value={value}\n // since we don't support autoComplete there is no way this select value will change,\n // although we still need to provide `onChange` since we use `value` and not `defaultValue`\n onChange={() => {}}\n >\n {value.length === 0 ? (\n <option value='' />\n ) : (\n // since we don't support autoComplete we can render here only selected values\n getOptionValue(value)\n )}\n </StyledNativeSelect>\n )}\n </RadixPopover.Root>\n )\n }\n)\n\nexport const Combobox = React.forwardRef<\n ElementRef<typeof StyledComboboxContent>,\n ComboboxProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled,\n defaultOpen = false,\n open,\n valid,\n disabled,\n readOnly,\n required,\n value,\n defaultValue,\n onOpen,\n onClose,\n searchValue,\n onSearchValueChange,\n onValueChange,\n direction = 'ltr',\n autoFilter = true,\n ...restProps\n },\n forwardRef\n ) => (\n <ComboboxProvider\n defaultValue={defaultValue}\n value={value}\n onValueChange={onValueChange}\n searchValue={searchValue}\n onSearchValueChange={onSearchValueChange}\n defaultOpen={defaultOpen}\n open={open}\n onOpen={onOpen}\n onClose={onClose}\n valid={valid}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n aria-disabled={ariaDisabled}\n direction={direction}\n autoFilter={autoFilter}\n >\n <BaseTooltipProvider>\n <Root {...restProps} value={value} ref={forwardRef} />\n </BaseTooltipProvider>\n </ComboboxProvider>\n )\n) as ForwardRefExoticComponent<ComboboxProps> & Partials\n\nexport interface Partials {\n Portal: typeof Portal\n Trigger: typeof Trigger\n Content: typeof Content\n Item: typeof Item\n Group: typeof Group\n GroupLabel: typeof GroupLabel\n Value: typeof Value\n Separator: typeof Separator\n NoResult: typeof NoResult\n}\n\nCombobox.Portal = Portal\nCombobox.Trigger = Trigger\nCombobox.Content = Content\nCombobox.Item = Item\nCombobox.Group = Group\nCombobox.GroupLabel = GroupLabel\nCombobox.Value = Value\nCombobox.Separator = Separator\nCombobox.NoResult = NoResult\n"],"names":["RadixTrigger","RadixAnchor","AriakitComboboxTrigger","AriakitComboboxList","AriakitComboboxItemCheck","RadixPortal","AriakitGroup","GroupLabel","value","itemValue","AriakitComboboxProvider"],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import react__default, { ReactNode, FC, ComponentPropsWithRef } from 'react';
|
|
2
|
+
import react__default, { ReactNode, FC, ComponentPropsWithRef, ForwardRefExoticComponent } from 'react';
|
|
3
3
|
import { FormElementProps } from '@mirohq/design-system-base-form';
|
|
4
4
|
import { BaseInputStyledProps, BaseInputProps } from '@mirohq/design-system-base-input';
|
|
5
5
|
import { CSSProperties } from '@stitches/react';
|
|
@@ -40,7 +40,7 @@ interface TriggerSharedProps extends Omit<BaseInputStyledProps, 'size'> {
|
|
|
40
40
|
*/
|
|
41
41
|
clearable?: boolean;
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
type TriggerProps = TriggerSharedProps & ({
|
|
44
44
|
clearable: false;
|
|
45
45
|
clearActionLabel?: never;
|
|
46
46
|
} | {
|
|
@@ -52,16 +52,16 @@ declare type TriggerProps = TriggerSharedProps & ({
|
|
|
52
52
|
declare const Trigger: react__default.ForwardRefExoticComponent<TriggerProps & react__default.RefAttributes<HTMLInputElement>>;
|
|
53
53
|
|
|
54
54
|
declare const StyledContent: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<react.ForwardRefExoticComponent<RadixPopover.PopoverContentProps & react.RefAttributes<HTMLDivElement>>>, never> & _stitches_react_types_styled_component.TransformProps<{}, {}> & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLDivElement>> & _mirohq_design_system_stitches.StitchesInternals<react.ForwardRefExoticComponent<RadixPopover.PopoverContentProps & react.RefAttributes<HTMLDivElement>>, {}, {}>;
|
|
55
|
-
|
|
55
|
+
type StyledContentProps = StrictComponentProps<typeof StyledContent>;
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
type PointerDownOutsideEvent = CustomEvent<{
|
|
58
58
|
originalEvent: PointerEvent;
|
|
59
59
|
}>;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
type Side = 'top' | 'right' | 'bottom' | 'left';
|
|
61
|
+
type Align = 'start' | 'center' | 'end';
|
|
62
|
+
type Direction = 'ltr' | 'rtl';
|
|
63
|
+
type Overflow = 'auto' | 'visible';
|
|
64
|
+
type Sticky = 'partial' | 'always';
|
|
65
65
|
|
|
66
66
|
type types_PointerDownOutsideEvent = PointerDownOutsideEvent;
|
|
67
67
|
type types_Side = Side;
|
|
@@ -170,8 +170,8 @@ interface ContentProps extends StyledContentProps {
|
|
|
170
170
|
}
|
|
171
171
|
declare const Content: react__default.ForwardRefExoticComponent<Omit<ContentProps, "ref"> & react__default.RefAttributes<HTMLDivElement>>;
|
|
172
172
|
|
|
173
|
-
declare const StyledItem: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<(props: _ariakit_react.ComboboxItemProps
|
|
174
|
-
|
|
173
|
+
declare const StyledItem: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<(props: _ariakit_react.ComboboxItemProps) => react.ReactElement<any, string | react.JSXElementConstructor<any>>>, never> & _stitches_react_types_styled_component.TransformProps<{}, {}> & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLDivElement>> & _mirohq_design_system_stitches.StitchesInternals<(props: _ariakit_react.ComboboxItemProps) => react.ReactElement<any, string | react.JSXElementConstructor<any>>, {}, {}>;
|
|
174
|
+
type StyledItemProps = StrictComponentProps<typeof StyledItem>;
|
|
175
175
|
|
|
176
176
|
interface ItemProps extends StyledItemProps {
|
|
177
177
|
/**
|
|
@@ -202,16 +202,16 @@ interface PortalProps extends PopoverPortalProps {
|
|
|
202
202
|
*/
|
|
203
203
|
container?: HTMLElement | null;
|
|
204
204
|
}
|
|
205
|
-
declare const Portal: react__default.
|
|
205
|
+
declare const Portal: ({ forceMount: forceMountProp, ...restProps }: PortalProps) => react__default.ReactNode;
|
|
206
206
|
|
|
207
|
-
declare const StyledGroup: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<(props: _ariakit_react.GroupProps
|
|
208
|
-
|
|
207
|
+
declare const StyledGroup: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<(props: _ariakit_react.GroupProps) => react.ReactElement<any, string | react.JSXElementConstructor<any>>>, never> & _stitches_react_types_styled_component.TransformProps<{}, {}> & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLDivElement>> & _mirohq_design_system_stitches.StitchesInternals<(props: _ariakit_react.GroupProps) => react.ReactElement<any, string | react.JSXElementConstructor<any>>, {}, {}>;
|
|
208
|
+
type StyledGroupProps = StrictComponentProps<typeof StyledGroup>;
|
|
209
209
|
|
|
210
|
-
|
|
210
|
+
type GroupProps = StyledGroupProps;
|
|
211
211
|
declare const Group: react__default.ForwardRefExoticComponent<Omit<StyledGroupProps, "ref"> & react__default.RefAttributes<HTMLDivElement>>;
|
|
212
212
|
|
|
213
|
-
declare const StyledGroupLabel: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<(props: _ariakit_react.GroupLabelProps
|
|
214
|
-
|
|
213
|
+
declare const StyledGroupLabel: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<(props: _ariakit_react.GroupLabelProps) => react.ReactElement<any, string | react.JSXElementConstructor<any>>>, never> & _stitches_react_types_styled_component.TransformProps<{}, {}> & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLDivElement>> & _mirohq_design_system_stitches.StitchesInternals<(props: _ariakit_react.GroupLabelProps) => react.ReactElement<any, string | react.JSXElementConstructor<any>>, {}, {}>;
|
|
214
|
+
type StyledGroupLabelProps = StrictComponentProps<typeof StyledGroupLabel>;
|
|
215
215
|
|
|
216
216
|
interface GroupLabelProps extends StyledGroupLabelProps {
|
|
217
217
|
}
|
|
@@ -222,21 +222,26 @@ interface ValueProps {
|
|
|
222
222
|
* The label to make the remove button recognizable by the screen readers.
|
|
223
223
|
*/
|
|
224
224
|
unselectAriaLabel: string;
|
|
225
|
+
/**
|
|
226
|
+
* Allow single or multiple selection.
|
|
227
|
+
* @default true
|
|
228
|
+
*/
|
|
229
|
+
multiple?: boolean;
|
|
225
230
|
}
|
|
226
231
|
declare const Value: FC<ValueProps>;
|
|
227
232
|
|
|
228
233
|
declare const StyledSeparator: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"div">>>, never> & _stitches_react_types_styled_component.TransformProps<{}, {}> & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLDivElement>> & _mirohq_design_system_stitches.StitchesInternals<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"div">>, {}, {}>;
|
|
229
|
-
|
|
234
|
+
type StyledSeparatorProps = StrictComponentProps<typeof StyledSeparator>;
|
|
230
235
|
|
|
231
236
|
interface SeparatorProps extends StyledSeparatorProps {
|
|
232
237
|
}
|
|
233
238
|
declare const Separator: react__default.ForwardRefExoticComponent<Omit<SeparatorProps, "ref"> & react__default.RefAttributes<HTMLDivElement>>;
|
|
234
239
|
|
|
235
240
|
declare const StyledComboboxContent: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"div">>>, never> & _stitches_react_types_styled_component.TransformProps<{}, {}> & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLDivElement>> & _mirohq_design_system_stitches.StitchesInternals<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"div">>, {}, {}>;
|
|
236
|
-
|
|
241
|
+
type StyledComboboxProps = ComponentPropsWithRef<typeof StyledComboboxContent>;
|
|
237
242
|
|
|
238
243
|
declare const StyledNoResult: react.ForwardRefExoticComponent<Omit<Omit<_mirohq_design_system_stitches.StyledComponentProps<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"div">>>, never> & _stitches_react_types_styled_component.TransformProps<{}, {}> & _mirohq_design_system_stitches.CustomStylesProps, "ref"> & react.RefAttributes<HTMLDivElement>> & _mirohq_design_system_stitches.StitchesInternals<react.ForwardRefExoticComponent<_mirohq_design_system_primitive.PrimitiveProps<"div">>, {}, {}>;
|
|
239
|
-
|
|
244
|
+
type StyledNoResultProps = StrictComponentProps<typeof StyledNoResult>;
|
|
240
245
|
|
|
241
246
|
interface NoResultProps extends StyledNoResultProps {
|
|
242
247
|
/**
|
|
@@ -251,16 +256,16 @@ interface ComboboxProps extends FormElementProps, StyledComboboxProps {
|
|
|
251
256
|
* The value of the combobox when initially rendered. Use when you do not need
|
|
252
257
|
* to control the state of the combobox.
|
|
253
258
|
*/
|
|
254
|
-
defaultValue?: string[];
|
|
259
|
+
defaultValue?: string[] | string;
|
|
255
260
|
/**
|
|
256
261
|
* The controlled value of the combobox. Should be used in conjunction with
|
|
257
262
|
* onValueChange.
|
|
258
263
|
*/
|
|
259
|
-
value?: string[];
|
|
264
|
+
value?: string[] | string;
|
|
260
265
|
/**
|
|
261
266
|
* Event handler called when the value changes.
|
|
262
267
|
*/
|
|
263
|
-
onValueChange?: (value: string[]) => void;
|
|
268
|
+
onValueChange?: (value: string[] | string) => void;
|
|
264
269
|
/**
|
|
265
270
|
* The controlled search value to filter items. Should be used in conjunction with
|
|
266
271
|
* onSearchValueChange.
|
|
@@ -310,8 +315,13 @@ interface ComboboxProps extends FormElementProps, StyledComboboxProps {
|
|
|
310
315
|
* name/value pair.
|
|
311
316
|
*/
|
|
312
317
|
name?: string;
|
|
318
|
+
/**
|
|
319
|
+
* Allow single or multiple selection.
|
|
320
|
+
* @default true
|
|
321
|
+
*/
|
|
322
|
+
multiple?: boolean;
|
|
313
323
|
}
|
|
314
|
-
declare const Combobox:
|
|
324
|
+
declare const Combobox: ForwardRefExoticComponent<ComboboxProps> & Partials;
|
|
315
325
|
interface Partials {
|
|
316
326
|
Portal: typeof Portal;
|
|
317
327
|
Trigger: typeof Trigger;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mirohq/design-system-combobox",
|
|
3
|
-
"version": "0.6.0
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Miro",
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -31,21 +31,21 @@
|
|
|
31
31
|
"@radix-ui/react-popover": "^1.0.7",
|
|
32
32
|
"@radix-ui/react-use-controllable-state": "1.0.1",
|
|
33
33
|
"@react-aria/utils": "^3.13.0",
|
|
34
|
-
"@mirohq/design-system-base-
|
|
35
|
-
"@mirohq/design-system-base-
|
|
36
|
-
"@mirohq/design-system-base-select": "^0.
|
|
37
|
-
"@mirohq/design-system-base-tooltip": "^0.1.
|
|
38
|
-
"@mirohq/design-system-chip": "^0.
|
|
39
|
-
"@mirohq/design-system-experiments": "^0.
|
|
40
|
-
"@mirohq/design-system-icons": "^0.
|
|
34
|
+
"@mirohq/design-system-base-input": "^0.5.31",
|
|
35
|
+
"@mirohq/design-system-base-form": "^0.3.14",
|
|
36
|
+
"@mirohq/design-system-base-select": "^0.1.31",
|
|
37
|
+
"@mirohq/design-system-base-tooltip": "^0.1.1",
|
|
38
|
+
"@mirohq/design-system-chip": "^0.2.41",
|
|
39
|
+
"@mirohq/design-system-experiments": "^0.4.0",
|
|
40
|
+
"@mirohq/design-system-icons": "^0.74.3",
|
|
41
41
|
"@mirohq/design-system-primitive": "^1.1.2",
|
|
42
|
-
"@mirohq/design-system-scroll-area": "^0.4.
|
|
43
|
-
"@mirohq/design-system-
|
|
44
|
-
"@mirohq/design-system-use-aria-disabled": "^0.2.1",
|
|
45
|
-
"@mirohq/design-system-use-id": "^0.1.2",
|
|
42
|
+
"@mirohq/design-system-scroll-area": "^0.4.28",
|
|
43
|
+
"@mirohq/design-system-use-aria-disabled": "^0.3.1",
|
|
46
44
|
"@mirohq/design-system-use-layout-effect": "^0.2.1",
|
|
47
45
|
"@mirohq/design-system-use-previous": "^0.1.0",
|
|
48
|
-
"@mirohq/design-system-
|
|
46
|
+
"@mirohq/design-system-stitches": "^2.6.40",
|
|
47
|
+
"@mirohq/design-system-utils": "^0.15.6",
|
|
48
|
+
"@mirohq/design-system-use-id": "^0.1.2"
|
|
49
49
|
},
|
|
50
50
|
"scripts": {
|
|
51
51
|
"build": "rollup -c ../../../rollup.config.js",
|