@bigbinary/neeto-atoms 1.0.15 → 1.0.17
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/{Calendar-pDD7nRF-.js → Calendar-DDPQHHat.js} +2 -2
- package/dist/{Calendar-pDD7nRF-.js.map → Calendar-DDPQHHat.js.map} +1 -1
- package/dist/{DatePicker-COxwHPIZ.js → DatePicker-BNvWbsL-.js} +2 -2
- package/dist/{DatePicker-COxwHPIZ.js.map → DatePicker-BNvWbsL-.js.map} +1 -1
- package/dist/{Dialog-BURSzxaP.js → Dialog-B2dcw0Zz.js} +2 -2
- package/dist/Dialog-B2dcw0Zz.js.map +1 -0
- package/dist/{Sheet-QFC_mHyj.js → Sheet-Euk-9qwX.js} +2 -2
- package/dist/Sheet-Euk-9qwX.js.map +1 -0
- package/dist/{TreeSelect-DRGcYz-6.js → TreeSelect-BxsQrdjf.js} +2 -2
- package/dist/{TreeSelect-DRGcYz-6.js.map → TreeSelect-BxsQrdjf.js.map} +1 -1
- package/dist/{button-COIbN8dg.js → button-B-i8E7ah.js} +8 -1
- package/dist/{button-COIbN8dg.js.map → button-B-i8E7ah.js.map} +1 -1
- package/dist/cjs/{Calendar-Nk76Y9yP.js → Calendar-BS-238p2.js} +2 -2
- package/dist/cjs/{Calendar-Nk76Y9yP.js.map → Calendar-BS-238p2.js.map} +1 -1
- package/dist/cjs/{DatePicker-DpijPndg.js → DatePicker-CHulgN0u.js} +2 -2
- package/dist/cjs/{DatePicker-DpijPndg.js.map → DatePicker-CHulgN0u.js.map} +1 -1
- package/dist/cjs/{Dialog-CtI_yWsJ.js → Dialog-dYYmRaZU.js} +2 -2
- package/dist/cjs/Dialog-dYYmRaZU.js.map +1 -0
- package/dist/cjs/{Sheet-CIhtNCBV.js → Sheet-DLiIp0UN.js} +2 -2
- package/dist/cjs/Sheet-DLiIp0UN.js.map +1 -0
- package/dist/cjs/{TreeSelect-C9nQJKNo.js → TreeSelect-BoffO6qD.js} +2 -2
- package/dist/cjs/{TreeSelect-C9nQJKNo.js.map → TreeSelect-BoffO6qD.js.map} +1 -1
- package/dist/cjs/{button-B8XGl69v.js → button-qIa_cyuE.js} +8 -1
- package/dist/cjs/{button-B8XGl69v.js.map → button-qIa_cyuE.js.map} +1 -1
- package/dist/cjs/components/Alert.js +2 -2
- package/dist/cjs/components/Button.js +1 -1
- package/dist/cjs/components/ColorPicker.js +1 -1
- package/dist/cjs/components/DataTable.js +1 -1
- package/dist/cjs/components/DatePicker.js +3 -3
- package/dist/cjs/components/Dialog.js +3 -3
- package/dist/cjs/components/DropdownMenu.js +1 -1
- package/dist/cjs/components/Empty.js +1 -1
- package/dist/cjs/components/Input.js +2 -2
- package/dist/cjs/components/Label.js +1 -1
- package/dist/cjs/components/Pagination.js +1 -1
- package/dist/cjs/components/Select.js +2 -2
- package/dist/cjs/components/Sheet.js +3 -3
- package/dist/cjs/components/TimePicker.js +1 -1
- package/dist/cjs/components/TreeSelect.js +1 -1
- package/dist/cjs/components/index.js +9 -9
- package/dist/cjs/{dialog-Bvyrshz3.js → dialog-_vQkEf7V.js} +2 -2
- package/dist/cjs/{dialog-Bvyrshz3.js.map → dialog-_vQkEf7V.js.map} +1 -1
- package/dist/cjs/formik/ActionBlock.js +1 -1
- package/dist/cjs/formik/BlockNavigation.js +3 -3
- package/dist/cjs/formik/Button.js +1 -1
- package/dist/cjs/formik/Input.js +2 -2
- package/dist/cjs/formik/Select.js +2 -2
- package/dist/cjs/formik/TreeSelect.js +1 -1
- package/dist/cjs/formik/index.js +5 -5
- package/dist/cjs/index.js +9 -9
- package/dist/cjs/{input-group-DoK0-4fL.js → input-group-D5SIEAeN.js} +2 -2
- package/dist/cjs/{input-group-DoK0-4fL.js.map → input-group-D5SIEAeN.js.map} +1 -1
- package/dist/cjs/primitives/Accordion.js +1 -1
- package/dist/cjs/primitives/Accordion.js.map +1 -1
- package/dist/cjs/primitives/AlertDialog.js +2 -2
- package/dist/cjs/primitives/AlertDialog.js.map +1 -1
- package/dist/cjs/primitives/Button.js +1 -1
- package/dist/cjs/primitives/Calendar.js +2 -2
- package/dist/cjs/primitives/Card.js +1 -1
- package/dist/cjs/primitives/Card.js.map +1 -1
- package/dist/cjs/primitives/Carousel.js +1 -1
- package/dist/cjs/primitives/Combobox.js +3 -3
- package/dist/cjs/primitives/Combobox.js.map +1 -1
- package/dist/cjs/primitives/Command.js +3 -3
- package/dist/cjs/primitives/Dialog.js +2 -2
- package/dist/cjs/primitives/Drawer.js +2 -2
- package/dist/cjs/primitives/Drawer.js.map +1 -1
- package/dist/cjs/primitives/InputGroup.js +2 -2
- package/dist/cjs/primitives/Pagination.js +1 -1
- package/dist/cjs/primitives/Sheet.js +3 -3
- package/dist/cjs/primitives/Sheet.js.map +1 -1
- package/dist/cjs/primitives/Sidebar.js +4 -4
- package/dist/cjs/primitives/Sidebar.js.map +1 -1
- package/dist/cjs/primitives/Table.js +3 -3
- package/dist/cjs/primitives/Table.js.map +1 -1
- package/dist/cjs/primitives/index.js +5 -5
- package/dist/cjs/{sheet-BZHMKVH1.js → sheet-B4hSZKZT.js} +2 -2
- package/dist/cjs/{sheet-BZHMKVH1.js.map → sheet-B4hSZKZT.js.map} +1 -1
- package/dist/components/Alert.js +2 -2
- package/dist/components/Button.js +1 -1
- package/dist/components/ColorPicker.js +1 -1
- package/dist/components/DataTable.js +1 -1
- package/dist/components/DatePicker.js +3 -3
- package/dist/components/Dialog.js +3 -3
- package/dist/components/DropdownMenu.js +1 -1
- package/dist/components/Empty.js +1 -1
- package/dist/components/Input.js +2 -2
- package/dist/components/Label.js +1 -1
- package/dist/components/Pagination.js +1 -1
- package/dist/components/Select.js +2 -2
- package/dist/components/Sheet.js +3 -3
- package/dist/components/TimePicker.js +1 -1
- package/dist/components/TreeSelect.js +1 -1
- package/dist/components/index.js +9 -9
- package/dist/{dialog-CrB6N_2a.js → dialog-C1w8dWE1.js} +2 -2
- package/dist/{dialog-CrB6N_2a.js.map → dialog-C1w8dWE1.js.map} +1 -1
- package/dist/formik/ActionBlock.js +1 -1
- package/dist/formik/BlockNavigation.js +3 -3
- package/dist/formik/Button.js +1 -1
- package/dist/formik/Input.js +2 -2
- package/dist/formik/Select.js +2 -2
- package/dist/formik/TreeSelect.js +1 -1
- package/dist/formik/index.js +5 -5
- package/dist/index.js +9 -9
- package/dist/{input-group-ytECR3Hw.js → input-group-Dve5dexp.js} +2 -2
- package/dist/{input-group-ytECR3Hw.js.map → input-group-Dve5dexp.js.map} +1 -1
- package/dist/primitives/Accordion.d.ts +1 -1
- package/dist/primitives/Accordion.js +1 -1
- package/dist/primitives/Accordion.js.map +1 -1
- package/dist/primitives/AlertDialog.d.ts +1 -1
- package/dist/primitives/AlertDialog.js +2 -2
- package/dist/primitives/AlertDialog.js.map +1 -1
- package/dist/primitives/Button.js +2 -2
- package/dist/primitives/Calendar.js +2 -2
- package/dist/primitives/Card.d.ts +1 -1
- package/dist/primitives/Card.js +1 -1
- package/dist/primitives/Card.js.map +1 -1
- package/dist/primitives/Carousel.js +1 -1
- package/dist/primitives/Combobox.js +3 -3
- package/dist/primitives/Combobox.js.map +1 -1
- package/dist/primitives/Command.js +3 -3
- package/dist/primitives/Dialog.js +2 -2
- package/dist/primitives/Drawer.d.ts +1 -1
- package/dist/primitives/Drawer.js +2 -2
- package/dist/primitives/Drawer.js.map +1 -1
- package/dist/primitives/InputGroup.js +2 -2
- package/dist/primitives/Pagination.js +1 -1
- package/dist/primitives/Sheet.js +3 -3
- package/dist/primitives/Sheet.js.map +1 -1
- package/dist/primitives/Sidebar.d.ts +1 -1
- package/dist/primitives/Sidebar.js +4 -4
- package/dist/primitives/Sidebar.js.map +1 -1
- package/dist/primitives/Table.d.ts +3 -3
- package/dist/primitives/Table.js +3 -3
- package/dist/primitives/Table.js.map +1 -1
- package/dist/primitives/index.js +5 -5
- package/dist/{sheet-C763FqIh.js → sheet-CViv_QTx.js} +2 -2
- package/dist/{sheet-C763FqIh.js.map → sheet-CViv_QTx.js.map} +1 -1
- package/package.json +2 -1
- package/dist/Dialog-BURSzxaP.js.map +0 -1
- package/dist/Sheet-QFC_mHyj.js.map +0 -1
- package/dist/cjs/Dialog-CtI_yWsJ.js.map +0 -1
- package/dist/cjs/Sheet-CIhtNCBV.js.map +0 -1
|
@@ -14,7 +14,7 @@ const DialogHeader = forwardRef(({ children, className, description, dataTestid,
|
|
|
14
14
|
DialogHeader.displayName = "Dialog.Header";
|
|
15
15
|
const DialogBody = forwardRef(({ children, className, dataTestid, ...otherProps }, ref) => (jsx("div", { ref: ref, "data-slot": "dialog-body", "data-testid": dataTestid ?? "dialog-body", className: cn("text-sm text-foreground", className), ...otherProps, children: children })));
|
|
16
16
|
DialogBody.displayName = "Dialog.Body";
|
|
17
|
-
const DialogFooter = forwardRef(({ children, className, dataTestid, ...otherProps }, ref) => (jsx(DialogFooter$1, { ref: ref, className: cn(className), "data-testid": dataTestid ?? "dialog-footer", ...otherProps, children: children })));
|
|
17
|
+
const DialogFooter = forwardRef(({ children, className, dataTestid, ...otherProps }, ref) => (jsx(DialogFooter$1, { ref: ref, className: cn("border-border", className), "data-testid": dataTestid ?? "dialog-footer", ...otherProps, children: children })));
|
|
18
18
|
DialogFooter.displayName = "Dialog.Footer";
|
|
19
19
|
const DialogTitle = forwardRef(({ children, className, ...otherProps }, ref) => (jsx(DialogTitle$1, { ref: ref, className: cn("text-2xl font-semibold", className), ...otherProps, children: children })));
|
|
20
20
|
DialogTitle.displayName = "Dialog.Title";
|
|
@@ -58,4 +58,4 @@ Dialog.Footer = DialogFooter;
|
|
|
58
58
|
Dialog.Title = DialogTitle;
|
|
59
59
|
|
|
60
60
|
export { Dialog as D };
|
|
61
|
-
//# sourceMappingURL=Dialog-
|
|
61
|
+
//# sourceMappingURL=Dialog-B2dcw0Zz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialog-B2dcw0Zz.js","sources":["../src/components/Dialog/constants.ts","../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import type { DialogSize } from \"./Dialog\";\n\nexport const SIZE_CLASS_MAP: Record<DialogSize, string> = {\n small: \"sm:max-w-sm\",\n medium: \"sm:max-w-md\",\n large: \"sm:max-w-lg\",\n fullScreen: \"h-screen w-screen max-w-none rounded-none sm:max-w-none\",\n};\n","import React, { forwardRef, type ReactNode, type RefObject } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Dialog as PrimitiveDialog,\n DialogContent as PrimitiveDialogContent,\n DialogDescription,\n DialogFooter as PrimitiveDialogFooter,\n DialogHeader as PrimitiveDialogHeader,\n DialogTitle as PrimitiveDialogTitle,\n} from \"src/primitives/Dialog\";\n\nimport { SIZE_CLASS_MAP } from \"./constants\";\n\nexport type DialogSize = \"small\" | \"medium\" | \"large\" | \"fullScreen\";\n\n/** Radix Dialog.Content props we forward via ...otherProps. */\ntype DialogContentProps = React.ComponentProps<typeof PrimitiveDialogContent>;\n\nexport interface DialogProps extends Omit<\n DialogContentProps,\n | \"children\"\n | \"className\"\n | \"showCloseButton\"\n | \"onEscapeKeyDown\"\n | \"onInteractOutside\"\n> {\n /** Size of the dialog. */\n size?: DialogSize;\n /** Whether the dialog is open. */\n isOpen?: boolean;\n /** Callback invoked when the dialog is closed. */\n onClose?: () => void;\n /** Content rendered inside the dialog. */\n children?: ReactNode;\n /** Additional CSS class names applied to the dialog content. */\n className?: string;\n /** Close on pressing the Esc key. */\n closeOnEsc?: boolean;\n /** Show the close button. */\n closeButton?: boolean;\n /** Additional CSS class names applied to the backdrop/overlay. */\n backdropClassName?: string;\n /** Close on clicking outside the dialog. */\n closeOnOutsideClick?: boolean;\n /** Ref of the element to receive focus when the dialog opens. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Ref of the element to receive focus when the dialog closes. */\n finalFocusRef?: RefObject<HTMLElement | null>;\n /** Whether to block body scroll when the dialog is mounted. Maps to Radix `modal` prop. */\n blockScrollOnMount?: boolean;\n /** Force children to re-render even when the dialog is closed. */\n forceRender?: boolean;\n /** Radix Dialog `modal` prop — takes precedence over blockScrollOnMount. */\n modal?: boolean;\n /** Radix Dialog `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\ninterface DialogSubcomponentProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n /** Custom data-testid attribute. */\n dataTestid?: string;\n}\n\nconst DialogHeader = forwardRef<\n HTMLDivElement,\n DialogSubcomponentProps & { description?: string }\n>(({ children, className, description, dataTestid, ...otherProps }, ref) => (\n <PrimitiveDialogHeader\n ref={ref}\n className={cn(className)}\n data-testid={dataTestid ?? \"dialog-header\"}\n {...otherProps}\n >\n {children}\n {description && <DialogDescription>{description}</DialogDescription>}\n </PrimitiveDialogHeader>\n));\nDialogHeader.displayName = \"Dialog.Header\";\n\nconst DialogBody = forwardRef<HTMLDivElement, DialogSubcomponentProps>(\n ({ children, className, dataTestid, ...otherProps }, ref) => (\n <div\n ref={ref}\n data-slot=\"dialog-body\"\n data-testid={dataTestid ?? \"dialog-body\"}\n className={cn(\"text-sm text-foreground\", className)}\n {...otherProps}\n >\n {children}\n </div>\n )\n);\nDialogBody.displayName = \"Dialog.Body\";\n\nconst DialogFooter = forwardRef<HTMLDivElement, DialogSubcomponentProps>(\n ({ children, className, dataTestid, ...otherProps }, ref) => (\n <PrimitiveDialogFooter\n ref={ref}\n className={cn(\"border-border\", className)}\n data-testid={dataTestid ?? \"dialog-footer\"}\n {...otherProps}\n >\n {children}\n </PrimitiveDialogFooter>\n )\n);\nDialogFooter.displayName = \"Dialog.Footer\";\n\nconst DialogTitle = forwardRef<\n HTMLHeadingElement,\n React.ComponentProps<typeof PrimitiveDialogTitle>\n>(({ children, className, ...otherProps }, ref) => (\n <PrimitiveDialogTitle\n ref={ref}\n className={cn(\"text-2xl font-semibold\", className)}\n {...otherProps}\n >\n {children}\n </PrimitiveDialogTitle>\n));\nDialogTitle.displayName = \"Dialog.Title\";\n\nconst Dialog = forwardRef<HTMLDivElement, DialogProps>(\n (\n {\n size = \"medium\",\n isOpen = false,\n onClose = () => {},\n children,\n className,\n closeOnEsc = true,\n closeButton = true,\n backdropClassName,\n closeOnOutsideClick = true,\n initialFocusRef,\n finalFocusRef,\n blockScrollOnMount = true,\n forceRender = false,\n modal: modalProp,\n defaultOpen,\n // Radix content handlers — intercept and merge\n onOpenAutoFocus: onOpenAutoFocusProp,\n onCloseAutoFocus: onCloseAutoFocusProp,\n ...otherContentProps\n },\n ref\n ) => {\n const handleOpenChange = (open: boolean) => {\n if (!open) onClose();\n };\n\n const handleInteractOutside = (e: Event) => {\n if (!closeOnOutsideClick) e.preventDefault();\n };\n\n const handleEscapeKeyDown = (e: KeyboardEvent) => {\n if (!closeOnEsc) e.preventDefault();\n };\n\n const handleOpenAutoFocus = (e: Event) => {\n if (initialFocusRef?.current) {\n e.preventDefault();\n initialFocusRef.current.focus();\n }\n onOpenAutoFocusProp?.(e);\n };\n\n const handleCloseAutoFocus = (e: Event) => {\n if (finalFocusRef?.current) {\n e.preventDefault();\n finalFocusRef.current.focus();\n }\n onCloseAutoFocusProp?.(e);\n };\n\n // `modal` prop takes precedence; fall back to blockScrollOnMount\n const resolvedModal = modalProp ?? blockScrollOnMount;\n\n return (\n <PrimitiveDialog\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={resolvedModal}\n defaultOpen={defaultOpen}\n >\n <PrimitiveDialogContent\n ref={ref}\n aria-modal\n showCloseButton={closeButton}\n forceMount={forceRender || undefined}\n overlayClassName={backdropClassName}\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleOpenAutoFocus}\n onCloseAutoFocus={handleCloseAutoFocus}\n className={cn(SIZE_CLASS_MAP[size], className)}\n data-testid=\"dialog-wrapper\"\n {...otherContentProps}\n >\n {children}\n </PrimitiveDialogContent>\n </PrimitiveDialog>\n );\n }\n) as React.ForwardRefExoticComponent<\n DialogProps & React.RefAttributes<HTMLDivElement>\n> & {\n Header: typeof DialogHeader;\n Body: typeof DialogBody;\n Footer: typeof DialogFooter;\n Title: typeof DialogTitle;\n};\n\nDialog.displayName = \"Dialog\";\nDialog.Header = DialogHeader;\nDialog.Body = DialogBody;\nDialog.Footer = DialogFooter;\nDialog.Title = DialogTitle;\n\nexport { Dialog };\n"],"names":["_jsxs","PrimitiveDialogHeader","_jsx","PrimitiveDialogFooter","PrimitiveDialogTitle","PrimitiveDialog","PrimitiveDialogContent"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ const SheetHeader = forwardRef(({ children, className, ...otherProps }, ref) =>
|
|
|
15
15
|
SheetHeader.displayName = "Sheet.Header";
|
|
16
16
|
const SheetBody = forwardRef(({ children, className, hasFooter = true, ...otherProps }, ref) => (jsx("div", { ref: ref, "data-slot": "sheet-body", "data-testid": "sheet-body", className: cn("flex flex-1 flex-col items-start justify-start overflow-y-auto px-4", hasFooter && "pb-0", className), ...otherProps, children: children })));
|
|
17
17
|
SheetBody.displayName = "Sheet.Body";
|
|
18
|
-
const SheetFooter = forwardRef(({ children, className, ...otherProps }, ref) => (jsx(SheetFooter$1, { ref: ref, className: cn("flex flex-row items-center justify-start gap-2 border-t", className), "data-testid": "sheet-footer", ...otherProps, children: children })));
|
|
18
|
+
const SheetFooter = forwardRef(({ children, className, ...otherProps }, ref) => (jsx(SheetFooter$1, { ref: ref, className: cn("flex flex-row items-center justify-start gap-2 border-t border-border", className), "data-testid": "sheet-footer", ...otherProps, children: children })));
|
|
19
19
|
SheetFooter.displayName = "Sheet.Footer";
|
|
20
20
|
const SheetTitle = forwardRef(({ children, className, ...otherProps }, ref) => (jsx(SheetTitle$1, { ref: ref, className: cn("text-2xl font-semibold", className), ...otherProps, children: children })));
|
|
21
21
|
SheetTitle.displayName = "Sheet.Title";
|
|
@@ -60,4 +60,4 @@ Sheet.Title = SheetTitle;
|
|
|
60
60
|
Sheet.Description = SheetDescription;
|
|
61
61
|
|
|
62
62
|
export { Sheet as S };
|
|
63
|
-
//# sourceMappingURL=Sheet-
|
|
63
|
+
//# sourceMappingURL=Sheet-Euk-9qwX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sheet-Euk-9qwX.js","sources":["../src/components/Sheet/constants.ts","../src/components/Sheet/Sheet.tsx"],"sourcesContent":["type SheetSize = \"small\" | \"large\" | \"extraLarge\";\n\n// Uses data-[side] selector to match primitive specificity so tailwind-merge\n// can override the default sm:max-w-sm from the primitive.\nexport const SIZE_CLASS_MAP: Record<SheetSize, string> = {\n small: \"data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\",\n large: \"data-[side=left]:sm:max-w-lg data-[side=right]:sm:max-w-lg\",\n extraLarge: \"data-[side=left]:sm:max-w-2xl data-[side=right]:sm:max-w-2xl\",\n};\n","import React, { forwardRef, type ReactNode, type RefObject } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Sheet as PrimitiveSheet,\n SheetContent as PrimitiveSheetContent,\n SheetDescription as PrimitiveSheetDescription,\n SheetFooter as PrimitiveSheetFooter,\n SheetHeader as PrimitiveSheetHeader,\n SheetTitle as PrimitiveSheetTitle,\n} from \"src/primitives/Sheet\";\n\ntype SheetSize = \"small\" | \"large\" | \"extraLarge\";\n\n/** Radix Sheet.Content props we forward via ...otherProps. */\ntype SheetContentProps = React.ComponentProps<typeof PrimitiveSheetContent>;\n\nexport interface SheetProps extends Omit<\n SheetContentProps,\n | \"children\"\n | \"className\"\n | \"side\"\n | \"showCloseButton\"\n | \"onEscapeKeyDown\"\n | \"onInteractOutside\"\n> {\n /** Size of the sheet. */\n size?: SheetSize;\n /** Whether the sheet is open. */\n isOpen?: boolean;\n /** Callback invoked when the sheet is closed. */\n onClose?: () => void;\n /** Content rendered inside the sheet. */\n children?: ReactNode;\n /** Additional CSS class names applied to the sheet content. */\n className?: string;\n /** Close on pressing the Esc key. */\n closeOnEsc?: boolean;\n /** Show the close button. */\n closeButton?: boolean;\n /** Additional CSS class names applied to the backdrop/overlay. */\n backdropClassName?: string;\n /** Close on clicking outside the sheet. */\n closeOnOutsideClick?: boolean;\n /** Ref of the element to receive focus when the sheet opens. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Ref of the element to receive focus when the sheet closes. */\n finalFocusRef?: RefObject<HTMLElement | null>;\n /** Which side the sheet slides in from. */\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n /** Radix Dialog `modal` prop — controls modal vs non-modal behaviour. */\n modal?: boolean;\n /** Radix Dialog `defaultOpen` prop. */\n defaultOpen?: boolean;\n}\n\nimport { SIZE_CLASS_MAP } from \"./constants\";\n\ninterface SheetSubcomponentProps extends React.ComponentProps<\"div\"> {\n children?: ReactNode;\n className?: string;\n}\n\nconst SheetHeader = forwardRef<HTMLDivElement, SheetSubcomponentProps>(\n ({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetHeader\n ref={ref}\n className={cn(className)}\n data-testid=\"sheet-header\"\n {...otherProps}\n >\n {children}\n </PrimitiveSheetHeader>\n )\n);\nSheetHeader.displayName = \"Sheet.Header\";\n\nconst SheetBody = forwardRef<\n HTMLDivElement,\n SheetSubcomponentProps & { hasFooter?: boolean }\n>(({ children, className, hasFooter = true, ...otherProps }, ref) => (\n <div\n ref={ref}\n data-slot=\"sheet-body\"\n data-testid=\"sheet-body\"\n className={cn(\n \"flex flex-1 flex-col items-start justify-start overflow-y-auto px-4\",\n hasFooter && \"pb-0\",\n className\n )}\n {...otherProps}\n >\n {children}\n </div>\n));\nSheetBody.displayName = \"Sheet.Body\";\n\nconst SheetFooter = forwardRef<HTMLDivElement, SheetSubcomponentProps>(\n ({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetFooter\n ref={ref}\n className={cn(\n \"flex flex-row items-center justify-start gap-2 border-t border-border\",\n className\n )}\n data-testid=\"sheet-footer\"\n {...otherProps}\n >\n {children}\n </PrimitiveSheetFooter>\n )\n);\nSheetFooter.displayName = \"Sheet.Footer\";\n\nconst SheetTitle = forwardRef<\n HTMLHeadingElement,\n React.ComponentProps<typeof PrimitiveSheetTitle>\n>(({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetTitle\n ref={ref}\n className={cn(\"text-2xl font-semibold\", className)}\n {...otherProps}\n >\n {children}\n </PrimitiveSheetTitle>\n));\nSheetTitle.displayName = \"Sheet.Title\";\n\nconst SheetDescription = forwardRef<\n HTMLParagraphElement,\n React.ComponentProps<typeof PrimitiveSheetDescription>\n>(({ children, className, ...otherProps }, ref) => (\n <PrimitiveSheetDescription\n ref={ref}\n className={cn(className)}\n {...otherProps}\n >\n {children}\n </PrimitiveSheetDescription>\n));\nSheetDescription.displayName = \"Sheet.Description\";\n\nconst Sheet = forwardRef<HTMLDivElement, SheetProps>(\n (\n {\n size = \"small\",\n isOpen = false,\n onClose = () => {},\n children,\n className,\n closeOnEsc = true,\n closeButton = true,\n backdropClassName,\n closeOnOutsideClick = true,\n initialFocusRef,\n finalFocusRef,\n side = \"right\",\n modal,\n defaultOpen,\n // Radix content handlers — intercept and merge\n onOpenAutoFocus: onOpenAutoFocusProp,\n onCloseAutoFocus: onCloseAutoFocusProp,\n ...otherProps\n },\n ref\n ) => {\n const handleOpenChange = (open: boolean) => {\n if (!open) onClose();\n };\n\n const handleInteractOutside = (e: Event) => {\n if (!closeOnOutsideClick) e.preventDefault();\n };\n\n const handleEscapeKeyDown = (e: KeyboardEvent) => {\n if (!closeOnEsc) e.preventDefault();\n };\n\n const handleOpenAutoFocus = (e: Event) => {\n if (initialFocusRef?.current) {\n e.preventDefault();\n initialFocusRef.current.focus();\n }\n onOpenAutoFocusProp?.(e);\n };\n\n const handleCloseAutoFocus = (e: Event) => {\n if (finalFocusRef?.current) {\n e.preventDefault();\n finalFocusRef.current.focus();\n }\n onCloseAutoFocusProp?.(e);\n };\n\n return (\n <PrimitiveSheet\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n defaultOpen={defaultOpen}\n >\n <PrimitiveSheetContent\n ref={ref}\n side={side}\n showCloseButton={closeButton}\n overlayClassName={backdropClassName}\n onInteractOutside={handleInteractOutside}\n onEscapeKeyDown={handleEscapeKeyDown}\n onOpenAutoFocus={handleOpenAutoFocus}\n onCloseAutoFocus={handleCloseAutoFocus}\n className={cn(SIZE_CLASS_MAP[size], className)}\n data-testid=\"sheet-wrapper\"\n {...otherProps}\n >\n {children}\n </PrimitiveSheetContent>\n </PrimitiveSheet>\n );\n }\n) as React.ForwardRefExoticComponent<\n SheetProps & React.RefAttributes<HTMLDivElement>\n> & {\n Header: typeof SheetHeader;\n Body: typeof SheetBody;\n Footer: typeof SheetFooter;\n Title: typeof SheetTitle;\n Description: typeof SheetDescription;\n};\n\nSheet.displayName = \"Sheet\";\nSheet.Header = SheetHeader;\nSheet.Body = SheetBody;\nSheet.Footer = SheetFooter;\nSheet.Title = SheetTitle;\nSheet.Description = SheetDescription;\n\nexport { Sheet };\n"],"names":["_jsx","PrimitiveSheetHeader","PrimitiveSheetFooter","PrimitiveSheetTitle","PrimitiveSheetDescription","PrimitiveSheet","PrimitiveSheetContent"],"mappings":"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"}
|
|
@@ -160,9 +160,9 @@ const TreeSelect = forwardRef((props, ref) => {
|
|
|
160
160
|
return (jsx(SelectFieldWrapper, { id: s.id, label: s.label, error: s.error, helpText: s.helpText, errorId: s.errorId, helpTextId: s.helpTextId, isDisabled: s.isDisabled, required: s.required, className: className, children: jsxs(Popover, { open: s.isOpen, onOpenChange: s.handleOpenChange, children: [jsx(PopoverTrigger, { asChild: true, children: jsx(TreeSelectTrigger, { ref: ref, currentValue: s.currentValue, error: s.error, handleClear: s.handleClear, isDisabled: s.isDisabled, placeholder: props.placeholder, selectedLabel: s.selectedLabel, showClearButton: s.showClearButton, size: s.size, suffixIcon: suffixIcon }) }), jsxs(PopoverContent, { align: "start", className: "w-[var(--radix-popover-trigger-width)] p-0", onOpenAutoFocus: e => {
|
|
161
161
|
if (s.isSearchable)
|
|
162
162
|
e.preventDefault();
|
|
163
|
-
}, children: [s.isSearchable && (jsx("div", { className: "border-b px-2 py-1.5", children: jsx("input", { autoFocus: true, type: "text", className: cn("w-full bg-transparent outline-none placeholder:text-muted-foreground", SIZE_CONFIG[s.size].text), placeholder: "Search...", value: s.searchTerm, onChange: e => s.setSearchTerm(e.target.value) }) })), s.prunedTreeData.length > 0 ? (jsx("div", { className: "p-1", children: jsx(Tree, { autoExpandParent: autoExpandParent, expandedKeys: s.effectiveExpandedKeys, height: DROPDOWN_HEIGHT, switcherIcon: switcherIcon, treeData: s.prunedTreeData, onExpand: s.handleExpand, onSelect: s.handleSelect }) })) : (jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No results found." }))] })] }) }));
|
|
163
|
+
}, children: [s.isSearchable && (jsx("div", { className: "border-b border-border px-2 py-1.5", children: jsx("input", { autoFocus: true, type: "text", className: cn("w-full bg-transparent outline-none placeholder:text-muted-foreground", SIZE_CONFIG[s.size].text), placeholder: "Search...", value: s.searchTerm, onChange: e => s.setSearchTerm(e.target.value) }) })), s.prunedTreeData.length > 0 ? (jsx("div", { className: "p-1", children: jsx(Tree, { autoExpandParent: autoExpandParent, expandedKeys: s.effectiveExpandedKeys, height: DROPDOWN_HEIGHT, switcherIcon: switcherIcon, treeData: s.prunedTreeData, onExpand: s.handleExpand, onSelect: s.handleSelect }) })) : (jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No results found." }))] })] }) }));
|
|
164
164
|
});
|
|
165
165
|
TreeSelect.displayName = "TreeSelect";
|
|
166
166
|
|
|
167
167
|
export { TreeSelect as T };
|
|
168
|
-
//# sourceMappingURL=TreeSelect-
|
|
168
|
+
//# sourceMappingURL=TreeSelect-BxsQrdjf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeSelect-DRGcYz-6.js","sources":["../src/components/TreeSelect/utils/pruneTree.ts","../src/components/TreeSelect/utils/resolveFieldNames.ts","../src/components/TreeSelect/hooks/useTreeSelectValue.ts","../src/components/TreeSelect/hooks/useTreeSelectState.ts","../src/components/TreeSelect/constants.ts","../src/components/TreeSelect/TreeSelectTrigger.tsx","../src/components/TreeSelect/TreeSelect.tsx"],"sourcesContent":["import type { TreeNodeData } from \"../../Tree/types\";\n\nexport const pruneTree = (\n nodes: TreeNodeData[],\n searchTerm: string\n): TreeNodeData[] => {\n if (!searchTerm.trim()) return nodes;\n\n const lower = searchTerm.toLowerCase();\n\n const prune = (items: TreeNodeData[]): TreeNodeData[] =>\n items.reduce<TreeNodeData[]>((acc, node) => {\n const titleStr = typeof node.title === \"string\" ? node.title : \"\";\n const nodeMatches = titleStr.toLowerCase().includes(lower);\n\n if (nodeMatches) {\n acc.push(node);\n } else {\n const prunedChildren = node.children ? prune(node.children) : [];\n if (prunedChildren.length > 0) {\n acc.push({ ...node, children: prunedChildren });\n }\n }\n\n return acc;\n }, []);\n\n return prune(nodes);\n};\n","import type { ReactNode } from \"react\";\nimport type { TreeNodeData } from \"../../Tree/types\";\n\nexport const resolveFieldNames = (\n nodes: Record<string, unknown>[],\n fieldNames: { label?: string; value?: string }\n): TreeNodeData[] => {\n const labelKey = fieldNames.label ?? \"title\";\n const valueKey = fieldNames.value ?? \"key\";\n\n const remap = (items: Record<string, unknown>[]): TreeNodeData[] =>\n items.map(item => ({\n key: String(item[valueKey] ?? \"\"),\n title: item[labelKey] as ReactNode,\n disabled: item.disabled as boolean | undefined,\n children: Array.isArray(item.children)\n ? remap(item.children as Record<string, unknown>[])\n : undefined,\n }));\n\n return remap(nodes);\n};\n","import { useCallback, useId, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { findNode } from \"../../Tree/utils/adapter\";\nimport type { TreeSelectProps } from \"../types\";\nimport { resolveFieldNames } from \"../utils/resolveFieldNames\";\n\nexport function useTreeSelectValue(props: TreeSelectProps) {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n treeData: rawTreeData,\n fieldNames,\n isClearable = false,\n isDisabled = false,\n size = \"medium\",\n label = \"\",\n error = \"\",\n helpText = \"\" as ReactNode,\n required = false,\n } = props;\n\n const id = useId();\n const errorId = `error_${id}`;\n const helpTextId = `helpText_${id}`;\n\n const treeData = useMemo(() => {\n if (!fieldNames) return rawTreeData;\n\n return resolveFieldNames(\n rawTreeData as unknown as Record<string, unknown>[],\n fieldNames\n );\n }, [rawTreeData, fieldNames?.label, fieldNames?.value]);\n\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n const currentValue = isControlled ? (valueProp ?? \"\") : internalValue;\n\n const applyValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const selectedLabel = useMemo(() => {\n if (!currentValue) return \"\";\n const node = findNode(currentValue, treeData);\n if (!node) return currentValue;\n\n return typeof node.title === \"string\" ? node.title : \"\";\n }, [currentValue, treeData]);\n\n const handleClear = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n applyValue(\"\");\n },\n [applyValue]\n );\n\n const showClearButton = isClearable && !!currentValue && !isDisabled;\n\n return {\n id,\n errorId,\n helpTextId,\n label,\n error,\n helpText,\n required,\n isDisabled,\n size,\n treeData,\n currentValue,\n selectedLabel,\n applyValue,\n handleClear,\n showClearButton,\n };\n}\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport type { TreeNodeData } from \"../../Tree/types\";\nimport { walkTree } from \"../../Tree/utils/adapter\";\nimport type { TreeSelectProps } from \"../types\";\nimport { pruneTree } from \"../utils/pruneTree\";\nimport { useTreeSelectValue } from \"./useTreeSelectValue\";\n\nexport function useTreeSelectState(props: TreeSelectProps) {\n const { isSearchable = false, defaultExpandedKeys } = props;\n const defaultExpandedKeysRef = useRef(defaultExpandedKeys);\n defaultExpandedKeysRef.current = defaultExpandedKeys;\n const value = useTreeSelectValue(props);\n\n const [isOpen, setIsOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [expandedKeys, setExpandedKeys] = useState<string[]>(\n defaultExpandedKeys ?? []\n );\n\n const prunedTreeData = useMemo(\n () =>\n searchTerm.trim()\n ? pruneTree(value.treeData, searchTerm)\n : value.treeData,\n [value.treeData, searchTerm]\n );\n\n const effectiveExpandedKeys = useMemo(() => {\n if (!searchTerm) return expandedKeys;\n\n const allKeys: string[] = [];\n walkTree(prunedTreeData, node => {\n if (node.children?.length) allKeys.push(node.key);\n });\n\n return allKeys;\n }, [searchTerm, prunedTreeData]);\n\n const handleSelect = useCallback(\n (keys: string[], info: { node: TreeNodeData }) => {\n if (value.isDisabled || info.node.disabled) return;\n value.applyValue(keys[0] ?? \"\");\n setIsOpen(false);\n setSearchTerm(\"\");\n },\n [value.applyValue, value.isDisabled]\n );\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (value.isDisabled) return;\n setIsOpen(open);\n if (!open) {\n setSearchTerm(\"\");\n setExpandedKeys(defaultExpandedKeysRef.current ?? []);\n }\n },\n [value.isDisabled]\n );\n\n const handleExpand = useCallback(\n (keys: string[]) => setExpandedKeys(keys),\n []\n );\n\n return {\n ...value,\n isSearchable,\n isOpen,\n handleOpenChange,\n searchTerm,\n setSearchTerm,\n prunedTreeData,\n effectiveExpandedKeys,\n handleSelect,\n handleExpand,\n };\n}\n","export const DROPDOWN_HEIGHT = 256;\n\nexport const SIZE_CONFIG: Record<\n \"small\" | \"medium\" | \"large\",\n { trigger: string; text: string }\n> = {\n small: { trigger: \"min-h-7 px-2 py-0.5\", text: \"text-xs\" },\n medium: { trigger: \"min-h-8 px-2.5 py-1\", text: \"text-sm\" },\n large: { trigger: \"min-h-10 px-2.5 py-1.5\", text: \"text-sm\" },\n};\n","import { forwardRef, type ReactNode } from \"react\";\nimport { ChevronDown, X } from \"lucide-react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { SIZE_CONFIG } from \"./constants\";\n\ninterface TreeSelectTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n size: \"small\" | \"medium\" | \"large\";\n currentValue: string;\n selectedLabel: string;\n placeholder?: string;\n isDisabled: boolean;\n error: string;\n showClearButton: boolean;\n handleClear: (e: React.MouseEvent) => void;\n suffixIcon?: ReactNode;\n}\n\nexport const TreeSelectTrigger = forwardRef<\n HTMLButtonElement,\n TreeSelectTriggerProps\n>(\n (\n {\n size,\n currentValue,\n selectedLabel,\n placeholder,\n isDisabled,\n error,\n showClearButton,\n handleClear,\n suffixIcon,\n className,\n ...rest\n },\n ref\n ) => (\n <button\n ref={ref}\n type=\"button\"\n disabled={isDisabled}\n {...rest}\n className={cn(\n \"inline-flex w-full items-center gap-1 rounded-md border border-input bg-background outline-none\",\n \"hover:bg-accent focus:ring-1 focus:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n error && \"border-destructive\",\n SIZE_CONFIG[size].trigger,\n SIZE_CONFIG[size].text,\n className\n )}\n >\n <span\n className={cn(\n \"flex-1 truncate text-left\",\n !currentValue && \"text-muted-foreground\"\n )}\n >\n {selectedLabel || placeholder || \"\"}\n </span>\n {showClearButton && (\n <span\n role=\"button\"\n tabIndex={-1}\n aria-label=\"Clear selection\"\n className=\"shrink-0 text-muted-foreground hover:text-foreground\"\n onClick={handleClear}\n >\n <X className=\"size-3.5\" />\n </span>\n )}\n {suffixIcon ?? <ChevronDown className=\"size-4 shrink-0 opacity-50\" />}\n </button>\n )\n);\n\nTreeSelectTrigger.displayName = \"TreeSelectTrigger\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"src/primitives/Popover\";\nimport { SelectFieldWrapper } from \"../Select/SelectFieldWrapper\";\nimport { Tree } from \"../Tree\";\nimport { useTreeSelectState } from \"./hooks/useTreeSelectState\";\nimport { TreeSelectTrigger } from \"./TreeSelectTrigger\";\nimport { SIZE_CONFIG, DROPDOWN_HEIGHT } from \"./constants\";\nimport type { TreeSelectProps } from \"./types\";\n\nconst TreeSelect = forwardRef<HTMLButtonElement, TreeSelectProps>(\n (props, ref) => {\n const s = useTreeSelectState(props);\n const { suffixIcon, switcherIcon, autoExpandParent, className } = props;\n\n return (\n <SelectFieldWrapper\n id={s.id}\n label={s.label}\n error={s.error}\n helpText={s.helpText}\n errorId={s.errorId}\n helpTextId={s.helpTextId}\n isDisabled={s.isDisabled}\n required={s.required}\n className={className}\n >\n <Popover open={s.isOpen} onOpenChange={s.handleOpenChange}>\n <PopoverTrigger asChild>\n <TreeSelectTrigger\n ref={ref}\n currentValue={s.currentValue}\n error={s.error}\n handleClear={s.handleClear}\n isDisabled={s.isDisabled}\n placeholder={props.placeholder}\n selectedLabel={s.selectedLabel}\n showClearButton={s.showClearButton}\n size={s.size}\n suffixIcon={suffixIcon}\n />\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className=\"w-[var(--radix-popover-trigger-width)] p-0\"\n onOpenAutoFocus={e => {\n if (s.isSearchable) e.preventDefault();\n }}\n >\n {s.isSearchable && (\n <div className=\"border-b px-2 py-1.5\">\n <input\n autoFocus\n type=\"text\"\n className={cn(\n \"w-full bg-transparent outline-none placeholder:text-muted-foreground\",\n SIZE_CONFIG[s.size].text\n )}\n placeholder=\"Search...\"\n value={s.searchTerm}\n onChange={e => s.setSearchTerm(e.target.value)}\n />\n </div>\n )}\n {s.prunedTreeData.length > 0 ? (\n <div className=\"p-1\">\n <Tree\n autoExpandParent={autoExpandParent}\n expandedKeys={s.effectiveExpandedKeys}\n height={DROPDOWN_HEIGHT}\n switcherIcon={switcherIcon}\n treeData={s.prunedTreeData}\n onExpand={s.handleExpand}\n onSelect={s.handleSelect}\n />\n </div>\n ) : (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n No results found.\n </div>\n )}\n </PopoverContent>\n </Popover>\n </SelectFieldWrapper>\n );\n }\n);\n\nTreeSelect.displayName = \"TreeSelect\";\n\nexport { TreeSelect };\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;AAEO,MAAM,SAAS,GAAG,CACvB,KAAqB,EACrB,UAAkB,KACA;AAClB,IAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAAE,QAAA,OAAO,KAAK;AAEpC,IAAA,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE;AAEtC,IAAA,MAAM,KAAK,GAAG,CAAC,KAAqB,KAClC,KAAK,CAAC,MAAM,CAAiB,CAAC,GAAG,EAAE,IAAI,KAAI;AACzC,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;QACjE,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAE1D,IAAI,WAAW,EAAE;AACf,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAChB;aAAO;AACL,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;AAChE,YAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,gBAAA,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;YACjD;QACF;AAEA,QAAA,OAAO,GAAG;IACZ,CAAC,EAAE,EAAE,CAAC;AAER,IAAA,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC;;ACzBM,MAAM,iBAAiB,GAAG,CAC/B,KAAgC,EAChC,UAA8C,KAC5B;AAClB,IAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,IAAI,OAAO;AAC5C,IAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,IAAI,KAAK;AAE1C,IAAA,MAAM,KAAK,GAAG,CAAC,KAAgC,KAC7C,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK;QACjB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACjC,QAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAc;QAClC,QAAQ,EAAE,IAAI,CAAC,QAA+B;QAC9C,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ;AACnC,cAAE,KAAK,CAAC,IAAI,CAAC,QAAqC;AAClD,cAAE,SAAS;AACd,KAAA,CAAC,CAAC;AAEL,IAAA,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,CAAC;;ACfK,SAAU,kBAAkB,CAAC,KAAsB,EAAA;IACvD,MAAM,EACJ,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,QAAQ,EACR,QAAQ,EAAE,WAAW,EACrB,UAAU,EACV,WAAW,GAAG,KAAK,EACnB,UAAU,GAAG,KAAK,EAClB,IAAI,GAAG,QAAQ,EACf,KAAK,GAAG,EAAE,EACV,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,EAAe,EAC1B,QAAQ,GAAG,KAAK,GACjB,GAAG,KAAK;AAET,IAAA,MAAM,EAAE,GAAG,KAAK,EAAE;AAClB,IAAA,MAAM,OAAO,GAAG,CAAA,MAAA,EAAS,EAAE,EAAE;AAC7B,IAAA,MAAM,UAAU,GAAG,CAAA,SAAA,EAAY,EAAE,EAAE;AAEnC,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAK;AAC5B,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,WAAW;AAEnC,QAAA,OAAO,iBAAiB,CACtB,WAAmD,EACnD,UAAU,CACX;AACH,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAEvD,IAAA,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS;AAC5C,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;AACtE,IAAA,MAAM,YAAY,GAAG,YAAY,IAAI,SAAS,IAAI,EAAE,IAAI,aAAa;AAErE,IAAA,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,IAAY,KAAI;AACf,QAAA,IAAI,CAAC,YAAY;YAAE,gBAAgB,CAAC,IAAI,CAAC;AACzC,QAAA,QAAQ,GAAG,IAAI,CAAC;AAClB,IAAA,CAAC,EACD,CAAC,YAAY,EAAE,QAAQ,CAAC,CACzB;AAED,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAK;AACjC,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,EAAE;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;AAC7C,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,YAAY;AAE9B,QAAA,OAAO,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;AACzD,IAAA,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAE5B,IAAA,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,CAAmB,KAAI;QACtB,CAAC,CAAC,eAAe,EAAE;QACnB,UAAU,CAAC,EAAE,CAAC;AAChB,IAAA,CAAC,EACD,CAAC,UAAU,CAAC,CACb;IAED,MAAM,eAAe,GAAG,WAAW,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,UAAU;IAEpE,OAAO;QACL,EAAE;QACF,OAAO;QACP,UAAU;QACV,KAAK;QACL,KAAK;QACL,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,IAAI;QACJ,QAAQ;QACR,YAAY;QACZ,aAAa;QACb,UAAU;QACV,WAAW;QACX,eAAe;KAChB;AACH;;AC3EM,SAAU,kBAAkB,CAAC,KAAsB,EAAA;IACvD,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE,mBAAmB,EAAE,GAAG,KAAK;AAC3D,IAAA,MAAM,sBAAsB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1D,IAAA,sBAAsB,CAAC,OAAO,GAAG,mBAAmB;AACpD,IAAA,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC;IAEvC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC3C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AAChD,IAAA,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAC9C,mBAAmB,IAAI,EAAE,CAC1B;IAED,MAAM,cAAc,GAAG,OAAO,CAC5B,MACE,UAAU,CAAC,IAAI;UACX,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU;AACtC,UAAE,KAAK,CAAC,QAAQ,EACpB,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAC7B;AAED,IAAA,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAK;AACzC,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,YAAY;QAEpC,MAAM,OAAO,GAAa,EAAE;AAC5B,QAAA,QAAQ,CAAC,cAAc,EAAE,IAAI,IAAG;AAC9B,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACnD,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAEhC,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,IAAc,EAAE,IAA4B,KAAI;QAC/C,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QAC5C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/B,SAAS,CAAC,KAAK,CAAC;QAChB,aAAa,CAAC,EAAE,CAAC;IACnB,CAAC,EACD,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CACrC;AAED,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,IAAa,KAAI;QAChB,IAAI,KAAK,CAAC,UAAU;YAAE;QACtB,SAAS,CAAC,IAAI,CAAC;QACf,IAAI,CAAC,IAAI,EAAE;YACT,aAAa,CAAC,EAAE,CAAC;AACjB,YAAA,eAAe,CAAC,sBAAsB,CAAC,OAAO,IAAI,EAAE,CAAC;QACvD;AACF,IAAA,CAAC,EACD,CAAC,KAAK,CAAC,UAAU,CAAC,CACnB;AAED,IAAA,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,IAAc,KAAK,eAAe,CAAC,IAAI,CAAC,EACzC,EAAE,CACH;IAED,OAAO;AACL,QAAA,GAAG,KAAK;QACR,YAAY;QACZ,MAAM;QACN,gBAAgB;QAChB,UAAU;QACV,aAAa;QACb,cAAc;QACd,qBAAqB;QACrB,YAAY;QACZ,YAAY;KACb;AACH;;AC7EO,MAAM,eAAe,GAAG,GAAG;AAE3B,MAAM,WAAW,GAGpB;IACF,KAAK,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC1D,MAAM,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3D,KAAK,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,SAAS,EAAE;CAC9D;;ACQM,MAAM,iBAAiB,GAAG,UAAU,CAIzC,CACE,EACE,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,KAAK,EACL,eAAe,EACf,WAAW,EACX,UAAU,EACV,SAAS,EACT,GAAG,IAAI,EACR,EACD,GAAG,MAEHA,IAAA,CAAA,QAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,UAAU,EAAA,GAChB,IAAI,EACR,SAAS,EAAE,EAAE,CACX,iGAAiG,EACjG,8CAA8C,EAC9C,kDAAkD,EAClD,KAAK,IAAI,oBAAoB,EAC7B,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EACzB,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EACtB,SAAS,CACV,EAAA,QAAA,EAAA,CAEDC,GAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,2BAA2B,EAC3B,CAAC,YAAY,IAAI,uBAAuB,CACzC,EAAA,QAAA,EAEA,aAAa,IAAI,WAAW,IAAI,EAAE,EAAA,CAC9B,EACN,eAAe,KACdA,GAAA,CAAA,MAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,EAAE,EAAA,YAAA,EACD,iBAAiB,EAC5B,SAAS,EAAC,sDAAsD,EAChE,OAAO,EAAE,WAAW,EAAA,QAAA,EAEpBA,GAAA,CAAC,CAAC,IAAC,SAAS,EAAC,UAAU,EAAA,CAAG,EAAA,CACrB,CACR,EACA,UAAU,IAAIA,GAAA,CAAC,WAAW,EAAA,EAAC,SAAS,EAAC,4BAA4B,EAAA,CAAG,CAAA,EAAA,CAC9D,CACV,CACF;AAED,iBAAiB,CAAC,WAAW,GAAG,mBAAmB;;AC9DnD,MAAM,UAAU,GAAG,UAAU,CAC3B,CAAC,KAAK,EAAE,GAAG,KAAI;AACb,IAAA,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACnC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,KAAK;AAEvE,IAAA,QACEA,GAAA,CAAC,kBAAkB,EAAA,EACjB,EAAE,EAAE,CAAC,CAAC,EAAE,EACR,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,UAAU,EAAE,CAAC,CAAC,UAAU,EACxB,UAAU,EAAE,CAAC,CAAC,UAAU,EACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,SAAS,EAAE,SAAS,EAAA,QAAA,EAEpBD,IAAA,CAAC,OAAO,IAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,gBAAgB,EAAA,QAAA,EAAA,CACvDC,GAAA,CAAC,cAAc,IAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EACrBA,GAAA,CAAC,iBAAiB,EAAA,EAChB,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,CAAC,CAAC,YAAY,EAC5B,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,WAAW,EAAE,CAAC,CAAC,WAAW,EAC1B,UAAU,EAAE,CAAC,CAAC,UAAU,EACxB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,aAAa,EAAE,CAAC,CAAC,aAAa,EAC9B,eAAe,EAAE,CAAC,CAAC,eAAe,EAClC,IAAI,EAAE,CAAC,CAAC,IAAI,EACZ,UAAU,EAAE,UAAU,EAAA,CACtB,EAAA,CACa,EACjBD,IAAA,CAAC,cAAc,EAAA,EACb,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,4CAA4C,EACtD,eAAe,EAAE,CAAC,IAAG;wBACnB,IAAI,CAAC,CAAC,YAAY;4BAAE,CAAC,CAAC,cAAc,EAAE;AACxC,oBAAA,CAAC,EAAA,QAAA,EAAA,CAEA,CAAC,CAAC,YAAY,KACbC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sBAAsB,EAAA,QAAA,EACnCA,GAAA,CAAA,OAAA,EAAA,EACE,SAAS,EAAA,IAAA,EACT,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,EAAE,CACX,sEAAsE,EACtE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CACzB,EACD,WAAW,EAAC,WAAW,EACvB,KAAK,EAAE,CAAC,CAAC,UAAU,EACnB,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,CAC9C,EAAA,CACE,CACP,EACA,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAC1BA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,KAAK,EAAA,QAAA,EAClBA,GAAA,CAAC,IAAI,EAAA,EACH,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,CAAC,CAAC,qBAAqB,EACrC,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,CAAC,CAAC,cAAc,EAC1B,QAAQ,EAAE,CAAC,CAAC,YAAY,EACxB,QAAQ,EAAE,CAAC,CAAC,YAAY,EAAA,CACxB,EAAA,CACE,KAENA,aAAK,SAAS,EAAC,gDAAgD,EAAA,QAAA,EAAA,mBAAA,EAAA,CAEzD,CACP,CAAA,EAAA,CACc,CAAA,EAAA,CACT,EAAA,CACS;AAEzB,CAAC;AAGH,UAAU,CAAC,WAAW,GAAG,YAAY;;;;"}
|
|
1
|
+
{"version":3,"file":"TreeSelect-BxsQrdjf.js","sources":["../src/components/TreeSelect/utils/pruneTree.ts","../src/components/TreeSelect/utils/resolveFieldNames.ts","../src/components/TreeSelect/hooks/useTreeSelectValue.ts","../src/components/TreeSelect/hooks/useTreeSelectState.ts","../src/components/TreeSelect/constants.ts","../src/components/TreeSelect/TreeSelectTrigger.tsx","../src/components/TreeSelect/TreeSelect.tsx"],"sourcesContent":["import type { TreeNodeData } from \"../../Tree/types\";\n\nexport const pruneTree = (\n nodes: TreeNodeData[],\n searchTerm: string\n): TreeNodeData[] => {\n if (!searchTerm.trim()) return nodes;\n\n const lower = searchTerm.toLowerCase();\n\n const prune = (items: TreeNodeData[]): TreeNodeData[] =>\n items.reduce<TreeNodeData[]>((acc, node) => {\n const titleStr = typeof node.title === \"string\" ? node.title : \"\";\n const nodeMatches = titleStr.toLowerCase().includes(lower);\n\n if (nodeMatches) {\n acc.push(node);\n } else {\n const prunedChildren = node.children ? prune(node.children) : [];\n if (prunedChildren.length > 0) {\n acc.push({ ...node, children: prunedChildren });\n }\n }\n\n return acc;\n }, []);\n\n return prune(nodes);\n};\n","import type { ReactNode } from \"react\";\nimport type { TreeNodeData } from \"../../Tree/types\";\n\nexport const resolveFieldNames = (\n nodes: Record<string, unknown>[],\n fieldNames: { label?: string; value?: string }\n): TreeNodeData[] => {\n const labelKey = fieldNames.label ?? \"title\";\n const valueKey = fieldNames.value ?? \"key\";\n\n const remap = (items: Record<string, unknown>[]): TreeNodeData[] =>\n items.map(item => ({\n key: String(item[valueKey] ?? \"\"),\n title: item[labelKey] as ReactNode,\n disabled: item.disabled as boolean | undefined,\n children: Array.isArray(item.children)\n ? remap(item.children as Record<string, unknown>[])\n : undefined,\n }));\n\n return remap(nodes);\n};\n","import { useCallback, useId, useMemo, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { findNode } from \"../../Tree/utils/adapter\";\nimport type { TreeSelectProps } from \"../types\";\nimport { resolveFieldNames } from \"../utils/resolveFieldNames\";\n\nexport function useTreeSelectValue(props: TreeSelectProps) {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n treeData: rawTreeData,\n fieldNames,\n isClearable = false,\n isDisabled = false,\n size = \"medium\",\n label = \"\",\n error = \"\",\n helpText = \"\" as ReactNode,\n required = false,\n } = props;\n\n const id = useId();\n const errorId = `error_${id}`;\n const helpTextId = `helpText_${id}`;\n\n const treeData = useMemo(() => {\n if (!fieldNames) return rawTreeData;\n\n return resolveFieldNames(\n rawTreeData as unknown as Record<string, unknown>[],\n fieldNames\n );\n }, [rawTreeData, fieldNames?.label, fieldNames?.value]);\n\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n const currentValue = isControlled ? (valueProp ?? \"\") : internalValue;\n\n const applyValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const selectedLabel = useMemo(() => {\n if (!currentValue) return \"\";\n const node = findNode(currentValue, treeData);\n if (!node) return currentValue;\n\n return typeof node.title === \"string\" ? node.title : \"\";\n }, [currentValue, treeData]);\n\n const handleClear = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n applyValue(\"\");\n },\n [applyValue]\n );\n\n const showClearButton = isClearable && !!currentValue && !isDisabled;\n\n return {\n id,\n errorId,\n helpTextId,\n label,\n error,\n helpText,\n required,\n isDisabled,\n size,\n treeData,\n currentValue,\n selectedLabel,\n applyValue,\n handleClear,\n showClearButton,\n };\n}\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport type { TreeNodeData } from \"../../Tree/types\";\nimport { walkTree } from \"../../Tree/utils/adapter\";\nimport type { TreeSelectProps } from \"../types\";\nimport { pruneTree } from \"../utils/pruneTree\";\nimport { useTreeSelectValue } from \"./useTreeSelectValue\";\n\nexport function useTreeSelectState(props: TreeSelectProps) {\n const { isSearchable = false, defaultExpandedKeys } = props;\n const defaultExpandedKeysRef = useRef(defaultExpandedKeys);\n defaultExpandedKeysRef.current = defaultExpandedKeys;\n const value = useTreeSelectValue(props);\n\n const [isOpen, setIsOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [expandedKeys, setExpandedKeys] = useState<string[]>(\n defaultExpandedKeys ?? []\n );\n\n const prunedTreeData = useMemo(\n () =>\n searchTerm.trim()\n ? pruneTree(value.treeData, searchTerm)\n : value.treeData,\n [value.treeData, searchTerm]\n );\n\n const effectiveExpandedKeys = useMemo(() => {\n if (!searchTerm) return expandedKeys;\n\n const allKeys: string[] = [];\n walkTree(prunedTreeData, node => {\n if (node.children?.length) allKeys.push(node.key);\n });\n\n return allKeys;\n }, [searchTerm, prunedTreeData]);\n\n const handleSelect = useCallback(\n (keys: string[], info: { node: TreeNodeData }) => {\n if (value.isDisabled || info.node.disabled) return;\n value.applyValue(keys[0] ?? \"\");\n setIsOpen(false);\n setSearchTerm(\"\");\n },\n [value.applyValue, value.isDisabled]\n );\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (value.isDisabled) return;\n setIsOpen(open);\n if (!open) {\n setSearchTerm(\"\");\n setExpandedKeys(defaultExpandedKeysRef.current ?? []);\n }\n },\n [value.isDisabled]\n );\n\n const handleExpand = useCallback(\n (keys: string[]) => setExpandedKeys(keys),\n []\n );\n\n return {\n ...value,\n isSearchable,\n isOpen,\n handleOpenChange,\n searchTerm,\n setSearchTerm,\n prunedTreeData,\n effectiveExpandedKeys,\n handleSelect,\n handleExpand,\n };\n}\n","export const DROPDOWN_HEIGHT = 256;\n\nexport const SIZE_CONFIG: Record<\n \"small\" | \"medium\" | \"large\",\n { trigger: string; text: string }\n> = {\n small: { trigger: \"min-h-7 px-2 py-0.5\", text: \"text-xs\" },\n medium: { trigger: \"min-h-8 px-2.5 py-1\", text: \"text-sm\" },\n large: { trigger: \"min-h-10 px-2.5 py-1.5\", text: \"text-sm\" },\n};\n","import { forwardRef, type ReactNode } from \"react\";\nimport { ChevronDown, X } from \"lucide-react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { SIZE_CONFIG } from \"./constants\";\n\ninterface TreeSelectTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n size: \"small\" | \"medium\" | \"large\";\n currentValue: string;\n selectedLabel: string;\n placeholder?: string;\n isDisabled: boolean;\n error: string;\n showClearButton: boolean;\n handleClear: (e: React.MouseEvent) => void;\n suffixIcon?: ReactNode;\n}\n\nexport const TreeSelectTrigger = forwardRef<\n HTMLButtonElement,\n TreeSelectTriggerProps\n>(\n (\n {\n size,\n currentValue,\n selectedLabel,\n placeholder,\n isDisabled,\n error,\n showClearButton,\n handleClear,\n suffixIcon,\n className,\n ...rest\n },\n ref\n ) => (\n <button\n ref={ref}\n type=\"button\"\n disabled={isDisabled}\n {...rest}\n className={cn(\n \"inline-flex w-full items-center gap-1 rounded-md border border-input bg-background outline-none\",\n \"hover:bg-accent focus:ring-1 focus:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n error && \"border-destructive\",\n SIZE_CONFIG[size].trigger,\n SIZE_CONFIG[size].text,\n className\n )}\n >\n <span\n className={cn(\n \"flex-1 truncate text-left\",\n !currentValue && \"text-muted-foreground\"\n )}\n >\n {selectedLabel || placeholder || \"\"}\n </span>\n {showClearButton && (\n <span\n role=\"button\"\n tabIndex={-1}\n aria-label=\"Clear selection\"\n className=\"shrink-0 text-muted-foreground hover:text-foreground\"\n onClick={handleClear}\n >\n <X className=\"size-3.5\" />\n </span>\n )}\n {suffixIcon ?? <ChevronDown className=\"size-4 shrink-0 opacity-50\" />}\n </button>\n )\n);\n\nTreeSelectTrigger.displayName = \"TreeSelectTrigger\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"src/primitives/Popover\";\nimport { SelectFieldWrapper } from \"../Select/SelectFieldWrapper\";\nimport { Tree } from \"../Tree\";\nimport { useTreeSelectState } from \"./hooks/useTreeSelectState\";\nimport { TreeSelectTrigger } from \"./TreeSelectTrigger\";\nimport { SIZE_CONFIG, DROPDOWN_HEIGHT } from \"./constants\";\nimport type { TreeSelectProps } from \"./types\";\n\nconst TreeSelect = forwardRef<HTMLButtonElement, TreeSelectProps>(\n (props, ref) => {\n const s = useTreeSelectState(props);\n const { suffixIcon, switcherIcon, autoExpandParent, className } = props;\n\n return (\n <SelectFieldWrapper\n id={s.id}\n label={s.label}\n error={s.error}\n helpText={s.helpText}\n errorId={s.errorId}\n helpTextId={s.helpTextId}\n isDisabled={s.isDisabled}\n required={s.required}\n className={className}\n >\n <Popover open={s.isOpen} onOpenChange={s.handleOpenChange}>\n <PopoverTrigger asChild>\n <TreeSelectTrigger\n ref={ref}\n currentValue={s.currentValue}\n error={s.error}\n handleClear={s.handleClear}\n isDisabled={s.isDisabled}\n placeholder={props.placeholder}\n selectedLabel={s.selectedLabel}\n showClearButton={s.showClearButton}\n size={s.size}\n suffixIcon={suffixIcon}\n />\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className=\"w-[var(--radix-popover-trigger-width)] p-0\"\n onOpenAutoFocus={e => {\n if (s.isSearchable) e.preventDefault();\n }}\n >\n {s.isSearchable && (\n <div className=\"border-b border-border px-2 py-1.5\">\n <input\n autoFocus\n type=\"text\"\n className={cn(\n \"w-full bg-transparent outline-none placeholder:text-muted-foreground\",\n SIZE_CONFIG[s.size].text\n )}\n placeholder=\"Search...\"\n value={s.searchTerm}\n onChange={e => s.setSearchTerm(e.target.value)}\n />\n </div>\n )}\n {s.prunedTreeData.length > 0 ? (\n <div className=\"p-1\">\n <Tree\n autoExpandParent={autoExpandParent}\n expandedKeys={s.effectiveExpandedKeys}\n height={DROPDOWN_HEIGHT}\n switcherIcon={switcherIcon}\n treeData={s.prunedTreeData}\n onExpand={s.handleExpand}\n onSelect={s.handleSelect}\n />\n </div>\n ) : (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n No results found.\n </div>\n )}\n </PopoverContent>\n </Popover>\n </SelectFieldWrapper>\n );\n }\n);\n\nTreeSelect.displayName = \"TreeSelect\";\n\nexport { TreeSelect };\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -25,6 +25,13 @@ const buttonVariants = cva("group/button inline-flex shrink-0 items-center justi
|
|
|
25
25
|
"icon-lg": "size-9",
|
|
26
26
|
},
|
|
27
27
|
},
|
|
28
|
+
compoundVariants: [
|
|
29
|
+
{
|
|
30
|
+
variant: "link",
|
|
31
|
+
size: ["default", "xs", "sm", "lg"],
|
|
32
|
+
className: "h-auto border-0 px-0 has-data-[icon=inline-end]:pe-0 has-data-[icon=inline-start]:ps-0",
|
|
33
|
+
},
|
|
34
|
+
],
|
|
28
35
|
defaultVariants: {
|
|
29
36
|
variant: "default",
|
|
30
37
|
size: "default",
|
|
@@ -37,4 +44,4 @@ const Button = React.forwardRef(({ className, variant = "default", size = "defau
|
|
|
37
44
|
Button.displayName = "Button";
|
|
38
45
|
|
|
39
46
|
export { Button as B, buttonVariants as b };
|
|
40
|
-
//# sourceMappingURL=button-
|
|
47
|
+
//# sourceMappingURL=button-B-i8E7ah.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-
|
|
1
|
+
{"version":3,"file":"button-B-i8E7ah.js","sources":["../src/shadcn/components/button.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"src/shadcn/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pe-3 has-data-[icon=inline-start]:ps-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n compoundVariants: [\n {\n variant: \"link\",\n size: [\"default\", \"xs\", \"sm\", \"lg\"],\n className:\n \"h-auto border-0 px-0 has-data-[icon=inline-end]:pe-0 has-data-[icon=inline-start]:ps-0\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Button = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }\n>(({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}, ref) => {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n})\n\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"],"names":["Slot.Root","_jsx"],"mappings":";;;;;;AAMA,MAAM,cAAc,GAAG,GAAG,CACxB,wkBAAwkB,EACxkB;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,4DAA4D;AACrE,YAAA,OAAO,EACL,iLAAiL;AACnL,YAAA,SAAS,EACP,iIAAiI;AACnI,YAAA,KAAK,EACH,kHAAkH;AACpH,YAAA,WAAW,EACT,6NAA6N;AAC/N,YAAA,IAAI,EAAE,iDAAiD;AACxD,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EACL,sFAAsF;AACxF,YAAA,EAAE,EAAE,+MAA+M;AACnN,YAAA,EAAE,EAAE,yNAAyN;AAC7N,YAAA,EAAE,EAAE,sFAAsF;AAC1F,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EACP,yHAAyH;AAC3H,YAAA,SAAS,EACP,oFAAoF;AACtF,YAAA,SAAS,EAAE,QAAQ;AACpB,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACnC,YAAA,SAAS,EACP,wFAAwF;AAC3F,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACF,CAAA;AAGH,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAM7B,CAAC,EACD,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,OAAO,GAAG,KAAK,EACf,GAAG,KAAK,EACT,EAAE,GAAG,KAAI;AACR,IAAA,MAAM,IAAI,GAAG,OAAO,GAAGA,IAAS,GAAG,QAAQ;AAE3C,IAAA,QACEC,GAAA,CAAC,IAAI,EAAA,EACH,GAAG,EAAE,GAAG,EAAA,WAAA,EACE,QAAQ,EAAA,cAAA,EACJ,OAAO,EAAA,WAAA,EACV,IAAI,EACf,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAAA,GACvD,KAAK,EAAA,CACT;AAEN,CAAC;AAED,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var utils = require('./utils-CTr7wn5d.js');
|
|
6
|
-
var button = require('./button-
|
|
6
|
+
var button = require('./button-qIa_cyuE.js');
|
|
7
7
|
var chevronLeft = require('./chevron-left-BldoOh5p.js');
|
|
8
8
|
var chevronRight = require('./chevron-right-0jNdwX2Q.js');
|
|
9
9
|
var chevronDown = require('./chevron-down-CPsWSS51.js');
|
|
@@ -8063,4 +8063,4 @@ exports.startOfISOWeek = startOfISOWeek;
|
|
|
8063
8063
|
exports.startOfWeek = startOfWeek;
|
|
8064
8064
|
exports.toDate = toDate;
|
|
8065
8065
|
exports.warnOrThrowProtectedError = warnOrThrowProtectedError;
|
|
8066
|
-
//# sourceMappingURL=Calendar-
|
|
8066
|
+
//# sourceMappingURL=Calendar-BS-238p2.js.map
|