@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,396 @@
|
|
|
1
|
+
import { AriaForwardController, HelixFormElement, PopoverController } from '@fusion.dev/helix-core';
|
|
2
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
|
+
import '../../listbox/index.js';
|
|
4
|
+
import '../../tag/index.js';
|
|
5
|
+
declare const HelixHeadlessCombobox_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerOpenInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
|
|
6
|
+
/**
|
|
7
|
+
* @summary A field that filters a list as it is typed into.
|
|
8
|
+
*
|
|
9
|
+
* @description
|
|
10
|
+
* **The list is `helix-listbox`, and the filtering is its own.** It already
|
|
11
|
+
* owns narrowing, the empty state, the highlight, `aria-activedescendant` and
|
|
12
|
+
* scrolling an option into view, and every one of those is a decision with a
|
|
13
|
+
* long note attached. Rewriting them here would be a second copy to keep in
|
|
14
|
+
* step; what is left for this element is the field, the panel and the traffic
|
|
15
|
+
* between them.
|
|
16
|
+
*
|
|
17
|
+
* **The text and the value are two things.** What a reader types is a filter,
|
|
18
|
+
* not an answer: it narrows the list and is thrown away. The value is whichever
|
|
19
|
+
* option they then choose, and the field is rewritten to that option's words
|
|
20
|
+
* once they have. A combobox that treated the typing as the value would submit
|
|
21
|
+
* "jav" to a form, which is the mistake a plain input makes and the reason this
|
|
22
|
+
* component exists.
|
|
23
|
+
*
|
|
24
|
+
* That is also why the field is emptied of its filter on close rather than left
|
|
25
|
+
* holding it: a control reopened still narrowed by the last visit's search is a
|
|
26
|
+
* control whose second use starts from the first one's leftovers. Select
|
|
27
|
+
* records the same, having been fixed for it.
|
|
28
|
+
*
|
|
29
|
+
* **Focus stays in the field, which is the whole of what a combobox is.** The
|
|
30
|
+
* arrows move the list without leaving the text, which is why the listbox has a
|
|
31
|
+
* public `navigate`: the moving, the wrapping, the skipping of disabled options
|
|
32
|
+
* and the seeding from the current value all stay in the one place that already
|
|
33
|
+
* does them.
|
|
34
|
+
*
|
|
35
|
+
* `role="combobox"` on the input rather than on a wrapper, because the thing
|
|
36
|
+
* the pattern describes is the text field, and `aria-controls` can name the
|
|
37
|
+
* listbox because both are in this shadow root. The active option cannot be
|
|
38
|
+
* named that way, being the consumer's light DOM, so it is linked by element
|
|
39
|
+
* reference for the reason Listbox records at length.
|
|
40
|
+
*
|
|
41
|
+
* **With `multiple`, the chosen options are tags in the field.** A field that
|
|
42
|
+
* says "Rust, Ruby, Go" is a sentence the reader has to parse to find out what
|
|
43
|
+
* is in it, and offers nothing to press to take one out: Select does that today
|
|
44
|
+
* and it is the weakest part of it. A tag apiece is one object per answer, each
|
|
45
|
+
* with its own remove control, which is what the reader already believes they
|
|
46
|
+
* are looking at.
|
|
47
|
+
*
|
|
48
|
+
* The panel stays open while more than one can be chosen, because a control
|
|
49
|
+
* that shut after each pick is one the reader has to reopen to keep using. The
|
|
50
|
+
* filter clears on each choice instead, so the next pick starts from the whole
|
|
51
|
+
* list rather than from the last search.
|
|
52
|
+
*
|
|
53
|
+
* **`creatable` announces, and does not write.** The options are the consumer's
|
|
54
|
+
* light DOM and nothing here puts an element into it: a component that grew the
|
|
55
|
+
* consumer's markup would be a component their framework re-renders over. What
|
|
56
|
+
* this does is offer a row saying what would be added, take the value when the
|
|
57
|
+
* reader presses it, and say so with `helix-create`. A consumer who has to
|
|
58
|
+
* validate first refuses the event and adds nothing.
|
|
59
|
+
*
|
|
60
|
+
* Which leaves a value naming no option, and that is what the words fall back
|
|
61
|
+
* to: for anything chosen the field shows the option's text if there is one and
|
|
62
|
+
* the value itself otherwise. No copy is stored, so a consumer who then adds a
|
|
63
|
+
* real option with that value has its words take over on the next render.
|
|
64
|
+
*
|
|
65
|
+
* **`suggest` finishes the word, and only ever forwards.** The field completes
|
|
66
|
+
* to the first option the typing begins, with the part the reader did not type
|
|
67
|
+
* selected, so the next character replaces it and Delete removes it. Applied on
|
|
68
|
+
* insertion alone: completing after a deletion would put back what the reader
|
|
69
|
+
* just took out, and a field that cannot be shortened is a field that cannot be
|
|
70
|
+
* corrected. Measured as the difference between `insertText` and the several
|
|
71
|
+
* `delete*` input types, which is what the platform already says about which
|
|
72
|
+
* happened.
|
|
73
|
+
*
|
|
74
|
+
* The filter stays what was typed rather than what was completed. Filtering on
|
|
75
|
+
* the completion would narrow the list to the one option it came from, so a
|
|
76
|
+
* reader typing "ru" would be shown "Rust" alone and never learn Ruby was
|
|
77
|
+
* there.
|
|
78
|
+
*
|
|
79
|
+
* @since 0.1.0
|
|
80
|
+
* @status experimental
|
|
81
|
+
* @category forms
|
|
82
|
+
* @aliases Autocomplete, Typeahead, Search select
|
|
83
|
+
* @documentation https://helix.fusion.dev/components/combobox
|
|
84
|
+
*
|
|
85
|
+
* @slot - The options, which are `helix-option` elements.
|
|
86
|
+
* @slot end - After it, for a unit or a clear button.
|
|
87
|
+
* @slot indicator - Replaces the caret saying the field opens.
|
|
88
|
+
* @slot start - Before the text, for an icon.
|
|
89
|
+
*
|
|
90
|
+
* @event {Event} change - Announced once the value has moved.
|
|
91
|
+
* @event {HelixBeforeChangeEvent} helix-before-change - Fired before the chosen option changes. Cancelable: refusing it takes the decision and nothing moves.
|
|
92
|
+
* @event {HelixBeforeCloseEvent} helix-before-close - Fired before it closes. Cancelable: refusing it takes the decision and nothing moves.
|
|
93
|
+
* @event {HelixBeforeOpenEvent} helix-before-open - Fired before the panel opens. Cancelable: refusing it takes the decision and nothing moves.
|
|
94
|
+
* @event {HelixCreateEvent} helix-create - Fired when the reader asks for something the list does not hold, and cancelable.
|
|
95
|
+
* @event {Event} input - Announced once the value has moved.
|
|
96
|
+
* @event {Event} toggle - Says the state moved, carrying `newState` and `oldState`.
|
|
97
|
+
*
|
|
98
|
+
* @csspart control - The text field itself.
|
|
99
|
+
* @csspart create - The row offering to add what was typed.
|
|
100
|
+
* @csspart feedback - What is wrong with it.
|
|
101
|
+
* @csspart field - The box around the text and its marks.
|
|
102
|
+
* @csspart hint - Help under the field, while nothing is wrong.
|
|
103
|
+
* @csspart indicator - The caret.
|
|
104
|
+
* @csspart label - The question, over the field.
|
|
105
|
+
* @csspart listbox - The list inside it.
|
|
106
|
+
* @csspart listbox-empty - Shown when a filter has hidden everything.
|
|
107
|
+
* @csspart listbox-feedback - What is wrong with it.
|
|
108
|
+
* @csspart listbox-filter-icon - The mark beside that field.
|
|
109
|
+
* @csspart listbox-filter-mark - The glyph beside the filter field, where none is slotted.
|
|
110
|
+
* @csspart listbox-hint - Help under the list.
|
|
111
|
+
* @csspart listbox-items - The list itself.
|
|
112
|
+
* @csspart listbox-label - The question, over the list.
|
|
113
|
+
* @csspart listbox-loading - Shown while the options are still on their way.
|
|
114
|
+
* from the listbox.
|
|
115
|
+
* @csspart listbox-search - The region holding the field that narrows the list.
|
|
116
|
+
* @csspart listbox-search-field - The field itself.
|
|
117
|
+
* @csspart rest - The count of choices held beyond `max-tags`.
|
|
118
|
+
* @csspart surface - The floating panel.
|
|
119
|
+
* @csspart tag - One chosen option.
|
|
120
|
+
* @csspart tag-dismiss - The remove button, when `dismissible`.
|
|
121
|
+
* @csspart tag-dismiss-mark - The glyph on the dismiss control, where none is slotted.
|
|
122
|
+
* @csspart tag-prefix - The category before the label.
|
|
123
|
+
* @csspart tags - The row of chosen options, when `multiple` is set.
|
|
124
|
+
*/
|
|
125
|
+
export declare class HelixHeadlessCombobox extends HelixHeadlessCombobox_base {
|
|
126
|
+
protected readonly aria: AriaForwardController;
|
|
127
|
+
/**
|
|
128
|
+
* What the browser may autofill in the text field, as a platform token.
|
|
129
|
+
*
|
|
130
|
+
* **Defaults to `off`, which is not the platform's default and is the
|
|
131
|
+
* point.** The field filters a list rather than collecting a value, so a
|
|
132
|
+
* browser offering to fill it with a saved address is competing for the same
|
|
133
|
+
* keystrokes as the listbox. A consumer who wants autofill can still ask.
|
|
134
|
+
*/
|
|
135
|
+
autocomplete: string;
|
|
136
|
+
/**
|
|
137
|
+
* Text shown while nothing has been chosen.
|
|
138
|
+
*/
|
|
139
|
+
placeholder: string;
|
|
140
|
+
/**
|
|
141
|
+
* Whether more than one option can be chosen.
|
|
142
|
+
*
|
|
143
|
+
* The list already does the work: `value` comes apart on commas, a press
|
|
144
|
+
* toggles rather than replaces, and the arrows move without choosing. What
|
|
145
|
+
* this adds is the tags, and keeping the panel open between picks.
|
|
146
|
+
*
|
|
147
|
+
* A comma is therefore not available inside an option's value, which is the
|
|
148
|
+
* listbox's contract and not this element's to change.
|
|
149
|
+
*/
|
|
150
|
+
multiple: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Whether the reader may answer with something the list does not hold.
|
|
153
|
+
*
|
|
154
|
+
* The row appears while what is typed matches no option's words exactly, so
|
|
155
|
+
* it is offered next to near misses too: a reader typing "Ruby on Rails" with
|
|
156
|
+
* "Ruby" in the list wants the one they are typing, not the one they are
|
|
157
|
+
* halfway through.
|
|
158
|
+
*/
|
|
159
|
+
creatable: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Whether the field finishes the word as it is typed.
|
|
162
|
+
*
|
|
163
|
+
* `suggest` rather than `autocomplete`, which is a real HTML attribute this
|
|
164
|
+
* element already sets on the input it renders, and two things of one name
|
|
165
|
+
* meaning different things on the same control is a question a consumer
|
|
166
|
+
* should not have to ask.
|
|
167
|
+
*/
|
|
168
|
+
suggest: boolean;
|
|
169
|
+
/**
|
|
170
|
+
* What the create row says, before the words it would add.
|
|
171
|
+
*/
|
|
172
|
+
createLabel: string;
|
|
173
|
+
/**
|
|
174
|
+
* What a tag's remove control is called, since the mark has no name.
|
|
175
|
+
*/
|
|
176
|
+
removeLabel: string;
|
|
177
|
+
/**
|
|
178
|
+
* How many tags to draw before the rest become a count. `multiple` only.
|
|
179
|
+
*
|
|
180
|
+
* `0` is all of them, and is the default: a cap that guesses is worse than no
|
|
181
|
+
* cap, because the number that fits depends on the width of the field and the
|
|
182
|
+
* length of what is in it, neither of which this element knows. What a cap is
|
|
183
|
+
* genuinely for is a field in a row or a table cell, where a set of twelve
|
|
184
|
+
* choices would push everything below it down a line at a time.
|
|
185
|
+
*
|
|
186
|
+
* The remainder is counted rather than hidden. `+3` is a fact a reader can act
|
|
187
|
+
* on, where a row that silently stops is a field that appears to have lost
|
|
188
|
+
* what was put in it. Date Input and Time Input carry the same property and
|
|
189
|
+
* the same reasoning.
|
|
190
|
+
*/
|
|
191
|
+
maxTags: number;
|
|
192
|
+
/**
|
|
193
|
+
* Accessible name for the list, which has no visible one of its own.
|
|
194
|
+
*/
|
|
195
|
+
listLabel: string;
|
|
196
|
+
/**
|
|
197
|
+
* Whether the options are still on their way.
|
|
198
|
+
*
|
|
199
|
+
* Passed straight to the list, which is where the rows are and so where the
|
|
200
|
+
* message belongs.
|
|
201
|
+
*/
|
|
202
|
+
loading: boolean;
|
|
203
|
+
/**
|
|
204
|
+
* What the list says while they are on their way.
|
|
205
|
+
*/
|
|
206
|
+
loadingText: string;
|
|
207
|
+
/**
|
|
208
|
+
* Words shown where the filter has hidden everything.
|
|
209
|
+
*/
|
|
210
|
+
emptyText: string;
|
|
211
|
+
/**
|
|
212
|
+
* What the reader has typed, which narrows the list and is not the value.
|
|
213
|
+
*
|
|
214
|
+
* State rather than a property, because it is a keystroke rather than API: a
|
|
215
|
+
* consumer sets `value` to say what is chosen, and nothing outside needs to
|
|
216
|
+
* say what is half-typed.
|
|
217
|
+
*/
|
|
218
|
+
private typed;
|
|
219
|
+
/**
|
|
220
|
+
* The completed words, where the field is finishing one, and empty otherwise.
|
|
221
|
+
*
|
|
222
|
+
* Held apart from `typed` rather than replacing it, because they are needed
|
|
223
|
+
* for different things at the same moment: this one is what the input shows,
|
|
224
|
+
* `typed` is what the list is filtered by, and the selection between them is
|
|
225
|
+
* what the reader is offered.
|
|
226
|
+
*/
|
|
227
|
+
private suggestion;
|
|
228
|
+
/**
|
|
229
|
+
* Which option is chosen, as an index, or `-1` where none is.
|
|
230
|
+
*
|
|
231
|
+
* Read off the listbox this renders, which owns the options and is where the
|
|
232
|
+
* same two properties are implemented. Delegating rather than recomputing is
|
|
233
|
+
* what keeps a composed control and the control inside it from answering
|
|
234
|
+
* differently: they are one chooser to a consumer.
|
|
235
|
+
*/
|
|
236
|
+
get selectedIndex(): number;
|
|
237
|
+
set selectedIndex(at: number);
|
|
238
|
+
/** Which kind of chooser this is, in the platform's two words. */
|
|
239
|
+
get type(): string;
|
|
240
|
+
private get listbox();
|
|
241
|
+
protected readonly panel: PopoverController;
|
|
242
|
+
/** The values chosen, in the order they were chosen. */
|
|
243
|
+
private get values();
|
|
244
|
+
/**
|
|
245
|
+
* The chosen options themselves, for their words.
|
|
246
|
+
*
|
|
247
|
+
* Read off the options rather than stored, because the words are the
|
|
248
|
+
* consumer's content and a copy of them goes stale the moment they change it.
|
|
249
|
+
* Select records the same.
|
|
250
|
+
*
|
|
251
|
+
* In the value's own order, which is the order they were chosen. It has to
|
|
252
|
+
* be: a created answer is not in the list at all, so there is no position in
|
|
253
|
+
* the list to give it. Neither order ever reshuffles what is already there,
|
|
254
|
+
* so a tag does not move out from under the pointer about to remove it.
|
|
255
|
+
*/
|
|
256
|
+
private get chosen();
|
|
257
|
+
/**
|
|
258
|
+
* Whether the filter has left anything to choose.
|
|
259
|
+
*
|
|
260
|
+
* Read off the options rather than asked of the listbox, which keeps its own
|
|
261
|
+
* answer to this private. Both come from the same place: `hidden` is what the
|
|
262
|
+
* filter writes onto an option, and it is public because hiding one by hand
|
|
263
|
+
* is a thing a consumer may do.
|
|
264
|
+
*/
|
|
265
|
+
private get showing();
|
|
266
|
+
/**
|
|
267
|
+
* What the create row would add, or nothing where there is nothing to add.
|
|
268
|
+
*
|
|
269
|
+
* Empty where the words already name an option exactly, case aside: offering
|
|
270
|
+
* to add "Rust" under a list showing "Rust" is offering the reader a second
|
|
271
|
+
* copy of what they are looking at.
|
|
272
|
+
*/
|
|
273
|
+
private get creation();
|
|
274
|
+
/**
|
|
275
|
+
* Takes what the reader typed as an answer, once anyone listening allows it.
|
|
276
|
+
*
|
|
277
|
+
* Added to the set with `multiple` and replacing it without, which is the
|
|
278
|
+
* same rule choosing an option follows: what differs about a created answer
|
|
279
|
+
* is where it came from, not how many the field holds.
|
|
280
|
+
*/
|
|
281
|
+
private create;
|
|
282
|
+
/** The choices that get a tag, which is all of them until `maxTags` says not. */
|
|
283
|
+
private get shown();
|
|
284
|
+
/** How many are held beyond the ones shown. */
|
|
285
|
+
private get restCount();
|
|
286
|
+
/** What a single-choice field shows at rest, which the tags replace. */
|
|
287
|
+
private get word();
|
|
288
|
+
/**
|
|
289
|
+
* Takes one value out of the set, which is what a tag's remove control does.
|
|
290
|
+
*
|
|
291
|
+
* `drop` rather than `remove`, which every element already has: `Element`
|
|
292
|
+
* defines `remove()` and a method of that name here would be overriding it,
|
|
293
|
+
* so `combobox.remove()` would stop taking the combobox out of the document.
|
|
294
|
+
*/
|
|
295
|
+
private drop;
|
|
296
|
+
private close;
|
|
297
|
+
private readonly handleInput;
|
|
298
|
+
/**
|
|
299
|
+
* The words of the first option the typing begins, or nothing.
|
|
300
|
+
*
|
|
301
|
+
* Case-insensitively matched and returned in the option's own case, so a
|
|
302
|
+
* reader typing "ru" is offered "Rust" rather than "rust": the completion is
|
|
303
|
+
* a name from the list, and correcting the reader's capitals to match it is
|
|
304
|
+
* the whole point of showing it.
|
|
305
|
+
*/
|
|
306
|
+
private completionFor;
|
|
307
|
+
/**
|
|
308
|
+
* The keys the field answers, and the ones it hands on.
|
|
309
|
+
*
|
|
310
|
+
* Everything that moves within the list goes to the list, which is what
|
|
311
|
+
* `navigate` is for. Escape and Tab are the field's, because they are about
|
|
312
|
+
* the panel rather than about the options in it.
|
|
313
|
+
*/
|
|
314
|
+
private readonly handleKeydown;
|
|
315
|
+
/**
|
|
316
|
+
* Takes what the list announced and stops it there.
|
|
317
|
+
*
|
|
318
|
+
* The listbox says `helix-before-change` under its own name, and a consumer
|
|
319
|
+
* listening on this element would otherwise hear two changes for one choice,
|
|
320
|
+
* one of them naming a control they did not put on the page.
|
|
321
|
+
*/
|
|
322
|
+
private readonly handleChange;
|
|
323
|
+
/**
|
|
324
|
+
* Anywhere in the field opens the list, and puts the caret where typing goes.
|
|
325
|
+
*
|
|
326
|
+
* On the field rather than on the `<input>`, which is where it was. The caret
|
|
327
|
+
* is a sibling of the input and so is the tag strip, so pressing the one part
|
|
328
|
+
* of the control that visibly says "this opens" did nothing at all, and a
|
|
329
|
+
* reader who wanted the list had to find the text box. Anything drawn inside
|
|
330
|
+
* the field is the field.
|
|
331
|
+
*
|
|
332
|
+
* A tag is the exception, because a tag is its own control: its dismiss
|
|
333
|
+
* removes a choice, and opening the list on the way past would leave the
|
|
334
|
+
* reader looking at a panel they did not ask for. Read from the composed
|
|
335
|
+
* path, since the press lands on a button inside the tag's shadow root and
|
|
336
|
+
* the event has retargeted by the time it arrives here.
|
|
337
|
+
*
|
|
338
|
+
* It only ever opens. Closing is Escape, a choice, or leaving, which is what
|
|
339
|
+
* the input already did and what a text field wants: a control that closed
|
|
340
|
+
* when you clicked into the middle of your own typing would be unusable.
|
|
341
|
+
*/
|
|
342
|
+
private readonly handleFieldClick;
|
|
343
|
+
/** One tag asking to be taken out of the set. */
|
|
344
|
+
private readonly handleDismiss;
|
|
345
|
+
/**
|
|
346
|
+
* Reports the answer and the verdict on it.
|
|
347
|
+
*
|
|
348
|
+
* The value rather than the typed text, which is the whole point of the
|
|
349
|
+
* component: a form that received "jav" got the filter, not an option.
|
|
350
|
+
*/
|
|
351
|
+
private sync;
|
|
352
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
353
|
+
protected updated(changed: PropertyValues): void;
|
|
354
|
+
/**
|
|
355
|
+
* The list the field filters, behind a seam the styled tier can move.
|
|
356
|
+
*
|
|
357
|
+
* A method rather than a fragment inline, so a tier above can render its own,
|
|
358
|
+
* wrap this one, pass it a property the base does not know about, or leave it
|
|
359
|
+
* out, without reimplementing the whole template to do any of them. The tag is
|
|
360
|
+
* interpolated rather than written, so `tier` resolves it: this renders the
|
|
361
|
+
* headless element, and a styled subclass that sets `tier` renders the styled one
|
|
362
|
+
* from the same template.
|
|
363
|
+
*/
|
|
364
|
+
protected renderListbox(): TemplateResult;
|
|
365
|
+
/**
|
|
366
|
+
* One chosen option, as a tag, behind a seam the styled tier can move.
|
|
367
|
+
*
|
|
368
|
+
* A method rather than a fragment inline, so a tier above can render its own,
|
|
369
|
+
* wrap this one, pass it a property the base does not know about, or leave it
|
|
370
|
+
* out, without reimplementing the whole template to do any of them. The tag is
|
|
371
|
+
* interpolated rather than written, so `tier` resolves it: this renders the
|
|
372
|
+
* headless element, and a styled subclass that sets `tier` renders the styled one
|
|
373
|
+
* from the same template.
|
|
374
|
+
*/
|
|
375
|
+
protected renderTag(option: {
|
|
376
|
+
text: string;
|
|
377
|
+
value: string;
|
|
378
|
+
}): TemplateResult;
|
|
379
|
+
/**
|
|
380
|
+
* The caret saying the field opens, behind a seam.
|
|
381
|
+
*
|
|
382
|
+
* Slot fallback, so a consumer replaces it by slotting; and a method, so the
|
|
383
|
+
* tier above replaces it by overriding. Those answer different people: the
|
|
384
|
+
* slot is for the page and the method is for whoever is building the styled
|
|
385
|
+
* layer, and a fallback with only the first is one a tier can restyle and
|
|
386
|
+
* cannot change.
|
|
387
|
+
*/
|
|
388
|
+
protected renderIndicator(): TemplateResult;
|
|
389
|
+
protected render(): TemplateResult;
|
|
390
|
+
}
|
|
391
|
+
declare global {
|
|
392
|
+
interface HTMLElementTagNameMap {
|
|
393
|
+
'helix-headless-combobox': HelixHeadlessCombobox;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
export {};
|