asterui 0.12.49 → 0.12.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Alert.js +18 -18
- package/dist/components/Alert.js.map +1 -1
- package/dist/components/Anchor.js +53 -53
- package/dist/components/Anchor.js.map +1 -1
- package/dist/components/Autocomplete.js +115 -114
- package/dist/components/Autocomplete.js.map +1 -1
- package/dist/components/Avatar.js +33 -32
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/Badge.js +99 -99
- package/dist/components/Badge.js.map +1 -1
- package/dist/components/Breadcrumb.js +12 -11
- package/dist/components/Breadcrumb.js.map +1 -1
- package/dist/components/Browser.js +10 -10
- package/dist/components/Browser.js.map +1 -1
- package/dist/components/Button.js +80 -79
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Card.d.ts +2 -0
- package/dist/components/Card.js +111 -110
- package/dist/components/Card.js.map +1 -1
- package/dist/components/Carousel.js +59 -59
- package/dist/components/Carousel.js.map +1 -1
- package/dist/components/Cascader.js +175 -174
- package/dist/components/Cascader.js.map +1 -1
- package/dist/components/Chat.js +27 -27
- package/dist/components/Chat.js.map +1 -1
- package/dist/components/Checkbox.js +98 -97
- package/dist/components/Checkbox.js.map +1 -1
- package/dist/components/Code.js +11 -11
- package/dist/components/Code.js.map +1 -1
- package/dist/components/Collapse.js +46 -46
- package/dist/components/Collapse.js.map +1 -1
- package/dist/components/ColorPicker.d.ts +1 -1
- package/dist/components/ColorPicker.js +93 -91
- package/dist/components/ColorPicker.js.map +1 -1
- package/dist/components/Command.js +120 -120
- package/dist/components/Command.js.map +1 -1
- package/dist/components/ConfigProvider.d.ts +1 -1
- package/dist/components/ConfigProvider.js +9 -9
- package/dist/components/ConfigProvider.js.map +1 -1
- package/dist/components/ContextMenu.js +33 -33
- package/dist/components/ContextMenu.js.map +1 -1
- package/dist/components/CopyButton.js +74 -73
- package/dist/components/CopyButton.js.map +1 -1
- package/dist/components/Countdown.js +60 -59
- package/dist/components/Countdown.js.map +1 -1
- package/dist/components/DatePicker.d.ts +1 -1
- package/dist/components/DatePicker.js +54 -53
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/Diff.js +10 -10
- package/dist/components/Diff.js.map +1 -1
- package/dist/components/Divider.js +21 -20
- package/dist/components/Divider.js.map +1 -1
- package/dist/components/Dock.js +28 -27
- package/dist/components/Dock.js.map +1 -1
- package/dist/components/Drawer.js +43 -43
- package/dist/components/Drawer.js.map +1 -1
- package/dist/components/Dropdown.js +127 -127
- package/dist/components/Dropdown.js.map +1 -1
- package/dist/components/Empty.js +16 -15
- package/dist/components/Empty.js.map +1 -1
- package/dist/components/Fieldset.js +11 -10
- package/dist/components/Fieldset.js.map +1 -1
- package/dist/components/FileInput.js +30 -29
- package/dist/components/FileInput.js.map +1 -1
- package/dist/components/Filter.d.ts +1 -1
- package/dist/components/Filter.js +32 -30
- package/dist/components/Filter.js.map +1 -1
- package/dist/components/FloatButton.js +83 -83
- package/dist/components/FloatButton.js.map +1 -1
- package/dist/components/Footer.js +14 -13
- package/dist/components/Footer.js.map +1 -1
- package/dist/components/Form.js +133 -132
- package/dist/components/Form.js.map +1 -1
- package/dist/components/Hero.js +12 -11
- package/dist/components/Hero.js.map +1 -1
- package/dist/components/HoverGallery.js +7 -7
- package/dist/components/HoverGallery.js.map +1 -1
- package/dist/components/Image.js +40 -40
- package/dist/components/Image.js.map +1 -1
- package/dist/components/Input.js +171 -169
- package/dist/components/Input.js.map +1 -1
- package/dist/components/InputNumber.js +84 -83
- package/dist/components/InputNumber.js.map +1 -1
- package/dist/components/Join.js +11 -10
- package/dist/components/Join.js.map +1 -1
- package/dist/components/Kbd.js +15 -15
- package/dist/components/Kbd.js.map +1 -1
- package/dist/components/Layout.js +66 -66
- package/dist/components/Layout.js.map +1 -1
- package/dist/components/List.d.ts +1 -1
- package/dist/components/List.js +75 -72
- package/dist/components/List.js.map +1 -1
- package/dist/components/Loading.d.ts +1 -1
- package/dist/components/Loading.js +31 -29
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/Mask.js +31 -31
- package/dist/components/Mask.js.map +1 -1
- package/dist/components/Mention.js +61 -61
- package/dist/components/Mention.js.map +1 -1
- package/dist/components/Menu.js +84 -84
- package/dist/components/Menu.js.map +1 -1
- package/dist/components/Message.js +30 -29
- package/dist/components/Message.js.map +1 -1
- package/dist/components/Modal.js +117 -116
- package/dist/components/Modal.js.map +1 -1
- package/dist/components/MonthCalendar.d.ts +31 -0
- package/dist/components/MonthCalendar.js +205 -0
- package/dist/components/MonthCalendar.js.map +1 -0
- package/dist/components/Navbar.js +25 -25
- package/dist/components/Navbar.js.map +1 -1
- package/dist/components/Notification.js +56 -55
- package/dist/components/Notification.js.map +1 -1
- package/dist/components/OTPInput.js +69 -68
- package/dist/components/OTPInput.js.map +1 -1
- package/dist/components/Pagination.d.ts +1 -1
- package/dist/components/Pagination.js +60 -58
- package/dist/components/Pagination.js.map +1 -1
- package/dist/components/Phone.js +10 -10
- package/dist/components/Phone.js.map +1 -1
- package/dist/components/Popconfirm.js +60 -60
- package/dist/components/Popconfirm.js.map +1 -1
- package/dist/components/Progress.js +17 -17
- package/dist/components/Progress.js.map +1 -1
- package/dist/components/QRCode.js +23 -23
- package/dist/components/QRCode.js.map +1 -1
- package/dist/components/RadialProgress.js +17 -17
- package/dist/components/RadialProgress.js.map +1 -1
- package/dist/components/Radio.js +41 -40
- package/dist/components/Radio.js.map +1 -1
- package/dist/components/Range.d.ts +1 -1
- package/dist/components/Range.js +39 -37
- package/dist/components/Range.js.map +1 -1
- package/dist/components/Rating.js +79 -78
- package/dist/components/Rating.js.map +1 -1
- package/dist/components/ResponsiveDrawer.js +27 -27
- package/dist/components/ResponsiveDrawer.js.map +1 -1
- package/dist/components/RichTextEditor.d.ts +32 -0
- package/dist/components/RichTextEditor.js +335 -0
- package/dist/components/RichTextEditor.js.map +1 -0
- package/dist/components/Segmented.d.ts +1 -1
- package/dist/components/Segmented.js +48 -46
- package/dist/components/Segmented.js.map +1 -1
- package/dist/components/Select.js +55 -54
- package/dist/components/Select.js.map +1 -1
- package/dist/components/Skeleton.js +9 -9
- package/dist/components/Skeleton.js.map +1 -1
- package/dist/components/Splitter.js +93 -93
- package/dist/components/Splitter.js.map +1 -1
- package/dist/components/Stat.js +17 -16
- package/dist/components/Stat.js.map +1 -1
- package/dist/components/Status.js +29 -29
- package/dist/components/Status.js.map +1 -1
- package/dist/components/Steps.js +61 -61
- package/dist/components/Steps.js.map +1 -1
- package/dist/components/Table.js +256 -256
- package/dist/components/Table.js.map +1 -1
- package/dist/components/Tabs.js +65 -65
- package/dist/components/Tabs.js.map +1 -1
- package/dist/components/Tag.js +147 -147
- package/dist/components/Tag.js.map +1 -1
- package/dist/components/TextRotate.js +6 -6
- package/dist/components/TextRotate.js.map +1 -1
- package/dist/components/Textarea.js +35 -34
- package/dist/components/Textarea.js.map +1 -1
- package/dist/components/ThemeController.d.ts +1 -1
- package/dist/components/ThemeController.js +71 -68
- package/dist/components/ThemeController.js.map +1 -1
- package/dist/components/TimePicker.d.ts +1 -1
- package/dist/components/TimePicker.js +133 -129
- package/dist/components/TimePicker.js.map +1 -1
- package/dist/components/Timeline.js +79 -79
- package/dist/components/Timeline.js.map +1 -1
- package/dist/components/Toggle.js +33 -32
- package/dist/components/Toggle.js.map +1 -1
- package/dist/components/Tooltip.js +25 -25
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/Tour.js +126 -126
- package/dist/components/Tour.js.map +1 -1
- package/dist/components/Transfer.js +93 -92
- package/dist/components/Transfer.js.map +1 -1
- package/dist/components/Tree.js +200 -200
- package/dist/components/Tree.js.map +1 -1
- package/dist/components/TreeSelect.js +255 -254
- package/dist/components/TreeSelect.js.map +1 -1
- package/dist/components/Typography.js +71 -70
- package/dist/components/Typography.js.map +1 -1
- package/dist/components/Upload.js +81 -81
- package/dist/components/Upload.js.map +1 -1
- package/dist/components/WeekCalendar.d.ts +35 -0
- package/dist/components/WeekCalendar.js +204 -0
- package/dist/components/WeekCalendar.js.map +1 -0
- package/dist/components/Window.js +7 -7
- package/dist/components/Window.js.map +1 -1
- package/dist/editor.d.ts +1 -0
- package/dist/editor.js +5 -0
- package/dist/editor.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +211 -207
- package/dist/index.js.map +1 -1
- package/package.json +30 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sources":["../../src/components/Menu.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback, useId } from 'react'\n\nexport type MenuMode = 'vertical' | 'horizontal' | 'inline'\nexport type MenuSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface MenuItem {\n key: string\n label: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n children?: MenuItem[]\n divider?: boolean\n title?: boolean // For section titles\n}\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLUListElement>, 'onSelect'> {\n /** Menu items (compound pattern) */\n children?: React.ReactNode\n /** Menu items (data-driven pattern) */\n items?: MenuItem[]\n /** Menu display mode */\n mode?: MenuMode\n /** Menu size */\n size?: MenuSize\n /** Controlled selected keys */\n selectedKeys?: string[]\n /** Default selected keys (uncontrolled) */\n defaultSelectedKeys?: string[]\n /** Controlled open submenu keys */\n openKeys?: string[]\n /** Default open submenu keys (uncontrolled) */\n defaultOpenKeys?: string[]\n /** Callback when item is selected */\n onSelect?: (key: string) => void\n /** Callback when submenu open state changes */\n onOpenChange?: (openKeys: string[]) => void\n}\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLAnchorElement>, 'onClick'> {\n children: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n onClick?: () => void\n /** @deprecated Use key and selectedKeys instead */\n active?: boolean\n /** @internal */\n _key?: string\n}\n\nexport interface MenuSubMenuProps extends Omit<React.HTMLAttributes<HTMLLIElement>, 'title'> {\n children: React.ReactNode\n /** Submenu label */\n label?: React.ReactNode\n /** Submenu title (alias for label) */\n title?: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n /** @internal */\n _key?: string\n}\n\nexport interface MenuTitleProps extends React.HTMLAttributes<HTMLLIElement> {\n children: React.ReactNode\n}\n\nexport interface MenuDividerProps extends React.HTMLAttributes<HTMLLIElement> {}\n\ninterface MenuContextValue {\n mode: MenuMode\n selectedKeys: string[]\n openKeys: string[]\n onSelect: (key: string) => void\n onToggleOpen: (key: string) => void\n}\n\nconst MenuContext = createContext<MenuContextValue | null>(null)\n\nfunction useMenuContext() {\n const context = useContext(MenuContext)\n if (!context) {\n throw new Error('Menu components must be used within a Menu')\n }\n return context\n}\n\n// Internal component for rendering data-driven menu items\nfunction renderMenuItem(item: MenuItem, onSelect: (key: string) => void, selectedKeys: string[], openKeys: string[], onToggleOpen: (key: string) => void): React.ReactNode {\n if (item.divider) {\n return <MenuDivider key={item.key} />\n }\n\n if (item.title) {\n return <MenuTitle key={item.key}>{item.label}</MenuTitle>\n }\n\n if (item.children && item.children.length > 0) {\n return (\n <MenuSubMenu key={item.key} _key={item.key} label={item.label} icon={item.icon} disabled={item.disabled}>\n {item.children.map((child) => renderMenuItem(child, onSelect, selectedKeys, openKeys, onToggleOpen))}\n </MenuSubMenu>\n )\n }\n\n return (\n <MenuItem key={item.key} _key={item.key} icon={item.icon} disabled={item.disabled}>\n {item.label}\n </MenuItem>\n )\n}\n\nfunction MenuRoot({\n children,\n items,\n mode = 'vertical',\n size,\n selectedKeys: controlledSelectedKeys,\n defaultSelectedKeys = [],\n openKeys: controlledOpenKeys,\n defaultOpenKeys = [],\n onSelect,\n onOpenChange,\n className = '',\n ...rest\n}: MenuProps) {\n const [internalSelectedKeys, setInternalSelectedKeys] = useState<string[]>(defaultSelectedKeys)\n const [internalOpenKeys, setInternalOpenKeys] = useState<string[]>(defaultOpenKeys)\n\n const selectedKeys = controlledSelectedKeys ?? internalSelectedKeys\n const openKeys = controlledOpenKeys ?? internalOpenKeys\n\n const handleSelect = useCallback(\n (key: string) => {\n if (controlledSelectedKeys === undefined) {\n setInternalSelectedKeys([key])\n }\n onSelect?.(key)\n },\n [controlledSelectedKeys, onSelect]\n )\n\n const handleToggleOpen = useCallback(\n (key: string) => {\n const newOpenKeys = openKeys.includes(key)\n ? openKeys.filter((k) => k !== key)\n : [...openKeys, key]\n\n if (controlledOpenKeys === undefined) {\n setInternalOpenKeys(newOpenKeys)\n }\n onOpenChange?.(newOpenKeys)\n },\n [openKeys, controlledOpenKeys, onOpenChange]\n )\n\n const modeClasses: Record<MenuMode, string> = {\n vertical: 'menu-vertical',\n horizontal: 'menu-horizontal',\n inline: 'menu-vertical',\n }\n\n const sizeClasses: Record<MenuSize, string> = {\n xs: 'menu-xs',\n sm: 'menu-sm',\n md: 'menu-md',\n lg: 'menu-lg',\n xl: 'menu-xl',\n }\n\n const menuClasses = ['menu', modeClasses[mode], size && sizeClasses[size], className].filter(Boolean).join(' ')\n\n const contextValue = {\n mode,\n selectedKeys,\n openKeys,\n onSelect: handleSelect,\n onToggleOpen: handleToggleOpen,\n }\n\n // Clone children to extract keys\n const cloneChildrenWithKeys = (children: React.ReactNode): React.ReactNode => {\n return React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n const childKey = child.key != null ? String(child.key) : undefined\n if (child.type === MenuItem || child.type === MenuSubMenu) {\n return React.cloneElement(child as React.ReactElement<any>, { _key: childKey })\n }\n }\n return child\n })\n }\n\n // Render data-driven items if provided\n const content = items && items.length > 0\n ? items.map((item) => renderMenuItem(item, handleSelect, selectedKeys, openKeys, handleToggleOpen))\n : cloneChildrenWithKeys(children)\n\n return (\n <MenuContext.Provider value={contextValue}>\n <ul className={menuClasses} {...rest}>{content}</ul>\n </MenuContext.Provider>\n )\n}\n\nfunction MenuItem({\n children,\n icon,\n disabled = false,\n onClick,\n active,\n className = '',\n _key,\n ...rest\n}: MenuItemProps) {\n const context = useContext(MenuContext)\n\n // Support both old active prop and new key-based selection\n const isSelected = _key && context ? context.selectedKeys.includes(_key) : active\n\n const handleClick = () => {\n if (disabled) return\n if (_key && context) {\n context.onSelect(_key)\n }\n onClick?.()\n }\n\n const itemClasses = [\n isSelected && 'active bg-primary text-primary-content',\n disabled && 'disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <li>\n <a\n className={itemClasses}\n onClick={handleClick}\n aria-disabled={disabled}\n role=\"menuitem\"\n data-state={isSelected ? 'active' : 'inactive'}\n {...rest}\n >\n {icon && <span className=\"menu-icon\">{icon}</span>}\n {children}\n </a>\n </li>\n )\n}\n\nfunction MenuSubMenu({\n children,\n label,\n title,\n icon,\n disabled = false,\n className = '',\n _key,\n ...rest\n}: MenuSubMenuProps) {\n const context = useMenuContext()\n const isOpen = _key ? context.openKeys.includes(_key) : false\n const submenuId = useId()\n\n // Support both label and title (title as alias for backwards compatibility)\n const displayLabel = label ?? title\n\n const handleToggle = () => {\n if (disabled || !_key) return\n context.onToggleOpen(_key)\n }\n\n const submenuClasses = [disabled && 'disabled', className].filter(Boolean).join(' ')\n\n // For inline mode, use collapsible details/summary\n if (context.mode === 'inline') {\n return (\n <li className={submenuClasses} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <details open={isOpen}>\n <summary\n onClick={(e) => {\n e.preventDefault()\n handleToggle()\n }}\n aria-expanded={isOpen}\n aria-controls={submenuId}\n aria-disabled={disabled}\n >\n {icon && <span className=\"menu-icon\">{icon}</span>}\n {displayLabel}\n </summary>\n <ul id={submenuId} role=\"menu\">\n {children}\n </ul>\n </details>\n </li>\n )\n }\n\n // For vertical/horizontal, use nested menu (dropdown style)\n return (\n <li className={submenuClasses} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <details open={isOpen}>\n <summary\n onClick={(e) => {\n e.preventDefault()\n handleToggle()\n }}\n aria-expanded={isOpen}\n aria-controls={submenuId}\n aria-disabled={disabled}\n >\n {icon && <span className=\"menu-icon\">{icon}</span>}\n {displayLabel}\n </summary>\n <ul id={submenuId} role=\"menu\">\n {children}\n </ul>\n </details>\n </li>\n )\n}\n\nfunction MenuTitle({ children, className = '', ...rest }: MenuTitleProps) {\n const titleClasses = ['menu-title', className].filter(Boolean).join(' ')\n\n return <li className={titleClasses} {...rest}>{children}</li>\n}\n\nfunction MenuDivider({ className = '', ...rest }: MenuDividerProps) {\n const dividerClasses = ['border-t border-base-300 my-1', className].filter(Boolean).join(' ')\n\n return <li className={dividerClasses} role=\"separator\" {...rest} />\n}\n\nexport const Menu = Object.assign(MenuRoot, {\n Item: MenuItem,\n SubMenu: MenuSubMenu,\n Title: MenuTitle,\n Divider: MenuDivider,\n})\n"],"names":["MenuContext","createContext","useMenuContext","context","useContext","renderMenuItem","item","onSelect","selectedKeys","openKeys","onToggleOpen","jsx","MenuDivider","MenuTitle","MenuSubMenu","child","MenuItem","MenuRoot","children","items","mode","size","controlledSelectedKeys","defaultSelectedKeys","controlledOpenKeys","defaultOpenKeys","onOpenChange","className","rest","internalSelectedKeys","setInternalSelectedKeys","useState","internalOpenKeys","setInternalOpenKeys","handleSelect","useCallback","key","handleToggleOpen","newOpenKeys","k","modeClasses","sizeClasses","menuClasses","contextValue","cloneChildrenWithKeys","React","childKey","content","icon","disabled","onClick","active","_key","isSelected","handleClick","itemClasses","jsxs","label","title","isOpen","submenuId","useId","displayLabel","handleToggle","submenuClasses","e","titleClasses","dividerClasses","Menu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Menu.js","sources":["../../src/components/Menu.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useCallback, useId } from 'react'\n\n// DaisyUI classes\nconst dMenu = 'menu'\nconst dMenuVertical = 'menu-vertical'\nconst dMenuHorizontal = 'menu-horizontal'\nconst dMenuXs = 'menu-xs'\nconst dMenuSm = 'menu-sm'\nconst dMenuMd = 'menu-md'\nconst dMenuLg = 'menu-lg'\nconst dMenuXl = 'menu-xl'\nconst dMenuIcon = 'menu-icon'\nconst dMenuTitle = 'menu-title'\n\nexport type MenuMode = 'vertical' | 'horizontal' | 'inline'\nexport type MenuSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface MenuItem {\n key: string\n label: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n children?: MenuItem[]\n divider?: boolean\n title?: boolean // For section titles\n}\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLUListElement>, 'onSelect'> {\n /** Menu items (compound pattern) */\n children?: React.ReactNode\n /** Menu items (data-driven pattern) */\n items?: MenuItem[]\n /** Menu display mode */\n mode?: MenuMode\n /** Menu size */\n size?: MenuSize\n /** Controlled selected keys */\n selectedKeys?: string[]\n /** Default selected keys (uncontrolled) */\n defaultSelectedKeys?: string[]\n /** Controlled open submenu keys */\n openKeys?: string[]\n /** Default open submenu keys (uncontrolled) */\n defaultOpenKeys?: string[]\n /** Callback when item is selected */\n onSelect?: (key: string) => void\n /** Callback when submenu open state changes */\n onOpenChange?: (openKeys: string[]) => void\n}\n\nexport interface MenuItemProps extends Omit<React.HTMLAttributes<HTMLAnchorElement>, 'onClick'> {\n children: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n onClick?: () => void\n /** @deprecated Use key and selectedKeys instead */\n active?: boolean\n /** @internal */\n _key?: string\n}\n\nexport interface MenuSubMenuProps extends Omit<React.HTMLAttributes<HTMLLIElement>, 'title'> {\n children: React.ReactNode\n /** Submenu label */\n label?: React.ReactNode\n /** Submenu title (alias for label) */\n title?: React.ReactNode\n icon?: React.ReactNode\n disabled?: boolean\n /** @internal */\n _key?: string\n}\n\nexport interface MenuTitleProps extends React.HTMLAttributes<HTMLLIElement> {\n children: React.ReactNode\n}\n\nexport interface MenuDividerProps extends React.HTMLAttributes<HTMLLIElement> {}\n\ninterface MenuContextValue {\n mode: MenuMode\n selectedKeys: string[]\n openKeys: string[]\n onSelect: (key: string) => void\n onToggleOpen: (key: string) => void\n}\n\nconst MenuContext = createContext<MenuContextValue | null>(null)\n\nfunction useMenuContext() {\n const context = useContext(MenuContext)\n if (!context) {\n throw new Error('Menu components must be used within a Menu')\n }\n return context\n}\n\n// Internal component for rendering data-driven menu items\nfunction renderMenuItem(item: MenuItem, onSelect: (key: string) => void, selectedKeys: string[], openKeys: string[], onToggleOpen: (key: string) => void): React.ReactNode {\n if (item.divider) {\n return <MenuDivider key={item.key} />\n }\n\n if (item.title) {\n return <MenuTitle key={item.key}>{item.label}</MenuTitle>\n }\n\n if (item.children && item.children.length > 0) {\n return (\n <MenuSubMenu key={item.key} _key={item.key} label={item.label} icon={item.icon} disabled={item.disabled}>\n {item.children.map((child) => renderMenuItem(child, onSelect, selectedKeys, openKeys, onToggleOpen))}\n </MenuSubMenu>\n )\n }\n\n return (\n <MenuItem key={item.key} _key={item.key} icon={item.icon} disabled={item.disabled}>\n {item.label}\n </MenuItem>\n )\n}\n\nfunction MenuRoot({\n children,\n items,\n mode = 'vertical',\n size,\n selectedKeys: controlledSelectedKeys,\n defaultSelectedKeys = [],\n openKeys: controlledOpenKeys,\n defaultOpenKeys = [],\n onSelect,\n onOpenChange,\n className = '',\n ...rest\n}: MenuProps) {\n const [internalSelectedKeys, setInternalSelectedKeys] = useState<string[]>(defaultSelectedKeys)\n const [internalOpenKeys, setInternalOpenKeys] = useState<string[]>(defaultOpenKeys)\n\n const selectedKeys = controlledSelectedKeys ?? internalSelectedKeys\n const openKeys = controlledOpenKeys ?? internalOpenKeys\n\n const handleSelect = useCallback(\n (key: string) => {\n if (controlledSelectedKeys === undefined) {\n setInternalSelectedKeys([key])\n }\n onSelect?.(key)\n },\n [controlledSelectedKeys, onSelect]\n )\n\n const handleToggleOpen = useCallback(\n (key: string) => {\n const newOpenKeys = openKeys.includes(key)\n ? openKeys.filter((k) => k !== key)\n : [...openKeys, key]\n\n if (controlledOpenKeys === undefined) {\n setInternalOpenKeys(newOpenKeys)\n }\n onOpenChange?.(newOpenKeys)\n },\n [openKeys, controlledOpenKeys, onOpenChange]\n )\n\n const modeClasses: Record<MenuMode, string> = {\n vertical: dMenuVertical,\n horizontal: dMenuHorizontal,\n inline: dMenuVertical,\n }\n\n const sizeClasses: Record<MenuSize, string> = {\n xs: dMenuXs,\n sm: dMenuSm,\n md: dMenuMd,\n lg: dMenuLg,\n xl: dMenuXl,\n }\n\n const menuClasses = [dMenu, modeClasses[mode], size && sizeClasses[size], className].filter(Boolean).join(' ')\n\n const contextValue = {\n mode,\n selectedKeys,\n openKeys,\n onSelect: handleSelect,\n onToggleOpen: handleToggleOpen,\n }\n\n // Clone children to extract keys\n const cloneChildrenWithKeys = (children: React.ReactNode): React.ReactNode => {\n return React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n const childKey = child.key != null ? String(child.key) : undefined\n if (child.type === MenuItem || child.type === MenuSubMenu) {\n return React.cloneElement(child as React.ReactElement<any>, { _key: childKey })\n }\n }\n return child\n })\n }\n\n // Render data-driven items if provided\n const content = items && items.length > 0\n ? items.map((item) => renderMenuItem(item, handleSelect, selectedKeys, openKeys, handleToggleOpen))\n : cloneChildrenWithKeys(children)\n\n return (\n <MenuContext.Provider value={contextValue}>\n <ul className={menuClasses} {...rest}>{content}</ul>\n </MenuContext.Provider>\n )\n}\n\nfunction MenuItem({\n children,\n icon,\n disabled = false,\n onClick,\n active,\n className = '',\n _key,\n ...rest\n}: MenuItemProps) {\n const context = useContext(MenuContext)\n\n // Support both old active prop and new key-based selection\n const isSelected = _key && context ? context.selectedKeys.includes(_key) : active\n\n const handleClick = () => {\n if (disabled) return\n if (_key && context) {\n context.onSelect(_key)\n }\n onClick?.()\n }\n\n const itemClasses = [\n isSelected && 'active bg-primary text-primary-content',\n disabled && 'disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <li>\n <a\n className={itemClasses}\n onClick={handleClick}\n aria-disabled={disabled}\n role=\"menuitem\"\n data-state={isSelected ? 'active' : 'inactive'}\n {...rest}\n >\n {icon && <span className={dMenuIcon}>{icon}</span>}\n {children}\n </a>\n </li>\n )\n}\n\nfunction MenuSubMenu({\n children,\n label,\n title,\n icon,\n disabled = false,\n className = '',\n _key,\n ...rest\n}: MenuSubMenuProps) {\n const context = useMenuContext()\n const isOpen = _key ? context.openKeys.includes(_key) : false\n const submenuId = useId()\n\n // Support both label and title (title as alias for backwards compatibility)\n const displayLabel = label ?? title\n\n const handleToggle = () => {\n if (disabled || !_key) return\n context.onToggleOpen(_key)\n }\n\n const submenuClasses = [disabled && 'disabled', className].filter(Boolean).join(' ')\n\n // For inline mode, use collapsible details/summary\n if (context.mode === 'inline') {\n return (\n <li className={submenuClasses} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <details open={isOpen}>\n <summary\n onClick={(e) => {\n e.preventDefault()\n handleToggle()\n }}\n aria-expanded={isOpen}\n aria-controls={submenuId}\n aria-disabled={disabled}\n >\n {icon && <span className={dMenuIcon}>{icon}</span>}\n {displayLabel}\n </summary>\n <ul id={submenuId} role=\"menu\">\n {children}\n </ul>\n </details>\n </li>\n )\n }\n\n // For vertical/horizontal, use nested menu (dropdown style)\n return (\n <li className={submenuClasses} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <details open={isOpen}>\n <summary\n onClick={(e) => {\n e.preventDefault()\n handleToggle()\n }}\n aria-expanded={isOpen}\n aria-controls={submenuId}\n aria-disabled={disabled}\n >\n {icon && <span className={dMenuIcon}>{icon}</span>}\n {displayLabel}\n </summary>\n <ul id={submenuId} role=\"menu\">\n {children}\n </ul>\n </details>\n </li>\n )\n}\n\nfunction MenuTitle({ children, className = '', ...rest }: MenuTitleProps) {\n const titleClasses = [dMenuTitle, className].filter(Boolean).join(' ')\n\n return <li className={titleClasses} {...rest}>{children}</li>\n}\n\nfunction MenuDivider({ className = '', ...rest }: MenuDividerProps) {\n const dividerClasses = ['border-t border-base-300 my-1', className].filter(Boolean).join(' ')\n\n return <li className={dividerClasses} role=\"separator\" {...rest} />\n}\n\nexport const Menu = Object.assign(MenuRoot, {\n Item: MenuItem,\n SubMenu: MenuSubMenu,\n Title: MenuTitle,\n Divider: MenuDivider,\n})\n"],"names":["dMenu","dMenuVertical","dMenuHorizontal","dMenuXs","dMenuSm","dMenuMd","dMenuLg","dMenuXl","dMenuIcon","dMenuTitle","MenuContext","createContext","useMenuContext","context","useContext","renderMenuItem","item","onSelect","selectedKeys","openKeys","onToggleOpen","jsx","MenuDivider","MenuTitle","MenuSubMenu","child","MenuItem","MenuRoot","children","items","mode","size","controlledSelectedKeys","defaultSelectedKeys","controlledOpenKeys","defaultOpenKeys","onOpenChange","className","rest","internalSelectedKeys","setInternalSelectedKeys","useState","internalOpenKeys","setInternalOpenKeys","handleSelect","useCallback","key","handleToggleOpen","newOpenKeys","k","modeClasses","sizeClasses","menuClasses","contextValue","cloneChildrenWithKeys","React","childKey","content","icon","disabled","onClick","active","_key","isSelected","handleClick","itemClasses","jsxs","label","title","isOpen","submenuId","useId","displayLabel","handleToggle","submenuClasses","e","titleClasses","dividerClasses","Menu"],"mappings":"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"}
|
|
@@ -1,56 +1,57 @@
|
|
|
1
1
|
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
-
import { notification as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { notification as o } from "./Notification.js";
|
|
3
|
+
const r = "loading", t = "loading-spinner", i = "loading-sm";
|
|
4
|
+
class c {
|
|
5
|
+
success(n, e) {
|
|
6
|
+
return o.open({
|
|
7
|
+
message: n,
|
|
7
8
|
type: "success",
|
|
8
9
|
variant: "compact",
|
|
9
|
-
...
|
|
10
|
+
...e
|
|
10
11
|
});
|
|
11
12
|
}
|
|
12
|
-
error(
|
|
13
|
-
return
|
|
14
|
-
message:
|
|
13
|
+
error(n, e) {
|
|
14
|
+
return o.open({
|
|
15
|
+
message: n,
|
|
15
16
|
type: "error",
|
|
16
17
|
variant: "compact",
|
|
17
|
-
...
|
|
18
|
+
...e
|
|
18
19
|
});
|
|
19
20
|
}
|
|
20
|
-
info(
|
|
21
|
-
return
|
|
22
|
-
message:
|
|
21
|
+
info(n, e) {
|
|
22
|
+
return o.open({
|
|
23
|
+
message: n,
|
|
23
24
|
type: "info",
|
|
24
25
|
variant: "compact",
|
|
25
|
-
...
|
|
26
|
+
...e
|
|
26
27
|
});
|
|
27
28
|
}
|
|
28
|
-
warning(
|
|
29
|
-
return
|
|
30
|
-
message:
|
|
29
|
+
warning(n, e) {
|
|
30
|
+
return o.open({
|
|
31
|
+
message: n,
|
|
31
32
|
type: "warning",
|
|
32
33
|
variant: "compact",
|
|
33
|
-
...
|
|
34
|
+
...e
|
|
34
35
|
});
|
|
35
36
|
}
|
|
36
|
-
loading(
|
|
37
|
-
const
|
|
38
|
-
return
|
|
39
|
-
message:
|
|
37
|
+
loading(n, e) {
|
|
38
|
+
const a = /* @__PURE__ */ s("span", { className: `${r} ${t} ${i}` });
|
|
39
|
+
return o.open({
|
|
40
|
+
message: n,
|
|
40
41
|
type: "info",
|
|
41
42
|
variant: "compact",
|
|
42
43
|
duration: 0,
|
|
43
|
-
icon:
|
|
44
|
-
...
|
|
44
|
+
icon: a,
|
|
45
|
+
...e
|
|
45
46
|
});
|
|
46
47
|
}
|
|
47
|
-
destroy(
|
|
48
|
-
|
|
48
|
+
destroy(n) {
|
|
49
|
+
n ? o.close(n) : o.destroy();
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
const
|
|
52
|
+
const d = new c();
|
|
52
53
|
export {
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
c as MessageManager,
|
|
55
|
+
d as message
|
|
55
56
|
};
|
|
56
57
|
//# sourceMappingURL=Message.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.js","sources":["../../src/components/Message.tsx"],"sourcesContent":["import React from 'react'\nimport { notification } from './Notification'\n\nexport interface MessageConfig {\n duration?: number\n key?: string\n icon?: React.ReactNode\n className?: string\n style?: React.CSSProperties\n 'data-testid'?: string\n onClick?: () => void\n onClose?: () => void\n}\n\nexport class MessageManager {\n success(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'success',\n variant: 'compact',\n ...config,\n })\n }\n\n error(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'error',\n variant: 'compact',\n ...config,\n })\n }\n\n info(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'info',\n variant: 'compact',\n ...config,\n })\n }\n\n warning(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'warning',\n variant: 'compact',\n ...config,\n })\n }\n\n loading(content: React.ReactNode, config?: MessageConfig) {\n const loadingIcon = (\n <span className
|
|
1
|
+
{"version":3,"file":"Message.js","sources":["../../src/components/Message.tsx"],"sourcesContent":["import React from 'react'\nimport { notification } from './Notification'\n\n// DaisyUI classes\nconst dLoading = 'loading'\nconst dLoadingSpinner = 'loading-spinner'\nconst dLoadingSm = 'loading-sm'\n\nexport interface MessageConfig {\n duration?: number\n key?: string\n icon?: React.ReactNode\n className?: string\n style?: React.CSSProperties\n 'data-testid'?: string\n onClick?: () => void\n onClose?: () => void\n}\n\nexport class MessageManager {\n success(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'success',\n variant: 'compact',\n ...config,\n })\n }\n\n error(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'error',\n variant: 'compact',\n ...config,\n })\n }\n\n info(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'info',\n variant: 'compact',\n ...config,\n })\n }\n\n warning(content: React.ReactNode, config?: MessageConfig) {\n return notification.open({\n message: content,\n type: 'warning',\n variant: 'compact',\n ...config,\n })\n }\n\n loading(content: React.ReactNode, config?: MessageConfig) {\n const loadingIcon = (\n <span className={`${dLoading} ${dLoadingSpinner} ${dLoadingSm}`} />\n )\n return notification.open({\n message: content,\n type: 'info',\n variant: 'compact',\n duration: 0,\n icon: loadingIcon,\n ...config,\n })\n }\n\n destroy(id?: string) {\n if (id) {\n notification.close(id)\n } else {\n notification.destroy()\n }\n }\n}\n\nexport const message = new MessageManager()\n"],"names":["dLoading","dLoadingSpinner","dLoadingSm","MessageManager","content","config","notification","loadingIcon","jsx","id","message"],"mappings":";;AAIA,MAAMA,IAAW,WACXC,IAAkB,mBAClBC,IAAa;AAaZ,MAAMC,EAAe;AAAA,EAC1B,QAAQC,GAA0BC,GAAwB;AACxD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,MAAMD,GAA0BC,GAAwB;AACtD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,KAAKD,GAA0BC,GAAwB;AACrD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,QAAQD,GAA0BC,GAAwB;AACxD,WAAOC,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,GAAGC;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,QAAQD,GAA0BC,GAAwB;AACxD,UAAME,IACJ,gBAAAC,EAAC,QAAA,EAAK,WAAW,GAAGR,CAAQ,IAAIC,CAAe,IAAIC,CAAU,GAAA,CAAI;AAEnE,WAAOI,EAAa,KAAK;AAAA,MACvB,SAASF;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAMG;AAAA,MACN,GAAGF;AAAA,IAAA,CACJ;AAAA,EACH;AAAA,EAEA,QAAQI,GAAa;AACnB,IAAIA,IACFH,EAAa,MAAMG,CAAE,IAErBH,EAAa,QAAA;AAAA,EAEjB;AACF;AAEO,MAAMI,IAAU,IAAIP,EAAA;"}
|
package/dist/components/Modal.js
CHANGED
|
@@ -1,62 +1,63 @@
|
|
|
1
|
-
import { jsxs as m, jsx as t, Fragment as
|
|
2
|
-
import
|
|
3
|
-
import { createRoot as
|
|
1
|
+
import { jsxs as m, jsx as t, Fragment as oe } from "react/jsx-runtime";
|
|
2
|
+
import $, { useRef as w, useId as z, useEffect as P } from "react";
|
|
3
|
+
import { createRoot as ne } from "react-dom/client";
|
|
4
|
+
const re = "modal", D = "modal-top", K = "modal-middle", F = "modal-bottom", se = "modal-start", le = "modal-end", ae = "modal-box", H = "modal-action", de = "modal-backdrop", b = "btn", T = "btn-primary", q = "btn-error", ce = "alert", ie = "alert-info", me = "alert-success", ue = "alert-warning", he = "alert-error";
|
|
4
5
|
function u({
|
|
5
6
|
children: e,
|
|
6
|
-
title:
|
|
7
|
+
title: n,
|
|
7
8
|
footer: s,
|
|
8
9
|
open: l = !1,
|
|
9
10
|
onOk: a,
|
|
10
11
|
onCancel: d,
|
|
11
|
-
okText:
|
|
12
|
+
okText: C = "OK",
|
|
12
13
|
cancelText: c = "Cancel",
|
|
13
14
|
maskClosable: h = !0,
|
|
14
15
|
closable: p = !0,
|
|
15
|
-
position:
|
|
16
|
-
align:
|
|
16
|
+
position: r,
|
|
17
|
+
align: f,
|
|
17
18
|
width: i,
|
|
18
|
-
centered:
|
|
19
|
-
onClose:
|
|
20
|
-
initialFocus:
|
|
21
|
-
alertDialog:
|
|
22
|
-
className:
|
|
23
|
-
...
|
|
19
|
+
centered: g,
|
|
20
|
+
onClose: N,
|
|
21
|
+
initialFocus: v,
|
|
22
|
+
alertDialog: G = !1,
|
|
23
|
+
className: J = "",
|
|
24
|
+
...Q
|
|
24
25
|
}) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
const o =
|
|
28
|
-
o && (l ? o.open || (
|
|
29
|
-
switch (
|
|
26
|
+
const M = w(null), A = w(null), E = w(null), R = w(null), j = w(null), [B, L] = $.useState(!1), O = z(), S = z(), x = N || d;
|
|
27
|
+
P(() => {
|
|
28
|
+
const o = M.current;
|
|
29
|
+
o && (l ? o.open || (j.current = document.activeElement, o.showModal(), v && setTimeout(() => {
|
|
30
|
+
switch (v) {
|
|
30
31
|
case "ok":
|
|
31
|
-
|
|
32
|
+
A.current?.focus();
|
|
32
33
|
break;
|
|
33
34
|
case "cancel":
|
|
34
|
-
|
|
35
|
+
E.current?.focus();
|
|
35
36
|
break;
|
|
36
37
|
case "close":
|
|
37
|
-
|
|
38
|
+
R.current?.focus();
|
|
38
39
|
break;
|
|
39
40
|
}
|
|
40
|
-
}, 0)) : o.open && (o.close(),
|
|
41
|
-
}, [l,
|
|
42
|
-
const o =
|
|
41
|
+
}, 0)) : o.open && (o.close(), j.current?.focus()));
|
|
42
|
+
}, [l, v]), P(() => {
|
|
43
|
+
const o = M.current;
|
|
43
44
|
if (!o) return;
|
|
44
|
-
const
|
|
45
|
-
|
|
45
|
+
const y = () => {
|
|
46
|
+
x?.();
|
|
46
47
|
};
|
|
47
|
-
return o.addEventListener("close",
|
|
48
|
-
o.removeEventListener("close",
|
|
48
|
+
return o.addEventListener("close", y), () => {
|
|
49
|
+
o.removeEventListener("close", y);
|
|
49
50
|
};
|
|
50
|
-
}, [
|
|
51
|
+
}, [x]);
|
|
51
52
|
const W = {
|
|
52
|
-
top:
|
|
53
|
-
middle:
|
|
54
|
-
bottom:
|
|
55
|
-
},
|
|
53
|
+
top: D,
|
|
54
|
+
middle: K,
|
|
55
|
+
bottom: F
|
|
56
|
+
}, U = {
|
|
56
57
|
base: {
|
|
57
|
-
top:
|
|
58
|
-
middle:
|
|
59
|
-
bottom:
|
|
58
|
+
top: D,
|
|
59
|
+
middle: K,
|
|
60
|
+
bottom: F
|
|
60
61
|
},
|
|
61
62
|
sm: {
|
|
62
63
|
top: "sm:modal-top",
|
|
@@ -83,82 +84,82 @@ function u({
|
|
|
83
84
|
middle: "2xl:modal-middle",
|
|
84
85
|
bottom: "2xl:modal-bottom"
|
|
85
86
|
}
|
|
86
|
-
},
|
|
87
|
-
start:
|
|
88
|
-
end:
|
|
89
|
-
},
|
|
90
|
-
|
|
87
|
+
}, V = {
|
|
88
|
+
start: se,
|
|
89
|
+
end: le
|
|
90
|
+
}, X = [
|
|
91
|
+
re,
|
|
91
92
|
...(() => {
|
|
92
|
-
if (
|
|
93
|
+
if (g)
|
|
93
94
|
return [W.middle];
|
|
94
|
-
if (!
|
|
95
|
+
if (!r)
|
|
95
96
|
return [];
|
|
96
|
-
if (typeof
|
|
97
|
-
return [W[
|
|
97
|
+
if (typeof r == "string")
|
|
98
|
+
return [W[r]];
|
|
98
99
|
const o = [];
|
|
99
|
-
for (const [
|
|
100
|
-
|
|
100
|
+
for (const [y, I] of Object.entries(r))
|
|
101
|
+
I && o.push(U[y][I]);
|
|
101
102
|
return o;
|
|
102
103
|
})(),
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
].filter(Boolean).join(" "),
|
|
104
|
+
f && V[f],
|
|
105
|
+
J
|
|
106
|
+
].filter(Boolean).join(" "), Y = async () => {
|
|
106
107
|
if (a) {
|
|
107
|
-
|
|
108
|
+
L(!0);
|
|
108
109
|
try {
|
|
109
|
-
await a(),
|
|
110
|
+
await a(), L(!1);
|
|
110
111
|
} catch (o) {
|
|
111
|
-
throw
|
|
112
|
+
throw L(!1), o;
|
|
112
113
|
}
|
|
113
114
|
}
|
|
114
|
-
},
|
|
115
|
-
h &&
|
|
116
|
-
},
|
|
115
|
+
}, Z = () => {
|
|
116
|
+
h && x && x();
|
|
117
|
+
}, _ = i ? { width: typeof i == "number" ? `${i}px` : i, maxWidth: "90vw" } : {}, ee = !s && (a || d), te = s != null;
|
|
117
118
|
return /* @__PURE__ */ m(
|
|
118
119
|
"dialog",
|
|
119
120
|
{
|
|
120
|
-
ref:
|
|
121
|
-
role:
|
|
121
|
+
ref: M,
|
|
122
|
+
role: G ? "alertdialog" : "dialog",
|
|
122
123
|
"aria-modal": "true",
|
|
123
|
-
className:
|
|
124
|
+
className: X,
|
|
124
125
|
"data-state": l ? "open" : "closed",
|
|
125
|
-
"aria-labelledby":
|
|
126
|
-
"aria-describedby":
|
|
127
|
-
...
|
|
126
|
+
"aria-labelledby": n ? O : void 0,
|
|
127
|
+
"aria-describedby": S,
|
|
128
|
+
...Q,
|
|
128
129
|
children: [
|
|
129
|
-
/* @__PURE__ */ m("div", { className:
|
|
130
|
-
|
|
131
|
-
/* @__PURE__ */ t("div", { id:
|
|
132
|
-
|
|
133
|
-
d && /* @__PURE__ */ t("button", { ref:
|
|
130
|
+
/* @__PURE__ */ m("div", { className: ae, style: _, children: [
|
|
131
|
+
n && /* @__PURE__ */ t("h3", { id: O, className: "text-lg font-bold mb-4", children: n }),
|
|
132
|
+
/* @__PURE__ */ t("div", { id: S, className: "py-4", children: e }),
|
|
133
|
+
ee && /* @__PURE__ */ m("div", { className: H, children: [
|
|
134
|
+
d && /* @__PURE__ */ t("button", { ref: E, className: b, onClick: d, children: c }),
|
|
134
135
|
a && /* @__PURE__ */ t(
|
|
135
136
|
"button",
|
|
136
137
|
{
|
|
137
|
-
ref:
|
|
138
|
-
className:
|
|
139
|
-
onClick:
|
|
140
|
-
disabled:
|
|
141
|
-
"aria-busy":
|
|
142
|
-
children:
|
|
138
|
+
ref: A,
|
|
139
|
+
className: `${b} ${T} ${B ? "loading" : ""}`,
|
|
140
|
+
onClick: Y,
|
|
141
|
+
disabled: B,
|
|
142
|
+
"aria-busy": B || void 0,
|
|
143
|
+
children: C
|
|
143
144
|
}
|
|
144
145
|
)
|
|
145
146
|
] }),
|
|
146
|
-
|
|
147
|
+
te && /* @__PURE__ */ t("div", { className: H, children: s })
|
|
147
148
|
] }),
|
|
148
|
-
p && h && /* @__PURE__ */ t("form", { method: "dialog", className:
|
|
149
|
+
p && h && /* @__PURE__ */ t("form", { method: "dialog", className: de, children: /* @__PURE__ */ t("button", { ref: R, onClick: Z, children: /* @__PURE__ */ t("span", { className: "sr-only", children: "Close modal" }) }) })
|
|
149
150
|
]
|
|
150
151
|
}
|
|
151
152
|
);
|
|
152
153
|
}
|
|
153
|
-
function
|
|
154
|
-
const
|
|
155
|
-
document.body.appendChild(
|
|
156
|
-
const s =
|
|
157
|
-
s.unmount(),
|
|
154
|
+
function k(e) {
|
|
155
|
+
const n = document.createElement("div");
|
|
156
|
+
document.body.appendChild(n);
|
|
157
|
+
const s = ne(n), l = () => {
|
|
158
|
+
s.unmount(), n.parentNode && n.parentNode.removeChild(n);
|
|
158
159
|
}, a = () => {
|
|
159
|
-
const [d,
|
|
160
|
-
|
|
161
|
-
},
|
|
160
|
+
const [d, C] = $.useState(!0), [c, h] = $.useState(!1), p = () => {
|
|
161
|
+
C(!1), setTimeout(l, 300);
|
|
162
|
+
}, r = async () => {
|
|
162
163
|
if (e.onOk) {
|
|
163
164
|
h(!0);
|
|
164
165
|
try {
|
|
@@ -168,21 +169,21 @@ function w(e) {
|
|
|
168
169
|
}
|
|
169
170
|
} else
|
|
170
171
|
p();
|
|
171
|
-
},
|
|
172
|
+
}, f = () => {
|
|
172
173
|
e.onCancel?.(), p();
|
|
173
174
|
}, i = () => {
|
|
174
175
|
switch (e.type) {
|
|
175
176
|
case "success":
|
|
176
|
-
return
|
|
177
|
+
return me;
|
|
177
178
|
case "warning":
|
|
178
|
-
return
|
|
179
|
+
return ue;
|
|
179
180
|
case "error":
|
|
180
|
-
return
|
|
181
|
+
return he;
|
|
181
182
|
case "info":
|
|
182
183
|
default:
|
|
183
|
-
return
|
|
184
|
+
return ie;
|
|
184
185
|
}
|
|
185
|
-
},
|
|
186
|
+
}, g = () => {
|
|
186
187
|
switch (e.type) {
|
|
187
188
|
case "success":
|
|
188
189
|
return /* @__PURE__ */ t(
|
|
@@ -266,27 +267,27 @@ function w(e) {
|
|
|
266
267
|
}
|
|
267
268
|
);
|
|
268
269
|
}
|
|
269
|
-
},
|
|
270
|
+
}, N = e.type === "warning" || e.type === "error";
|
|
270
271
|
return /* @__PURE__ */ m(
|
|
271
272
|
u,
|
|
272
273
|
{
|
|
273
274
|
open: d,
|
|
274
|
-
onOk: e.showCancel ? void 0 :
|
|
275
|
-
onCancel:
|
|
276
|
-
alertDialog:
|
|
277
|
-
title: e.type ? /* @__PURE__ */ m("div", { className:
|
|
278
|
-
|
|
275
|
+
onOk: e.showCancel ? void 0 : r,
|
|
276
|
+
onCancel: f,
|
|
277
|
+
alertDialog: N,
|
|
278
|
+
title: e.type ? /* @__PURE__ */ m("div", { className: `${ce} ${i()}`, children: [
|
|
279
|
+
g(),
|
|
279
280
|
/* @__PURE__ */ t("div", { children: e.title && /* @__PURE__ */ t("h3", { className: "font-bold", children: e.title }) })
|
|
280
281
|
] }) : e.title,
|
|
281
282
|
okText: e.okText,
|
|
282
283
|
cancelText: e.cancelText,
|
|
283
|
-
footer: e.showCancel ? /* @__PURE__ */ m(
|
|
284
|
-
/* @__PURE__ */ t("button", { className:
|
|
284
|
+
footer: e.showCancel ? /* @__PURE__ */ m(oe, { children: [
|
|
285
|
+
/* @__PURE__ */ t("button", { className: b, onClick: f, children: e.cancelText || "Cancel" }),
|
|
285
286
|
/* @__PURE__ */ t(
|
|
286
287
|
"button",
|
|
287
288
|
{
|
|
288
|
-
className:
|
|
289
|
-
onClick:
|
|
289
|
+
className: `${b} ${e.type === "error" ? q : T} ${c ? "loading" : ""}`,
|
|
290
|
+
onClick: r,
|
|
290
291
|
disabled: c,
|
|
291
292
|
children: e.okText || "OK"
|
|
292
293
|
}
|
|
@@ -294,8 +295,8 @@ function w(e) {
|
|
|
294
295
|
] }) : /* @__PURE__ */ t(
|
|
295
296
|
"button",
|
|
296
297
|
{
|
|
297
|
-
className:
|
|
298
|
-
onClick:
|
|
298
|
+
className: `${b} ${e.type === "error" ? q : T} ${c ? "loading" : ""}`,
|
|
299
|
+
onClick: r,
|
|
299
300
|
disabled: c,
|
|
300
301
|
children: e.okText || "OK"
|
|
301
302
|
}
|
|
@@ -311,26 +312,26 @@ function w(e) {
|
|
|
311
312
|
destroy: l
|
|
312
313
|
};
|
|
313
314
|
}
|
|
314
|
-
function
|
|
315
|
-
return
|
|
315
|
+
function pe(e) {
|
|
316
|
+
return k({ ...e, showCancel: !0 });
|
|
316
317
|
}
|
|
317
|
-
function
|
|
318
|
-
return
|
|
318
|
+
function fe(e) {
|
|
319
|
+
return k({ ...e, type: "info", showCancel: !1 });
|
|
319
320
|
}
|
|
320
|
-
function
|
|
321
|
-
return
|
|
321
|
+
function we(e) {
|
|
322
|
+
return k({ ...e, type: "success", showCancel: !1 });
|
|
322
323
|
}
|
|
323
|
-
function
|
|
324
|
-
return
|
|
324
|
+
function be(e) {
|
|
325
|
+
return k({ ...e, type: "warning", showCancel: !1 });
|
|
325
326
|
}
|
|
326
|
-
function
|
|
327
|
-
return
|
|
327
|
+
function ke(e) {
|
|
328
|
+
return k({ ...e, type: "error", showCancel: !1 });
|
|
328
329
|
}
|
|
329
|
-
u.confirm =
|
|
330
|
-
u.info =
|
|
331
|
-
u.success =
|
|
332
|
-
u.warning =
|
|
333
|
-
u.error =
|
|
330
|
+
u.confirm = pe;
|
|
331
|
+
u.info = fe;
|
|
332
|
+
u.success = we;
|
|
333
|
+
u.warning = be;
|
|
334
|
+
u.error = ke;
|
|
334
335
|
export {
|
|
335
336
|
u as Modal
|
|
336
337
|
};
|