@bioturing/components 0.46.4 → 0.48.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/components/base-menu/component.js +19 -21
- package/dist/components/base-menu/component.js.map +1 -1
- package/dist/components/base-menu/index.d.ts +1 -1
- package/dist/components/base-menu/index.d.ts.map +1 -1
- package/dist/components/base-menu/index.js +12 -7
- package/dist/components/base-menu/index.js.map +1 -1
- package/dist/components/base-menu/item.css +1 -1
- package/dist/components/base-menu/item.d.ts +13 -2
- package/dist/components/base-menu/item.d.ts.map +1 -1
- package/dist/components/base-menu/item.js +62 -47
- package/dist/components/base-menu/item.js.map +1 -1
- package/dist/components/base-menu/style.css +1 -1
- package/dist/components/checkbox/component.d.ts +2 -2
- package/dist/components/checkbox/component.d.ts.map +1 -1
- package/dist/components/checkbox/component.js.map +1 -1
- package/dist/components/choice-list/component.js +12 -12
- package/dist/components/combobox/component.d.ts.map +1 -1
- package/dist/components/combobox/component.js +121 -121
- package/dist/components/combobox/component.js.map +1 -1
- package/dist/components/combobox/style.css +1 -1
- package/dist/components/data-table/component.d.ts.map +1 -1
- package/dist/components/data-table/component.js +99 -79
- package/dist/components/data-table/component.js.map +1 -1
- package/dist/components/data-table/components/TableBody.d.ts +3 -2
- package/dist/components/data-table/components/TableBody.d.ts.map +1 -1
- package/dist/components/data-table/components/TableBody.js +106 -89
- package/dist/components/data-table/components/TableBody.js.map +1 -1
- package/dist/components/data-table/components/TableHeader.d.ts +3 -1
- package/dist/components/data-table/components/TableHeader.d.ts.map +1 -1
- package/dist/components/data-table/components/TableHeader.js +121 -93
- package/dist/components/data-table/components/TableHeader.js.map +1 -1
- package/dist/components/data-table/components/TablePagination.d.ts.map +1 -1
- package/dist/components/data-table/components/TablePagination.js +36 -31
- package/dist/components/data-table/components/TablePagination.js.map +1 -1
- package/dist/components/data-table/hooks.d.ts.map +1 -1
- package/dist/components/data-table/hooks.js +98 -83
- package/dist/components/data-table/hooks.js.map +1 -1
- package/dist/components/data-table/style.css +1 -1
- package/dist/components/data-table/types.d.ts +1 -1
- package/dist/components/data-table/types.d.ts.map +1 -1
- package/dist/components/data-table/utils.js +37 -30
- package/dist/components/data-table/utils.js.map +1 -1
- package/dist/components/data-table/variant-minimal.css +1 -0
- package/dist/components/data-table/variant-zebra.css +1 -0
- package/dist/components/dialog/Dialog.js +46 -46
- package/dist/components/dialog/Dialog.js.map +1 -1
- package/dist/components/dialog/dialog.css +1 -1
- package/dist/components/dropdown-menu/component.d.ts.map +1 -1
- package/dist/components/dropdown-menu/component.js +121 -144
- package/dist/components/dropdown-menu/component.js.map +1 -1
- package/dist/components/dropdown-menu/index.d.ts +2 -0
- package/dist/components/dropdown-menu/index.d.ts.map +1 -1
- package/dist/components/dropdown-menu/item.d.ts +7 -15
- package/dist/components/dropdown-menu/item.d.ts.map +1 -1
- package/dist/components/dropdown-menu/item.js +132 -81
- package/dist/components/dropdown-menu/item.js.map +1 -1
- package/dist/components/dropdown-menu/radio-group.d.ts +14 -0
- package/dist/components/dropdown-menu/radio-group.d.ts.map +1 -0
- package/dist/components/dropdown-menu/radio-group.js +45 -0
- package/dist/components/dropdown-menu/radio-group.js.map +1 -0
- package/dist/components/dropdown-menu/search-mode.d.ts +4 -0
- package/dist/components/dropdown-menu/search-mode.d.ts.map +1 -0
- package/dist/components/dropdown-menu/search-mode.js +6 -0
- package/dist/components/dropdown-menu/search-mode.js.map +1 -0
- package/dist/components/dropdown-menu/style.css +1 -1
- package/dist/components/dropdown-menu/submenu.d.ts +25 -0
- package/dist/components/dropdown-menu/submenu.d.ts.map +1 -0
- package/dist/components/dropdown-menu/submenu.js +96 -0
- package/dist/components/dropdown-menu/submenu.js.map +1 -0
- package/dist/components/dropdown-menu/types.d.ts +85 -12
- package/dist/components/dropdown-menu/types.d.ts.map +1 -1
- package/dist/components/dropdown-menu/useDropdownMenu.d.ts +4 -8
- package/dist/components/dropdown-menu/useDropdownMenu.d.ts.map +1 -1
- package/dist/components/dropdown-menu/useDropdownMenu.js +108 -81
- package/dist/components/dropdown-menu/useDropdownMenu.js.map +1 -1
- package/dist/components/form/FormItem/ItemHolder.d.ts +6 -5
- package/dist/components/form/FormItem/ItemHolder.d.ts.map +1 -1
- package/dist/components/form/FormItem/ItemHolder.js +32 -29
- package/dist/components/form/FormItem/ItemHolder.js.map +1 -1
- package/dist/components/form/FormItem/index.d.ts +6 -0
- package/dist/components/form/FormItem/index.d.ts.map +1 -1
- package/dist/components/form/FormItem/index.js +138 -127
- package/dist/components/form/FormItem/index.js.map +1 -1
- package/dist/components/form/FormValidationContext.d.ts +5 -0
- package/dist/components/form/FormValidationContext.d.ts.map +1 -0
- package/dist/components/form/FormValidationContext.js +7 -0
- package/dist/components/form/FormValidationContext.js.map +1 -0
- package/dist/components/form/component.d.ts +6 -1
- package/dist/components/form/component.d.ts.map +1 -1
- package/dist/components/form/component.js +30 -20
- package/dist/components/form/component.js.map +1 -1
- package/dist/components/form/formValidationRule.d.ts +19 -0
- package/dist/components/form/formValidationRule.d.ts.map +1 -0
- package/dist/components/form/formValidationRule.js +22 -0
- package/dist/components/form/formValidationRule.js.map +1 -0
- package/dist/components/form/index.d.ts +2 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/useFormValidation.d.ts +3 -0
- package/dist/components/form/useFormValidation.d.ts.map +1 -0
- package/dist/components/form/useFormValidation.js +18 -0
- package/dist/components/form/useFormValidation.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/keyboard-shortcut/component.d.ts +2 -0
- package/dist/components/keyboard-shortcut/component.d.ts.map +1 -1
- package/dist/components/keyboard-shortcut/component.js +69 -49
- package/dist/components/keyboard-shortcut/component.js.map +1 -1
- package/dist/components/modal/Modal.d.ts +1 -1
- package/dist/components/modal/Modal.js +9 -9
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/style.css +1 -1
- package/dist/components/select/component.js +29 -29
- package/dist/components/select/component.js.map +1 -1
- package/dist/components/theme-provider/component.d.ts +3 -1
- package/dist/components/theme-provider/component.d.ts.map +1 -1
- package/dist/components/theme-provider/component.js +32 -31
- package/dist/components/theme-provider/component.js.map +1 -1
- package/dist/components/theme-provider/context/index.d.ts +2 -1
- package/dist/components/theme-provider/context/index.d.ts.map +1 -1
- package/dist/components/theme-provider/context/provider.d.ts +2 -3
- package/dist/components/theme-provider/context/provider.d.ts.map +1 -1
- package/dist/components/theme-provider/context/provider.js +13 -6
- package/dist/components/theme-provider/context/provider.js.map +1 -1
- package/dist/components/theme-provider/context/themeStore.d.ts +15 -0
- package/dist/components/theme-provider/context/themeStore.d.ts.map +1 -1
- package/dist/components/theme-provider/context/themeStore.js +10 -9
- package/dist/components/theme-provider/context/themeStore.js.map +1 -1
- package/dist/components/theme-provider/style.css +1 -1
- package/dist/components/tooltip/component.d.ts.map +1 -1
- package/dist/components/tooltip/component.js +23 -12
- package/dist/components/tooltip/component.js.map +1 -1
- package/dist/index.js +273 -258
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +9 -0
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +14 -0
- package/dist/metadata.js.map +1 -1
- package/dist/stats.html +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","sources":["../../../src/components/dialog/Dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { useStableCallback } from \"@base-ui/utils/useStableCallback\";\nimport { XIcon } from \"@bioturing/assets\";\nimport { getConfirmLocale } from \"antd/es/modal/locale\";\nimport { useLocale } from \"antd/es/locale\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Button, type ButtonProps } from \"../button/component\";\nimport { useControlledState } from \"../hooks/useControlledState\";\nimport { IconButton } from \"../icon-button\";\nimport { Spin } from \"../spin\";\nimport { Stack } from \"../stack\";\nimport { useTheme } from \"../theme-provider\";\nimport { Truncate } from \"../truncate\";\nimport { clsx, useCls } from \"../utils\";\nimport type { ModalType } from \"../modal/functions\";\nimport {\n DIALOG_CLOSE_REASON_ESCAPE,\n DIALOG_DEFAULT_BODY_SCROLLABLE,\n DIALOG_DEFAULT_CANCEL_TEXT,\n DIALOG_DEFAULT_CENTERED,\n DIALOG_DEFAULT_OK_TEXT,\n DIALOG_DEFAULT_OPEN,\n DIALOG_DEFAULT_SIZE,\n DIALOG_SIZE_WIDTHS,\n type DialogBackground,\n type DialogSize,\n} from \"./constants\";\n\nexport type DialogCancelEvent = Event | React.MouseEvent<HTMLButtonElement>;\nexport type DialogOkEvent = React.MouseEvent<HTMLButtonElement>;\n\nconst DIALOG_ELEVATED_BACKGROUND_MAX_WIDTH = parseInt(\n DIALOG_SIZE_WIDTHS.medium,\n 10,\n);\n\nfunction resolveContentPadding(\n contentPadding: number | string | boolean | undefined,\n) {\n if (typeof contentPadding === \"undefined\") {\n return undefined;\n }\n\n if (contentPadding === false || contentPadding === 0) {\n return \"0\";\n }\n\n return typeof contentPadding === \"number\"\n ? `${contentPadding}px`\n : contentPadding;\n}\n\nfunction resolveBackground(\n size: DialogSize,\n background?: DialogBackground,\n): DialogBackground {\n if (background) {\n return background;\n }\n\n const dialogWidth = parseInt(DIALOG_SIZE_WIDTHS[size], 10);\n\n if (\n !Number.isNaN(dialogWidth) &&\n dialogWidth <= DIALOG_ELEVATED_BACKGROUND_MAX_WIDTH\n ) {\n return \"elevated\";\n }\n\n return \"container\";\n}\n\nexport interface DialogProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onCancel?: (event?: DialogCancelEvent) => void;\n /**\n * @deprecated Use `onCancel` instead.\n */\n onClose?: (event?: DialogCancelEvent) => void;\n onOk?: (event: DialogOkEvent) => void;\n title?: React.ReactNode;\n footer?: React.ReactNode;\n size?: DialogSize;\n loading?: boolean;\n confirmLoading?: boolean;\n hideOkButton?: boolean;\n hideCancelButton?: boolean;\n okText?: React.ReactNode;\n cancelText?: React.ReactNode;\n okType?: ButtonProps[\"type\"];\n contentPadding?: number | string | boolean;\n afterTitle?: React.ReactNode;\n beforeCloseButton?: React.ReactNode;\n afterCloseButton?: React.ReactNode;\n defaultFixedHeaderFooter?: boolean;\n centered?: boolean;\n type?: ModalType;\n background?: DialogBackground;\n bodyScrollable?: boolean;\n closeIcon?: React.ReactNode | false;\n closable?: boolean;\n maskClosable?: boolean;\n keyboard?: boolean;\n width?: number | string;\n style?: React.CSSProperties;\n destroyOnHidden?: boolean;\n afterOpenChange?: (open: boolean) => void;\n className?: string;\n rootClassName?: string;\n headerClassName?: string;\n bodyClassName?: string;\n footerClassName?: string;\n okButtonProps?: ButtonProps;\n cancelButtonProps?: ButtonProps;\n}\n\nexport const Dialog = ({\n children,\n open: openProp,\n defaultOpen = DIALOG_DEFAULT_OPEN,\n onCancel,\n onClose,\n onOk,\n title,\n footer,\n size,\n loading = false,\n confirmLoading = false,\n hideOkButton = false,\n hideCancelButton = false,\n okText = DIALOG_DEFAULT_OK_TEXT,\n cancelText = DIALOG_DEFAULT_CANCEL_TEXT,\n okType = \"primary\",\n contentPadding,\n afterTitle,\n beforeCloseButton,\n afterCloseButton,\n defaultFixedHeaderFooter = false,\n centered = DIALOG_DEFAULT_CENTERED,\n type = \"default\",\n background,\n bodyScrollable = DIALOG_DEFAULT_BODY_SCROLLABLE,\n closeIcon,\n closable = true,\n maskClosable = true,\n keyboard = true,\n width,\n style,\n destroyOnHidden = false,\n afterOpenChange,\n className,\n rootClassName,\n headerClassName,\n bodyClassName,\n footerClassName,\n okButtonProps,\n cancelButtonProps,\n}: DialogProps) => {\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const [actualOpen, setActualOpen] = useControlledState(\n openProp,\n undefined,\n defaultOpen,\n );\n const [locale] = useLocale(\"Modal\", getConfirmLocale());\n const [isContentOverflow, setIsContentOverflow] = useState(false);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n\n const resolvedSize =\n size ?? (type === \"default\" ? DIALOG_DEFAULT_SIZE : \"xsmall\");\n const isFullscreen = resolvedSize === \"fullscreen\";\n const hasCustomFooter = typeof footer !== \"undefined\";\n const showDefaultFooter =\n !hasCustomFooter && !(hideOkButton && hideCancelButton);\n const showCloseButton = closable && closeIcon !== false;\n const resolvedBackground = resolveBackground(resolvedSize, background);\n const resolvedCloseIcon =\n closeIcon === undefined ? <XIcon size={16} weight=\"bold\" /> : closeIcon;\n const resolvedContentPadding = resolveContentPadding(contentPadding);\n const okTextLocale = okText || locale?.okText;\n const cancelTextLocale = cancelText || locale?.cancelText;\n const closeAriaLabel =\n typeof cancelTextLocale === \"string\" ? cancelTextLocale : \"Close\";\n const resolvedWidth =\n typeof width === \"number\"\n ? `${width}px`\n : (width ?? DIALOG_SIZE_WIDTHS[resolvedSize]);\n\n const popupStyle = useMemo(\n () =>\n ({\n \"--ds-dialog-width\": resolvedWidth,\n \"--ds-dialog-bg\": `var(--ds-color-bg-${resolvedBackground})`,\n ...(resolvedContentPadding\n ? {\n \"--ds-dialog-content-padding\": resolvedContentPadding,\n }\n : {}),\n ...style,\n }) as React.CSSProperties,\n [resolvedBackground, resolvedContentPadding, resolvedWidth, style],\n );\n\n const observeBodyOverflow = useCallback((node: HTMLDivElement | null) => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n\n if (!node) {\n return;\n }\n\n const updateOverflowState = () => {\n setIsContentOverflow(node.scrollHeight > node.clientHeight);\n };\n\n const resizeObserver = new ResizeObserver(() => {\n updateOverflowState();\n });\n\n resizeObserver.observe(node);\n resizeObserverRef.current = resizeObserver;\n updateOverflowState();\n }, []);\n\n useEffect(() => {\n return () => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n };\n }, []);\n\n const handleCancel = useStableCallback((event?: DialogCancelEvent) => {\n if (confirmLoading) {\n return;\n }\n setActualOpen(false);\n onCancel?.(event);\n onClose?.(event);\n });\n\n const handleOk = useStableCallback((event: DialogOkEvent) => {\n if (confirmLoading) {\n return;\n }\n setActualOpen(false);\n onOk?.(event);\n });\n\n const handleOpenChange = useStableCallback(\n (\n nextOpen: boolean,\n eventDetails: Parameters<\n NonNullable<\n React.ComponentProps<typeof BaseDialog.Root>[\"onOpenChange\"]\n >\n >[1],\n ) => {\n if (nextOpen) {\n setActualOpen(true);\n return;\n }\n\n if (\n eventDetails.reason === DIALOG_CLOSE_REASON_ESCAPE &&\n keyboard === false\n ) {\n eventDetails.cancel();\n return;\n }\n\n if (confirmLoading) {\n eventDetails.cancel();\n return;\n }\n\n handleCancel(eventDetails.event);\n },\n );\n\n const hasHeader =\n title ||\n afterTitle ||\n beforeCloseButton ||\n afterCloseButton ||\n showCloseButton;\n const hasFooter = hasCustomFooter ? footer !== null : showDefaultFooter;\n const fixedChrome =\n defaultFixedHeaderFooter || isContentOverflow || isFullscreen;\n\n return (\n <BaseDialog.Root\n open={!!actualOpen}\n onOpenChange={handleOpenChange}\n onOpenChangeComplete={afterOpenChange}\n modal={true}\n disablePointerDismissal={!maskClosable}\n >\n <BaseDialog.Portal keepMounted={!destroyOnHidden}>\n <BaseDialog.Backdrop className={cls(\"dialog-mask\")} />\n <BaseDialog.Viewport\n className={clsx(\n themeClassName,\n rootClassName,\n cls(\n \"dialog-wrap\",\n centered ? \"dialog-centered\" : \"dialog-top-aligned\",\n isFullscreen && \"dialog-wrap-fullscreen\",\n loading && \"dialog-loading\",\n ),\n )}\n >\n <BaseDialog.Popup\n className={clsx(\n cls(\n \"dialog\",\n `dialog-size-${resolvedSize}`,\n fixedChrome && \"dialog-fixed\",\n bodyScrollable === false && \"dialog-no-body-scroll\",\n loading && \"dialog-loading\",\n ),\n className,\n )}\n style={popupStyle}\n aria-busy={loading || undefined}\n >\n <div className={cls(\"dialog-content\")}>\n {hasHeader && (\n <div className={clsx(cls(\"dialog-header\"), headerClassName)}>\n <Stack\n align=\"center\"\n gap={8}\n className={cls(\"dialog-title-row\")}\n >\n <Stack.Child grow>\n {title ? (\n <BaseDialog.Title className={cls(\"dialog-title\")}>\n {typeof title === \"string\" ? (\n <Truncate>{title}</Truncate>\n ) : (\n title\n )}\n </BaseDialog.Title>\n ) : (\n <div />\n )}\n </Stack.Child>\n <Stack.Child stack hug align=\"center\" gap={8}>\n {beforeCloseButton}\n {showCloseButton && (\n <BaseDialog.Close\n render={\n <IconButton\n className={cls(\"dialog-close\")}\n aria-label={closeAriaLabel}\n >\n {resolvedCloseIcon}\n </IconButton>\n }\n />\n )}\n {afterCloseButton}\n </Stack.Child>\n </Stack>\n {afterTitle ? (\n <div className={cls(\"dialog-header-after-title\")}>\n {afterTitle}\n </div>\n ) : null}\n </div>\n )}\n <div className={cls(\"dialog-body-wrapper\")}>\n <div\n ref={observeBodyOverflow}\n className={clsx(cls(\"dialog-body\"), bodyClassName)}\n >\n {children}\n </div>\n {loading ? (\n <div className={cls(\"dialog-loading-overlay\")}>\n <Spin />\n </div>\n ) : null}\n </div>\n\n {hasFooter && (\n <div className={clsx(cls(\"dialog-footer\"), footerClassName)}>\n {hasCustomFooter ? (\n footer\n ) : (\n <div className={cls(\"dialog-footer-actions\")}>\n {!hideCancelButton && (\n <BaseDialog.Close\n render={\n <Button type=\"default\" {...cancelButtonProps}>\n {cancelTextLocale}\n </Button>\n }\n />\n )}\n {!hideOkButton && (\n <Button\n type={okType}\n {...okButtonProps}\n disabled={confirmLoading || okButtonProps?.disabled}\n loading={confirmLoading || okButtonProps?.loading}\n onClick={handleOk}\n >\n {okTextLocale}\n </Button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n};\n"],"names":["DIALOG_ELEVATED_BACKGROUND_MAX_WIDTH","DIALOG_SIZE_WIDTHS","resolveContentPadding","contentPadding","resolveBackground","size","background","dialogWidth","Dialog","children","openProp","defaultOpen","DIALOG_DEFAULT_OPEN","onCancel","onClose","onOk","title","footer","loading","confirmLoading","hideOkButton","hideCancelButton","okText","DIALOG_DEFAULT_OK_TEXT","cancelText","DIALOG_DEFAULT_CANCEL_TEXT","okType","afterTitle","beforeCloseButton","afterCloseButton","defaultFixedHeaderFooter","centered","DIALOG_DEFAULT_CENTERED","type","bodyScrollable","DIALOG_DEFAULT_BODY_SCROLLABLE","closeIcon","closable","maskClosable","keyboard","width","style","destroyOnHidden","afterOpenChange","className","rootClassName","headerClassName","bodyClassName","footerClassName","okButtonProps","cancelButtonProps","cls","useCls","themeClassName","useTheme","actualOpen","setActualOpen","useControlledState","locale","useLocale","getConfirmLocale","isContentOverflow","setIsContentOverflow","useState","resizeObserverRef","useRef","resolvedSize","DIALOG_DEFAULT_SIZE","isFullscreen","hasCustomFooter","showDefaultFooter","showCloseButton","resolvedBackground","resolvedCloseIcon","jsx","XIcon","resolvedContentPadding","okTextLocale","cancelTextLocale","closeAriaLabel","resolvedWidth","popupStyle","useMemo","observeBodyOverflow","useCallback","node","updateOverflowState","resizeObserver","useEffect","handleCancel","useStableCallback","event","handleOk","handleOpenChange","nextOpen","eventDetails","DIALOG_CLOSE_REASON_ESCAPE","hasHeader","hasFooter","fixedChrome","BaseDialog","clsx","jsxs","Stack","Truncate","IconButton","Spin","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dialog.js","sources":["../../../src/components/dialog/Dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { useStableCallback } from \"@base-ui/utils/useStableCallback\";\nimport { XIcon } from \"@bioturing/assets\";\nimport { getConfirmLocale } from \"antd/es/modal/locale\";\nimport { useLocale } from \"antd/es/locale\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Button, type ButtonProps } from \"../button/component\";\nimport { useControlledState } from \"../hooks/useControlledState\";\nimport { IconButton } from \"../icon-button\";\nimport { Spin } from \"../spin\";\nimport { Stack } from \"../stack\";\nimport { useTheme } from \"../theme-provider\";\nimport { Truncate } from \"../truncate\";\nimport { clsx, useCls } from \"../utils\";\nimport type { ModalType } from \"../modal/functions\";\nimport {\n DIALOG_CLOSE_REASON_ESCAPE,\n DIALOG_DEFAULT_BODY_SCROLLABLE,\n DIALOG_DEFAULT_CANCEL_TEXT,\n DIALOG_DEFAULT_CENTERED,\n DIALOG_DEFAULT_OK_TEXT,\n DIALOG_DEFAULT_OPEN,\n DIALOG_DEFAULT_SIZE,\n DIALOG_SIZE_WIDTHS,\n type DialogBackground,\n type DialogSize,\n} from \"./constants\";\n\nexport type DialogCancelEvent = Event | React.MouseEvent<HTMLButtonElement>;\nexport type DialogOkEvent = React.MouseEvent<HTMLButtonElement>;\n\nconst DIALOG_ELEVATED_BACKGROUND_MAX_WIDTH = parseInt(\n DIALOG_SIZE_WIDTHS.medium,\n 10,\n);\n\nfunction resolveContentPadding(\n contentPadding: number | string | boolean | undefined,\n) {\n if (typeof contentPadding === \"undefined\") {\n return undefined;\n }\n\n if (contentPadding === false || contentPadding === 0) {\n return \"0\";\n }\n\n return typeof contentPadding === \"number\"\n ? `${contentPadding}px`\n : contentPadding;\n}\n\nfunction resolveBackground(\n size: DialogSize,\n background?: DialogBackground,\n): DialogBackground {\n if (background) {\n return background;\n }\n\n const dialogWidth = parseInt(DIALOG_SIZE_WIDTHS[size], 10);\n\n if (\n !Number.isNaN(dialogWidth) &&\n dialogWidth <= DIALOG_ELEVATED_BACKGROUND_MAX_WIDTH\n ) {\n return \"elevated\";\n }\n\n return \"container\";\n}\n\nexport interface DialogProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onCancel?: (event?: DialogCancelEvent) => void;\n /**\n * @deprecated Use `onCancel` instead.\n */\n onClose?: (event?: DialogCancelEvent) => void;\n onOk?: (event: DialogOkEvent) => void;\n title?: React.ReactNode;\n footer?: React.ReactNode;\n size?: DialogSize;\n loading?: boolean;\n confirmLoading?: boolean;\n hideOkButton?: boolean;\n hideCancelButton?: boolean;\n okText?: React.ReactNode;\n cancelText?: React.ReactNode;\n okType?: ButtonProps[\"type\"];\n contentPadding?: number | string | boolean;\n afterTitle?: React.ReactNode;\n beforeCloseButton?: React.ReactNode;\n afterCloseButton?: React.ReactNode;\n defaultFixedHeaderFooter?: boolean;\n centered?: boolean;\n type?: ModalType;\n background?: DialogBackground;\n bodyScrollable?: boolean;\n closeIcon?: React.ReactNode | false;\n closable?: boolean;\n maskClosable?: boolean;\n keyboard?: boolean;\n width?: number | string;\n style?: React.CSSProperties;\n destroyOnHidden?: boolean;\n afterOpenChange?: (open: boolean) => void;\n className?: string;\n rootClassName?: string;\n headerClassName?: string;\n bodyClassName?: string;\n footerClassName?: string;\n okButtonProps?: ButtonProps;\n cancelButtonProps?: ButtonProps;\n}\n\nexport const Dialog = ({\n children,\n open: openProp,\n defaultOpen = DIALOG_DEFAULT_OPEN,\n onCancel,\n onClose,\n onOk,\n title,\n footer,\n size,\n loading = false,\n confirmLoading = false,\n hideOkButton = false,\n hideCancelButton = false,\n okText = DIALOG_DEFAULT_OK_TEXT,\n cancelText = DIALOG_DEFAULT_CANCEL_TEXT,\n okType = \"primary\",\n contentPadding,\n afterTitle,\n beforeCloseButton,\n afterCloseButton,\n defaultFixedHeaderFooter = false,\n centered = DIALOG_DEFAULT_CENTERED,\n type = \"default\",\n background,\n bodyScrollable = DIALOG_DEFAULT_BODY_SCROLLABLE,\n closeIcon,\n closable = true,\n maskClosable = true,\n keyboard = true,\n width,\n style,\n destroyOnHidden = false,\n afterOpenChange,\n className,\n rootClassName,\n headerClassName,\n bodyClassName,\n footerClassName,\n okButtonProps,\n cancelButtonProps,\n}: DialogProps) => {\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const [actualOpen, setActualOpen] = useControlledState(\n openProp,\n undefined,\n defaultOpen,\n );\n const [locale] = useLocale(\"Modal\", getConfirmLocale());\n const [isContentOverflow, setIsContentOverflow] = useState(false);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n\n const resolvedSize =\n size ?? (type === \"default\" ? DIALOG_DEFAULT_SIZE : \"xsmall\");\n const isFullscreen = resolvedSize === \"fullscreen\";\n const hasCustomFooter = typeof footer !== \"undefined\";\n const showDefaultFooter =\n !hasCustomFooter && !(hideOkButton && hideCancelButton);\n const showCloseButton = closable && closeIcon !== false;\n const resolvedBackground = resolveBackground(resolvedSize, background);\n const resolvedCloseIcon =\n closeIcon === undefined ? <XIcon size={16} weight=\"bold\" /> : closeIcon;\n const resolvedContentPadding = resolveContentPadding(contentPadding);\n const okTextLocale = okText || locale?.okText;\n const cancelTextLocale = cancelText || locale?.cancelText;\n const closeAriaLabel =\n typeof cancelTextLocale === \"string\" ? cancelTextLocale : \"Close\";\n const resolvedWidth =\n typeof width === \"number\"\n ? `${width}px`\n : (width ?? DIALOG_SIZE_WIDTHS[resolvedSize]);\n\n const popupStyle = useMemo(\n () =>\n ({\n \"--ds-dialog-width\": resolvedWidth,\n \"--ds-dialog-bg\": `var(--ds-color-bg-${resolvedBackground})`,\n ...(resolvedContentPadding\n ? {\n \"--ds-dialog-body-content-padding\": resolvedContentPadding,\n }\n : {}),\n ...style,\n }) as React.CSSProperties,\n [resolvedBackground, resolvedContentPadding, resolvedWidth, style],\n );\n\n const observeBodyOverflow = useCallback((node: HTMLDivElement | null) => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n\n if (!node) {\n return;\n }\n\n const updateOverflowState = () => {\n setIsContentOverflow(node.scrollHeight > node.clientHeight);\n };\n\n const resizeObserver = new ResizeObserver(() => {\n updateOverflowState();\n });\n\n resizeObserver.observe(node);\n resizeObserverRef.current = resizeObserver;\n updateOverflowState();\n }, []);\n\n useEffect(() => {\n return () => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n };\n }, []);\n\n const handleCancel = useStableCallback((event?: DialogCancelEvent) => {\n if (confirmLoading) {\n return;\n }\n setActualOpen(false);\n onCancel?.(event);\n onClose?.(event);\n });\n\n const handleOk = useStableCallback((event: DialogOkEvent) => {\n if (confirmLoading) {\n return;\n }\n setActualOpen(false);\n onOk?.(event);\n });\n\n const handleOpenChange = useStableCallback(\n (\n nextOpen: boolean,\n eventDetails: Parameters<\n NonNullable<\n React.ComponentProps<typeof BaseDialog.Root>[\"onOpenChange\"]\n >\n >[1],\n ) => {\n if (nextOpen) {\n setActualOpen(true);\n return;\n }\n\n if (\n eventDetails.reason === DIALOG_CLOSE_REASON_ESCAPE &&\n keyboard === false\n ) {\n eventDetails.cancel();\n return;\n }\n\n if (confirmLoading) {\n eventDetails.cancel();\n return;\n }\n\n handleCancel(eventDetails.event);\n },\n );\n\n const hasHeader =\n title ||\n afterTitle ||\n beforeCloseButton ||\n afterCloseButton ||\n showCloseButton;\n const hasFooter = hasCustomFooter ? footer !== null : showDefaultFooter;\n const fixedChrome =\n defaultFixedHeaderFooter || isContentOverflow || isFullscreen;\n\n return (\n <BaseDialog.Root\n open={!!actualOpen}\n onOpenChange={handleOpenChange}\n onOpenChangeComplete={afterOpenChange}\n modal={true}\n disablePointerDismissal={!maskClosable}\n >\n <BaseDialog.Portal keepMounted={!destroyOnHidden}>\n <BaseDialog.Backdrop className={cls(\"dialog-mask\")} />\n <BaseDialog.Viewport\n className={clsx(\n themeClassName,\n rootClassName,\n cls(\n \"dialog-wrap\",\n centered ? \"dialog-centered\" : \"dialog-top-aligned\",\n isFullscreen && \"dialog-wrap-fullscreen\",\n loading && \"dialog-loading\",\n ),\n )}\n >\n <BaseDialog.Popup\n className={clsx(\n cls(\n \"dialog\",\n `dialog-size-${resolvedSize}`,\n fixedChrome && \"dialog-fixed\",\n bodyScrollable === false && \"dialog-no-body-scroll\",\n loading && \"dialog-loading\",\n ),\n className,\n )}\n style={popupStyle}\n aria-busy={loading || undefined}\n >\n <div className={cls(\"dialog-content\")}>\n {hasHeader && (\n <div className={clsx(cls(\"dialog-header\"), headerClassName)}>\n <Stack\n align=\"center\"\n gap={8}\n className={cls(\"dialog-title-row\")}\n >\n <Stack.Child grow>\n {title ? (\n <BaseDialog.Title className={cls(\"dialog-title\")}>\n {typeof title === \"string\" ? (\n <Truncate>{title}</Truncate>\n ) : (\n title\n )}\n </BaseDialog.Title>\n ) : (\n <div />\n )}\n </Stack.Child>\n <Stack.Child stack hug align=\"center\" gap={8}>\n {beforeCloseButton}\n {showCloseButton && (\n <BaseDialog.Close\n render={\n <IconButton\n className={cls(\"dialog-close\")}\n aria-label={closeAriaLabel}\n >\n {resolvedCloseIcon}\n </IconButton>\n }\n />\n )}\n {afterCloseButton}\n </Stack.Child>\n </Stack>\n {afterTitle ? (\n <div className={cls(\"dialog-header-after-title\")}>\n {afterTitle}\n </div>\n ) : null}\n </div>\n )}\n <div className={cls(\"dialog-body-wrapper\")}>\n <div\n ref={observeBodyOverflow}\n className={clsx(cls(\"dialog-body\"), bodyClassName)}\n >\n {children}\n </div>\n {loading ? (\n <div className={cls(\"dialog-loading-overlay\")}>\n <Spin />\n </div>\n ) : null}\n </div>\n\n {hasFooter && (\n <div className={clsx(cls(\"dialog-footer\"), footerClassName)}>\n {hasCustomFooter ? (\n footer\n ) : (\n <div className={cls(\"dialog-footer-actions\")}>\n {!hideCancelButton && (\n <BaseDialog.Close\n render={\n <Button type=\"default\" {...cancelButtonProps}>\n {cancelTextLocale}\n </Button>\n }\n />\n )}\n {!hideOkButton && (\n <Button\n type={okType}\n {...okButtonProps}\n disabled={confirmLoading || okButtonProps?.disabled}\n loading={confirmLoading || okButtonProps?.loading}\n onClick={handleOk}\n >\n {okTextLocale}\n </Button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n};\n"],"names":["DIALOG_ELEVATED_BACKGROUND_MAX_WIDTH","DIALOG_SIZE_WIDTHS","resolveContentPadding","contentPadding","resolveBackground","size","background","dialogWidth","Dialog","children","openProp","defaultOpen","DIALOG_DEFAULT_OPEN","onCancel","onClose","onOk","title","footer","loading","confirmLoading","hideOkButton","hideCancelButton","okText","DIALOG_DEFAULT_OK_TEXT","cancelText","DIALOG_DEFAULT_CANCEL_TEXT","okType","afterTitle","beforeCloseButton","afterCloseButton","defaultFixedHeaderFooter","centered","DIALOG_DEFAULT_CENTERED","type","bodyScrollable","DIALOG_DEFAULT_BODY_SCROLLABLE","closeIcon","closable","maskClosable","keyboard","width","style","destroyOnHidden","afterOpenChange","className","rootClassName","headerClassName","bodyClassName","footerClassName","okButtonProps","cancelButtonProps","cls","useCls","themeClassName","useTheme","actualOpen","setActualOpen","useControlledState","locale","useLocale","getConfirmLocale","isContentOverflow","setIsContentOverflow","useState","resizeObserverRef","useRef","resolvedSize","DIALOG_DEFAULT_SIZE","isFullscreen","hasCustomFooter","showDefaultFooter","showCloseButton","resolvedBackground","resolvedCloseIcon","jsx","XIcon","resolvedContentPadding","okTextLocale","cancelTextLocale","closeAriaLabel","resolvedWidth","popupStyle","useMemo","observeBodyOverflow","useCallback","node","updateOverflowState","resizeObserver","useEffect","handleCancel","useStableCallback","event","handleOk","handleOpenChange","nextOpen","eventDetails","DIALOG_CLOSE_REASON_ESCAPE","hasHeader","hasFooter","fixedChrome","BaseDialog","clsx","jsxs","Stack","Truncate","IconButton","Spin","Button"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer components{.ds-dialog-mask{position:fixed;inset:0;z-index:var(--ds-z-index-modal-mask);background-color:var(--ds-color-bg-mask);transition:opacity .2s var(--ds-motion-ease-out)}.ds-dialog-mask[data-starting-style],.ds-dialog-mask[data-ending-style]{opacity:0}.ds-dialog-wrap{
|
|
1
|
+
@layer components{.ds-dialog-mask{position:fixed;inset:0;z-index:var(--ds-z-index-modal-mask);background-color:var(--ds-color-bg-mask);transition:opacity .2s var(--ds-motion-ease-out)}.ds-dialog-mask[data-starting-style],.ds-dialog-mask[data-ending-style]{opacity:0}.ds-dialog-wrap{position:fixed;inset:0;z-index:var(--ds-z-index-modal);display:flex;overflow-y:auto;padding:var(--ds-modal-edge-padding);outline:0;-webkit-overflow-scrolling:touch}.ds-dialog-centered{align-items:center;justify-content:center}.ds-dialog-top-aligned{align-items:flex-start;justify-content:center;padding-top:calc(var(--ds-modal-edge-padding) + 4rem)}.ds-dialog-wrap-fullscreen{padding:0}.ds-dialog{width:min(var(--ds-dialog-width),calc(100vw - var(--ds-modal-edge-padding) * 2));max-width:100%;max-height:calc(100vh - var(--ds-modal-edge-padding) * 2);margin:auto;padding-bottom:0;pointer-events:none;position:relative;top:0;transform-origin:center;transition:transform .2s var(--ds-motion-ease-out),opacity .2s var(--ds-motion-ease-out)}.ds-dialog[data-starting-style],.ds-dialog[data-ending-style]{transform:scale(.96);opacity:0}.ds-dialog-content{width:100%;max-height:inherit;display:flex;flex-direction:column;overflow:hidden;border-radius:var(--ds-border-radius-lg);background:var(--ds-dialog-bg, var(--ds-color-bg-elevated));box-shadow:var(--ds-box-shadow-secondary);color:var(--ds-color-text);pointer-events:auto}.ds-dialog-content:focus,.ds-dialog-content:focus-visible{outline:none}.ds-dialog-size-fullscreen{width:100vw;max-width:100vw;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;top:0}.ds-dialog-size-fullscreen .ds-dialog-content{width:100%;height:100%;max-height:100%;border-radius:0}.ds-dialog-header,.ds-dialog-footer{flex:0 0 auto;background:transparent}.ds-dialog-header{padding-block:var(--ds-modal-header-padding-block);padding-inline:var(--ds-modal-padding)}.ds-dialog-footer{padding-block:var(--ds-modal-footer-padding-block);padding-inline:var(--ds-modal-padding)}.ds-dialog-fixed .ds-dialog-header{border-bottom:1px solid var(--ds-color-split);padding-block:var(--ds-modal-fixed-header-padding-block);padding-inline:var(--ds-modal-padding)}.ds-dialog-fixed .ds-dialog-footer{border-top:1px solid var(--ds-color-split);padding-block:var(--ds-modal-fixed-footer-padding-block);padding-inline:var(--ds-modal-padding)}.ds-dialog-title-row{min-width:0}.ds-dialog-title{display:block;min-width:0;color:var(--ds-color-text);font-size:var(--ds-font-size-lg);font-weight:600;line-height:var(--ds-line-height-lg)}.ds-dialog-header-after-title{margin-top:var(--ds-modal-fixed-header-padding-block)}.ds-dialog-close{flex-shrink:0}.ds-dialog-body-wrapper{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative}.ds-dialog-body{flex:1 1 auto;min-height:0;overflow:auto;padding:var(--ds-dialog-body-content-padding, var(--ds-modal-padding))}.ds-dialog-no-body-scroll .ds-dialog{max-height:100%}.ds-dialog-no-body-scroll .ds-dialog-body{overflow:hidden;display:grid}.ds-dialog-no-body-scroll .ds-dialog-body>*{min-height:0}.ds-dialog-footer-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px}.ds-dialog-loading-overlay{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background-color:color-mix(in oklab,var(--ds-dialog-bg) 60%,transparent);margin-top:calc(var(--ds-dialog-header-height, 0));margin-bottom:calc(var(--ds-dialog-footer-height, 0))}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAcpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAcpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAmB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAQ1E,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC;IACjF,0DAA0D;IAC1D,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC/D;;;OAGG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEvC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,OAAO,cAAc,CAAC;IAC5C;;OAEG;IACH,WAAW,CAAC,EAAE;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,GAAI,oXA2B1B,iBAAiB,4CAgNnB,CAAC"}
|
|
@@ -1,64 +1,61 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs as
|
|
3
|
-
import { Menu as
|
|
2
|
+
import { jsxs as m, jsx as e } from "react/jsx-runtime";
|
|
3
|
+
import { Menu as u } from "@base-ui/react/menu";
|
|
4
4
|
import { Combobox as t } from "@base-ui/react/combobox";
|
|
5
|
-
import { useRef as ne, useState as te, useCallback as
|
|
6
|
-
import { FormItemInputContext as
|
|
7
|
-
import { PopupPanelSize as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { createRenderProp as
|
|
13
|
-
import { DROPDOWN_COLLISION_AVOIDANCE as
|
|
14
|
-
import { Input as
|
|
15
|
-
import { useControlledState as
|
|
16
|
-
import { useCls as
|
|
17
|
-
import { useTheme as
|
|
5
|
+
import { useRef as ne, useState as te, useEffect as ie, useCallback as f, useMemo as g } from "react";
|
|
6
|
+
import { FormItemInputContext as pe } from "antd/es/form/context";
|
|
7
|
+
import { PopupPanelSize as q } from "../popup-panel/constants.js";
|
|
8
|
+
import { hasUnsupportedDropdownMenuSearchItems as de } from "./search-mode.js";
|
|
9
|
+
import { useDropdownMenu as me } from "./useDropdownMenu.js";
|
|
10
|
+
import { BaseMenu as z } from "../base-menu/index.js";
|
|
11
|
+
import { parseAntdPlacement as ue } from "../utils/placement.js";
|
|
12
|
+
import { createRenderProp as le } from "../utils/renderProp.js";
|
|
13
|
+
import { DROPDOWN_COLLISION_AVOIDANCE as ce } from "../utils/constants.js";
|
|
14
|
+
import { Input as ae } from "../input/component.js";
|
|
15
|
+
import { useControlledState as se } from "../hooks/useControlledState.js";
|
|
16
|
+
import { useCls as fe } from "../utils/antdUtils.js";
|
|
17
|
+
import { useTheme as ge } from "../theme-provider/context/themeStore.js";
|
|
18
|
+
import { ScrollArea as B } from "../scroll-area/component.js";
|
|
18
19
|
import { clsx as h } from "../utils/cn.js";
|
|
19
|
-
import { reactNodeToString as
|
|
20
|
-
const
|
|
21
|
-
children:
|
|
22
|
-
items:
|
|
23
|
-
placement:
|
|
24
|
-
openOnHover:
|
|
25
|
-
open:
|
|
26
|
-
onOpenChange:
|
|
27
|
-
defaultOpen:
|
|
28
|
-
className:
|
|
29
|
-
itemRender:
|
|
20
|
+
import { reactNodeToString as he } from "../utils/reactToString.js";
|
|
21
|
+
const Ge = ({
|
|
22
|
+
children: D,
|
|
23
|
+
items: b,
|
|
24
|
+
placement: J,
|
|
25
|
+
openOnHover: N,
|
|
26
|
+
open: Q,
|
|
27
|
+
onOpenChange: W,
|
|
28
|
+
defaultOpen: X = !1,
|
|
29
|
+
className: E,
|
|
30
|
+
itemRender: Y,
|
|
30
31
|
classNames: n,
|
|
31
|
-
size:
|
|
32
|
-
showSearch:
|
|
33
|
-
inCombobox:
|
|
32
|
+
size: w = "auto",
|
|
33
|
+
showSearch: l,
|
|
34
|
+
inCombobox: M,
|
|
34
35
|
searchProps: i = {
|
|
35
36
|
placeholder: "Search..."
|
|
36
37
|
},
|
|
37
|
-
popupMatchTriggerWidth:
|
|
38
|
-
beforeList:
|
|
39
|
-
afterList:
|
|
40
|
-
keepOpenOnSelect:
|
|
41
|
-
highlightedItemKey:
|
|
42
|
-
selectedItemKeys:
|
|
43
|
-
getItemKeywords:
|
|
44
|
-
showCheckbox:
|
|
45
|
-
itemLabelRender:
|
|
46
|
-
nativeButton:
|
|
38
|
+
popupMatchTriggerWidth: T,
|
|
39
|
+
beforeList: P,
|
|
40
|
+
afterList: S,
|
|
41
|
+
keepOpenOnSelect: Z,
|
|
42
|
+
highlightedItemKey: be,
|
|
43
|
+
selectedItemKeys: $,
|
|
44
|
+
getItemKeywords: ee,
|
|
45
|
+
showCheckbox: v,
|
|
46
|
+
itemLabelRender: oe,
|
|
47
|
+
nativeButton: V = !0
|
|
47
48
|
}) => {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
itemLabelRender: ee,
|
|
59
|
-
itemRender: X,
|
|
60
|
-
inCombobox: oe,
|
|
61
|
-
onOpenChange: C,
|
|
49
|
+
const C = typeof M == "boolean" ? M : l, [A, x] = se(Q, W, X), o = fe(), { className: c } = ge(), a = ue(J), _ = ne(null), { itemGroups: I, renderGroup: y } = me({
|
|
50
|
+
items: b,
|
|
51
|
+
keepOpenOnSelect: Z,
|
|
52
|
+
selectedItemKeys: $,
|
|
53
|
+
showCheckbox: v,
|
|
54
|
+
getItemKeywords: ee,
|
|
55
|
+
itemLabelRender: oe,
|
|
56
|
+
itemRender: Y,
|
|
57
|
+
inCombobox: C,
|
|
58
|
+
onOpenChange: x,
|
|
62
59
|
classNames: {
|
|
63
60
|
item: n?.item,
|
|
64
61
|
itemIcon: n?.itemIcon,
|
|
@@ -67,97 +64,77 @@ const _e = ({
|
|
|
67
64
|
groupLabel: n?.groupLabel,
|
|
68
65
|
divider: n?.divider
|
|
69
66
|
}
|
|
70
|
-
}), [
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
}), [O, re] = te("");
|
|
68
|
+
ie(() => {
|
|
69
|
+
!C || process.env.NODE_ENV === "production" || de(b) && console.warn(
|
|
70
|
+
"DropdownMenu search/combobox mode only supports flat `item`, `header`, and `divider` entries. Checkbox, radio-group, and submenu items are ignored."
|
|
71
|
+
);
|
|
72
|
+
}, [C, b]);
|
|
73
|
+
const j = f(() => {
|
|
74
|
+
if (!l)
|
|
75
|
+
return /* @__PURE__ */ m("div", { className: o("dropdown-menu-container"), children: [
|
|
76
|
+
P,
|
|
77
|
+
/* @__PURE__ */ e(B, { fadeEdges: !0, children: I.map(y) }),
|
|
78
|
+
S
|
|
76
79
|
] });
|
|
77
|
-
const r = /* @__PURE__ */ e(
|
|
80
|
+
const r = /* @__PURE__ */ e(pe.Provider, { value: {}, children: /* @__PURE__ */ e(
|
|
78
81
|
t.Input,
|
|
79
82
|
{
|
|
80
83
|
placeholder: i?.placeholder || "Search",
|
|
81
84
|
render: ({ ref: s, ...p }) => /* @__PURE__ */ e(
|
|
82
|
-
|
|
85
|
+
ae,
|
|
83
86
|
{
|
|
84
87
|
...p,
|
|
85
|
-
ref: (
|
|
86
|
-
if (!
|
|
87
|
-
s(
|
|
88
|
+
ref: (d) => {
|
|
89
|
+
if (!d || !d.input) return;
|
|
90
|
+
s(d.input);
|
|
88
91
|
},
|
|
89
92
|
allowClear: !0,
|
|
90
93
|
placeholder: i?.placeholder || "Search",
|
|
91
|
-
value:
|
|
92
|
-
onChange: (
|
|
93
|
-
className: h(
|
|
94
|
-
o("dropdown-menu-search"),
|
|
95
|
-
i?.className
|
|
96
|
-
)
|
|
94
|
+
value: O,
|
|
95
|
+
onChange: (d) => re(d.target.value),
|
|
96
|
+
className: h(o("dropdown-menu-search"), i?.className)
|
|
97
97
|
}
|
|
98
98
|
),
|
|
99
99
|
...i
|
|
100
100
|
},
|
|
101
101
|
"search"
|
|
102
|
-
) }), R = /* @__PURE__ */
|
|
102
|
+
) }), R = /* @__PURE__ */ m(B, { fadeEdges: !0, children: [
|
|
103
103
|
/* @__PURE__ */ e(t.Empty, { className: o("dropdown-menu-empty"), children: "No results found." }),
|
|
104
|
-
/* @__PURE__ */ e(t.List, { className: o("dropdown-menu-list"), children: (s, p) =>
|
|
104
|
+
/* @__PURE__ */ e(t.List, { className: o("dropdown-menu-list"), children: (s, p) => y(s, p) })
|
|
105
105
|
] });
|
|
106
|
-
return /* @__PURE__ */
|
|
107
|
-
/* @__PURE__ */ e(
|
|
108
|
-
|
|
109
|
-
{
|
|
110
|
-
className: o("dropdown-menu-search-wrapper"),
|
|
111
|
-
children: r
|
|
112
|
-
}
|
|
113
|
-
),
|
|
114
|
-
b,
|
|
106
|
+
return /* @__PURE__ */ m("div", { className: o("dropdown-menu-container"), children: [
|
|
107
|
+
/* @__PURE__ */ e("div", { className: o("dropdown-menu-search-wrapper"), children: r }),
|
|
108
|
+
P,
|
|
115
109
|
R,
|
|
116
|
-
|
|
110
|
+
S
|
|
117
111
|
] });
|
|
118
|
-
}, [
|
|
119
|
-
u,
|
|
120
|
-
o,
|
|
121
|
-
i,
|
|
122
|
-
x,
|
|
123
|
-
b,
|
|
124
|
-
w,
|
|
125
|
-
v,
|
|
126
|
-
I
|
|
127
|
-
]), _ = g(
|
|
112
|
+
}, [l, o, i, O, P, S, I, y]), k = f(
|
|
128
113
|
(r, R) => {
|
|
129
114
|
const { openOnHover: s, ...p } = r;
|
|
130
|
-
return
|
|
115
|
+
return le(D, p, R);
|
|
131
116
|
},
|
|
132
|
-
[
|
|
133
|
-
),
|
|
117
|
+
[D]
|
|
118
|
+
), G = g(
|
|
134
119
|
() => ({
|
|
135
|
-
ref:
|
|
136
|
-
openOnHover:
|
|
137
|
-
nativeButton:
|
|
138
|
-
className: h(
|
|
139
|
-
|
|
140
|
-
n?.trigger,
|
|
141
|
-
c
|
|
142
|
-
),
|
|
143
|
-
render: _
|
|
120
|
+
ref: _,
|
|
121
|
+
openOnHover: N,
|
|
122
|
+
nativeButton: V,
|
|
123
|
+
className: h(o("dropdown-menu-trigger"), n?.trigger, c),
|
|
124
|
+
render: k
|
|
144
125
|
}),
|
|
145
|
-
[
|
|
146
|
-
), G = g(
|
|
147
|
-
(r) => /* @__PURE__ */ e(U.Root, { ...r }),
|
|
148
|
-
[]
|
|
126
|
+
[_, N, V, o, n?.trigger, c, k]
|
|
149
127
|
), L = f(
|
|
128
|
+
(r) => /* @__PURE__ */ e(z.Root, { ...r }),
|
|
129
|
+
[]
|
|
130
|
+
), U = g(
|
|
150
131
|
() => ({
|
|
151
132
|
side: a.side,
|
|
152
133
|
align: a.align,
|
|
153
134
|
sideOffset: 4,
|
|
154
|
-
className: h(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
n?.root
|
|
158
|
-
),
|
|
159
|
-
collisionAvoidance: le,
|
|
160
|
-
render: G
|
|
135
|
+
className: h(o("dropdown-menu-root"), c, n?.root),
|
|
136
|
+
collisionAvoidance: ce,
|
|
137
|
+
render: L
|
|
161
138
|
}),
|
|
162
139
|
[
|
|
163
140
|
a.side,
|
|
@@ -165,60 +142,60 @@ const _e = ({
|
|
|
165
142
|
o,
|
|
166
143
|
c,
|
|
167
144
|
n?.root,
|
|
168
|
-
|
|
145
|
+
L
|
|
169
146
|
]
|
|
170
|
-
), k = g(
|
|
171
|
-
(r) => /* @__PURE__ */ e(U.Popup, { ...r }),
|
|
172
|
-
[]
|
|
173
147
|
), F = f(
|
|
148
|
+
(r) => /* @__PURE__ */ e(z.Popup, { ...r }),
|
|
149
|
+
[]
|
|
150
|
+
), H = g(
|
|
174
151
|
() => ({
|
|
175
|
-
"--size-width":
|
|
152
|
+
"--size-width": w in q ? q[w] : void 0
|
|
176
153
|
}),
|
|
177
|
-
[
|
|
178
|
-
),
|
|
154
|
+
[w]
|
|
155
|
+
), K = g(
|
|
179
156
|
() => ({
|
|
180
157
|
className: h(
|
|
181
158
|
o(
|
|
182
159
|
"dropdown-menu",
|
|
183
|
-
|
|
184
|
-
|
|
160
|
+
v && "dropdown-menu-show-checkbox",
|
|
161
|
+
T && "dropdown-menu-match-trigger-width"
|
|
185
162
|
),
|
|
186
|
-
|
|
163
|
+
E,
|
|
187
164
|
n?.popup
|
|
188
165
|
),
|
|
189
|
-
style:
|
|
190
|
-
render:
|
|
166
|
+
style: H,
|
|
167
|
+
render: F
|
|
191
168
|
}),
|
|
192
169
|
[
|
|
193
170
|
o,
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
171
|
+
v,
|
|
172
|
+
T,
|
|
173
|
+
E,
|
|
197
174
|
n?.popup,
|
|
198
|
-
|
|
199
|
-
|
|
175
|
+
H,
|
|
176
|
+
F
|
|
200
177
|
]
|
|
201
178
|
);
|
|
202
|
-
return
|
|
179
|
+
return l ? /* @__PURE__ */ m(
|
|
203
180
|
t.Root,
|
|
204
181
|
{
|
|
205
|
-
open:
|
|
206
|
-
onOpenChange:
|
|
207
|
-
items:
|
|
208
|
-
itemToStringLabel: (r) => r.type == "item" ?
|
|
182
|
+
open: A,
|
|
183
|
+
onOpenChange: x,
|
|
184
|
+
items: I,
|
|
185
|
+
itemToStringLabel: (r) => r.type == "item" ? he(r.label) : "",
|
|
209
186
|
itemToStringValue: (r) => r.type == "item" ? String(r.key) : "",
|
|
210
|
-
inputValue:
|
|
187
|
+
inputValue: O,
|
|
211
188
|
children: [
|
|
212
|
-
/* @__PURE__ */ e(t.Trigger, { ...
|
|
213
|
-
/* @__PURE__ */ e(t.Portal, { children: /* @__PURE__ */ e(t.Positioner, { ...
|
|
189
|
+
/* @__PURE__ */ e(t.Trigger, { ...G }),
|
|
190
|
+
/* @__PURE__ */ e(t.Portal, { children: /* @__PURE__ */ e(t.Positioner, { ...U, children: /* @__PURE__ */ e(t.Popup, { ...K, children: j() }) }) })
|
|
214
191
|
]
|
|
215
192
|
}
|
|
216
|
-
) : /* @__PURE__ */
|
|
217
|
-
/* @__PURE__ */ e(
|
|
218
|
-
/* @__PURE__ */ e(
|
|
193
|
+
) : /* @__PURE__ */ m(u.Root, { open: A, onOpenChange: x, children: [
|
|
194
|
+
/* @__PURE__ */ e(u.Trigger, { ...G }),
|
|
195
|
+
/* @__PURE__ */ e(u.Portal, { children: /* @__PURE__ */ e(u.Positioner, { ...U, children: /* @__PURE__ */ e(u.Popup, { ...K, children: j() }) }) })
|
|
219
196
|
] });
|
|
220
197
|
};
|
|
221
198
|
export {
|
|
222
|
-
|
|
199
|
+
Ge as DropdownMenu
|
|
223
200
|
};
|
|
224
201
|
//# sourceMappingURL=component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../src/components/dropdown-menu/component.tsx"],"sourcesContent":["\"use client\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport { Combobox, type ComboboxTriggerState } from \"@base-ui/react/combobox\";\nimport { type PopoverProps } from \"antd/es/popover\";\nimport { useCallback, useMemo, useRef, useState, RefCallback } from \"react\";\nimport {\n clsx,\n DROPDOWN_COLLISION_AVOIDANCE,\n parseAntdPlacement,\n reactNodeToString,\n useCls,\n createRenderProp,\n} from \"../utils\";\nimport { ScrollArea } from \"../scroll-area\";\nimport { FormItemInputContext } from \"antd/es/form/context\";\n\n// Import component-specific styles\nimport { PopupPanelSize } from \"../popup-panel/constants\";\n\nimport { DropdownMenuItemType } from \"./types\";\nimport { useDropdownMenu, UseDropdownMenuProps } from \"./useDropdownMenu\";\nimport { useControlledState } from \"../hooks\";\n\nimport { useTheme } from \"../theme-provider\";\nimport { BaseMenu } from \"../base-menu\";\n\nimport { Input } from \"../input\";\n\nexport interface DropdownMenuProps extends Omit<\n UseDropdownMenuProps,\n \"classNames\"\n> {\n /** Array of menu items to be displayed in the dropdown */\n items: DropdownMenuItemType[];\n /** Custom render function for the trigger element */\n children?: React.ComponentProps<typeof Menu.Trigger>[\"render\"];\n /**\n * Placement of the dropdown relative to the trigger element\n * @default \"bottomLeft\"\n */\n placement?: PopoverProps[\"placement\"];\n /**\n * Whether to open the dropdown on hover instead of click\n * @default false\n */\n openOnHover?: boolean;\n /**\n * Controlled open state of the dropdown\n */\n open?: boolean;\n /**\n * Callback fired when the dropdown open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Default open state of the dropdown\n */\n defaultOpen?: boolean;\n /**\n * Additional CSS class for the dropdown component\n */\n className?: string;\n /**\n * Custom class names for different parts of the dropdown\n * @default {}\n */\n classNames?: {\n root?: string;\n trigger?: string;\n popup?: string;\n itemIcon?: string;\n itemText?: string;\n positioner?: string;\n } & UseDropdownMenuProps[\"classNames\"];\n\n /**\n * Whether to show search input\n * @default false\n */\n showSearch?: boolean;\n /**\n * Size of the dropdown menu\n * @default \"auto\"\n */\n size?: \"auto\" | keyof typeof PopupPanelSize;\n /**\n * Search placeholder\n */\n searchProps?: {\n placeholder?: string;\n className?: string;\n };\n /**\n * Whether to match the width of the popup with the trigger\n * @default false\n */\n popupMatchTriggerWidth?: boolean;\n /**\n * Content to display before the list\n */\n beforeList?: React.ReactNode;\n /**\n * Content to display after the list\n */\n afterList?: React.ReactNode;\n /**\n * Whether the trigger should act as a native button element.\n * Set to false when using non-button elements (like Typography.Link) as trigger\n * to suppress Base UI warnings and remove native button semantics.\n * @default true\n */\n nativeButton?: boolean;\n}\n\nexport const DropdownMenu = ({\n children,\n items,\n placement,\n openOnHover,\n open: outsideOpen,\n onOpenChange: outsideOnOpenChange,\n defaultOpen = false,\n className,\n itemRender,\n classNames,\n size = \"auto\",\n showSearch,\n inCombobox: inComboboxProp,\n searchProps = {\n placeholder: \"Search...\",\n },\n popupMatchTriggerWidth,\n beforeList,\n afterList,\n keepOpenOnSelect,\n highlightedItemKey,\n selectedItemKeys,\n getItemKeywords,\n showCheckbox,\n itemLabelRender,\n nativeButton = true,\n}: DropdownMenuProps) => {\n const inCombobox =\n typeof inComboboxProp === \"boolean\" ? inComboboxProp : showSearch;\n const [open, onOpenChange] = useControlledState(\n outsideOpen,\n outsideOnOpenChange,\n defaultOpen,\n );\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const baseUIPlacement = parseAntdPlacement(placement);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const { itemGroups, renderGroup } = useDropdownMenu({\n items,\n keepOpenOnSelect,\n highlightedItemKey,\n selectedItemKeys,\n showCheckbox,\n getItemKeywords,\n itemLabelRender,\n itemRender,\n inCombobox,\n onOpenChange,\n classNames: {\n item: classNames?.item,\n itemIcon: classNames?.itemIcon,\n itemSuffix: classNames?.itemSuffix,\n group: classNames?.group,\n groupLabel: classNames?.groupLabel,\n divider: classNames?.divider,\n },\n });\n\n const [searchValue, setSearchValue] = useState(\"\");\n\n const renderMenuInner = useCallback(() => {\n if (!showSearch) {\n return (\n <div className={cls(\"dropdown-menu-container\")}>\n {beforeList}\n <ScrollArea fadeEdges>{itemGroups.map(renderGroup)}</ScrollArea>\n {afterList}\n </div>\n );\n }\n\n const searchInput = (\n <FormItemInputContext.Provider value={{}}>\n <Combobox.Input\n key=\"search\"\n placeholder={searchProps?.placeholder || \"Search\"}\n render={({ ref, ...props }) => (\n <Input\n {...props}\n ref={(antdInputRef) => {\n if (!antdInputRef || !antdInputRef.input) return;\n const comboboxRef = ref as RefCallback<HTMLInputElement>;\n comboboxRef(antdInputRef.input);\n }}\n allowClear\n placeholder={searchProps?.placeholder || \"Search\"}\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n className={clsx(\n cls(\"dropdown-menu-search\"),\n searchProps?.className,\n )}\n />\n )}\n {...searchProps}\n />\n </FormItemInputContext.Provider>\n );\n\n const listContent = (\n <ScrollArea fadeEdges>\n <Combobox.Empty className={cls(\"dropdown-menu-empty\")}>\n No results found.\n </Combobox.Empty>\n <Combobox.List className={cls(\"dropdown-menu-list\")}>\n {(group, i) => renderGroup(group, i)}\n </Combobox.List>\n </ScrollArea>\n );\n\n return (\n <div className={cls(\"dropdown-menu-container\")}>\n <div\n className={cls(\"dropdown-menu-search-wrapper\")}\n >\n {searchInput}\n </div>\n {beforeList}\n {listContent}\n {afterList}\n </div>\n );\n }, [\n showSearch,\n cls,\n searchProps,\n searchValue,\n beforeList,\n afterList,\n itemGroups,\n renderGroup,\n ]);\n\n // Stable trigger render — useCallback since it's called during render phase\n const triggerRender = useCallback(\n (\n props: React.HTMLProps<HTMLElement> & { openOnHover?: boolean },\n state: ComboboxTriggerState\n ) => {\n const { openOnHover: _openOnHover, ...rest } = props;\n return createRenderProp(children, rest, state);\n },\n [children]\n );\n\n const commonTriggerProps = useMemo(\n () => ({\n ref: buttonRef,\n openOnHover,\n nativeButton,\n className: clsx(\n cls(\"dropdown-menu-trigger\"),\n classNames?.trigger,\n themeClassName,\n ),\n render: triggerRender,\n }),\n [buttonRef, openOnHover, nativeButton, cls, classNames?.trigger, themeClassName, triggerRender]\n );\n\n // Stable positioner render — useCallback since it's called during render phase\n const positionerRender = useCallback(\n (props: React.ComponentPropsWithoutRef<\"div\">) => (\n <BaseMenu.Root {...props} />\n ),\n []\n );\n\n const commonPositionerProps = useMemo(\n () => ({\n side: baseUIPlacement.side,\n align: baseUIPlacement.align,\n sideOffset: 4,\n className: clsx(\n cls(\"dropdown-menu-root\"),\n themeClassName,\n classNames?.root,\n ),\n collisionAvoidance: DROPDOWN_COLLISION_AVOIDANCE,\n render: positionerRender,\n }),\n [\n baseUIPlacement.side,\n baseUIPlacement.align,\n cls,\n themeClassName,\n classNames?.root,\n positionerRender,\n ]\n );\n\n // Stable popup render — useCallback since it's called during render phase\n const popupRender = useCallback(\n (props: React.ComponentPropsWithoutRef<\"div\">) => (\n <BaseMenu.Popup {...props} />\n ),\n []\n );\n\n const popupStyle = useMemo(\n () =>\n ({\n \"--size-width\": size in PopupPanelSize ? PopupPanelSize[size] : undefined,\n }) as React.CSSProperties,\n [size]\n );\n\n const commonPopupProps = useMemo(\n () => ({\n className: clsx(\n cls(\n \"dropdown-menu\",\n showCheckbox && \"dropdown-menu-show-checkbox\",\n popupMatchTriggerWidth && \"dropdown-menu-match-trigger-width\",\n ),\n className,\n classNames?.popup,\n ),\n style: popupStyle,\n render: popupRender,\n }),\n [\n cls,\n showCheckbox,\n popupMatchTriggerWidth,\n className,\n classNames?.popup,\n popupStyle,\n popupRender,\n ]\n );\n\n return showSearch ? (\n <Combobox.Root<DropdownMenuItemType>\n open={open}\n onOpenChange={onOpenChange}\n items={itemGroups}\n itemToStringLabel={(item) =>\n item.type == \"item\" ? reactNodeToString(item.label) : \"\"\n }\n itemToStringValue={(item) =>\n item.type == \"item\" ? String(item.key) : \"\"\n }\n inputValue={searchValue}\n >\n <Combobox.Trigger {...commonTriggerProps} />\n <Combobox.Portal>\n <Combobox.Positioner {...commonPositionerProps}>\n <Combobox.Popup {...commonPopupProps}>\n {renderMenuInner()}\n </Combobox.Popup>\n </Combobox.Positioner>\n </Combobox.Portal>\n </Combobox.Root>\n ) : (\n <Menu.Root open={open} onOpenChange={onOpenChange}>\n <Menu.Trigger {...commonTriggerProps} />\n <Menu.Portal>\n <Menu.Positioner {...commonPositionerProps}>\n <Menu.Popup {...commonPopupProps}>{renderMenuInner()}</Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n );\n};\n"],"names":["DropdownMenu","children","items","placement","openOnHover","outsideOpen","outsideOnOpenChange","defaultOpen","className","itemRender","classNames","size","showSearch","inComboboxProp","searchProps","popupMatchTriggerWidth","beforeList","afterList","keepOpenOnSelect","highlightedItemKey","selectedItemKeys","getItemKeywords","showCheckbox","itemLabelRender","nativeButton","inCombobox","open","onOpenChange","useControlledState","cls","useCls","themeClassName","useTheme","baseUIPlacement","parseAntdPlacement","buttonRef","useRef","itemGroups","renderGroup","useDropdownMenu","searchValue","setSearchValue","useState","renderMenuInner","useCallback","jsxs","ScrollArea","searchInput","jsx","FormItemInputContext","Combobox","ref","props","Input","antdInputRef","e","clsx","listContent","group","i","triggerRender","state","_openOnHover","rest","createRenderProp","commonTriggerProps","useMemo","positionerRender","BaseMenu","commonPositionerProps","DROPDOWN_COLLISION_AVOIDANCE","popupRender","popupStyle","PopupPanelSize","commonPopupProps","item","reactNodeToString","Menu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/dropdown-menu/component.tsx"],"sourcesContent":["\"use client\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport { Combobox, type ComboboxTriggerState } from \"@base-ui/react/combobox\";\nimport { type PopoverProps } from \"antd/es/popover\";\nimport { useCallback, useEffect, useMemo, useRef, useState, RefCallback } from \"react\";\nimport {\n clsx,\n DROPDOWN_COLLISION_AVOIDANCE,\n parseAntdPlacement,\n reactNodeToString,\n useCls,\n createRenderProp,\n} from \"../utils\";\nimport { ScrollArea } from \"../scroll-area\";\nimport { FormItemInputContext } from \"antd/es/form/context\";\n\n// Import component-specific styles\nimport { PopupPanelSize } from \"../popup-panel/constants\";\n\nimport { DropdownMenuItemType } from \"./types\";\nimport { hasUnsupportedDropdownMenuSearchItems } from \"./search-mode\";\nimport { useDropdownMenu, UseDropdownMenuProps } from \"./useDropdownMenu\";\nimport { useControlledState } from \"../hooks\";\n\nimport { useTheme } from \"../theme-provider\";\nimport { BaseMenu } from \"../base-menu\";\n\nimport { Input } from \"../input\";\n\nexport interface DropdownMenuProps extends Omit<UseDropdownMenuProps, \"classNames\"> {\n /** Array of menu items to be displayed in the dropdown */\n items: DropdownMenuItemType[];\n /** Custom render function for the trigger element */\n children?: React.ComponentProps<typeof Menu.Trigger>[\"render\"];\n /**\n * Placement of the dropdown relative to the trigger element\n * @default \"bottomLeft\"\n */\n placement?: PopoverProps[\"placement\"];\n /**\n * Whether to open the dropdown on hover instead of click\n * @default false\n */\n openOnHover?: boolean;\n /**\n * Controlled open state of the dropdown\n */\n open?: boolean;\n /**\n * Callback fired when the dropdown open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Default open state of the dropdown\n */\n defaultOpen?: boolean;\n /**\n * Additional CSS class for the dropdown component\n */\n className?: string;\n /**\n * Custom class names for different parts of the dropdown\n * @default {}\n */\n classNames?: {\n root?: string;\n trigger?: string;\n popup?: string;\n itemIcon?: string;\n itemText?: string;\n positioner?: string;\n } & UseDropdownMenuProps[\"classNames\"];\n\n /**\n * Whether to show search input\n * @default false\n */\n showSearch?: boolean;\n /**\n * Size of the dropdown menu\n * @default \"auto\"\n */\n size?: \"auto\" | keyof typeof PopupPanelSize;\n /**\n * Search placeholder\n */\n searchProps?: {\n placeholder?: string;\n className?: string;\n };\n /**\n * Whether to match the width of the popup with the trigger\n * @default false\n */\n popupMatchTriggerWidth?: boolean;\n /**\n * Content to display before the list\n */\n beforeList?: React.ReactNode;\n /**\n * Content to display after the list\n */\n afterList?: React.ReactNode;\n /**\n * Whether the trigger should act as a native button element.\n * Set to false when using non-button elements (like Typography.Link) as trigger\n * to suppress Base UI warnings and remove native button semantics.\n * @default true\n */\n nativeButton?: boolean;\n}\n\nexport const DropdownMenu = ({\n children,\n items,\n placement,\n openOnHover,\n open: outsideOpen,\n onOpenChange: outsideOnOpenChange,\n defaultOpen = false,\n className,\n itemRender,\n classNames,\n size = \"auto\",\n showSearch,\n inCombobox: inComboboxProp,\n searchProps = {\n placeholder: \"Search...\",\n },\n popupMatchTriggerWidth,\n beforeList,\n afterList,\n keepOpenOnSelect,\n highlightedItemKey,\n selectedItemKeys,\n getItemKeywords,\n showCheckbox,\n itemLabelRender,\n nativeButton = true,\n}: DropdownMenuProps) => {\n const inCombobox = typeof inComboboxProp === \"boolean\" ? inComboboxProp : showSearch;\n const [open, onOpenChange] = useControlledState(outsideOpen, outsideOnOpenChange, defaultOpen);\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const baseUIPlacement = parseAntdPlacement(placement);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const { itemGroups, renderGroup } = useDropdownMenu({\n items,\n keepOpenOnSelect,\n highlightedItemKey,\n selectedItemKeys,\n showCheckbox,\n getItemKeywords,\n itemLabelRender,\n itemRender,\n inCombobox,\n onOpenChange,\n classNames: {\n item: classNames?.item,\n itemIcon: classNames?.itemIcon,\n itemSuffix: classNames?.itemSuffix,\n group: classNames?.group,\n groupLabel: classNames?.groupLabel,\n divider: classNames?.divider,\n },\n });\n\n const [searchValue, setSearchValue] = useState(\"\");\n\n useEffect(() => {\n if (!inCombobox || process.env.NODE_ENV === \"production\") return;\n\n if (hasUnsupportedDropdownMenuSearchItems(items)) {\n console.warn(\n \"DropdownMenu search/combobox mode only supports flat `item`, `header`, and `divider` entries. Checkbox, radio-group, and submenu items are ignored.\",\n );\n }\n }, [inCombobox, items]);\n\n const renderMenuInner = useCallback(() => {\n if (!showSearch) {\n return (\n <div className={cls(\"dropdown-menu-container\")}>\n {beforeList}\n <ScrollArea fadeEdges>{itemGroups.map(renderGroup)}</ScrollArea>\n {afterList}\n </div>\n );\n }\n\n const searchInput = (\n <FormItemInputContext.Provider value={{}}>\n <Combobox.Input\n key=\"search\"\n placeholder={searchProps?.placeholder || \"Search\"}\n render={({ ref, ...props }) => (\n <Input\n {...props}\n ref={(antdInputRef) => {\n if (!antdInputRef || !antdInputRef.input) return;\n const comboboxRef = ref as RefCallback<HTMLInputElement>;\n comboboxRef(antdInputRef.input);\n }}\n allowClear\n placeholder={searchProps?.placeholder || \"Search\"}\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n className={clsx(cls(\"dropdown-menu-search\"), searchProps?.className)}\n />\n )}\n {...searchProps}\n />\n </FormItemInputContext.Provider>\n );\n\n const listContent = (\n <ScrollArea fadeEdges>\n <Combobox.Empty className={cls(\"dropdown-menu-empty\")}>No results found.</Combobox.Empty>\n <Combobox.List className={cls(\"dropdown-menu-list\")}>\n {(group, i) => renderGroup(group, i)}\n </Combobox.List>\n </ScrollArea>\n );\n\n return (\n <div className={cls(\"dropdown-menu-container\")}>\n <div className={cls(\"dropdown-menu-search-wrapper\")}>{searchInput}</div>\n {beforeList}\n {listContent}\n {afterList}\n </div>\n );\n }, [showSearch, cls, searchProps, searchValue, beforeList, afterList, itemGroups, renderGroup]);\n\n // Stable trigger render — useCallback since it's called during render phase\n const triggerRender = useCallback(\n (\n props: React.HTMLProps<HTMLElement> & { openOnHover?: boolean },\n state: ComboboxTriggerState,\n ) => {\n const { openOnHover: _openOnHover, ...rest } = props;\n return createRenderProp(children, rest, state);\n },\n [children],\n );\n\n const commonTriggerProps = useMemo(\n () => ({\n ref: buttonRef,\n openOnHover,\n nativeButton,\n className: clsx(cls(\"dropdown-menu-trigger\"), classNames?.trigger, themeClassName),\n render: triggerRender,\n }),\n [buttonRef, openOnHover, nativeButton, cls, classNames?.trigger, themeClassName, triggerRender],\n );\n\n // Stable positioner render — useCallback since it's called during render phase\n const positionerRender = useCallback(\n (props: React.ComponentPropsWithoutRef<\"div\">) => <BaseMenu.Root {...props} />,\n [],\n );\n\n const commonPositionerProps = useMemo(\n () => ({\n side: baseUIPlacement.side,\n align: baseUIPlacement.align,\n sideOffset: 4,\n className: clsx(cls(\"dropdown-menu-root\"), themeClassName, classNames?.root),\n collisionAvoidance: DROPDOWN_COLLISION_AVOIDANCE,\n render: positionerRender,\n }),\n [\n baseUIPlacement.side,\n baseUIPlacement.align,\n cls,\n themeClassName,\n classNames?.root,\n positionerRender,\n ],\n );\n\n // Stable popup render — useCallback since it's called during render phase\n const popupRender = useCallback(\n (props: React.ComponentPropsWithoutRef<\"div\">) => <BaseMenu.Popup {...props} />,\n [],\n );\n\n const popupStyle = useMemo(\n () =>\n ({\n \"--size-width\": size in PopupPanelSize ? PopupPanelSize[size] : undefined,\n }) as React.CSSProperties,\n [size],\n );\n\n const commonPopupProps = useMemo(\n () => ({\n className: clsx(\n cls(\n \"dropdown-menu\",\n showCheckbox && \"dropdown-menu-show-checkbox\",\n popupMatchTriggerWidth && \"dropdown-menu-match-trigger-width\",\n ),\n className,\n classNames?.popup,\n ),\n style: popupStyle,\n render: popupRender,\n }),\n [\n cls,\n showCheckbox,\n popupMatchTriggerWidth,\n className,\n classNames?.popup,\n popupStyle,\n popupRender,\n ],\n );\n\n return showSearch ? (\n <Combobox.Root<DropdownMenuItemType>\n open={open}\n onOpenChange={onOpenChange}\n items={itemGroups}\n itemToStringLabel={(item) => (item.type == \"item\" ? reactNodeToString(item.label) : \"\")}\n itemToStringValue={(item) => (item.type == \"item\" ? String(item.key) : \"\")}\n inputValue={searchValue}\n >\n <Combobox.Trigger {...commonTriggerProps} />\n <Combobox.Portal>\n <Combobox.Positioner {...commonPositionerProps}>\n <Combobox.Popup {...commonPopupProps}>{renderMenuInner()}</Combobox.Popup>\n </Combobox.Positioner>\n </Combobox.Portal>\n </Combobox.Root>\n ) : (\n <Menu.Root open={open} onOpenChange={onOpenChange}>\n <Menu.Trigger {...commonTriggerProps} />\n <Menu.Portal>\n <Menu.Positioner {...commonPositionerProps}>\n <Menu.Popup {...commonPopupProps}>{renderMenuInner()}</Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n );\n};\n"],"names":["DropdownMenu","children","items","placement","openOnHover","outsideOpen","outsideOnOpenChange","defaultOpen","className","itemRender","classNames","size","showSearch","inComboboxProp","searchProps","popupMatchTriggerWidth","beforeList","afterList","keepOpenOnSelect","highlightedItemKey","selectedItemKeys","getItemKeywords","showCheckbox","itemLabelRender","nativeButton","inCombobox","open","onOpenChange","useControlledState","cls","useCls","themeClassName","useTheme","baseUIPlacement","parseAntdPlacement","buttonRef","useRef","itemGroups","renderGroup","useDropdownMenu","searchValue","setSearchValue","useState","useEffect","hasUnsupportedDropdownMenuSearchItems","renderMenuInner","useCallback","jsxs","ScrollArea","searchInput","jsx","FormItemInputContext","Combobox","ref","props","Input","antdInputRef","e","clsx","listContent","group","i","triggerRender","state","_openOnHover","rest","createRenderProp","commonTriggerProps","useMemo","positionerRender","BaseMenu","commonPositionerProps","DROPDOWN_COLLISION_AVOIDANCE","popupRender","popupStyle","PopupPanelSize","commonPopupProps","item","reactNodeToString","Menu"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|