asterui 0.12.63 → 0.12.64
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/Collapse.js +58 -56
- package/dist/components/Collapse.js.map +1 -1
- package/dist/components/DatePicker.d.ts +19 -1
- package/dist/components/DatePicker.js +266 -87
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/Menu.d.ts +1 -1
- package/dist/components/Menu.js +99 -93
- package/dist/components/Menu.js.map +1 -1
- package/dist/components/Modal.js +26 -17
- package/dist/components/Modal.js.map +1 -1
- package/dist/components/Notification.js +53 -45
- package/dist/components/Notification.js.map +1 -1
- package/dist/components/Tabs.js +69 -57
- package/dist/components/Tabs.js.map +1 -1
- package/dist/components/Tooltip.js +38 -35
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/Transfer.js +130 -121
- package/dist/components/Transfer.js.map +1 -1
- package/dist/components/TreeSelect.js +49 -48
- package/dist/components/TreeSelect.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,106 +1,108 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
const
|
|
1
|
+
import { jsx as d, jsxs as A } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as g, useState as I, useId as D } from "react";
|
|
3
|
+
const P = "collapse", T = "collapse-arrow", z = "collapse-plus", B = "collapse-open", E = "collapse-close", k = "collapse-arrow-end", R = "collapse-title", S = "collapse-content", q = {
|
|
4
4
|
sm: "text-sm",
|
|
5
5
|
md: "text-base",
|
|
6
6
|
lg: "text-lg"
|
|
7
|
-
},
|
|
8
|
-
const o = l.collapsible === "disabled",
|
|
9
|
-
|
|
7
|
+
}, N = g(({ item: l, isOpen: s, onToggle: w, icon: c, expandIconPlacement: i, bordered: p, ghost: f, size: m, testId: u }, x) => {
|
|
8
|
+
const o = l.collapsible === "disabled", h = [
|
|
9
|
+
P,
|
|
10
10
|
{
|
|
11
|
-
arrow:
|
|
11
|
+
arrow: T,
|
|
12
12
|
plus: z,
|
|
13
13
|
none: ""
|
|
14
14
|
}[c],
|
|
15
15
|
s ? B : E,
|
|
16
|
-
!
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
q[
|
|
16
|
+
!f && "bg-base-200",
|
|
17
|
+
f && "bg-transparent",
|
|
18
|
+
p && "border border-base-300",
|
|
19
|
+
i === "end" && c !== "none" && k,
|
|
20
|
+
q[m],
|
|
21
21
|
o && "opacity-50 cursor-not-allowed",
|
|
22
22
|
l.className
|
|
23
|
-
].filter(Boolean).join(" "),
|
|
24
|
-
o ||
|
|
25
|
-
}
|
|
26
|
-
return /* @__PURE__ */
|
|
23
|
+
].filter(Boolean).join(" "), C = () => {
|
|
24
|
+
o || w();
|
|
25
|
+
}, n = D(), b = `${n}-header`, v = `${n}-content`;
|
|
26
|
+
return /* @__PURE__ */ A(
|
|
27
27
|
"div",
|
|
28
28
|
{
|
|
29
|
-
ref:
|
|
30
|
-
className:
|
|
31
|
-
"data-testid":
|
|
29
|
+
ref: x,
|
|
30
|
+
className: h,
|
|
31
|
+
"data-testid": u ? `${u}-panel-${l.key}` : void 0,
|
|
32
32
|
"data-state": s ? "open" : "closed",
|
|
33
33
|
children: [
|
|
34
|
-
/* @__PURE__ */
|
|
34
|
+
/* @__PURE__ */ A(
|
|
35
35
|
"div",
|
|
36
36
|
{
|
|
37
|
+
id: b,
|
|
37
38
|
className: `${R} font-medium flex items-center justify-between cursor-pointer`,
|
|
38
|
-
onClick:
|
|
39
|
+
onClick: C,
|
|
39
40
|
role: "button",
|
|
40
41
|
tabIndex: o ? -1 : 0,
|
|
41
42
|
onKeyDown: (a) => {
|
|
42
|
-
(a.key === "Enter" || a.key === " ") && (a.preventDefault(),
|
|
43
|
+
(a.key === "Enter" || a.key === " ") && (a.preventDefault(), C());
|
|
43
44
|
},
|
|
44
45
|
"aria-expanded": s,
|
|
45
46
|
"aria-disabled": o,
|
|
47
|
+
"aria-controls": v,
|
|
46
48
|
children: [
|
|
47
|
-
/* @__PURE__ */
|
|
48
|
-
l.extra && /* @__PURE__ */
|
|
49
|
+
/* @__PURE__ */ d("span", { children: l.label }),
|
|
50
|
+
l.extra && /* @__PURE__ */ d("span", { className: "ml-auto mr-6", children: l.extra })
|
|
49
51
|
]
|
|
50
52
|
}
|
|
51
53
|
),
|
|
52
|
-
/* @__PURE__ */
|
|
54
|
+
/* @__PURE__ */ d("div", { id: v, className: S, role: "region", "aria-labelledby": b, children: l.children })
|
|
53
55
|
]
|
|
54
56
|
}
|
|
55
57
|
);
|
|
56
58
|
});
|
|
57
|
-
|
|
58
|
-
const F =
|
|
59
|
+
N.displayName = "CollapsePanel";
|
|
60
|
+
const F = g(
|
|
59
61
|
({
|
|
60
62
|
items: l = [],
|
|
61
63
|
activeKey: s,
|
|
62
|
-
defaultActiveKey:
|
|
64
|
+
defaultActiveKey: w,
|
|
63
65
|
accordion: c = !1,
|
|
64
|
-
bordered:
|
|
65
|
-
ghost:
|
|
66
|
-
size:
|
|
67
|
-
icon:
|
|
68
|
-
expandIconPlacement:
|
|
69
|
-
onChange:
|
|
66
|
+
bordered: i = !0,
|
|
67
|
+
ghost: p = !1,
|
|
68
|
+
size: f = "md",
|
|
69
|
+
icon: m = "arrow",
|
|
70
|
+
expandIconPlacement: u = "start",
|
|
71
|
+
onChange: x,
|
|
70
72
|
className: o = "",
|
|
71
|
-
"data-testid":
|
|
72
|
-
...
|
|
73
|
-
},
|
|
74
|
-
const
|
|
75
|
-
() =>
|
|
76
|
-
),
|
|
77
|
-
let
|
|
78
|
-
c ?
|
|
73
|
+
"data-testid": y = "collapse",
|
|
74
|
+
...h
|
|
75
|
+
}, C) => {
|
|
76
|
+
const n = (e) => e === void 0 ? [] : Array.isArray(e) ? e : [e], [b, v] = I(
|
|
77
|
+
() => n(w)
|
|
78
|
+
), a = s !== void 0, r = a ? n(s) : b, j = (e) => {
|
|
79
|
+
let t;
|
|
80
|
+
c ? t = r.includes(e) ? [] : [e] : r.includes(e) ? t = r.filter(($) => $ !== e) : t = [...r, e], a || v(t), x?.(t);
|
|
79
81
|
}, K = [
|
|
80
82
|
"flex flex-col",
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
i && !p && "divide-y divide-base-300",
|
|
84
|
+
i && "border border-base-300 rounded-lg overflow-hidden",
|
|
83
85
|
o
|
|
84
86
|
].filter(Boolean).join(" ");
|
|
85
|
-
return /* @__PURE__ */
|
|
87
|
+
return /* @__PURE__ */ d(
|
|
86
88
|
"div",
|
|
87
89
|
{
|
|
88
|
-
ref:
|
|
90
|
+
ref: C,
|
|
89
91
|
className: K,
|
|
90
|
-
"data-testid":
|
|
91
|
-
...
|
|
92
|
-
children: l.map((e) => /* @__PURE__ */
|
|
93
|
-
|
|
92
|
+
"data-testid": y,
|
|
93
|
+
...h,
|
|
94
|
+
children: l.map((e) => /* @__PURE__ */ d(
|
|
95
|
+
N,
|
|
94
96
|
{
|
|
95
97
|
item: e,
|
|
96
|
-
isOpen:
|
|
98
|
+
isOpen: r.includes(e.key),
|
|
97
99
|
onToggle: () => j(e.key),
|
|
98
|
-
icon: e.showArrow === !1 ? "none" :
|
|
99
|
-
expandIconPlacement:
|
|
100
|
+
icon: e.showArrow === !1 ? "none" : m,
|
|
101
|
+
expandIconPlacement: u,
|
|
100
102
|
bordered: !1,
|
|
101
|
-
ghost:
|
|
102
|
-
size:
|
|
103
|
-
testId:
|
|
103
|
+
ghost: p,
|
|
104
|
+
size: f,
|
|
105
|
+
testId: y
|
|
104
106
|
},
|
|
105
107
|
e.key
|
|
106
108
|
))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collapse.js","sources":["../../src/components/Collapse.tsx"],"sourcesContent":["import React, { forwardRef, useState } from 'react'\n\n// DaisyUI classes\nconst dCollapse = 'collapse'\nconst dCollapseArrow = 'collapse-arrow'\nconst dCollapsePlus = 'collapse-plus'\nconst dCollapseOpen = 'collapse-open'\nconst dCollapseClose = 'collapse-close'\nconst dCollapseArrowEnd = 'collapse-arrow-end'\nconst dCollapseTitle = 'collapse-title'\nconst dCollapseContent = 'collapse-content'\n\nexport type CollapseSize = 'sm' | 'md' | 'lg'\nexport type CollapseIconPosition = 'start' | 'end'\nexport type CollapseCollapsible = 'header' | 'icon' | 'disabled'\n\nexport interface CollapseItemType {\n /** Unique key for the panel */\n key: string | number\n /** Panel header/label */\n label: React.ReactNode\n /** Panel content */\n children: React.ReactNode\n /** Extra element in the corner */\n extra?: React.ReactNode\n /** Whether to show the arrow icon */\n showArrow?: boolean\n /** Collapsible mode for this panel */\n collapsible?: CollapseCollapsible\n /** Custom class name for this panel */\n className?: string\n}\n\nexport interface CollapseProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Collapse items */\n items?: CollapseItemType[]\n /** Currently active panel keys (controlled) */\n activeKey?: string | number | (string | number)[]\n /** Default active panel keys (uncontrolled) */\n defaultActiveKey?: string | number | (string | number)[]\n /** Accordion mode - only one panel open at a time */\n accordion?: boolean\n /** Show border around panels */\n bordered?: boolean\n /** Ghost mode - transparent background */\n ghost?: boolean\n /** Size variant */\n size?: CollapseSize\n /** Icon type */\n icon?: 'arrow' | 'plus' | 'none'\n /** Icon placement */\n expandIconPlacement?: CollapseIconPosition\n /** Callback when panels change */\n onChange?: (activeKey: (string | number)[]) => void\n /** Test ID */\n 'data-testid'?: string\n}\n\nconst sizeClasses: Record<CollapseSize, string> = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n}\n\nconst CollapsePanel = forwardRef<\n HTMLDivElement,\n {\n item: CollapseItemType\n isOpen: boolean\n onToggle: () => void\n icon: 'arrow' | 'plus' | 'none'\n expandIconPlacement: CollapseIconPosition\n bordered: boolean\n ghost: boolean\n size: CollapseSize\n testId?: string\n }\n>(({ item, isOpen, onToggle, icon, expandIconPlacement, bordered, ghost, size, testId }, ref) => {\n const isDisabled = item.collapsible === 'disabled'\n\n const iconClasses = {\n arrow: dCollapseArrow,\n plus: dCollapsePlus,\n none: '',\n }\n\n const panelClasses = [\n dCollapse,\n iconClasses[icon],\n isOpen ? dCollapseOpen : dCollapseClose,\n !ghost && 'bg-base-200',\n ghost && 'bg-transparent',\n bordered && 'border border-base-300',\n expandIconPlacement === 'end' && icon !== 'none' && dCollapseArrowEnd,\n sizeClasses[size],\n isDisabled && 'opacity-50 cursor-not-allowed',\n item.className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const handleClick = () => {\n if (!isDisabled) {\n onToggle()\n }\n }\n\n return (\n <div\n ref={ref}\n className={panelClasses}\n data-testid={testId ? `${testId}-panel-${item.key}` : undefined}\n data-state={isOpen ? 'open' : 'closed'}\n >\n <div\n className={`${dCollapseTitle} font-medium flex items-center justify-between cursor-pointer`}\n onClick={handleClick}\n role=\"button\"\n tabIndex={isDisabled ? -1 : 0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }}\n aria-expanded={isOpen}\n aria-disabled={isDisabled}\n >\n <span>{item.label}</span>\n {item.extra && <span className=\"ml-auto mr-6\">{item.extra}</span>}\n </div>\n <div className={dCollapseContent}>\n {item.children}\n </div>\n </div>\n )\n})\n\nCollapsePanel.displayName = 'CollapsePanel'\n\nexport const Collapse = forwardRef<HTMLDivElement, CollapseProps>(\n (\n {\n items = [],\n activeKey,\n defaultActiveKey,\n accordion = false,\n bordered = true,\n ghost = false,\n size = 'md',\n icon = 'arrow',\n expandIconPlacement = 'start',\n onChange,\n className = '',\n 'data-testid': testId = 'collapse',\n ...rest\n },\n ref\n ) => {\n // Normalize keys to array\n const normalizeKeys = (keys: string | number | (string | number)[] | undefined): (string | number)[] => {\n if (keys === undefined) return []\n if (Array.isArray(keys)) return keys\n return [keys]\n }\n\n const [internalActiveKeys, setInternalActiveKeys] = useState<(string | number)[]>(\n () => normalizeKeys(defaultActiveKey)\n )\n\n const isControlled = activeKey !== undefined\n const currentActiveKeys = isControlled ? normalizeKeys(activeKey) : internalActiveKeys\n\n const handleToggle = (key: string | number) => {\n let newActiveKeys: (string | number)[]\n\n if (accordion) {\n // In accordion mode, only one can be open\n newActiveKeys = currentActiveKeys.includes(key) ? [] : [key]\n } else {\n // Toggle the key\n if (currentActiveKeys.includes(key)) {\n newActiveKeys = currentActiveKeys.filter((k) => k !== key)\n } else {\n newActiveKeys = [...currentActiveKeys, key]\n }\n }\n\n if (!isControlled) {\n setInternalActiveKeys(newActiveKeys)\n }\n onChange?.(newActiveKeys)\n }\n\n const containerClasses = [\n 'flex flex-col',\n bordered && !ghost && 'divide-y divide-base-300',\n bordered && 'border border-base-300 rounded-lg overflow-hidden',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div\n ref={ref}\n className={containerClasses}\n data-testid={testId}\n {...rest}\n >\n {items.map((item) => (\n <CollapsePanel\n key={item.key}\n item={item}\n isOpen={currentActiveKeys.includes(item.key)}\n onToggle={() => handleToggle(item.key)}\n icon={item.showArrow === false ? 'none' : icon}\n expandIconPlacement={expandIconPlacement}\n bordered={false}\n ghost={ghost}\n size={size}\n testId={testId}\n />\n ))}\n </div>\n )\n }\n)\n\nCollapse.displayName = 'Collapse'\n"],"names":["dCollapse","dCollapseArrow","dCollapsePlus","dCollapseOpen","dCollapseClose","dCollapseArrowEnd","dCollapseTitle","dCollapseContent","sizeClasses","CollapsePanel","forwardRef","item","isOpen","onToggle","icon","expandIconPlacement","bordered","ghost","size","testId","ref","isDisabled","panelClasses","handleClick","jsxs","e","jsx","Collapse","items","activeKey","defaultActiveKey","accordion","onChange","className","rest","normalizeKeys","keys","internalActiveKeys","setInternalActiveKeys","useState","isControlled","currentActiveKeys","handleToggle","key","newActiveKeys","k","containerClasses"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Collapse.js","sources":["../../src/components/Collapse.tsx"],"sourcesContent":["import React, { forwardRef, useState, useId } from 'react'\n\n// DaisyUI classes\nconst dCollapse = 'collapse'\nconst dCollapseArrow = 'collapse-arrow'\nconst dCollapsePlus = 'collapse-plus'\nconst dCollapseOpen = 'collapse-open'\nconst dCollapseClose = 'collapse-close'\nconst dCollapseArrowEnd = 'collapse-arrow-end'\nconst dCollapseTitle = 'collapse-title'\nconst dCollapseContent = 'collapse-content'\n\nexport type CollapseSize = 'sm' | 'md' | 'lg'\nexport type CollapseIconPosition = 'start' | 'end'\nexport type CollapseCollapsible = 'header' | 'icon' | 'disabled'\n\nexport interface CollapseItemType {\n /** Unique key for the panel */\n key: string | number\n /** Panel header/label */\n label: React.ReactNode\n /** Panel content */\n children: React.ReactNode\n /** Extra element in the corner */\n extra?: React.ReactNode\n /** Whether to show the arrow icon */\n showArrow?: boolean\n /** Collapsible mode for this panel */\n collapsible?: CollapseCollapsible\n /** Custom class name for this panel */\n className?: string\n}\n\nexport interface CollapseProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Collapse items */\n items?: CollapseItemType[]\n /** Currently active panel keys (controlled) */\n activeKey?: string | number | (string | number)[]\n /** Default active panel keys (uncontrolled) */\n defaultActiveKey?: string | number | (string | number)[]\n /** Accordion mode - only one panel open at a time */\n accordion?: boolean\n /** Show border around panels */\n bordered?: boolean\n /** Ghost mode - transparent background */\n ghost?: boolean\n /** Size variant */\n size?: CollapseSize\n /** Icon type */\n icon?: 'arrow' | 'plus' | 'none'\n /** Icon placement */\n expandIconPlacement?: CollapseIconPosition\n /** Callback when panels change */\n onChange?: (activeKey: (string | number)[]) => void\n /** Test ID */\n 'data-testid'?: string\n}\n\nconst sizeClasses: Record<CollapseSize, string> = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n}\n\nconst CollapsePanel = forwardRef<\n HTMLDivElement,\n {\n item: CollapseItemType\n isOpen: boolean\n onToggle: () => void\n icon: 'arrow' | 'plus' | 'none'\n expandIconPlacement: CollapseIconPosition\n bordered: boolean\n ghost: boolean\n size: CollapseSize\n testId?: string\n }\n>(({ item, isOpen, onToggle, icon, expandIconPlacement, bordered, ghost, size, testId }, ref) => {\n const isDisabled = item.collapsible === 'disabled'\n\n const iconClasses = {\n arrow: dCollapseArrow,\n plus: dCollapsePlus,\n none: '',\n }\n\n const panelClasses = [\n dCollapse,\n iconClasses[icon],\n isOpen ? dCollapseOpen : dCollapseClose,\n !ghost && 'bg-base-200',\n ghost && 'bg-transparent',\n bordered && 'border border-base-300',\n expandIconPlacement === 'end' && icon !== 'none' && dCollapseArrowEnd,\n sizeClasses[size],\n isDisabled && 'opacity-50 cursor-not-allowed',\n item.className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const handleClick = () => {\n if (!isDisabled) {\n onToggle()\n }\n }\n\n const panelId = useId()\n const headerId = `${panelId}-header`\n const contentId = `${panelId}-content`\n\n return (\n <div\n ref={ref}\n className={panelClasses}\n data-testid={testId ? `${testId}-panel-${item.key}` : undefined}\n data-state={isOpen ? 'open' : 'closed'}\n >\n <div\n id={headerId}\n className={`${dCollapseTitle} font-medium flex items-center justify-between cursor-pointer`}\n onClick={handleClick}\n role=\"button\"\n tabIndex={isDisabled ? -1 : 0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }}\n aria-expanded={isOpen}\n aria-disabled={isDisabled}\n aria-controls={contentId}\n >\n <span>{item.label}</span>\n {item.extra && <span className=\"ml-auto mr-6\">{item.extra}</span>}\n </div>\n <div id={contentId} className={dCollapseContent} role=\"region\" aria-labelledby={headerId}>\n {item.children}\n </div>\n </div>\n )\n})\n\nCollapsePanel.displayName = 'CollapsePanel'\n\nexport const Collapse = forwardRef<HTMLDivElement, CollapseProps>(\n (\n {\n items = [],\n activeKey,\n defaultActiveKey,\n accordion = false,\n bordered = true,\n ghost = false,\n size = 'md',\n icon = 'arrow',\n expandIconPlacement = 'start',\n onChange,\n className = '',\n 'data-testid': testId = 'collapse',\n ...rest\n },\n ref\n ) => {\n // Normalize keys to array\n const normalizeKeys = (keys: string | number | (string | number)[] | undefined): (string | number)[] => {\n if (keys === undefined) return []\n if (Array.isArray(keys)) return keys\n return [keys]\n }\n\n const [internalActiveKeys, setInternalActiveKeys] = useState<(string | number)[]>(\n () => normalizeKeys(defaultActiveKey)\n )\n\n const isControlled = activeKey !== undefined\n const currentActiveKeys = isControlled ? normalizeKeys(activeKey) : internalActiveKeys\n\n const handleToggle = (key: string | number) => {\n let newActiveKeys: (string | number)[]\n\n if (accordion) {\n // In accordion mode, only one can be open\n newActiveKeys = currentActiveKeys.includes(key) ? [] : [key]\n } else {\n // Toggle the key\n if (currentActiveKeys.includes(key)) {\n newActiveKeys = currentActiveKeys.filter((k) => k !== key)\n } else {\n newActiveKeys = [...currentActiveKeys, key]\n }\n }\n\n if (!isControlled) {\n setInternalActiveKeys(newActiveKeys)\n }\n onChange?.(newActiveKeys)\n }\n\n const containerClasses = [\n 'flex flex-col',\n bordered && !ghost && 'divide-y divide-base-300',\n bordered && 'border border-base-300 rounded-lg overflow-hidden',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div\n ref={ref}\n className={containerClasses}\n data-testid={testId}\n {...rest}\n >\n {items.map((item) => (\n <CollapsePanel\n key={item.key}\n item={item}\n isOpen={currentActiveKeys.includes(item.key)}\n onToggle={() => handleToggle(item.key)}\n icon={item.showArrow === false ? 'none' : icon}\n expandIconPlacement={expandIconPlacement}\n bordered={false}\n ghost={ghost}\n size={size}\n testId={testId}\n />\n ))}\n </div>\n )\n }\n)\n\nCollapse.displayName = 'Collapse'\n"],"names":["dCollapse","dCollapseArrow","dCollapsePlus","dCollapseOpen","dCollapseClose","dCollapseArrowEnd","dCollapseTitle","dCollapseContent","sizeClasses","CollapsePanel","forwardRef","item","isOpen","onToggle","icon","expandIconPlacement","bordered","ghost","size","testId","ref","isDisabled","panelClasses","handleClick","panelId","useId","headerId","contentId","jsxs","e","jsx","Collapse","items","activeKey","defaultActiveKey","accordion","onChange","className","rest","normalizeKeys","keys","internalActiveKeys","setInternalActiveKeys","useState","isControlled","currentActiveKeys","handleToggle","key","newActiveKeys","k","containerClasses"],"mappings":";;AAGA,MAAMA,IAAY,YACZC,IAAiB,kBACjBC,IAAgB,iBAChBC,IAAgB,iBAChBC,IAAiB,kBACjBC,IAAoB,sBACpBC,IAAiB,kBACjBC,IAAmB,oBAgDnBC,IAA4C;AAAA,EAChD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAAgBC,EAapB,CAAC,EAAE,MAAAC,GAAM,QAAAC,GAAQ,UAAAC,GAAU,MAAAC,GAAM,qBAAAC,GAAqB,UAAAC,GAAU,OAAAC,GAAO,MAAAC,GAAM,QAAAC,EAAA,GAAUC,MAAQ;AAC/F,QAAMC,IAAaV,EAAK,gBAAgB,YAQlCW,IAAe;AAAA,IACnBtB;AAAA,IAPkB;AAAA,MAClB,OAAOC;AAAA,MACP,MAAMC;AAAA,MACN,MAAM;AAAA,IAAA,EAKMY,CAAI;AAAA,IAChBF,IAAST,IAAgBC;AAAA,IACzB,CAACa,KAAS;AAAA,IACVA,KAAS;AAAA,IACTD,KAAY;AAAA,IACZD,MAAwB,SAASD,MAAS,UAAUT;AAAA,IACpDG,EAAYU,CAAI;AAAA,IAChBG,KAAc;AAAA,IACdV,EAAK;AAAA,EAAA,EAEJ,OAAO,OAAO,EACd,KAAK,GAAG,GAELY,IAAc,MAAM;AACxB,IAAKF,KACHR,EAAA;AAAA,EAEJ,GAEMW,IAAUC,EAAA,GACVC,IAAW,GAAGF,CAAO,WACrBG,IAAY,GAAGH,CAAO;AAE5B,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAR;AAAA,MACA,WAAWE;AAAA,MACX,eAAaH,IAAS,GAAGA,CAAM,UAAUR,EAAK,GAAG,KAAK;AAAA,MACtD,cAAYC,IAAS,SAAS;AAAA,MAE9B,UAAA;AAAA,QAAA,gBAAAgB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAIF;AAAA,YACJ,WAAW,GAAGpB,CAAc;AAAA,YAC5B,SAASiB;AAAA,YACT,MAAK;AAAA,YACL,UAAUF,IAAa,KAAK;AAAA,YAC5B,WAAW,CAACQ,MAAM;AAChB,eAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACFN,EAAA;AAAA,YAEJ;AAAA,YACA,iBAAeX;AAAA,YACf,iBAAeS;AAAA,YACf,iBAAeM;AAAA,YAEf,UAAA;AAAA,cAAA,gBAAAG,EAAC,QAAA,EAAM,YAAK,MAAA,CAAM;AAAA,cACjBnB,EAAK,SAAS,gBAAAmB,EAAC,UAAK,WAAU,gBAAgB,YAAK,MAAA,CAAM;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAE5D,gBAAAA,EAAC,OAAA,EAAI,IAAIH,GAAW,WAAWpB,GAAkB,MAAK,UAAS,mBAAiBmB,GAC7E,UAAAf,EAAK,SAAA,CACR;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AAEDF,EAAc,cAAc;AAErB,MAAMsB,IAAWrB;AAAA,EACtB,CACE;AAAA,IACE,OAAAsB,IAAQ,CAAA;AAAA,IACR,WAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,UAAAnB,IAAW;AAAA,IACX,OAAAC,IAAQ;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,MAAAJ,IAAO;AAAA,IACP,qBAAAC,IAAsB;AAAA,IACtB,UAAAqB;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,eAAelB,IAAS;AAAA,IACxB,GAAGmB;AAAA,EAAA,GAELlB,MACG;AAEH,UAAMmB,IAAgB,CAACC,MACjBA,MAAS,SAAkB,CAAA,IAC3B,MAAM,QAAQA,CAAI,IAAUA,IACzB,CAACA,CAAI,GAGR,CAACC,GAAoBC,CAAqB,IAAIC;AAAA,MAClD,MAAMJ,EAAcL,CAAgB;AAAA,IAAA,GAGhCU,IAAeX,MAAc,QAC7BY,IAAoBD,IAAeL,EAAcN,CAAS,IAAIQ,GAE9DK,IAAe,CAACC,MAAyB;AAC7C,UAAIC;AAEJ,MAAIb,IAEFa,IAAgBH,EAAkB,SAASE,CAAG,IAAI,CAAA,IAAK,CAACA,CAAG,IAGvDF,EAAkB,SAASE,CAAG,IAChCC,IAAgBH,EAAkB,OAAO,CAACI,MAAMA,MAAMF,CAAG,IAEzDC,IAAgB,CAAC,GAAGH,GAAmBE,CAAG,GAIzCH,KACHF,EAAsBM,CAAa,GAErCZ,IAAWY,CAAa;AAAA,IAC1B,GAEME,IAAmB;AAAA,MACvB;AAAA,MACAlC,KAAY,CAACC,KAAS;AAAA,MACtBD,KAAY;AAAA,MACZqB;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WACE,gBAAAP;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAV;AAAA,QACA,WAAW8B;AAAA,QACX,eAAa/B;AAAA,QACZ,GAAGmB;AAAA,QAEH,UAAAN,EAAM,IAAI,CAACrB,MACV,gBAAAmB;AAAA,UAACrB;AAAA,UAAA;AAAA,YAEC,MAAAE;AAAA,YACA,QAAQkC,EAAkB,SAASlC,EAAK,GAAG;AAAA,YAC3C,UAAU,MAAMmC,EAAanC,EAAK,GAAG;AAAA,YACrC,MAAMA,EAAK,cAAc,KAAQ,SAASG;AAAA,YAC1C,qBAAAC;AAAA,YACA,UAAU;AAAA,YACV,OAAAE;AAAA,YACA,MAAAC;AAAA,YACA,QAAAC;AAAA,UAAA;AAAA,UATKR,EAAK;AAAA,QAAA,CAWb;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEAoB,EAAS,cAAc;"}
|
|
@@ -10,4 +10,22 @@ export interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElemen
|
|
|
10
10
|
/** Test ID prefix for child elements */
|
|
11
11
|
'data-testid'?: string;
|
|
12
12
|
}
|
|
13
|
-
export
|
|
13
|
+
export type DateRangeValue = [Date | null, Date | null];
|
|
14
|
+
export interface DateRangePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
|
|
15
|
+
value?: DateRangeValue;
|
|
16
|
+
defaultValue?: DateRangeValue;
|
|
17
|
+
onChange?: (range: DateRangeValue) => void;
|
|
18
|
+
format?: string;
|
|
19
|
+
placeholder?: [string, string] | string;
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
22
|
+
/** Test ID prefix for child elements */
|
|
23
|
+
'data-testid'?: string;
|
|
24
|
+
}
|
|
25
|
+
declare const DatePickerComponent: React.ForwardRefExoticComponent<DatePickerProps & React.RefAttributes<HTMLDivElement>>;
|
|
26
|
+
declare const DateRangePicker: React.ForwardRefExoticComponent<DateRangePickerProps & React.RefAttributes<HTMLDivElement>>;
|
|
27
|
+
type DatePickerType = typeof DatePickerComponent & {
|
|
28
|
+
Range: typeof DateRangePicker;
|
|
29
|
+
};
|
|
30
|
+
export declare const DatePicker: DatePickerType;
|
|
31
|
+
export {};
|