UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines • 3.33 kB
{"version":3,"file":"PickerShell.mjs","names":[],"sources":["../../../src/base-ui/DatePicker/PickerShell.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport { type CSSProperties, memo, type ReactElement, type ReactNode, useRef } from 'react';\n\nimport ClearButton from '@/base-ui/Input/ClearButton';\nimport { rootVariants } from '@/base-ui/Input/style';\nimport type { InputSize, InputVariant } from '@/base-ui/Input/type';\nimport { panelStyles } from '@/base-ui/panelStyles';\nimport {\n PopoverPopup,\n PopoverPortal,\n PopoverPositioner,\n PopoverRoot,\n PopoverTriggerElement,\n} from '@/base-ui/Popover';\n\nexport interface PickerShellProps {\n children: ReactNode;\n className?: string;\n disabled?: boolean;\n icon: ReactNode;\n onClear: () => void;\n onOpenChange: (open: boolean) => void;\n open: boolean;\n shadow?: boolean;\n showClear: boolean;\n size?: InputSize;\n style?: CSSProperties;\n trigger: ReactElement;\n variant?: InputVariant;\n}\n\nconst PickerShell = memo<PickerShellProps>(\n ({\n children,\n className,\n disabled,\n icon,\n onClear,\n onOpenChange,\n open,\n shadow,\n showClear,\n size = 'middle',\n style,\n trigger,\n variant,\n }) => {\n const { isDarkMode } = useThemeMode();\n const anchorRef = useRef<HTMLDivElement>(null);\n const popupRef = useRef<HTMLDivElement>(null);\n\n return (\n <div\n data-disabled={disabled ? '' : undefined}\n ref={anchorRef}\n style={style}\n className={cx(\n rootVariants({ shadow, size, variant: variant || (isDarkMode ? 'filled' : 'outlined') }),\n className,\n )}\n >\n <PopoverRoot open={open} onOpenChange={(next) => !disabled && onOpenChange(next)}>\n <PopoverTriggerElement>{trigger}</PopoverTriggerElement>\n <PopoverPortal>\n <PopoverPositioner anchor={anchorRef} placement=\"bottomLeft\">\n <PopoverPopup\n className={panelStyles.popup}\n ref={popupRef}\n initialFocus={() =>\n popupRef.current?.querySelector<HTMLElement>('[data-focus-target]') ?? true\n }\n >\n {children}\n </PopoverPopup>\n </PopoverPositioner>\n </PopoverPortal>\n </PopoverRoot>\n {showClear && !disabled ? <ClearButton onClear={onClear} /> : icon}\n </div>\n );\n },\n);\n\nPickerShell.displayName = 'PickerShell';\n\nexport default PickerShell;\n"],"mappings":";;;;;;;;;AAiCA,MAAM,cAAc,MACjB,EACC,UACA,WACA,UACA,MACA,SACA,cACA,MACA,QACA,WACA,OAAO,UACP,OACA,SACA,cACI;CACJ,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,YAAY,OAAuB,IAAI;CAC7C,MAAM,WAAW,OAAuB,IAAI;CAE5C,OACE,qBAAC,OAAD;EACE,iBAAe,WAAW,KAAK,KAAA;EAC/B,KAAK;EACE;EACP,WAAW,GACT,aAAa;GAAE;GAAQ;GAAM,SAAS,YAAY,aAAa,WAAW;EAAY,CAAC,GACvF,SACF;EAPF,UAAA,CASE,qBAAC,aAAD;GAAmB;GAAM,eAAe,SAAS,CAAC,YAAY,aAAa,IAAI;GAA/E,UAAA,CACE,oBAAC,uBAAD,EAAA,UAAwB,QAA+B,CAAA,GACvD,oBAAC,eAAD,EAAA,UACE,oBAAC,mBAAD;IAAmB,QAAQ;IAAW,WAAU;IAC9C,UAAA,oBAAC,cAAD;KACE,WAAW,YAAY;KACvB,KAAK;KACL,oBACE,SAAS,SAAS,cAA2B,qBAAqB,KAAK;KAGxE;IACW,CAAA;GACG,CAAA,EACN,CAAA,CACJ;EACZ,CAAA,GAAA,aAAa,CAAC,WAAW,oBAAC,aAAD,EAAsB,QAAU,CAAA,IAAI,IAC3D;;AAET,CACF;AAEA,YAAY,cAAc"}