@pathscale/ui 1.1.12 → 1.1.14
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/pagination/Pagination.css +121 -0
- package/dist/components/pagination/Pagination.d.ts +8 -2
- package/dist/components/pagination/Pagination.js +113 -7
- package/dist/components/select/Select.css +244 -0
- package/dist/components/select/Select.d.ts +44 -13
- package/dist/components/select/Select.js +618 -41
- package/dist/components/select/index.d.ts +2 -1
- package/dist/components/streaming-table/StreamingTable.js +39 -92
- package/dist/components/table/EnhancedTable.d.ts +1 -1
- package/dist/components/table/EnhancedTable.js +131 -195
- package/dist/components/table/{table.css → Table.css} +138 -0
- package/dist/components/table/Table.d.ts +69 -7
- package/dist/components/table/Table.js +302 -28
- package/dist/components/table/hooks/helpers.d.ts +7 -0
- package/dist/components/table/hooks/helpers.js +26 -0
- package/dist/components/table/hooks/index.d.ts +9 -0
- package/dist/components/table/hooks/index.js +18 -0
- package/dist/components/table/hooks/useAnchoredOverlayPosition.d.ts +16 -0
- package/dist/components/table/hooks/useAnchoredOverlayPosition.js +61 -0
- package/dist/components/table/hooks/useTableExpansion.d.ts +13 -0
- package/dist/components/table/hooks/useTableExpansion.js +17 -0
- package/dist/components/table/hooks/useTableFiltering.d.ts +30 -0
- package/dist/components/table/hooks/useTableFiltering.js +67 -0
- package/dist/components/table/hooks/useTableModel.d.ts +27 -0
- package/dist/components/table/hooks/useTableModel.js +56 -0
- package/dist/components/table/hooks/useTablePagination.d.ts +20 -0
- package/dist/components/table/hooks/useTablePagination.js +48 -0
- package/dist/components/table/hooks/useTableSelection.d.ts +14 -0
- package/dist/components/table/hooks/useTableSelection.js +17 -0
- package/dist/components/table/hooks/useTableSorting.d.ts +19 -0
- package/dist/components/table/hooks/useTableSorting.js +21 -0
- package/dist/components/table/index.d.ts +4 -1
- package/dist/components/table/index.js +26 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +10 -1
- package/package.json +1 -1
- package/dist/components/select/select.css +0 -351
|
@@ -1,62 +1,639 @@
|
|
|
1
1
|
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web";
|
|
2
|
-
import "./
|
|
2
|
+
import "./Select.css";
|
|
3
3
|
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
4
4
|
import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>"), _tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<button>"), _tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<span>"), _tmpl$4 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<svg viewBox="0 0 20 20"fill=none stroke=currentColor stroke-width=1.75><path d="M5 7.5L10 12.5L15 7.5"stroke-linecap=round stroke-linejoin=round>'), _tmpl$5 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<button><span class=ui-select__option-label data-slot=ui-select-option-label></span><span class=ui-select__option-indicator data-slot=ui-select-option-indicator aria-hidden=true><svg viewBox="0 0 20 20"fill=none stroke=currentColor stroke-width=2><path d="M5.5 10.5L8.5 13.5L14.5 7.5"stroke-linecap=round stroke-linejoin=round>');
|
|
6
|
+
const SelectContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createContext)();
|
|
7
|
+
const SELECT_VARIANT_CLASS_MAP = {
|
|
8
|
+
primary: "ui-select--primary",
|
|
9
|
+
secondary: "ui-select--secondary"
|
|
10
|
+
};
|
|
11
|
+
const invokeEventHandler = (handler, event)=>{
|
|
12
|
+
if ("function" == typeof handler) return void handler(event);
|
|
13
|
+
if (Array.isArray(handler) && "function" == typeof handler[0]) handler[0](handler[1], event);
|
|
14
|
+
};
|
|
15
|
+
const isIterableValue = (value)=>{
|
|
16
|
+
if (null == value || "string" == typeof value) return false;
|
|
17
|
+
return "function" == typeof value[Symbol.iterator];
|
|
18
|
+
};
|
|
19
|
+
const normalizeSelection = (selectionMode, value)=>{
|
|
20
|
+
if (null == value) return [];
|
|
21
|
+
let entries;
|
|
22
|
+
entries = Array.isArray(value) ? value : isIterableValue(value) ? Array.from(value) : [
|
|
23
|
+
value
|
|
24
|
+
];
|
|
25
|
+
const normalized = entries.map((entry)=>String(entry)).filter((entry, index, source)=>entry.length > 0 && source.indexOf(entry) === index);
|
|
26
|
+
if ("single" === selectionMode) return normalized.slice(0, 1);
|
|
27
|
+
return normalized;
|
|
28
|
+
};
|
|
29
|
+
const sortOptionsByDomOrder = (options)=>[
|
|
30
|
+
...options
|
|
31
|
+
].sort((a, b)=>{
|
|
32
|
+
if (a.ref === b.ref) return 0;
|
|
33
|
+
const relation = a.ref.compareDocumentPosition(b.ref);
|
|
34
|
+
if (relation & Node.DOCUMENT_POSITION_FOLLOWING) return -1;
|
|
35
|
+
if (relation & Node.DOCUMENT_POSITION_PRECEDING) return 1;
|
|
36
|
+
return 0;
|
|
37
|
+
});
|
|
38
|
+
const SelectRoot = (props)=>{
|
|
39
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
40
|
+
"children",
|
|
16
41
|
"class",
|
|
17
42
|
"className",
|
|
18
|
-
"
|
|
43
|
+
"dataTheme",
|
|
19
44
|
"placeholder",
|
|
20
45
|
"value",
|
|
21
|
-
"
|
|
46
|
+
"defaultValue",
|
|
47
|
+
"selectedKeys",
|
|
48
|
+
"defaultSelectedKeys",
|
|
49
|
+
"onChange",
|
|
50
|
+
"onSelectionChange",
|
|
51
|
+
"isDisabled",
|
|
52
|
+
"disabled",
|
|
53
|
+
"fullWidth",
|
|
54
|
+
"variant",
|
|
55
|
+
"selectionMode",
|
|
56
|
+
"isOpen",
|
|
57
|
+
"defaultOpen",
|
|
58
|
+
"onOpenChange",
|
|
59
|
+
"ref"
|
|
60
|
+
]);
|
|
61
|
+
const baseId = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createUniqueId)();
|
|
62
|
+
const triggerId = `${baseId}-trigger`;
|
|
63
|
+
const listboxId = `${baseId}-listbox`;
|
|
64
|
+
const selectionMode = ()=>local.selectionMode ?? "single";
|
|
65
|
+
const variant = ()=>local.variant ?? "primary";
|
|
66
|
+
const fullWidth = ()=>Boolean(local.fullWidth);
|
|
67
|
+
const disabled = ()=>Boolean(local.isDisabled) || Boolean(local.disabled);
|
|
68
|
+
const initialSelected = normalizeSelection(selectionMode(), local.defaultSelectedKeys ?? local.defaultValue);
|
|
69
|
+
const [internalSelectedKeys, setInternalSelectedKeys] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(initialSelected);
|
|
70
|
+
const [internalOpen, setInternalOpen] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(Boolean(local.defaultOpen));
|
|
71
|
+
const [options, setOptions] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)([]);
|
|
72
|
+
const [focusedKey, setFocusedKey] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)();
|
|
73
|
+
const [focusRequest, setFocusRequest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(null);
|
|
74
|
+
const [triggerRef, setTriggerRefSignal] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)();
|
|
75
|
+
const [rootRef, setRootRefSignal] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)();
|
|
76
|
+
const open = ()=>void 0 !== local.isOpen ? Boolean(local.isOpen) : internalOpen();
|
|
77
|
+
const selectedKeys = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
78
|
+
const controlledValue = void 0 !== local.selectedKeys ? local.selectedKeys : local.value;
|
|
79
|
+
if (void 0 !== controlledValue) return normalizeSelection(selectionMode(), controlledValue);
|
|
80
|
+
return normalizeSelection(selectionMode(), internalSelectedKeys());
|
|
81
|
+
});
|
|
82
|
+
const selectedSet = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>new Set(selectedKeys()));
|
|
83
|
+
const selectedText = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
|
|
84
|
+
if (!selectedKeys().length) return "";
|
|
85
|
+
const optionMap = new Map(options().map((option)=>[
|
|
86
|
+
option.key,
|
|
87
|
+
option.textValue
|
|
88
|
+
]));
|
|
89
|
+
return selectedKeys().map((key)=>optionMap.get(key) ?? key).join("multiple" === selectionMode() ? ", " : "");
|
|
90
|
+
});
|
|
91
|
+
const getEnabledOptions = ()=>options().filter((option)=>!option.disabled);
|
|
92
|
+
const focusOption = (option)=>{
|
|
93
|
+
if (!option) return;
|
|
94
|
+
setFocusedKey(option.key);
|
|
95
|
+
option.ref.focus();
|
|
96
|
+
};
|
|
97
|
+
const focusBoundary = (target)=>{
|
|
98
|
+
const enabled = getEnabledOptions();
|
|
99
|
+
if (!enabled.length) return;
|
|
100
|
+
if ("selected" === target) {
|
|
101
|
+
const selected = enabled.find((option)=>selectedSet().has(option.key));
|
|
102
|
+
focusOption(selected ?? enabled[0]);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
focusOption("first" === target ? enabled[0] : enabled[enabled.length - 1]);
|
|
106
|
+
};
|
|
107
|
+
const focusNext = (direction)=>{
|
|
108
|
+
const enabled = getEnabledOptions();
|
|
109
|
+
if (!enabled.length) return;
|
|
110
|
+
const active = document.activeElement;
|
|
111
|
+
let currentIndex = enabled.findIndex((option)=>option.ref === active);
|
|
112
|
+
if (currentIndex < 0) currentIndex = enabled.findIndex((option)=>option.key === focusedKey());
|
|
113
|
+
if (currentIndex < 0) return void focusBoundary(1 === direction ? "first" : "last");
|
|
114
|
+
const nextIndex = (currentIndex + direction + enabled.length) % enabled.length;
|
|
115
|
+
focusOption(enabled[nextIndex]);
|
|
116
|
+
};
|
|
117
|
+
const emitSelectionChange = (nextKeys)=>{
|
|
118
|
+
if (void 0 === local.selectedKeys && void 0 === local.value) setInternalSelectedKeys(nextKeys);
|
|
119
|
+
local.onSelectionChange?.(new Set(nextKeys));
|
|
120
|
+
local.onChange?.("multiple" === selectionMode() ? nextKeys : nextKeys[0] ?? null);
|
|
121
|
+
};
|
|
122
|
+
const setOpen = (next, options)=>{
|
|
123
|
+
if (next && disabled()) return;
|
|
124
|
+
if (void 0 === local.isOpen) setInternalOpen(next);
|
|
125
|
+
local.onOpenChange?.(next);
|
|
126
|
+
if (!next) {
|
|
127
|
+
setFocusRequest(null);
|
|
128
|
+
if (options?.focusTrigger) triggerRef()?.focus();
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
const toggleOpen = ()=>{
|
|
132
|
+
setOpen(!open());
|
|
133
|
+
};
|
|
134
|
+
const selectKey = (key)=>{
|
|
135
|
+
if (disabled()) return;
|
|
136
|
+
let nextKeys;
|
|
137
|
+
if ("multiple" === selectionMode()) {
|
|
138
|
+
const nextSet = new Set(selectedKeys());
|
|
139
|
+
if (nextSet.has(key)) nextSet.delete(key);
|
|
140
|
+
else nextSet.add(key);
|
|
141
|
+
nextKeys = Array.from(nextSet);
|
|
142
|
+
emitSelectionChange(nextKeys);
|
|
143
|
+
setFocusedKey(key);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
nextKeys = [
|
|
147
|
+
key
|
|
148
|
+
];
|
|
149
|
+
emitSelectionChange(nextKeys);
|
|
150
|
+
setFocusedKey(key);
|
|
151
|
+
setOpen(false, {
|
|
152
|
+
focusTrigger: true
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
const registerOption = (option)=>{
|
|
156
|
+
setOptions((current)=>sortOptionsByDomOrder([
|
|
157
|
+
...current.filter((entry)=>entry.key !== option.key),
|
|
158
|
+
option
|
|
159
|
+
]));
|
|
160
|
+
};
|
|
161
|
+
const unregisterOption = (key)=>{
|
|
162
|
+
setOptions((current)=>current.filter((option)=>option.key !== key));
|
|
163
|
+
if (focusedKey() === key) setFocusedKey(void 0);
|
|
164
|
+
};
|
|
165
|
+
const setTriggerRef = (el)=>{
|
|
166
|
+
setTriggerRefSignal(el);
|
|
167
|
+
};
|
|
168
|
+
const setRootRef = (el)=>{
|
|
169
|
+
setRootRefSignal(el);
|
|
170
|
+
if ("function" == typeof local.ref) local.ref(el);
|
|
171
|
+
};
|
|
172
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
|
|
173
|
+
if (!open()) return;
|
|
174
|
+
const request = focusRequest();
|
|
175
|
+
if (!request) return;
|
|
176
|
+
focusBoundary(request);
|
|
177
|
+
setFocusRequest(null);
|
|
178
|
+
});
|
|
179
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
|
|
180
|
+
const currentFocused = focusedKey();
|
|
181
|
+
const currentOptions = options();
|
|
182
|
+
if (currentFocused && !currentOptions.some((option)=>option.key === currentFocused)) return void setFocusedKey(void 0);
|
|
183
|
+
if (open() && !currentFocused) {
|
|
184
|
+
const selected = currentOptions.find((option)=>selectedSet().has(option.key) && !option.disabled);
|
|
185
|
+
setFocusedKey(selected?.key ?? currentOptions.find((option)=>!option.disabled)?.key);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onMount)(()=>{
|
|
189
|
+
const handlePointerDown = (event)=>{
|
|
190
|
+
if (!open()) return;
|
|
191
|
+
const root = rootRef();
|
|
192
|
+
if (!root) return;
|
|
193
|
+
if (root.contains(event.target)) return;
|
|
194
|
+
setOpen(false);
|
|
195
|
+
};
|
|
196
|
+
document.addEventListener("pointerdown", handlePointerDown);
|
|
197
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
|
|
198
|
+
document.removeEventListener("pointerdown", handlePointerDown);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(SelectContext.Provider, {
|
|
202
|
+
value: {
|
|
203
|
+
open,
|
|
204
|
+
variant,
|
|
205
|
+
fullWidth,
|
|
206
|
+
disabled,
|
|
207
|
+
selectionMode,
|
|
208
|
+
placeholder: ()=>local.placeholder ?? "Select an option",
|
|
209
|
+
triggerId,
|
|
210
|
+
listboxId,
|
|
211
|
+
selectedKeys,
|
|
212
|
+
selectedText,
|
|
213
|
+
focusedKey,
|
|
214
|
+
isSelected: (key)=>selectedSet().has(key),
|
|
215
|
+
setOpen,
|
|
216
|
+
toggleOpen,
|
|
217
|
+
setFocusedKey,
|
|
218
|
+
focusBoundary,
|
|
219
|
+
focusNext,
|
|
220
|
+
requestFocus: setFocusRequest,
|
|
221
|
+
selectKey,
|
|
222
|
+
registerOption,
|
|
223
|
+
unregisterOption,
|
|
224
|
+
setTriggerRef,
|
|
225
|
+
setRootRef
|
|
226
|
+
},
|
|
227
|
+
get children () {
|
|
228
|
+
var _el$ = _tmpl$();
|
|
229
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.use)(setRootRef, _el$);
|
|
230
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
231
|
+
get ["class"] () {
|
|
232
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("ui-select", SELECT_VARIANT_CLASS_MAP[variant()], fullWidth() && "ui-select--full-width", local.class, local.className);
|
|
233
|
+
},
|
|
234
|
+
get ["data-theme"] () {
|
|
235
|
+
return local.dataTheme;
|
|
236
|
+
},
|
|
237
|
+
"data-slot": "ui-select",
|
|
238
|
+
get ["data-open"] () {
|
|
239
|
+
return open() ? "true" : "false";
|
|
240
|
+
},
|
|
241
|
+
get ["data-disabled"] () {
|
|
242
|
+
return disabled() ? "true" : "false";
|
|
243
|
+
},
|
|
244
|
+
get ["data-selection-mode"] () {
|
|
245
|
+
return selectionMode();
|
|
246
|
+
}
|
|
247
|
+
}), false, true);
|
|
248
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, ()=>local.children);
|
|
249
|
+
return _el$;
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
};
|
|
253
|
+
const SelectTrigger = (props)=>{
|
|
254
|
+
const ctx = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(SelectContext);
|
|
255
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
256
|
+
"children",
|
|
257
|
+
"class",
|
|
258
|
+
"className",
|
|
259
|
+
"dataTheme",
|
|
260
|
+
"disabled",
|
|
261
|
+
"onClick",
|
|
262
|
+
"onKeyDown",
|
|
263
|
+
"ref",
|
|
264
|
+
"type"
|
|
22
265
|
]);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
266
|
+
if (!ctx) return (()=>{
|
|
267
|
+
var _el$2 = _tmpl$2();
|
|
268
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$2, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
269
|
+
get ["class"] () {
|
|
270
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("ui-select__trigger", local.class, local.className);
|
|
271
|
+
},
|
|
272
|
+
get ["data-theme"] () {
|
|
273
|
+
return local.dataTheme;
|
|
274
|
+
},
|
|
275
|
+
get type () {
|
|
276
|
+
return local.type ?? "button";
|
|
277
|
+
}
|
|
278
|
+
}), false, true);
|
|
279
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$2, ()=>local.children);
|
|
280
|
+
return _el$2;
|
|
281
|
+
})();
|
|
282
|
+
const isDisabled = ()=>Boolean(local.disabled) || ctx.disabled();
|
|
283
|
+
const setRef = (el)=>{
|
|
284
|
+
ctx.setTriggerRef(el);
|
|
285
|
+
if ("function" == typeof local.ref) local.ref(el);
|
|
286
|
+
};
|
|
287
|
+
const handleClick = (event)=>{
|
|
288
|
+
invokeEventHandler(local.onClick, event);
|
|
289
|
+
if (event.defaultPrevented) return;
|
|
290
|
+
if (isDisabled()) return;
|
|
291
|
+
ctx.toggleOpen();
|
|
292
|
+
};
|
|
293
|
+
const handleKeyDown = (event)=>{
|
|
294
|
+
invokeEventHandler(local.onKeyDown, event);
|
|
295
|
+
if (event.defaultPrevented) return;
|
|
296
|
+
if (isDisabled()) return;
|
|
297
|
+
if ("ArrowDown" === event.key) {
|
|
298
|
+
event.preventDefault();
|
|
299
|
+
if (!ctx.open()) ctx.setOpen(true);
|
|
300
|
+
ctx.requestFocus("selected");
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if ("ArrowUp" === event.key) {
|
|
304
|
+
event.preventDefault();
|
|
305
|
+
if (!ctx.open()) ctx.setOpen(true);
|
|
306
|
+
ctx.requestFocus("last");
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
if ("Enter" === event.key || " " === event.key) {
|
|
310
|
+
event.preventDefault();
|
|
311
|
+
if (ctx.open()) ctx.setOpen(false);
|
|
312
|
+
else {
|
|
313
|
+
ctx.setOpen(true);
|
|
314
|
+
ctx.requestFocus("selected");
|
|
315
|
+
}
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
if ("Escape" === event.key && ctx.open()) {
|
|
319
|
+
event.preventDefault();
|
|
320
|
+
ctx.setOpen(false);
|
|
321
|
+
}
|
|
322
|
+
};
|
|
39
323
|
return (()=>{
|
|
40
|
-
var _el$ = _tmpl$()
|
|
41
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.
|
|
324
|
+
var _el$3 = _tmpl$2();
|
|
325
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.use)(setRef, _el$3);
|
|
326
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$3, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
327
|
+
get id () {
|
|
328
|
+
return ctx.triggerId;
|
|
329
|
+
},
|
|
330
|
+
get type () {
|
|
331
|
+
return local.type ?? "button";
|
|
332
|
+
},
|
|
333
|
+
get ["class"] () {
|
|
334
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("ui-select__trigger", ctx.fullWidth() && "ui-select__trigger--full-width", local.class, local.className);
|
|
335
|
+
},
|
|
42
336
|
get ["data-theme"] () {
|
|
43
337
|
return local.dataTheme;
|
|
44
338
|
},
|
|
339
|
+
"data-slot": "ui-select-trigger",
|
|
340
|
+
get ["data-open"] () {
|
|
341
|
+
return ctx.open() ? "true" : "false";
|
|
342
|
+
},
|
|
343
|
+
"aria-haspopup": "listbox",
|
|
344
|
+
get ["aria-expanded"] () {
|
|
345
|
+
return ctx.open();
|
|
346
|
+
},
|
|
347
|
+
get ["aria-controls"] () {
|
|
348
|
+
return ctx.listboxId;
|
|
349
|
+
},
|
|
350
|
+
get ["aria-disabled"] () {
|
|
351
|
+
return isDisabled() ? "true" : "false";
|
|
352
|
+
},
|
|
353
|
+
get disabled () {
|
|
354
|
+
return isDisabled();
|
|
355
|
+
},
|
|
356
|
+
onClick: handleClick,
|
|
357
|
+
onKeyDown: handleKeyDown
|
|
358
|
+
}), false, true);
|
|
359
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$3, ()=>local.children);
|
|
360
|
+
return _el$3;
|
|
361
|
+
})();
|
|
362
|
+
};
|
|
363
|
+
const SelectValue = (props)=>{
|
|
364
|
+
const ctx = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(SelectContext);
|
|
365
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
366
|
+
"children",
|
|
367
|
+
"class",
|
|
368
|
+
"className",
|
|
369
|
+
"dataTheme"
|
|
370
|
+
]);
|
|
371
|
+
const placeholder = ()=>ctx?.placeholder() ?? "";
|
|
372
|
+
const text = ()=>ctx?.selectedText() ?? "";
|
|
373
|
+
const isPlaceholder = ()=>0 === text().length;
|
|
374
|
+
return (()=>{
|
|
375
|
+
var _el$4 = _tmpl$3();
|
|
376
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$4, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
45
377
|
get ["class"] () {
|
|
46
|
-
return
|
|
378
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("ui-select__value", local.class, local.className);
|
|
47
379
|
},
|
|
48
|
-
get
|
|
49
|
-
return local.
|
|
380
|
+
get ["data-theme"] () {
|
|
381
|
+
return local.dataTheme;
|
|
50
382
|
},
|
|
51
|
-
|
|
52
|
-
|
|
383
|
+
"data-slot": "ui-select-value",
|
|
384
|
+
get ["data-placeholder"] () {
|
|
385
|
+
return isPlaceholder() ? "true" : "false";
|
|
53
386
|
}
|
|
54
387
|
}), false, true);
|
|
55
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
388
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$4, ()=>local.children ?? (isPlaceholder() ? placeholder() : text()));
|
|
389
|
+
return _el$4;
|
|
390
|
+
})();
|
|
391
|
+
};
|
|
392
|
+
const SelectIndicator = (props)=>{
|
|
393
|
+
const ctx = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(SelectContext);
|
|
394
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
395
|
+
"children",
|
|
396
|
+
"class",
|
|
397
|
+
"className",
|
|
398
|
+
"dataTheme"
|
|
399
|
+
]);
|
|
400
|
+
return (()=>{
|
|
401
|
+
var _el$5 = _tmpl$3();
|
|
402
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$5, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
403
|
+
get ["class"] () {
|
|
404
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("ui-select__indicator", local.class, local.className);
|
|
405
|
+
},
|
|
406
|
+
get ["data-theme"] () {
|
|
407
|
+
return local.dataTheme;
|
|
408
|
+
},
|
|
409
|
+
"data-slot": "ui-select-indicator",
|
|
410
|
+
get ["data-open"] () {
|
|
411
|
+
return ctx?.open() ? "true" : "false";
|
|
412
|
+
},
|
|
413
|
+
"aria-hidden": "true"
|
|
414
|
+
}), false, true);
|
|
415
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$5, ()=>local.children ?? _tmpl$4());
|
|
416
|
+
return _el$5;
|
|
417
|
+
})();
|
|
418
|
+
};
|
|
419
|
+
const SelectPopover = (props)=>{
|
|
420
|
+
const ctx = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(SelectContext);
|
|
421
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
422
|
+
"children",
|
|
423
|
+
"class",
|
|
424
|
+
"className",
|
|
425
|
+
"dataTheme"
|
|
426
|
+
]);
|
|
427
|
+
return (()=>{
|
|
428
|
+
var _el$7 = _tmpl$();
|
|
429
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$7, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
430
|
+
get ["class"] () {
|
|
431
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("ui-select__popover", local.class, local.className);
|
|
432
|
+
},
|
|
433
|
+
get ["data-theme"] () {
|
|
434
|
+
return local.dataTheme;
|
|
435
|
+
},
|
|
436
|
+
"data-slot": "ui-select-popover",
|
|
437
|
+
get ["data-open"] () {
|
|
438
|
+
return ctx?.open() ? "true" : "false";
|
|
439
|
+
}
|
|
440
|
+
}), false, true);
|
|
441
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$7, ()=>local.children);
|
|
442
|
+
return _el$7;
|
|
443
|
+
})();
|
|
444
|
+
};
|
|
445
|
+
const SelectListbox = (props)=>{
|
|
446
|
+
const ctx = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(SelectContext);
|
|
447
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
448
|
+
"children",
|
|
449
|
+
"class",
|
|
450
|
+
"className",
|
|
451
|
+
"dataTheme"
|
|
452
|
+
]);
|
|
453
|
+
return (()=>{
|
|
454
|
+
var _el$8 = _tmpl$();
|
|
455
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$8, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
456
|
+
get id () {
|
|
457
|
+
return ctx?.listboxId;
|
|
458
|
+
},
|
|
459
|
+
get ["class"] () {
|
|
460
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("ui-select__listbox", local.class, local.className);
|
|
461
|
+
},
|
|
462
|
+
get ["data-theme"] () {
|
|
463
|
+
return local.dataTheme;
|
|
464
|
+
},
|
|
465
|
+
"data-slot": "ui-select-listbox",
|
|
466
|
+
role: "listbox",
|
|
467
|
+
get ["aria-multiselectable"] () {
|
|
468
|
+
return ctx?.selectionMode() === "multiple" ? "true" : void 0;
|
|
469
|
+
},
|
|
470
|
+
tabindex: -1
|
|
471
|
+
}), false, true);
|
|
472
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$8, ()=>local.children);
|
|
473
|
+
return _el$8;
|
|
474
|
+
})();
|
|
475
|
+
};
|
|
476
|
+
const SelectOption = (props)=>{
|
|
477
|
+
const ctx = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(SelectContext);
|
|
478
|
+
const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
479
|
+
"children",
|
|
480
|
+
"class",
|
|
481
|
+
"className",
|
|
482
|
+
"dataTheme",
|
|
483
|
+
"value",
|
|
484
|
+
"textValue",
|
|
485
|
+
"isDisabled",
|
|
486
|
+
"disabled",
|
|
487
|
+
"onClick",
|
|
488
|
+
"onKeyDown",
|
|
489
|
+
"onMouseEnter",
|
|
490
|
+
"ref",
|
|
491
|
+
"type"
|
|
492
|
+
]);
|
|
493
|
+
if (!ctx) return (()=>{
|
|
494
|
+
var _el$9 = _tmpl$2();
|
|
495
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$9, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
496
|
+
get ["class"] () {
|
|
497
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("ui-select__option", local.class, local.className);
|
|
498
|
+
},
|
|
499
|
+
get ["data-theme"] () {
|
|
500
|
+
return local.dataTheme;
|
|
501
|
+
},
|
|
502
|
+
get type () {
|
|
503
|
+
return local.type ?? "button";
|
|
504
|
+
}
|
|
505
|
+
}), false, true);
|
|
506
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$9, ()=>local.children);
|
|
507
|
+
return _el$9;
|
|
508
|
+
})();
|
|
509
|
+
const key = ()=>String(local.value);
|
|
510
|
+
const isDisabled = ()=>Boolean(local.isDisabled) || Boolean(local.disabled) || ctx.disabled();
|
|
511
|
+
const isSelected = ()=>ctx.isSelected(key());
|
|
512
|
+
const isFocused = ()=>ctx.focusedKey() === key();
|
|
513
|
+
let optionRef;
|
|
514
|
+
const setRef = (el)=>{
|
|
515
|
+
optionRef = el;
|
|
516
|
+
ctx.registerOption({
|
|
517
|
+
key: key(),
|
|
518
|
+
textValue: local.textValue ?? ("string" == typeof local.children ? local.children : key()),
|
|
519
|
+
disabled: isDisabled(),
|
|
520
|
+
ref: el
|
|
521
|
+
});
|
|
522
|
+
if ("function" == typeof local.ref) local.ref(el);
|
|
523
|
+
};
|
|
524
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
|
|
525
|
+
if (!optionRef) return;
|
|
526
|
+
ctx.registerOption({
|
|
527
|
+
key: key(),
|
|
528
|
+
textValue: local.textValue ?? ("string" == typeof local.children ? local.children : key()),
|
|
529
|
+
disabled: isDisabled(),
|
|
530
|
+
ref: optionRef
|
|
531
|
+
});
|
|
532
|
+
});
|
|
533
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
|
|
534
|
+
ctx.unregisterOption(key());
|
|
535
|
+
});
|
|
536
|
+
const handleClick = (event)=>{
|
|
537
|
+
invokeEventHandler(local.onClick, event);
|
|
538
|
+
if (event.defaultPrevented) return;
|
|
539
|
+
if (isDisabled()) return;
|
|
540
|
+
ctx.selectKey(key());
|
|
541
|
+
};
|
|
542
|
+
const handleMouseEnter = (event)=>{
|
|
543
|
+
invokeEventHandler(local.onMouseEnter, event);
|
|
544
|
+
if (event.defaultPrevented) return;
|
|
545
|
+
if (isDisabled()) return;
|
|
546
|
+
ctx.setFocusedKey(key());
|
|
547
|
+
};
|
|
548
|
+
const handleKeyDown = (event)=>{
|
|
549
|
+
invokeEventHandler(local.onKeyDown, event);
|
|
550
|
+
if (event.defaultPrevented) return;
|
|
551
|
+
if (isDisabled()) return;
|
|
552
|
+
if ("ArrowDown" === event.key) {
|
|
553
|
+
event.preventDefault();
|
|
554
|
+
ctx.focusNext(1);
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
if ("ArrowUp" === event.key) {
|
|
558
|
+
event.preventDefault();
|
|
559
|
+
ctx.focusNext(-1);
|
|
560
|
+
return;
|
|
561
|
+
}
|
|
562
|
+
if ("Home" === event.key) {
|
|
563
|
+
event.preventDefault();
|
|
564
|
+
ctx.focusBoundary("first");
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
if ("End" === event.key) {
|
|
568
|
+
event.preventDefault();
|
|
569
|
+
ctx.focusBoundary("last");
|
|
570
|
+
return;
|
|
571
|
+
}
|
|
572
|
+
if ("Enter" === event.key || " " === event.key) {
|
|
573
|
+
event.preventDefault();
|
|
574
|
+
ctx.selectKey(key());
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
577
|
+
if ("Escape" === event.key) {
|
|
578
|
+
event.preventDefault();
|
|
579
|
+
ctx.setOpen(false, {
|
|
580
|
+
focusTrigger: true
|
|
581
|
+
});
|
|
582
|
+
return;
|
|
583
|
+
}
|
|
584
|
+
if ("Tab" === event.key) ctx.setOpen(false);
|
|
585
|
+
};
|
|
586
|
+
return (()=>{
|
|
587
|
+
var _el$0 = _tmpl$5(), _el$1 = _el$0.firstChild;
|
|
588
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.use)(setRef, _el$0);
|
|
589
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$0, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
|
|
590
|
+
get type () {
|
|
591
|
+
return local.type ?? "button";
|
|
592
|
+
},
|
|
593
|
+
get ["class"] () {
|
|
594
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("ui-select__option", local.class, local.className);
|
|
595
|
+
},
|
|
596
|
+
get ["data-theme"] () {
|
|
597
|
+
return local.dataTheme;
|
|
598
|
+
},
|
|
599
|
+
"data-slot": "ui-select-option",
|
|
600
|
+
get ["data-selected"] () {
|
|
601
|
+
return isSelected() ? "true" : "false";
|
|
602
|
+
},
|
|
603
|
+
get ["data-focused"] () {
|
|
604
|
+
return isFocused() ? "true" : "false";
|
|
605
|
+
},
|
|
606
|
+
get ["data-disabled"] () {
|
|
607
|
+
return isDisabled() ? "true" : "false";
|
|
608
|
+
},
|
|
609
|
+
role: "option",
|
|
610
|
+
get ["aria-selected"] () {
|
|
611
|
+
return isSelected();
|
|
612
|
+
},
|
|
613
|
+
get ["aria-disabled"] () {
|
|
614
|
+
return isDisabled() ? "true" : "false";
|
|
615
|
+
},
|
|
616
|
+
get disabled () {
|
|
617
|
+
return isDisabled();
|
|
618
|
+
},
|
|
619
|
+
tabindex: -1,
|
|
620
|
+
onClick: handleClick,
|
|
621
|
+
onMouseEnter: handleMouseEnter,
|
|
622
|
+
onFocus: ()=>ctx.setFocusedKey(key()),
|
|
623
|
+
onKeyDown: handleKeyDown
|
|
624
|
+
}), false, true);
|
|
625
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$1, ()=>local.children);
|
|
626
|
+
return _el$0;
|
|
59
627
|
})();
|
|
60
628
|
};
|
|
629
|
+
const Select = Object.assign(SelectRoot, {
|
|
630
|
+
Root: SelectRoot,
|
|
631
|
+
Trigger: SelectTrigger,
|
|
632
|
+
Value: SelectValue,
|
|
633
|
+
Indicator: SelectIndicator,
|
|
634
|
+
Popover: SelectPopover,
|
|
635
|
+
Listbox: SelectListbox,
|
|
636
|
+
Option: SelectOption
|
|
637
|
+
});
|
|
61
638
|
const select_Select = Select;
|
|
62
639
|
export { select_Select as default };
|