@fusion.dev/helix-headless 0.144.0 → 0.146.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/custom-elements.json +15195 -4240
- package/dist/accordion/item/accordion-item.d.ts +62 -12
- package/dist/accordion/item/accordion-item.js +41 -10
- package/dist/accordion/root/accordion-root.d.ts +14 -5
- package/dist/accordion/root/accordion-root.js +7 -1
- package/dist/announcement/root/announcement-root.d.ts +24 -3
- package/dist/announcement/root/announcement-root.js +39 -2
- package/dist/app-header/root/app-header-root.d.ts +12 -0
- package/dist/app-header/root/app-header-root.js +13 -1
- package/dist/app-header/sectioning.d.ts +9 -0
- package/dist/app-header/sectioning.js +27 -0
- package/dist/avatar/group/avatar-group.d.ts +20 -14
- package/dist/avatar/group/avatar-group.js +17 -19
- package/dist/badge/root/badge-root.d.ts +3 -1
- package/dist/badge/root/badge-root.js +2 -2
- package/dist/bar-chart/root/bar-chart-root.d.ts +18 -1
- package/dist/bar-chart/root/bar-chart-root.js +52 -15
- package/dist/bar-chart/stack.d.ts +15 -0
- package/dist/bar-chart/stack.js +19 -0
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +57 -1
- package/dist/breadcrumbs/root/breadcrumbs-root.js +73 -3
- package/dist/button/root/button-root.d.ts +26 -0
- package/dist/button/root/button-root.js +38 -18
- package/dist/button-group/root/button-group-root.d.ts +2 -1
- package/dist/button-group/root/button-group-root.js +5 -1
- package/dist/canvas/node/canvas-node.d.ts +4 -3
- package/dist/canvas/node/canvas-node.js +3 -2
- package/dist/canvas/root/canvas-root.d.ts +38 -3
- package/dist/canvas/root/canvas-root.js +123 -42
- package/dist/card/root/card-root.d.ts +24 -3
- package/dist/card/root/card-root.js +20 -8
- package/dist/carousel/root/carousel-root.d.ts +133 -4
- package/dist/carousel/root/carousel-root.js +174 -24
- package/dist/carousel/stops.d.ts +20 -0
- package/dist/carousel/stops.js +30 -0
- package/dist/chat/composer/chat-composer.d.ts +38 -6
- package/dist/chat/composer/chat-composer.js +42 -9
- package/dist/chat/message/chat-message.d.ts +32 -1
- package/dist/chat/message/chat-message.js +27 -10
- package/dist/chat/naming.d.ts +26 -0
- package/dist/chat/naming.js +14 -0
- package/dist/chat/root/chat-root.d.ts +58 -0
- package/dist/chat/root/chat-root.js +43 -3
- package/dist/checkbox/root/checkbox-root.d.ts +20 -0
- package/dist/checkbox/root/checkbox-root.js +14 -1
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +8 -2
- package/dist/checkbox-group/root/checkbox-group-root.js +12 -10
- package/dist/checkbox-group/select-all.d.ts +27 -0
- package/dist/checkbox-group/select-all.js +12 -0
- package/dist/code-block/highlight.d.ts +15 -0
- package/dist/code-block/highlight.js +4 -0
- package/dist/code-block/root/code-block-root.d.ts +57 -2
- package/dist/code-block/root/code-block-root.js +63 -8
- package/dist/color-input/root/color-input-root.d.ts +3 -0
- package/dist/color-input/root/color-input-root.js +6 -3
- package/dist/color-picker/root/color-picker-root.d.ts +33 -4
- package/dist/color-picker/root/color-picker-root.js +80 -21
- package/dist/color-picker/swatches.d.ts +12 -0
- package/dist/color-picker/swatches.js +26 -0
- package/dist/combobox/root/combobox-root.d.ts +43 -0
- package/dist/combobox/root/combobox-root.js +79 -15
- package/dist/command/root/command-root.d.ts +16 -1
- package/dist/command/root/command-root.js +22 -4
- package/dist/copy-button/root/copy-button-root.d.ts +26 -1
- package/dist/copy-button/root/copy-button-root.js +12 -5
- package/dist/data-table/index.d.ts +1 -1
- package/dist/data-table/index.js +1 -1
- package/dist/data-table/keys.d.ts +24 -0
- package/dist/data-table/keys.js +24 -0
- package/dist/data-table/root/data-table-root.d.ts +170 -13
- package/dist/data-table/root/data-table-root.js +294 -52
- package/dist/data-table/tree.d.ts +55 -0
- package/dist/data-table/tree.js +54 -0
- package/dist/date-input/root/date-input-root.d.ts +3 -1
- package/dist/date-input/root/date-input-root.js +18 -7
- package/dist/date-picker/root/date-picker-root.js +12 -6
- package/dist/description-list/item/description-list-item.d.ts +17 -2
- package/dist/description-list/item/description-list-item.js +15 -2
- package/dist/description-list/root/description-list-root.d.ts +27 -1
- package/dist/description-list/root/description-list-root.js +26 -1
- package/dist/dialog/description.js +15 -1
- package/dist/dialog/root/dialog-root.d.ts +8 -2
- package/dist/dialog/root/dialog-root.js +16 -1
- package/dist/divider/root/divider-root.d.ts +3 -0
- package/dist/divider/root/divider-root.js +2 -1
- package/dist/donut-chart/root/donut-chart-root.d.ts +31 -0
- package/dist/donut-chart/root/donut-chart-root.js +48 -1
- package/dist/drawer/reveal.d.ts +8 -0
- package/dist/drawer/reveal.js +1 -0
- package/dist/drawer/root/drawer-root.d.ts +59 -0
- package/dist/drawer/root/drawer-root.js +63 -4
- package/dist/drilldown/item/drilldown-item.d.ts +11 -6
- package/dist/drilldown/item/drilldown-item.js +8 -5
- package/dist/drilldown/root/drilldown-root.d.ts +29 -0
- package/dist/drilldown/root/drilldown-root.js +28 -5
- package/dist/element-events.generated.js +83 -12
- package/dist/empty/root/empty-root.d.ts +3 -1
- package/dist/empty/root/empty-root.js +3 -2
- package/dist/file-input/root/file-input-root.d.ts +69 -6
- package/dist/file-input/root/file-input-root.js +82 -19
- package/dist/file-input/screen.d.ts +2 -1
- package/dist/filter-input/menu/filter-menu.d.ts +5 -0
- package/dist/filter-input/menu/filter-menu.js +16 -4
- package/dist/filter-input/root/filter-input-root.d.ts +30 -6
- package/dist/filter-input/root/filter-input-root.js +1 -1
- package/dist/filter-input/suggest.d.ts +28 -3
- package/dist/filter-input/suggest.js +18 -8
- package/dist/format-date/root/format-date-root.d.ts +9 -16
- package/dist/format-date/root/format-date-root.js +10 -27
- package/dist/heatmap/root/heatmap-root.d.ts +24 -13
- package/dist/heatmap/root/heatmap-root.js +34 -12
- package/dist/icon/root/icon-root.d.ts +12 -1
- package/dist/icon/root/icon-root.js +21 -10
- package/dist/icon/settle.d.ts +7 -0
- package/dist/icon/settle.js +10 -0
- package/dist/icon-button/root/icon-button-root.d.ts +2 -0
- package/dist/image/root/image-root.d.ts +5 -1
- package/dist/image/root/image-root.js +10 -2
- package/dist/input/root/input-root.d.ts +13 -3
- package/dist/input/root/input-root.js +12 -3
- package/dist/kbd/root/kbd-root.d.ts +35 -1
- package/dist/kbd/root/kbd-root.js +23 -4
- package/dist/legend/root/legend-root.d.ts +55 -8
- package/dist/legend/root/legend-root.js +55 -13
- package/dist/lightbox/root/lightbox-root.d.ts +49 -6
- package/dist/lightbox/root/lightbox-root.js +86 -19
- package/dist/lightbox/zoom-controller.d.ts +59 -0
- package/dist/lightbox/zoom-controller.js +128 -0
- package/dist/lightbox/zoom.d.ts +22 -0
- package/dist/lightbox/zoom.js +16 -0
- package/dist/line-chart/root/line-chart-root.d.ts +22 -1
- package/dist/line-chart/root/line-chart-root.js +21 -1
- package/dist/list/item/list-item.d.ts +70 -1
- package/dist/list/item/list-item.js +77 -6
- package/dist/list/numbering.d.ts +14 -0
- package/dist/list/numbering.js +8 -0
- package/dist/list/root/list-root.d.ts +155 -9
- package/dist/list/root/list-root.js +246 -4
- package/dist/list/selection.d.ts +49 -0
- package/dist/list/selection.js +30 -0
- package/dist/listbox/root/listbox-root.d.ts +37 -1
- package/dist/listbox/root/listbox-root.js +49 -4
- package/dist/loader/busy.d.ts +10 -0
- package/dist/loader/busy.js +11 -0
- package/dist/loader/root/loader-root.d.ts +9 -2
- package/dist/loader/root/loader-root.js +23 -3
- package/dist/map/root/map-root.d.ts +6 -2
- package/dist/map/root/map-root.js +5 -2
- package/dist/megamenu/root/megamenu-root.d.ts +62 -0
- package/dist/megamenu/root/megamenu-root.js +90 -5
- package/dist/menu/index.d.ts +1 -0
- package/dist/menu/index.js +1 -0
- package/dist/menu/item/menu-item.d.ts +87 -11
- package/dist/menu/item/menu-item.js +78 -22
- package/dist/menu/root/menu-root.d.ts +39 -1
- package/dist/menu/root/menu-root.js +65 -8
- package/dist/menu/section/menu-section.d.ts +55 -0
- package/dist/menu/section/menu-section.js +60 -0
- package/dist/meter/root/meter-root.d.ts +20 -1
- package/dist/meter/root/meter-root.js +11 -15
- package/dist/navigation/root/navigation-root.d.ts +18 -2
- package/dist/navigation/root/navigation-root.js +29 -3
- package/dist/notifications/root/notifications-root.d.ts +25 -0
- package/dist/notifications/root/notifications-root.js +33 -5
- package/dist/number-input/root/number-input-root.d.ts +17 -8
- package/dist/number-input/root/number-input-root.js +2 -7
- package/dist/object-inspector/root/object-inspector-root.d.ts +161 -32
- package/dist/object-inspector/root/object-inspector-root.js +264 -123
- package/dist/object-inspector/rows.d.ts +75 -0
- package/dist/object-inspector/rows.js +119 -0
- package/dist/option/root/option-root.d.ts +5 -3
- package/dist/outline/levels.d.ts +31 -0
- package/dist/outline/levels.js +23 -0
- package/dist/outline/root/outline-root.d.ts +86 -3
- package/dist/outline/root/outline-root.js +95 -12
- package/dist/pagination/size/pagination-size.d.ts +12 -2
- package/dist/pagination/size/pagination-size.js +20 -5
- package/dist/pin-input/code.d.ts +10 -0
- package/dist/pin-input/code.js +13 -0
- package/dist/pin-input/root/pin-input-root.d.ts +25 -1
- package/dist/pin-input/root/pin-input-root.js +10 -11
- package/dist/popover/hide-outside.d.ts +14 -0
- package/dist/popover/hide-outside.js +41 -0
- package/dist/popover/root/popover-root.d.ts +57 -7
- package/dist/popover/root/popover-root.js +58 -3
- package/dist/progress/root/progress-root.d.ts +20 -0
- package/dist/progress/root/progress-root.js +15 -15
- package/dist/qr-code/export.d.ts +26 -1
- package/dist/qr-code/export.js +14 -0
- package/dist/qr-code/root/qr-code-root.d.ts +19 -5
- package/dist/qr-code/root/qr-code-root.js +58 -9
- package/dist/quote/marks.d.ts +8 -0
- package/dist/quote/marks.js +5 -0
- package/dist/quote/root/quote-root.d.ts +14 -2
- package/dist/quote/root/quote-root.js +23 -1
- package/dist/radio/group/radio-group.d.ts +4 -10
- package/dist/radio/group/radio-group.js +5 -10
- package/dist/radio/root/radio-root.d.ts +6 -2
- package/dist/radio/root/radio-root.js +6 -1
- package/dist/rating/root/rating-root.d.ts +10 -5
- package/dist/rating/root/rating-root.js +32 -8
- package/dist/rating/steps.d.ts +7 -0
- package/dist/rating/steps.js +9 -0
- package/dist/scatter-chart/fit.d.ts +15 -0
- package/dist/scatter-chart/fit.js +35 -0
- package/dist/scatter-chart/root/scatter-chart-root.d.ts +21 -1
- package/dist/scatter-chart/root/scatter-chart-root.js +30 -17
- package/dist/scroll-area/root/scroll-area-root.d.ts +84 -0
- package/dist/scroll-area/root/scroll-area-root.js +106 -7
- package/dist/scroll-area/scrollbar-controller.d.ts +111 -0
- package/dist/scroll-area/scrollbar-controller.js +172 -0
- package/dist/scroll-area/scrollbar.d.ts +92 -0
- package/dist/scroll-area/scrollbar.js +33 -0
- package/dist/select/root/select-root.d.ts +15 -0
- package/dist/select/root/select-root.js +18 -6
- package/dist/skeleton/root/skeleton-root.d.ts +3 -0
- package/dist/skeleton/root/skeleton-root.js +4 -2
- package/dist/skip-link/root/skip-link-root.js +2 -2
- package/dist/slider/root/slider-root.d.ts +41 -4
- package/dist/slider/root/slider-root.js +23 -3
- package/dist/sparkline/readings.d.ts +18 -0
- package/dist/sparkline/readings.js +19 -0
- package/dist/sparkline/root/sparkline-root.d.ts +78 -7
- package/dist/sparkline/root/sparkline-root.js +118 -23
- package/dist/speed-dial/root/speed-dial-root.js +2 -2
- package/dist/splitter/root/splitter-root.d.ts +20 -12
- package/dist/splitter/root/splitter-root.js +226 -203
- package/dist/splitter/snap.d.ts +9 -0
- package/dist/splitter/snap.js +12 -0
- package/dist/stat/root/stat-root.d.ts +14 -5
- package/dist/stat/root/stat-root.js +21 -5
- package/dist/steps/reach.d.ts +20 -0
- package/dist/steps/reach.js +15 -0
- package/dist/steps/root/steps-root.d.ts +76 -0
- package/dist/steps/root/steps-root.js +93 -1
- package/dist/steps/step/step.d.ts +45 -2
- package/dist/steps/step/step.js +33 -6
- package/dist/switch/root/switch-root.d.ts +10 -0
- package/dist/table/column/table-column.d.ts +11 -10
- package/dist/table/column/table-column.js +8 -19
- package/dist/table/root/table-root.d.ts +126 -4
- package/dist/table/root/table-root.js +156 -6
- package/dist/table/row/table-row.d.ts +47 -1
- package/dist/table/row/table-row.js +39 -2
- package/dist/tabs/panel/tab-panel.d.ts +22 -5
- package/dist/tabs/panel/tab-panel.js +34 -6
- package/dist/tabs/root/tabs-root.d.ts +37 -1
- package/dist/tabs/root/tabs-root.js +22 -4
- package/dist/tabs/tab/tab.d.ts +41 -4
- package/dist/tabs/tab/tab.js +49 -3
- package/dist/tag/group/tag-group.d.ts +31 -4
- package/dist/tag/group/tag-group.js +46 -7
- package/dist/tag/root/tag-root.js +9 -2
- package/dist/textarea/root/textarea-root.d.ts +28 -1
- package/dist/textarea/root/textarea-root.js +40 -1
- package/dist/time-input/root/time-input-root.d.ts +5 -1
- package/dist/time-input/root/time-input-root.js +16 -8
- package/dist/time-picker/root/time-picker-root.d.ts +18 -4
- package/dist/time-picker/root/time-picker-root.js +7 -10
- package/dist/time-picker/wheel-name.d.ts +9 -0
- package/dist/time-picker/wheel-name.js +15 -0
- package/dist/timeline/group/timeline-group.d.ts +46 -0
- package/dist/timeline/group/timeline-group.js +37 -0
- package/dist/timeline/index.d.ts +1 -0
- package/dist/timeline/index.js +1 -0
- package/dist/timeline/root/timeline-root.d.ts +10 -3
- package/dist/toast/item/toast-item.d.ts +24 -18
- package/dist/toast/item/toast-item.js +36 -40
- package/dist/toast/root/toast-root.d.ts +6 -0
- package/dist/toast/root/toast-root.js +16 -1
- package/dist/toggle/group/toggle-group.d.ts +24 -3
- package/dist/toggle/group/toggle-group.js +34 -5
- package/dist/toolbar/root/toolbar-root.d.ts +13 -0
- package/dist/toolbar/root/toolbar-root.js +15 -5
- package/dist/tooltip/root/tooltip-root.d.ts +13 -2
- package/dist/tooltip/root/tooltip-root.js +9 -1
- package/dist/tour/back.d.ts +10 -0
- package/dist/tour/back.js +8 -0
- package/dist/tour/root/tour-root.d.ts +30 -2
- package/dist/tour/root/tour-root.js +34 -8
- package/dist/tree/item/tree-item.d.ts +61 -4
- package/dist/tree/item/tree-item.js +92 -20
- package/dist/tree/root/tree-root.d.ts +58 -0
- package/dist/tree/root/tree-root.js +80 -16
- package/dist/tree/selection.d.ts +24 -0
- package/dist/tree/selection.js +13 -0
- package/dist/trend/root/trend-root.d.ts +43 -18
- package/dist/trend/root/trend-root.js +31 -6
- package/dist/video/media-events.d.ts +44 -0
- package/dist/video/media-events.js +35 -0
- package/dist/video/root/video-root.d.ts +117 -18
- package/dist/video/root/video-root.js +93 -47
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +5 -0
- package/dist/video-playlist/menu/video-playlist-menu.js +3 -1
- package/dist/video-playlist/order.d.ts +41 -0
- package/dist/video-playlist/order.js +34 -0
- package/dist/video-playlist/root/video-playlist-root.d.ts +77 -3
- package/dist/video-playlist/root/video-playlist-root.js +60 -16
- package/dist/virtual-list/controls.d.ts +4 -0
- package/dist/virtual-list/controls.js +30 -0
- package/dist/virtual-list/fill.d.ts +22 -0
- package/dist/virtual-list/fill.js +23 -0
- package/dist/virtual-list/keys.d.ts +15 -0
- package/dist/virtual-list/keys.js +24 -0
- package/dist/virtual-list/plan.d.ts +49 -0
- package/dist/virtual-list/plan.js +16 -0
- package/dist/virtual-list/root/virtual-list-root.d.ts +259 -26
- package/dist/virtual-list/root/virtual-list-root.js +333 -49
- package/lint.json +1 -1
- package/package.json +8 -8
- package/types/jsx.d.ts +8113 -1394
- package/types/svelte.d.ts +2 -0
- package/types/vue.d.ts +1678 -353
- package/dist/data-table/root/order.d.ts +0 -141
- package/dist/data-table/root/order.js +0 -76
- package/dist/listbox/range.d.ts +0 -17
- package/dist/listbox/range.js +0 -5
- package/dist/tag/selection.d.ts +0 -10
- package/dist/tag/selection.js +0 -12
|
@@ -4,6 +4,7 @@ registerElementEvents({
|
|
|
4
4
|
'helix-headless-announcement': ['helix-dismiss'],
|
|
5
5
|
'helix-headless-app-header': ['helix-scrolled'],
|
|
6
6
|
'helix-headless-avatar': ['error', 'load'],
|
|
7
|
+
'helix-headless-button': ['helix-press'],
|
|
7
8
|
'helix-headless-callout': ['helix-dismiss'],
|
|
8
9
|
'helix-headless-canvas': [
|
|
9
10
|
'helix-before-move',
|
|
@@ -22,7 +23,7 @@ registerElementEvents({
|
|
|
22
23
|
],
|
|
23
24
|
'helix-headless-carousel': ['helix-activate', 'helix-select'],
|
|
24
25
|
'helix-headless-chat': ['helix-before-pin', 'helix-history', 'helix-pin', 'helix-send'],
|
|
25
|
-
'helix-headless-chat-composer': ['helix-send', 'input'],
|
|
26
|
+
'helix-headless-chat-composer': ['helix-send', 'helix-typing', 'input'],
|
|
26
27
|
'helix-headless-chat-message': ['helix-send'],
|
|
27
28
|
'helix-headless-checkbox': ['change', 'helix-before-toggle', 'input'],
|
|
28
29
|
'helix-headless-checkbox-group': ['change', 'helix-before-change', 'input'],
|
|
@@ -49,6 +50,7 @@ registerElementEvents({
|
|
|
49
50
|
'helix-before-open',
|
|
50
51
|
'helix-create',
|
|
51
52
|
'helix-filter',
|
|
53
|
+
'helix-load-more',
|
|
52
54
|
'input',
|
|
53
55
|
'toggle',
|
|
54
56
|
],
|
|
@@ -56,14 +58,17 @@ registerElementEvents({
|
|
|
56
58
|
'helix-before-close',
|
|
57
59
|
'helix-before-open',
|
|
58
60
|
'helix-filter',
|
|
61
|
+
'helix-load-more',
|
|
59
62
|
'helix-select',
|
|
60
63
|
'toggle',
|
|
61
64
|
],
|
|
62
|
-
'helix-headless-copy-button': ['helix-copy', 'helix-copy-error'],
|
|
65
|
+
'helix-headless-copy-button': ['helix-copy', 'helix-copy-error', 'helix-press'],
|
|
63
66
|
'helix-headless-data-table': [
|
|
64
67
|
'helix-activate',
|
|
68
|
+
'helix-expand',
|
|
65
69
|
'helix-filter',
|
|
66
70
|
'helix-filtered',
|
|
71
|
+
'helix-load-more',
|
|
67
72
|
'helix-navigate',
|
|
68
73
|
'helix-reorder',
|
|
69
74
|
'helix-reordered',
|
|
@@ -112,6 +117,7 @@ registerElementEvents({
|
|
|
112
117
|
],
|
|
113
118
|
'helix-headless-heatmap': ['helix-resize'],
|
|
114
119
|
'helix-headless-icon': ['error', 'load'],
|
|
120
|
+
'helix-headless-icon-button': ['helix-press'],
|
|
115
121
|
'helix-headless-image': ['error', 'load'],
|
|
116
122
|
'helix-headless-input': ['change', 'helix-before-change', 'helix-clear', 'input'],
|
|
117
123
|
'helix-headless-kbd': ['helix-shortcut'],
|
|
@@ -124,7 +130,15 @@ registerElementEvents({
|
|
|
124
130
|
'helix-before-open',
|
|
125
131
|
'toggle',
|
|
126
132
|
],
|
|
127
|
-
'helix-headless-
|
|
133
|
+
'helix-headless-list': ['change', 'helix-action', 'helix-before-change'],
|
|
134
|
+
'helix-headless-list-item': ['helix-action'],
|
|
135
|
+
'helix-headless-listbox': [
|
|
136
|
+
'change',
|
|
137
|
+
'helix-before-change',
|
|
138
|
+
'helix-filter',
|
|
139
|
+
'helix-load-more',
|
|
140
|
+
'input',
|
|
141
|
+
],
|
|
128
142
|
'helix-headless-map': [
|
|
129
143
|
'change',
|
|
130
144
|
'helix-activate',
|
|
@@ -137,6 +151,7 @@ registerElementEvents({
|
|
|
137
151
|
'helix-map-rotate',
|
|
138
152
|
'helix-map-tilt',
|
|
139
153
|
'helix-map-zoom',
|
|
154
|
+
'helix-toggle',
|
|
140
155
|
],
|
|
141
156
|
'helix-headless-map-area': ['helix-map-part-change'],
|
|
142
157
|
'helix-headless-map-buildings': ['helix-map-part-change'],
|
|
@@ -153,9 +168,18 @@ registerElementEvents({
|
|
|
153
168
|
'helix-headless-menu-item': ['helix-before-toggle', 'helix-select'],
|
|
154
169
|
'helix-headless-notification': ['helix-dismiss', 'helix-read'],
|
|
155
170
|
'helix-headless-notification-group': ['helix-before-close', 'helix-before-open', 'toggle'],
|
|
156
|
-
'helix-headless-notifications': ['helix-dismiss', 'helix-read'],
|
|
171
|
+
'helix-headless-notifications': ['helix-dismiss', 'helix-load-more', 'helix-read'],
|
|
157
172
|
'helix-headless-number-input': ['change', 'helix-before-change', 'input'],
|
|
158
|
-
'helix-headless-object-inspector': [
|
|
173
|
+
'helix-headless-object-inspector': [
|
|
174
|
+
'helix-activate',
|
|
175
|
+
'helix-before-activate',
|
|
176
|
+
'helix-before-close',
|
|
177
|
+
'helix-before-open',
|
|
178
|
+
'helix-copy',
|
|
179
|
+
'helix-filter',
|
|
180
|
+
'helix-filtered',
|
|
181
|
+
'toggle',
|
|
182
|
+
],
|
|
159
183
|
'helix-headless-option': ['helix-select'],
|
|
160
184
|
'helix-headless-outline': ['helix-activate'],
|
|
161
185
|
'helix-headless-pagination': ['helix-activate', 'helix-navigate'],
|
|
@@ -165,13 +189,21 @@ registerElementEvents({
|
|
|
165
189
|
'helix-headless-qr-code': ['error'],
|
|
166
190
|
'helix-headless-radio': ['helix-select'],
|
|
167
191
|
'helix-headless-radio-group': ['change', 'helix-before-change', 'helix-select', 'input'],
|
|
168
|
-
'helix-headless-rating': [
|
|
192
|
+
'helix-headless-rating': [
|
|
193
|
+
'change',
|
|
194
|
+
'helix-before-change',
|
|
195
|
+
'helix-clear',
|
|
196
|
+
'helix-preview',
|
|
197
|
+
'input',
|
|
198
|
+
],
|
|
199
|
+
'helix-headless-scroll-area': ['scroll', 'scrollend'],
|
|
169
200
|
'helix-headless-select': [
|
|
170
201
|
'change',
|
|
171
202
|
'helix-before-change',
|
|
172
203
|
'helix-before-close',
|
|
173
204
|
'helix-before-open',
|
|
174
205
|
'helix-filter',
|
|
206
|
+
'helix-load-more',
|
|
175
207
|
'input',
|
|
176
208
|
'toggle',
|
|
177
209
|
],
|
|
@@ -193,12 +225,12 @@ registerElementEvents({
|
|
|
193
225
|
'helix-headless-steps': ['helix-activate', 'helix-before-activate', 'helix-select'],
|
|
194
226
|
'helix-headless-switch': ['change', 'helix-before-toggle', 'input'],
|
|
195
227
|
'helix-headless-tab': ['helix-select'],
|
|
196
|
-
'helix-headless-table': ['helix-sort'],
|
|
197
|
-
'helix-headless-table-column': ['helix-before-resize'],
|
|
228
|
+
'helix-headless-table': ['helix-select', 'helix-selected', 'helix-sort', 'helix-sorted'],
|
|
229
|
+
'helix-headless-table-column': ['helix-before-resize', 'helix-resized'],
|
|
198
230
|
'helix-headless-tabs': ['helix-activate', 'helix-before-activate', 'helix-select'],
|
|
199
231
|
'helix-headless-tag': ['helix-dismiss'],
|
|
200
232
|
'helix-headless-tag-group': ['change', 'helix-before-change', 'helix-dismiss'],
|
|
201
|
-
'helix-headless-textarea': ['change', 'helix-before-change', 'input'],
|
|
233
|
+
'helix-headless-textarea': ['change', 'helix-before-change', 'helix-clear', 'input'],
|
|
202
234
|
'helix-headless-time-input': [
|
|
203
235
|
'change',
|
|
204
236
|
'helix-before-change',
|
|
@@ -220,13 +252,52 @@ registerElementEvents({
|
|
|
220
252
|
'helix-before-open',
|
|
221
253
|
'helix-complete',
|
|
222
254
|
'helix-tour-ask',
|
|
255
|
+
'helix-tour-status',
|
|
223
256
|
'toggle',
|
|
224
257
|
],
|
|
225
258
|
'helix-headless-tour-stop': ['helix-tour-ask'],
|
|
226
259
|
'helix-headless-tree': ['helix-activate', 'helix-before-activate', 'helix-select'],
|
|
227
|
-
'helix-headless-tree-item': [
|
|
228
|
-
|
|
229
|
-
|
|
260
|
+
'helix-headless-tree-item': [
|
|
261
|
+
'helix-before-close',
|
|
262
|
+
'helix-before-open',
|
|
263
|
+
'helix-load',
|
|
264
|
+
'helix-select',
|
|
265
|
+
'toggle',
|
|
266
|
+
],
|
|
267
|
+
'helix-headless-video': [
|
|
268
|
+
'abort',
|
|
269
|
+
'canplay',
|
|
270
|
+
'canplaythrough',
|
|
271
|
+
'durationchange',
|
|
272
|
+
'emptied',
|
|
273
|
+
'ended',
|
|
274
|
+
'error',
|
|
275
|
+
'helix-next',
|
|
276
|
+
'helix-previous',
|
|
277
|
+
'loadeddata',
|
|
278
|
+
'loadedmetadata',
|
|
279
|
+
'loadstart',
|
|
280
|
+
'pause',
|
|
281
|
+
'play',
|
|
282
|
+
'playing',
|
|
283
|
+
'progress',
|
|
284
|
+
'ratechange',
|
|
285
|
+
'resize',
|
|
286
|
+
'seeked',
|
|
287
|
+
'seeking',
|
|
288
|
+
'stalled',
|
|
289
|
+
'suspend',
|
|
290
|
+
'timeupdate',
|
|
291
|
+
'volumechange',
|
|
292
|
+
'waiting',
|
|
293
|
+
],
|
|
294
|
+
'helix-headless-video-playlist': ['helix-activate', 'helix-before-activate', 'helix-end'],
|
|
230
295
|
'helix-headless-video-playlist-item': ['helix-select'],
|
|
231
296
|
'helix-headless-video-playlist-menu': ['helix-select'],
|
|
297
|
+
'helix-headless-virtual-list': [
|
|
298
|
+
'change',
|
|
299
|
+
'helix-before-change',
|
|
300
|
+
'helix-load-more',
|
|
301
|
+
'helix-range-change',
|
|
302
|
+
],
|
|
232
303
|
});
|
|
@@ -11,7 +11,9 @@ import { type TemplateResult } from 'lit';
|
|
|
11
11
|
* was loading, and the announcement tells a screen reader user that the search
|
|
12
12
|
* returned nothing. It is announced from a status region of its own, which is
|
|
13
13
|
* rendered empty and filled a frame after the view appears. Screen readers read
|
|
14
|
-
* a region that arrives with its text already in it inconsistently.
|
|
14
|
+
* a region that arrives with its text already in it inconsistently. For the
|
|
15
|
+
* seven seconds the region holds its copy, the heading and the message are
|
|
16
|
+
* hidden from screen readers, so the words are in the page once.
|
|
15
17
|
*
|
|
16
18
|
* Every region is a bare slot. There is no `empty-state-heading` or
|
|
17
19
|
* `empty-state-actions` element: assign your own heading and actions to the
|
|
@@ -18,9 +18,10 @@ let HelixHeadlessEmpty = class HelixHeadlessEmpty extends HelixElement {
|
|
|
18
18
|
}
|
|
19
19
|
render() {
|
|
20
20
|
const say = () => this.arrival.say();
|
|
21
|
+
const copied = this.arrival.said !== '' && !this.noAnnounce ? 'true' : nothing;
|
|
21
22
|
return html `<slot name="icon"></slot>
|
|
22
|
-
<slot name="heading" @slotchange=${say}></slot>
|
|
23
|
-
<slot @slotchange=${say}></slot>
|
|
23
|
+
<slot aria-hidden=${copied} name="heading" @slotchange=${say}></slot>
|
|
24
|
+
<slot aria-hidden=${copied} @slotchange=${say}></slot>
|
|
24
25
|
<slot name="actions"></slot>
|
|
25
26
|
${this.noAnnounce
|
|
26
27
|
? nothing
|
|
@@ -20,7 +20,22 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
|
|
|
20
20
|
* is screened: `accept`, `max-file-size`, `max-files` and your own `validate`
|
|
21
21
|
* can refuse it. A refused file is left out, `helix-reject` lists each one with
|
|
22
22
|
* its reason, and a reader hears `rejected-text` with the names filled in.
|
|
23
|
-
* `
|
|
23
|
+
* A reader also hears `added-text` for the files a drop or a paste adds, and
|
|
24
|
+
* `removed-text` for a file a remove button takes out, since neither moves
|
|
25
|
+
* focus or says anything on its own. `directory` asks the picker for a folder. `transformFiles` changes the files
|
|
26
|
+
* a field takes before it holds them, such as shrinking an image.
|
|
27
|
+
*
|
|
28
|
+
* Each chosen file is a row: its name, its size and type as tags, and a
|
|
29
|
+
* remove button. `renderFile` draws the row's details your own way, and the
|
|
30
|
+
* `remove-icon` slot replaces the button's icon.
|
|
31
|
+
*
|
|
32
|
+
* **Keyboard.** The input is the tab stop, and each file's remove button is
|
|
33
|
+
* one more.
|
|
34
|
+
*
|
|
35
|
+
* | Key | What it does |
|
|
36
|
+
* |---|---|
|
|
37
|
+
* | Enter, Space | On the input, opens the picker. On a remove button, removes that file and moves focus to the button of the file in its place, or back to the input. |
|
|
38
|
+
* | Control+V, Command+V | Takes files from the clipboard, as a drop does. |
|
|
24
39
|
*
|
|
25
40
|
* @since 0.1.0
|
|
26
41
|
* @status stable
|
|
@@ -31,6 +46,7 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
|
|
|
31
46
|
* @slot feedback - The message that says what is wrong with the chosen files.
|
|
32
47
|
* @slot hint - Help under the field.
|
|
33
48
|
* @slot label - The label, for content richer than the `label` text.
|
|
49
|
+
* @slot remove-icon - The icon on each file's remove button, in place of the bin. Each button shows a copy.
|
|
34
50
|
* @slot trigger - The content that opens the picker when pressed.
|
|
35
51
|
*
|
|
36
52
|
* @event {Event} change - Fired after the value changes.
|
|
@@ -53,7 +69,7 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
|
|
|
53
69
|
* @csspart kind-start - The category before the label.
|
|
54
70
|
* @csspart label - The label above the field.
|
|
55
71
|
* @csspart list - The chosen files.
|
|
56
|
-
* @csspart live - The live region that says `rejected-text
|
|
72
|
+
* @csspart live - The live region that says `added-text`, `rejected-text`, and `removed-text`. It is rendered from the first time it has something to say.
|
|
57
73
|
* @csspart meta - The row that holds a file's size and type.
|
|
58
74
|
* @csspart name - A file's name.
|
|
59
75
|
* @csspart remove - The control that removes a file.
|
|
@@ -66,6 +82,8 @@ declare const HelixHeadlessFileInput_base: (new (...args: any[]) => import("@fus
|
|
|
66
82
|
* @csspart size-start - The category before the label.
|
|
67
83
|
* @csspart trigger - The label that opens the picker.
|
|
68
84
|
*
|
|
85
|
+
* @cssstate dropping - Files are being dragged over the field.
|
|
86
|
+
* @cssstate has-files - The field holds at least one file.
|
|
69
87
|
* @cssstate invalid - The control has an error to show, from the browser's validation or from your `feedback`.
|
|
70
88
|
*/
|
|
71
89
|
export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base {
|
|
@@ -77,6 +95,11 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
|
|
|
77
95
|
* filter is the only check the platform makes and a drop never meets it.
|
|
78
96
|
*/
|
|
79
97
|
accept: string;
|
|
98
|
+
/**
|
|
99
|
+
* What a reader hears when a drop or a paste adds files, with `{names}` and
|
|
100
|
+
* `{count}` filled in.
|
|
101
|
+
*/
|
|
102
|
+
addedText: string;
|
|
80
103
|
/**
|
|
81
104
|
* Which camera or microphone a mobile picker should offer, if any.
|
|
82
105
|
*/
|
|
@@ -110,6 +133,10 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
|
|
|
110
133
|
* filled in.
|
|
111
134
|
*/
|
|
112
135
|
rejectedText: string;
|
|
136
|
+
/**
|
|
137
|
+
* What a reader hears when a file is removed, with `{name}` filled in.
|
|
138
|
+
*/
|
|
139
|
+
removedText: string;
|
|
113
140
|
/**
|
|
114
141
|
* The accessible name of the control that removes a file. `{name}` is
|
|
115
142
|
* replaced with the file's name.
|
|
@@ -119,6 +146,19 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
|
|
|
119
146
|
* `{name}` has it added after it.
|
|
120
147
|
*/
|
|
121
148
|
removeLabel: string;
|
|
149
|
+
/**
|
|
150
|
+
* Draws a file's row in place of its name, size, and type: a Lit template, a
|
|
151
|
+
* string, or a DOM node, given the file and its place in the list. The
|
|
152
|
+
* remove button stays beside it.
|
|
153
|
+
*/
|
|
154
|
+
renderFile?: (file: File, index: number) => unknown;
|
|
155
|
+
/**
|
|
156
|
+
* Your own step between taking files and holding them, such as shrinking an
|
|
157
|
+
* image, as Zag's file upload `transformFiles`. It is given the files taken
|
|
158
|
+
* from one pick, drop, or paste and returns the files to hold, or a promise
|
|
159
|
+
* of them. A promise that rejects refuses those files, with its message.
|
|
160
|
+
*/
|
|
161
|
+
transformFiles?: (files: File[]) => File[] | Promise<File[]>;
|
|
122
162
|
/**
|
|
123
163
|
* The trigger's text when nothing is slotted into it.
|
|
124
164
|
*/
|
|
@@ -128,15 +168,38 @@ export declare class HelixHeadlessFileInput extends HelixHeadlessFileInput_base
|
|
|
128
168
|
* nothing to take it. A property, since a function cannot be an attribute.
|
|
129
169
|
*/
|
|
130
170
|
validate?: (file: File) => string | null | undefined;
|
|
131
|
-
/** The live region, rendered from the first
|
|
171
|
+
/** The live region, rendered from the first time it has something to say. */
|
|
132
172
|
private readonly status;
|
|
133
173
|
/**
|
|
134
174
|
* Screens arriving files and commits what is taken, after the files the
|
|
135
|
-
* field keeps
|
|
175
|
+
* field keeps, through `transformFiles` where it is set.
|
|
136
176
|
*/
|
|
137
177
|
private take;
|
|
138
|
-
/**
|
|
139
|
-
|
|
178
|
+
/**
|
|
179
|
+
* Commits what an arrival leaves, sends `helix-reject` for what it refused,
|
|
180
|
+
* and says both.
|
|
181
|
+
*
|
|
182
|
+
* Nothing taken and nothing moved, as when every dropped file is refused, is
|
|
183
|
+
* no change to announce. A pick is the platform's own `change`, relayed
|
|
184
|
+
* whatever it holds, and the picker itself tells a reader what was chosen,
|
|
185
|
+
* so `added-text` is said for a drop or a paste only.
|
|
186
|
+
*/
|
|
187
|
+
private finish;
|
|
188
|
+
/**
|
|
189
|
+
* A sentence about some files, with `{count}` and `{names}` filled in.
|
|
190
|
+
*
|
|
191
|
+
* The names as the page's language lists them, which in English is the comma
|
|
192
|
+
* list it always was: `unit` and `short` join with commas and no "and". The
|
|
193
|
+
* count is written as the language writes a number.
|
|
194
|
+
*/
|
|
195
|
+
private listed;
|
|
196
|
+
/** The element slotted into `remove-icon`, which each remove button copies. */
|
|
197
|
+
private removeIcon;
|
|
198
|
+
/** One copy of `removeIcon` per row, kept so a render does not replace it. */
|
|
199
|
+
private readonly removeIcons;
|
|
200
|
+
private readonly handleRemoveIcon;
|
|
201
|
+
/** The icon on one row's remove button: a copy of `remove-icon`, or the bin. */
|
|
202
|
+
private removeMark;
|
|
140
203
|
/** Takes files pasted onto the field, as a drop takes them. */
|
|
141
204
|
private readonly handlePaste;
|
|
142
205
|
/**
|
|
@@ -42,20 +42,28 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
42
42
|
target: () => this.partNamed('control'),
|
|
43
43
|
});
|
|
44
44
|
this.accept = '';
|
|
45
|
+
this.addedText = 'Added: {names}';
|
|
45
46
|
this.directory = false;
|
|
46
47
|
this.locale = '';
|
|
47
48
|
this.multiple = false;
|
|
48
49
|
this.rejectedText = 'Not added: {names}';
|
|
50
|
+
this.removedText = 'Removed: {name}';
|
|
49
51
|
this.removeLabel = 'Remove {name}';
|
|
50
52
|
this.triggerLabel = 'Choose files';
|
|
51
53
|
this.status = new StatusController(this);
|
|
54
|
+
this.removeIcon = undefined;
|
|
55
|
+
this.removeIcons = new Map();
|
|
56
|
+
this.handleRemoveIcon = (event) => {
|
|
57
|
+
this.removeIcons.clear();
|
|
58
|
+
this.removeIcon = event.target.assignedElements({ flatten: true })[0];
|
|
59
|
+
};
|
|
52
60
|
this.handlePaste = (event) => {
|
|
53
61
|
const pasted = [...(event.clipboardData?.files ?? [])];
|
|
54
62
|
if (this.isDisabled || pasted.length === 0) {
|
|
55
63
|
return;
|
|
56
64
|
}
|
|
57
65
|
event.preventDefault();
|
|
58
|
-
this.take(pasted, this.
|
|
66
|
+
this.take(pasted, this.files);
|
|
59
67
|
};
|
|
60
68
|
this.dropping = false;
|
|
61
69
|
this.committed = [];
|
|
@@ -84,7 +92,7 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
84
92
|
if (dropped.length === 0) {
|
|
85
93
|
return;
|
|
86
94
|
}
|
|
87
|
-
this.take(dropped, this.
|
|
95
|
+
this.take(dropped, this.files);
|
|
88
96
|
};
|
|
89
97
|
this.handleRemove = (event) => {
|
|
90
98
|
const at = Number(event.currentTarget.dataset.at);
|
|
@@ -106,21 +114,50 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
106
114
|
multiple: this.multiple || picked,
|
|
107
115
|
validate: this.validate,
|
|
108
116
|
});
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
117
|
+
const taken = kept.filter((file) => !keeping.includes(file));
|
|
118
|
+
const transform = this.transformFiles;
|
|
119
|
+
if (!transform || taken.length === 0) {
|
|
120
|
+
this.finish(kept, taken, refused, picked);
|
|
121
|
+
return;
|
|
112
122
|
}
|
|
123
|
+
const held = kept.filter((file) => keeping.includes(file));
|
|
124
|
+
Promise.resolve()
|
|
125
|
+
.then(() => transform(taken))
|
|
126
|
+
.then((made) => this.finish([...held, ...made], made, refused, picked), (error) => {
|
|
127
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
128
|
+
this.finish(held, [], [...refused, ...taken.map((file) => ({ file, message, reason: 'invalid' }))], picked);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
finish(next, added, refused, picked) {
|
|
132
|
+
const same = (one, two) => one.length === two.length && one.every((file, at) => file === two[at]);
|
|
133
|
+
const moved = picked || !(same(next, this.committed) && same(next, this.files));
|
|
134
|
+
const applied = moved && this.commit(next);
|
|
113
135
|
if (refused.length > 0) {
|
|
114
|
-
this.
|
|
136
|
+
this.dispatchEvent(new HelixRejectEvent({ files: refused }));
|
|
137
|
+
}
|
|
138
|
+
const words = [
|
|
139
|
+
applied && !picked && added.length > 0 ? this.listed(this.addedText, added) : '',
|
|
140
|
+
refused.length > 0
|
|
141
|
+
? this.listed(this.rejectedText, refused.map((one) => one.file))
|
|
142
|
+
: '',
|
|
143
|
+
].filter((one) => one !== '');
|
|
144
|
+
if (words.length > 0) {
|
|
145
|
+
this.status.say(words.join(' '));
|
|
115
146
|
}
|
|
116
147
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
names: new Intl.ListFormat(this.lang || undefined, { style: 'short', type: 'unit' }).format(refused.map((one) => one.file.name)),
|
|
148
|
+
listed(sentence, files) {
|
|
149
|
+
return fillTemplate(sentence, {
|
|
150
|
+
count: formatNumbers(this.lang)(files.length),
|
|
151
|
+
names: new Intl.ListFormat(this.lang || undefined, { style: 'short', type: 'unit' }).format(files.map((file) => file.name)),
|
|
122
152
|
});
|
|
123
|
-
|
|
153
|
+
}
|
|
154
|
+
removeMark(at) {
|
|
155
|
+
if (!this.removeIcon) {
|
|
156
|
+
return drawIcon(trash);
|
|
157
|
+
}
|
|
158
|
+
const held = this.removeIcons.get(at) ?? this.removeIcon.cloneNode(true);
|
|
159
|
+
this.removeIcons.set(at, held);
|
|
160
|
+
return held;
|
|
124
161
|
}
|
|
125
162
|
get files() {
|
|
126
163
|
return [...(this.control?.files ?? [])];
|
|
@@ -132,12 +169,15 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
132
169
|
this.commit([]);
|
|
133
170
|
}
|
|
134
171
|
removeAt(at) {
|
|
135
|
-
this.
|
|
172
|
+
const gone = this.files[at];
|
|
173
|
+
if (gone && this.commit(this.files.filter((_, index) => index !== at))) {
|
|
174
|
+
this.status.say(fillTemplate(this.removedText, { name: gone.name }));
|
|
175
|
+
}
|
|
136
176
|
}
|
|
137
177
|
commit(next) {
|
|
138
178
|
const control = this.control;
|
|
139
179
|
if (!control) {
|
|
140
|
-
return;
|
|
180
|
+
return false;
|
|
141
181
|
}
|
|
142
182
|
const previous = this.committed;
|
|
143
183
|
const applied = requestChange({
|
|
@@ -152,6 +192,7 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
152
192
|
if (!applied) {
|
|
153
193
|
this.put(control, previous);
|
|
154
194
|
}
|
|
195
|
+
return applied;
|
|
155
196
|
}
|
|
156
197
|
put(control, files) {
|
|
157
198
|
if (files.length === 0) {
|
|
@@ -197,6 +238,8 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
197
238
|
updated(changed) {
|
|
198
239
|
super.updated(changed);
|
|
199
240
|
this.sync();
|
|
241
|
+
this.toggleState('dropping', this.dropping);
|
|
242
|
+
this.toggleState('has-files', this.files.length > 0);
|
|
200
243
|
}
|
|
201
244
|
focus(options) {
|
|
202
245
|
this.control?.focus(options);
|
|
@@ -246,6 +289,9 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
246
289
|
<slot name="trigger">${this.triggerLabel}</slot>
|
|
247
290
|
</label>
|
|
248
291
|
</div>
|
|
292
|
+
<!-- Hidden, because this is where the icon arrives: each remove button
|
|
293
|
+
shows a copy. -->
|
|
294
|
+
<slot name="remove-icon" hidden @slotchange=${this.handleRemoveIcon}></slot>
|
|
249
295
|
<!-- The hint sits under the field and the list goes last, which is the
|
|
250
296
|
one ordering decision this component makes differently from the way it
|
|
251
297
|
reads. Reasoning above renderMeta. -->
|
|
@@ -256,10 +302,12 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
256
302
|
: html `<ul part="list">
|
|
257
303
|
${files.map((file, at) => html `<li part="file">
|
|
258
304
|
<span part="detail">
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
305
|
+
${this.renderFile
|
|
306
|
+
? this.renderFile(file, at)
|
|
307
|
+
: html `<span part="name">${file.name}</span>
|
|
308
|
+
<span part="meta">
|
|
309
|
+
${this.renderMeta(file)}
|
|
310
|
+
</span>`}
|
|
263
311
|
</span>
|
|
264
312
|
<button
|
|
265
313
|
part="remove"
|
|
@@ -269,7 +317,7 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
269
317
|
?disabled=${this.isDisabled}
|
|
270
318
|
@click=${this.handleRemove}
|
|
271
319
|
>
|
|
272
|
-
${
|
|
320
|
+
${this.removeMark(at)}
|
|
273
321
|
</button>
|
|
274
322
|
</li>`)}
|
|
275
323
|
</ul>`}`;
|
|
@@ -278,6 +326,9 @@ let HelixHeadlessFileInput = class HelixHeadlessFileInput extends MixinField(Hel
|
|
|
278
326
|
__decorate([
|
|
279
327
|
property()
|
|
280
328
|
], HelixHeadlessFileInput.prototype, "accept", void 0);
|
|
329
|
+
__decorate([
|
|
330
|
+
property({ attribute: 'added-text' })
|
|
331
|
+
], HelixHeadlessFileInput.prototype, "addedText", void 0);
|
|
281
332
|
__decorate([
|
|
282
333
|
property()
|
|
283
334
|
], HelixHeadlessFileInput.prototype, "capture", void 0);
|
|
@@ -299,15 +350,27 @@ __decorate([
|
|
|
299
350
|
__decorate([
|
|
300
351
|
property({ attribute: 'rejected-text' })
|
|
301
352
|
], HelixHeadlessFileInput.prototype, "rejectedText", void 0);
|
|
353
|
+
__decorate([
|
|
354
|
+
property({ attribute: 'removed-text' })
|
|
355
|
+
], HelixHeadlessFileInput.prototype, "removedText", void 0);
|
|
302
356
|
__decorate([
|
|
303
357
|
property({ attribute: 'remove-label' })
|
|
304
358
|
], HelixHeadlessFileInput.prototype, "removeLabel", void 0);
|
|
359
|
+
__decorate([
|
|
360
|
+
property({ attribute: false })
|
|
361
|
+
], HelixHeadlessFileInput.prototype, "renderFile", void 0);
|
|
362
|
+
__decorate([
|
|
363
|
+
property({ attribute: false })
|
|
364
|
+
], HelixHeadlessFileInput.prototype, "transformFiles", void 0);
|
|
305
365
|
__decorate([
|
|
306
366
|
property({ attribute: 'trigger-label' })
|
|
307
367
|
], HelixHeadlessFileInput.prototype, "triggerLabel", void 0);
|
|
308
368
|
__decorate([
|
|
309
369
|
property({ attribute: false })
|
|
310
370
|
], HelixHeadlessFileInput.prototype, "validate", void 0);
|
|
371
|
+
__decorate([
|
|
372
|
+
state()
|
|
373
|
+
], HelixHeadlessFileInput.prototype, "removeIcon", void 0);
|
|
311
374
|
__decorate([
|
|
312
375
|
state()
|
|
313
376
|
], HelixHeadlessFileInput.prototype, "dropping", void 0);
|
|
@@ -27,7 +27,8 @@ export declare const accepts: (file: File, accept: string) => boolean;
|
|
|
27
27
|
/**
|
|
28
28
|
* Screens arriving files against the rules, given the files the field keeps.
|
|
29
29
|
* `kept` is what the field holds afterward: the files it keeps and the
|
|
30
|
-
* arrivals it took, or for a single-file field the last arrival it took
|
|
30
|
+
* arrivals it took, or for a single-file field the last arrival it took, and
|
|
31
|
+
* the file it keeps when it took none.
|
|
31
32
|
*/
|
|
32
33
|
export declare const screenFiles: (arriving: File[], keeping: File[], rules: ScreenRules) => {
|
|
33
34
|
kept: File[];
|
|
@@ -66,8 +66,13 @@ import '../../menu/index.js';
|
|
|
66
66
|
* @csspart divider-content - The content set into the line.
|
|
67
67
|
* @csspart divider-line - The line itself.
|
|
68
68
|
* @csspart entry - One row: a field, its comparison, an operator, or a value.
|
|
69
|
+
* @csspart entry-end - The trailing column of a row, which holds its shortcut.
|
|
69
70
|
* @csspart entry-item - The row itself.
|
|
70
71
|
* @csspart entry-mark - The mark at the end of a row: a check mark on a chosen value, and a caret on a field.
|
|
72
|
+
* @csspart entry-shortcut - The key drawn for a row's shortcut. The filter menu sets none, so it renders only where a subclass does.
|
|
73
|
+
* @csspart entry-shortcut-kbd - The key inside it.
|
|
74
|
+
* @csspart entry-shortcut-key - One key of the shortcut's chord.
|
|
75
|
+
* @csspart entry-shortcut-separator - The `+` between two keys of the shortcut, where the platform writes one.
|
|
71
76
|
* @csspart entry-start - The leading column.
|
|
72
77
|
* @csspart menu - The menu the fields are offered in.
|
|
73
78
|
* @csspart menu-back - The button that goes back from a field's page.
|
|
@@ -137,7 +137,10 @@ let HelixHeadlessFilterMenu = class HelixHeadlessFilterMenu extends HelixElement
|
|
|
137
137
|
const offered = using?.arity === 'none' ? [] : values;
|
|
138
138
|
return html `<${item}
|
|
139
139
|
part="entry"
|
|
140
|
-
exportparts="item: entry-item, mark: entry-mark,
|
|
140
|
+
exportparts="end: entry-end, item: entry-item, mark: entry-mark, shortcut: entry-shortcut,
|
|
141
|
+
shortcut-kbd: entry-shortcut-kbd,
|
|
142
|
+
shortcut-key: entry-shortcut-key, shortcut-separator: entry-shortcut-separator,
|
|
143
|
+
start: entry-start"
|
|
141
144
|
data-facet="field"
|
|
142
145
|
data-field=${name}
|
|
143
146
|
>
|
|
@@ -145,7 +148,10 @@ let HelixHeadlessFilterMenu = class HelixHeadlessFilterMenu extends HelixElement
|
|
|
145
148
|
${operators.length > 1
|
|
146
149
|
? html `<${item}
|
|
147
150
|
part="entry"
|
|
148
|
-
exportparts="item: entry-item, mark: entry-mark,
|
|
151
|
+
exportparts="end: entry-end, item: entry-item, mark: entry-mark, shortcut: entry-shortcut,
|
|
152
|
+
shortcut-kbd: entry-shortcut-kbd,
|
|
153
|
+
shortcut-key: entry-shortcut-key, shortcut-separator: entry-shortcut-separator,
|
|
154
|
+
start: entry-start"
|
|
149
155
|
slot="submenu"
|
|
150
156
|
data-facet="comparison"
|
|
151
157
|
data-field=${name}
|
|
@@ -153,7 +159,10 @@ let HelixHeadlessFilterMenu = class HelixHeadlessFilterMenu extends HelixElement
|
|
|
153
159
|
${using?.label ?? ''}
|
|
154
160
|
${operators.map((operator) => html `<${item}
|
|
155
161
|
part="entry"
|
|
156
|
-
exportparts="item: entry-item, mark: entry-mark,
|
|
162
|
+
exportparts="end: entry-end, item: entry-item, mark: entry-mark, shortcut: entry-shortcut,
|
|
163
|
+
shortcut-kbd: entry-shortcut-kbd,
|
|
164
|
+
shortcut-key: entry-shortcut-key, shortcut-separator: entry-shortcut-separator,
|
|
165
|
+
start: entry-start"
|
|
157
166
|
slot="submenu"
|
|
158
167
|
checkable
|
|
159
168
|
exclusive
|
|
@@ -175,7 +184,10 @@ let HelixHeadlessFilterMenu = class HelixHeadlessFilterMenu extends HelixElement
|
|
|
175
184
|
: nothing}
|
|
176
185
|
${offered.map((option) => html `<${item}
|
|
177
186
|
part="entry"
|
|
178
|
-
exportparts="item: entry-item, mark: entry-mark,
|
|
187
|
+
exportparts="end: entry-end, item: entry-item, mark: entry-mark, shortcut: entry-shortcut,
|
|
188
|
+
shortcut-kbd: entry-shortcut-kbd,
|
|
189
|
+
shortcut-key: entry-shortcut-key, shortcut-separator: entry-shortcut-separator,
|
|
190
|
+
start: entry-start"
|
|
179
191
|
slot="submenu"
|
|
180
192
|
checkable
|
|
181
193
|
?exclusive=${using?.arity === 'one'}
|