@bioturing/components 0.44.1 → 0.46.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/base.d.ts +2 -0
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +2 -0
- package/dist/base.js.map +1 -1
- package/dist/components/base-menu/index.d.ts.map +1 -1
- package/dist/components/base-menu/item.d.ts.map +1 -1
- package/dist/components/base-menu/item.js +6 -13
- package/dist/components/base-menu/item.js.map +1 -1
- package/dist/components/button/style.css +1 -1
- package/dist/components/choice-list/component.d.ts +11 -1
- package/dist/components/choice-list/component.d.ts.map +1 -1
- package/dist/components/choice-list/component.js +79 -82
- package/dist/components/choice-list/component.js.map +1 -1
- package/dist/components/choice-list/style.css +1 -1
- package/dist/components/combobox/component.d.ts +32 -1
- package/dist/components/combobox/component.d.ts.map +1 -1
- package/dist/components/combobox/component.js +286 -261
- package/dist/components/combobox/component.js.map +1 -1
- package/dist/components/combobox/style.css +1 -1
- package/dist/components/combobox/utils.d.ts +2 -0
- package/dist/components/combobox/utils.d.ts.map +1 -0
- package/dist/components/combobox/utils.js +10 -0
- package/dist/components/combobox/utils.js.map +1 -0
- package/dist/components/command-palette/style.css +1 -1
- package/dist/components/data-table/style.css +1 -1
- package/dist/components/dialog/Dialog.d.ts.map +1 -1
- package/dist/components/dialog/Dialog.js +73 -69
- package/dist/components/dialog/Dialog.js.map +1 -1
- package/dist/components/dialog/dialog.css +1 -1
- package/dist/components/hooks/useDraggable.d.ts.map +1 -1
- package/dist/components/hooks/useDraggable.js +34 -27
- package/dist/components/hooks/useDraggable.js.map +1 -1
- package/dist/components/input/component.d.ts +1 -1
- package/dist/components/input/component.d.ts.map +1 -1
- package/dist/components/input/component.js +55 -45
- package/dist/components/input/component.js.map +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +151 -132
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/style.css +1 -1
- package/dist/components/popup-panel/component.d.ts +1 -1
- package/dist/components/popup-panel/component.d.ts.map +1 -1
- package/dist/components/popup-panel/component.js +217 -233
- package/dist/components/popup-panel/component.js.map +1 -1
- package/dist/components/popup-panel/constants.d.ts +5 -1
- package/dist/components/popup-panel/constants.d.ts.map +1 -1
- package/dist/components/popup-panel/constants.js +8 -4
- package/dist/components/popup-panel/constants.js.map +1 -1
- package/dist/components/popup-panel/style.css +1 -1
- package/dist/components/popup-panel/types.d.ts +14 -1
- package/dist/components/popup-panel/types.d.ts.map +1 -1
- package/dist/components/select-trigger/style.css +1 -1
- package/dist/components/theme-provider/style.css +1 -1
- package/dist/components/truncate/helpers.d.ts +13 -7
- package/dist/components/truncate/helpers.d.ts.map +1 -1
- package/dist/components/truncate/helpers.js +102 -85
- package/dist/components/truncate/helpers.js.map +1 -1
- package/dist/stats.html +1 -1
- package/dist/tailwind.css +16 -0
- package/dist/tokens/and-theme/tokens.d.ts.map +1 -1
- package/dist/tokens/and-theme/tokens.js +4 -1
- package/dist/tokens/and-theme/tokens.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../src/components/combobox/component.tsx"],"sourcesContent":["\"use client\";\nimport { Combobox as BaseCombobox } from \"@base-ui/react/combobox\";\nimport DisabledContext from \"antd/es/config-provider/DisabledContext\";\nimport { FormItemInputContext } from \"antd/es/form/context\";\nimport { ValidateStatus } from \"antd/es/form/FormItem\";\nimport type { PopoverProps } from \"antd/es/popover\";\nimport React, {\n ForwardedRef,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n} from \"react\";\nimport { BaseMenuItem } from \"../base-menu\";\nimport { useControlledState } from \"../hooks\";\nimport { SelectTrigger } from \"../select-trigger\";\nimport { clsx, reactNodeToString, useCls } from \"../utils\";\n\nimport { XIcon } from \"@bioturing/assets\";\nimport { BaseMenu } from \"../base-menu\";\nimport { Empty } from \"../empty\";\nimport \"./style.css\";\n\nexport type ComboboxOption<\n T extends React.Key,\n O extends Record<string, unknown> = {},\n> = {\n value: T;\n label: React.ReactNode;\n disabled?: boolean;\n icon?: React.ReactNode;\n} & O;\n\nexport interface ComboboxProps<\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {},\n> {\n /** Array of options to be displayed in the combobox */\n options?: ComboboxOption<T, O>[];\n /** Current value of the combobox */\n value?: M extends true ? T[] : T;\n /** Default value when uncontrolled */\n defaultValue?: M extends true ? T[] : T;\n /** Callback when value changes */\n onChange?: (value: M extends true ? T[] : T) => void;\n /** Placeholder text for the input */\n placeholder?: string;\n /** Whether the combobox is disabled */\n disabled?: boolean;\n /** Validation status */\n status?: ValidateStatus;\n /** Whether to allow clearing the selection */\n allowClear?: boolean;\n /** Whether to allow multiple selections */\n multiple?: M;\n /** Maximum number of tags to show */\n maxTagCount?: number;\n /** Whether to show search functionality */\n showSearch?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Placement of the dropdown */\n placement?: PopoverProps[\"placement\"];\n /** Custom className for the component */\n className?: string;\n /** Custom class names for different parts */\n classNames?: {\n trigger?: string;\n input?: string;\n option?: string;\n optionIcon?: string;\n optionText?: string;\n list?: string;\n portal?: string;\n };\n /** Size of the combobox */\n size?: \"small\" | \"middle\" | \"large\";\n /** Loading state */\n loading?: boolean;\n /** Custom render for options */\n optionRender?: (\n option: ComboboxOption<T, O>,\n props: React.HTMLAttributes<HTMLElement>,\n ) => React.ReactElement;\n /** Filter function for search */\n filterOption?:\n | boolean\n | ((input: string, option: ComboboxOption<T, O>) => boolean);\n /** Callback when search input changes */\n onSearch?: (value: string) => void;\n /** Custom dropdown render */\n dropdownRender?: (menu: React.ReactElement) => React.ReactElement;\n /** Custom clear icon */\n clearIcon?: React.ReactNode;\n /** Custom suffix icon */\n suffixIcon?: React.ReactNode;\n // /**\n // * Show selection summary instead of individual tags when multiple\n // * @default false\n // */\n // showSelectionSummary?: boolean;\n // /**\n // * Render function for the selection summary in multiple case\n // * @default (selectedValues) => `${selectedValues.length} items selected`\n // */\n // selectionSummaryRender?: (selectedValues: T[]) => React.ReactNode;\n /**\n * Show select all option when in multiple mode\n * @default false\n */\n showSelectAll?: boolean;\n /**\n * Render function for the select all option\n */\n selectAllRender?: (props: {\n onSelectAll: () => void;\n onDeselectAll: () => void;\n checked: boolean;\n indeterminate: boolean;\n }) => React.ReactNode;\n /**\n * Function to extract keywords from the item for search filtering\n * @default (option) => [String(option.key), reactNodeToString(option.label)]\n */\n getOptionKeywords?: (option: ComboboxOption<T, O>) => string[];\n /**\n * Render function for the option label\n */\n optionLabelRender?: (\n option: ComboboxOption<T, O>,\n props?: React.HTMLAttributes<HTMLElement>,\n ) => React.ReactElement;\n}\n\nconst ComboboxInner = <\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {},\n>(\n {\n options = [],\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select...\",\n disabled: disabledProp = false,\n status: statusProp,\n allowClear = false,\n multiple = false as M,\n showSearch: _showSearch = true,\n open: controlledOpen,\n onOpenChange,\n className,\n classNames,\n size = \"middle\",\n optionRender,\n onSearch,\n clearIcon,\n suffixIcon,\n // showSelectionSummary: _showSelectionSummary = false,\n // selectionSummaryRender,\n showSelectAll = false,\n optionLabelRender,\n getOptionKeywords: _getOptionKeywords = (option: ComboboxOption<T, O>) => [\n String(option.value),\n reactNodeToString(option.label),\n ],\n ...rest\n }: ComboboxProps<T, M, O>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) => {\n const [value, setValue] = useControlledState(\n controlledValue,\n onChange,\n defaultValue !== undefined\n ? defaultValue\n : multiple\n ? ([] as T[])\n : undefined,\n );\n\n const [open, setOpen] = useControlledState(\n controlledOpen,\n onOpenChange,\n false,\n );\n\n const cls = useCls();\n const inputContainerRef = useRef<HTMLDivElement>(null);\n\n // Get form context values\n const { status: contextStatus } = useContext(FormItemInputContext);\n const contextDisabled = useContext(DisabledContext);\n\n // Merge context values with props\n const mergedStatus = statusProp || contextStatus;\n const disabled = disabledProp || contextDisabled;\n\n const handleValueChange = useCallback(\n (newValue: M extends true ? T[] : T) => {\n setValue(newValue);\n onChange?.(newValue);\n },\n [setValue, onChange],\n );\n\n const handleSelectAll = useCallback(() => {\n if (multiple) {\n const allValues = options.map((option) => option.value);\n (handleValueChange as (v: T[]) => void)(allValues);\n }\n }, [multiple, options, handleValueChange]);\n\n const handleDeselectAll = useCallback(() => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)([]);\n }\n }, [multiple, handleValueChange]);\n\n const handleClear = useCallback(() => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)([]);\n } else {\n (handleValueChange as (v: T) => void)(undefined as T);\n }\n }, [multiple, handleValueChange]);\n\n // Prepare selected values\n const selectedValues = useMemo(() => {\n return Array.isArray(value) ? value : value ? [value] : [];\n }, [value]);\n\n // Select all option logic\n const selectAllOption = useMemo(() => {\n if (!showSelectAll || !multiple || options.length === 0) {\n return null;\n }\n\n const selectedFromFiltered = selectedValues.filter((val) =>\n options.some((opt) => opt.value === val),\n );\n const checked =\n selectedFromFiltered.length === options.length && options.length > 0;\n const indeterminate =\n selectedFromFiltered.length > 0 &&\n selectedFromFiltered.length < options.length;\n\n return {\n checked,\n indeterminate,\n onToggle: () => {\n if (indeterminate || checked) {\n handleDeselectAll();\n } else {\n handleSelectAll();\n }\n },\n };\n }, [\n showSelectAll,\n multiple,\n options,\n selectedValues,\n handleDeselectAll,\n handleSelectAll,\n ]);\n\n // Convert options to Base UI format\n const baseUIItems = useMemo(() => options.map((opt) => opt.value), [options]);\n\n // Get display value for SelectTrigger\n const displayValue = useMemo(() => {\n if (multiple) {\n return selectedValues.length > 0\n ? `${selectedValues.length} item${\n selectedValues.length === 1 ? \"\" : \"s\"\n } selected`\n : null;\n } else {\n const selectedOption = options.find(\n (opt) => opt.value === selectedValues[0],\n );\n return selectedOption?.label || null;\n }\n }, [multiple, selectedValues, options]);\n\n const inputClassName = clsx(\n cls(\"combobox-input\"),\n cls(`combobox-input-${size}`),\n mergedStatus && cls(`combobox-input-${mergedStatus}`),\n classNames?.input,\n );\n\n // Memoize render props to avoid recreating on every render\n const positionerRender = useCallback(\n (props: React.ComponentProps<\"div\">) => (\n <BaseMenu.Root {...props}></BaseMenu.Root>\n ),\n [],\n );\n\n const popupRender = useCallback(\n (props: React.ComponentProps<\"div\">) => (\n <BaseMenu.Popup {...props}></BaseMenu.Popup>\n ),\n [],\n );\n\n const separatorRender = useCallback(\n (props: React.ComponentProps<\"div\">) => <BaseMenu.Divider {...props} />,\n [],\n );\n\n const listRender = useCallback(\n (props: React.ComponentProps<\"div\">) => (\n <BaseMenu.List {...props}></BaseMenu.List>\n ),\n [],\n );\n\n const itemToStringLabel = useCallback(\n (itemValue: T) => {\n const option = options.find((opt) => opt.value === itemValue);\n return reactNodeToString(option?.label || String(itemValue));\n },\n [options],\n );\n\n return (\n <div ref={ref} className={clsx(cls(\"combobox\"), className)} {...rest}>\n <BaseCombobox.Root<T, M>\n value={\n (multiple\n ? selectedValues\n : (selectedValues[0] ?? null)) as M extends true ? T[] : T | null\n }\n onValueChange={(newValue) => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)(\n Array.isArray(newValue) ? (newValue as T[]) : [],\n );\n } else {\n (handleValueChange as (v: T) => void)(newValue as T);\n }\n }}\n open={open}\n onOpenChange={setOpen}\n multiple={multiple}\n disabled={disabled}\n items={baseUIItems}\n itemToStringLabel={itemToStringLabel}\n >\n {/* Single Selection Layout using SelectTrigger compound components */}\n {!multiple ? (\n <SelectTrigger.Root\n ref={inputContainerRef}\n as=\"div\"\n size={size}\n disabled={disabled}\n open={open}\n status={mergedStatus}\n placeholder={placeholder}\n displayValue={displayValue}\n allowClear={allowClear}\n suffixIcon={suffixIcon}\n clearIcon={clearIcon}\n onClear={handleClear}\n onOpenChange={setOpen}\n className={clsx(\n classNames?.trigger,\n cls(\"combobox-trigger-single\"),\n )}\n >\n <SelectTrigger.Content\n contentRender={({ className, children, ...rest }) => (\n <BaseCombobox.Input\n placeholder={placeholder}\n className={clsx(className, inputClassName)}\n disabled={disabled}\n onChange={(event) => {\n onSearch?.(event.target.value);\n }}\n {...rest}\n />\n )}\n />\n <SelectTrigger.Clear\n render={(props) => (\n <BaseCombobox.Clear {...props}></BaseCombobox.Clear>\n )}\n />\n <SelectTrigger.Arrow\n render={(props, { icon }) => (\n <BaseCombobox.Trigger {...props}>\n <BaseCombobox.Icon>{icon}</BaseCombobox.Icon>\n </BaseCombobox.Trigger>\n )}\n />\n </SelectTrigger.Root>\n ) : (\n /* Multiple Selection Layout using SelectTrigger compound components */\n <SelectTrigger.Root\n ref={inputContainerRef}\n size={size}\n disabled={disabled}\n open={open}\n status={mergedStatus}\n placeholder={placeholder}\n displayValue={displayValue}\n allowClear={allowClear}\n suffixIcon={suffixIcon}\n clearIcon={clearIcon}\n onClear={handleClear}\n onOpenChange={setOpen}\n className={clsx(\n classNames?.trigger,\n cls(\"combobox-trigger-multiple\"),\n )}\n as=\"div\"\n >\n <SelectTrigger.Content\n contentRender={({ className, children, ...rest }) => (\n <BaseCombobox.Chips\n className={clsx(cls(\"combobox-chips\"), className)}\n {...rest}\n >\n <BaseCombobox.Value>\n {(selectedItems) => (\n <>\n {selectedItems.map((item: T) => {\n const option = options.find(\n (opt) => opt.value === item,\n );\n return (\n <BaseCombobox.Chip\n key={item}\n className={clsx(cls(\"combobox-chip\"))}\n >\n {option?.icon && (\n <span\n className={clsx(cls(\"combobox-chip-icon\"))}\n >\n {option.icon}\n </span>\n )}\n <span className={clsx(cls(\"combobox-chip-text\"))}>\n {option\n ? optionLabelRender\n ? optionLabelRender(option)\n : option.label\n : item}\n </span>\n <BaseCombobox.ChipRemove\n className={clsx(cls(\"combobox-chip-remove\"))}\n >\n <XIcon />\n </BaseCombobox.ChipRemove>\n </BaseCombobox.Chip>\n );\n })}\n\n <BaseCombobox.Input\n placeholder={\n selectedItems.length > 0 ? \"\" : placeholder\n }\n className={inputClassName}\n disabled={disabled}\n onChange={(event) => {\n onSearch?.(event.target.value);\n }}\n />\n </>\n )}\n </BaseCombobox.Value>\n </BaseCombobox.Chips>\n )}\n />\n <SelectTrigger.Clear\n render={(props) => (\n <BaseCombobox.Clear {...props}></BaseCombobox.Clear>\n )}\n />\n <SelectTrigger.Arrow\n render={(props, { icon }) => (\n <BaseCombobox.Trigger {...props}>\n <BaseCombobox.Icon>{icon}</BaseCombobox.Icon>\n </BaseCombobox.Trigger>\n )}\n />\n </SelectTrigger.Root>\n )}\n\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner\n anchor={inputContainerRef.current}\n sideOffset={4}\n render={positionerRender}\n >\n <BaseCombobox.Popup\n className={clsx(cls(\"combobox-popup\"), classNames?.portal)}\n render={popupRender}\n >\n {/* Select All Option */}\n {selectAllOption && (\n <>\n <BaseMenuItem\n as=\"button\"\n type=\"button\"\n className={clsx(cls(\"combobox-select-all\"))}\n selected={selectAllOption.checked}\n onClick={selectAllOption.onToggle}\n indeterminate={selectAllOption.indeterminate}\n showCheckbox\n >\n Select All\n </BaseMenuItem>\n <BaseCombobox.Separator render={separatorRender} />\n </>\n )}\n <BaseCombobox.List\n className={clsx(cls(\"combobox-list\"), classNames?.list)}\n render={listRender}\n >\n {(item: T) => {\n const option = options.find((opt) => opt.value === item);\n const isSelected = (selectedValues as T[]).includes(item);\n return optionRender ? (\n optionRender(option, {})\n ) : (\n <BaseMenuItem\n key={option.value}\n disabled={option.disabled}\n selected={isSelected}\n showCheckbox={multiple}\n icon={option.icon}\n classNames={{\n root: clsx(classNames?.option),\n icon: classNames?.optionIcon,\n text: classNames?.optionText,\n }}\n labelRender={\n optionLabelRender\n ? (props: React.HTMLAttributes<HTMLElement>) =>\n optionLabelRender(option, props)\n : undefined\n }\n render={(props: React.HTMLAttributes<HTMLElement>) => (\n <BaseCombobox.Item\n value={item as T}\n disabled={option.disabled}\n {...props}\n data-disabled={option.disabled}\n data-selected={isSelected}\n />\n )}\n >\n {option.label}\n </BaseMenuItem>\n );\n }}\n </BaseCombobox.List>\n\n <BaseCombobox.Empty className={clsx(cls(\"combobox-empty\"))}>\n <Empty description=\"No options found\" />\n </BaseCombobox.Empty>\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n </BaseCombobox.Root>\n </div>\n );\n};\n\nconst MainCombobox = forwardRef(ComboboxInner) as <\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {},\n>(\n props: ComboboxProps<T, M, O> & { ref?: ForwardedRef<HTMLDivElement> },\n) => ReturnType<typeof ComboboxInner>;\n\nexport const Combobox = Object.assign(MainCombobox, {\n // Add any sub components here if needed\n});\n\nexport default Combobox;\n"],"names":["ComboboxInner","options","controlledValue","defaultValue","onChange","placeholder","disabledProp","statusProp","allowClear","multiple","_showSearch","controlledOpen","onOpenChange","className","classNames","size","optionRender","onSearch","clearIcon","suffixIcon","showSelectAll","optionLabelRender","_getOptionKeywords","option","reactNodeToString","rest","ref","value","setValue","useControlledState","open","setOpen","cls","useCls","inputContainerRef","useRef","contextStatus","useContext","FormItemInputContext","contextDisabled","DisabledContext","mergedStatus","disabled","handleValueChange","useCallback","newValue","handleSelectAll","allValues","handleDeselectAll","handleClear","selectedValues","useMemo","selectAllOption","selectedFromFiltered","val","opt","checked","indeterminate","baseUIItems","displayValue","inputClassName","clsx","positionerRender","props","jsx","BaseMenu","popupRender","separatorRender","listRender","itemToStringLabel","itemValue","jsxs","BaseCombobox","SelectTrigger","children","selectedItems","Fragment","item","XIcon","event","icon","BaseMenuItem","isSelected","Empty","MainCombobox","forwardRef","Combobox"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/combobox/component.tsx"],"sourcesContent":["\"use client\";\nimport { Combobox as BaseCombobox } from \"@base-ui/react/combobox\";\nimport DisabledContext from \"antd/es/config-provider/DisabledContext\";\nimport { FormItemInputContext } from \"antd/es/form/context\";\nimport { ValidateStatus } from \"antd/es/form/FormItem\";\nimport type { PopoverProps } from \"antd/es/popover\";\nimport React, {\n ForwardedRef,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { BaseMenuItem } from \"../base-menu\";\nimport { useControlledState } from \"../hooks\";\nimport { SelectTrigger } from \"../select-trigger\";\nimport { clsx, reactNodeToString, useCls } from \"../utils\";\n\nimport { XIcon } from \"@bioturing/assets\";\nimport { BaseMenu } from \"../base-menu\";\nimport { Empty } from \"../empty\";\nimport { splitBySeparators } from \"./utils\";\nimport \"./style.css\";\n\n// Module-level static renderers — avoid recreating on every render\nconst positionerRender = (props: React.ComponentProps<\"div\">) => <BaseMenu.Root {...props} />;\nconst popupRender = (props: React.ComponentProps<\"div\">) => <BaseMenu.Popup {...props} />;\nconst separatorRender = (props: React.ComponentProps<\"div\">) => <BaseMenu.Divider {...props} />;\nconst listRender = (props: React.ComponentProps<\"div\">) => <BaseMenu.List {...props} />;\n\nexport type ComboboxOption<T extends React.Key, O extends Record<string, unknown> = {}> = {\n value: T;\n label: React.ReactNode;\n disabled?: boolean;\n icon?: React.ReactNode;\n} & O;\n\nexport interface ComboboxProps<\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {},\n> {\n /** Array of options to be displayed in the combobox */\n options?: ComboboxOption<T, O>[];\n /** Current value of the combobox */\n value?: M extends true ? T[] : T;\n /** Default value when uncontrolled */\n defaultValue?: M extends true ? T[] : T;\n /** Callback when value changes */\n onChange?: (value: M extends true ? T[] : T) => void;\n /** Placeholder text for the input */\n placeholder?: string;\n /** Whether the combobox is disabled */\n disabled?: boolean;\n /** Validation status */\n status?: ValidateStatus;\n /** Whether to allow clearing the selection */\n allowClear?: boolean;\n /** Whether to allow multiple selections */\n multiple?: M;\n /** Maximum number of tags to show */\n maxTagCount?: number;\n /** Whether to show search functionality */\n showSearch?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Placement of the dropdown */\n placement?: PopoverProps[\"placement\"];\n /** Custom className for the component */\n className?: string;\n /** Custom class names for different parts */\n classNames?: {\n trigger?: string;\n input?: string;\n option?: string;\n optionIcon?: string;\n optionText?: string;\n list?: string;\n portal?: string;\n };\n /** Size of the combobox */\n size?: \"small\" | \"middle\" | \"large\";\n /** Loading state */\n loading?: boolean;\n /** Custom render for options */\n optionRender?: (\n option: ComboboxOption<T, O>,\n props: React.HTMLAttributes<HTMLElement>,\n ) => React.ReactElement;\n /** Filter function for search */\n /**\n * Filter function for search\n * - `true` or `undefined`: default filtering (splits by tokenSeparators if provided)\n * - `false`: disables filtering\n * - custom function: `(input, option) => boolean`\n * @default true\n */\n filterOption?: boolean | ((input: string, option: ComboboxOption<T, O>) => boolean);\n /** Callback when search input changes */\n onSearch?: (value: string) => void;\n /** Custom dropdown render */\n dropdownRender?: (menu: React.ReactElement) => React.ReactElement;\n /** Custom clear icon */\n clearIcon?: React.ReactNode;\n /** Custom suffix icon */\n suffixIcon?: React.ReactNode;\n // /**\n // * Show selection summary instead of individual tags when multiple\n // * @default false\n // */\n // showSelectionSummary?: boolean;\n // /**\n // * Render function for the selection summary in multiple case\n // * @default (selectedValues) => `${selectedValues.length} items selected`\n // */\n // selectionSummaryRender?: (selectedValues: T[]) => React.ReactNode;\n /**\n * Show select all option when in multiple mode\n * @default false\n */\n showSelectAll?: boolean;\n /**\n * Render function for the select all option\n */\n selectAllRender?: (props: {\n onSelectAll: () => void;\n onDeselectAll: () => void;\n checked: boolean;\n indeterminate: boolean;\n }) => React.ReactNode;\n /**\n * Function to extract keywords from the item for search filtering\n * @default (option) => [String(option.key), reactNodeToString(option.label)]\n */\n getOptionKeywords?: (option: ComboboxOption<T, O>) => string[];\n /**\n * Render function for the option label\n */\n optionLabelRender?: (\n option: ComboboxOption<T, O>,\n props?: React.HTMLAttributes<HTMLElement>,\n ) => React.ReactElement;\n /**\n * Whether the popup width should match the trigger width.\n * When `false`, the popup can exceed the trigger width to fit long option labels.\n * @default true\n */\n popupMatchSelectWidth?: boolean;\n /**\n * Allow adding items by typing the exact label or value and pressing Enter.\n * @default false\n */\n addOnEnter?: boolean;\n /**\n * Characters to split input by when adding multiple items on Enter.\n * Only applies when `addOnEnter` and `multiple` are true.\n * @default undefined\n */\n tokenSeparators?: string[];\n /**\n * Automatically highlight the first matching item while filtering.\n * When enabled in single-select mode, Enter selects the highlighted\n * item natively and `addOnEnter` is ignored to avoid conflicts.\n * @default true\n */\n autoHighlight?: boolean;\n}\n\nconst ComboboxInner = <\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {},\n>(\n {\n options = [],\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select...\",\n disabled: disabledProp = false,\n status: statusProp,\n allowClear = false,\n multiple = false as M,\n showSearch: _showSearch = true,\n open: controlledOpen,\n onOpenChange,\n className,\n classNames,\n size = \"middle\",\n optionRender,\n onSearch,\n clearIcon,\n suffixIcon,\n placement = \"bottomLeft\",\n // showSelectionSummary: _showSelectionSummary = false,\n // selectionSummaryRender,\n showSelectAll = false,\n optionLabelRender,\n getOptionKeywords: _getOptionKeywords = (option: ComboboxOption<T, O>) => [\n String(option.value),\n reactNodeToString(option.label),\n ],\n popupMatchSelectWidth = true,\n addOnEnter = false,\n tokenSeparators,\n autoHighlight = true,\n filterOption,\n ...rest\n }: ComboboxProps<T, M, O>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) => {\n const [value, setValue] = useControlledState(\n controlledValue,\n onChange,\n defaultValue !== undefined ? defaultValue : multiple ? ([] as T[]) : undefined,\n );\n\n const [open, setOpen] = useControlledState(controlledOpen, onOpenChange, false);\n\n const cls = useCls();\n const inputContainerRef = useRef<HTMLDivElement>(null);\n\n // Get form context values\n const { status: contextStatus } = useContext(FormItemInputContext);\n const contextDisabled = useContext(DisabledContext);\n\n // Merge context values with props\n const mergedStatus = statusProp || contextStatus;\n const disabled = disabledProp || contextDisabled;\n\n const handleValueChange = useCallback(\n (newValue: M extends true ? T[] : T) => {\n setValue(newValue);\n onChange?.(newValue);\n },\n [setValue, onChange],\n );\n\n const handleSelectAll = useCallback(() => {\n if (multiple) {\n const allValues = options.map((option) => option.value);\n (handleValueChange as (v: T[]) => void)(allValues);\n }\n }, [multiple, options, handleValueChange]);\n\n const handleDeselectAll = useCallback(() => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)([]);\n }\n }, [multiple, handleValueChange]);\n\n const handleClear = useCallback(() => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)([]);\n } else {\n (handleValueChange as (v: T) => void)(undefined as T);\n }\n }, [multiple, handleValueChange]);\n\n // Prepare selected values\n const selectedValues = useMemo(() => {\n return Array.isArray(value) ? value : value ? [value] : [];\n }, [value]);\n\n // Build a Map for O(1) option lookups.\n // `options.find()` was being called 7+ times per render and inside\n // the hot `filter` path on every keystroke.\n const optionMap = useMemo(() => {\n const map = new Map<T, ComboboxOption<T, O>>();\n for (const opt of options) {\n map.set(opt.value, opt);\n }\n return map;\n }, [options]);\n\n // Select all option logic\n const selectAllOption = useMemo(() => {\n if (!showSelectAll || !multiple || options.length === 0) {\n return null;\n }\n\n const selectedFromFiltered = selectedValues.filter((val) => optionMap.has(val as T));\n const checked = selectedFromFiltered.length === options.length && options.length > 0;\n const indeterminate =\n selectedFromFiltered.length > 0 && selectedFromFiltered.length < options.length;\n\n return {\n checked,\n indeterminate,\n onToggle: () => {\n if (indeterminate || checked) {\n handleDeselectAll();\n } else {\n handleSelectAll();\n }\n },\n };\n }, [showSelectAll, multiple, options, optionMap, selectedValues, handleDeselectAll, handleSelectAll]);\n\n // Convert options to Base UI format\n const baseUIItems = useMemo(() => options.map((opt) => opt.value), [options]);\n\n // Get display value for SelectTrigger\n const displayValue = useMemo(() => {\n if (multiple) {\n return selectedValues.length > 0\n ? `${selectedValues.length} item${selectedValues.length === 1 ? \"\" : \"s\"} selected`\n : null;\n } else {\n const selectedOption = optionMap.get(selectedValues[0] as T);\n return selectedOption?.label || null;\n }\n }, [multiple, selectedValues, optionMap]);\n\n const inputClassName = clsx(\n cls(\"combobox-input\"),\n cls(`combobox-input-${size}`),\n mergedStatus && cls(`combobox-input-${mergedStatus}`),\n classNames?.input,\n );\n\n const itemToStringLabel = useCallback(\n (itemValue: T) => {\n const option = optionMap.get(itemValue);\n return reactNodeToString(option?.label || String(itemValue));\n },\n [optionMap],\n );\n\n const [searchValue, setSearchValue] = useState(\"\");\n\n const findOptionByInput = useCallback(\n (input: string): ComboboxOption<T, O> | undefined => {\n const trimmed = input.trim();\n if (!trimmed) return undefined;\n const lowerTrimmed = trimmed.toLowerCase();\n\n // Fast path: exact match by value (O(1))\n for (const [val, opt] of optionMap) {\n if (String(val).toLowerCase() === lowerTrimmed) {\n return opt;\n }\n }\n // Fallback: match by label\n for (const opt of optionMap.values()) {\n if (reactNodeToString(opt.label).toLowerCase() === lowerTrimmed) {\n return opt;\n }\n }\n return undefined;\n },\n [optionMap],\n );\n\n const handleAddOnEnter = useCallback(\n (input: string): boolean => {\n if (!addOnEnter || !input.trim()) return false;\n\n const tokens =\n multiple && tokenSeparators && tokenSeparators.length > 0\n ? splitBySeparators(input, tokenSeparators)\n : [input.trim()];\n\n const matchedValues: T[] = [];\n for (const token of tokens) {\n const option = findOptionByInput(token);\n if (option && !option.disabled) {\n matchedValues.push(option.value);\n }\n }\n\n if (matchedValues.length === 0) return false;\n\n if (multiple) {\n const current = Array.isArray(value) ? [...value] : [];\n const newValues = [...new Set([...current, ...matchedValues])];\n (handleValueChange as (v: T[]) => void)(newValues);\n } else {\n (handleValueChange as (v: T) => void)(matchedValues[0]);\n setOpen(false);\n }\n\n return true;\n },\n [\n addOnEnter,\n multiple,\n tokenSeparators,\n findOptionByInput,\n value,\n handleValueChange,\n setOpen,\n ],\n );\n\n const hasSeparator = useMemo(() => {\n if (!tokenSeparators || tokenSeparators.length === 0) return false;\n return tokenSeparators.some((sep) => searchValue.includes(sep));\n }, [searchValue, tokenSeparators]);\n\n const effectiveAutoHighlight = multiple ? autoHighlight && !hasSeparator : autoHighlight;\n\n const createInputKeyDownHandler = useCallback(\n (currentSearchValue: string) => (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" && addOnEnter && currentSearchValue) {\n // In single-select mode with autoHighlight, let Base UI handle Enter\n // to select the natively highlighted item instead of exact matching.\n if (!multiple && autoHighlight) return;\n\n const matched = handleAddOnEnter(currentSearchValue);\n if (matched) {\n event.preventDefault();\n setSearchValue(\"\");\n onSearch?.(\"\");\n }\n }\n },\n [addOnEnter, autoHighlight, multiple, handleAddOnEnter, onSearch],\n );\n\n const mergedFilter = useMemo(() => {\n if (filterOption === false) {\n return null;\n }\n\n if (typeof filterOption === \"function\") {\n return (itemValue: T, query: string) => {\n const option = optionMap.get(itemValue);\n return filterOption(query, option);\n };\n }\n\n return (itemValue: T, query: string) => {\n if (!query) return true;\n const option = optionMap.get(itemValue);\n if (!option) return false;\n\n const tokens =\n tokenSeparators && tokenSeparators.length > 0\n ? splitBySeparators(query, tokenSeparators)\n : [query];\n\n const keywords = _getOptionKeywords(option).map((k) => k.toLowerCase());\n\n return tokens.some((token) => {\n const lowerToken = token.toLowerCase();\n return keywords.some((keyword) => keyword.includes(lowerToken));\n });\n };\n }, [filterOption, optionMap, tokenSeparators, _getOptionKeywords]);\n\n return (\n <div ref={ref} className={clsx(cls(\"combobox\"), className)} {...rest}>\n <BaseCombobox.Root<T, M>\n value={\n (multiple ? selectedValues : (selectedValues[0] ?? null)) as M extends true\n ? T[]\n : T | null\n }\n onValueChange={(newValue) => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)(\n Array.isArray(newValue) ? (newValue as T[]) : [],\n );\n } else {\n (handleValueChange as (v: T) => void)(newValue as T);\n }\n }}\n inputValue={searchValue}\n onInputValueChange={(val: string) => {\n setSearchValue(val);\n onSearch?.(val);\n }}\n open={open}\n onOpenChange={setOpen}\n multiple={multiple}\n disabled={disabled}\n autoHighlight={effectiveAutoHighlight}\n items={baseUIItems}\n itemToStringLabel={itemToStringLabel}\n filter={mergedFilter}\n >\n {/* Single Selection Layout using SelectTrigger compound components */}\n {!multiple ? (\n <SelectTrigger.Root\n ref={inputContainerRef}\n as=\"div\"\n size={size}\n disabled={disabled}\n open={open}\n status={mergedStatus}\n placeholder={placeholder}\n displayValue={displayValue}\n allowClear={allowClear}\n suffixIcon={suffixIcon}\n clearIcon={clearIcon}\n onClear={handleClear}\n onOpenChange={setOpen}\n className={clsx(classNames?.trigger, cls(\"combobox-trigger-single\"))}\n >\n <SelectTrigger.Content\n contentRender={({ className, children, ...rest }) => (\n <BaseCombobox.Input\n placeholder={placeholder}\n className={clsx(className, inputClassName)}\n disabled={disabled}\n onKeyDown={createInputKeyDownHandler(searchValue)}\n {...rest}\n />\n )}\n />\n <SelectTrigger.Clear\n render={(props) => <BaseCombobox.Clear {...props}></BaseCombobox.Clear>}\n />\n <SelectTrigger.Arrow\n render={(props, { icon }) => (\n <BaseCombobox.Trigger {...props}>\n <BaseCombobox.Icon>{icon}</BaseCombobox.Icon>\n </BaseCombobox.Trigger>\n )}\n />\n </SelectTrigger.Root>\n ) : (\n /* Multiple Selection Layout using SelectTrigger compound components */\n <SelectTrigger.Root\n ref={inputContainerRef}\n size={size}\n disabled={disabled}\n open={open}\n status={mergedStatus}\n placeholder={placeholder}\n displayValue={displayValue}\n allowClear={allowClear}\n suffixIcon={suffixIcon}\n clearIcon={clearIcon}\n onClear={handleClear}\n onOpenChange={setOpen}\n className={clsx(classNames?.trigger, cls(\"combobox-trigger-multiple\"))}\n as=\"div\"\n >\n <SelectTrigger.Content\n contentRender={({ className, children, ...rest }) => (\n <BaseCombobox.Chips className={clsx(cls(\"combobox-chips\"), className)} {...rest}>\n <BaseCombobox.Value>\n {(selectedItems) => (\n <>\n {selectedItems.map((item: T) => {\n const option = optionMap.get(item);\n return (\n <BaseCombobox.Chip key={item} className={clsx(cls(\"combobox-chip\"))}>\n {option?.icon && (\n <span className={clsx(cls(\"combobox-chip-icon\"))}>\n {option.icon}\n </span>\n )}\n <span className={clsx(cls(\"combobox-chip-text\"))}>\n {option\n ? optionLabelRender\n ? optionLabelRender(option)\n : option.label\n : item}\n </span>\n <BaseCombobox.ChipRemove\n className={clsx(cls(\"combobox-chip-remove\"))}\n >\n <XIcon />\n </BaseCombobox.ChipRemove>\n </BaseCombobox.Chip>\n );\n })}\n\n <BaseCombobox.Input\n placeholder={selectedItems.length > 0 ? \"\" : placeholder}\n className={inputClassName}\n disabled={disabled}\n onKeyDown={createInputKeyDownHandler(searchValue)}\n />\n </>\n )}\n </BaseCombobox.Value>\n </BaseCombobox.Chips>\n )}\n />\n <SelectTrigger.Clear\n render={(props) => <BaseCombobox.Clear {...props}></BaseCombobox.Clear>}\n />\n <SelectTrigger.Arrow\n render={(props, { icon }) => (\n <BaseCombobox.Trigger {...props}>\n <BaseCombobox.Icon>{icon}</BaseCombobox.Icon>\n </BaseCombobox.Trigger>\n )}\n />\n </SelectTrigger.Root>\n )}\n\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner\n anchor={inputContainerRef.current}\n sideOffset={4}\n side={placement.startsWith(\"top\") ? \"top\" : \"bottom\"}\n align={\n placement.endsWith(\"Right\")\n ? \"end\"\n : placement === \"top\" || placement === \"bottom\"\n ? \"center\"\n : \"start\"\n }\n render={positionerRender}\n >\n <BaseCombobox.Popup\n className={clsx(\n cls(\"combobox-popup\"),\n !popupMatchSelectWidth && cls(\"combobox-popup--auto-width\"),\n classNames?.portal,\n )}\n render={popupRender}\n >\n {/* Select All Option */}\n {selectAllOption && (\n <>\n <BaseMenuItem\n as=\"button\"\n type=\"button\"\n className={clsx(cls(\"combobox-select-all\"))}\n selected={selectAllOption.checked}\n onClick={selectAllOption.onToggle}\n indeterminate={selectAllOption.indeterminate}\n showCheckbox\n >\n Select All\n </BaseMenuItem>\n <BaseCombobox.Separator render={separatorRender} />\n </>\n )}\n <BaseCombobox.List\n className={clsx(cls(\"combobox-list\"), classNames?.list)}\n render={listRender}\n >\n {(item: T) => {\n const option = optionMap.get(item);\n if (!option) return null;\n const isSelected = (selectedValues as T[]).includes(item);\n return optionRender ? (\n optionRender(option, {})\n ) : (\n <BaseMenuItem\n key={option.value}\n disabled={option.disabled}\n selected={isSelected}\n showCheckbox={multiple}\n icon={option.icon}\n classNames={{\n root: clsx(classNames?.option),\n icon: classNames?.optionIcon,\n text: classNames?.optionText,\n }}\n labelRender={\n optionLabelRender\n ? (props: React.HTMLAttributes<HTMLElement>) =>\n optionLabelRender(option, props)\n : undefined\n }\n render={(props: React.HTMLAttributes<HTMLElement>) => (\n <BaseCombobox.Item\n value={item as T}\n disabled={option.disabled}\n {...props}\n data-disabled={option.disabled}\n data-selected={isSelected}\n />\n )}\n >\n {option.label}\n </BaseMenuItem>\n );\n }}\n </BaseCombobox.List>\n\n <BaseCombobox.Empty className={clsx(cls(\"combobox-empty\"))}>\n <Empty description=\"No options found\" />\n </BaseCombobox.Empty>\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n </BaseCombobox.Root>\n </div>\n );\n};\n\nconst MainCombobox = forwardRef(ComboboxInner) as <\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {},\n>(\n props: ComboboxProps<T, M, O> & { ref?: ForwardedRef<HTMLDivElement> },\n) => ReturnType<typeof ComboboxInner>;\n\nexport const Combobox = Object.assign(MainCombobox, {\n // Add any sub components here if needed\n});\n\nexport default Combobox;\n"],"names":["positionerRender","props","jsx","BaseMenu","popupRender","separatorRender","listRender","ComboboxInner","options","controlledValue","defaultValue","onChange","placeholder","disabledProp","statusProp","allowClear","multiple","_showSearch","controlledOpen","onOpenChange","className","classNames","size","optionRender","onSearch","clearIcon","suffixIcon","placement","showSelectAll","optionLabelRender","_getOptionKeywords","option","reactNodeToString","popupMatchSelectWidth","addOnEnter","tokenSeparators","autoHighlight","filterOption","rest","ref","value","setValue","useControlledState","open","setOpen","cls","useCls","inputContainerRef","useRef","contextStatus","useContext","FormItemInputContext","contextDisabled","DisabledContext","mergedStatus","disabled","handleValueChange","useCallback","newValue","handleSelectAll","allValues","handleDeselectAll","handleClear","selectedValues","useMemo","optionMap","map","opt","selectAllOption","selectedFromFiltered","val","checked","indeterminate","baseUIItems","displayValue","inputClassName","clsx","itemToStringLabel","itemValue","searchValue","setSearchValue","useState","findOptionByInput","input","trimmed","lowerTrimmed","handleAddOnEnter","tokens","splitBySeparators","matchedValues","token","current","newValues","hasSeparator","sep","effectiveAutoHighlight","createInputKeyDownHandler","currentSearchValue","event","mergedFilter","query","keywords","k","lowerToken","keyword","jsxs","BaseCombobox","SelectTrigger","children","selectedItems","Fragment","item","XIcon","icon","BaseMenuItem","isSelected","Empty","MainCombobox","forwardRef","Combobox"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer components{.ds-combobox{position:relative;display:inline-block;width:100%}.ds-combobox-popup{width:var(--anchor-width)}.ds-combobox-input{flex:1;border:none;outline:none;background:transparent;color:
|
|
1
|
+
@layer components{.ds-combobox{position:relative;display:inline-block;width:100%}.ds-combobox-popup{width:var(--anchor-width)}.ds-combobox-popup--auto-width{width:max-content;min-width:var(--anchor-width);max-width:var(--available-width)}.ds-combobox-input{flex:1;border:none;outline:none;background:transparent;color:var(--ds-color-text);min-width:0}.ds-combobox-input::placeholder{color:var(--ds-color-text-placeholder)}.ds-combobox-divider{border:none;border-bottom:1px solid var(--ds-color-split);margin:.25rem 0}.ds-combobox-chip{display:inline-flex;align-items:center;gap:.25rem;background:var(--ds-color-fill-secondary);border-radius:var(--ds-border-radius-sm);padding:.25rem .5rem;font-size:var(--ds-font-size);color:var(--ds-color-text);max-width:100%;min-width:0;height:var(--ds-control-line-height)}.ds-combobox-chip-icon{display:flex;align-items:center;flex-shrink:0;font-size:.75rem}.ds-combobox-chip-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ds-combobox-chip-remove{display:flex;align-items:center;justify-content:center;padding:.125rem;border-radius:var(--ds-border-radius-lg);cursor:pointer;color:var(--ds-color-text-secondary);transition:all .2s var(--ds-motion-ease-out);background:none;border:none;font-size:.875rem;line-height:1}.ds-combobox-chip-remove:hover{background:var(--ds-control-item-bg-hover);color:var(--ds-color-text)}.ds-combobox-chips-container .ds-combobox-input{flex:1;min-width:120px;border:none;background:transparent;padding:.25rem 0;margin:0}.ds-combobox-chips{display:flex;flex-wrap:wrap;gap:.375rem}.ds-select-trigger-small .ds-combobox-chips{gap:.25rem}.ds-combobox-trigger-multiple.ds-select-trigger-has-value .ds-select-trigger-content{padding-left:.5rem}.ds-combobox[data-disabled=true] .ds-combobox-chip{background-color:var(--ds-color-bg-disabled);color:var(--ds-color-text-disabled)}.ds-combobox[data-disabled=true] .ds-combobox-chip-remove{cursor:not-allowed;color:var(--ds-color-text-disabled)}.ds-combobox-empty{padding:1rem}.ds-combobox-empty:empty{display:none}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAM/E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/components/combobox/utils.ts"],"sourcesContent":["export function splitBySeparators(input: string, separators: string[]): string[] {\n let result: string[] = [input];\n for (const sep of separators) {\n result = result.flatMap((part) => part.split(sep));\n }\n return result.map((t) => t.trim()).filter(Boolean);\n}\n"],"names":["splitBySeparators","input","separators","result","sep","part","t"],"mappings":"AAAO,SAASA,EAAkBC,GAAeC,GAAgC;AAC/E,MAAIC,IAAmB,CAACF,CAAK;AAC7B,aAAWG,KAAOF;AAChB,IAAAC,IAASA,EAAO,QAAQ,CAACE,MAASA,EAAK,MAAMD,CAAG,CAAC;AAEnD,SAAOD,EAAO,IAAI,CAACG,MAAMA,EAAE,KAAA,CAAM,EAAE,OAAO,OAAO;AACnD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer components{.ds-command-palette-overlay{background-color:var(--ds-color-bg-mask);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);position:fixed;inset:0;z-index:var(--ds-z-index-modal-mask)}.ds-command-palette-content{position:fixed;top:20%;left:50%;transform:translate(-50%);width:90%;max-width:640px;max-height:60vh;background:var(--ds-color-bg-elevated);border:1px solid var(--ds-color-border);border-radius:var(--ds-border-radius-lg);box-shadow:0 10px 38px -10px #16171859,0 10px 20px -15px #16171833;overflow:hidden;z-index:var(--ds-z-index-modal);animation:commandPaletteIn var(--ds-motion-duration-fast) var(--ds-motion-ease-out)}.ds-command-palette-content:focus:not(:focus-visible){outline:none}.ds-command-palette{display:flex;flex-direction:column;height:100%}.ds-command-palette-search-wrapper{border-bottom:1px solid var(--ds-color-border)}.ds-command-palette-search{border:none!important;border-radius:0!important;box-shadow:none!important}.ds-command-palette-search:focus,.ds-command-palette-search:focus-within{border:none!important;box-shadow:none!important}.ds-command-palette-list{padding:.5rem}.ds-command-palette-empty{display:flex;align-items:center;justify-content:center;height:5rem}@keyframes commandPaletteIn{0%{opacity:0;transform:translate(-50%) scale(.95) translateY(-10px)}to{opacity:1;transform:translate(-50%) scale(1) translateY(0)}}@media(prefers-color-scheme:dark){.ds-command-palette-overlay{background-color:var(--ds-color-bg-mask)}}@media(max-width:640px){.ds-command-palette-content{top:10%;width:95%;max-height:70vh}}}
|
|
1
|
+
@layer components{.ds-command-palette-overlay{background-color:var(--ds-color-bg-mask);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);position:fixed;inset:0;z-index:var(--ds-z-index-modal-mask)}.ds-command-palette-content{position:fixed;top:20%;left:50%;transform:translate(-50%);width:90%;max-width:640px;max-height:60vh;background:var(--ds-color-bg-elevated);border:1px solid var(--ds-color-border);border-radius:var(--ds-border-radius-lg);box-shadow:0 10px 38px -10px #16171859,0 10px 20px -15px #16171833;overflow:hidden;z-index:var(--ds-z-index-modal);animation:commandPaletteIn var(--ds-motion-duration-fast) var(--ds-motion-ease-out)}.ds-command-palette-content:focus:not(:focus-visible){outline:none}.ds-command-palette{display:flex;flex-direction:column;height:100%}.ds-command-palette-search-wrapper{border-bottom:1px solid var(--ds-color-border)}.ds-command-palette-search{border:none!important;border-radius:0!important;box-shadow:none!important}.ds-command-palette-search:focus,.ds-command-palette-search:focus-within{border:none!important;box-shadow:none!important}.ds-command-palette-list{padding:.5rem}.ds-command-palette-empty{display:flex;align-items:center;justify-content:center;height:5rem}.ds-command-palette-empty:empty{display:none}@keyframes commandPaletteIn{0%{opacity:0;transform:translate(-50%) scale(.95) translateY(-10px)}to{opacity:1;transform:translate(-50%) scale(1) translateY(0)}}@media(prefers-color-scheme:dark){.ds-command-palette-overlay{background-color:var(--ds-color-bg-mask)}}@media(max-width:640px){.ds-command-palette-content{top:10%;width:95%;max-height:70vh}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer components{.ds-table-wrapper.ds-data-table{display:flex;flex-direction:column;max-height:100%;background-color:var(--ds-color-bg-container);border-radius:8px;border:1px solid var(--ds-color-split)}.ds-table-wrapper.ds-data-table .ds-spin-nested-loading,.ds-table-wrapper.ds-data-table .ds-spin-container{display:flex;flex-direction:column;flex-shrink:1;flex-grow:1;min-height:0}.ds-table-wrapper.ds-data-table .ds-spin-container .ds-table{flex-shrink:1;flex-grow:1;min-height:0}.ds-table-wrapper.ds-data-table .ds-table{display:flex;flex-direction:column}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:first-child{border-top-left-radius:7px}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:last-child{border-top-right-radius:7px}.ds-table-wrapper.ds-data-table .ds-table-container{flex-shrink:1;min-height:0;display:flex;flex-direction:column;position:relative;overflow:auto;border-radius:7px}.ds-table-wrapper.ds-data-table.ds-table-has-pagination .ds-table-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ds-table-wrapper.ds-data-table.ds-table-has-pagination .ds-table{border:none;border-bottom:none;border-radius:0}.ds-table-wrapper.ds-data-table.ds-table-has-pagination tr.ds-table-row:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.ds-table-wrapper.ds-data-table.ds-table-has-pagination tr.ds-table-row:last-child td.ds-table-cell:first-child{border-bottom-left-radius:0}.ds-table-wrapper.ds-data-table.ds-table-has-pagination tr.ds-table-row:last-child td.ds-table-cell:last-child{border-bottom-right-radius:0}.ds-table-wrapper.ds-data-table .ds-table-header{flex-shrink:0}.ds-table-wrapper.ds-data-table .ds-table-body{flex-shrink:1;min-height:0;min-width:0}.ds-table-wrapper.ds-data-table .ds-table-content{flex-grow:0;flex-shrink:1;min-height:0;display:flex}.ds-table-wrapper.ds-data-table .ds-table-content table{width:100%;border-collapse:collapse;flex-grow:0;flex-shrink:1;min-height:0}.ds-table-wrapper.ds-data-table .ds-table-thead{background-color:var(--ds-color-bg-container);position:sticky;top:0;z-index:1;border-top-left-radius:6px;border-top-right-radius:6px}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell{text-align:left;font-weight:500;color:var(--ds-color-text-secondary);background-color:var(--ds-color-fill-alter);border-bottom:none;line-height:20px;position:relative}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:hover{background-color:var(--color-ds-color-fill-quaternary)}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:var(--ds-color-split)}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:not(:last-child):after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:20px;width:1px;background-color:var(--ds-color-split)}.ds-table-wrapper.ds-data-table.ds-table-scroll-vertical .ds-table,.ds-table-wrapper.ds-data-table.ds-table-scroll-vertical .ds-table-container,.ds-table-wrapper.ds-data-table.ds-table-scroll-vertical .ds-table-thead{border-top-right-radius:0}.ds-table-wrapper.ds-data-table.ds-table-scroll-vertical .ds-table-thead th.ds-table-cell:last-child{border-top-right-radius:0}.ds-table-wrapper.ds-data-table.ds-table-small .ds-table-thead th.ds-table-cell{padding:8px 16px;font-size:var(--ds-font-size-body-small, 12px)}.ds-table-wrapper.ds-data-table.ds-table-middle .ds-table-thead th.ds-table-cell{padding:12px 16px}.ds-table-wrapper.ds-data-table.ds-table-large .ds-table-thead th.ds-table-cell{padding:16px}.ds-table-wrapper.ds-data-table .ds-table-tbody{background-color:var(--ds-color-bg-container)}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row{border-bottom:1px solid var(--ds-color-split);transition:background-color .2s ease}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row:hover{background-color:var(--ds-color-fill-tertiary)}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row:last-child{border-bottom:0}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row.ds-table-row-selected{background-color:var(--ds-color-primary-bg)}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row td.ds-table-cell{text-align:left;background-color:inherit;color:var(--ds-color-text);background-color:transparent;line-height:20px}.ds-table-wrapper.ds-data-table.ds-table-small .ds-table-tbody tr.ds-table-row td.ds-table-cell{padding:8px 16px}.ds-table-wrapper.ds-data-table.ds-table-middle .ds-table-tbody tr.ds-table-row td.ds-table-cell{padding:12px 16px}.ds-table-wrapper.ds-data-table.ds-table-large .ds-table-tbody tr.ds-table-row td.ds-table-cell{padding:16px}.ds-table-wrapper.ds-data-table.ds-table-small .ds-table-selection-column,.ds-table-wrapper.ds-data-table.ds-table-middle .ds-table-selection-column,.ds-table-wrapper.ds-data-table.ds-table-large .ds-table-selection-column{padding-left:8px!important;padding-right:8px!important}.ds-table-wrapper.ds-data-table.ds-table-small .ds-table-selection-column.ds-table-cell,.ds-table-wrapper.ds-data-table.ds-table-middle .ds-table-selection-column.ds-table-cell,.ds-table-wrapper.ds-data-table.ds-table-large .ds-table-selection-column.ds-table-cell{padding-top:inherit;padding-bottom:inherit}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row[data-selectable=true]{cursor:pointer}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row[data-selectable=true]:hover{background-color:var(--ds-color-fill-secondary)!important}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row.ds-table-row-selected[data-selectable=true]:hover{background-color:var( --ds-color-primary-bg-hover, rgba(24, 144, 255, .1) )!important}.ds-table-wrapper.ds-data-table .ds-table-tbody tr td:has(.ds-empty){padding:1.5rem}.ds-table-wrapper.ds-data-table .ds-table-column-sort-icon{display:flex;flex-direction:column;align-items:center;width:16px;min-width:16px}.ds-table-wrapper.ds-data-table .ds-table-column-sort-icon svg{color:var(--ds-color-text-disabled);width:1rem;height:1rem}.ds-table-wrapper.ds-data-table .ds-table-column-sort-icon svg:hover{color:var(--ds-color-text-secondary)}.ds-table-wrapper.ds-data-table .ds-table-column-sort-icon.ds-table-column-sort-icon-asc svg,.ds-table-wrapper.ds-data-table .ds-table-column-sort-icon.ds-table-column-sort-icon-desc svg{color:var(--ds-color-primary)}.ds-table-wrapper.ds-data-table .ds-table-column-filter-icon{display:flex;align-items:center;justify-content:center;width:12px;min-width:12px}.ds-table-wrapper.ds-data-table .ds-table-column-filter-icon svg{color:var(--ds-color-text-disabled);width:10px;height:10px}.ds-table-wrapper.ds-data-table .ds-table-column-filter-icon svg:hover{color:var(--ds-color-text-secondary)}.ds-table-wrapper.ds-data-table .ds-table-column-filter-icon.ds-table-column-filter-icon-active svg{color:var(--ds-color-primary)}.ds-table-wrapper.ds-data-table .ds-table-column-sorters{display:flex;align-items:center;gap:4px;cursor:pointer}.ds-table-wrapper.ds-data-table .ds-table-column-title{flex:1}.ds-table-wrapper.ds-data-table .ds-table-column-icons{display:flex;align-items:center;gap:4px;min-width:16px;flex-shrink:0}.ds-table-wrapper.ds-data-table .ds-table-column-has-sorters{cursor:pointer}.ds-table-wrapper.ds-data-table .ds-table-column-has-sorters:hover{background-color:var(--ds-color-bg-container)}.ds-table-wrapper.ds-data-table.ds-table-zebra{border:none}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-pagination{background-color:transparent;border-top:none;border-radius:0}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-thead{background-color:transparent}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-thead th.ds-table-cell{background-color:transparent;border-bottom:none}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-thead th.ds-table-cell:hover{background-color:var(--ds-color-bg-container)}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-thead th.ds-table-cell:not(:last-child):after{display:block}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row{border-bottom:none}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row:nth-child(2n){background-color:var(--ds-color-fill-tertiary)}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row:nth-child(2n) td.ds-table-cell{background:transparent!important}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row:hover{background-color:var(--ds-color-fill-secondary)!important}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row:hover td.ds-table-cell{background-color:transparent!important}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row.ds-table-row-selected,.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row.ds-table-row-selected td.ds-table-cell{background-color:var(--ds-color-primary-bg)!important}.ds-table-wrapper.ds-data-table .ds-table-pagination{padding:16px;border-top:1px solid var(--ds-color-split);background-color:transparent;display:flex;justify-content:flex-end;border-bottom-left-radius:6px;border-bottom-right-radius:6px}.ds-table-wrapper.ds-data-table .ds-table-pagination.ds-table-pagination-right{justify-content:flex-end}.ds-table-wrapper.ds-data-table .ds-table-pagination .ant-pagination{margin:0}.ds-table-wrapper.ds-data-table .ds-table-measure-row{height:0!important;font-size:0!important}.ds-table-wrapper.ds-data-table .ds-table-measure-row td{padding:0!important;border:0!important;height:0!important}.ds-table-wrapper.ds-data-table .text-left{text-align:left!important}.ds-table-wrapper.ds-data-table .text-center{text-align:center!important}.ds-table-wrapper.ds-data-table .text-right{text-align:right!important}.ds-table-wrapper.ds-data-table .ds-table-selection-column{width:32px!important;min-width:48px!important;text-align:center!important;padding-left:8px!important;padding-right:8px!important}.ds-table-wrapper.ds-data-table .ds-table-selection-column .ant-checkbox-wrapper{margin:0}.ds-table-wrapper.ds-data-table .ds-table-selection-column:after{display:none!important}.ds-table-wrapper.ds-data-table .ds-table-resize-handle{position:absolute;top:0;bottom:0;width:4px;background:transparent;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none;border-radius:1px;z-index:50;opacity:0;transition:opacity .2s ease,background-color .2s ease}.ds-table-wrapper.ds-data-table .ds-table-resize-handle.ds-table-resize-ltr{right:-2px}.ds-table-wrapper.ds-data-table .ds-table-resize-handle.ds-table-resize-rtl{left:-2px}.ds-table-wrapper.ds-data-table .ds-table-resize-handle:hover,.ds-table-wrapper.ds-data-table .ds-table-resize-handle.ds-table-resize-handle-active{opacity:1;background-color:var(--ds-color-primary);box-shadow:0 0 0 1px var(--ds-color-primary-bg)}.ds-table-wrapper.ds-data-table .ds-table-resize-handle.ds-table-resize-handle-active{background-color:var(--ds-color-primary);opacity:1;z-index:999}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell{z-index:1}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:hover .ds-table-resize-handle{opacity:.6;background-color:var(--ds-color-text-tertiary)}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:hover{box-sizing:border-box}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:has(.ds-table-resize-handle-active){z-index:200}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:has(.ds-table-resize-handle-active) .ds-table-resize-handle-active{z-index:201}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell.ds-table-cell-resizing{z-index:200!important}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell.ds-table-cell-resizing .ds-table-resize-handle{z-index:999!important}.ds-table-wrapper.ds-data-table .ds-table-resize-indicator{position:absolute;top:0;bottom:0;width:2px;background-color:var(--ds-color-primary);pointer-events:none;z-index:999;opacity:1;transition:transform .1s ease}.ds-table-wrapper.ds-data-table:has(.ds-table-resize-handle-active){-webkit-user-select:none;user-select:none}.ds-table-wrapper.ds-data-table:has(.ds-table-resize-handle-active) *{-webkit-user-select:none;user-select:none}}
|
|
1
|
+
@layer components{.ds-table-wrapper.ds-data-table{display:flex;flex-direction:column;max-height:100%;background-color:var(--ds-color-bg-container);border-radius:8px;border:1px solid var(--ds-color-split)}.ds-table-wrapper.ds-data-table .ds-spin-nested-loading,.ds-table-wrapper.ds-data-table .ds-spin-container{display:flex;flex-direction:column;flex-shrink:1;flex-grow:1;min-height:0}.ds-table-wrapper.ds-data-table .ds-spin-container .ds-table{flex-shrink:1;flex-grow:1;min-height:0}.ds-table-wrapper.ds-data-table .ds-table{display:flex;flex-direction:column}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:first-child{border-top-left-radius:7px}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:last-child{border-top-right-radius:7px}.ds-table-wrapper.ds-data-table .ds-table-container{flex-shrink:1;min-height:0;display:flex;flex-direction:column;position:relative;overflow:auto;border-radius:7px}.ds-table-wrapper.ds-data-table.ds-table-has-pagination .ds-table-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ds-table-wrapper.ds-data-table.ds-table-has-pagination .ds-table{border:none;border-bottom:none;border-radius:0}.ds-table-wrapper.ds-data-table.ds-table-has-pagination tr.ds-table-row:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.ds-table-wrapper.ds-data-table.ds-table-has-pagination tr.ds-table-row:last-child td.ds-table-cell:first-child{border-bottom-left-radius:0}.ds-table-wrapper.ds-data-table.ds-table-has-pagination tr.ds-table-row:last-child td.ds-table-cell:last-child{border-bottom-right-radius:0}.ds-table-wrapper.ds-data-table .ds-table-header{flex-shrink:0}.ds-table-wrapper.ds-data-table .ds-table-body{flex-shrink:1;min-height:0;min-width:0}.ds-table-wrapper.ds-data-table .ds-table-content{flex-grow:0;flex-shrink:1;min-height:0;display:flex}.ds-table-wrapper.ds-data-table .ds-table-content table{width:100%;border-collapse:collapse;flex-grow:0;flex-shrink:1;min-height:0}.ds-table-wrapper.ds-data-table .ds-table-thead{background-color:var(--ds-color-bg-container);position:sticky;top:0;z-index:1;border-top-left-radius:6px;border-top-right-radius:6px}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell{text-align:left;font-weight:500;color:var(--ds-color-text-secondary);background-color:var(--ds-color-fill-alter);border-bottom:none;line-height:20px;position:relative}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:hover{background-color:var(--color-ds-color-fill-quaternary)}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:var(--ds-color-split)}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:not(:last-child):after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:20px;width:1px;background-color:var(--ds-color-split)}.ds-table-wrapper.ds-data-table.ds-table-scroll-vertical .ds-table,.ds-table-wrapper.ds-data-table.ds-table-scroll-vertical .ds-table-container,.ds-table-wrapper.ds-data-table.ds-table-scroll-vertical .ds-table-thead{border-top-right-radius:0}.ds-table-wrapper.ds-data-table.ds-table-scroll-vertical .ds-table-thead th.ds-table-cell:last-child{border-top-right-radius:0}.ds-table-wrapper.ds-data-table.ds-table-small .ds-table-thead th.ds-table-cell{padding:8px 16px;font-size:var(--ds-font-size-body-small, 12px)}.ds-table-wrapper.ds-data-table.ds-table-middle .ds-table-thead th.ds-table-cell{padding:12px 16px}.ds-table-wrapper.ds-data-table.ds-table-large .ds-table-thead th.ds-table-cell{padding:16px}.ds-table-wrapper.ds-data-table .ds-table-tbody{background-color:var(--ds-color-bg-container)}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row{border-bottom:1px solid var(--ds-color-split);transition:background-color .2s ease}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row:hover{background-color:var(--ds-color-fill-tertiary)}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row:last-child{border-bottom:0}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row.ds-table-row-selected{background-color:var(--ds-color-primary-bg)}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row td.ds-table-cell{text-align:left;background-color:inherit;color:var(--ds-color-text);background-color:transparent;line-height:20px}.ds-table-wrapper.ds-data-table.ds-table-small .ds-table-tbody tr.ds-table-row td.ds-table-cell{padding:8px 16px}.ds-table-wrapper.ds-data-table.ds-table-middle .ds-table-tbody tr.ds-table-row td.ds-table-cell{padding:12px 16px}.ds-table-wrapper.ds-data-table.ds-table-large .ds-table-tbody tr.ds-table-row td.ds-table-cell{padding:16px}.ds-table-wrapper.ds-data-table.ds-table-small .ds-table-selection-column,.ds-table-wrapper.ds-data-table.ds-table-middle .ds-table-selection-column,.ds-table-wrapper.ds-data-table.ds-table-large .ds-table-selection-column{padding-left:8px!important;padding-right:8px!important}.ds-table-wrapper.ds-data-table.ds-table-small .ds-table-selection-column.ds-table-cell,.ds-table-wrapper.ds-data-table.ds-table-middle .ds-table-selection-column.ds-table-cell,.ds-table-wrapper.ds-data-table.ds-table-large .ds-table-selection-column.ds-table-cell{padding-top:inherit;padding-bottom:inherit}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row[data-selectable=true]{cursor:pointer}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row[data-selectable=true]:hover{background-color:var(--ds-color-fill-secondary)!important}.ds-table-wrapper.ds-data-table .ds-table-tbody tr.ds-table-row.ds-table-row-selected[data-selectable=true]:hover{background-color:var(--ds-color-primary-bg-hover, rgba(24, 144, 255, .1))!important}.ds-table-wrapper.ds-data-table .ds-table-tbody tr td:has(.ds-empty){padding:1.5rem}.ds-table-wrapper.ds-data-table .ds-table-column-sort-icon{display:flex;flex-direction:column;align-items:center;width:16px;min-width:16px}.ds-table-wrapper.ds-data-table .ds-table-column-sort-icon svg{color:var(--ds-color-text-disabled);width:1rem;height:1rem}.ds-table-wrapper.ds-data-table .ds-table-column-sort-icon svg:hover{color:var(--ds-color-text-secondary)}.ds-table-wrapper.ds-data-table .ds-table-column-sort-icon.ds-table-column-sort-icon-asc svg,.ds-table-wrapper.ds-data-table .ds-table-column-sort-icon.ds-table-column-sort-icon-desc svg{color:var(--ds-color-primary)}.ds-table-wrapper.ds-data-table .ds-table-column-filter-icon{display:flex;align-items:center;justify-content:center;width:12px;min-width:12px}.ds-table-wrapper.ds-data-table .ds-table-column-filter-icon svg{color:var(--ds-color-text-disabled);width:10px;height:10px}.ds-table-wrapper.ds-data-table .ds-table-column-filter-icon svg:hover{color:var(--ds-color-text-secondary)}.ds-table-wrapper.ds-data-table .ds-table-column-filter-icon.ds-table-column-filter-icon-active svg{color:var(--ds-color-primary)}.ds-table-wrapper.ds-data-table .ds-table-column-sorters{display:flex;align-items:center;gap:4px;cursor:pointer}.ds-table-wrapper.ds-data-table .ds-table-column-title{flex:1}.ds-table-wrapper.ds-data-table .ds-table-column-icons{display:flex;align-items:center;gap:4px;min-width:16px;flex-shrink:0}.ds-table-wrapper.ds-data-table .ds-table-column-has-sorters{cursor:pointer}.ds-table-wrapper.ds-data-table .ds-table-column-has-sorters:hover{background-color:var(--ds-color-bg-container)}.ds-table-wrapper.ds-data-table.ds-table-zebra{border:none}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-pagination{background-color:transparent;border-top:none;border-radius:0}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-thead{background-color:transparent}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-thead th.ds-table-cell{background-color:transparent;border-bottom:none}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-thead th.ds-table-cell:before{display:none}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-thead th.ds-table-cell:hover{background-color:var(--ds-color-bg-container)}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-thead th.ds-table-cell:not(:last-child):after{display:block}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row{border-bottom:none}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row:nth-child(2n){background-color:var(--ds-color-fill-tertiary)}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row:nth-child(2n) td.ds-table-cell{background:transparent!important}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row:hover{background-color:var(--ds-color-fill-secondary)!important}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row:hover td.ds-table-cell{background-color:transparent!important}.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row.ds-table-row-selected,.ds-table-wrapper.ds-data-table.ds-table-zebra .ds-table-tbody tr.ds-table-row.ds-table-row-selected td.ds-table-cell{background-color:var(--ds-color-primary-bg)!important}.ds-table-wrapper.ds-data-table .ds-table-pagination{padding:16px;border-top:1px solid var(--ds-color-split);background-color:transparent;display:flex;justify-content:flex-end;border-bottom-left-radius:6px;border-bottom-right-radius:6px}.ds-table-wrapper.ds-data-table .ds-table-pagination.ds-table-pagination-right{justify-content:flex-end}.ds-table-wrapper.ds-data-table .ds-table-pagination .ant-pagination{margin:0}.ds-table-wrapper.ds-data-table .ds-table-measure-row{height:0!important;font-size:0!important}.ds-table-wrapper.ds-data-table .ds-table-measure-row td{padding:0!important;border:0!important;height:0!important}.ds-table-wrapper.ds-data-table .text-left{text-align:left!important}.ds-table-wrapper.ds-data-table .text-center{text-align:center!important}.ds-table-wrapper.ds-data-table .text-right{text-align:right!important}.ds-table-wrapper.ds-data-table .ds-table-selection-column{width:32px!important;min-width:48px!important;text-align:center!important;padding-left:8px!important;padding-right:8px!important}.ds-table-wrapper.ds-data-table .ds-table-selection-column .ant-checkbox-wrapper{margin:0}.ds-table-wrapper.ds-data-table .ds-table-selection-column:after{display:none!important}.ds-table-wrapper.ds-data-table .ds-table-resize-handle{position:absolute;top:0;bottom:0;width:4px;background:transparent;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none;border-radius:1px;z-index:50;opacity:0;transition:opacity .2s ease,background-color .2s ease}.ds-table-wrapper.ds-data-table .ds-table-resize-handle.ds-table-resize-ltr{right:-2px}.ds-table-wrapper.ds-data-table .ds-table-resize-handle.ds-table-resize-rtl{left:-2px}.ds-table-wrapper.ds-data-table .ds-table-resize-handle:hover,.ds-table-wrapper.ds-data-table .ds-table-resize-handle.ds-table-resize-handle-active{opacity:1;background-color:var(--ds-color-primary);box-shadow:0 0 0 1px var(--ds-color-primary-bg)}.ds-table-wrapper.ds-data-table .ds-table-resize-handle.ds-table-resize-handle-active{background-color:var(--ds-color-primary);opacity:1;z-index:999}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell{z-index:1}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:hover .ds-table-resize-handle{opacity:.6;background-color:var(--ds-color-text-tertiary)}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:hover{box-sizing:border-box}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:has(.ds-table-resize-handle-active){z-index:200}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell:has(.ds-table-resize-handle-active) .ds-table-resize-handle-active{z-index:201}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell.ds-table-cell-resizing{z-index:200!important}.ds-table-wrapper.ds-data-table .ds-table-thead th.ds-table-cell.ds-table-cell-resizing .ds-table-resize-handle{z-index:999!important}.ds-table-wrapper.ds-data-table .ds-table-resize-indicator{position:absolute;top:0;bottom:0;width:2px;background-color:var(--ds-color-primary);pointer-events:none;z-index:999;opacity:1;transition:transform .1s ease}.ds-table-wrapper.ds-data-table:has(.ds-table-resize-handle-active){-webkit-user-select:none;user-select:none}.ds-table-wrapper.ds-data-table:has(.ds-table-resize-handle-active) *{-webkit-user-select:none;user-select:none}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../src/components/dialog/Dialog.tsx"],"names":[],"mappings":"AAOA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQ/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../src/components/dialog/Dialog.tsx"],"names":[],"mappings":"AAOA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQ/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EASL,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAC5E,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AA2ChE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,iBAAiB,CAAC,EAAE,WAAW,CAAC;CACjC;AAED,eAAO,MAAM,MAAM,GAAI,ggBAyCpB,WAAW,4CA4Qb,CAAC"}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
import { jsx as e, jsxs as n } from "react/jsx-runtime";
|
|
3
3
|
import { Dialog as s } from "@base-ui/react/dialog";
|
|
4
4
|
import { useStableCallback as D } from "@base-ui/utils/useStableCallback";
|
|
5
|
-
import { XIcon as
|
|
6
|
-
import { getConfirmLocale as
|
|
5
|
+
import { XIcon as Le } from "@bioturing/assets";
|
|
6
|
+
import { getConfirmLocale as be } from "antd/es/modal/locale";
|
|
7
7
|
import { useLocale as Te } from "antd/es/locale";
|
|
8
|
-
import { useState as Ie, useRef as ye, useMemo as Se, useCallback as
|
|
8
|
+
import { useState as Ie, useRef as ye, useMemo as Se, useCallback as we, useEffect as xe } from "react";
|
|
9
9
|
import { Button as z } from "../button/component.js";
|
|
10
10
|
import { useControlledState as Fe } from "../hooks/useControlledState.js";
|
|
11
|
-
import { Stack as
|
|
12
|
-
import { DIALOG_SIZE_WIDTHS as
|
|
11
|
+
import { Stack as L } from "../stack/index.js";
|
|
12
|
+
import { DIALOG_SIZE_WIDTHS as b, DIALOG_CLOSE_REASON_ESCAPE as Ge, DIALOG_DEFAULT_CANCEL_TEXT as ke, DIALOG_DEFAULT_OK_TEXT as Re, DIALOG_DEFAULT_SIZE as Ue, DIALOG_DEFAULT_BODY_SCROLLABLE as ze, DIALOG_DEFAULT_CENTERED as He, DIALOG_DEFAULT_OPEN as $e } from "./constants.js";
|
|
13
13
|
import { useCls as Be } from "../utils/antdUtils.js";
|
|
14
14
|
import { useTheme as Me } from "../theme-provider/context/themeStore.js";
|
|
15
15
|
import { clsx as d } from "../utils/cn.js";
|
|
@@ -17,30 +17,30 @@ import { Truncate as We } from "../truncate/component.js";
|
|
|
17
17
|
import { IconButton as Xe } from "../icon-button/component.js";
|
|
18
18
|
import { Spin as je } from "../spin/component.js";
|
|
19
19
|
const Ke = parseInt(
|
|
20
|
-
|
|
20
|
+
b.medium,
|
|
21
21
|
10
|
|
22
22
|
);
|
|
23
|
-
function Ve(
|
|
24
|
-
if (!(typeof
|
|
25
|
-
return
|
|
23
|
+
function Ve(l) {
|
|
24
|
+
if (!(typeof l > "u"))
|
|
25
|
+
return l === !1 || l === 0 ? "0" : typeof l == "number" ? `${l}px` : l;
|
|
26
26
|
}
|
|
27
|
-
function Ze(
|
|
27
|
+
function Ze(l, u) {
|
|
28
28
|
if (u)
|
|
29
29
|
return u;
|
|
30
|
-
const f = parseInt(
|
|
30
|
+
const f = parseInt(b[l], 10);
|
|
31
31
|
return !Number.isNaN(f) && f <= Ke ? "elevated" : "container";
|
|
32
32
|
}
|
|
33
|
-
const
|
|
34
|
-
children:
|
|
33
|
+
const fr = ({
|
|
34
|
+
children: l,
|
|
35
35
|
open: u,
|
|
36
36
|
defaultOpen: f = $e,
|
|
37
37
|
onCancel: H,
|
|
38
38
|
onClose: $,
|
|
39
39
|
onOk: B,
|
|
40
40
|
title: i,
|
|
41
|
-
footer:
|
|
41
|
+
footer: g,
|
|
42
42
|
size: M,
|
|
43
|
-
loading:
|
|
43
|
+
loading: m = !1,
|
|
44
44
|
confirmLoading: c = !1,
|
|
45
45
|
hideOkButton: T = !1,
|
|
46
46
|
hideCancelButton: I = !1,
|
|
@@ -56,56 +56,56 @@ const mo = ({
|
|
|
56
56
|
type: Y = "default",
|
|
57
57
|
background: q,
|
|
58
58
|
bodyScrollable: J = ze,
|
|
59
|
-
closeIcon:
|
|
59
|
+
closeIcon: v,
|
|
60
60
|
closable: P = !0,
|
|
61
61
|
maskClosable: Q = !0,
|
|
62
62
|
keyboard: ee = !0,
|
|
63
|
-
width:
|
|
64
|
-
style:
|
|
65
|
-
destroyOnHidden:
|
|
66
|
-
afterOpenChange:
|
|
63
|
+
width: C,
|
|
64
|
+
style: w,
|
|
65
|
+
destroyOnHidden: re = !1,
|
|
66
|
+
afterOpenChange: oe,
|
|
67
67
|
className: le,
|
|
68
68
|
rootClassName: se,
|
|
69
69
|
headerClassName: ae,
|
|
70
70
|
bodyClassName: te,
|
|
71
71
|
footerClassName: ne,
|
|
72
|
-
okButtonProps:
|
|
72
|
+
okButtonProps: O,
|
|
73
73
|
cancelButtonProps: ie
|
|
74
74
|
}) => {
|
|
75
|
-
const
|
|
75
|
+
const r = Be(), { className: ce } = Me(), [de, A] = Fe(
|
|
76
76
|
u,
|
|
77
77
|
void 0,
|
|
78
78
|
f
|
|
79
|
-
), [
|
|
79
|
+
), [x] = Te("Modal", be()), [ue, fe] = Ie(!1), a = ye(null), p = M ?? (Y === "default" ? Ue : "xsmall"), F = p === "fullscreen", E = typeof g < "u", me = !E && !(T && I), G = P && v !== !1, k = Ze(p, q), pe = v === void 0 ? /* @__PURE__ */ e(Le, { size: 16, weight: "bold" }) : v, N = Ve(K), ge = W || x?.okText, _ = X || x?.cancelText, he = typeof _ == "string" ? _ : "Close", R = typeof C == "number" ? `${C}px` : C ?? b[p], ve = Se(
|
|
80
80
|
() => ({
|
|
81
81
|
"--ds-dialog-width": R,
|
|
82
82
|
"--ds-dialog-bg": `var(--ds-color-bg-${k})`,
|
|
83
83
|
...N ? {
|
|
84
84
|
"--ds-dialog-content-padding": N
|
|
85
85
|
} : {},
|
|
86
|
-
...
|
|
86
|
+
...w
|
|
87
87
|
}),
|
|
88
|
-
[k, N, R,
|
|
89
|
-
),
|
|
90
|
-
if (a.current && (a.current.disconnect(), a.current = null), !
|
|
88
|
+
[k, N, R, w]
|
|
89
|
+
), Ce = we((o) => {
|
|
90
|
+
if (a.current && (a.current.disconnect(), a.current = null), !o)
|
|
91
91
|
return;
|
|
92
92
|
const t = () => {
|
|
93
|
-
fe(
|
|
93
|
+
fe(o.scrollHeight > o.clientHeight);
|
|
94
94
|
}, U = new ResizeObserver(() => {
|
|
95
95
|
t();
|
|
96
96
|
});
|
|
97
|
-
U.observe(
|
|
97
|
+
U.observe(o), a.current = U, t();
|
|
98
98
|
}, []);
|
|
99
|
-
|
|
99
|
+
xe(() => () => {
|
|
100
100
|
a.current && (a.current.disconnect(), a.current = null);
|
|
101
101
|
}, []);
|
|
102
|
-
const
|
|
103
|
-
c || (A(!1), H?.(
|
|
104
|
-
}), Ae = D((
|
|
105
|
-
c || (A(!1), B?.(
|
|
102
|
+
const Oe = D((o) => {
|
|
103
|
+
c || (A(!1), H?.(o), $?.(o));
|
|
104
|
+
}), Ae = D((o) => {
|
|
105
|
+
c || (A(!1), B?.(o));
|
|
106
106
|
}), Ee = D(
|
|
107
|
-
(
|
|
108
|
-
if (
|
|
107
|
+
(o, t) => {
|
|
108
|
+
if (o) {
|
|
109
109
|
A(!0);
|
|
110
110
|
return;
|
|
111
111
|
}
|
|
@@ -117,57 +117,58 @@ const mo = ({
|
|
|
117
117
|
t.cancel();
|
|
118
118
|
return;
|
|
119
119
|
}
|
|
120
|
-
|
|
120
|
+
Oe(t.event);
|
|
121
121
|
}
|
|
122
|
-
), Ne = i || h || y || S || G, _e = E ?
|
|
122
|
+
), Ne = i || h || y || S || G, _e = E ? g !== null : me, De = V || ue || F;
|
|
123
123
|
return /* @__PURE__ */ e(
|
|
124
124
|
s.Root,
|
|
125
125
|
{
|
|
126
126
|
open: !!de,
|
|
127
127
|
onOpenChange: Ee,
|
|
128
|
-
onOpenChangeComplete:
|
|
128
|
+
onOpenChangeComplete: oe,
|
|
129
129
|
modal: !0,
|
|
130
130
|
disablePointerDismissal: !Q,
|
|
131
|
-
children: /* @__PURE__ */ n(s.Portal, { keepMounted: !
|
|
132
|
-
/* @__PURE__ */ e(s.Backdrop, { className:
|
|
131
|
+
children: /* @__PURE__ */ n(s.Portal, { keepMounted: !re, children: [
|
|
132
|
+
/* @__PURE__ */ e(s.Backdrop, { className: r("dialog-mask") }),
|
|
133
133
|
/* @__PURE__ */ e(
|
|
134
134
|
s.Viewport,
|
|
135
135
|
{
|
|
136
136
|
className: d(
|
|
137
137
|
ce,
|
|
138
138
|
se,
|
|
139
|
-
|
|
139
|
+
r(
|
|
140
140
|
"dialog-wrap",
|
|
141
141
|
Z ? "dialog-centered" : "dialog-top-aligned",
|
|
142
|
-
F && "dialog-wrap-fullscreen"
|
|
142
|
+
F && "dialog-wrap-fullscreen",
|
|
143
|
+
m && "dialog-loading"
|
|
143
144
|
)
|
|
144
145
|
),
|
|
145
146
|
children: /* @__PURE__ */ e(
|
|
146
147
|
s.Popup,
|
|
147
148
|
{
|
|
148
149
|
className: d(
|
|
149
|
-
|
|
150
|
+
r(
|
|
150
151
|
"dialog",
|
|
151
|
-
`dialog-size-${
|
|
152
|
+
`dialog-size-${p}`,
|
|
152
153
|
De && "dialog-fixed",
|
|
153
154
|
J === !1 && "dialog-no-body-scroll",
|
|
154
|
-
|
|
155
|
+
m && "dialog-loading"
|
|
155
156
|
),
|
|
156
157
|
le
|
|
157
158
|
),
|
|
158
|
-
style:
|
|
159
|
-
"aria-busy":
|
|
160
|
-
children: /* @__PURE__ */ n("div", { className:
|
|
161
|
-
Ne && /* @__PURE__ */ n("div", { className: d(
|
|
159
|
+
style: ve,
|
|
160
|
+
"aria-busy": m || void 0,
|
|
161
|
+
children: /* @__PURE__ */ n("div", { className: r("dialog-content"), children: [
|
|
162
|
+
Ne && /* @__PURE__ */ n("div", { className: d(r("dialog-header"), ae), children: [
|
|
162
163
|
/* @__PURE__ */ n(
|
|
163
|
-
|
|
164
|
+
L,
|
|
164
165
|
{
|
|
165
166
|
align: "center",
|
|
166
167
|
gap: 8,
|
|
167
|
-
className:
|
|
168
|
+
className: r("dialog-title-row"),
|
|
168
169
|
children: [
|
|
169
|
-
/* @__PURE__ */ e(
|
|
170
|
-
/* @__PURE__ */ n(
|
|
170
|
+
/* @__PURE__ */ e(L.Child, { grow: !0, children: i ? /* @__PURE__ */ e(s.Title, { className: r("dialog-title"), children: typeof i == "string" ? /* @__PURE__ */ e(We, { children: i }) : i }) : /* @__PURE__ */ e("div", {}) }),
|
|
171
|
+
/* @__PURE__ */ n(L.Child, { stack: !0, hug: !0, align: "center", gap: 8, children: [
|
|
171
172
|
y,
|
|
172
173
|
G && /* @__PURE__ */ e(
|
|
173
174
|
s.Close,
|
|
@@ -175,7 +176,7 @@ const mo = ({
|
|
|
175
176
|
render: /* @__PURE__ */ e(
|
|
176
177
|
Xe,
|
|
177
178
|
{
|
|
178
|
-
className:
|
|
179
|
+
className: r("dialog-close"),
|
|
179
180
|
"aria-label": he,
|
|
180
181
|
children: pe
|
|
181
182
|
}
|
|
@@ -187,17 +188,20 @@ const mo = ({
|
|
|
187
188
|
]
|
|
188
189
|
}
|
|
189
190
|
),
|
|
190
|
-
h ? /* @__PURE__ */ e("div", { className:
|
|
191
|
+
h ? /* @__PURE__ */ e("div", { className: r("dialog-header-after-title"), children: h }) : null
|
|
191
192
|
] }),
|
|
192
|
-
/* @__PURE__ */
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
193
|
+
/* @__PURE__ */ n("div", { className: r("dialog-body-wrapper"), children: [
|
|
194
|
+
/* @__PURE__ */ e(
|
|
195
|
+
"div",
|
|
196
|
+
{
|
|
197
|
+
ref: Ce,
|
|
198
|
+
className: d(r("dialog-body"), te),
|
|
199
|
+
children: l
|
|
200
|
+
}
|
|
201
|
+
),
|
|
202
|
+
m ? /* @__PURE__ */ e("div", { className: r("dialog-loading-overlay"), children: /* @__PURE__ */ e(je, {}) }) : null
|
|
203
|
+
] }),
|
|
204
|
+
_e && /* @__PURE__ */ e("div", { className: d(r("dialog-footer"), ne), children: E ? g : /* @__PURE__ */ n("div", { className: r("dialog-footer-actions"), children: [
|
|
201
205
|
!I && /* @__PURE__ */ e(
|
|
202
206
|
s.Close,
|
|
203
207
|
{
|
|
@@ -208,9 +212,9 @@ const mo = ({
|
|
|
208
212
|
z,
|
|
209
213
|
{
|
|
210
214
|
type: j,
|
|
211
|
-
...
|
|
212
|
-
disabled: c ||
|
|
213
|
-
loading: c ||
|
|
215
|
+
...O,
|
|
216
|
+
disabled: c || O?.disabled,
|
|
217
|
+
loading: c || O?.loading,
|
|
214
218
|
onClick: Ae,
|
|
215
219
|
children: ge
|
|
216
220
|
}
|
|
@@ -226,6 +230,6 @@ const mo = ({
|
|
|
226
230
|
);
|
|
227
231
|
};
|
|
228
232
|
export {
|
|
229
|
-
|
|
233
|
+
fr as Dialog
|
|
230
234
|
};
|
|
231
235
|
//# sourceMappingURL=Dialog.js.map
|