UNPKG

@adaptabletools/adaptable

Version:

Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

41 lines (40 loc) 6.77 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import * as React from 'react'; import { Select as SelectPrimitive } from '@base-ui/react/select'; import { cn, POPUP_Z_INDEX } from '../../lib/utils'; import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from 'lucide-react'; const Select = SelectPrimitive.Root; const SelectGroup = React.forwardRef(function SelectGroup({ className, ...props }, ref) { return (_jsx(SelectPrimitive.Group, { "data-slot": "select-group", className: cn('twa:scroll-my-1 twa:p-1', className), ref: ref, ...props })); }); function SelectValue({ className, ...props }) { return (_jsx(SelectPrimitive.Value, { "data-slot": "select-value", className: cn('twa:text-input-foreground twa:flex twa:flex-1 twa:text-left', className), ...props })); } const SelectTrigger = React.forwardRef(function SelectTrigger({ className, size = 'default', children, icon, ...props }, ref) { return (_jsxs(SelectPrimitive.Trigger, { ref: ref, "data-slot": "select-trigger", "data-size": size, className: cn('twa:flex twa:w-fit twa:items-center twa:justify-between twa:gap-1.5 twa:rounded-input twa:border twa:border-input twa:py-1.5 twa:pr-2 twa:pl-2.5 twa:text-sm twa:whitespace-nowrap twa:shadow-xs twa:transition-[color,box-shadow] twa:outline-none twa:focus-visible:border-ring twa:focus-visible:ring-3 twa:focus-visible:ring-ring/50 twa:disabled:cursor-not-allowed twa:disabled:opacity-50 twa:aria-invalid:border-destructive twa:aria-invalid:ring-3 twa:aria-invalid:ring-destructive/20 twa:data-placeholder:text-muted-foreground twa:data-[size=default]:min-h-input twa:data-[size=sm]:h-7 twa:data-[size=sm]:min-h-auto twa:*:data-[slot=select-value]:line-clamp-1 twa:*:data-[slot=select-value]:flex twa:*:data-[slot=select-value]:items-center twa:*:data-[slot=select-value]:gap-1.5 twa:bg-input-background twa:hover:bg-input-background/80 twa:dark:aria-invalid:border-destructive/50 twa:dark:aria-invalid:ring-destructive/40 twa:[&_svg]:pointer-events-none twa:[&_svg]:shrink-0 twa:[&_svg:not([class*=size-])]:size-4', className), ...props, "data-name": props['data-name'], children: [children, icon !== undefined ? (icon) : (_jsx(SelectPrimitive.Icon, { render: _jsx(ChevronDownIcon, { className: "twa:pointer-events-none twa:size-4 twa:text-muted-foreground" }) }))] })); }); function SelectContent({ className, children, side = 'bottom', sideOffset = 4, align = 'center', alignOffset = 0, alignItemWithTrigger = true, container, stopMouseDownPropagation = false, ...props }) { const stopEventPropagation = stopMouseDownPropagation ? (e) => { e.stopPropagation(); e.nativeEvent?.stopPropagation?.(); } : undefined; return (_jsx(SelectPrimitive.Portal, { container: container, children: _jsx(SelectPrimitive.Positioner, { side: side, sideOffset: sideOffset, align: align, alignOffset: alignOffset, alignItemWithTrigger: alignItemWithTrigger, className: `twa:isolate ${POPUP_Z_INDEX}`, children: _jsxs(SelectPrimitive.Popup, { "data-slot": "select-content", "data-align-trigger": alignItemWithTrigger, onMouseDown: stopEventPropagation, onClick: stopEventPropagation, className: cn('twa:relative twa:isolate twa:z-50 twa:max-h-(--available-height) twa:min-w-36 twa:origin-(--transform-origin) twa:overflow-x-hidden twa:overflow-y-auto twa:rounded-input twa:bg-popover twa:text-popover-foreground twa:shadow-md twa:ring-1 twa:ring-foreground/10 twa:duration-100 twa:data-[align-trigger=true]:animate-none twa:data-[side=bottom]:slide-in-from-top-2 twa:data-[side=inline-end]:slide-in-from-left-2 twa:data-[side=inline-start]:slide-in-from-right-2 twa:data-[side=left]:slide-in-from-right-2 twa:data-[side=right]:slide-in-from-left-2 twa:data-[side=top]:slide-in-from-bottom-2 twa:data-open:animate-in twa:data-open:fade-in-0 twa:data-open:zoom-in-95 twa:data-closed:animate-out twa:data-closed:fade-out-0 twa:data-closed:zoom-out-95', 'twa:w-(--anchor-width)', 'twa:max-w-[min(var(--available-width),80vw)]', className), ...props, children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.List, { children: children }), _jsx(SelectScrollDownButton, {})] }) }) })); } const SelectLabel = React.forwardRef(function SelectLabel({ className, ...props }, ref) { return (_jsx(SelectPrimitive.GroupLabel, { "data-slot": "select-label", className: cn('twa:px-2 twa:py-1.5 twa:text-xs twa:text-muted-foreground', className), ref: ref, ...props })); }); const SelectItem = React.forwardRef(function SelectItem({ className, children, ...props }, ref) { return (_jsxs(SelectPrimitive.Item, { ref: ref, className: cn('twa:relative twa:flex twa:w-full twa:cursor-default twa:items-center twa:gap-2 twa:rounded-input twa:py-1.5 twa:pr-8 twa:pl-2 twa:text-sm twa:outline-hidden twa:select-none twa:focus:bg-accent twa:focus:text-accent-foreground twa:not-data-[variant=destructive]:focus:**:text-accent-foreground twa:data-disabled:pointer-events-none twa:data-disabled:opacity-50 twa:[&_svg]:pointer-events-none twa:[&_svg]:shrink-0 twa:[&_svg:not([class*=size-])]:size-4 twa:*:[span]:last:flex twa:*:[span]:last:items-center twa:*:[span]:last:gap-2', className), ...props, "data-slot": "select-item", children: [_jsx(SelectPrimitive.ItemText, { className: "twa:block twa:min-w-0 twa:flex-1 twa:truncate", children: children }), _jsx(SelectPrimitive.ItemIndicator, { render: _jsx("span", { className: "twa:pointer-events-none twa:absolute twa:right-2 twa:flex twa:size-4 twa:items-center twa:justify-center" }), children: _jsx(CheckIcon, { className: "twa:pointer-events-none" }) })] })); }); function SelectSeparator({ className, ...props }) { return (_jsx(SelectPrimitive.Separator, { "data-slot": "select-separator", className: cn('twa:pointer-events-none twa:-mx-1 twa:my-1 twa:h-px twa:bg-border', className), ...props })); } function SelectScrollUpButton({ className, ...props }) { return (_jsx(SelectPrimitive.ScrollUpArrow, { "data-slot": "select-scroll-up-button", className: cn('twa:top-0 twa:z-10 twa:flex twa:w-full twa:cursor-default twa:items-center twa:justify-center twa:bg-popover twa:py-1 twa:[&_svg:not([class*=size-])]:size-4', className), ...props, children: _jsx(ChevronUpIcon, {}) })); } function SelectScrollDownButton({ className, ...props }) { return (_jsx(SelectPrimitive.ScrollDownArrow, { "data-slot": "select-scroll-down-button", className: cn('twa:bottom-0 twa:z-10 twa:flex twa:w-full twa:cursor-default twa:items-center twa:justify-center twa:bg-popover twa:py-1 twa:[&_svg:not([class*=size-])]:size-4', className), ...props, children: _jsx(ChevronDownIcon, {}) })); } export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };