@fusion.dev/helix-headless 0.0.0-dev
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/LICENSE +21 -0
- package/custom-elements.json +75202 -0
- package/dist/accordion/index.d.ts +2 -0
- package/dist/accordion/index.js +2 -0
- package/dist/accordion/item/accordion-item.d.ts +141 -0
- package/dist/accordion/item/accordion-item.js +214 -0
- package/dist/accordion/root/accordion-root.d.ts +57 -0
- package/dist/accordion/root/accordion-root.js +96 -0
- package/dist/announcement/index.d.ts +1 -0
- package/dist/announcement/index.js +1 -0
- package/dist/announcement/root/announcement-root.d.ts +106 -0
- package/dist/announcement/root/announcement-root.js +144 -0
- package/dist/app-header/index.d.ts +1 -0
- package/dist/app-header/index.js +1 -0
- package/dist/app-header/root/app-header-root.d.ts +113 -0
- package/dist/app-header/root/app-header-root.js +147 -0
- package/dist/avatar/group/avatar-group.d.ts +116 -0
- package/dist/avatar/group/avatar-group.js +136 -0
- package/dist/avatar/index.d.ts +2 -0
- package/dist/avatar/index.js +2 -0
- package/dist/avatar/root/avatar-root.d.ts +71 -0
- package/dist/avatar/root/avatar-root.js +147 -0
- package/dist/badge/index.d.ts +1 -0
- package/dist/badge/index.js +1 -0
- package/dist/badge/root/badge-root.d.ts +61 -0
- package/dist/badge/root/badge-root.js +121 -0
- package/dist/bar-chart/index.d.ts +1 -0
- package/dist/bar-chart/index.js +1 -0
- package/dist/bar-chart/root/bar-chart-root.d.ts +266 -0
- package/dist/bar-chart/root/bar-chart-root.js +515 -0
- package/dist/blockquote/index.d.ts +1 -0
- package/dist/blockquote/index.js +1 -0
- package/dist/blockquote/root/blockquote-root.d.ts +51 -0
- package/dist/blockquote/root/blockquote-root.js +84 -0
- package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +104 -0
- package/dist/breadcrumbs/breadcrumb/breadcrumb.js +137 -0
- package/dist/breadcrumbs/index.d.ts +2 -0
- package/dist/breadcrumbs/index.js +2 -0
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +77 -0
- package/dist/breadcrumbs/root/breadcrumbs-root.js +94 -0
- package/dist/button/index.d.ts +1 -0
- package/dist/button/index.js +1 -0
- package/dist/button/root/button-root.d.ts +251 -0
- package/dist/button/root/button-root.js +401 -0
- package/dist/button-group/index.d.ts +1 -0
- package/dist/button-group/index.js +1 -0
- package/dist/button-group/root/button-group-root.d.ts +62 -0
- package/dist/button-group/root/button-group-root.js +62 -0
- package/dist/callout/index.d.ts +1 -0
- package/dist/callout/index.js +1 -0
- package/dist/callout/root/callout-root.d.ts +72 -0
- package/dist/callout/root/callout-root.js +90 -0
- package/dist/card/index.d.ts +1 -0
- package/dist/card/index.js +1 -0
- package/dist/card/root/card-root.d.ts +54 -0
- package/dist/card/root/card-root.js +71 -0
- package/dist/carousel/index.d.ts +1 -0
- package/dist/carousel/index.js +1 -0
- package/dist/carousel/root/carousel-root.d.ts +399 -0
- package/dist/carousel/root/carousel-root.js +723 -0
- package/dist/chat/composer/chat-composer.d.ts +160 -0
- package/dist/chat/composer/chat-composer.js +273 -0
- package/dist/chat/index.d.ts +3 -0
- package/dist/chat/index.js +3 -0
- package/dist/chat/message/chat-message.d.ts +170 -0
- package/dist/chat/message/chat-message.js +271 -0
- package/dist/chat/root/chat-root.d.ts +216 -0
- package/dist/chat/root/chat-root.js +389 -0
- package/dist/checkbox/index.d.ts +1 -0
- package/dist/checkbox/index.js +1 -0
- package/dist/checkbox/root/checkbox-root.d.ts +108 -0
- package/dist/checkbox/root/checkbox-root.js +207 -0
- package/dist/checkbox-group/index.d.ts +1 -0
- package/dist/checkbox-group/index.js +1 -0
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +155 -0
- package/dist/checkbox-group/root/checkbox-group-root.js +293 -0
- package/dist/code/index.d.ts +1 -0
- package/dist/code/index.js +1 -0
- package/dist/code/root/code-root.d.ts +36 -0
- package/dist/code/root/code-root.js +43 -0
- package/dist/code-block/index.d.ts +1 -0
- package/dist/code-block/index.js +1 -0
- package/dist/code-block/root/code-block-root.d.ts +112 -0
- package/dist/code-block/root/code-block-root.js +155 -0
- package/dist/color-input/index.d.ts +1 -0
- package/dist/color-input/index.js +1 -0
- package/dist/color-input/root/color-input-root.d.ts +227 -0
- package/dist/color-input/root/color-input-root.js +456 -0
- package/dist/color-picker/color.d.ts +74 -0
- package/dist/color-picker/color.js +238 -0
- package/dist/color-picker/index.d.ts +2 -0
- package/dist/color-picker/index.js +2 -0
- package/dist/color-picker/root/color-picker-root.d.ts +303 -0
- package/dist/color-picker/root/color-picker-root.js +576 -0
- package/dist/combobox/index.d.ts +1 -0
- package/dist/combobox/index.js +1 -0
- package/dist/combobox/root/combobox-root.d.ts +396 -0
- package/dist/combobox/root/combobox-root.js +808 -0
- package/dist/command/index.d.ts +1 -0
- package/dist/command/index.js +1 -0
- package/dist/command/root/command-root.d.ts +166 -0
- package/dist/command/root/command-root.js +353 -0
- package/dist/copy-button/index.d.ts +1 -0
- package/dist/copy-button/index.js +1 -0
- package/dist/copy-button/root/copy-button-root.d.ts +154 -0
- package/dist/copy-button/root/copy-button-root.js +225 -0
- package/dist/data-table/index.d.ts +2 -0
- package/dist/data-table/index.js +2 -0
- package/dist/data-table/root/data-table-root.d.ts +392 -0
- package/dist/data-table/root/data-table-root.js +729 -0
- package/dist/data-table/root/order.d.ts +116 -0
- package/dist/data-table/root/order.js +175 -0
- package/dist/date-input/index.d.ts +1 -0
- package/dist/date-input/index.js +1 -0
- package/dist/date-input/root/date-input-root.d.ts +361 -0
- package/dist/date-input/root/date-input-root.js +791 -0
- package/dist/date-picker/index.d.ts +1 -0
- package/dist/date-picker/index.js +1 -0
- package/dist/date-picker/root/date-picker-root.d.ts +361 -0
- package/dist/date-picker/root/date-picker-root.js +837 -0
- package/dist/dialog/index.d.ts +1 -0
- package/dist/dialog/index.js +1 -0
- package/dist/dialog/root/dialog-root.d.ts +185 -0
- package/dist/dialog/root/dialog-root.js +319 -0
- package/dist/divider/index.d.ts +1 -0
- package/dist/divider/index.js +1 -0
- package/dist/divider/root/divider-root.d.ts +68 -0
- package/dist/divider/root/divider-root.js +116 -0
- package/dist/donut-chart/index.d.ts +1 -0
- package/dist/donut-chart/index.js +1 -0
- package/dist/donut-chart/root/donut-chart-root.d.ts +209 -0
- package/dist/donut-chart/root/donut-chart-root.js +395 -0
- package/dist/drawer/index.d.ts +1 -0
- package/dist/drawer/index.js +1 -0
- package/dist/drawer/root/drawer-root.d.ts +144 -0
- package/dist/drawer/root/drawer-root.js +222 -0
- package/dist/drilldown/index.d.ts +2 -0
- package/dist/drilldown/index.js +2 -0
- package/dist/drilldown/item/drilldown-item.d.ts +87 -0
- package/dist/drilldown/item/drilldown-item.js +152 -0
- package/dist/drilldown/root/drilldown-root.d.ts +115 -0
- package/dist/drilldown/root/drilldown-root.js +263 -0
- package/dist/element-events.generated.d.ts +1 -0
- package/dist/element-events.generated.js +125 -0
- package/dist/empty/index.d.ts +1 -0
- package/dist/empty/index.js +1 -0
- package/dist/empty/root/empty-root.d.ts +47 -0
- package/dist/empty/root/empty-root.js +68 -0
- package/dist/file-input/index.d.ts +1 -0
- package/dist/file-input/index.js +1 -0
- package/dist/file-input/root/file-input-root.d.ts +196 -0
- package/dist/file-input/root/file-input-root.js +488 -0
- package/dist/format-date/index.d.ts +1 -0
- package/dist/format-date/index.js +1 -0
- package/dist/format-date/root/format-date-root.d.ts +151 -0
- package/dist/format-date/root/format-date-root.js +266 -0
- package/dist/heatmap/index.d.ts +2 -0
- package/dist/heatmap/index.js +2 -0
- package/dist/heatmap/root/buckets.d.ts +62 -0
- package/dist/heatmap/root/buckets.js +85 -0
- package/dist/heatmap/root/heatmap-root.d.ts +330 -0
- package/dist/heatmap/root/heatmap-root.js +526 -0
- package/dist/icon/index.d.ts +1 -0
- package/dist/icon/index.js +1 -0
- package/dist/icon/root/icon-root.d.ts +53 -0
- package/dist/icon/root/icon-root.js +93 -0
- package/dist/icon-button/index.d.ts +1 -0
- package/dist/icon-button/index.js +1 -0
- package/dist/icon-button/root/icon-button-root.d.ts +40 -0
- package/dist/icon-button/root/icon-button-root.js +46 -0
- package/dist/image/index.d.ts +1 -0
- package/dist/image/index.js +1 -0
- package/dist/image/root/image-root.d.ts +213 -0
- package/dist/image/root/image-root.js +335 -0
- package/dist/index.d.ts +99 -0
- package/dist/index.js +99 -0
- package/dist/input/index.d.ts +1 -0
- package/dist/input/index.js +1 -0
- package/dist/input/root/input-root.d.ts +281 -0
- package/dist/input/root/input-root.js +472 -0
- package/dist/kbd/index.d.ts +1 -0
- package/dist/kbd/index.js +1 -0
- package/dist/kbd/root/kbd-root.d.ts +98 -0
- package/dist/kbd/root/kbd-root.js +230 -0
- package/dist/legend/index.d.ts +1 -0
- package/dist/legend/index.js +1 -0
- package/dist/legend/root/legend-root.d.ts +83 -0
- package/dist/legend/root/legend-root.js +125 -0
- package/dist/line-chart/index.d.ts +1 -0
- package/dist/line-chart/index.js +1 -0
- package/dist/line-chart/root/line-chart-root.d.ts +238 -0
- package/dist/line-chart/root/line-chart-root.js +365 -0
- package/dist/list/index.d.ts +2 -0
- package/dist/list/index.js +2 -0
- package/dist/list/item/list-item.d.ts +95 -0
- package/dist/list/item/list-item.js +148 -0
- package/dist/list/root/list-root.d.ts +72 -0
- package/dist/list/root/list-root.js +61 -0
- package/dist/listbox/index.d.ts +1 -0
- package/dist/listbox/index.js +1 -0
- package/dist/listbox/root/listbox-root.d.ts +357 -0
- package/dist/listbox/root/listbox-root.js +890 -0
- package/dist/loader/index.d.ts +1 -0
- package/dist/loader/index.js +1 -0
- package/dist/loader/root/loader-root.d.ts +52 -0
- package/dist/loader/root/loader-root.js +74 -0
- package/dist/megamenu/index.d.ts +1 -0
- package/dist/megamenu/index.js +1 -0
- package/dist/megamenu/root/megamenu-root.d.ts +254 -0
- package/dist/megamenu/root/megamenu-root.js +526 -0
- package/dist/menu/index.d.ts +2 -0
- package/dist/menu/index.js +2 -0
- package/dist/menu/item/menu-item.d.ts +231 -0
- package/dist/menu/item/menu-item.js +405 -0
- package/dist/menu/root/menu-root.d.ts +158 -0
- package/dist/menu/root/menu-root.js +422 -0
- package/dist/meter/index.d.ts +1 -0
- package/dist/meter/index.js +1 -0
- package/dist/meter/root/meter-root.d.ts +234 -0
- package/dist/meter/root/meter-root.js +316 -0
- package/dist/navigation/index.d.ts +1 -0
- package/dist/navigation/index.js +1 -0
- package/dist/navigation/root/navigation-root.d.ts +55 -0
- package/dist/navigation/root/navigation-root.js +130 -0
- package/dist/notifications/index.d.ts +2 -0
- package/dist/notifications/index.js +2 -0
- package/dist/notifications/notification/notification.d.ts +181 -0
- package/dist/notifications/notification/notification.js +305 -0
- package/dist/notifications/root/notifications-root.d.ts +168 -0
- package/dist/notifications/root/notifications-root.js +291 -0
- package/dist/number-input/index.d.ts +1 -0
- package/dist/number-input/index.js +1 -0
- package/dist/number-input/root/number-input-root.d.ts +282 -0
- package/dist/number-input/root/number-input-root.js +592 -0
- package/dist/option/group/option-group.d.ts +38 -0
- package/dist/option/group/option-group.js +58 -0
- package/dist/option/index.d.ts +2 -0
- package/dist/option/index.js +2 -0
- package/dist/option/root/option-root.d.ts +194 -0
- package/dist/option/root/option-root.js +247 -0
- package/dist/outline/index.d.ts +1 -0
- package/dist/outline/index.js +1 -0
- package/dist/outline/root/outline-root.d.ts +237 -0
- package/dist/outline/root/outline-root.js +519 -0
- package/dist/pagination/index.d.ts +3 -0
- package/dist/pagination/index.js +3 -0
- package/dist/pagination/root/pagination-root.d.ts +390 -0
- package/dist/pagination/root/pagination-root.js +695 -0
- package/dist/pagination/size/pagination-size.d.ts +127 -0
- package/dist/pagination/size/pagination-size.js +232 -0
- package/dist/pagination/summary/pagination-summary.d.ts +90 -0
- package/dist/pagination/summary/pagination-summary.js +145 -0
- package/dist/pin-input/index.d.ts +1 -0
- package/dist/pin-input/index.js +1 -0
- package/dist/pin-input/root/pin-input-root.d.ts +292 -0
- package/dist/pin-input/root/pin-input-root.js +553 -0
- package/dist/popover/index.d.ts +1 -0
- package/dist/popover/index.js +1 -0
- package/dist/popover/root/popover-root.d.ts +108 -0
- package/dist/popover/root/popover-root.js +231 -0
- package/dist/progress/index.d.ts +1 -0
- package/dist/progress/index.js +1 -0
- package/dist/progress/root/progress-root.d.ts +125 -0
- package/dist/progress/root/progress-root.js +212 -0
- package/dist/qr-code/index.d.ts +1 -0
- package/dist/qr-code/index.js +1 -0
- package/dist/qr-code/root/qr-code-root.d.ts +93 -0
- package/dist/qr-code/root/qr-code-root.js +233 -0
- package/dist/quote/index.d.ts +1 -0
- package/dist/quote/index.js +1 -0
- package/dist/quote/root/quote-root.d.ts +36 -0
- package/dist/quote/root/quote-root.js +50 -0
- package/dist/radio/group/radio-group.d.ts +84 -0
- package/dist/radio/group/radio-group.js +170 -0
- package/dist/radio/index.d.ts +2 -0
- package/dist/radio/index.js +2 -0
- package/dist/radio/root/radio-root.d.ts +102 -0
- package/dist/radio/root/radio-root.js +151 -0
- package/dist/rating/index.d.ts +1 -0
- package/dist/rating/index.js +1 -0
- package/dist/rating/root/rating-root.d.ts +242 -0
- package/dist/rating/root/rating-root.js +484 -0
- package/dist/scroll-area/index.d.ts +1 -0
- package/dist/scroll-area/index.js +1 -0
- package/dist/scroll-area/root/scroll-area-root.d.ts +96 -0
- package/dist/scroll-area/root/scroll-area-root.js +215 -0
- package/dist/select/index.d.ts +1 -0
- package/dist/select/index.js +1 -0
- package/dist/select/root/select-root.d.ts +170 -0
- package/dist/select/root/select-root.js +419 -0
- package/dist/skeleton/index.d.ts +1 -0
- package/dist/skeleton/index.js +1 -0
- package/dist/skeleton/root/skeleton-root.d.ts +31 -0
- package/dist/skeleton/root/skeleton-root.js +42 -0
- package/dist/slider/index.d.ts +1 -0
- package/dist/slider/index.js +1 -0
- package/dist/slider/root/slider-root.d.ts +235 -0
- package/dist/slider/root/slider-root.js +488 -0
- package/dist/sparkline/index.d.ts +1 -0
- package/dist/sparkline/index.js +1 -0
- package/dist/sparkline/root/sparkline-root.d.ts +147 -0
- package/dist/sparkline/root/sparkline-root.js +278 -0
- package/dist/speed-dial/index.d.ts +2 -0
- package/dist/speed-dial/index.js +2 -0
- package/dist/speed-dial/item/speed-dial-item.d.ts +71 -0
- package/dist/speed-dial/item/speed-dial-item.js +113 -0
- package/dist/speed-dial/root/speed-dial-root.d.ts +122 -0
- package/dist/speed-dial/root/speed-dial-root.js +251 -0
- package/dist/splitter/index.d.ts +1 -0
- package/dist/splitter/index.js +1 -0
- package/dist/splitter/root/splitter-root.d.ts +491 -0
- package/dist/splitter/root/splitter-root.js +1030 -0
- package/dist/stat/group/stat-group.d.ts +30 -0
- package/dist/stat/group/stat-group.js +47 -0
- package/dist/stat/index.d.ts +2 -0
- package/dist/stat/index.js +2 -0
- package/dist/stat/root/stat-root.d.ts +62 -0
- package/dist/stat/root/stat-root.js +51 -0
- package/dist/steps/index.d.ts +2 -0
- package/dist/steps/index.js +2 -0
- package/dist/steps/root/steps-root.d.ts +110 -0
- package/dist/steps/root/steps-root.js +130 -0
- package/dist/steps/step/step.d.ts +139 -0
- package/dist/steps/step/step.js +215 -0
- package/dist/switch/index.d.ts +1 -0
- package/dist/switch/index.js +1 -0
- package/dist/switch/root/switch-root.d.ts +74 -0
- package/dist/switch/root/switch-root.js +153 -0
- package/dist/table/cell/table-cell.d.ts +34 -0
- package/dist/table/cell/table-cell.js +52 -0
- package/dist/table/column/table-column.d.ts +165 -0
- package/dist/table/column/table-column.js +222 -0
- package/dist/table/index.d.ts +4 -0
- package/dist/table/index.js +4 -0
- package/dist/table/root/table-root.d.ts +98 -0
- package/dist/table/root/table-root.js +161 -0
- package/dist/table/row/table-row.d.ts +27 -0
- package/dist/table/row/table-row.js +42 -0
- package/dist/tabs/index.d.ts +3 -0
- package/dist/tabs/index.js +3 -0
- package/dist/tabs/panel/tab-panel.d.ts +67 -0
- package/dist/tabs/panel/tab-panel.js +98 -0
- package/dist/tabs/root/tabs-root.d.ts +123 -0
- package/dist/tabs/root/tabs-root.js +217 -0
- package/dist/tabs/tab/tab.d.ts +64 -0
- package/dist/tabs/tab/tab.js +116 -0
- package/dist/tag/index.d.ts +1 -0
- package/dist/tag/index.js +1 -0
- package/dist/tag/root/tag-root.d.ts +41 -0
- package/dist/tag/root/tag-root.js +67 -0
- package/dist/textarea/index.d.ts +1 -0
- package/dist/textarea/index.js +1 -0
- package/dist/textarea/root/textarea-root.d.ts +215 -0
- package/dist/textarea/root/textarea-root.js +380 -0
- package/dist/time-input/index.d.ts +1 -0
- package/dist/time-input/index.js +1 -0
- package/dist/time-input/root/time-input-root.d.ts +322 -0
- package/dist/time-input/root/time-input-root.js +661 -0
- package/dist/time-picker/index.d.ts +1 -0
- package/dist/time-picker/index.js +1 -0
- package/dist/time-picker/root/time-picker-root.d.ts +380 -0
- package/dist/time-picker/root/time-picker-root.js +669 -0
- package/dist/timeline/index.d.ts +2 -0
- package/dist/timeline/index.js +2 -0
- package/dist/timeline/item/timeline-item.d.ts +81 -0
- package/dist/timeline/item/timeline-item.js +128 -0
- package/dist/timeline/root/timeline-root.d.ts +52 -0
- package/dist/timeline/root/timeline-root.js +72 -0
- package/dist/toast/index.d.ts +2 -0
- package/dist/toast/index.js +2 -0
- package/dist/toast/item/toast-item.d.ts +183 -0
- package/dist/toast/item/toast-item.js +345 -0
- package/dist/toast/root/toast-root.d.ts +72 -0
- package/dist/toast/root/toast-root.js +87 -0
- package/dist/toggle/group/toggle-group.d.ts +140 -0
- package/dist/toggle/group/toggle-group.js +278 -0
- package/dist/toggle/index.d.ts +2 -0
- package/dist/toggle/index.js +2 -0
- package/dist/toggle/root/toggle-root.d.ts +99 -0
- package/dist/toggle/root/toggle-root.js +146 -0
- package/dist/toolbar/index.d.ts +1 -0
- package/dist/toolbar/index.js +1 -0
- package/dist/toolbar/root/toolbar-root.d.ts +105 -0
- package/dist/toolbar/root/toolbar-root.js +260 -0
- package/dist/tooltip/index.d.ts +1 -0
- package/dist/tooltip/index.js +1 -0
- package/dist/tooltip/root/tooltip-root.d.ts +388 -0
- package/dist/tooltip/root/tooltip-root.js +707 -0
- package/dist/tour/index.d.ts +2 -0
- package/dist/tour/index.js +2 -0
- package/dist/tour/root/tour-root.d.ts +161 -0
- package/dist/tour/root/tour-root.js +351 -0
- package/dist/tour/stop/tour-stop.d.ts +131 -0
- package/dist/tour/stop/tour-stop.js +249 -0
- package/dist/tree/index.d.ts +2 -0
- package/dist/tree/index.js +2 -0
- package/dist/tree/item/tree-item.d.ts +208 -0
- package/dist/tree/item/tree-item.js +381 -0
- package/dist/tree/root/tree-root.d.ts +88 -0
- package/dist/tree/root/tree-root.js +287 -0
- package/dist/trend/index.d.ts +1 -0
- package/dist/trend/index.js +1 -0
- package/dist/trend/root/trend-root.d.ts +67 -0
- package/dist/trend/root/trend-root.js +106 -0
- package/dist/video/index.d.ts +1 -0
- package/dist/video/index.js +1 -0
- package/dist/video/root/video-root.d.ts +711 -0
- package/dist/video/root/video-root.js +1821 -0
- package/dist/video-playlist/index.d.ts +3 -0
- package/dist/video-playlist/index.js +3 -0
- package/dist/video-playlist/item/video-playlist-item.d.ts +101 -0
- package/dist/video-playlist/item/video-playlist-item.js +162 -0
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +121 -0
- package/dist/video-playlist/menu/video-playlist-menu.js +237 -0
- package/dist/video-playlist/root/video-playlist-root.d.ts +108 -0
- package/dist/video-playlist/root/video-playlist-root.js +218 -0
- package/dist/virtual-list/index.d.ts +1 -0
- package/dist/virtual-list/index.js +1 -0
- package/dist/virtual-list/root/virtual-list-root.d.ts +121 -0
- package/dist/virtual-list/root/virtual-list-root.js +221 -0
- package/jsx.d.ts +49767 -0
- package/package.json +77 -0
- package/svelte.d.ts +129 -0
- package/vue.d.ts +9242 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { customElement, DrilldownController, HelixElement, hostAria, MixinCollection, } from '@fusion.dev/helix-core';
|
|
8
|
+
import { caretLeft } from '@fusion.dev/helix-icons';
|
|
9
|
+
import { html, nothing } from 'lit';
|
|
10
|
+
import { property, state } from 'lit/decorators.js';
|
|
11
|
+
import { unsafeSVG } from 'lit/directives/unsafe-svg.js';
|
|
12
|
+
import { HelixHeadlessDrilldownItem } from '../item/drilldown-item.js';
|
|
13
|
+
/**
|
|
14
|
+
* @summary A stack of pages, one showing at a time, with a way back.
|
|
15
|
+
*
|
|
16
|
+
* @description
|
|
17
|
+
* One panel that changes rather than panels opening beside each other. That is
|
|
18
|
+
* the right shape wherever there is no room for a second column: a phone has
|
|
19
|
+
* none, and a touch screen has no hover to open one with.
|
|
20
|
+
*
|
|
21
|
+
* **Not a `Menu`, and the difference is what it is for rather than how it
|
|
22
|
+
* looks.** A menu is a thing that opens from a trigger and closes when it is
|
|
23
|
+
* done; this is a region that sits where it is put, inside a drawer or a
|
|
24
|
+
* sidebar or a settings panel. `Menu` drills too, through the same controller,
|
|
25
|
+
* because a menu deep enough to need pages wants exactly this behavior without
|
|
26
|
+
* being this component.
|
|
27
|
+
*
|
|
28
|
+
* **Navigation, never a value.** Rows are places to go and commands to run, so
|
|
29
|
+
* nothing here is form-associated and nothing is submitted. A drill-down that
|
|
30
|
+
* reported a value would be a `Listbox` whose options happen to nest, and that
|
|
31
|
+
* is the component to reach for instead.
|
|
32
|
+
*
|
|
33
|
+
* **The tree is the state.** A row that opens a page contains that page, so the
|
|
34
|
+
* stack holds one reference and reads the rest from the DOM. See
|
|
35
|
+
* `DrilldownController`, which is where this behavior lives and which `Menu`
|
|
36
|
+
* shares.
|
|
37
|
+
*
|
|
38
|
+
* @since 0.1.0
|
|
39
|
+
* @status experimental
|
|
40
|
+
* @category navigation
|
|
41
|
+
* @aliases Panel, Nested list, Drill-in
|
|
42
|
+
* @documentation https://helix.fusion.dev/components/drilldown
|
|
43
|
+
*
|
|
44
|
+
* @slot - The rows of the top page.
|
|
45
|
+
*
|
|
46
|
+
* @event {HelixSelectEvent} helix-select - Fired when a row with no page is chosen. Cancelable: refusing it takes the decision and nothing moves.
|
|
47
|
+
*
|
|
48
|
+
* @csspart back - The control that returns one page.
|
|
49
|
+
* @csspart back-mark - The glyph on the back control.
|
|
50
|
+
* @csspart empty - Shown when there are no entries to show.
|
|
51
|
+
* @csspart header - The bar above a page, holding the way back and its name.
|
|
52
|
+
* @csspart loading - Shown while the entries are still on their way.
|
|
53
|
+
* @csspart page - The region the rows are in.
|
|
54
|
+
* @csspart title - The name of the page showing.
|
|
55
|
+
*/
|
|
56
|
+
let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollection(HelixElement) {
|
|
57
|
+
constructor() {
|
|
58
|
+
super(...arguments);
|
|
59
|
+
/**
|
|
60
|
+
* Accessible name for the region.
|
|
61
|
+
*/
|
|
62
|
+
this.label = 'Navigation';
|
|
63
|
+
/**
|
|
64
|
+
* What the control returning from a page reads.
|
|
65
|
+
*/
|
|
66
|
+
this.backLabel = 'Back';
|
|
67
|
+
this.drilldown = new DrilldownController(this, {
|
|
68
|
+
isRow: (element) => 'isDrilldownItem' in element && element.isDrilldownItem === true,
|
|
69
|
+
root: () => [...this.children],
|
|
70
|
+
slot: 'page',
|
|
71
|
+
});
|
|
72
|
+
/* The stop follows the reader. Arrowing to a row and tabbing away and back
|
|
73
|
+
should return to where they were, not to the top of the page. */
|
|
74
|
+
this.handleFocusIn = (event) => {
|
|
75
|
+
const item = this.drilldown.rows.find((row) => row.contains(event.target));
|
|
76
|
+
if (item && !item.disabled) {
|
|
77
|
+
for (const row of this.drilldown.rows) {
|
|
78
|
+
row.focusable = row === item;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
this.handleSelect = (event) => {
|
|
83
|
+
const item = event.target;
|
|
84
|
+
if (!(item instanceof HelixHeadlessDrilldownItem) || !this.items.includes(item)) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
/* A row with a page drills rather than announcing. The event is stopped so
|
|
88
|
+
a consumer listening for a choice does not hear navigation as one: going
|
|
89
|
+
somewhere and choosing something are different acts, and a consumer that
|
|
90
|
+
had to tell them apart would be doing the stack's job. */
|
|
91
|
+
if (this.drilldown.hasPage(item)) {
|
|
92
|
+
event.stopPropagation();
|
|
93
|
+
this.enter(item);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
this.handleKeydown = (event) => {
|
|
97
|
+
const items = this.items;
|
|
98
|
+
const current = items.findIndex((item) => item.matches(':focus-within'));
|
|
99
|
+
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
|
100
|
+
event.preventDefault();
|
|
101
|
+
const step = event.key === 'ArrowDown' ? 1 : -1;
|
|
102
|
+
const next = (current + step + items.length) % Math.max(items.length, 1);
|
|
103
|
+
items[current === -1 ? 0 : next]?.focusItem();
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (event.key === 'Home' || event.key === 'End') {
|
|
107
|
+
event.preventDefault();
|
|
108
|
+
(event.key === 'Home' ? items[0] : items[items.length - 1])?.focusItem();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
/* Left and Escape both go back, and neither closes anything: this is a
|
|
112
|
+
region rather than an overlay, so there is nothing above it to close. */
|
|
113
|
+
if (event.key === 'ArrowLeft' || event.key === 'Escape') {
|
|
114
|
+
if (this.back()) {
|
|
115
|
+
event.preventDefault();
|
|
116
|
+
event.stopPropagation();
|
|
117
|
+
}
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (event.key === 'ArrowRight' && current !== -1) {
|
|
121
|
+
const item = items[current];
|
|
122
|
+
if (item && this.drilldown.hasPage(item)) {
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
this.enter(item);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/** The rows on the page showing, which is what the keys move over. */
|
|
130
|
+
get items() {
|
|
131
|
+
return this.drilldown.rows.filter((item) => !item.disabled);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Puts the region's one tab stop on the first row of the page showing.
|
|
135
|
+
*
|
|
136
|
+
* Every row rendered at `-1`, so nothing in the region was tab-reachable and
|
|
137
|
+
* the keyboard could not get in at all without a pointer first. One row holds
|
|
138
|
+
* the stop and the arrows move within, which is the roving pattern the
|
|
139
|
+
* toolbar uses and the one a `menu` wants.
|
|
140
|
+
*
|
|
141
|
+
* Called after every update, because the set changes with the page: drilling
|
|
142
|
+
* in replaces the rows outright, and the stop has to land on rows that are
|
|
143
|
+
* actually showing.
|
|
144
|
+
*/
|
|
145
|
+
placeTabStop() {
|
|
146
|
+
const items = this.items;
|
|
147
|
+
const held = items.find((item) => item.focusable);
|
|
148
|
+
const stop = held ?? items[0];
|
|
149
|
+
for (const item of this.drilldown.rows) {
|
|
150
|
+
item.focusable = item === stop;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/** Shows a row's page, and puts focus on the first row of it. */
|
|
154
|
+
enter(item) {
|
|
155
|
+
if (!this.drilldown.enter(item)) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.direction = 'forward';
|
|
159
|
+
this.updateComplete.then(() => this.items[0]?.focusItem());
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Returns one page, and reports whether there was one to return to.
|
|
163
|
+
*
|
|
164
|
+
* Focus lands on the row that opened the page being left, which is why the
|
|
165
|
+
* row is read before going back rather than after: a reader who drills in and
|
|
166
|
+
* comes straight out should be on the row they pressed, not at the top of a
|
|
167
|
+
* list they have already read.
|
|
168
|
+
*/
|
|
169
|
+
back() {
|
|
170
|
+
const leaving = this.drilldown.page;
|
|
171
|
+
if (!this.drilldown.back()) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
this.direction = 'back';
|
|
175
|
+
this.updateComplete.then(() => leaving?.focusItem());
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
connectedCallback() {
|
|
179
|
+
super.connectedCallback();
|
|
180
|
+
/* Capture, and that is not a detail. A consumer listens on this host too,
|
|
181
|
+
so a bubble-phase listener here is a sibling of theirs: `stopPropagation`
|
|
182
|
+
does nothing to another listener on the same node, and whether the
|
|
183
|
+
navigation is swallowed comes down to which was registered first.
|
|
184
|
+
Capture reaches the host before the row it came from, so stopping there
|
|
185
|
+
stops it for everyone, whatever order anybody bound in. */
|
|
186
|
+
this.addEventListener('helix-select', this.handleSelect, true);
|
|
187
|
+
this.addEventListener('keydown', this.handleKeydown);
|
|
188
|
+
this.addEventListener('focusin', this.handleFocusIn);
|
|
189
|
+
}
|
|
190
|
+
disconnectedCallback() {
|
|
191
|
+
super.disconnectedCallback();
|
|
192
|
+
this.removeEventListener('helix-select', this.handleSelect, true);
|
|
193
|
+
this.removeEventListener('keydown', this.handleKeydown);
|
|
194
|
+
this.removeEventListener('focusin', this.handleFocusIn);
|
|
195
|
+
}
|
|
196
|
+
willUpdate(changed) {
|
|
197
|
+
super.willUpdate(changed);
|
|
198
|
+
hostAria(this.internals, { label: this.label, role: 'menu' });
|
|
199
|
+
}
|
|
200
|
+
updated(changed) {
|
|
201
|
+
super.updated(changed);
|
|
202
|
+
/* Which rows are on the page showing, written onto the rows themselves
|
|
203
|
+
because only the stack knows: a row cannot see its own depth. Client
|
|
204
|
+
only, since the server has no tree to walk. */
|
|
205
|
+
const page = this.drilldown.page;
|
|
206
|
+
for (const child of this.children) {
|
|
207
|
+
if (!(child instanceof HelixHeadlessDrilldownItem)) {
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
this.mark(child, page, page === null);
|
|
211
|
+
}
|
|
212
|
+
this.placeTabStop();
|
|
213
|
+
this.toggleAttribute('data-drilled', !this.drilldown.atRoot);
|
|
214
|
+
if (this.direction === undefined) {
|
|
215
|
+
this.removeAttribute('data-direction');
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
this.setAttribute('data-direction', this.direction);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/** Walks the tree marking which rows are on the page showing. */
|
|
222
|
+
mark(item, page, onPage) {
|
|
223
|
+
item.onPage = onPage;
|
|
224
|
+
item.showingPage = item === page;
|
|
225
|
+
for (const child of item.children) {
|
|
226
|
+
if (child instanceof HelixHeadlessDrilldownItem && child.slot === 'page') {
|
|
227
|
+
this.mark(child, page, item === page);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
render() {
|
|
232
|
+
return html `${this.drilldown.atRoot
|
|
233
|
+
? ''
|
|
234
|
+
: html `<div part="header">
|
|
235
|
+
<button part="back" type="button" aria-label=${this.backLabel} @click=${() => this.back()}>
|
|
236
|
+
<svg part="back-mark" fill="currentColor" viewBox=${caretLeft.viewBox} aria-hidden="true">
|
|
237
|
+
${unsafeSVG(caretLeft.content)}
|
|
238
|
+
</svg>
|
|
239
|
+
</button>
|
|
240
|
+
<span part="title">${this.drilldown.label}</span>
|
|
241
|
+
</div>`}
|
|
242
|
+
<div aria-busy=${this.loading ? 'true' : nothing} part="page">
|
|
243
|
+
<slot @slotchange=${(event) => this.countRows(event)}></slot>
|
|
244
|
+
${this.renderStatus(this.hasRows)}
|
|
245
|
+
</div>`;
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
__decorate([
|
|
249
|
+
property()
|
|
250
|
+
/* Not "Menu", which is what it was: this component's own description is built
|
|
251
|
+
around not being one, and a default accessible name is the one place that
|
|
252
|
+
claim reaches a reader. */
|
|
253
|
+
], HelixHeadlessDrilldown.prototype, "label", void 0);
|
|
254
|
+
__decorate([
|
|
255
|
+
property({ attribute: 'back-label' })
|
|
256
|
+
], HelixHeadlessDrilldown.prototype, "backLabel", void 0);
|
|
257
|
+
__decorate([
|
|
258
|
+
state()
|
|
259
|
+
], HelixHeadlessDrilldown.prototype, "direction", void 0);
|
|
260
|
+
HelixHeadlessDrilldown = __decorate([
|
|
261
|
+
customElement('helix-headless-drilldown')
|
|
262
|
+
], HelixHeadlessDrilldown);
|
|
263
|
+
export { HelixHeadlessDrilldown };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/* Generated by `bun run element-events` from this package's manifest. Do not edit.
|
|
2
|
+
*
|
|
3
|
+
* Which events each tag dispatches, registered so the React prop audit can tell
|
|
4
|
+
* a handler on the wrong element from one on the right one. See
|
|
5
|
+
* `helix/core/src/events/element-events.ts`. */
|
|
6
|
+
import { registerElementEvents } from '@fusion.dev/helix-core';
|
|
7
|
+
registerElementEvents({
|
|
8
|
+
'helix-headless-accordion-item': ['helix-before-close', 'helix-before-open', 'toggle'],
|
|
9
|
+
'helix-headless-announcement': ['helix-dismiss'],
|
|
10
|
+
'helix-headless-app-header': ['helix-scrolled'],
|
|
11
|
+
'helix-headless-avatar': ['error', 'load'],
|
|
12
|
+
'helix-headless-carousel': ['helix-select'],
|
|
13
|
+
'helix-headless-chat': ['helix-before-pin'],
|
|
14
|
+
'helix-headless-chat-composer': ['helix-send'],
|
|
15
|
+
'helix-headless-chat-message': ['helix-send'],
|
|
16
|
+
'helix-headless-checkbox': ['change', 'helix-before-toggle', 'input'],
|
|
17
|
+
'helix-headless-checkbox-group': ['change', 'helix-before-change', 'input'],
|
|
18
|
+
'helix-headless-color-input': [
|
|
19
|
+
'change',
|
|
20
|
+
'helix-before-change',
|
|
21
|
+
'helix-before-close',
|
|
22
|
+
'helix-before-open',
|
|
23
|
+
'input',
|
|
24
|
+
'toggle',
|
|
25
|
+
],
|
|
26
|
+
'helix-headless-color-picker': [
|
|
27
|
+
'change',
|
|
28
|
+
'helix-before-change',
|
|
29
|
+
'helix-copy',
|
|
30
|
+
'helix-sample-end',
|
|
31
|
+
'helix-sample-start',
|
|
32
|
+
'input',
|
|
33
|
+
],
|
|
34
|
+
'helix-headless-combobox': [
|
|
35
|
+
'change',
|
|
36
|
+
'helix-before-change',
|
|
37
|
+
'helix-before-close',
|
|
38
|
+
'helix-before-open',
|
|
39
|
+
'helix-create',
|
|
40
|
+
'input',
|
|
41
|
+
'toggle',
|
|
42
|
+
],
|
|
43
|
+
'helix-headless-command': ['helix-before-close', 'helix-before-open', 'helix-select', 'toggle'],
|
|
44
|
+
'helix-headless-copy-button': ['helix-copy'],
|
|
45
|
+
'helix-headless-data-table': ['helix-filter', 'helix-navigate', 'helix-sort'],
|
|
46
|
+
'helix-headless-date-input': [
|
|
47
|
+
'change',
|
|
48
|
+
'helix-before-change',
|
|
49
|
+
'helix-before-close',
|
|
50
|
+
'helix-before-open',
|
|
51
|
+
'input',
|
|
52
|
+
'toggle',
|
|
53
|
+
],
|
|
54
|
+
'helix-headless-date-picker': ['change', 'helix-before-change', 'helix-navigate', 'input'],
|
|
55
|
+
'helix-headless-dialog': ['close', 'helix-before-close', 'helix-before-open', 'toggle'],
|
|
56
|
+
'helix-headless-drawer': ['close', 'helix-before-close', 'helix-before-open', 'toggle'],
|
|
57
|
+
'helix-headless-drilldown': ['helix-select'],
|
|
58
|
+
'helix-headless-drilldown-item': ['helix-select'],
|
|
59
|
+
'helix-headless-file-input': ['change', 'helix-before-change', 'input'],
|
|
60
|
+
'helix-headless-heatmap': ['helix-resize'],
|
|
61
|
+
'helix-headless-image': ['error', 'load'],
|
|
62
|
+
'helix-headless-input': ['change', 'helix-before-change', 'input'],
|
|
63
|
+
'helix-headless-kbd': ['helix-shortcut'],
|
|
64
|
+
'helix-headless-listbox': ['change', 'helix-before-change', 'helix-filter', 'input'],
|
|
65
|
+
'helix-headless-megamenu': ['helix-before-close', 'helix-before-open', 'toggle'],
|
|
66
|
+
'helix-headless-menu': ['helix-before-close', 'helix-before-open', 'helix-select', 'toggle'],
|
|
67
|
+
'helix-headless-menu-item': ['helix-select'],
|
|
68
|
+
'helix-headless-notification': ['helix-dismiss', 'helix-read'],
|
|
69
|
+
'helix-headless-notifications': ['helix-read'],
|
|
70
|
+
'helix-headless-number-input': ['change', 'helix-before-change', 'input'],
|
|
71
|
+
'helix-headless-option': ['helix-select'],
|
|
72
|
+
'helix-headless-outline': ['helix-before-activate'],
|
|
73
|
+
'helix-headless-pagination': ['helix-navigate'],
|
|
74
|
+
'helix-headless-pagination-size': ['helix-before-change'],
|
|
75
|
+
'helix-headless-pin-input': ['change', 'helix-before-change', 'helix-complete', 'input'],
|
|
76
|
+
'helix-headless-popover': ['helix-before-close', 'helix-before-open', 'toggle'],
|
|
77
|
+
'helix-headless-radio': ['helix-select'],
|
|
78
|
+
'helix-headless-radio-group': ['change', 'helix-before-change', 'input'],
|
|
79
|
+
'helix-headless-rating': ['change', 'helix-before-change', 'input'],
|
|
80
|
+
'helix-headless-select': [
|
|
81
|
+
'change',
|
|
82
|
+
'helix-before-change',
|
|
83
|
+
'helix-before-close',
|
|
84
|
+
'helix-before-open',
|
|
85
|
+
'input',
|
|
86
|
+
'toggle',
|
|
87
|
+
],
|
|
88
|
+
'helix-headless-slider': ['change', 'helix-before-change', 'input'],
|
|
89
|
+
'helix-headless-speed-dial': ['helix-before-close', 'helix-before-open', 'toggle'],
|
|
90
|
+
'helix-headless-speed-dial-item': ['helix-select'],
|
|
91
|
+
'helix-headless-splitter': ['helix-before-collapse', 'helix-before-resize'],
|
|
92
|
+
'helix-headless-step': ['helix-select'],
|
|
93
|
+
'helix-headless-steps': ['helix-activate', 'helix-before-activate'],
|
|
94
|
+
'helix-headless-switch': ['change', 'helix-before-toggle', 'input'],
|
|
95
|
+
'helix-headless-tab': ['helix-select'],
|
|
96
|
+
'helix-headless-tabs': ['helix-activate', 'helix-before-activate', 'helix-select'],
|
|
97
|
+
'helix-headless-tag': ['helix-dismiss'],
|
|
98
|
+
'helix-headless-textarea': ['change', 'helix-before-change', 'input'],
|
|
99
|
+
'helix-headless-time-input': [
|
|
100
|
+
'change',
|
|
101
|
+
'helix-before-change',
|
|
102
|
+
'helix-before-close',
|
|
103
|
+
'helix-before-open',
|
|
104
|
+
'input',
|
|
105
|
+
'toggle',
|
|
106
|
+
],
|
|
107
|
+
'helix-headless-time-picker': ['change', 'helix-before-change', 'input'],
|
|
108
|
+
'helix-headless-toast-item': ['helix-dismiss'],
|
|
109
|
+
'helix-headless-toggle': ['helix-select'],
|
|
110
|
+
'helix-headless-toggle-group': ['change', 'helix-before-change', 'helix-select', 'input'],
|
|
111
|
+
'helix-headless-tooltip': ['helix-before-close', 'helix-before-open', 'toggle'],
|
|
112
|
+
'helix-headless-tour': [
|
|
113
|
+
'helix-before-activate',
|
|
114
|
+
'helix-before-close',
|
|
115
|
+
'helix-complete',
|
|
116
|
+
'toggle',
|
|
117
|
+
],
|
|
118
|
+
'helix-headless-tour-stop': ['helix-tour-ask'],
|
|
119
|
+
'helix-headless-tree': ['helix-activate', 'helix-before-activate', 'helix-select'],
|
|
120
|
+
'helix-headless-tree-item': ['helix-before-close', 'helix-before-open', 'helix-select', 'toggle'],
|
|
121
|
+
'helix-headless-video': ['ended', 'helix-next', 'helix-previous', 'pause', 'play'],
|
|
122
|
+
'helix-headless-video-playlist': ['helix-activate', 'helix-before-activate'],
|
|
123
|
+
'helix-headless-video-playlist-item': ['helix-select'],
|
|
124
|
+
'helix-headless-video-playlist-menu': ['helix-select'],
|
|
125
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './root/empty-root.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './root/empty-root.js';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { HelixElement } from '@fusion.dev/helix-core';
|
|
2
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
|
+
/**
|
|
4
|
+
* @summary Says that a region has nothing in it, and what to do about it.
|
|
5
|
+
*
|
|
6
|
+
* @description
|
|
7
|
+
* An empty region with no explanation is indistinguishable from one that failed
|
|
8
|
+
* to load, so this exists to tell the difference: what would be here, and the
|
|
9
|
+
* one action that would put something here.
|
|
10
|
+
*
|
|
11
|
+
* `role="status"` on a polite live region, because an empty view usually
|
|
12
|
+
* arrives in place of content that was being fetched. Announcing it is the only
|
|
13
|
+
* way a screen-reader user learns the search returned nothing, rather than
|
|
14
|
+
* being left waiting.
|
|
15
|
+
*
|
|
16
|
+
* Every region is a bare slot. The reference ships an `empty-state-heading` and
|
|
17
|
+
* an `empty-state-actions` whose only job is to assign themselves a slot on
|
|
18
|
+
* connect, which is a component for something the consumer can write.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.1.0
|
|
21
|
+
* @status stable
|
|
22
|
+
* @category feedback
|
|
23
|
+
* @aliases Placeholder, NoResults, Blank
|
|
24
|
+
* @documentation https://helix.fusion.dev/components/empty
|
|
25
|
+
*
|
|
26
|
+
* @slot - Why, and what to do about it.
|
|
27
|
+
* @slot actions - The way out.
|
|
28
|
+
* @slot heading - What is missing.
|
|
29
|
+
* @slot icon - A mark above the heading.
|
|
30
|
+
*/
|
|
31
|
+
export declare class HelixHeadlessEmpty extends HelixElement {
|
|
32
|
+
/**
|
|
33
|
+
* Whether the state is announced when it appears.
|
|
34
|
+
*
|
|
35
|
+
* On by default: an empty view almost always replaces something that was
|
|
36
|
+
* loading. Turn it off for one that was on the page from the start, which
|
|
37
|
+
* has nothing to announce because nothing changed.
|
|
38
|
+
*/
|
|
39
|
+
noAnnounce: boolean;
|
|
40
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
41
|
+
protected render(): TemplateResult;
|
|
42
|
+
}
|
|
43
|
+
declare global {
|
|
44
|
+
interface HTMLElementTagNameMap {
|
|
45
|
+
'helix-headless-empty': HelixHeadlessEmpty;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { customElement, HelixElement, hostAria } from '@fusion.dev/helix-core';
|
|
8
|
+
import { html } from 'lit';
|
|
9
|
+
import { property } from 'lit/decorators.js';
|
|
10
|
+
/**
|
|
11
|
+
* @summary Says that a region has nothing in it, and what to do about it.
|
|
12
|
+
*
|
|
13
|
+
* @description
|
|
14
|
+
* An empty region with no explanation is indistinguishable from one that failed
|
|
15
|
+
* to load, so this exists to tell the difference: what would be here, and the
|
|
16
|
+
* one action that would put something here.
|
|
17
|
+
*
|
|
18
|
+
* `role="status"` on a polite live region, because an empty view usually
|
|
19
|
+
* arrives in place of content that was being fetched. Announcing it is the only
|
|
20
|
+
* way a screen-reader user learns the search returned nothing, rather than
|
|
21
|
+
* being left waiting.
|
|
22
|
+
*
|
|
23
|
+
* Every region is a bare slot. The reference ships an `empty-state-heading` and
|
|
24
|
+
* an `empty-state-actions` whose only job is to assign themselves a slot on
|
|
25
|
+
* connect, which is a component for something the consumer can write.
|
|
26
|
+
*
|
|
27
|
+
* @since 0.1.0
|
|
28
|
+
* @status stable
|
|
29
|
+
* @category feedback
|
|
30
|
+
* @aliases Placeholder, NoResults, Blank
|
|
31
|
+
* @documentation https://helix.fusion.dev/components/empty
|
|
32
|
+
*
|
|
33
|
+
* @slot - Why, and what to do about it.
|
|
34
|
+
* @slot actions - The way out.
|
|
35
|
+
* @slot heading - What is missing.
|
|
36
|
+
* @slot icon - A mark above the heading.
|
|
37
|
+
*/
|
|
38
|
+
let HelixHeadlessEmpty = class HelixHeadlessEmpty extends HelixElement {
|
|
39
|
+
constructor() {
|
|
40
|
+
super(...arguments);
|
|
41
|
+
/**
|
|
42
|
+
* Whether the state is announced when it appears.
|
|
43
|
+
*
|
|
44
|
+
* On by default: an empty view almost always replaces something that was
|
|
45
|
+
* loading. Turn it off for one that was on the page from the start, which
|
|
46
|
+
* has nothing to announce because nothing changed.
|
|
47
|
+
*/
|
|
48
|
+
this.noAnnounce = false;
|
|
49
|
+
}
|
|
50
|
+
willUpdate(changed) {
|
|
51
|
+
super.willUpdate(changed);
|
|
52
|
+
hostAria(this.internals, { role: this.noAnnounce ? '' : 'status' });
|
|
53
|
+
this.internals.ariaLive = this.noAnnounce ? null : 'polite';
|
|
54
|
+
}
|
|
55
|
+
render() {
|
|
56
|
+
return html `<slot name="icon"></slot>
|
|
57
|
+
<slot name="heading"></slot>
|
|
58
|
+
<slot></slot>
|
|
59
|
+
<slot name="actions"></slot>`;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
__decorate([
|
|
63
|
+
property({ attribute: 'no-announce', reflect: true, type: Boolean })
|
|
64
|
+
], HelixHeadlessEmpty.prototype, "noAnnounce", void 0);
|
|
65
|
+
HelixHeadlessEmpty = __decorate([
|
|
66
|
+
customElement('helix-headless-empty')
|
|
67
|
+
], HelixHeadlessEmpty);
|
|
68
|
+
export { HelixHeadlessEmpty };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './root/file-input-root.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './root/file-input-root.js';
|