@blukavantui/community 1.0.1 → 1.1.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/README.md +11 -5
- package/dist/build-audit.json +181 -53
- package/dist/checkbox.css +1 -0
- package/dist/checkbox.d.ts +2 -0
- package/dist/checkbox.js +1 -0
- package/dist/chunk-3PNBQVYS.js +1 -0
- package/dist/chunk-5ENZVZGF.js +0 -0
- package/dist/chunk-AL2ETLJV.js +1 -0
- package/dist/chunk-BN3PDE5G.js +0 -0
- package/dist/chunk-EOKNLCNS.js +1 -0
- package/dist/chunk-EPZGLHPD.js +0 -0
- package/dist/chunk-FNX33PDD.js +0 -0
- package/dist/chunk-GXHANADL.js +1 -0
- package/dist/chunk-HO6CYWED.js +0 -0
- package/dist/chunk-IJ62ILKE.js +0 -0
- package/dist/chunk-IO22GWON.js +0 -0
- package/dist/chunk-IZJN3EF7.js +1 -0
- package/dist/chunk-JVE6CXCJ.js +1 -0
- package/dist/chunk-MYVLBALF.js +1 -0
- package/dist/chunk-OPMD7QNV.js +1 -0
- package/dist/chunk-RWBLICYX.js +0 -0
- package/dist/chunk-RYD6RHRX.js +0 -0
- package/dist/chunk-UN2SLVFG.js +1 -0
- package/dist/chunk-VJVFHL6P.js +0 -0
- package/dist/chunk-XWXEH3SW.js +1 -0
- package/dist/chunk-YCLR3IE3.js +0 -0
- package/dist/columns2.css +1 -0
- package/dist/columns2.d.ts +2 -0
- package/dist/columns2.js +1 -0
- package/dist/columns3.css +1 -0
- package/dist/columns3.d.ts +2 -0
- package/dist/columns3.js +1 -0
- package/dist/columns4.css +1 -0
- package/dist/columns4.d.ts +2 -0
- package/dist/columns4.js +1 -0
- package/dist/content.js +1 -1
- package/dist/core.js +1 -1
- package/dist/data.css +63 -0
- package/dist/data.d.ts +1 -0
- package/dist/data.js +1 -1
- package/dist/date-picker.css +5 -5
- package/dist/date-picker.js +1 -1
- package/dist/date-range-picker.css +5 -5
- package/dist/date-range-picker.js +1 -1
- package/dist/date-time-picker.css +5 -5
- package/dist/date-time-picker.js +1 -1
- package/dist/draft-components.json +77 -0
- package/dist/feedback.js +1 -1
- package/dist/form-field.css +1 -0
- package/dist/form-field.d.ts +2 -0
- package/dist/form-field.js +1 -0
- package/dist/form-layout/choice.d.ts +15 -0
- package/dist/form-layout/layout.d.ts +12 -0
- package/dist/form-layout/select.d.ts +3 -0
- package/dist/form-layout/shared.d.ts +21 -0
- package/dist/form-layout/table.d.ts +20 -0
- package/dist/form-layout/text.d.ts +3 -0
- package/dist/form-layout/types.d.ts +151 -0
- package/dist/form-layout.css +62 -0
- package/dist/form-layout.d.ts +12 -0
- package/dist/form-layout.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/inputs.css +83 -20
- package/dist/inputs.d.ts +8 -0
- package/dist/inputs.js +1 -1
- package/dist/layout.css +63 -0
- package/dist/layout.d.ts +3 -0
- package/dist/layout.js +1 -1
- package/dist/native/date-picker.js +1 -1
- package/dist/native/date-range-picker.js +1 -1
- package/dist/native/date-time-picker.js +1 -1
- package/dist/native/form-layout.js +1 -0
- package/dist/native/time-picker.js +1 -1
- package/dist/native-components/form-layout.d.ts +1 -0
- package/dist/radio-button.css +1 -0
- package/dist/radio-button.d.ts +2 -0
- package/dist/radio-button.js +1 -0
- package/dist/radio-group.css +1 -0
- package/dist/radio-group.d.ts +2 -0
- package/dist/radio-group.js +1 -0
- package/dist/select.css +1 -0
- package/dist/select.d.ts +2 -0
- package/dist/select.js +1 -0
- package/dist/sizes.json +272 -90
- package/dist/styles.css +83 -20
- package/dist/switch.css +1 -0
- package/dist/switch.d.ts +2 -0
- package/dist/switch.js +1 -0
- package/dist/table.css +1 -0
- package/dist/table.d.ts +2 -0
- package/dist/table.js +1 -0
- package/dist/text-area.css +1 -0
- package/dist/text-area.d.ts +2 -0
- package/dist/text-area.js +1 -0
- package/dist/text-input.css +1 -0
- package/dist/text-input.d.ts +2 -0
- package/dist/text-input.js +1 -0
- package/dist/time-picker.css +5 -5
- package/dist/time-picker.js +1 -1
- package/docs/FORM-LAYOUT-ESSENTIALS.md +122 -0
- package/docs/PUBLISHING.md +129 -25
- package/draft-components.json +77 -0
- package/edition.json +44 -7
- package/npm-shrinkwrap.json +2 -2
- package/package.json +76 -10
- package/scripts/build.mjs +16 -8
- package/src/checkbox.ts +2 -0
- package/src/columns2.ts +2 -0
- package/src/columns3.ts +2 -0
- package/src/columns4.ts +2 -0
- package/src/data.ts +1 -0
- package/src/form-field.ts +2 -0
- package/src/form-layout/choice.ts +66 -0
- package/src/form-layout/layout.ts +40 -0
- package/src/form-layout/select.ts +97 -0
- package/src/form-layout/shared.ts +57 -0
- package/src/form-layout/table.ts +86 -0
- package/src/form-layout/text.ts +73 -0
- package/src/form-layout/types.ts +59 -0
- package/src/form-layout.ts +12 -0
- package/src/index.ts +2 -0
- package/src/inputs.ts +8 -0
- package/src/layout.ts +3 -0
- package/src/native-components/form-layout.ts +21 -0
- package/src/radio-button.ts +2 -0
- package/src/radio-group.ts +2 -0
- package/src/runtime/date-picker.js +21 -12
- package/src/runtime/date-range-picker.js +21 -12
- package/src/runtime/date-time-picker.js +21 -12
- package/src/runtime/time-picker.js +21 -12
- package/src/select.ts +2 -0
- package/src/switch.ts +2 -0
- package/src/table.ts +2 -0
- package/src/text-area.ts +2 -0
- package/src/text-input.ts +2 -0
- package/src/types.ts +0 -12
- package/styles/checkbox.css +1 -0
- package/styles/columns2.css +1 -0
- package/styles/columns3.css +1 -0
- package/styles/columns4.css +1 -0
- package/styles/date-picker.css +5 -5
- package/styles/date-range-picker.css +5 -5
- package/styles/date-time-picker.css +5 -5
- package/styles/form-field.css +1 -0
- package/styles/form-layout.css +62 -0
- package/styles/radio-button.css +1 -0
- package/styles/radio-group.css +1 -0
- package/styles/select.css +1 -0
- package/styles/switch.css +1 -0
- package/styles/table.css +1 -0
- package/styles/text-area.css +1 -0
- package/styles/text-input.css +1 -0
- package/styles/time-picker.css +5 -5
- package/test/form-layout.test.mjs +28 -0
- package/test/isolation.test.mjs +2 -2
- package/dist/chunk-2TCNAQC6.js +0 -1
- package/dist/chunk-CTLZIWMX.js +0 -1
- package/dist/chunk-MHHJZYXW.js +0 -1
- package/dist/chunk-XDYBNO4P.js +0 -1
package/README.md
CHANGED
|
@@ -12,12 +12,14 @@ the [Community license](./LICENSE.txt).
|
|
|
12
12
|
|
|
13
13
|
## Install
|
|
14
14
|
|
|
15
|
+
Download the Community package from the official website and install the archive:
|
|
16
|
+
|
|
15
17
|
```sh
|
|
16
|
-
npm install
|
|
18
|
+
npm install ./blukavantui-community-1.0.0.tgz
|
|
17
19
|
```
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
Website downloads are the current distribution channel. An npm registry
|
|
22
|
+
publication is a separate step; do not assume the package is available there.
|
|
21
23
|
|
|
22
24
|
The package contains compiled ES modules, TypeScript declarations, styles and
|
|
23
25
|
font assets. A separate `@types` package is not required. Use a browser application
|
|
@@ -102,9 +104,9 @@ user's browser. Rows need unique, nonempty string or number keys. Dates use
|
|
|
102
104
|
|
|
103
105
|
| Community | Pro add-on |
|
|
104
106
|
| --- | --- |
|
|
105
|
-
|
|
|
107
|
+
| 67 components, including Basic Grid | Ten additional advanced components |
|
|
106
108
|
| Read-only grid with local sorting, filters and pagination | Full Grid with editing, advanced filtering and data-loading features |
|
|
107
|
-
| Layouts, inputs, chat, dashboards, media and notifications | FormBuilder, FormRenderer, ImageAnnotator,
|
|
109
|
+
| Layouts, inputs, chat, dashboards, media and notifications | FormBuilder, FormRenderer, ImageAnnotator, DataImportWizard, MatrixEditor, FilterBuilder, ProjectTimeline and Kanban |
|
|
108
110
|
| Free personal and commercial application use | Separate commercial license |
|
|
109
111
|
|
|
110
112
|
Pro implementations are excluded from this package. The Pro add-on works alongside
|
|
@@ -170,3 +172,7 @@ release commands and the distinction between preparation and publication.
|
|
|
170
172
|
### Sparkline web package
|
|
171
173
|
|
|
172
174
|
Sparkline now lives in `@blukavantui/charts-community/sparkline`, with `@blukavantui/charts-community/sparkline.css`. New web applications should use that entry. The existing UI export is retained for backward compatibility; native OutSystems packaging is unchanged. The Charts Sparkline uses SVG and does not load ECharts.
|
|
175
|
+
|
|
176
|
+
## Community 1.1.0
|
|
177
|
+
|
|
178
|
+
Includes Checkbox, TextInput, TextArea, RadioButton, RadioGroup, Switch, Select, FormField, Columns2, Columns3, Columns4 and Table. The separate OutSystems package includes 18 native Blocks, including editable InputGroup image slots and fixed column presets. Native bindings and events were checked in a compiled development consumer on 2026-10-24. Native packages are distributed separately from npm.
|
package/dist/build-audit.json
CHANGED
|
@@ -157,6 +157,25 @@
|
|
|
157
157
|
"node_modules/ag-grid-community/dist/package/main.esm.mjs",
|
|
158
158
|
"src/grid-spec.ts",
|
|
159
159
|
"src/grid-basic.ts",
|
|
160
|
+
"src/form-layout/shared.ts",
|
|
161
|
+
"src/form-layout/choice.ts",
|
|
162
|
+
"src/checkbox.ts",
|
|
163
|
+
"src/form-layout/text.ts",
|
|
164
|
+
"src/text-input.ts",
|
|
165
|
+
"src/text-area.ts",
|
|
166
|
+
"src/radio-button.ts",
|
|
167
|
+
"src/radio-group.ts",
|
|
168
|
+
"src/switch.ts",
|
|
169
|
+
"src/form-layout/select.ts",
|
|
170
|
+
"src/select.ts",
|
|
171
|
+
"src/form-layout/layout.ts",
|
|
172
|
+
"src/form-field.ts",
|
|
173
|
+
"src/columns2.ts",
|
|
174
|
+
"src/columns3.ts",
|
|
175
|
+
"src/columns4.ts",
|
|
176
|
+
"src/form-layout/table.ts",
|
|
177
|
+
"src/table.ts",
|
|
178
|
+
"src/form-layout.ts",
|
|
160
179
|
"src/index.ts",
|
|
161
180
|
"src/core.ts",
|
|
162
181
|
"src/layout.ts",
|
|
@@ -168,6 +187,7 @@
|
|
|
168
187
|
"src/native-base.ts",
|
|
169
188
|
"src/native.ts",
|
|
170
189
|
"src/native-grid.ts",
|
|
190
|
+
"src/native-components/form-layout.ts",
|
|
171
191
|
"src/native-components/font-provider.ts",
|
|
172
192
|
"src/native-components/splitter.ts",
|
|
173
193
|
"src/native-components/app-layout.ts",
|
|
@@ -213,133 +233,164 @@
|
|
|
213
233
|
"src/native-components/logo-cloud.ts"
|
|
214
234
|
],
|
|
215
235
|
"outputs": [
|
|
216
|
-
"dist/grid.js",
|
|
217
|
-
"dist/split-section.js",
|
|
218
|
-
"dist/logo-cloud.js",
|
|
219
|
-
"dist/core.js",
|
|
220
236
|
"dist/layout.js",
|
|
221
237
|
"dist/inputs.js",
|
|
222
238
|
"dist/feedback.js",
|
|
223
239
|
"dist/data.js",
|
|
224
240
|
"dist/content.js",
|
|
225
|
-
"dist/
|
|
226
|
-
"dist/image-compare.js",
|
|
227
|
-
"dist/text-highlight.js",
|
|
241
|
+
"dist/grid.js",
|
|
228
242
|
"dist/content-carousel.js",
|
|
229
243
|
"dist/profile-card.js",
|
|
230
244
|
"dist/quote-card.js",
|
|
231
245
|
"dist/collection-layout.js",
|
|
232
246
|
"dist/hero-section.js",
|
|
233
|
-
"dist/
|
|
234
|
-
"dist/
|
|
235
|
-
"dist/
|
|
247
|
+
"dist/split-section.js",
|
|
248
|
+
"dist/logo-cloud.js",
|
|
249
|
+
"dist/core.js",
|
|
236
250
|
"dist/dashboard-canvas.js",
|
|
237
251
|
"dist/dashboard-panel.js",
|
|
238
252
|
"dist/video-player.js",
|
|
239
253
|
"dist/video-lightbox.js",
|
|
240
254
|
"dist/media-image.js",
|
|
241
|
-
"dist/
|
|
242
|
-
"dist/
|
|
243
|
-
"dist/
|
|
255
|
+
"dist/media-card.js",
|
|
256
|
+
"dist/image-compare.js",
|
|
257
|
+
"dist/text-highlight.js",
|
|
244
258
|
"dist/float-button.js",
|
|
245
259
|
"dist/tree-view.js",
|
|
246
260
|
"dist/timeline.js",
|
|
247
261
|
"dist/pagination.js",
|
|
248
262
|
"dist/statistic.js",
|
|
249
|
-
"dist/
|
|
250
|
-
"dist/
|
|
251
|
-
"dist/
|
|
263
|
+
"dist/qr-code.js",
|
|
264
|
+
"dist/descriptions.js",
|
|
265
|
+
"dist/sparkline.js",
|
|
252
266
|
"dist/command-palette.js",
|
|
253
267
|
"dist/modal.js",
|
|
254
268
|
"dist/drawer.js",
|
|
255
269
|
"dist/notification.js",
|
|
256
270
|
"dist/tour.js",
|
|
257
|
-
"dist/
|
|
258
|
-
"dist/
|
|
259
|
-
"dist/
|
|
271
|
+
"dist/notification-center.js",
|
|
272
|
+
"dist/chat.js",
|
|
273
|
+
"dist/chat-widget.js",
|
|
260
274
|
"dist/tree-select.js",
|
|
261
275
|
"dist/upload-manager.js",
|
|
262
276
|
"dist/transfer-list.js",
|
|
263
277
|
"dist/cascader.js",
|
|
264
278
|
"dist/date-picker.js",
|
|
265
|
-
"dist/
|
|
266
|
-
"dist/
|
|
267
|
-
"dist/
|
|
279
|
+
"dist/time-picker.js",
|
|
280
|
+
"dist/date-time-picker.js",
|
|
281
|
+
"dist/date-range-picker.js",
|
|
268
282
|
"dist/font-provider.js",
|
|
269
283
|
"dist/breadcrumbs.js",
|
|
270
284
|
"dist/page-header.js",
|
|
271
285
|
"dist/sidebar.js",
|
|
272
286
|
"dist/splitter.js",
|
|
287
|
+
"dist/app-layout.js",
|
|
288
|
+
"dist/page-layout.js",
|
|
289
|
+
"dist/shape-mask.js",
|
|
290
|
+
"dist/table.js",
|
|
291
|
+
"dist/button.js",
|
|
292
|
+
"dist/badge.js",
|
|
293
|
+
"dist/chip.js",
|
|
294
|
+
"dist/chip-group.js",
|
|
295
|
+
"dist/card.js",
|
|
296
|
+
"dist/skeleton.js",
|
|
297
|
+
"dist/empty-state.js",
|
|
298
|
+
"dist/radio-button.js",
|
|
299
|
+
"dist/radio-group.js",
|
|
300
|
+
"dist/switch.js",
|
|
301
|
+
"dist/select.js",
|
|
302
|
+
"dist/form-field.js",
|
|
303
|
+
"dist/columns2.js",
|
|
304
|
+
"dist/columns3.js",
|
|
305
|
+
"dist/columns4.js",
|
|
273
306
|
"dist/index.js",
|
|
274
|
-
"dist/chunk-4RM3B4L7.js",
|
|
275
|
-
"dist/chunk-NB5PGEDY.js",
|
|
276
|
-
"dist/chunk-3ZS5YITP.js",
|
|
277
|
-
"dist/chunk-SEJUHKS5.js",
|
|
278
|
-
"dist/chunk-WHA6UO5X.js",
|
|
279
307
|
"dist/chunk-KR3UUTB2.js",
|
|
280
308
|
"dist/chunk-VBRSAI3K.js",
|
|
281
309
|
"dist/chunk-IHKCC6WJ.js",
|
|
282
310
|
"dist/chunk-75BQYII5.js",
|
|
283
311
|
"dist/chunk-CZXYS6CY.js",
|
|
284
|
-
"dist/chunk-
|
|
285
|
-
"dist/chunk-
|
|
286
|
-
"dist/chunk-W4SW4RWX.js",
|
|
312
|
+
"dist/chunk-4RM3B4L7.js",
|
|
313
|
+
"dist/chunk-NB5PGEDY.js",
|
|
287
314
|
"dist/chunk-BLDXIO7P.js",
|
|
288
315
|
"dist/chunk-KBOMPMSI.js",
|
|
289
316
|
"dist/chunk-U4ZP73V4.js",
|
|
290
317
|
"dist/chunk-W27NAI62.js",
|
|
291
318
|
"dist/chunk-IIKSMXQE.js",
|
|
292
|
-
"dist/chunk-
|
|
293
|
-
"dist/chunk-
|
|
294
|
-
"dist/chunk-
|
|
319
|
+
"dist/chunk-3ZS5YITP.js",
|
|
320
|
+
"dist/chunk-SEJUHKS5.js",
|
|
321
|
+
"dist/chunk-WHA6UO5X.js",
|
|
295
322
|
"dist/chunk-6EJIIQNF.js",
|
|
296
323
|
"dist/chunk-H7ETPJVW.js",
|
|
297
324
|
"dist/chunk-MCVO25PZ.js",
|
|
298
325
|
"dist/chunk-NTFHNL7T.js",
|
|
299
326
|
"dist/chunk-AICXIQKD.js",
|
|
300
|
-
"dist/chunk-
|
|
301
|
-
"dist/chunk-
|
|
302
|
-
"dist/chunk-
|
|
327
|
+
"dist/chunk-RGTLYBOY.js",
|
|
328
|
+
"dist/chunk-J7BV4KHG.js",
|
|
329
|
+
"dist/chunk-W4SW4RWX.js",
|
|
303
330
|
"dist/chunk-MZBB5ROJ.js",
|
|
304
331
|
"dist/chunk-6EHKOVZK.js",
|
|
305
332
|
"dist/chunk-GK3INPAZ.js",
|
|
306
333
|
"dist/chunk-UEOCR2C3.js",
|
|
307
334
|
"dist/chunk-LGJVLEAH.js",
|
|
308
|
-
"dist/chunk-
|
|
309
|
-
"dist/chunk-
|
|
310
|
-
"dist/chunk-
|
|
335
|
+
"dist/chunk-MBC4UVTS.js",
|
|
336
|
+
"dist/chunk-T45UAWNI.js",
|
|
337
|
+
"dist/chunk-7HXX66DB.js",
|
|
311
338
|
"dist/chunk-C3CLLZH2.js",
|
|
312
339
|
"dist/chunk-4USJBOSC.js",
|
|
313
340
|
"dist/chunk-GEG3TNB4.js",
|
|
314
341
|
"dist/chunk-2MQNFEGJ.js",
|
|
315
|
-
"dist/chunk-
|
|
316
|
-
"dist/chunk-
|
|
317
|
-
"dist/chunk-
|
|
318
|
-
"dist/chunk-
|
|
342
|
+
"dist/chunk-3PNBQVYS.js",
|
|
343
|
+
"dist/chunk-JVE6CXCJ.js",
|
|
344
|
+
"dist/chunk-OPMD7QNV.js",
|
|
345
|
+
"dist/chunk-XWXEH3SW.js",
|
|
319
346
|
"dist/chunk-6XOMFIPU.js",
|
|
320
347
|
"dist/chunk-U73BNLZ3.js",
|
|
321
348
|
"dist/chunk-LJ4O6YTN.js",
|
|
322
349
|
"dist/chunk-SIU7DSOA.js",
|
|
323
350
|
"dist/chunk-K2P2BHV5.js",
|
|
324
|
-
"dist/
|
|
325
|
-
"dist/chunk-
|
|
326
|
-
"dist/
|
|
327
|
-
"dist/theme.js",
|
|
328
|
-
"dist/chunk-64LOE3FU.js",
|
|
329
|
-
"dist/button.js",
|
|
351
|
+
"dist/chunk-XIOI5PKM.js",
|
|
352
|
+
"dist/chunk-Y4TCT2K6.js",
|
|
353
|
+
"dist/chunk-3LWXPCWY.js",
|
|
330
354
|
"dist/chunk-7KMRDQZG.js",
|
|
331
|
-
"dist/badge.js",
|
|
332
355
|
"dist/chunk-Y4WEMSE4.js",
|
|
333
|
-
"dist/chip.js",
|
|
334
356
|
"dist/chunk-TIXCZTJ7.js",
|
|
335
|
-
"dist/chip-group.js",
|
|
336
357
|
"dist/chunk-RZ5YSY7Y.js",
|
|
358
|
+
"dist/chunk-MSMNEIWA.js",
|
|
359
|
+
"dist/chunk-UUZ4HU7L.js",
|
|
360
|
+
"dist/chunk-2HFI6CC6.js",
|
|
361
|
+
"dist/grid-basic.js",
|
|
362
|
+
"dist/chunk-H5IEGCAK.js",
|
|
363
|
+
"dist/essentials.js",
|
|
337
364
|
"dist/chunk-O3MRWAI5.js",
|
|
338
365
|
"dist/chunk-MEEQNPGM.js",
|
|
339
366
|
"dist/chunk-5TEIXA4R.js",
|
|
340
367
|
"dist/chunk-SDMH2EVD.js",
|
|
368
|
+
"dist/theme.js",
|
|
369
|
+
"dist/chunk-64LOE3FU.js",
|
|
370
|
+
"dist/form-layout.js",
|
|
371
|
+
"dist/chunk-5ENZVZGF.js",
|
|
372
|
+
"dist/chunk-IZJN3EF7.js",
|
|
373
|
+
"dist/chunk-FNX33PDD.js",
|
|
374
|
+
"dist/chunk-IO22GWON.js",
|
|
375
|
+
"dist/chunk-EPZGLHPD.js",
|
|
376
|
+
"dist/chunk-MYVLBALF.js",
|
|
377
|
+
"dist/chunk-RYD6RHRX.js",
|
|
378
|
+
"dist/chunk-BN3PDE5G.js",
|
|
379
|
+
"dist/chunk-VJVFHL6P.js",
|
|
380
|
+
"dist/chunk-IJ62ILKE.js",
|
|
381
|
+
"dist/chunk-UN2SLVFG.js",
|
|
382
|
+
"dist/checkbox.js",
|
|
383
|
+
"dist/chunk-HO6CYWED.js",
|
|
384
|
+
"dist/chunk-GXHANADL.js",
|
|
385
|
+
"dist/text-input.js",
|
|
386
|
+
"dist/chunk-RWBLICYX.js",
|
|
387
|
+
"dist/text-area.js",
|
|
388
|
+
"dist/chunk-YCLR3IE3.js",
|
|
389
|
+
"dist/chunk-AL2ETLJV.js",
|
|
390
|
+
"dist/chunk-EOKNLCNS.js",
|
|
341
391
|
"dist/bluui-community.js",
|
|
342
392
|
"dist/bluui-community-grid.js",
|
|
393
|
+
"dist/native/form-layout.js",
|
|
343
394
|
"dist/native/font-provider.js",
|
|
344
395
|
"dist/native/splitter.js",
|
|
345
396
|
"dist/native/app-layout.js",
|
|
@@ -384,5 +435,82 @@
|
|
|
384
435
|
"dist/native/split-section.js",
|
|
385
436
|
"dist/native/logo-cloud.js"
|
|
386
437
|
],
|
|
387
|
-
"sourcePolicy": "Independent Community sources and selected MIT engine modules only. The ten Pro components are excluded."
|
|
438
|
+
"sourcePolicy": "Independent Community sources and selected MIT engine modules only. The ten Pro components are excluded.",
|
|
439
|
+
"draft": {
|
|
440
|
+
"status": "local draft — not published; native models validated, compiled consumer testing pending",
|
|
441
|
+
"components": [
|
|
442
|
+
{
|
|
443
|
+
"name": "Checkbox",
|
|
444
|
+
"slug": "checkbox",
|
|
445
|
+
"factory": "createCheckbox",
|
|
446
|
+
"group": "inputs"
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
"name": "TextInput",
|
|
450
|
+
"slug": "text-input",
|
|
451
|
+
"factory": "createTextInput",
|
|
452
|
+
"group": "inputs"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"name": "TextArea",
|
|
456
|
+
"slug": "text-area",
|
|
457
|
+
"factory": "createTextArea",
|
|
458
|
+
"group": "inputs"
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"name": "RadioButton",
|
|
462
|
+
"slug": "radio-button",
|
|
463
|
+
"factory": "createRadioButton",
|
|
464
|
+
"group": "inputs"
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"name": "RadioGroup",
|
|
468
|
+
"slug": "radio-group",
|
|
469
|
+
"factory": "createRadioGroup",
|
|
470
|
+
"group": "inputs"
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
"name": "Switch",
|
|
474
|
+
"slug": "switch",
|
|
475
|
+
"factory": "createSwitch",
|
|
476
|
+
"group": "inputs"
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
"name": "Select",
|
|
480
|
+
"slug": "select",
|
|
481
|
+
"factory": "createSelect",
|
|
482
|
+
"group": "inputs"
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
"name": "FormField",
|
|
486
|
+
"slug": "form-field",
|
|
487
|
+
"factory": "createFormField",
|
|
488
|
+
"group": "inputs"
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
"name": "Columns2",
|
|
492
|
+
"slug": "columns2",
|
|
493
|
+
"factory": "createColumns2",
|
|
494
|
+
"group": "layout"
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"name": "Columns3",
|
|
498
|
+
"slug": "columns3",
|
|
499
|
+
"factory": "createColumns3",
|
|
500
|
+
"group": "layout"
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"name": "Columns4",
|
|
504
|
+
"slug": "columns4",
|
|
505
|
+
"factory": "createColumns4",
|
|
506
|
+
"group": "layout"
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"name": "Table",
|
|
510
|
+
"slug": "table",
|
|
511
|
+
"factory": "createTable",
|
|
512
|
+
"group": "data"
|
|
513
|
+
}
|
|
514
|
+
]
|
|
515
|
+
}
|
|
388
516
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './form-layout.css';
|
package/dist/checkbox.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-HO6CYWED.js";import{a}from"./chunk-GXHANADL.js";import"./chunk-EOKNLCNS.js";export{a as createCheckbox};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as X}from"./chunk-MEEQNPGM.js";import{c as G,d as Q}from"./chunk-5TEIXA4R.js";var C=G("advanced",()=>({instances:new Map,serial:0})),fe=()=>`blu-advanced-${++C.serial}`;function c(e,t,a){let r=document.createElement(e);return t&&(r.className=t),a!==void 0&&(r.textContent=String(a)),r}function u(e,t,a){return a==null?e.removeAttribute(t):e.setAttribute(t,String(a)),e}function x(e,t,a="blu-picker__button"){let r=c("button",a,e);return r.type="button",r.addEventListener("click",t),r}function I(e,t,...a){if(!e.dead)try{Promise.resolve(e.events[t]?.(...a)).catch(r=>K(e,r))}catch(r){K(e,r)}}function K(e,t){if(e.dead)return;let a=t?.message||String(t);e.notice.textContent=a,e.lastError!==a&&(e.lastError=a,I(e,"Error",a))}function Z(e,t){let a=typeof e=="string"?JSON.parse(e||"[]"):e||[];if(!Array.isArray(a))throw Error(t+" must be a list.");return a}function me(e,t,a){let r=o=>{let n=C.instances.get(o);!n||n.kind!==e||(n.dead=!0,n.dispose?.(),n.root.remove(),n.notice.remove(),n.host._bluAdvancedOwner===o&&delete n.host._bluAdvancedOwner,C.instances.delete(o))};return Q(e,()=>({sync(o,n={},m={},h){let l=document.getElementById(o);if(!l)return e+" host was not found.";let g=h||o,p=C.instances.get(g);p&&(p.host!==l||p.kind!==e)&&(p.destroy(p.key),p=null);let i=C.instances.get(l._bluAdvancedOwner);if(i&&i!==p&&i.destroy(i.key),!p){p={key:g,host:l,kind:e,uid:fe(),options:n,events:m,dead:!1,destroy:r},p.root=c("div"),p.notice=u(c("div","blu-advanced-sr"),"role","status"),u(p.notice,"aria-atomic","true"),l.append(p.root,p.notice),C.instances.set(g,p),l._bluAdvancedOwner=g;try{t(p)}catch(f){throw r(g),f}}p.options=n,p.events=m;try{return a(p),l.dataset.bluRuntimeReady="true",""}catch(f){return K(p,f),f.message||String(f)}},destroy:r}))}var v=e=>String(e).padStart(2,"0");function q(e){return String(e.getFullYear()).padStart(4,"0")+"-"+v(e.getMonth()+1)+"-"+v(e.getDate())}function b(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(e));if(!t||+t[1]<1||+t[1]>9999)return null;let a=new Date(2e3,+t[2]-1,+t[3],12);return a.setFullYear(+t[1]),q(a)===e?a:null}function L(e){let t=/^(\d{2}):(\d{2})$/.exec(String(e));return t&&+t[1]<24&&+t[2]<60?t[1]+":"+t[2]:null}function ee(e,t="YYYY-MM-DD"){if(e=String(e).trim(),!e)return"";let a=e;if(t!=="YYYY-MM-DD"){let r=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(e);if(!r)return null;a=r[3]+"-"+v(+(t==="DD/MM/YYYY"?r[2]:r[1]))+"-"+v(+(t==="DD/MM/YYYY"?r[1]:r[2]))}return b(a)?a:null}function te(e,t="YYYY-MM-DD"){if(!e)return"";let a=e.split("-");return t==="MM/DD/YYYY"?a[1]+"/"+a[2]+"/"+a[0]:t==="DD/MM/YYYY"?a[2]+"/"+a[1]+"/"+a[0]:e}function he(e,t=24){if(e=String(e).trim(),!e)return"";let a=/^(\d{1,2}):(\d{2})(?:\s*(AM|PM))?$/i.exec(e);return!a||+a[2]>59||(t===12?!a[3]||+a[1]<1||+a[1]>12:a[3]||+a[1]>23)?null:v(a[3]?+a[1]%12+(a[3].toUpperCase()==="PM"?12:0):+a[1])+":"+a[2]}function O(e,t=24){if(!e)return"";let[a,r]=e.split(":").map(Number);return t===12?(a%12||12)+":"+v(r)+" "+(a<12?"AM":"PM"):v(a)+":"+v(r)}function ae(e,t){let a=b(e);return a.setDate(a.getDate()+t),q(a)}function ie(e,t){let a=b(e),r=a.getDate();return a.setDate(1),a.setMonth(a.getMonth()+t),a.setDate(Math.min(r,new Date(a.getFullYear(),a.getMonth()+1,0).getDate())),q(a)}function ge(e,t){let a=b(e),r=b(t);return Math.round((r.getTime()-a.getTime())/864e5)}function z(e,t,a,r){return b(e)?t&&e<t?"Choose "+t+" or later.":a&&e>a?"Choose "+a+" or earlier.":r?.has(e)?"This date is unavailable.":"":"Enter a real calendar date."}function oe(e,t,a={}){if(!e||!t)return"Choose both a start date and an end date.";let r=z(e,a.Min,a.Max,a.disabled)||z(t,a.Min,a.Max,a.disabled);if(r)return r;if(t<e)return"End date must be on or after start date.";let o=ge(e,t)+1;if(a.MinRangeDays&&o<a.MinRangeDays)return"Choose at least "+a.MinRangeDays+" days.";if(a.MaxRangeDays&&o>a.MaxRangeDays)return"Choose no more than "+a.MaxRangeDays+" days.";if(a.disabled){for(let n of a.disabled)if(n>=e&&n<=t)return"The range includes an unavailable date."}return""}var ye=["YYYY-MM-DD","MM/DD/YYYY","DD/MM/YYYY"],N=()=>q(new Date),S=e=>String(e||"").split("T")[0],F=e=>String(e||"").split("T")[1]||"";function w(e,t){let a=b(t);return a?new Intl.DateTimeFormat(e.locale,{dateStyle:"full"}).format(a):t}function B(e,t,a=e.fields){e.error.textContent=t,e.error.hidden=!t||e.isOpen,e.dialogError&&(e.dialogError.textContent=e.isOpen?t:"");for(let o of e.fields)u(o.input,"aria-invalid",t&&a.includes(o)?"true":null);let r=!t;(e.valid!==r||e.validationMessage!==t)&&(e.valid=r,e.validationMessage=t,I(e,"ValidationChanged",r,t))}function V(e,t){return z(t,S(e.options.Min),S(e.options.Max),e.disabledDates)}function be(e,t,a){if(!L(t))return"Enter a valid time.";let r=e.dateTime?a+"T"+t:t,o=e.options.Min,n=e.options.Max;return o&&r<o?"Choose "+o+" or later.":n&&r>n?"Choose "+n+" or earlier.":""}function de(e,t,a,r){if(e.range)return!t&&!a&&!e.options.IsRequired?"":oe(t,a,{...e.options,disabled:e.disabledDates});if(!t&&!r)return e.options.IsRequired?"A "+(e.timeOnly?"time":"date")+" is required.":"";if(!e.timeOnly){if(!t)return"Choose a date.";let o=V(e,t);if(o)return o}return e.hasTime?r?be(e,r,t):"Choose a time.":""}function le(e){e.timeOnly?e.fields[0].input.value=O(e.value,e.cycle):(e.fields[0].input.value=te(e.range?e.start:S(e.value),e.format),e.range&&(e.fields[1].input.value=te(e.end,e.format)),e.dateTime&&(e.fields[1].input.value=O(F(e.value),e.cycle)));let t=e.range?[e.start,e.end].filter(Boolean).join(" to "):e.value;e.typedDirty=!1,e.clearButton.hidden=e.options.ShowClear===!1||!t}function k(e,t=!0){if(e.isOpen){e.isOpen=!1,e.dialog.hidePopover&&e.dialog.matches(":popover-open")&&e.dialog.hidePopover(),e.dialog.hidden=!0,e.error.hidden=!e.validationMessage;for(let{input:a}of e.fields)u(a,"aria-expanded","false");t&&e.anchor?.isConnected&&!e.anchor.disabled&&e.anchor.focus({preventScroll:!0}),I(e,"OpenChanged",!1)}}function Y(e){if(!e.isOpen||e.dead)return;let t=e.anchor.getBoundingClientRect(),a=window.visualViewport,r=a?.offsetLeft||0,o=a?.offsetTop||0,n=a?.width||document.documentElement.clientWidth,m=a?.height||window.innerHeight,h=6,l=8;if(t.bottom<=o||t.top>=o+m||t.right<=r||t.left>=r+n){k(e,!1);return}let g=e.dialog,p=Math.min(e.timeOnly?300:344,n-l*2);g.dataset.compact=String(m<420),g.style.width=p+"px",g.style.maxHeight="none";let i=Math.max(0,o+m-l-t.bottom-h),f=Math.max(0,t.top-h-o-l),d=g.scrollHeight+2,D=d>i&&f>i,E=Math.max(0,m-l*2);g.style.maxHeight=E+"px";let y=e.fieldRow.getBoundingClientRect();g.style.left=Math.max(r+l,Math.min(y.left+(y.width-p)/2,r+n-l-p))+"px";let M=D?t.top-h-d:t.bottom+h;g.style.top=Math.max(o+l,Math.min(M,o+m-l-Math.min(d,E)))+"px",g.dataset.placement=D?"top":"bottom"}function ne(e){(e.timeOnly||e.dateTime&&e.anchor===e.fields[1].input?e.hours:e.calendar.querySelector('[data-date="'+e.focusDate+'"]')||e.monthSelect).focus({preventScroll:!0})}function H(e,t,a,r,o=!1){let n=de(e,t,a,r);if(B(e,n),n)return e.dialogError.textContent=n,!1;let m=document.activeElement===e.clearButton&&!t&&!a&&!r,h=e.timeOnly?r:e.dateTime?t?t+"T"+r:"":t,l=e.range?e.start!==t||e.end!==a:e.value!==h;return e.range?(e.start=t,e.end=a,e.options.StartDate=t,e.options.EndDate=a):(e.value=h,e.options.Value=h),e.inputSignature=JSON.stringify(e.range?[e.start,e.end]:[e.value]),le(e),o||k(e),m&&e.fields[0].input.focus({preventScroll:!0}),e.notice.textContent=e.range?t?w(e,t)+" to "+w(e,a):"Date range cleared":h?"Selected "+(e.timeOnly?O(h,e.cycle):w(e,t)+(e.hasTime?" at "+O(r,e.cycle):"")):"Selection cleared",l&&(e.range?I(e,"Change",t,a):I(e,"Change",h)),!0}function re(e,t=!1){if(e.options.IsDisabled||e.options.IsReadOnly)return;let a=e.timeOnly?"":ee(e.fields[0].input.value,e.format),r=e.range?ee(e.fields[1].input.value,e.format):"",o=e.hasTime?he(e.fields[e.timeOnly?0:1].input.value,e.cycle):"";if(a===null||r===null){B(e,"Enter a real date using "+e.format+".");return}if(o===null){B(e,e.cycle===12?"Enter a time such as 9:15 AM.":"Enter a time such as 14:30.");return}H(e,a,r,o,t)&&t&&(e.draftStart=a,e.draftEnd=r,e.draftTime=o,a&&(e.focusDate=a,e.month=a.slice(0,7)),_(e),J(e),s(e),Y(e))}function De(e){let t=e.range||e.dateTime?2:1;e.fields=[];for(let a=0;a<t;a++){let r=c("div","blu-picker__field"),o=c("label"),n=c("input","blu-picker__input");n.type="text",n.id=e.uid+"-input-"+a,o.htmlFor=n.id,n.autocomplete="off",n.spellcheck=!1,u(n,"role","combobox"),u(n,"aria-haspopup","dialog"),u(n,"aria-expanded","false"),u(n,"aria-autocomplete","none"),u(n,"aria-controls",e.uid+"-dialog"),u(n,"aria-describedby",e.uid+"-hint "+e.uid+"-error "+e.uid+"-keyboard"),n.addEventListener("input",()=>{e.typedDirty=!0}),n.addEventListener("change",()=>re(e,e.isOpen)),n.addEventListener("pointerdown",l=>{l.pointerType==="mouse"&&(e.touchOpen=!1,n.inputMode="text"),(l.pointerType==="touch"||l.pointerType==="pen")&&e.manualInput!==n&&!e.options.IsDisabled&&!e.options.IsReadOnly&&(l.preventDefault(),e.touchOpen=!0,n.inputMode="none",P(e,n,!0))}),n.addEventListener("click",l=>{e.manualInput!==n&&(e.touchOpen?(l.preventDefault(),P(e,n,!0)):P(e,n,!1))}),n.addEventListener("blur",()=>{e.manualInput===n&&(e.manualInput=null)}),n.addEventListener("keydown",l=>{l.ctrlKey||l.metaKey||l.shiftKey||(l.key==="ArrowDown"&&(l.preventDefault(),P(e,n,!0)),l.key==="Enter"&&(l.preventDefault(),!e.isOpen&&!e.typedDirty?P(e,n,!0):re(e)),l.key==="Tab"&&k(e,!1))});let m=c("div","blu-picker__field-control"),h=u(c("span","blu-picker__field-icon"),"aria-hidden","true");h.innerHTML=e.timeOnly||e.dateTime&&a?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><circle cx="12" cy="12" r="8.5"/><path d="M12 7v5l3 2"/></svg>':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><rect x="4" y="5" width="16" height="16" rx="3"/><path d="M8 3v4m8-4v4M4 10h16m-11 4h2m3 0h2m-7 3h2"/></svg>',m.append(n,h),r.append(o,m),e.fields.push({field:r,label:o,input:n}),e.fieldRow.append(r)}}function T(e,t,a){let r=c("option","",a);return r.value=String(t),e.append(r),r}function A(e,t,a){let r=c("label","blu-picker__select-field"),o=c("span","blu-picker__select-caption",t),n=c("select","blu-picker__input");return n.id=e.uid+"-"+a,r.append(o,n),{wrap:r,select:n}}function ve(e){if(e.button!==0)return;let t=e.target.closest?.("button");!t||t.disabled||(e.preventDefault(),t.focus({preventScroll:!0}))}function R(e,t){let a=S(e.options.Min)||"0001-01-01",r=S(e.options.Max)||"9999-12-31";t=t<a?a:t>r?r:t,b(t)&&(e.focusDate=t,e.month=t.slice(0,7),_(e),e.calendar.querySelector('[data-date="'+t+'"]')?.focus({preventScroll:!0}))}function Se(e,t,a){if(t.altKey||t.ctrlKey||t.metaKey)return;let r,o={ArrowLeft:-1,ArrowRight:1,ArrowUp:-7,ArrowDown:7};if(t.key in o)r=ae(a,o[t.key]);else if(t.key==="Home"||t.key==="End"){let n=(b(a).getDay()-e.firstDay+7)%7;r=ae(a,t.key==="Home"?-n:6-n)}else(t.key==="PageUp"||t.key==="PageDown")&&(r=ie(a,(t.key==="PageUp"?-1:1)*(t.shiftKey?12:1)));r&&(t.preventDefault(),R(e,r))}function ce(e,t){if(!V(e,t)){if(e.dialogError.textContent="",e.focusDate=t,e.range?e.rangeNext==="start"?(e.draftStart=t,e.draftEnd="",e.rangeNext="end"):(t<e.draftStart?(e.draftEnd=e.draftStart,e.draftStart=t):e.draftEnd=t,e.rangeNext="start"):e.draftStart=t,!e.hasTime&&!e.range){H(e,t,"","");return}_(e),e.calendar.querySelector('[data-date="'+t+'"]')?.focus({preventScroll:!0}),s(e)}}function s(e){let t=e.range?e.draftStart?w(e,e.draftStart)+(e.draftEnd?" to "+w(e,e.draftEnd):" \u2014 choose an end date"):"Choose a start date":e.hasTime?(e.draftStart?w(e,e.draftStart)+" \xB7 ":"")+O(e.draftTime,e.cycle):"",a=r=>b(r)?new Intl.DateTimeFormat(e.locale,{month:"short",day:"numeric"}).format(b(r)):"";e.selectionSpeech.textContent=t,e.selectionVisual.textContent=e.range?e.draftStart?a(e.draftStart)+(e.draftEnd?" \u2013 "+a(e.draftEnd):" \u2014 choose end"):"Choose start date":e.dateTime?a(e.draftStart)+" \xB7 "+O(e.draftTime,e.cycle):e.timeOnly?O(e.draftTime,e.cycle):"",e.selection.hidden=!t}function _(e){let t=b(e.month+"-01");if(!t)return;let a=t.getFullYear(),r=t.getMonth(),o=Number(S(e.options.Min).slice(0,4))||1,n=Number(S(e.options.Max).slice(0,4))||9999;e.monthSelect.value=String(r),e.yearInput.value=String(a),u(e.yearInput,"aria-invalid",null),e.yearInput.min=String(o),e.yearInput.max=String(n);let m=new Intl.DateTimeFormat(e.locale,{month:"long",year:"numeric"}).format(t);e.caption.textContent!==m&&(e.caption.textContent=m);let h=(t.getDay()-e.firstDay+7)%7,l=new Date(a,r+1,0).getDate();if(e.focusDate.startsWith(e.month)||(e.focusDate=e.month+"-01"),!e.dayCells){let i=c("tbody");e.dayCells=[];for(let f=0;f<6;f++){let d=c("tr");for(let D=0;D<7;D++){let E=c("td"),y=x("",()=>ce(e,y.dataset.date),"blu-picker__day");y.addEventListener("keydown",M=>Se(e,M,y.dataset.date)),y.addEventListener("focus",()=>{e.focusDate=y.dataset.date;for(let M of e.dayCells)M.button.tabIndex=M.button===y?0:-1}),E.append(y),d.append(E),e.dayCells.push({cell:E,button:y})}i.append(d)}e.calendar.append(i)}for(let i=0;i<e.dayCells.length;i++){let{cell:f,button:d}=e.dayCells[i],D=i-h+1,E=D>0&&D<=l;if(d.hidden=!E,!E){d.tabIndex=-1,delete d.dataset.date,u(f,"aria-selected",null);continue}let y=e.month+"-"+v(D),M=y===e.draftStart||e.range&&y===e.draftEnd,U=e.range&&e.draftStart&&e.draftEnd&&y>e.draftStart&&y<e.draftEnd,W=V(e,y),$=!!(M||U),pe=e.range&&M?y===e.draftStart?e.draftEnd?", range starts here; "+w(e,e.draftStart)+" to "+w(e,e.draftEnd):", start date; choose an end date":", range ends here; "+w(e,e.draftStart)+" to "+w(e,e.draftEnd):"",j=w(e,y)+($?", selected":"")+pe+(W?", unavailable":"");d.dataset.date=y,d.tabIndex=y===e.focusDate?0:-1,d.textContent!==String(D)&&(d.textContent=String(D)),d.getAttribute("aria-label")!==j&&u(d,"aria-label",j),u(f,"aria-selected",String($)),u(d,"aria-disabled",W?"true":null),u(d,"aria-current",y===N()?"date":null),d.dataset.selected=String(M),d.dataset.between=String(!!U)}for(let i=0;i<6;i++)e.dayCells[i*7].cell.parentElement.hidden=i*7-h+1>l;let g=S(e.options.Min),p=S(e.options.Max);e.prev.disabled=!!g&&e.month<=g.slice(0,7)||a===1&&r===0,e.next.disabled=!!p&&e.month>=p.slice(0,7)||a===9999&&r===11,e.todayButton.hidden=e.timeOnly||e.options.ShowToday===!1,e.todayButton.disabled=!!V(e,N())}function J(e){if(!e.hasTime)return;let[t,a]=(e.draftTime||"09:00").split(":").map(Number);e.hours.replaceChildren(),e.minutes.replaceChildren();for(let r=0;r<(e.cycle===12?12:24);r++)T(e.hours,e.cycle===12?r+1:r,v(e.cycle===12?r+1:r));for(let r=0;r<60;r+=e.step)T(e.minutes,r,v(r));a%e.step&&T(e.minutes,a,v(a)+" (entered)"),e.hours.value=String(e.cycle===12?t%12||12:t),e.minutes.value=String(a),e.period.value=t<12?"AM":"PM",e.periodField.hidden=e.cycle!==12,s(e)}function P(e,t=e.fields[0].input,a=!0){if(e.options.IsDisabled||e.options.IsReadOnly)return;if(e.anchor=t,e.manualInput=null,e.typeButton.hidden=!e.touchOpen,e.isOpen){e.range&&(e.rangeNext=t===e.fields[1].input&&e.draftStart?"end":"start"),Y(e),a&&ne(e);return}e.draftStart=e.timeOnly?"":e.range?e.start:S(e.value),e.draftEnd=e.end||"",e.draftTime=e.timeOnly?e.value:F(e.value),e.hasTime&&!L(e.draftTime)&&(e.draftTime="09:00"),e.rangeNext="start",e.range&&t===e.fields[1].input&&e.draftStart&&(e.rangeNext="end");let r=e.range&&e.rangeNext==="end"?e.draftEnd:e.draftStart;e.focusDate=b(r)?r:b(e.draftStart)?e.draftStart:N();let o=S(e.options.Min),n=S(e.options.Max);e.timeOnly||(o&&e.focusDate<o&&(e.focusDate=o),n&&e.focusDate>n&&(e.focusDate=n)),e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",_(e),J(e),s(e),e.isOpen=!0,e.dialog.hidden=!1,e.dialog.showPopover&&e.dialog.showPopover(),e.dialog.scrollTop=0;for(let{input:m}of e.fields)u(m,"aria-expanded","true");Y(e),a&&e.isOpen&&ne(e),I(e,"OpenChanged",!0)}function we(e){e.range=e.kind==="DateRangePicker",e.timeOnly=e.kind==="TimePicker",e.dateTime=e.kind==="DateTimePicker",e.hasTime=e.timeOnly||e.dateTime,e.root.className="blu-picker",e.fieldRow=c("div","blu-picker__fields"),e.error=u(c("div","blu-picker__error"),"role","alert"),e.error.id=e.uid+"-error",e.error.hidden=!0,e.hint=c("div","blu-picker__hint"),e.hint.id=e.uid+"-hint",e.actions=c("div","blu-picker__actions"),e.clearButton=x("Clear",()=>H(e,"","","")),e.actions.append(e.clearButton),e.root.append(e.fieldRow,e.hint,e.actions,e.error),De(e);let t=c("span","blu-advanced-sr","Click the field or press Down Arrow to browse. Escape closes the popup.");t.id=e.uid+"-keyboard",e.root.append(t),e.dialog=c("div","blu-picker__dialog blu-picker__popup"),e.dialog.id=e.uid+"-dialog",e.dialog.hidden=!0,u(e.dialog,"role","dialog"),u(e.dialog,"aria-labelledby",e.uid+"-title"),u(e.dialog,"aria-modal","false"),e.dialog.showPopover&&u(e.dialog,"popover","manual"),e.root.append(e.dialog),e.dialog.addEventListener("mousedown",ve),e.title=c("h2","blu-advanced-sr"),e.title.id=e.uid+"-title",e.dialog.append(e.title),e.presets=c("div","blu-picker__presets"),e.dialog.append(e.presets),e.calendarArea=c("div","blu-picker__calendar-area"),e.calendarArea.hidden=e.timeOnly,e.dialog.append(e.calendarArea);let a=c("div","blu-picker__calendar-nav"),r=A(e,"Month","month");e.monthSelect=r.select;let o=c("label","blu-picker__select-field");o.append(c("span","blu-picker__select-caption","Year")),e.yearInput=c("input","blu-picker__input"),e.yearInput.type="number",e.yearInput.step="1",o.append(e.yearInput);let n=d=>{let D=ie(e.focusDate,d);R(e,D)};e.prev=x("\u2039",()=>n(-1)),u(e.prev,"aria-label","Previous month"),e.next=x("\u203A",()=>n(1)),u(e.next,"aria-label","Next month"),a.append(e.prev,r.wrap,o,e.next),e.calendarArea.append(a),e.monthSelect.addEventListener("change",()=>R(e,String(e.yearInput.value).padStart(4,"0")+"-"+v(+e.monthSelect.value+1)+"-01")),e.yearInput.addEventListener("change",()=>{let d=Number(e.yearInput.value);if(!Number.isInteger(d)||d<+e.yearInput.min||d>+e.yearInput.max){e.dialogError.textContent="Enter a year from "+e.yearInput.min+" to "+e.yearInput.max+".",u(e.yearInput,"aria-invalid","true");return}u(e.yearInput,"aria-invalid",null),e.dialogError.textContent="",R(e,String(d).padStart(4,"0")+"-"+v(+e.monthSelect.value+1)+"-01")}),e.caption=u(c("h3","blu-picker__caption blu-advanced-sr"),"aria-live","polite"),e.caption.id=e.uid+"-caption",e.calendarArea.append(e.caption),e.calendar=u(c("table","blu-picker__calendar"),"role","grid"),u(e.calendar,"aria-labelledby",e.caption.id),e.range&&u(e.calendar,"aria-multiselectable","true"),e.calendarArea.append(e.calendar),e.todayButton=x("Today",()=>{e.focusDate=N(),e.month=e.focusDate.slice(0,7),ce(e,e.focusDate)}),e.calendarArea.append(c("p","blu-advanced-sr","Arrow keys move by day or week. Home/End move within the week. Page Up/Down change month; hold Shift to change year.")),e.timeArea=c("div","blu-picker__time-area"),e.timeArea.hidden=!e.hasTime,e.dialog.append(e.timeArea);let m=A(e,"Hour","hour"),h=A(e,"Minute","minute"),l=A(e,"AM / PM","period");e.hours=m.select,e.minutes=h.select,e.period=l.select,e.periodField=l.wrap,T(e.period,"AM","AM"),T(e.period,"PM","PM"),e.timeArea.append(m.wrap,h.wrap,l.wrap);for(let d of[e.hours,e.minutes,e.period])d.addEventListener("change",()=>{let D=+e.hours.value;e.cycle===12&&(D=D%12+(e.period.value==="PM"?12:0)),e.draftTime=v(D)+":"+v(+e.minutes.value),e.dialogError.textContent="",s(e)});e.selection=u(c("div","blu-picker__selection"),"role","status"),u(e.selection,"aria-atomic","true"),e.selectionSpeech=c("span","blu-advanced-sr"),e.selectionVisual=u(c("span"),"aria-hidden","true"),e.selection.append(e.selectionSpeech,e.selectionVisual),e.dialogError=u(c("div","blu-picker__error"),"role","alert"),e.dialogError.id=e.uid+"-dialog-error",u(e.yearInput,"aria-describedby",e.dialogError.id),e.apply=x("Apply",()=>H(e,e.draftStart,e.draftEnd,e.draftTime),"blu-picker__button blu-picker__button--primary"),e.apply.hidden=!e.range&&!e.hasTime,e.typeButton=x("Type",()=>{let d=e.anchor;k(e,!1),e.manualInput=d,d.inputMode="text",d.focus({preventScroll:!0})}),u(e.typeButton,"aria-label","Type a date or time"),e.typeButton.hidden=!0;let g=c("div","blu-picker__popup-actions");g.append(e.typeButton,e.todayButton,x("Cancel",()=>k(e)),e.apply),e.dialog.append(e.selection,e.dialogError,g);let p=d=>{e.isOpen&&!e.root.contains(d.target)&&k(e,!1)},i=d=>{e.isOpen&&d.key==="Escape"&&!d.defaultPrevented&&(d.preventDefault(),d.stopPropagation(),k(e))},f=d=>{!e.isOpen||e.dialog.contains(d?.target)||(cancelAnimationFrame(e.positionFrame),e.positionFrame=requestAnimationFrame(()=>Y(e)))};document.addEventListener("pointerdown",p,!0),document.addEventListener("focusin",p),e.root.addEventListener("keydown",i),window.addEventListener("resize",f),document.addEventListener("scroll",f,!0),window.visualViewport?.addEventListener("resize",f),window.visualViewport?.addEventListener("scroll",f),window.ResizeObserver&&(e.popupObserver=new ResizeObserver(()=>f()),e.popupObserver.observe(e.fieldRow),e.popupObserver.observe(e.dialog)),e.dispose=()=>{k(e,!1),cancelAnimationFrame(e.positionFrame),e.popupObserver?.disconnect(),document.removeEventListener("pointerdown",p,!0),document.removeEventListener("focusin",p),e.root.removeEventListener("keydown",i),window.removeEventListener("resize",f),document.removeEventListener("scroll",f,!0),window.visualViewport?.removeEventListener("resize",f),window.visualViewport?.removeEventListener("scroll",f)}}function Me(e){let t=JSON.stringify(e.options);if(e.renderSignature===t)return;let a=e.isOpen?document.activeElement:null,r=a?.dataset?.date,o=a?.id,n=e.options;if(e.label=String(n.Label||{DatePicker:"Date",TimePicker:"Time",DateTimePicker:"Date and time",DateRangePicker:"Date range"}[e.kind]),e.locale=String(n.Locale||"en-US"),new Intl.DateTimeFormat(e.locale),e.format=ye.includes(n.DateFormat)?n.DateFormat:"YYYY-MM-DD",e.cycle=Number(n.HourCycle)===12?12:24,e.step=Number(n.MinuteStep??15),!Number.isInteger(e.step)||e.step<1||e.step>60)throw Error("MinuteStep must be a whole number from 1 to 60.");if(e.firstDay=Number(n.FirstDayOfWeek??1),!Number.isInteger(e.firstDay)||e.firstDay<0||e.firstDay>6)throw Error("FirstDayOfWeek must be 0\u20136.");e.disabledDates=new Set(Z(n.DisabledDatesJson??n.DisabledDates,"DisabledDates").map(i=>typeof i=="string"?i:i.Date));for(let i of e.disabledDates)if(!b(i))throw Error("DisabledDates must contain ISO calendar dates.");for(let i of["Min","Max"])if(n[i]&&!(e.timeOnly?L(n[i]):b(S(n[i]))&&(!e.dateTime||L(F(n[i])))))throw Error(i+" must use the documented ISO value format.");if(n.Min&&n.Max&&n.Min>n.Max)throw Error("Min must be on or before Max.");for(let i of["MinRangeDays","MaxRangeDays"])if(n[i]!==void 0&&(!Number.isInteger(Number(n[i]))||Number(n[i])<0))throw Error(i+" must be a non-negative whole number.");if(n.MinRangeDays&&n.MaxRangeDays&&Number(n.MinRangeDays)>Number(n.MaxRangeDays))throw Error("MinRangeDays must not exceed MaxRangeDays.");let m=e.range?[String(n.StartDate||""),String(n.EndDate||"")]:[String(n.Value||"")],h=JSON.stringify(m),l=h!==e.inputSignature;if(e.inputSignature=h,e.range?(e.start=m[0],e.end=m[1]):e.value=m[0],e.fields.forEach((i,f)=>{i.label.textContent=e.range?e.label+(f?" \u2014 end":" \u2014 start"):e.dateTime?e.label+(f?" \u2014 time":" \u2014 date"):e.label,i.input.disabled=!!n.IsDisabled,i.input.readOnly=!!n.IsReadOnly,i.input.required=!!n.IsRequired,i.input.placeholder=String(n.Placeholder||(e.timeOnly||e.dateTime&&f?e.cycle===12?"9:00 AM":"09:00":e.format))}),e.hint.textContent=e.timeOnly?(e.cycle===12?"h:mm AM/PM":"HH:mm")+" \xB7 local time":e.format+(e.dateTime?" \xB7 "+(e.cycle===12?"h:mm AM/PM":"HH:mm")+" local time":""),e.title.textContent=e.label,e.clearButton.disabled=!!n.IsDisabled||!!n.IsReadOnly,l||e.previousFormat!==e.format||e.previousCycle!==e.cycle){le(e);let i=m.some(Boolean);B(e,i?de(e,e.timeOnly?"":e.range?e.start:S(e.value),e.end||"",e.timeOnly?e.value:F(e.value)):""),e.previousFormat=e.format,e.previousCycle=e.cycle}e.monthSelect.replaceChildren();for(let i=0;i<12;i++)T(e.monthSelect,i,new Intl.DateTimeFormat(e.locale,{month:"long"}).format(new Date(2024,i,1)));e.calendar.tHead?.remove();let g=c("thead"),p=c("tr");for(let i=0;i<7;i++){let f=new Date(2024,0,7+(i+e.firstDay)%7),d=c("th","",new Intl.DateTimeFormat(e.locale,{weekday:"short"}).format(f));d.scope="col",d.abbr=new Intl.DateTimeFormat(e.locale,{weekday:"long"}).format(f),p.append(d)}if(g.append(p),e.calendar.prepend(g),e.presets.replaceChildren(),e.presets.hidden=!e.range,e.range)for(let i of Z(n.PresetsJson??n.Presets,"Presets")){if(!i.Label||!b(i.StartDate)||!b(i.EndDate))throw Error("Presets need Label, StartDate and EndDate.");let f=x(i.Label,()=>{e.draftStart=i.StartDate,e.draftEnd=i.EndDate,e.rangeNext="start",e.focusDate=e.draftStart,e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",_(e),s(e)});f.disabled=!!oe(i.StartDate,i.EndDate,{...n,disabled:e.disabledDates}),e.presets.append(f)}e.isOpen&&(n.IsDisabled||n.IsReadOnly||l?k(e):(_(e),J(e),r?e.calendar.querySelector('[data-date="'+r+'"]')?.focus({preventScroll:!0}):o&&document.getElementById(o)?.focus({preventScroll:!0}),Y(e))),e.renderSignature=t}var ue=()=>me("DatePicker",we,Me);function Ce(e,t={},a={}){return ue(),X(e,"DatePicker",t,r=>({Change:o=>(r({Value:o}),a.Change?.(o)),ValidationChanged:(o,n)=>a.ValidationChanged?.(o,n),OpenChanged:o=>a.OpenChanged?.(o),Error:o=>a.Error?.(o)}),["DisabledDates"],[])}export{Ce as a};
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as d,c as p,d as T,e as v,f as w,g as A,h as _}from"./chunk-EOKNLCNS.js";function H(L,m={},f={}){let e={...m},a=!1,t=T(L,e),c=d("div","blu-text"),n=d("input","blu-text__input"),h=d("span","blu-text__adornment"),x=d("span","blu-text__adornment"),s=d("button","blu-text__action","\xD7"),r=d("button","blu-text__action","Show");s.type=r.type="button",s.setAttribute("aria-label","Clear "+(e.Label||"text")),c.append(h,n,x,s,r),t.body.append(c);let u=v(t.root,E),b=new WeakMap;function g(i,o){if(b.get(i)!==o?.Kind&&i.replaceChildren(),i.removeAttribute("role"),i.removeAttribute("aria-label"),i.removeAttribute("aria-hidden"),i.hidden=!o,!o){b.delete(i);return}if(b.set(i,o.Kind),o.Kind==="Image"){let l=i.querySelector("img")||d("img"),V=_(o.Src);l.src!==V&&(l.src=V),l.alt=o.Alt,l.parentNode||i.append(l)}else if(o.Kind==="Action"){let l=i.querySelector("button")||d("button","blu-text__action");l.type="button",l.textContent=o.Text,l.setAttribute("aria-label",o.Label),l.disabled=!!e.Disabled||!!e.ReadOnly,l.onclick=()=>f.Action?.(o.Key,n.value),l.parentNode||i.append(l)}else i.textContent=o.Text,o.Kind==="Icon"&&(p(i,"role",o.Label?"img":void 0),p(i,"aria-label",o.Label),p(i,"aria-hidden",o.Label?void 0:"true"))}function M(){s.hidden=!e.Clearable||!n.value||!!e.ReadOnly,r.hidden=!e.RevealPassword||e.Type!=="password"}function y(i){u.check(),e={...e,...i},t.paint(e,[n]),w(n,e),n.type=e.Type==="password"&&a?"text":e.Type||"text",n.value!==(e.Value||"")&&(n.value=e.Value||""),n.placeholder=e.Placeholder||"",p(n,"maxlength",e.MaxLength===void 0?void 0:Math.max(0,Math.floor(e.MaxLength))),p(n,"autocomplete",e.Autocomplete),g(h,e.Leading),g(x,e.Trailing),s.disabled=r.disabled=!!e.Disabled,s.setAttribute("aria-label","Clear "+(e.Label||"text")),r.textContent=a?"Hide":"Show",r.setAttribute("aria-label",a?"Hide password":"Show password"),r.setAttribute("aria-pressed",String(a)),M()}function C(){e.Value=n.value,M(),f.Change?.(n.value)}function E(){a=!1,y({Value:m.Value||""})}return n.addEventListener("input",C,{signal:u.signal}),n.addEventListener("blur",()=>f.Blur?.(),{signal:u.signal}),s.addEventListener("click",()=>{n.value="",C(),n.focus()},{signal:u.signal}),r.addEventListener("click",()=>{a=!a,y({}),n.focus()},{signal:u.signal}),y({}),{element:t.root,control:n,update:y,reset:E,getValue:()=>n.value,focus:()=>n.focus(),validate:()=>n.reportValidity(),destroy:u.destroy}}function I(L,m={},f={}){let e={...m},a=T(L,e),t=d("textarea","blu-textarea"),c=d("div","blu-field__count");c.id=a.id+"-count",a.body.append(t,c);let n=v(a.root,s);function h(){c.hidden=!e.ShowCount,c.textContent=t.value.length+(e.MaxLength===void 0?" characters":" / "+e.MaxLength),t.style.maxHeight=e.AutoGrow?A(e.MaxHeight,320,80,2e3)+"px":"",t.style.resize=e.AutoGrow?"none":"vertical",t.style.height="",e.AutoGrow&&(t.style.height=Math.min(t.scrollHeight+2,A(e.MaxHeight,320,80,2e3))+"px")}function x(b){n.check(),e={...e,...b},a.paint(e,[t]),w(t,e),t.rows=Math.floor(A(e.Rows,4,1,30)),t.placeholder=e.Placeholder||"",p(t,"maxlength",e.MaxLength===void 0?void 0:Math.max(0,Math.floor(e.MaxLength))),t.value!==(e.Value||"")&&(t.value=e.Value||""),e.ShowCount&&p(t,"aria-describedby",[t.getAttribute("aria-describedby"),c.id].filter(Boolean).join(" ")),h()}function s(){x({Value:m.Value||""})}t.addEventListener("input",()=>{e.Value=t.value,h(),f.Change?.(t.value)},{signal:n.signal}),t.addEventListener("blur",()=>f.Blur?.(),{signal:n.signal});let r=0,u=typeof ResizeObserver<"u"?new ResizeObserver(b=>{let g=b[0].contentRect.width;g!==r&&(r=g,h())}):void 0;return u?.observe(a.root),x({}),{element:a.root,control:t,update:x,reset:s,getValue:()=>t.value,focus:()=>t.focus(),validate:()=>t.reportValidity(),destroy(){u?.disconnect(),n.destroy()}}}export{H as a,I as b};
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function s(e,t="",i){let r=document.createElement(e);return r.className=t,i!==void 0&&(r.textContent=i),r}var g=0;function h(){return"blu-field-"+ ++g+"-"+Math.random().toString(36).slice(2,8)}function b(e,t,i){i===void 0||i===!1||i===""?e.removeAttribute(t):e.setAttribute(t,String(i))}function p(e,t,i=!1){let r=s(i?"fieldset":"div","blu-field"),o=s(i?"legend":"label","blu-field__label"),a=s("div","blu-field__body"),l=s("div","blu-field__help"),d=s("div","blu-field__error"),u=t.Id||h();l.id=u+"-help",d.id=u+"-error",d.setAttribute("aria-live","polite"),r.append(o,a,l,d),e.append(r);function E(n,f){var c;r.className="blu-field blu-field--"+(n.Size||"Medium").toLowerCase()+(n.ExtendedClass?" "+n.ExtendedClass:""),r.dataset.invalid=String(!!n.Error),r.dataset.disabled=String(!!n.Disabled),o.textContent=(n.Label||"")+(n.Required?" *":""),o.hidden=!n.Label,!i&&f[0]&&((c=f[0]).id||(c.id=u),o.setAttribute("for",f[0].id)),l.textContent=n.Description||"",l.hidden=!n.Description,d.textContent=n.Error||"",d.hidden=!n.Error;let x=[n.Description?l.id:"",n.Error?d.id:""].filter(Boolean).join(" ");for(let m of f)b(m,"aria-describedby",x),b(m,"aria-invalid",n.Error?"true":void 0),b(m,"aria-required",n.Required?"true":void 0)}return{root:r,label:o,body:a,description:l,error:d,id:u,paint:E}}function y(e,t){let i=new AbortController,r=!1;return e.closest("form")?.addEventListener("reset",a=>queueMicrotask(()=>{!r&&!a.defaultPrevented&&t()}),{signal:i.signal}),{signal:i.signal,check(){if(r)throw Error("Component is destroyed.")},destroy(){r||(r=!0,i.abort(),e.remove())}}}function L(e,t){e.name=t.Name||"",e.disabled=!!t.Disabled,e.required=!!t.Required,"readOnly"in e&&(e.readOnly=!!t.ReadOnly),e.setCustomValidity(t.Error||"")}function M(e,t,i,r){return Number.isFinite(e)?Math.max(i,Math.min(r,e)):t}function T(e){let t=new URL(e,document.baseURI);if(!["http:","https:"].includes(t.protocol))throw Error("Adornment images must use an HTTP(S) or relative URL.");return t.href}export{s as a,h as b,b as c,p as d,y as e,L as f,M as g,T as h};
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as l,b as R,c as y,d as w,e as v,f as x}from"./chunk-EOKNLCNS.js";function C(s,r,d,i){let e={...r},c=!1,u=w(s,e),h=l("label","blu-choice"),t=l("input","blu-choice__input"),m=l("span","blu-choice__mark"),a=l("span"),f=l("span","blu-choice__state");t.type=i==="radio"?"radio":"checkbox",i==="switch"&&t.setAttribute("role","switch"),h.classList.add("blu-choice--"+i),m.setAttribute("aria-hidden","true"),f.setAttribute("aria-hidden","true"),h.append(t,m,a,f),u.body.append(h);let n=v(u.root,k);function p(o){n.check(),c&&i==="radio"&&!("Checked"in o)&&(e.Checked=t.checked),e={...e,...o},u.paint(e,[t]),u.label.hidden=!0,u.label.removeAttribute("for"),x(t,e),t.checked=!!e.Checked,t.indeterminate=i==="checkbox"&&!!e.Indeterminate,t.value=e.Value||"on",y(t,"aria-readonly",e.ReadOnly?"true":void 0),a.textContent=(e.Label||"")+(e.Required?" *":""),f.textContent=t.checked?e.OnText||"":e.OffText||"",c=!0}function k(){p({Checked:!!r.Checked,Indeterminate:!!r.Indeterminate})}return t.addEventListener("click",o=>{e.ReadOnly&&o.preventDefault()},{signal:n.signal}),t.addEventListener("keydown",o=>{e.ReadOnly&&["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"," "].includes(o.key)&&o.preventDefault()},{signal:n.signal}),t.addEventListener("change",()=>{e.Checked=t.checked,e.Indeterminate=!1,f.textContent=t.checked?e.OnText||"":e.OffText||"",d.Change?.(t.checked)},{signal:n.signal}),t.addEventListener("blur",()=>d.Blur?.(),{signal:n.signal}),p({}),{element:u.root,control:t,update:p,reset:k,getValue:()=>t.checked,focus:()=>t.focus(),validate:()=>t.reportValidity(),destroy:n.destroy}}function A(s,r={},d={}){return C(s,r,d,"checkbox")}function T(s,r={},d={}){return C(s,r,d,"switch")}function D(s,r,d={}){return C(s,r,d,"radio")}function V(s,r,d={}){let i={...r},e=[],c=w(s,i,!0),u=i.Name||R(),h=v(c.root,m);function t(a){h.check();let f=!e.length||"Options"in a;if(i={...i,...a},new Set(i.Options.map(n=>n.Value)).size!==i.Options.length)throw Error("Radio option values must be unique.");c.body.className="blu-radio-group blu-radio-group--"+(i.Direction||"Vertical").toLowerCase(),f&&(c.body.replaceChildren(),e=i.Options.map((n,p)=>{let k=l("label","blu-choice blu-choice--radio"),o=l("input","blu-choice__input"),E=l("span","blu-choice__mark"),g=l("span");o.type="radio",o.id=c.id+"-"+p,o.value=n.Value,E.setAttribute("aria-hidden","true");let O=l("span","",n.Label);if(O.id=o.id+"-label",g.append(O),o.setAttribute("aria-labelledby",O.id),n.Description){let b=l("small","blu-choice__description",n.Description);b.id=o.id+"-description",g.append(b)}return k.append(o,E,g),c.body.append(k),o.onchange=()=>{o.checked&&(i.Value=o.value,d.Change?.(o.value))},o.onclick=b=>{i.ReadOnly&&b.preventDefault()},o.onkeydown=b=>{i.ReadOnly&&["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"," "].includes(b.key)&&b.preventDefault()},o.onblur=()=>d.Blur?.(),o})),c.paint(i,e),e.forEach((n,p)=>{x(n,i),n.name=i.Name||u,n.disabled=!!i.Disabled||!!i.Options[p].Disabled,n.checked=n.value===i.Value,y(n,"aria-readonly",i.ReadOnly?"true":void 0),i.Options[p].Description&&y(n,"aria-describedby",[n.getAttribute("aria-describedby"),n.id+"-description"].filter(Boolean).join(" "))})}function m(){t({Value:r.Value||""})}return t({}),{element:c.root,update:t,reset:m,getValue:()=>e.find(a=>a.checked)?.value||"",focus:()=>(e.find(a=>a.checked&&!a.disabled)||e.find(a=>!a.disabled))?.focus(),validate:()=>e.filter(a=>!a.disabled).every(a=>a.reportValidity()),destroy:h.destroy}}export{A as a,T as b,D as c,V as d};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as o,b as v,g as P}from"./chunk-EOKNLCNS.js";function M(g){let f=[...g.Rows],y=g.SortKey;y&&g.Columns.some(s=>s.Key===y&&s.Sortable)&&f.sort((s,C)=>{let u=s[y],b=C[y];if(u==null||b==null)return u==null?b==null?0:1:-1;let h=typeof u=="number"&&typeof b=="number"?u-b:String(u).localeCompare(String(b),void 0,{numeric:!0,sensitivity:"base"});return g.SortDirection==="Descending"?-h:h});let e=g.PageSize?Math.floor(P(g.PageSize,10,1,1e4)):Math.max(1,f.length),S=Math.max(1,Math.ceil(f.length/e)),a=Math.floor(P(g.Page,1,1,S));return{rows:f.slice((a-1)*e,a*e),page:a,pages:S,total:f.length,start:f.length?(a-1)*e+1:0,end:Math.min(a*e,f.length)}}function _(g,f,y={}){let e={...f},S=!1,a=o("div","blu-table"),s=o("div","blu-table__scroll"),C=o("table"),u=o("caption"),b=o("thead"),h=o("tbody"),L=o("div","blu-table__footer"),A=o("span"),l=o("button","blu-table-button","Previous"),d=o("button","blu-table-button","Next"),E="";u.id=v(),s.tabIndex=0,s.setAttribute("role","region"),s.setAttribute("aria-labelledby",u.id),l.type=d.type="button",A.setAttribute("role","status"),L.append(A,l,d),C.append(u,b,h),s.append(C),a.append(s,L),g.append(a);function K(x){if(S)throw Error("Component is destroyed.");if(e={...e,...x},!e.Columns.length)throw Error("Table needs at least one column.");if(new Set(e.Columns.map(n=>n.Key)).size!==e.Columns.length)throw Error("Table column keys must be unique.");a.className="blu-table"+(e.ExtendedClass?" "+e.ExtendedClass:""),a.dataset.density=e.Density||"Comfortable",a.dataset.striped=String(!!e.Striped),C.setAttribute("aria-busy",String(!!e.Loading)),u.textContent=e.Caption;let R=document.activeElement instanceof HTMLElement&&a.contains(document.activeElement)?document.activeElement.dataset.focusKey:void 0,T=document.activeElement===d?d:document.activeElement===l?l:void 0,D=JSON.stringify([e.Columns.map(n=>[n.Key,n.Header,!!n.Sortable,n.Align||"Left"]),!!e.Actions?.length]);if(D!==E){E=D,b.replaceChildren();let n=o("tr");b.append(n);for(let t of e.Columns){let i=o("th");if(i.scope="col",i.style.textAlign=(t.Align||"Left").toLowerCase(),t.Sortable){let r=o("button","blu-table__sort",t.Header);r.type="button",r.dataset.focusKey="sort-"+t.Key;let m=o("span");m.setAttribute("aria-hidden","true"),r.append(m),r.onclick=()=>{let p=e.SortKey===t.Key&&e.SortDirection!=="Descending"?"Descending":"Ascending";K({SortKey:t.Key,SortDirection:p,Page:1}),y.SortChanged?.(t.Key,p)},i.append(r)}else i.textContent=t.Header;n.append(i)}if(e.Actions?.length){let t=o("th","","Actions");t.scope="col",n.append(t)}}e.Columns.forEach((n,t)=>{if(!n.Sortable)return;let i=b.rows[0].cells[t];i.setAttribute("aria-sort",e.SortKey===n.Key?(e.SortDirection||"Ascending").toLowerCase():"none"),i.querySelector("span").textContent=e.SortKey===n.Key?e.SortDirection==="Descending"?"\u2193":"\u2191":"\u2195"});let c=M(e);if(e.Page=c.page,h.replaceChildren(),e.Loading||!c.rows.length){let n=o("tr"),t=o("td","blu-table__empty",e.Loading?"Loading records\u2026":e.EmptyMessage||"No records yet.");t.colSpan=e.Columns.length+(e.Actions?.length?1:0),n.append(t),h.append(n)}else for(let[n,t]of c.rows.entries()){let i=o("tr");for(let r of e.Columns){let m=o("td");m.style.textAlign=(r.Align||"Left").toLowerCase(),m.textContent=r.Format?r.Format(t[r.Key],t):String(t[r.Key]??"\u2014"),i.append(m)}if(e.Actions?.length){let r=o("td"),m=o("div","blu-table__actions");for(let p of e.Actions){let w=o("button","blu-table-button",p.Label);w.type="button",w.disabled=typeof p.Disabled=="function"?p.Disabled(t):!!p.Disabled,w.dataset.focusKey="row-"+String(e.RowKey?t[e.RowKey]:n)+"-"+p.Key,e.RowKey&&w.setAttribute("aria-label",p.Label+" "+String(t[e.RowKey])),w.onclick=()=>y.RowAction?.(p.Key,t),m.append(w)}r.append(m),i.append(r)}h.append(i)}A.textContent=e.Loading?"Loading records\u2026":`${c.start}\u2013${c.end} of ${c.total} records`,l.hidden=d.hidden=!e.PageSize,l.disabled=!!e.Loading||c.page<=1,d.disabled=!!e.Loading||c.page>=c.pages,l.onclick=()=>{K({Page:c.page-1}),y.PageChanged?.(e.Page)},d.onclick=()=>{K({Page:c.page+1}),y.PageChanged?.(e.Page)},R&&Array.from(a.querySelectorAll("[data-focus-key]")).find(n=>n.dataset.focusKey===R)?.focus(),!e.Loading&&e.PageSize&&(T===d&&d.disabled?(l.disabled?s:l).focus():T===l&&l.disabled&&(d.disabled?s:d).focus())}try{K({})}catch(x){throw a.remove(),x}return{element:a,update:K,getState:()=>({Page:e.Page||1,SortKey:e.SortKey,SortDirection:e.SortDirection||"Ascending"}),destroy(){S||(S=!0,a.remove())}}}export{_ as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as X}from"./chunk-MEEQNPGM.js";import{c as G,d as Q}from"./chunk-5TEIXA4R.js";var O=G("advanced",()=>({instances:new Map,serial:0})),fe=()=>`blu-advanced-${++O.serial}`;function c(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!==void 0&&(r.textContent=String(n)),r}function u(e,t,n){return n==null?e.removeAttribute(t):e.setAttribute(t,String(n)),e}function x(e,t,n="blu-picker__button"){let r=c("button",n,e);return r.type="button",r.addEventListener("click",t),r}function I(e,t,...n){if(!e.dead)try{Promise.resolve(e.events[t]?.(...n)).catch(r=>K(e,r))}catch(r){K(e,r)}}function K(e,t){if(e.dead)return;let n=t?.message||String(t);e.notice.textContent=n,e.lastError!==n&&(e.lastError=n,I(e,"Error",n))}function Z(e,t){let n=typeof e=="string"?JSON.parse(e||"[]"):e||[];if(!Array.isArray(n))throw Error(t+" must be a list.");return n}function me(e,t,n){let r=o=>{let a=O.instances.get(o);!a||a.kind!==e||(a.dead=!0,a.dispose?.(),a.root.remove(),a.notice.remove(),a.host._bluAdvancedOwner===o&&delete a.host._bluAdvancedOwner,O.instances.delete(o))};return Q(e,()=>({sync(o,a={},m={},h){let l=document.getElementById(o);if(!l)return e+" host was not found.";let g=h||o,p=O.instances.get(g);p&&(p.host!==l||p.kind!==e)&&(p.destroy(p.key),p=null);let i=O.instances.get(l._bluAdvancedOwner);if(i&&i!==p&&i.destroy(i.key),!p){p={key:g,host:l,kind:e,uid:fe(),options:a,events:m,dead:!1,destroy:r},p.root=c("div"),p.notice=u(c("div","blu-advanced-sr"),"role","status"),u(p.notice,"aria-atomic","true"),l.append(p.root,p.notice),O.instances.set(g,p),l._bluAdvancedOwner=g;try{t(p)}catch(f){throw r(g),f}}p.options=a,p.events=m;try{return n(p),l.dataset.bluRuntimeReady="true",""}catch(f){return K(p,f),f.message||String(f)}},destroy:r}))}var v=e=>String(e).padStart(2,"0");function q(e){return String(e.getFullYear()).padStart(4,"0")+"-"+v(e.getMonth()+1)+"-"+v(e.getDate())}function b(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(e));if(!t||+t[1]<1||+t[1]>9999)return null;let n=new Date(2e3,+t[2]-1,+t[3],12);return n.setFullYear(+t[1]),q(n)===e?n:null}function L(e){let t=/^(\d{2}):(\d{2})$/.exec(String(e));return t&&+t[1]<24&&+t[2]<60?t[1]+":"+t[2]:null}function ee(e,t="YYYY-MM-DD"){if(e=String(e).trim(),!e)return"";let n=e;if(t!=="YYYY-MM-DD"){let r=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(e);if(!r)return null;n=r[3]+"-"+v(+(t==="DD/MM/YYYY"?r[2]:r[1]))+"-"+v(+(t==="DD/MM/YYYY"?r[1]:r[2]))}return b(n)?n:null}function te(e,t="YYYY-MM-DD"){if(!e)return"";let n=e.split("-");return t==="MM/DD/YYYY"?n[1]+"/"+n[2]+"/"+n[0]:t==="DD/MM/YYYY"?n[2]+"/"+n[1]+"/"+n[0]:e}function he(e,t=24){if(e=String(e).trim(),!e)return"";let n=/^(\d{1,2}):(\d{2})(?:\s*(AM|PM))?$/i.exec(e);return!n||+n[2]>59||(t===12?!n[3]||+n[1]<1||+n[1]>12:n[3]||+n[1]>23)?null:v(n[3]?+n[1]%12+(n[3].toUpperCase()==="PM"?12:0):+n[1])+":"+n[2]}function T(e,t=24){if(!e)return"";let[n,r]=e.split(":").map(Number);return t===12?(n%12||12)+":"+v(r)+" "+(n<12?"AM":"PM"):v(n)+":"+v(r)}function ne(e,t){let n=b(e);return n.setDate(n.getDate()+t),q(n)}function ie(e,t){let n=b(e),r=n.getDate();return n.setDate(1),n.setMonth(n.getMonth()+t),n.setDate(Math.min(r,new Date(n.getFullYear(),n.getMonth()+1,0).getDate())),q(n)}function ge(e,t){let n=b(e),r=b(t);return Math.round((r.getTime()-n.getTime())/864e5)}function z(e,t,n,r){return b(e)?t&&e<t?"Choose "+t+" or later.":n&&e>n?"Choose "+n+" or earlier.":r?.has(e)?"This date is unavailable.":"":"Enter a real calendar date."}function oe(e,t,n={}){if(!e||!t)return"Choose both a start date and an end date.";let r=z(e,n.Min,n.Max,n.disabled)||z(t,n.Min,n.Max,n.disabled);if(r)return r;if(t<e)return"End date must be on or after start date.";let o=ge(e,t)+1;if(n.MinRangeDays&&o<n.MinRangeDays)return"Choose at least "+n.MinRangeDays+" days.";if(n.MaxRangeDays&&o>n.MaxRangeDays)return"Choose no more than "+n.MaxRangeDays+" days.";if(n.disabled){for(let a of n.disabled)if(a>=e&&a<=t)return"The range includes an unavailable date."}return""}var ye=["YYYY-MM-DD","MM/DD/YYYY","DD/MM/YYYY"],N=()=>q(new Date),S=e=>String(e||"").split("T")[0],F=e=>String(e||"").split("T")[1]||"";function w(e,t){let n=b(t);return n?new Intl.DateTimeFormat(e.locale,{dateStyle:"full"}).format(n):t}function B(e,t,n=e.fields){e.error.textContent=t,e.error.hidden=!t||e.isOpen,e.dialogError&&(e.dialogError.textContent=e.isOpen?t:"");for(let o of e.fields)u(o.input,"aria-invalid",t&&n.includes(o)?"true":null);let r=!t;(e.valid!==r||e.validationMessage!==t)&&(e.valid=r,e.validationMessage=t,I(e,"ValidationChanged",r,t))}function V(e,t){return z(t,S(e.options.Min),S(e.options.Max),e.disabledDates)}function be(e,t,n){if(!L(t))return"Enter a valid time.";let r=e.dateTime?n+"T"+t:t,o=e.options.Min,a=e.options.Max;return o&&r<o?"Choose "+o+" or later.":a&&r>a?"Choose "+a+" or earlier.":""}function de(e,t,n,r){if(e.range)return!t&&!n&&!e.options.IsRequired?"":oe(t,n,{...e.options,disabled:e.disabledDates});if(!t&&!r)return e.options.IsRequired?"A "+(e.timeOnly?"time":"date")+" is required.":"";if(!e.timeOnly){if(!t)return"Choose a date.";let o=V(e,t);if(o)return o}return e.hasTime?r?be(e,r,t):"Choose a time.":""}function le(e){e.timeOnly?e.fields[0].input.value=T(e.value,e.cycle):(e.fields[0].input.value=te(e.range?e.start:S(e.value),e.format),e.range&&(e.fields[1].input.value=te(e.end,e.format)),e.dateTime&&(e.fields[1].input.value=T(F(e.value),e.cycle)));let t=e.range?[e.start,e.end].filter(Boolean).join(" to "):e.value;e.typedDirty=!1,e.clearButton.hidden=e.options.ShowClear===!1||!t}function k(e,t=!0){if(e.isOpen){e.isOpen=!1,e.dialog.hidePopover&&e.dialog.matches(":popover-open")&&e.dialog.hidePopover(),e.dialog.hidden=!0,e.error.hidden=!e.validationMessage;for(let{input:n}of e.fields)u(n,"aria-expanded","false");t&&e.anchor?.isConnected&&!e.anchor.disabled&&e.anchor.focus({preventScroll:!0}),I(e,"OpenChanged",!1)}}function Y(e){if(!e.isOpen||e.dead)return;let t=e.anchor.getBoundingClientRect(),n=window.visualViewport,r=n?.offsetLeft||0,o=n?.offsetTop||0,a=n?.width||document.documentElement.clientWidth,m=n?.height||window.innerHeight,h=6,l=8;if(t.bottom<=o||t.top>=o+m||t.right<=r||t.left>=r+a){k(e,!1);return}let g=e.dialog,p=Math.min(e.timeOnly?300:344,a-l*2);g.dataset.compact=String(m<420),g.style.width=p+"px",g.style.maxHeight="none";let i=Math.max(0,o+m-l-t.bottom-h),f=Math.max(0,t.top-h-o-l),d=g.scrollHeight+2,D=d>i&&f>i,E=Math.max(0,m-l*2);g.style.maxHeight=E+"px";let y=e.fieldRow.getBoundingClientRect();g.style.left=Math.max(r+l,Math.min(y.left+(y.width-p)/2,r+a-l-p))+"px";let M=D?t.top-h-d:t.bottom+h;g.style.top=Math.max(o+l,Math.min(M,o+m-l-Math.min(d,E)))+"px",g.dataset.placement=D?"top":"bottom"}function ae(e){(e.timeOnly||e.dateTime&&e.anchor===e.fields[1].input?e.hours:e.calendar.querySelector('[data-date="'+e.focusDate+'"]')||e.monthSelect).focus({preventScroll:!0})}function H(e,t,n,r,o=!1){let a=de(e,t,n,r);if(B(e,a),a)return e.dialogError.textContent=a,!1;let m=document.activeElement===e.clearButton&&!t&&!n&&!r,h=e.timeOnly?r:e.dateTime?t?t+"T"+r:"":t,l=e.range?e.start!==t||e.end!==n:e.value!==h;return e.range?(e.start=t,e.end=n,e.options.StartDate=t,e.options.EndDate=n):(e.value=h,e.options.Value=h),e.inputSignature=JSON.stringify(e.range?[e.start,e.end]:[e.value]),le(e),o||k(e),m&&e.fields[0].input.focus({preventScroll:!0}),e.notice.textContent=e.range?t?w(e,t)+" to "+w(e,n):"Date range cleared":h?"Selected "+(e.timeOnly?T(h,e.cycle):w(e,t)+(e.hasTime?" at "+T(r,e.cycle):"")):"Selection cleared",l&&(e.range?I(e,"Change",t,n):I(e,"Change",h)),!0}function re(e,t=!1){if(e.options.IsDisabled||e.options.IsReadOnly)return;let n=e.timeOnly?"":ee(e.fields[0].input.value,e.format),r=e.range?ee(e.fields[1].input.value,e.format):"",o=e.hasTime?he(e.fields[e.timeOnly?0:1].input.value,e.cycle):"";if(n===null||r===null){B(e,"Enter a real date using "+e.format+".");return}if(o===null){B(e,e.cycle===12?"Enter a time such as 9:15 AM.":"Enter a time such as 14:30.");return}H(e,n,r,o,t)&&t&&(e.draftStart=n,e.draftEnd=r,e.draftTime=o,n&&(e.focusDate=n,e.month=n.slice(0,7)),_(e),J(e),s(e),Y(e))}function De(e){let t=e.range||e.dateTime?2:1;e.fields=[];for(let n=0;n<t;n++){let r=c("div","blu-picker__field"),o=c("label"),a=c("input","blu-picker__input");a.type="text",a.id=e.uid+"-input-"+n,o.htmlFor=a.id,a.autocomplete="off",a.spellcheck=!1,u(a,"role","combobox"),u(a,"aria-haspopup","dialog"),u(a,"aria-expanded","false"),u(a,"aria-autocomplete","none"),u(a,"aria-controls",e.uid+"-dialog"),u(a,"aria-describedby",e.uid+"-hint "+e.uid+"-error "+e.uid+"-keyboard"),a.addEventListener("input",()=>{e.typedDirty=!0}),a.addEventListener("change",()=>re(e,e.isOpen)),a.addEventListener("pointerdown",l=>{l.pointerType==="mouse"&&(e.touchOpen=!1,a.inputMode="text"),(l.pointerType==="touch"||l.pointerType==="pen")&&e.manualInput!==a&&!e.options.IsDisabled&&!e.options.IsReadOnly&&(l.preventDefault(),e.touchOpen=!0,a.inputMode="none",P(e,a,!0))}),a.addEventListener("click",l=>{e.manualInput!==a&&(e.touchOpen?(l.preventDefault(),P(e,a,!0)):P(e,a,!1))}),a.addEventListener("blur",()=>{e.manualInput===a&&(e.manualInput=null)}),a.addEventListener("keydown",l=>{l.ctrlKey||l.metaKey||l.shiftKey||(l.key==="ArrowDown"&&(l.preventDefault(),P(e,a,!0)),l.key==="Enter"&&(l.preventDefault(),!e.isOpen&&!e.typedDirty?P(e,a,!0):re(e)),l.key==="Tab"&&k(e,!1))});let m=c("div","blu-picker__field-control"),h=u(c("span","blu-picker__field-icon"),"aria-hidden","true");h.innerHTML=e.timeOnly||e.dateTime&&n?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><circle cx="12" cy="12" r="8.5"/><path d="M12 7v5l3 2"/></svg>':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><rect x="4" y="5" width="16" height="16" rx="3"/><path d="M8 3v4m8-4v4M4 10h16m-11 4h2m3 0h2m-7 3h2"/></svg>',m.append(a,h),r.append(o,m),e.fields.push({field:r,label:o,input:a}),e.fieldRow.append(r)}}function C(e,t,n){let r=c("option","",n);return r.value=String(t),e.append(r),r}function A(e,t,n){let r=c("label","blu-picker__select-field"),o=c("span","blu-picker__select-caption",t),a=c("select","blu-picker__input");return a.id=e.uid+"-"+n,r.append(o,a),{wrap:r,select:a}}function ve(e){if(e.button!==0)return;let t=e.target.closest?.("button");!t||t.disabled||(e.preventDefault(),t.focus({preventScroll:!0}))}function R(e,t){let n=S(e.options.Min)||"0001-01-01",r=S(e.options.Max)||"9999-12-31";t=t<n?n:t>r?r:t,b(t)&&(e.focusDate=t,e.month=t.slice(0,7),_(e),e.calendar.querySelector('[data-date="'+t+'"]')?.focus({preventScroll:!0}))}function Se(e,t,n){if(t.altKey||t.ctrlKey||t.metaKey)return;let r,o={ArrowLeft:-1,ArrowRight:1,ArrowUp:-7,ArrowDown:7};if(t.key in o)r=ne(n,o[t.key]);else if(t.key==="Home"||t.key==="End"){let a=(b(n).getDay()-e.firstDay+7)%7;r=ne(n,t.key==="Home"?-a:6-a)}else(t.key==="PageUp"||t.key==="PageDown")&&(r=ie(n,(t.key==="PageUp"?-1:1)*(t.shiftKey?12:1)));r&&(t.preventDefault(),R(e,r))}function ce(e,t){if(!V(e,t)){if(e.dialogError.textContent="",e.focusDate=t,e.range?e.rangeNext==="start"?(e.draftStart=t,e.draftEnd="",e.rangeNext="end"):(t<e.draftStart?(e.draftEnd=e.draftStart,e.draftStart=t):e.draftEnd=t,e.rangeNext="start"):e.draftStart=t,!e.hasTime&&!e.range){H(e,t,"","");return}_(e),e.calendar.querySelector('[data-date="'+t+'"]')?.focus({preventScroll:!0}),s(e)}}function s(e){let t=e.range?e.draftStart?w(e,e.draftStart)+(e.draftEnd?" to "+w(e,e.draftEnd):" \u2014 choose an end date"):"Choose a start date":e.hasTime?(e.draftStart?w(e,e.draftStart)+" \xB7 ":"")+T(e.draftTime,e.cycle):"",n=r=>b(r)?new Intl.DateTimeFormat(e.locale,{month:"short",day:"numeric"}).format(b(r)):"";e.selectionSpeech.textContent=t,e.selectionVisual.textContent=e.range?e.draftStart?n(e.draftStart)+(e.draftEnd?" \u2013 "+n(e.draftEnd):" \u2014 choose end"):"Choose start date":e.dateTime?n(e.draftStart)+" \xB7 "+T(e.draftTime,e.cycle):e.timeOnly?T(e.draftTime,e.cycle):"",e.selection.hidden=!t}function _(e){let t=b(e.month+"-01");if(!t)return;let n=t.getFullYear(),r=t.getMonth(),o=Number(S(e.options.Min).slice(0,4))||1,a=Number(S(e.options.Max).slice(0,4))||9999;e.monthSelect.value=String(r),e.yearInput.value=String(n),u(e.yearInput,"aria-invalid",null),e.yearInput.min=String(o),e.yearInput.max=String(a);let m=new Intl.DateTimeFormat(e.locale,{month:"long",year:"numeric"}).format(t);e.caption.textContent!==m&&(e.caption.textContent=m);let h=(t.getDay()-e.firstDay+7)%7,l=new Date(n,r+1,0).getDate();if(e.focusDate.startsWith(e.month)||(e.focusDate=e.month+"-01"),!e.dayCells){let i=c("tbody");e.dayCells=[];for(let f=0;f<6;f++){let d=c("tr");for(let D=0;D<7;D++){let E=c("td"),y=x("",()=>ce(e,y.dataset.date),"blu-picker__day");y.addEventListener("keydown",M=>Se(e,M,y.dataset.date)),y.addEventListener("focus",()=>{e.focusDate=y.dataset.date;for(let M of e.dayCells)M.button.tabIndex=M.button===y?0:-1}),E.append(y),d.append(E),e.dayCells.push({cell:E,button:y})}i.append(d)}e.calendar.append(i)}for(let i=0;i<e.dayCells.length;i++){let{cell:f,button:d}=e.dayCells[i],D=i-h+1,E=D>0&&D<=l;if(d.hidden=!E,!E){d.tabIndex=-1,delete d.dataset.date,u(f,"aria-selected",null);continue}let y=e.month+"-"+v(D),M=y===e.draftStart||e.range&&y===e.draftEnd,U=e.range&&e.draftStart&&e.draftEnd&&y>e.draftStart&&y<e.draftEnd,W=V(e,y),$=!!(M||U),pe=e.range&&M?y===e.draftStart?e.draftEnd?", range starts here; "+w(e,e.draftStart)+" to "+w(e,e.draftEnd):", start date; choose an end date":", range ends here; "+w(e,e.draftStart)+" to "+w(e,e.draftEnd):"",j=w(e,y)+($?", selected":"")+pe+(W?", unavailable":"");d.dataset.date=y,d.tabIndex=y===e.focusDate?0:-1,d.textContent!==String(D)&&(d.textContent=String(D)),d.getAttribute("aria-label")!==j&&u(d,"aria-label",j),u(f,"aria-selected",String($)),u(d,"aria-disabled",W?"true":null),u(d,"aria-current",y===N()?"date":null),d.dataset.selected=String(M),d.dataset.between=String(!!U)}for(let i=0;i<6;i++)e.dayCells[i*7].cell.parentElement.hidden=i*7-h+1>l;let g=S(e.options.Min),p=S(e.options.Max);e.prev.disabled=!!g&&e.month<=g.slice(0,7)||n===1&&r===0,e.next.disabled=!!p&&e.month>=p.slice(0,7)||n===9999&&r===11,e.todayButton.hidden=e.timeOnly||e.options.ShowToday===!1,e.todayButton.disabled=!!V(e,N())}function J(e){if(!e.hasTime)return;let[t,n]=(e.draftTime||"09:00").split(":").map(Number);e.hours.replaceChildren(),e.minutes.replaceChildren();for(let r=0;r<(e.cycle===12?12:24);r++)C(e.hours,e.cycle===12?r+1:r,v(e.cycle===12?r+1:r));for(let r=0;r<60;r+=e.step)C(e.minutes,r,v(r));n%e.step&&C(e.minutes,n,v(n)+" (entered)"),e.hours.value=String(e.cycle===12?t%12||12:t),e.minutes.value=String(n),e.period.value=t<12?"AM":"PM",e.periodField.hidden=e.cycle!==12,s(e)}function P(e,t=e.fields[0].input,n=!0){if(e.options.IsDisabled||e.options.IsReadOnly)return;if(e.anchor=t,e.manualInput=null,e.typeButton.hidden=!e.touchOpen,e.isOpen){e.range&&(e.rangeNext=t===e.fields[1].input&&e.draftStart?"end":"start"),Y(e),n&&ae(e);return}e.draftStart=e.timeOnly?"":e.range?e.start:S(e.value),e.draftEnd=e.end||"",e.draftTime=e.timeOnly?e.value:F(e.value),e.hasTime&&!L(e.draftTime)&&(e.draftTime="09:00"),e.rangeNext="start",e.range&&t===e.fields[1].input&&e.draftStart&&(e.rangeNext="end");let r=e.range&&e.rangeNext==="end"?e.draftEnd:e.draftStart;e.focusDate=b(r)?r:b(e.draftStart)?e.draftStart:N();let o=S(e.options.Min),a=S(e.options.Max);e.timeOnly||(o&&e.focusDate<o&&(e.focusDate=o),a&&e.focusDate>a&&(e.focusDate=a)),e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",_(e),J(e),s(e),e.isOpen=!0,e.dialog.hidden=!1,e.dialog.showPopover&&e.dialog.showPopover(),e.dialog.scrollTop=0;for(let{input:m}of e.fields)u(m,"aria-expanded","true");Y(e),n&&e.isOpen&&ae(e),I(e,"OpenChanged",!0)}function we(e){e.range=e.kind==="DateRangePicker",e.timeOnly=e.kind==="TimePicker",e.dateTime=e.kind==="DateTimePicker",e.hasTime=e.timeOnly||e.dateTime,e.root.className="blu-picker",e.fieldRow=c("div","blu-picker__fields"),e.error=u(c("div","blu-picker__error"),"role","alert"),e.error.id=e.uid+"-error",e.error.hidden=!0,e.hint=c("div","blu-picker__hint"),e.hint.id=e.uid+"-hint",e.actions=c("div","blu-picker__actions"),e.clearButton=x("Clear",()=>H(e,"","","")),e.actions.append(e.clearButton),e.root.append(e.fieldRow,e.hint,e.actions,e.error),De(e);let t=c("span","blu-advanced-sr","Click the field or press Down Arrow to browse. Escape closes the popup.");t.id=e.uid+"-keyboard",e.root.append(t),e.dialog=c("div","blu-picker__dialog blu-picker__popup"),e.dialog.id=e.uid+"-dialog",e.dialog.hidden=!0,u(e.dialog,"role","dialog"),u(e.dialog,"aria-labelledby",e.uid+"-title"),u(e.dialog,"aria-modal","false"),e.dialog.showPopover&&u(e.dialog,"popover","manual"),e.root.append(e.dialog),e.dialog.addEventListener("mousedown",ve),e.title=c("h2","blu-advanced-sr"),e.title.id=e.uid+"-title",e.dialog.append(e.title),e.presets=c("div","blu-picker__presets"),e.dialog.append(e.presets),e.calendarArea=c("div","blu-picker__calendar-area"),e.calendarArea.hidden=e.timeOnly,e.dialog.append(e.calendarArea);let n=c("div","blu-picker__calendar-nav"),r=A(e,"Month","month");e.monthSelect=r.select;let o=c("label","blu-picker__select-field");o.append(c("span","blu-picker__select-caption","Year")),e.yearInput=c("input","blu-picker__input"),e.yearInput.type="number",e.yearInput.step="1",o.append(e.yearInput);let a=d=>{let D=ie(e.focusDate,d);R(e,D)};e.prev=x("\u2039",()=>a(-1)),u(e.prev,"aria-label","Previous month"),e.next=x("\u203A",()=>a(1)),u(e.next,"aria-label","Next month"),n.append(e.prev,r.wrap,o,e.next),e.calendarArea.append(n),e.monthSelect.addEventListener("change",()=>R(e,String(e.yearInput.value).padStart(4,"0")+"-"+v(+e.monthSelect.value+1)+"-01")),e.yearInput.addEventListener("change",()=>{let d=Number(e.yearInput.value);if(!Number.isInteger(d)||d<+e.yearInput.min||d>+e.yearInput.max){e.dialogError.textContent="Enter a year from "+e.yearInput.min+" to "+e.yearInput.max+".",u(e.yearInput,"aria-invalid","true");return}u(e.yearInput,"aria-invalid",null),e.dialogError.textContent="",R(e,String(d).padStart(4,"0")+"-"+v(+e.monthSelect.value+1)+"-01")}),e.caption=u(c("h3","blu-picker__caption blu-advanced-sr"),"aria-live","polite"),e.caption.id=e.uid+"-caption",e.calendarArea.append(e.caption),e.calendar=u(c("table","blu-picker__calendar"),"role","grid"),u(e.calendar,"aria-labelledby",e.caption.id),e.range&&u(e.calendar,"aria-multiselectable","true"),e.calendarArea.append(e.calendar),e.todayButton=x("Today",()=>{e.focusDate=N(),e.month=e.focusDate.slice(0,7),ce(e,e.focusDate)}),e.calendarArea.append(c("p","blu-advanced-sr","Arrow keys move by day or week. Home/End move within the week. Page Up/Down change month; hold Shift to change year.")),e.timeArea=c("div","blu-picker__time-area"),e.timeArea.hidden=!e.hasTime,e.dialog.append(e.timeArea);let m=A(e,"Hour","hour"),h=A(e,"Minute","minute"),l=A(e,"AM / PM","period");e.hours=m.select,e.minutes=h.select,e.period=l.select,e.periodField=l.wrap,C(e.period,"AM","AM"),C(e.period,"PM","PM"),e.timeArea.append(m.wrap,h.wrap,l.wrap);for(let d of[e.hours,e.minutes,e.period])d.addEventListener("change",()=>{let D=+e.hours.value;e.cycle===12&&(D=D%12+(e.period.value==="PM"?12:0)),e.draftTime=v(D)+":"+v(+e.minutes.value),e.dialogError.textContent="",s(e)});e.selection=u(c("div","blu-picker__selection"),"role","status"),u(e.selection,"aria-atomic","true"),e.selectionSpeech=c("span","blu-advanced-sr"),e.selectionVisual=u(c("span"),"aria-hidden","true"),e.selection.append(e.selectionSpeech,e.selectionVisual),e.dialogError=u(c("div","blu-picker__error"),"role","alert"),e.dialogError.id=e.uid+"-dialog-error",u(e.yearInput,"aria-describedby",e.dialogError.id),e.apply=x("Apply",()=>H(e,e.draftStart,e.draftEnd,e.draftTime),"blu-picker__button blu-picker__button--primary"),e.apply.hidden=!e.range&&!e.hasTime,e.typeButton=x("Type",()=>{let d=e.anchor;k(e,!1),e.manualInput=d,d.inputMode="text",d.focus({preventScroll:!0})}),u(e.typeButton,"aria-label","Type a date or time"),e.typeButton.hidden=!0;let g=c("div","blu-picker__popup-actions");g.append(e.typeButton,e.todayButton,x("Cancel",()=>k(e)),e.apply),e.dialog.append(e.selection,e.dialogError,g);let p=d=>{e.isOpen&&!e.root.contains(d.target)&&k(e,!1)},i=d=>{e.isOpen&&d.key==="Escape"&&!d.defaultPrevented&&(d.preventDefault(),d.stopPropagation(),k(e))},f=d=>{!e.isOpen||e.dialog.contains(d?.target)||(cancelAnimationFrame(e.positionFrame),e.positionFrame=requestAnimationFrame(()=>Y(e)))};document.addEventListener("pointerdown",p,!0),document.addEventListener("focusin",p),e.root.addEventListener("keydown",i),window.addEventListener("resize",f),document.addEventListener("scroll",f,!0),window.visualViewport?.addEventListener("resize",f),window.visualViewport?.addEventListener("scroll",f),window.ResizeObserver&&(e.popupObserver=new ResizeObserver(()=>f()),e.popupObserver.observe(e.fieldRow),e.popupObserver.observe(e.dialog)),e.dispose=()=>{k(e,!1),cancelAnimationFrame(e.positionFrame),e.popupObserver?.disconnect(),document.removeEventListener("pointerdown",p,!0),document.removeEventListener("focusin",p),e.root.removeEventListener("keydown",i),window.removeEventListener("resize",f),document.removeEventListener("scroll",f,!0),window.visualViewport?.removeEventListener("resize",f),window.visualViewport?.removeEventListener("scroll",f)}}function Me(e){let t=JSON.stringify(e.options);if(e.renderSignature===t)return;let n=e.isOpen?document.activeElement:null,r=n?.dataset?.date,o=n?.id,a=e.options;if(e.label=String(a.Label||{DatePicker:"Date",TimePicker:"Time",DateTimePicker:"Date and time",DateRangePicker:"Date range"}[e.kind]),e.locale=String(a.Locale||"en-US"),new Intl.DateTimeFormat(e.locale),e.format=ye.includes(a.DateFormat)?a.DateFormat:"YYYY-MM-DD",e.cycle=Number(a.HourCycle)===12?12:24,e.step=Number(a.MinuteStep??15),!Number.isInteger(e.step)||e.step<1||e.step>60)throw Error("MinuteStep must be a whole number from 1 to 60.");if(e.firstDay=Number(a.FirstDayOfWeek??1),!Number.isInteger(e.firstDay)||e.firstDay<0||e.firstDay>6)throw Error("FirstDayOfWeek must be 0\u20136.");e.disabledDates=new Set(Z(a.DisabledDatesJson??a.DisabledDates,"DisabledDates").map(i=>typeof i=="string"?i:i.Date));for(let i of e.disabledDates)if(!b(i))throw Error("DisabledDates must contain ISO calendar dates.");for(let i of["Min","Max"])if(a[i]&&!(e.timeOnly?L(a[i]):b(S(a[i]))&&(!e.dateTime||L(F(a[i])))))throw Error(i+" must use the documented ISO value format.");if(a.Min&&a.Max&&a.Min>a.Max)throw Error("Min must be on or before Max.");for(let i of["MinRangeDays","MaxRangeDays"])if(a[i]!==void 0&&(!Number.isInteger(Number(a[i]))||Number(a[i])<0))throw Error(i+" must be a non-negative whole number.");if(a.MinRangeDays&&a.MaxRangeDays&&Number(a.MinRangeDays)>Number(a.MaxRangeDays))throw Error("MinRangeDays must not exceed MaxRangeDays.");let m=e.range?[String(a.StartDate||""),String(a.EndDate||"")]:[String(a.Value||"")],h=JSON.stringify(m),l=h!==e.inputSignature;if(e.inputSignature=h,e.range?(e.start=m[0],e.end=m[1]):e.value=m[0],e.fields.forEach((i,f)=>{i.label.textContent=e.range?e.label+(f?" \u2014 end":" \u2014 start"):e.dateTime?e.label+(f?" \u2014 time":" \u2014 date"):e.label,i.input.disabled=!!a.IsDisabled,i.input.readOnly=!!a.IsReadOnly,i.input.required=!!a.IsRequired,i.input.placeholder=String(a.Placeholder||(e.timeOnly||e.dateTime&&f?e.cycle===12?"9:00 AM":"09:00":e.format))}),e.hint.textContent=e.timeOnly?(e.cycle===12?"h:mm AM/PM":"HH:mm")+" \xB7 local time":e.format+(e.dateTime?" \xB7 "+(e.cycle===12?"h:mm AM/PM":"HH:mm")+" local time":""),e.title.textContent=e.label,e.clearButton.disabled=!!a.IsDisabled||!!a.IsReadOnly,l||e.previousFormat!==e.format||e.previousCycle!==e.cycle){le(e);let i=m.some(Boolean);B(e,i?de(e,e.timeOnly?"":e.range?e.start:S(e.value),e.end||"",e.timeOnly?e.value:F(e.value)):""),e.previousFormat=e.format,e.previousCycle=e.cycle}e.monthSelect.replaceChildren();for(let i=0;i<12;i++)C(e.monthSelect,i,new Intl.DateTimeFormat(e.locale,{month:"long"}).format(new Date(2024,i,1)));e.calendar.tHead?.remove();let g=c("thead"),p=c("tr");for(let i=0;i<7;i++){let f=new Date(2024,0,7+(i+e.firstDay)%7),d=c("th","",new Intl.DateTimeFormat(e.locale,{weekday:"short"}).format(f));d.scope="col",d.abbr=new Intl.DateTimeFormat(e.locale,{weekday:"long"}).format(f),p.append(d)}if(g.append(p),e.calendar.prepend(g),e.presets.replaceChildren(),e.presets.hidden=!e.range,e.range)for(let i of Z(a.PresetsJson??a.Presets,"Presets")){if(!i.Label||!b(i.StartDate)||!b(i.EndDate))throw Error("Presets need Label, StartDate and EndDate.");let f=x(i.Label,()=>{e.draftStart=i.StartDate,e.draftEnd=i.EndDate,e.rangeNext="start",e.focusDate=e.draftStart,e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",_(e),s(e)});f.disabled=!!oe(i.StartDate,i.EndDate,{...a,disabled:e.disabledDates}),e.presets.append(f)}e.isOpen&&(a.IsDisabled||a.IsReadOnly||l?k(e):(_(e),J(e),r?e.calendar.querySelector('[data-date="'+r+'"]')?.focus({preventScroll:!0}):o&&document.getElementById(o)?.focus({preventScroll:!0}),Y(e))),e.renderSignature=t}var ue=()=>me("TimePicker",we,Me);function Oe(e,t={},n={}){return ue(),X(e,"TimePicker",t,r=>({Change:o=>(r({Value:o}),n.Change?.(o)),ValidationChanged:(o,a)=>n.ValidationChanged?.(o,a),OpenChanged:o=>n.OpenChanged?.(o),Error:o=>n.Error?.(o)}),[],[])}export{Oe as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as u,c as v,d as H,e as R,f as T}from"./chunk-EOKNLCNS.js";function $(F,k,A={}){let t={...k},d=!1,b=-1,D="",C=0,r=H(F,t),w=u("div","blu-select"),o=u("select","blu-select__native"),l=u("button","blu-select__trigger"),g=u("button","blu-text__action","\xD7"),p=u("div","blu-select__popup"),s=u("input","blu-select__search"),h=u("div","blu-select__list"),M=u("p","blu-field__help","No matching options");o.tabIndex=-1,o.setAttribute("aria-hidden","true"),o.dataset.enhanced="true",l.type=g.type="button",l.id=r.id,l.setAttribute("role","combobox"),l.setAttribute("aria-haspopup","listbox"),h.id=r.id+"-list",h.setAttribute("role","listbox"),l.setAttribute("aria-controls",h.id),s.type="search",s.placeholder="Search options",s.setAttribute("role","combobox"),s.setAttribute("aria-autocomplete","list"),s.setAttribute("aria-controls",h.id),p.hidden=!0,p.append(s,h,M),w.append(o,l,g,p),r.body.append(w);let x=typeof p.showPopover=="function";x&&p.setAttribute("popover","manual");let c=R(r.root,P),m=[];function L(){if(!d||!x)return;let e=l.getBoundingClientRect(),i=window.innerHeight-e.bottom-12,a=e.top-12,n=i<220&&a>i,y=Math.min(320,Math.max(100,n?a:i));p.style.cssText=`position:fixed;inset:auto;margin:0;left:${Math.max(8,Math.min(e.left,window.innerWidth-e.width-8))}px;width:${Math.min(e.width,window.innerWidth-16)}px;max-height:${y}px;${n?"bottom:"+(window.innerHeight-e.top+6):"top:"+(e.bottom+6)}px;`}function O(e){b=e,h.querySelectorAll("[role=option]").forEach(a=>{let n=Number(a.dataset.index)===b;a.dataset.active=String(n),n&&a.scrollIntoView({block:"nearest"})});let i=b<0?void 0:r.id+"-option-"+b;v(l,"aria-activedescendant",d?i:void 0),v(s,"aria-activedescendant",d?i:void 0)}function E(){m=t.Options.map((i,a)=>a).filter(i=>t.Options[i].Label.toLocaleLowerCase().includes(s.value.toLocaleLowerCase())),h.replaceChildren();for(let i of m){let a=t.Options[i],n=u("div","blu-select__option",a.Label);n.id=r.id+"-option-"+i,n.setAttribute("role","option"),n.dataset.index=String(i),n.setAttribute("aria-selected",String(a.Value===o.value)),n.setAttribute("aria-disabled",String(!!a.Disabled)),a.Description&&n.append(u("small","blu-choice__description",a.Description)),n.onpointerdown=y=>y.preventDefault(),n.onclick=()=>{a.Disabled||S(i)},h.append(n)}M.hidden=!!m.length;let e=m.filter(i=>!t.Options[i].Disabled);O(e.includes(b)?b:e.find(i=>t.Options[i].Value===o.value)??e[0]??-1)}function f(e,i=!0){e&&(t.Disabled||t.ReadOnly)||(d=e,l.setAttribute("aria-expanded",String(d)),s.setAttribute("aria-expanded",String(d)),d?(p.hidden=!1,x&&!p.matches(":popover-open")&&p.showPopover(),s.value="",b=-1,E(),L(),t.Searchable&&s.focus()):(x&&p.matches(":popover-open")&&p.hidePopover(),p.hidden=!0,O(-1),i&&l.focus()))}function S(e){t.Value=e<0?"":t.Options[e].Value,o.value=t.Value,V(),f(!1),A.Change?.(t.Value)}function V(){l.textContent=t.Options.find(e=>e.Value===o.value)?.Label||t.Placeholder||"Choose an option",l.dataset.placeholder=String(!o.value),g.hidden=!t.Clearable||!o.value||!!t.ReadOnly,o.validity.valid&&!t.Error&&(r.error.hidden=!0,r.error.textContent="",r.paint(t,[l]))}function _(e){if(c.check(),t={...t,...e},t.Options.some(a=>!a.Value)||new Set(t.Options.map(a=>a.Value)).size!==t.Options.length)throw Error("Select option values must be non-empty and unique.");T(o,t),r.paint(t,[l]),o.id=r.id+"-native";let i=u("option","",t.Placeholder||"Choose an option");i.value="",o.replaceChildren(i,...t.Options.map(a=>{let n=u("option","",a.Label);return n.value=a.Value,n.disabled=!!a.Disabled,n})),o.value=t.Options.some(a=>a.Value===t.Value)?t.Value:"",t.Value=o.value,l.disabled=g.disabled=!!t.Disabled,v(l,"aria-readonly",t.ReadOnly?"true":void 0),g.setAttribute("aria-label","Clear "+(t.Label||"selection")),s.setAttribute("aria-label","Search "+(t.Label||"options")),h.setAttribute("aria-label",t.Label||"Options"),s.hidden=!t.Searchable,t.Disabled||t.ReadOnly?f(!1,!1):d&&(E(),L()),l.setAttribute("aria-expanded",String(d)),V()}function N(e){if(t.Disabled||t.ReadOnly)return;let i=m.filter(n=>!t.Options[n].Disabled),a=i.indexOf(b);if(e.key==="Escape"&&d)e.preventDefault(),f(!1);else if(e.key==="Tab")f(!1,!1);else if(["ArrowDown","ArrowUp","Home","End"].includes(e.key)){if(!d){e.preventDefault(),f(!0);return}e.preventDefault();let n=e.key==="Home"?0:e.key==="End"?i.length-1:Math.max(0,Math.min(i.length-1,a+(e.key==="ArrowDown"?1:-1)));O(i[n]??-1)}else if(e.key==="Enter"||e.key===" "&&e.target!==s)e.preventDefault(),d?b>=0&&S(b):f(!0);else if(e.key.length===1&&!e.ctrlKey&&!e.metaKey&&e.target!==s){e.preventDefault(),d||f(!0),D=Date.now()-C>650?e.key:D+e.key,C=Date.now();let n=m.find(y=>!t.Options[y].Disabled&&t.Options[y].Label.toLocaleLowerCase().startsWith(D.toLocaleLowerCase()));n!==void 0&&O(n)}}function P(){_({Value:k.Value||""}),f(!1,!1)}return l.addEventListener("click",()=>f(!d),{signal:c.signal}),g.addEventListener("click",()=>S(-1),{signal:c.signal}),w.addEventListener("keydown",N,{signal:c.signal}),s.addEventListener("input",E,{signal:c.signal}),document.addEventListener("pointerdown",e=>{d&&!r.root.contains(e.target)&&f(!1,!1)},{signal:c.signal}),w.addEventListener("focusout",e=>{w.contains(e.relatedTarget)||(f(!1,!1),A.Blur?.())},{signal:c.signal}),window.addEventListener("resize",L,{signal:c.signal}),window.addEventListener("scroll",L,{signal:c.signal,capture:!0}),o.addEventListener("invalid",e=>{e.preventDefault(),v(l,"aria-invalid","true"),r.error.textContent=o.validationMessage,r.error.hidden=!1,v(l,"aria-describedby",r.error.id),l.focus()},{signal:c.signal}),o.addEventListener("change",()=>{t.Value=o.value,V(),A.Change?.(o.value)},{signal:c.signal}),_({}),{element:r.root,control:o,update:_,reset:P,getValue:()=>o.value,focus:()=>l.focus(),validate:()=>o.reportValidity(),destroy(){f(!1,!1),c.destroy()}}}export{$ as a};
|