@misael703/ui 1.1.0 → 1.2.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/chunk-IMHLJKYR.mjs +176 -0
- package/dist/chunk-IMHLJKYR.mjs.map +1 -0
- package/dist/{chunk-Y6CBRW2S.js → chunk-K5S3SV2U.js} +51 -52
- package/dist/chunk-K5S3SV2U.js.map +1 -0
- package/dist/chunk-N2Y2KWX5.mjs +216 -0
- package/dist/chunk-N2Y2KWX5.mjs.map +1 -0
- package/dist/{chunk-HU7RYXQK.js → chunk-N7LFCAAY.js} +59 -63
- package/dist/chunk-N7LFCAAY.js.map +1 -0
- package/dist/{chunk-MPGASTSK.mjs → chunk-OHCS5CYV.mjs} +51 -52
- package/dist/chunk-OHCS5CYV.mjs.map +1 -0
- package/dist/chunk-V7MK42GX.js +238 -0
- package/dist/chunk-V7MK42GX.js.map +1 -0
- package/dist/chunk-VR4OXVKE.js +198 -0
- package/dist/chunk-VR4OXVKE.js.map +1 -0
- package/dist/{chunk-QCVIN2ET.mjs → chunk-YFLVB62R.mjs} +59 -63
- package/dist/chunk-YFLVB62R.mjs.map +1 -0
- package/dist/components/AdvancedPickers.js +5 -5
- package/dist/components/AdvancedPickers.mjs +1 -1
- package/dist/components/Menubar.js +5 -2
- package/dist/components/Menubar.mjs +4 -1
- package/dist/components/NavigationMenu.js +5 -2
- package/dist/components/NavigationMenu.mjs +4 -1
- package/dist/components/Pickers.js +4 -4
- package/dist/components/Pickers.mjs +1 -1
- package/dist/index.js +13 -13
- package/dist/index.mjs +4 -4
- package/dist/styles.css +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +1 -1
- package/dist/chunk-HU7RYXQK.js.map +0 -1
- package/dist/chunk-JDOXRLZW.js +0 -138
- package/dist/chunk-JDOXRLZW.js.map +0 -1
- package/dist/chunk-MPGASTSK.mjs.map +0 -1
- package/dist/chunk-OCE4ODTM.mjs +0 -116
- package/dist/chunk-OCE4ODTM.mjs.map +0 -1
- package/dist/chunk-QCVIN2ET.mjs.map +0 -1
- package/dist/chunk-QI6TVWWF.js +0 -121
- package/dist/chunk-QI6TVWWF.js.map +0 -1
- package/dist/chunk-Y6CBRW2S.js.map +0 -1
- package/dist/chunk-YBOTLQ3G.mjs +0 -99
- package/dist/chunk-YBOTLQ3G.mjs.map +0 -1
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { useDismiss } from './chunk-6P2TKRTL.mjs';
|
|
2
|
+
import { usePopoverPosition } from './chunk-H3PRT76O.mjs';
|
|
3
|
+
import { Portal } from './chunk-QX5GGPV5.mjs';
|
|
4
|
+
import { cx } from './chunk-IEPCH3JB.mjs';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function Menubar({ menus, className, ariaLabel = "Barra de men\xFAs" }) {
|
|
9
|
+
const [openId, setOpenId] = React.useState(null);
|
|
10
|
+
const [active, setActive] = React.useState(0);
|
|
11
|
+
const [tabId, setTabId] = React.useState(menus[0]?.id ?? null);
|
|
12
|
+
const focusOnOpen = React.useRef(false);
|
|
13
|
+
const rootRef = React.useRef(null);
|
|
14
|
+
const panelRef = React.useRef(null);
|
|
15
|
+
const anchorRef = React.useRef(null);
|
|
16
|
+
const triggerRefs = React.useRef({});
|
|
17
|
+
const itemRefs = React.useRef([]);
|
|
18
|
+
const open = openId !== null;
|
|
19
|
+
const openMenu = menus.find((m) => m.id === openId) ?? null;
|
|
20
|
+
const menuIndex = menus.findIndex((m) => m.id === openId);
|
|
21
|
+
const enabledIdx = (openMenu?.items ?? []).map((it, i) => it.separator || it.disabled ? -1 : i).filter((i) => i >= 0);
|
|
22
|
+
const pos = usePopoverPosition(anchorRef, panelRef, {
|
|
23
|
+
open,
|
|
24
|
+
side: "bottom",
|
|
25
|
+
align: "start",
|
|
26
|
+
offset: 6
|
|
27
|
+
});
|
|
28
|
+
useDismiss({
|
|
29
|
+
open,
|
|
30
|
+
onDismiss: () => setOpenId(null),
|
|
31
|
+
refs: [rootRef, panelRef],
|
|
32
|
+
closeOnEscape: false
|
|
33
|
+
});
|
|
34
|
+
const focusTrigger = (id) => {
|
|
35
|
+
if (id) triggerRefs.current[id]?.focus();
|
|
36
|
+
};
|
|
37
|
+
const openMenuById = (id, viaKeyboard) => {
|
|
38
|
+
const el = triggerRefs.current[id];
|
|
39
|
+
if (el) anchorRef.current = el;
|
|
40
|
+
focusOnOpen.current = viaKeyboard;
|
|
41
|
+
setActive(0);
|
|
42
|
+
setTabId(id);
|
|
43
|
+
setOpenId(id);
|
|
44
|
+
};
|
|
45
|
+
const closeAndFocusTrigger = () => {
|
|
46
|
+
const id = openId;
|
|
47
|
+
setOpenId(null);
|
|
48
|
+
focusTrigger(id);
|
|
49
|
+
};
|
|
50
|
+
React.useEffect(() => {
|
|
51
|
+
if (open && focusOnOpen.current) {
|
|
52
|
+
focusOnOpen.current = false;
|
|
53
|
+
const realIdx = enabledIdx[0];
|
|
54
|
+
if (realIdx != null) itemRefs.current[realIdx]?.focus();
|
|
55
|
+
}
|
|
56
|
+
}, [open, enabledIdx]);
|
|
57
|
+
React.useEffect(() => {
|
|
58
|
+
if (!open || focusOnOpen.current) return;
|
|
59
|
+
const realIdx = enabledIdx[active];
|
|
60
|
+
if (realIdx != null) itemRefs.current[realIdx]?.focus();
|
|
61
|
+
}, [open, active, enabledIdx]);
|
|
62
|
+
const selectItem = (item) => {
|
|
63
|
+
if (item.disabled || item.separator) return;
|
|
64
|
+
item.onSelect?.();
|
|
65
|
+
closeAndFocusTrigger();
|
|
66
|
+
};
|
|
67
|
+
const stepMenu = (dir) => {
|
|
68
|
+
if (menus.length === 0) return;
|
|
69
|
+
const from = menuIndex >= 0 ? menuIndex : 0;
|
|
70
|
+
const next = (from + dir + menus.length) % menus.length;
|
|
71
|
+
openMenuById(menus[next].id, true);
|
|
72
|
+
};
|
|
73
|
+
const onTriggerKeyDown = (e, menu, index) => {
|
|
74
|
+
if (e.key === "ArrowDown" || e.key === "Enter" || e.key === " ") {
|
|
75
|
+
e.preventDefault();
|
|
76
|
+
openMenuById(menu.id, true);
|
|
77
|
+
} else if (e.key === "ArrowRight") {
|
|
78
|
+
e.preventDefault();
|
|
79
|
+
const next = menus[(index + 1) % menus.length];
|
|
80
|
+
setTabId(next.id);
|
|
81
|
+
if (open) openMenuById(next.id, true);
|
|
82
|
+
else focusTrigger(next.id);
|
|
83
|
+
} else if (e.key === "ArrowLeft") {
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
const prev = menus[(index - 1 + menus.length) % menus.length];
|
|
86
|
+
setTabId(prev.id);
|
|
87
|
+
if (open) openMenuById(prev.id, true);
|
|
88
|
+
else focusTrigger(prev.id);
|
|
89
|
+
} else if (e.key === "Escape" && open) {
|
|
90
|
+
e.preventDefault();
|
|
91
|
+
setOpenId(null);
|
|
92
|
+
} else if (e.key === "Home") {
|
|
93
|
+
e.preventDefault();
|
|
94
|
+
setTabId(menus[0].id);
|
|
95
|
+
focusTrigger(menus[0].id);
|
|
96
|
+
} else if (e.key === "End") {
|
|
97
|
+
e.preventDefault();
|
|
98
|
+
const last = menus[menus.length - 1];
|
|
99
|
+
setTabId(last.id);
|
|
100
|
+
focusTrigger(last.id);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const onPanelKeyDown = (e) => {
|
|
104
|
+
if (e.key === "Escape") {
|
|
105
|
+
e.preventDefault();
|
|
106
|
+
closeAndFocusTrigger();
|
|
107
|
+
} else if (e.key === "Tab") {
|
|
108
|
+
setOpenId(null);
|
|
109
|
+
} else if (e.key === "ArrowDown") {
|
|
110
|
+
e.preventDefault();
|
|
111
|
+
setActive((a) => Math.min(a + 1, enabledIdx.length - 1));
|
|
112
|
+
} else if (e.key === "ArrowUp") {
|
|
113
|
+
e.preventDefault();
|
|
114
|
+
setActive((a) => Math.max(a - 1, 0));
|
|
115
|
+
} else if (e.key === "Home") {
|
|
116
|
+
e.preventDefault();
|
|
117
|
+
setActive(0);
|
|
118
|
+
} else if (e.key === "End") {
|
|
119
|
+
e.preventDefault();
|
|
120
|
+
setActive(Math.max(enabledIdx.length - 1, 0));
|
|
121
|
+
} else if (e.key === "ArrowRight") {
|
|
122
|
+
e.preventDefault();
|
|
123
|
+
stepMenu(1);
|
|
124
|
+
} else if (e.key === "ArrowLeft") {
|
|
125
|
+
e.preventDefault();
|
|
126
|
+
stepMenu(-1);
|
|
127
|
+
} else if (e.key === "Enter" || e.key === " ") {
|
|
128
|
+
e.preventDefault();
|
|
129
|
+
const realIdx = enabledIdx[active];
|
|
130
|
+
const it = realIdx != null ? openMenu?.items[realIdx] : void 0;
|
|
131
|
+
if (it) selectItem(it);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
return /* @__PURE__ */ jsx("div", { ref: rootRef, role: "menubar", "aria-label": ariaLabel, className: cx("menubar", className), children: menus.map((menu, index) => {
|
|
135
|
+
const isOpen = openId === menu.id;
|
|
136
|
+
return /* @__PURE__ */ jsxs("div", { className: "menubar__menu", children: [
|
|
137
|
+
/* @__PURE__ */ jsx(
|
|
138
|
+
"button",
|
|
139
|
+
{
|
|
140
|
+
type: "button",
|
|
141
|
+
role: "menuitem",
|
|
142
|
+
ref: (el) => {
|
|
143
|
+
triggerRefs.current[menu.id] = el;
|
|
144
|
+
},
|
|
145
|
+
tabIndex: (tabId ?? menus[0]?.id) === menu.id ? 0 : -1,
|
|
146
|
+
"aria-haspopup": "menu",
|
|
147
|
+
"aria-expanded": isOpen,
|
|
148
|
+
className: cx("menubar__trigger", isOpen && "is-open"),
|
|
149
|
+
onClick: (e) => {
|
|
150
|
+
if (isOpen) {
|
|
151
|
+
setOpenId(null);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
anchorRef.current = e.currentTarget;
|
|
155
|
+
focusOnOpen.current = false;
|
|
156
|
+
setActive(0);
|
|
157
|
+
setTabId(menu.id);
|
|
158
|
+
setOpenId(menu.id);
|
|
159
|
+
},
|
|
160
|
+
onMouseEnter: (e) => {
|
|
161
|
+
if (!openId) return;
|
|
162
|
+
anchorRef.current = e.currentTarget;
|
|
163
|
+
focusOnOpen.current = false;
|
|
164
|
+
setActive(0);
|
|
165
|
+
setTabId(menu.id);
|
|
166
|
+
setOpenId(menu.id);
|
|
167
|
+
},
|
|
168
|
+
onFocus: () => setTabId(menu.id),
|
|
169
|
+
onKeyDown: (e) => onTriggerKeyDown(e, menu, index),
|
|
170
|
+
children: menu.label
|
|
171
|
+
}
|
|
172
|
+
),
|
|
173
|
+
isOpen && /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(
|
|
174
|
+
"ul",
|
|
175
|
+
{
|
|
176
|
+
ref: panelRef,
|
|
177
|
+
role: "menu",
|
|
178
|
+
"aria-label": typeof menu.label === "string" ? menu.label : void 0,
|
|
179
|
+
className: "menubar__list",
|
|
180
|
+
onKeyDown: onPanelKeyDown,
|
|
181
|
+
style: {
|
|
182
|
+
position: "absolute",
|
|
183
|
+
top: pos.top,
|
|
184
|
+
left: pos.left,
|
|
185
|
+
visibility: pos.ready ? "visible" : "hidden"
|
|
186
|
+
},
|
|
187
|
+
children: menu.items.map(
|
|
188
|
+
(item, i) => item.separator ? /* @__PURE__ */ jsx("li", { className: "menubar__separator", role: "separator" }, item.id) : /* @__PURE__ */ jsx("li", { role: "none", children: /* @__PURE__ */ jsxs(
|
|
189
|
+
"button",
|
|
190
|
+
{
|
|
191
|
+
type: "button",
|
|
192
|
+
role: "menuitem",
|
|
193
|
+
ref: (el) => {
|
|
194
|
+
itemRefs.current[i] = el;
|
|
195
|
+
},
|
|
196
|
+
tabIndex: enabledIdx[active] === i ? 0 : -1,
|
|
197
|
+
disabled: item.disabled,
|
|
198
|
+
className: cx("menubar__item", item.disabled && "is-disabled", enabledIdx[active] === i && "is-active"),
|
|
199
|
+
onMouseEnter: () => setActive(enabledIdx.indexOf(i)),
|
|
200
|
+
onClick: () => selectItem(item),
|
|
201
|
+
children: [
|
|
202
|
+
/* @__PURE__ */ jsx("span", { className: "menubar__label", children: item.label }),
|
|
203
|
+
item.shortcut && /* @__PURE__ */ jsx("kbd", { className: "menubar__shortcut", children: item.shortcut })
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
) }, item.id)
|
|
207
|
+
)
|
|
208
|
+
}
|
|
209
|
+
) })
|
|
210
|
+
] }, menu.id);
|
|
211
|
+
}) });
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export { Menubar };
|
|
215
|
+
//# sourceMappingURL=chunk-N2Y2KWX5.mjs.map
|
|
216
|
+
//# sourceMappingURL=chunk-N2Y2KWX5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Menubar.tsx"],"names":[],"mappings":"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","file":"chunk-N2Y2KWX5.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { useDismiss } from '../hooks/useDismiss';\n\nexport interface MenubarItem {\n id: string;\n label?: React.ReactNode;\n onSelect?: () => void;\n disabled?: boolean;\n separator?: boolean;\n shortcut?: string;\n}\n\nexport interface MenubarMenu {\n id: string;\n label: React.ReactNode;\n items: MenubarItem[];\n}\n\nexport interface MenubarProps {\n menus: MenubarMenu[];\n className?: string;\n ariaLabel?: string;\n}\n\nexport function Menubar({ menus, className, ariaLabel = 'Barra de menús' }: MenubarProps) {\n const [openId, setOpenId] = React.useState<string | null>(null);\n const [active, setActive] = React.useState(0);\n // Roving tab stop for the menubar row (one tab stop, arrows move between\n // triggers — WAI-ARIA menubar pattern).\n const [tabId, setTabId] = React.useState<string | null>(menus[0]?.id ?? null);\n // Keyboard opens move focus into the menu; pointer opens don't.\n const focusOnOpen = React.useRef(false);\n const rootRef = React.useRef<HTMLDivElement>(null);\n const panelRef = React.useRef<HTMLUListElement>(null);\n const anchorRef = React.useRef<HTMLElement | null>(null);\n const triggerRefs = React.useRef<Record<string, HTMLButtonElement | null>>({});\n const itemRefs = React.useRef<Array<HTMLButtonElement | null>>([]);\n\n const open = openId !== null;\n const openMenu = menus.find((m) => m.id === openId) ?? null;\n const menuIndex = menus.findIndex((m) => m.id === openId);\n\n // Positions within the open menu that are selectable (no\n // separators/disabled). `active` indexes into this list.\n const enabledIdx = (openMenu?.items ?? [])\n .map((it, i) => (it.separator || it.disabled ? -1 : i))\n .filter((i) => i >= 0);\n\n const pos = usePopoverPosition(anchorRef, panelRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 6,\n });\n\n useDismiss({\n open,\n onDismiss: () => setOpenId(null),\n refs: [rootRef, panelRef],\n closeOnEscape: false,\n });\n\n const focusTrigger = (id: string | null) => {\n if (id) triggerRefs.current[id]?.focus();\n };\n\n const openMenuById = (id: string, viaKeyboard: boolean) => {\n const el = triggerRefs.current[id];\n if (el) anchorRef.current = el;\n focusOnOpen.current = viaKeyboard;\n setActive(0);\n setTabId(id);\n setOpenId(id);\n };\n\n const closeAndFocusTrigger = () => {\n const id = openId;\n setOpenId(null);\n focusTrigger(id);\n };\n\n React.useEffect(() => {\n if (open && focusOnOpen.current) {\n focusOnOpen.current = false;\n const realIdx = enabledIdx[0];\n if (realIdx != null) itemRefs.current[realIdx]?.focus();\n }\n }, [open, enabledIdx]);\n\n React.useEffect(() => {\n if (!open || focusOnOpen.current) return;\n const realIdx = enabledIdx[active];\n if (realIdx != null) itemRefs.current[realIdx]?.focus();\n }, [open, active, enabledIdx]);\n\n const selectItem = (item: MenubarItem) => {\n if (item.disabled || item.separator) return;\n item.onSelect?.();\n closeAndFocusTrigger();\n };\n\n const stepMenu = (dir: 1 | -1) => {\n if (menus.length === 0) return;\n const from = menuIndex >= 0 ? menuIndex : 0;\n const next = (from + dir + menus.length) % menus.length;\n openMenuById(menus[next].id, true);\n };\n\n const onTriggerKeyDown = (e: React.KeyboardEvent, menu: MenubarMenu, index: number) => {\n if (e.key === 'ArrowDown' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n openMenuById(menu.id, true);\n } else if (e.key === 'ArrowRight') {\n e.preventDefault();\n const next = menus[(index + 1) % menus.length];\n setTabId(next.id);\n if (open) openMenuById(next.id, true);\n else focusTrigger(next.id);\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n const prev = menus[(index - 1 + menus.length) % menus.length];\n setTabId(prev.id);\n if (open) openMenuById(prev.id, true);\n else focusTrigger(prev.id);\n } else if (e.key === 'Escape' && open) {\n e.preventDefault();\n setOpenId(null);\n } else if (e.key === 'Home') {\n e.preventDefault();\n setTabId(menus[0].id);\n focusTrigger(menus[0].id);\n } else if (e.key === 'End') {\n e.preventDefault();\n const last = menus[menus.length - 1];\n setTabId(last.id);\n focusTrigger(last.id);\n }\n };\n\n const onPanelKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n closeAndFocusTrigger();\n } else if (e.key === 'Tab') {\n setOpenId(null);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActive((a) => Math.min(a + 1, enabledIdx.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActive((a) => Math.max(a - 1, 0));\n } else if (e.key === 'Home') {\n e.preventDefault();\n setActive(0);\n } else if (e.key === 'End') {\n e.preventDefault();\n setActive(Math.max(enabledIdx.length - 1, 0));\n } else if (e.key === 'ArrowRight') {\n e.preventDefault();\n stepMenu(1);\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n stepMenu(-1);\n } else if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n const realIdx = enabledIdx[active];\n const it = realIdx != null ? openMenu?.items[realIdx] : undefined;\n if (it) selectItem(it);\n }\n };\n\n return (\n <div ref={rootRef} role=\"menubar\" aria-label={ariaLabel} className={cx('menubar', className)}>\n {menus.map((menu, index) => {\n const isOpen = openId === menu.id;\n return (\n <div key={menu.id} className=\"menubar__menu\">\n <button\n type=\"button\"\n role=\"menuitem\"\n ref={(el) => { triggerRefs.current[menu.id] = el; }}\n tabIndex={(tabId ?? menus[0]?.id) === menu.id ? 0 : -1}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n className={cx('menubar__trigger', isOpen && 'is-open')}\n onClick={(e) => {\n if (isOpen) { setOpenId(null); return; }\n anchorRef.current = e.currentTarget;\n focusOnOpen.current = false;\n setActive(0);\n setTabId(menu.id);\n setOpenId(menu.id);\n }}\n onMouseEnter={(e) => {\n if (!openId) return;\n anchorRef.current = e.currentTarget;\n focusOnOpen.current = false;\n setActive(0);\n setTabId(menu.id);\n setOpenId(menu.id);\n }}\n onFocus={() => setTabId(menu.id)}\n onKeyDown={(e) => onTriggerKeyDown(e, menu, index)}\n >\n {menu.label}\n </button>\n {isOpen && (\n <Portal>\n <ul\n ref={panelRef}\n role=\"menu\"\n aria-label={typeof menu.label === 'string' ? menu.label : undefined}\n className=\"menubar__list\"\n onKeyDown={onPanelKeyDown}\n style={{\n position: 'absolute',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {menu.items.map((item, i) =>\n item.separator ? (\n <li key={item.id} className=\"menubar__separator\" role=\"separator\" />\n ) : (\n <li key={item.id} role=\"none\">\n <button\n type=\"button\"\n role=\"menuitem\"\n ref={(el) => { itemRefs.current[i] = el; }}\n tabIndex={enabledIdx[active] === i ? 0 : -1}\n disabled={item.disabled}\n className={cx('menubar__item', item.disabled && 'is-disabled', enabledIdx[active] === i && 'is-active')}\n onMouseEnter={() => setActive(enabledIdx.indexOf(i))}\n onClick={() => selectItem(item)}\n >\n <span className=\"menubar__label\">{item.label}</span>\n {item.shortcut && <kbd className=\"menubar__shortcut\">{item.shortcut}</kbd>}\n </button>\n </li>\n )\n )}\n </ul>\n </Portal>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n"]}
|
|
@@ -8,7 +8,6 @@ var chunkTEQ67JKX_js = require('./chunk-TEQ67JKX.js');
|
|
|
8
8
|
var chunkRQOTH7I7_js = require('./chunk-RQOTH7I7.js');
|
|
9
9
|
var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
|
|
10
10
|
var React = require('react');
|
|
11
|
-
var reactDom = require('react-dom');
|
|
12
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
13
12
|
|
|
14
13
|
function _interopNamespace(e) {
|
|
@@ -205,22 +204,17 @@ function DatePicker({
|
|
|
205
204
|
const [view, setView] = React__namespace.useState(() => startOfMonth(value ?? /* @__PURE__ */ new Date()));
|
|
206
205
|
const wrapRef = React__namespace.useRef(null);
|
|
207
206
|
const popoverRef = React__namespace.useRef(null);
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
React__namespace.useEffect(() => {
|
|
220
|
-
if (!open || !wrapRef.current) return;
|
|
221
|
-
const t = wrapRef.current.getBoundingClientRect();
|
|
222
|
-
setCoords({ top: t.bottom + 4 + window.scrollY, left: t.left + window.scrollX });
|
|
223
|
-
}, [open]);
|
|
207
|
+
const pos = chunkDPMUWQHL_js.usePopoverPosition(wrapRef, popoverRef, {
|
|
208
|
+
open,
|
|
209
|
+
side: "bottom",
|
|
210
|
+
align: "start",
|
|
211
|
+
offset: 4
|
|
212
|
+
});
|
|
213
|
+
chunkXMLBKK7X_js.useDismiss({
|
|
214
|
+
open,
|
|
215
|
+
onDismiss: () => setOpen(false),
|
|
216
|
+
refs: [wrapRef, popoverRef]
|
|
217
|
+
});
|
|
224
218
|
React__namespace.useEffect(() => {
|
|
225
219
|
if (value) setView(startOfMonth(value));
|
|
226
220
|
}, [value]);
|
|
@@ -260,52 +254,54 @@ function DatePicker({
|
|
|
260
254
|
children: /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.CalendarIcon, { size: 16 })
|
|
261
255
|
}
|
|
262
256
|
),
|
|
263
|
-
open &&
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
257
|
+
open && /* @__PURE__ */ jsxRuntime.jsx(chunkGLYGO7WX_js.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
258
|
+
"div",
|
|
259
|
+
{
|
|
260
|
+
ref: popoverRef,
|
|
261
|
+
className: chunkPASF6T4H_js.cx("datepicker__popover", "is-floating"),
|
|
262
|
+
role: "dialog",
|
|
263
|
+
style: {
|
|
264
|
+
position: "absolute",
|
|
265
|
+
top: pos.top,
|
|
266
|
+
left: pos.left,
|
|
267
|
+
visibility: pos.ready ? "visible" : "hidden"
|
|
268
|
+
},
|
|
269
|
+
children: [
|
|
270
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "datepicker__nav", children: [
|
|
271
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => setView((v) => addMonths(v, -1)), "aria-label": locale["calendar.prevMonth"], children: /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronLeft, { size: 16 }) }),
|
|
272
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "datepicker__title", children: [
|
|
273
|
+
months[view.getMonth()],
|
|
274
|
+
" ",
|
|
275
|
+
view.getFullYear()
|
|
280
276
|
] }),
|
|
281
|
-
/* @__PURE__ */ jsxRuntime.
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
277
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => setView((v) => addMonths(v, 1)), "aria-label": locale["calendar.nextMonth"], children: /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronRight, { size: 16 }) })
|
|
278
|
+
] }),
|
|
279
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "datepicker__grid", children: [
|
|
280
|
+
weekdays.map((w, i) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "datepicker__dow", children: w }, i)),
|
|
281
|
+
cells.map((d, i) => {
|
|
282
|
+
if (!d) return /* @__PURE__ */ jsxRuntime.jsx("span", {}, `b${i}`);
|
|
283
|
+
const sel = value && isSameDay(d, value);
|
|
284
|
+
const today = isSameDay(d, /* @__PURE__ */ new Date());
|
|
285
|
+
const off = isDisabled(d);
|
|
286
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
287
|
+
"button",
|
|
288
|
+
{
|
|
289
|
+
type: "button",
|
|
290
|
+
className: chunkPASF6T4H_js.cx("datepicker__day", sel && "is-selected", today && "is-today", off && "is-disabled"),
|
|
291
|
+
disabled: !!off,
|
|
292
|
+
onClick: () => {
|
|
293
|
+
onChange(d);
|
|
294
|
+
setOpen(false);
|
|
299
295
|
},
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
)
|
|
296
|
+
children: d.getDate()
|
|
297
|
+
},
|
|
298
|
+
i
|
|
299
|
+
);
|
|
300
|
+
})
|
|
301
|
+
] })
|
|
302
|
+
]
|
|
303
|
+
}
|
|
304
|
+
) })
|
|
309
305
|
] });
|
|
310
306
|
}
|
|
311
307
|
function FileUpload({
|
|
@@ -375,5 +371,5 @@ function FileUpload({
|
|
|
375
371
|
exports.Combobox = Combobox;
|
|
376
372
|
exports.DatePicker = DatePicker;
|
|
377
373
|
exports.FileUpload = FileUpload;
|
|
378
|
-
//# sourceMappingURL=chunk-
|
|
379
|
-
//# sourceMappingURL=chunk-
|
|
374
|
+
//# sourceMappingURL=chunk-N7LFCAAY.js.map
|
|
375
|
+
//# sourceMappingURL=chunk-N7LFCAAY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Pickers.tsx"],"names":["useLocale","React","usePopoverPosition","useDismiss","jsxs","cx","jsx","X","Portal","resolveDateFormat","dateFormatPlaceholder","formatDate","parseDate","CalendarIcon","ChevronLeft","ChevronRight"],"mappings":"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","file":"chunk-N7LFCAAY.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { CalendarIcon, ChevronLeft, ChevronRight, X } from './Icons';\nimport { resolveDateFormat, formatDate, parseDate, dateFormatPlaceholder, type DateFormat } from '../utils/dateFormat';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { useDismiss } from '../hooks/useDismiss';\n\n// ---------- Combobox -----------------------------------------------------\nexport interface ComboboxOption<T = string> {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxProps<T = string> {\n value: T | null;\n onChange: (value: T | null) => void;\n options: ComboboxOption<T>[];\n placeholder?: string;\n emptyMessage?: string;\n filter?: (option: ComboboxOption<T>, query: string) => boolean;\n className?: string;\n invalid?: boolean;\n disabled?: boolean;\n id?: string;\n}\n\nconst defaultFilter = <T,>(o: ComboboxOption<T>, q: string) =>\n o.label.toLowerCase().includes(q.toLowerCase());\n\nexport function Combobox<T = string>({\n value, onChange, options, placeholder,\n emptyMessage, filter = defaultFilter,\n className, invalid, disabled, id,\n}: ComboboxProps<T>) {\n const locale = useLocale();\n const ph = placeholder ?? locale['common.search'];\n const empty = emptyMessage ?? locale['common.noResults'];\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState('');\n const [active, setActive] = React.useState(0);\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n // Stable per-instance listbox id so multiple Comboboxes don't collide on aria-controls.\n const reactId = React.useId();\n const listboxId = `${id ?? reactId}-listbox`;\n\n const selected = React.useMemo(\n () => options.find((o) => o.value === value) ?? null,\n [options, value]\n );\n const filtered = React.useMemo(\n () => (query ? options.filter((o) => filter(o, query)) : options),\n [options, query, filter]\n );\n\n const pos = usePopoverPosition(wrapRef, listRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n matchAnchorWidth: true,\n });\n\n // Escape is handled by the input's onKeyDown; here we only need\n // outside-click (closeOnEscape: false avoids a double close).\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, listRef],\n closeOnEscape: false,\n });\n\n React.useEffect(() => { setActive(0); }, [query, open]);\n\n const onKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n setActive((a) => Math.min(filtered.length - 1, a + 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActive((a) => Math.max(0, a - 1));\n } else if (e.key === 'Enter') {\n e.preventDefault();\n const opt = filtered[active];\n if (opt && !opt.disabled) {\n onChange(opt.value);\n setQuery('');\n setOpen(false);\n }\n } else if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n return (\n <div ref={wrapRef} className={cx('combobox', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={listboxId}\n className=\"combobox__input\"\n placeholder={ph}\n disabled={disabled}\n value={open ? query : selected?.label ?? ''}\n onFocus={() => setOpen(true)}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\n onKeyDown={onKey}\n />\n {selected && !open && (\n <button\n type=\"button\"\n className=\"combobox__clear\"\n onClick={() => { onChange(null); setQuery(''); inputRef.current?.focus(); }}\n aria-label={locale['picker.clearSelection']}\n ><X size={16} /></button>\n )}\n {open && (\n <Portal>\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n className={cx('combobox__list', 'is-floating')}\n style={{\n position: 'absolute',\n top: pos.top,\n left: pos.left,\n width: pos.width,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {filtered.length === 0 ? (\n <li className=\"combobox__empty\">{empty}</li>\n ) : (\n filtered.map((o, i) => (\n <li\n key={String(o.value)}\n role=\"option\"\n aria-selected={o.value === value}\n aria-disabled={o.disabled}\n className={cx('combobox__option', i === active && 'is-active', o.value === value && 'is-selected', o.disabled && 'is-disabled')}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => {\n e.preventDefault();\n if (o.disabled) return;\n onChange(o.value);\n setQuery('');\n setOpen(false);\n }}\n >\n <span className=\"combobox__option-label\">{o.label}</span>\n {o.description && <span className=\"combobox__option-desc\">{o.description}</span>}\n </li>\n ))\n )}\n </ul>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- DatePicker (text + calendar popover) -------------------------\nfunction startOfMonth(d: Date) { return new Date(d.getFullYear(), d.getMonth(), 1); }\nfunction addMonths(d: Date, n: number) { return new Date(d.getFullYear(), d.getMonth() + n, 1); }\nfunction isSameDay(a: Date, b: Date) {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nexport interface DatePickerProps {\n value: Date | null;\n onChange: (date: Date | null) => void;\n minDate?: Date;\n maxDate?: Date;\n placeholder?: string;\n disabled?: boolean;\n invalid?: boolean;\n className?: string;\n id?: string;\n /**\n * Display & parse format. Default `'auto'` derives from `configureBrand().locale`\n * (e.g. `es-CL` → `dd-mm-aaaa`, `en-US` → `mm-dd-aaaa`, `ja-JP` → `aaaa-mm-dd`).\n */\n format?: DateFormat;\n}\n\nexport function DatePicker({\n value, onChange, minDate, maxDate, placeholder,\n disabled, invalid, className, id, format = 'auto',\n}: DatePickerProps) {\n const locale = useLocale();\n const fmt = resolveDateFormat(format);\n const ph = placeholder ?? dateFormatPlaceholder(fmt);\n const weekdays = locale['picker.weekdaysShort'];\n const months = locale['calendar.months'];\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState(() => startOfMonth(value ?? new Date()));\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n\n // Portaled to body (escapes overflow ancestors) with flip/clamp and\n // scroll/resize reposition — same primitive as Combobox above. No\n // returnFocusRef: the input opens on focus, so refocusing it on close\n // would immediately reopen the calendar (Combobox omits it for the same\n // reason). Escape still closes via useDismiss's default handler.\n const pos = usePopoverPosition(wrapRef, popoverRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n });\n\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, popoverRef],\n });\n\n React.useEffect(() => {\n if (value) setView(startOfMonth(value));\n }, [value]);\n\n const monthStart = view;\n const startDow = (monthStart.getDay() + 6) % 7; // Mon=0\n const daysInMonth = new Date(view.getFullYear(), view.getMonth() + 1, 0).getDate();\n const cells: (Date | null)[] = [];\n for (let i = 0; i < startDow; i++) cells.push(null);\n for (let d = 1; d <= daysInMonth; d++) cells.push(new Date(view.getFullYear(), view.getMonth(), d));\n\n const isDisabled = (d: Date) =>\n (minDate && d < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) ||\n (maxDate && d > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()));\n\n return (\n <div ref={wrapRef} className={cx('datepicker', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <input\n id={id}\n type=\"text\"\n className=\"datepicker__input\"\n placeholder={ph}\n disabled={disabled}\n value={value ? formatDate(value, fmt) : ''}\n onChange={(e) => {\n const d = parseDate(e.target.value, fmt);\n onChange(d);\n }}\n onFocus={() => setOpen(true)}\n aria-invalid={invalid || undefined}\n />\n <button\n type=\"button\"\n className=\"datepicker__toggle\"\n onClick={() => setOpen((o) => !o)}\n disabled={disabled}\n aria-label={locale['picker.openCalendar']}\n ><CalendarIcon size={16} /></button>\n {open && (\n <Portal>\n <div\n ref={popoverRef}\n className={cx('datepicker__popover', 'is-floating')}\n role=\"dialog\"\n style={{\n position: 'absolute',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n <div className=\"datepicker__nav\">\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, -1))} aria-label={locale['calendar.prevMonth']}><ChevronLeft size={16} /></button>\n <span className=\"datepicker__title\">{months[view.getMonth()]} {view.getFullYear()}</span>\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, 1))} aria-label={locale['calendar.nextMonth']}><ChevronRight size={16} /></button>\n </div>\n <div className=\"datepicker__grid\">\n {weekdays.map((w, i) => <span key={i} className=\"datepicker__dow\">{w}</span>)}\n {cells.map((d, i) => {\n if (!d) return <span key={`b${i}`} />;\n const sel = value && isSameDay(d, value);\n const today = isSameDay(d, new Date());\n const off = isDisabled(d);\n return (\n <button\n key={i}\n type=\"button\"\n className={cx('datepicker__day', sel && 'is-selected', today && 'is-today', off && 'is-disabled')}\n disabled={!!off}\n onClick={() => { onChange(d); setOpen(false); }}\n >\n {d.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- FileUpload (drop zone) ---------------------------------------\nexport interface FileUploadProps {\n onFiles: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // bytes\n disabled?: boolean;\n className?: string;\n hint?: React.ReactNode;\n /** Accessible name for the drop zone (e.g. \"Subir foto de perfil\"). */\n 'aria-label'?: string;\n}\n\nexport function FileUpload({\n onFiles, accept, multiple = false, maxSize, disabled, className, hint,\n 'aria-label': ariaLabel,\n}: FileUploadProps) {\n const [drag, setDrag] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const hintId = React.useId();\n const locale = useLocale();\n const handle = (list: FileList | null) => {\n if (!list) return;\n let arr = Array.from(list);\n if (maxSize) arr = arr.filter((f) => f.size <= maxSize);\n if (!multiple) arr = arr.slice(0, 1);\n onFiles(arr);\n };\n return (\n <div\n className={cx('file-upload', drag && 'is-drag', disabled && 'is-disabled', className)}\n onDragOver={(e) => { e.preventDefault(); if (!disabled) setDrag(true); }}\n onDragLeave={() => setDrag(false)}\n onDrop={(e) => { e.preventDefault(); setDrag(false); if (!disabled) handle(e.dataTransfer.files); }}\n onClick={() => !disabled && inputRef.current?.click()}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-label={ariaLabel}\n aria-describedby={hint ? hintId : undefined}\n onKeyDown={(e) => { if ((e.key === 'Enter' || e.key === ' ') && !disabled) inputRef.current?.click(); }}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n hidden\n onChange={(e) => handle(e.target.files)}\n />\n <div className=\"file-upload__icon\" aria-hidden=\"true\">⤴</div>\n <div className=\"file-upload__title\">{locale['fileUpload.title']}</div>\n {hint && <div id={hintId} className=\"file-upload__hint\">{hint}</div>}\n </div>\n );\n}\n"]}
|
|
@@ -7,7 +7,6 @@ import { useLocale } from './chunk-ZRFSTYRL.mjs';
|
|
|
7
7
|
import { X, Check, CalendarIcon, ChevronLeft, ChevronRight, Search } from './chunk-CIBJKJV3.mjs';
|
|
8
8
|
import { cx } from './chunk-IEPCH3JB.mjs';
|
|
9
9
|
import * as React from 'react';
|
|
10
|
-
import { createPortal } from 'react-dom';
|
|
11
10
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
12
11
|
|
|
13
12
|
var dfilter = (o, q) => o.label.toLowerCase().includes(q.toLowerCase());
|
|
@@ -200,22 +199,19 @@ function DateRangePicker({
|
|
|
200
199
|
const [hover, setHover] = React.useState(null);
|
|
201
200
|
const wrapRef = React.useRef(null);
|
|
202
201
|
const popoverRef = React.useRef(null);
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
const t = wrapRef.current.getBoundingClientRect();
|
|
217
|
-
setCoords({ top: t.bottom + 6 + window.scrollY, left: t.left + window.scrollX });
|
|
218
|
-
}, [open]);
|
|
202
|
+
const triggerRef = React.useRef(null);
|
|
203
|
+
const pos = usePopoverPosition(wrapRef, popoverRef, {
|
|
204
|
+
open,
|
|
205
|
+
side: "bottom",
|
|
206
|
+
align: "start",
|
|
207
|
+
offset: 6
|
|
208
|
+
});
|
|
209
|
+
useDismiss({
|
|
210
|
+
open,
|
|
211
|
+
onDismiss: () => setOpen(false),
|
|
212
|
+
refs: [wrapRef, popoverRef],
|
|
213
|
+
returnFocusRef: triggerRef
|
|
214
|
+
});
|
|
219
215
|
const monthGrid0 = React.useMemo(() => buildMonthGrid(view, 0), [view]);
|
|
220
216
|
const monthGrid1 = React.useMemo(() => buildMonthGrid(view, 1), [view]);
|
|
221
217
|
const isDisabled = (d) => minDate && d < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()) || maxDate && d > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate());
|
|
@@ -273,6 +269,7 @@ function DateRangePicker({
|
|
|
273
269
|
/* @__PURE__ */ jsxs(
|
|
274
270
|
"button",
|
|
275
271
|
{
|
|
272
|
+
ref: triggerRef,
|
|
276
273
|
id,
|
|
277
274
|
type: "button",
|
|
278
275
|
className: "daterange__trigger",
|
|
@@ -286,40 +283,42 @@ function DateRangePicker({
|
|
|
286
283
|
]
|
|
287
284
|
}
|
|
288
285
|
),
|
|
289
|
-
open &&
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
/* @__PURE__ */
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
286
|
+
open && /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(
|
|
287
|
+
"div",
|
|
288
|
+
{
|
|
289
|
+
ref: popoverRef,
|
|
290
|
+
className: cx("daterange__popover", "is-floating"),
|
|
291
|
+
role: "dialog",
|
|
292
|
+
onMouseLeave: () => setHover(null),
|
|
293
|
+
style: {
|
|
294
|
+
position: "absolute",
|
|
295
|
+
top: pos.top,
|
|
296
|
+
left: pos.left,
|
|
297
|
+
visibility: pos.ready ? "visible" : "hidden"
|
|
298
|
+
},
|
|
299
|
+
children: [
|
|
300
|
+
presets && presets.length > 0 && /* @__PURE__ */ jsx("ul", { className: "daterange__presets", children: presets.map((p, i) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("button", { type: "button", onClick: () => {
|
|
301
|
+
onChange(p.range());
|
|
302
|
+
setOpen(false);
|
|
303
|
+
}, children: p.label }) }, i)) }),
|
|
304
|
+
/* @__PURE__ */ jsxs("div", { className: "daterange__panes", children: [
|
|
305
|
+
/* @__PURE__ */ jsxs("div", { className: "daterange__nav", children: [
|
|
306
|
+
/* @__PURE__ */ jsx("button", { type: "button", onClick: () => setView((v) => addMonths(v, -1)), "aria-label": locale["calendar.prevMonth"], children: /* @__PURE__ */ jsx(ChevronLeft, { size: 16 }) }),
|
|
307
|
+
/* @__PURE__ */ jsx("span", {}),
|
|
308
|
+
/* @__PURE__ */ jsx("button", { type: "button", onClick: () => setView((v) => addMonths(v, 1)), "aria-label": locale["calendar.nextMonth"], children: /* @__PURE__ */ jsx(ChevronRight, { size: 16 }) })
|
|
309
|
+
] }),
|
|
310
|
+
/* @__PURE__ */ jsxs("div", { className: "daterange__months", children: [
|
|
311
|
+
renderMonth(0),
|
|
312
|
+
renderMonth(1)
|
|
313
|
+
] }),
|
|
314
|
+
/* @__PURE__ */ jsxs("div", { className: "daterange__actions", children: [
|
|
315
|
+
/* @__PURE__ */ jsx("button", { type: "button", className: "daterange__clear", onClick: () => onChange({ from: null, to: null }), children: locale["common.clear"] }),
|
|
316
|
+
/* @__PURE__ */ jsx("button", { type: "button", className: "daterange__apply", onClick: () => setOpen(false), disabled: !value.from || !value.to, children: locale["common.apply"] })
|
|
317
317
|
] })
|
|
318
|
-
]
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
)
|
|
318
|
+
] })
|
|
319
|
+
]
|
|
320
|
+
}
|
|
321
|
+
) })
|
|
323
322
|
] });
|
|
324
323
|
}
|
|
325
324
|
function matchesHotkey(e, hk) {
|
|
@@ -479,5 +478,5 @@ function useCommandPalette({ hotkey = "mod+k" } = {}) {
|
|
|
479
478
|
}
|
|
480
479
|
|
|
481
480
|
export { CommandPalette, DateRangePicker, MultiCombobox, useCommandPalette };
|
|
482
|
-
//# sourceMappingURL=chunk-
|
|
483
|
-
//# sourceMappingURL=chunk-
|
|
481
|
+
//# sourceMappingURL=chunk-OHCS5CYV.mjs.map
|
|
482
|
+
//# sourceMappingURL=chunk-OHCS5CYV.mjs.map
|