@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,357 @@
|
|
|
1
|
+
import { AriaForwardController, DisabledCascadeController, HelixFormElement } from '@fusion.dev/helix-core';
|
|
2
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
|
+
import { HelixHeadlessOption } from '../../option/root/option-root.js';
|
|
4
|
+
declare const HelixHeadlessListbox_base: (new (...args: any[]) => import("@fusion.dev/helix-core").CollectionElement) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
|
|
5
|
+
/**
|
|
6
|
+
* @summary A list of options, one or several of which are the answer.
|
|
7
|
+
*
|
|
8
|
+
* @description
|
|
9
|
+
* **The listbox is the control and the options are its vocabulary.** A Select
|
|
10
|
+
* is this with a trigger in front of it, a Combobox is this with a text input,
|
|
11
|
+
* and a command palette is this again: they differ in what opens the list and
|
|
12
|
+
* what filters it, not in what the list is. Building it as its own family is
|
|
13
|
+
* what stops each of those reimplementing the keyboard and the filtering.
|
|
14
|
+
*
|
|
15
|
+
* **`value` is comma separated when `multiple` is set**, the way
|
|
16
|
+
* `Checkbox.Group`'s is. It stays a string because that is what a form submits
|
|
17
|
+
* and what `MixinControllerValue` holds; an array property would be a second
|
|
18
|
+
* shape for the same fact, and the two would disagree the first time one was
|
|
19
|
+
* set without the other.
|
|
20
|
+
*
|
|
21
|
+
* **Chosen and active are two different things.** Chosen is the answer; active
|
|
22
|
+
* is where the keyboard is. In a single-select list they move together, which
|
|
23
|
+
* is the radio group pattern and is what a reader expects from arrow keys. With
|
|
24
|
+
* `multiple` they come apart: the arrows move without choosing and Space
|
|
25
|
+
* chooses, because a reader passing over four options on the way to the fifth
|
|
26
|
+
* did not mean to pick all five.
|
|
27
|
+
*
|
|
28
|
+
* **This does not use `KeyboardNavigationController`, and the reason given here
|
|
29
|
+
* was the wrong one.** It said the controller moves and chooses in one act by
|
|
30
|
+
* design, so half of this component needed that and half the opposite. The
|
|
31
|
+
* controller does not work that way: it takes `origin: 'focus' | 'selection'`,
|
|
32
|
+
* and `focus` exists precisely so a reader can arrow without choosing, which is
|
|
33
|
+
* what `Tabs` uses in `manual` mode. `focusItem()` and `select()` are separate
|
|
34
|
+
* members of `NavigableItem`. The incompatibility named above is one the
|
|
35
|
+
* controller had already solved.
|
|
36
|
+
*
|
|
37
|
+
* The real one is where focus lives. `NavigableItem.focusItem()` moves DOM
|
|
38
|
+
* focus to the item, because the controller's model is a roving tab stop. A
|
|
39
|
+
* filterable list cannot do that: focus has to stay in the field or typing
|
|
40
|
+
* stops, so what moves is a virtual cursor and `aria-activedescendant` is what
|
|
41
|
+
* says where it is. Those two disagree about the one thing neither can
|
|
42
|
+
* abstract, and no flag reconciles them.
|
|
43
|
+
*
|
|
44
|
+
* Worth keeping the distinction sharp, because the old wording invites the
|
|
45
|
+
* wrong fix: someone reading it would add `origin` to the controller, find it
|
|
46
|
+
* already there, and conclude this component could adopt it.
|
|
47
|
+
*
|
|
48
|
+
* **Filtering hides rather than removes.** An option the filter has hidden is
|
|
49
|
+
* still the consumer's element in the consumer's order, so a filter that clears
|
|
50
|
+
* puts the list back exactly as it was with nothing re-rendered. What counts as
|
|
51
|
+
* a match is a plain case-insensitive substring, and a consumer wanting more
|
|
52
|
+
* hides options itself: `filter` is a convenience over the same `hidden` the
|
|
53
|
+
* component uses.
|
|
54
|
+
*
|
|
55
|
+
* @since 0.1.0
|
|
56
|
+
* @status experimental
|
|
57
|
+
* @category forms
|
|
58
|
+
* @aliases Options, Select list
|
|
59
|
+
* @documentation https://helix.fusion.dev/components/listbox
|
|
60
|
+
*
|
|
61
|
+
* @slot - The options, and any groups of them.
|
|
62
|
+
* @slot hint - Richer than a string.
|
|
63
|
+
* @slot label - Richer than a string.
|
|
64
|
+
*
|
|
65
|
+
* @event {Event} change - Announced once the value has moved.
|
|
66
|
+
* @event {HelixBeforeChangeEvent} helix-before-change - Fired when the answer changes, and cancelable.
|
|
67
|
+
* @event {HelixFilterEvent} helix-filter - Fired before the list narrows, and cancelable.
|
|
68
|
+
* @event {Event} input - Announced once the value has moved.
|
|
69
|
+
*
|
|
70
|
+
* @csspart empty - Shown when a filter has hidden everything.
|
|
71
|
+
* @csspart feedback - What is wrong with it.
|
|
72
|
+
* @csspart filter-icon - The mark beside that field.
|
|
73
|
+
* @csspart filter-mark - The glyph beside the filter field, where none is slotted.
|
|
74
|
+
* @csspart hint - Help under the list.
|
|
75
|
+
* @csspart items - The list itself.
|
|
76
|
+
* @csspart label - The question, over the list.
|
|
77
|
+
* @csspart loading - Shown while the options are still on their way.
|
|
78
|
+
* @csspart search - The region holding the field that narrows the list.
|
|
79
|
+
* @csspart search-field - The field itself.
|
|
80
|
+
*/
|
|
81
|
+
export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
|
|
82
|
+
protected readonly aria: AriaForwardController;
|
|
83
|
+
/**
|
|
84
|
+
* What the browser may autofill in the text field, as a platform token.
|
|
85
|
+
*
|
|
86
|
+
* **Defaults to `off`, which is not the platform's default and is the
|
|
87
|
+
* point.** The field filters a list rather than collecting a value, so a
|
|
88
|
+
* browser offering to fill it with a saved address is competing for the same
|
|
89
|
+
* keystrokes as the listbox. A consumer who wants autofill can still ask.
|
|
90
|
+
*/
|
|
91
|
+
autocomplete: string;
|
|
92
|
+
/**
|
|
93
|
+
* What the list is narrowed to, if anything.
|
|
94
|
+
*
|
|
95
|
+
* Filtering hides rather than removes, so nothing about the value changes and
|
|
96
|
+
* the list is still the consumer's own elements in their own order. Reading
|
|
97
|
+
* gives what is being filtered on; writing declares it theirs, and
|
|
98
|
+
* `default-filter` seeds one the list owns.
|
|
99
|
+
*
|
|
100
|
+
*
|
|
101
|
+
*/
|
|
102
|
+
get filter(): string;
|
|
103
|
+
set filter(next: string);
|
|
104
|
+
/**
|
|
105
|
+
* What to start narrowed to, where nothing declared it.
|
|
106
|
+
*/
|
|
107
|
+
defaultFilter: string;
|
|
108
|
+
/** What the list is narrowed to, whoever set it. */
|
|
109
|
+
private filterState;
|
|
110
|
+
/**
|
|
111
|
+
* Whether the list renders a field for narrowing itself.
|
|
112
|
+
*
|
|
113
|
+
* The field lives here rather than in whatever frames the list, because the
|
|
114
|
+
* filtering already does: `filter`, the empty state and the keyboard are all
|
|
115
|
+
* this component's. A select that drew its own search box above a listbox
|
|
116
|
+
* would be writing the same field again, and so would a combobox, and so
|
|
117
|
+
* would a command palette, which is the fault the three-family split exists
|
|
118
|
+
* to prevent.
|
|
119
|
+
*/
|
|
120
|
+
filterable: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Placeholder for the field that narrows the list.
|
|
123
|
+
*/
|
|
124
|
+
filterLabel: string;
|
|
125
|
+
/**
|
|
126
|
+
* Whether more than one option can be the answer.
|
|
127
|
+
*/
|
|
128
|
+
multiple: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* What is shown when a filter has hidden every option.
|
|
131
|
+
*
|
|
132
|
+
* From `MixinCollection`, which every collection in the library now shares,
|
|
133
|
+
* and re-declared here only to keep this list's own wording: "No matches" is
|
|
134
|
+
* about a filter, and the mixin's "Nothing to show" is about a list that was
|
|
135
|
+
* never given anything.
|
|
136
|
+
*/
|
|
137
|
+
emptyText: string;
|
|
138
|
+
/**
|
|
139
|
+
* Which option the keyboard is on, which is not what is chosen.
|
|
140
|
+
*/
|
|
141
|
+
private activeValue;
|
|
142
|
+
/**
|
|
143
|
+
* Whether the key being handled was forwarded rather than typed into this.
|
|
144
|
+
*
|
|
145
|
+
* Plain state rather than reactive: it is set and cleared inside one
|
|
146
|
+
* synchronous call, so nothing renders while it is true and nothing outside
|
|
147
|
+
* can observe it.
|
|
148
|
+
*/
|
|
149
|
+
private forwarded;
|
|
150
|
+
/**
|
|
151
|
+
* Whether anything survived the filter, kept as state rather than counted at
|
|
152
|
+
* render time.
|
|
153
|
+
*
|
|
154
|
+
* Counting during render reads the hiding from the *previous* pass, because
|
|
155
|
+
* hiding happens in `updated` against options that are the consumer's
|
|
156
|
+
* elements rather than this component's markup. So a filter matching nothing
|
|
157
|
+
* rendered the full list, hid every option, and left an empty box with no
|
|
158
|
+
* message in it: the count was right one pass too late. Written to state
|
|
159
|
+
* instead, which schedules the one further render that shows it.
|
|
160
|
+
*/
|
|
161
|
+
private hasMatches;
|
|
162
|
+
/**
|
|
163
|
+
* Whether the options have been looked at yet.
|
|
164
|
+
*
|
|
165
|
+
* Emptiness is a fact about light DOM children, and the server has none to
|
|
166
|
+
* count: without this the list shipped "Nothing to show" over markup that was
|
|
167
|
+
* about to have options in it, which is the one thing an empty state must
|
|
168
|
+
* never do. `place` runs from `updated`, which the server never reaches, so
|
|
169
|
+
* this is false exactly when the answer is unknown.
|
|
170
|
+
*/
|
|
171
|
+
private counted;
|
|
172
|
+
protected readonly cascade: DisabledCascadeController;
|
|
173
|
+
/**
|
|
174
|
+
* Which option is chosen, as an index, or `-1` where none is.
|
|
175
|
+
*
|
|
176
|
+
* `<select>`'s own pair, and this control is what stands in for one. The
|
|
177
|
+
* options are the consumer's own light-DOM children, so an index is a
|
|
178
|
+
* position among the elements they wrote rather than into anything this
|
|
179
|
+
* renders, which is what makes it the same number `<select>` would give.
|
|
180
|
+
*
|
|
181
|
+
* With `multiple` it is the first chosen one, which is also what the platform
|
|
182
|
+
* answers: a single index cannot describe a set, and `value` is the property
|
|
183
|
+
* that can.
|
|
184
|
+
*/
|
|
185
|
+
get selectedIndex(): number;
|
|
186
|
+
set selectedIndex(at: number);
|
|
187
|
+
/**
|
|
188
|
+
* Which kind of chooser this is, in the platform's two words.
|
|
189
|
+
*
|
|
190
|
+
* Derived rather than declared, because `multiple` already decides it and a
|
|
191
|
+
* second property could disagree.
|
|
192
|
+
*/
|
|
193
|
+
get type(): string;
|
|
194
|
+
/**
|
|
195
|
+
* Every option, in the order a reader meets them.
|
|
196
|
+
*
|
|
197
|
+
* Descendants rather than children, because a group puts a level between the
|
|
198
|
+
* list and its options and the keyboard has to move through a grouped list
|
|
199
|
+
* exactly as it moves through a flat one.
|
|
200
|
+
*/
|
|
201
|
+
get options(): HelixHeadlessOption[];
|
|
202
|
+
/**
|
|
203
|
+
* Walks the tree, and walks *through* a slot when it meets one.
|
|
204
|
+
*
|
|
205
|
+
* Descendants rather than children, because a group puts a level between the
|
|
206
|
+
* list and its options and the keyboard has to move through a grouped list
|
|
207
|
+
* exactly as it moves through a flat one.
|
|
208
|
+
*
|
|
209
|
+
* Through a slot because that is how this gets composed. `Select` renders a
|
|
210
|
+
* listbox in its own shadow root with a slot inside it, so the options are
|
|
211
|
+
* the *select's* light DOM and the listbox's only child is the slot: a plain
|
|
212
|
+
* `querySelectorAll` finds the slot and no options at all, and the whole
|
|
213
|
+
* component comes up empty. Found the first time the two were put together,
|
|
214
|
+
* which is the argument for building the pieces separately rather than
|
|
215
|
+
* discovering it inside a finished Select.
|
|
216
|
+
*/
|
|
217
|
+
private collect;
|
|
218
|
+
/** The groups, found the same way and for the same reason. */
|
|
219
|
+
private get groups();
|
|
220
|
+
/** The options a filter has left showing. */
|
|
221
|
+
private get shown();
|
|
222
|
+
/** The chosen values, which is a list whether or not `multiple` is set. */
|
|
223
|
+
get values(): string[];
|
|
224
|
+
/**
|
|
225
|
+
* Applies a choice, announcing first so a listener can refuse it.
|
|
226
|
+
*
|
|
227
|
+
* With `multiple` a choice is a toggle, because the same press has to be able
|
|
228
|
+
* to take an answer back; without it a choice replaces whatever was there.
|
|
229
|
+
*/
|
|
230
|
+
private choose;
|
|
231
|
+
private readonly handleSelection;
|
|
232
|
+
/**
|
|
233
|
+
* Moves the keyboard, and chooses with it only where that is the pattern.
|
|
234
|
+
*
|
|
235
|
+
* Space and Enter are how a multi-select list chooses, and they are also how
|
|
236
|
+
* a single-select one confirms what the arrows already did, so they act
|
|
237
|
+
* either way rather than being guarded on `multiple`.
|
|
238
|
+
*/
|
|
239
|
+
private readonly handleKeydown;
|
|
240
|
+
/**
|
|
241
|
+
* Runs the list's own key handling for a caller whose focus is elsewhere.
|
|
242
|
+
*
|
|
243
|
+
* A combobox keeps focus in its text field, because that is the whole of what
|
|
244
|
+
* a combobox is, and still has to move this list with the arrows. Without
|
|
245
|
+
* this it would have to reimplement the moving, the wrapping, the skipping of
|
|
246
|
+
* disabled options and the seeding from the current value, and the second
|
|
247
|
+
* copy would drift from this one the first time either changed.
|
|
248
|
+
*
|
|
249
|
+
* Public and taking the event rather than a direction, so a caller forwards
|
|
250
|
+
* what it received and this decides what the key means. `preventDefault` is
|
|
251
|
+
* called in here on the keys it acts on, so a caller can hand over every
|
|
252
|
+
* keydown and let the list ignore the ones that are not its business.
|
|
253
|
+
*
|
|
254
|
+
* The entry point is also what says whether moving chooses, which is why the
|
|
255
|
+
* flag is set here rather than exposed as a property. The difference between
|
|
256
|
+
* a listbox and a combobox is not a mode a consumer picks: it is which
|
|
257
|
+
* element the reader's focus is in, and that is exactly what calling this
|
|
258
|
+
* rather than being typed into means. Enter and Space still choose, because
|
|
259
|
+
* those are the caller asking for the answer rather than for a move.
|
|
260
|
+
*/
|
|
261
|
+
navigate(event: KeyboardEvent): void;
|
|
262
|
+
/**
|
|
263
|
+
* Brings the chosen option to rest in the middle of the list.
|
|
264
|
+
*
|
|
265
|
+
* A method rather than something this does on its own, because a listbox
|
|
266
|
+
* opening on its answer usually wants it merely *visible* and the browser
|
|
267
|
+
* already manages that: centering is what a caller wants when the list is being
|
|
268
|
+
* read as a dial rather than scanned as a list, which is what Time Picker's wheels
|
|
269
|
+
* does with three of these.
|
|
270
|
+
*
|
|
271
|
+
* A delta from the two boxes rather than `offsetTop`. An option is a slotted
|
|
272
|
+
* light DOM child, so its `offsetParent` is whatever is positioned above it,
|
|
273
|
+
* which is not this list and is not guaranteed to be anything: measuring both
|
|
274
|
+
* rects and moving by the difference needs no such assumption.
|
|
275
|
+
*/
|
|
276
|
+
reveal(): void;
|
|
277
|
+
/** Hides what the filter excludes, and writes the rest onto the options. */
|
|
278
|
+
private place;
|
|
279
|
+
/** Reports the answer and the verdict on it. */
|
|
280
|
+
private sync;
|
|
281
|
+
connectedCallback(): void;
|
|
282
|
+
disconnectedCallback(): void;
|
|
283
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
284
|
+
/**
|
|
285
|
+
* Where the reader is, and failing that where the answer is.
|
|
286
|
+
*
|
|
287
|
+
* `activeValue` starts empty, so the first arrow press in a list that already
|
|
288
|
+
* has a chosen option started from nowhere: Down went to the first option,
|
|
289
|
+
* which is a move backwards from anything below it, and Up went to the last.
|
|
290
|
+
* Seeding from the value means the first press moves from what the reader can
|
|
291
|
+
* see is selected.
|
|
292
|
+
*
|
|
293
|
+
* **The keyboard knew this and the announcement did not.** `linkActive` asked
|
|
294
|
+
* for `activeValue` alone, so a list that had been given a value and not yet
|
|
295
|
+
* arrowed through pointed `aria-activedescendant` at nothing: a screen reader
|
|
296
|
+
* was told the list and its selection, and nothing about where the cursor
|
|
297
|
+
* was, until a key moved it. Both read this now, so the thing announced and
|
|
298
|
+
* the thing the arrows move from cannot disagree.
|
|
299
|
+
*/
|
|
300
|
+
private get currentValue();
|
|
301
|
+
private linkActive;
|
|
302
|
+
protected updated(changed: PropertyValues): void;
|
|
303
|
+
/**
|
|
304
|
+
* Narrows the list as the reader types, announcing it first.
|
|
305
|
+
*
|
|
306
|
+
* `helix-filter` and not `helix-change`, because nothing about the value
|
|
307
|
+
* changes: the options are hidden rather than removed, and telling a consumer
|
|
308
|
+
* their answer moved when it did not is worse than telling them nothing. It
|
|
309
|
+
* told them nothing before this.
|
|
310
|
+
*/
|
|
311
|
+
private readonly handleFilter;
|
|
312
|
+
/** Requests a narrowing, and reports whether the request stood. */
|
|
313
|
+
requestFilter(next: string): boolean;
|
|
314
|
+
/**
|
|
315
|
+
* Sends the keys that belong to the list to the list.
|
|
316
|
+
*
|
|
317
|
+
* A reader filtering is still choosing: they type two letters and press Down
|
|
318
|
+
* to reach what is left, and the field would otherwise swallow it because the
|
|
319
|
+
* arrows move a caret. Typing keys stay with the field, which is what makes
|
|
320
|
+
* this different from forwarding everything.
|
|
321
|
+
*
|
|
322
|
+
* Escape clears rather than closing. What frames the list may close on Escape
|
|
323
|
+
* too, so this stops the event when there is something to clear: one press
|
|
324
|
+
* empties the filter, a second reaches whatever is above and closes it. A
|
|
325
|
+
* filter that closed the panel would lose the reader's place for a keystroke
|
|
326
|
+
* they meant as an undo.
|
|
327
|
+
*/
|
|
328
|
+
private readonly handleFilterKeydown;
|
|
329
|
+
/**
|
|
330
|
+
* Focusing the host focuses the list inside it.
|
|
331
|
+
*
|
|
332
|
+
* The focusable node is `[part="items"]`, a div in this shadow root, and a
|
|
333
|
+
* caller outside has no way to reach it: `select` opened its panel and called
|
|
334
|
+
* `.focus()` on this element, which is not focusable, so focus stayed on the
|
|
335
|
+
* trigger and the arrow keys never reached the options at all. Delegation is
|
|
336
|
+
* the platform answering that, and it keeps `document.activeElement` on the
|
|
337
|
+
* host, which is what a caller reasons about.
|
|
338
|
+
*/
|
|
339
|
+
static shadowRootOptions: ShadowRootInit;
|
|
340
|
+
/**
|
|
341
|
+
* The mark in the filter's field, behind a seam.
|
|
342
|
+
*
|
|
343
|
+
* Slot fallback, so a consumer replaces it by slotting; and a method, so the
|
|
344
|
+
* tier above replaces it by overriding. Those answer different people: the
|
|
345
|
+
* slot is for the page and the method is for whoever is building the styled
|
|
346
|
+
* layer, and a fallback with only the first is one a tier can restyle and
|
|
347
|
+
* cannot change.
|
|
348
|
+
*/
|
|
349
|
+
protected renderFilterIcon(): TemplateResult;
|
|
350
|
+
protected render(): TemplateResult;
|
|
351
|
+
}
|
|
352
|
+
declare global {
|
|
353
|
+
interface HTMLElementTagNameMap {
|
|
354
|
+
'helix-headless-listbox': HelixHeadlessListbox;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
export {};
|