@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,292 @@
|
|
|
1
|
+
import { AriaForwardController, HelixFormElement } from '@fusion.dev/helix-core';
|
|
2
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
|
+
/** What a cell accepts, which decides the keyboard a phone offers. */
|
|
4
|
+
export type PinType = 'alphanumeric' | 'numeric' | 'text';
|
|
5
|
+
declare const HelixHeadlessPinInput_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
|
|
6
|
+
/**
|
|
7
|
+
* @summary A short code, one character to a box.
|
|
8
|
+
*
|
|
9
|
+
* @description
|
|
10
|
+
* **One `<input>` per cell, rather than one input drawn as cells.** Both are
|
|
11
|
+
* built in the wild and the trade is real: a single field autofills perfectly
|
|
12
|
+
* and needs a drawn caret nobody can style well, and separate fields give every
|
|
13
|
+
* box a real focus ring, a real caret and a real tab stop for free. This takes
|
|
14
|
+
* the second, and then closes autofill's gap rather than living with it, below.
|
|
15
|
+
*
|
|
16
|
+
* **Anything longer than one character is treated as a paste, wherever it
|
|
17
|
+
* lands.** That covers the obvious case and two that are not: a browser
|
|
18
|
+
* autofilling an SMS code drops the whole thing into whichever box is focused,
|
|
19
|
+
* and a password manager does the same. So a six-character arrival in cell three
|
|
20
|
+
* fills from cell three rather than being truncated to its first character,
|
|
21
|
+
* which is what a per-cell `maxlength` would have done silently.
|
|
22
|
+
*
|
|
23
|
+
* **The code is one value to a form.** The cells are inside a shadow root and
|
|
24
|
+
* submit nothing on their own; the host is form-associated and reports the
|
|
25
|
+
* joined string, which is also what carries validity and answers a reset.
|
|
26
|
+
*
|
|
27
|
+
* `autocomplete="one-time-code"` is on the first cell only. It is a hint about
|
|
28
|
+
* the field as a whole, and repeating it on six boxes offers a browser six
|
|
29
|
+
* places to put one code.
|
|
30
|
+
*
|
|
31
|
+
* @since 0.1.0
|
|
32
|
+
* @status stable
|
|
33
|
+
* @category forms
|
|
34
|
+
* @aliases PinField, OTP, One-time code, Verification code, InputPin
|
|
35
|
+
* @documentation https://helix.fusion.dev/components/pin-input
|
|
36
|
+
*
|
|
37
|
+
* @event {Event} change - Announced with a filled code, and when an edited one loses focus.
|
|
38
|
+
* @event {HelixBeforeChangeEvent} helix-before-change - Fired as the code changes, and cancelable.
|
|
39
|
+
* @event {HelixCompleteEvent} helix-complete - Fired when the last box is filled.
|
|
40
|
+
* @event {Event} input - Announced once the value has moved.
|
|
41
|
+
*
|
|
42
|
+
* @csspart cell - One box.
|
|
43
|
+
* @csspart feedback - What is wrong with it.
|
|
44
|
+
* @csspart field - The row of boxes.
|
|
45
|
+
* @csspart hint - Help under the boxes, while nothing is wrong.
|
|
46
|
+
* @csspart label - The question, over the boxes.
|
|
47
|
+
*/
|
|
48
|
+
export declare class HelixHeadlessPinInput extends HelixHeadlessPinInput_base {
|
|
49
|
+
protected readonly aria: AriaForwardController;
|
|
50
|
+
/** Typed or dragged, so every edit is announced. See `announcesInput`. */
|
|
51
|
+
protected readonly announcesInput = true;
|
|
52
|
+
/**
|
|
53
|
+
* What the browser may autofill, reaching the first cell only.
|
|
54
|
+
*
|
|
55
|
+
* `one-time-code` is why this defaults to anything at all: it is the token
|
|
56
|
+
* that lets a phone offer the code out of a message. Later cells stay `off`
|
|
57
|
+
* for the reason in the class comment above, that six cells each offering
|
|
58
|
+
* the same code is one offer made six times.
|
|
59
|
+
*/
|
|
60
|
+
autocomplete: string;
|
|
61
|
+
/**
|
|
62
|
+
* How many characters the code has.
|
|
63
|
+
*/
|
|
64
|
+
length: number;
|
|
65
|
+
/**
|
|
66
|
+
* What a box accepts, which decides the keyboard a phone offers.
|
|
67
|
+
*
|
|
68
|
+
* `numeric` and `alphanumeric` also refuse anything else on the way in,
|
|
69
|
+
* because a code that is digits is digits: letting a letter into a box a
|
|
70
|
+
* reader cannot submit is a mistake they have to find and undo themselves.
|
|
71
|
+
* `text` refuses nothing and only trims, so it is the mode for a code with a
|
|
72
|
+
* hyphen in it.
|
|
73
|
+
*
|
|
74
|
+
* **`alphanumeric` is ASCII letters and digits**, which is narrower than the
|
|
75
|
+
* word is in general and is the right narrowness here. A code of this kind
|
|
76
|
+
* comes off a keypad, an SMS or an authenticator, and none of them emit `é`;
|
|
77
|
+
* a filter that accepted it would let through a character the service on the
|
|
78
|
+
* other end is going to reject. A consumer whose codes really do carry
|
|
79
|
+
* marked letters wants `text`, which judges nothing.
|
|
80
|
+
*
|
|
81
|
+
* **Not reflected**, and it was until this component's own server spec caught
|
|
82
|
+
* it: nothing selects on it, so all reflection did was write `type="numeric"`
|
|
83
|
+
* onto every `<helix-pin-input>` ever rendered, an attribute no consumer's
|
|
84
|
+
* markup had. That is the fault `Input`'s own `type` had and the reason the
|
|
85
|
+
* area rules carry the sentence "reflect only what CSS selects on". The real
|
|
86
|
+
* inputs take it as a binding, which is what makes the keyboard follow.
|
|
87
|
+
*/
|
|
88
|
+
type: PinType;
|
|
89
|
+
/**
|
|
90
|
+
* Whether the characters are hidden, the way a password is.
|
|
91
|
+
*/
|
|
92
|
+
mask: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* What an empty box shows, usually a single dot.
|
|
95
|
+
*
|
|
96
|
+
* The platform's own placeholder, on each cell, rather than a character
|
|
97
|
+
* drawn behind the field: it clears the moment anything is typed, it is
|
|
98
|
+
* already excluded from the accessible value, and it works the same under
|
|
99
|
+
* `mask`, where the cell is a password input and a hand-drawn glyph would
|
|
100
|
+
* have to know that.
|
|
101
|
+
*
|
|
102
|
+
* Empty by default, because a row of boxes already reads as a row of boxes
|
|
103
|
+
* and a dot in each is a choice about how much the field should announce
|
|
104
|
+
* itself before anybody has touched it.
|
|
105
|
+
*/
|
|
106
|
+
placeholder: string;
|
|
107
|
+
/**
|
|
108
|
+
* Whether the boxes refuse input while still submitting their value.
|
|
109
|
+
*/
|
|
110
|
+
readOnly: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Accessible name for one box, with `{index}` and `{length}` filled in.
|
|
113
|
+
*/
|
|
114
|
+
cellLabel: string;
|
|
115
|
+
/** Focus is delegated, so the host is never the focus target. */
|
|
116
|
+
static shadowRootOptions: ShadowRootInit;
|
|
117
|
+
/** How many boxes there are, clamped once so every reader agrees. */
|
|
118
|
+
private get count();
|
|
119
|
+
private get cells();
|
|
120
|
+
/** The code as characters, padded to the row so every box has one to show. */
|
|
121
|
+
private get characters();
|
|
122
|
+
/** Everything this box would accept, with the rest dropped. */
|
|
123
|
+
private clean;
|
|
124
|
+
/**
|
|
125
|
+
* Writes a run of characters from one box onward.
|
|
126
|
+
*
|
|
127
|
+
* The single path for typing, pasting and autofill alike, because they are
|
|
128
|
+
* the same act at different lengths and splitting them is how the three
|
|
129
|
+
* disagree about trimming, about the cursor, and about what happens at the
|
|
130
|
+
* end.
|
|
131
|
+
*/
|
|
132
|
+
private write;
|
|
133
|
+
/**
|
|
134
|
+
* Puts the value back into the boxes.
|
|
135
|
+
*
|
|
136
|
+
* The cells are uncontrolled between renders, because Lit will not rewrite an
|
|
137
|
+
* input's `.value` when the bound string has not changed, and a refused
|
|
138
|
+
* keystroke leaves the box holding a character the element rejected. This is
|
|
139
|
+
* the same put-back `Input` does with `restoreValue`, once per box.
|
|
140
|
+
*/
|
|
141
|
+
private paint;
|
|
142
|
+
private readonly handleInput;
|
|
143
|
+
private readonly handlePaste;
|
|
144
|
+
/**
|
|
145
|
+
* The keys that move between boxes, and the one that clears backwards.
|
|
146
|
+
*
|
|
147
|
+
* Backspace in an empty box goes back and clears the one it lands in, which
|
|
148
|
+
* is what makes a code correctable without the reader hunting for the box
|
|
149
|
+
* they meant. In a full box it does what it always does and is left alone.
|
|
150
|
+
*/
|
|
151
|
+
private readonly handleKeydown;
|
|
152
|
+
/**
|
|
153
|
+
* The code as it stood when focus arrived, so a visit that changed nothing
|
|
154
|
+
* says nothing.
|
|
155
|
+
*
|
|
156
|
+
* **This is the platform's reading, and it was the other one until it was
|
|
157
|
+
* measured.** It held the value at the last *commit*, on the argument that
|
|
158
|
+
* recognizing an arrival is hard here: this component moves focus itself on
|
|
159
|
+
* every character, so most `focus` events are ones it caused, and telling
|
|
160
|
+
* those apart rests entirely on `relatedTarget`. That is true and it is not
|
|
161
|
+
* an obstacle, because `handleFocusOut` was already doing exactly that guard
|
|
162
|
+
* one method away. The reasoning had talked itself out of a check it had
|
|
163
|
+
* already written.
|
|
164
|
+
*
|
|
165
|
+
* **What the two readings do to a real browser**, measured in Chromium
|
|
166
|
+
* against a native `<input>` with real keystrokes:
|
|
167
|
+
*
|
|
168
|
+
* | | native | last commit | on arrival |
|
|
169
|
+
* |---|---|---|---|
|
|
170
|
+
* | types, leaves | `change` | `change` | `change` |
|
|
171
|
+
* | script assigns unfocused, visit with no edit | silent | **`change`** | silent |
|
|
172
|
+
* | script assigns unfocused, then edits | `change` | `change` | `change` |
|
|
173
|
+
* | types a character and deletes it | silent | silent | silent |
|
|
174
|
+
*
|
|
175
|
+
* One row differed and it is the one that matters: a consumer who assigns
|
|
176
|
+
* `value` and then has a reader tab through the row was told the reader had
|
|
177
|
+
* entered a code. `change` on a field means "the reader had a go at this",
|
|
178
|
+
* `MixinField` treats it as exactly that, and announcing a value the consumer
|
|
179
|
+
* set themselves is a false positive rather than the safe half of a trade.
|
|
180
|
+
*
|
|
181
|
+
* **The narrower divergence that is left** is a script assigning while the row
|
|
182
|
+
* is focused, where the platform stays silent because no user edit happened
|
|
183
|
+
* and this commits on the way out. Closing it needs a dirty flag set from real
|
|
184
|
+
* cell input rather than a baseline, which is more machinery than the case has
|
|
185
|
+
* earned: a consumer writing to a field the reader is inside is already in a
|
|
186
|
+
* fight with them.
|
|
187
|
+
*
|
|
188
|
+
* Seeded in `firstUpdated`, a code in the markup being committed by whoever
|
|
189
|
+
* wrote it, and re-taken on every arrival from outside the row.
|
|
190
|
+
*/
|
|
191
|
+
private committed;
|
|
192
|
+
/** Selecting on focus, so typing replaces rather than appending. */
|
|
193
|
+
private readonly handleFocus;
|
|
194
|
+
/**
|
|
195
|
+
* Whether focus is currently somewhere inside the row.
|
|
196
|
+
*
|
|
197
|
+
* **The arrival is a transition, not a `relatedTarget` reading**, which is
|
|
198
|
+
* what the first version of this did and is what the exit still does. It does
|
|
199
|
+
* not work on the way in for two separate reasons and the second is the one
|
|
200
|
+
* that decides it. Every character moves focus to the next box, so an
|
|
201
|
+
* unguarded `focusin` re-baselines on each keystroke and the row can never
|
|
202
|
+
* report anything: measured, the three commit specs went silent at once. And
|
|
203
|
+
* `focusin` carries `relatedTarget` in a browser and not in happy-dom, so a
|
|
204
|
+
* guard written on it is a guard that holds in production and not in the
|
|
205
|
+
* specs, which is the worse half. This flag needs neither: entering is
|
|
206
|
+
* `focusin` while it is `false`, and nothing else is.
|
|
207
|
+
*/
|
|
208
|
+
private within;
|
|
209
|
+
/**
|
|
210
|
+
* Takes the baseline when focus arrives from outside the row.
|
|
211
|
+
*
|
|
212
|
+
* The value at arrival is what the platform compares against, and the table
|
|
213
|
+
* on `committed` is why.
|
|
214
|
+
*/
|
|
215
|
+
private readonly handleFocusIn;
|
|
216
|
+
/**
|
|
217
|
+
* Commits when focus leaves the row, which is the moment every other field in
|
|
218
|
+
* the library has and this one did not.
|
|
219
|
+
*
|
|
220
|
+
* `change` is one of the two events `MixinField` reads as "the reader has had
|
|
221
|
+
* a go at this", so a code that was never completed was never `touched` and
|
|
222
|
+
* its own `tooShort` message could not show: two boxes of four filled and
|
|
223
|
+
* tabbed away from was answered with nothing at all. `Input` gets this for
|
|
224
|
+
* free by relaying its control's own `change`; here the cells each fire one,
|
|
225
|
+
* none of them means the code is entered, and neither does any single one of
|
|
226
|
+
* them mean the reader has left.
|
|
227
|
+
*
|
|
228
|
+
* **Focus leaving the row, and not a cell.** Every character moves focus to
|
|
229
|
+
* the next box, so a per-cell blur would commit on every keystroke, which is
|
|
230
|
+
* the fault this exists to fix pointed the other way.
|
|
231
|
+
*/
|
|
232
|
+
private readonly handleFocusOut;
|
|
233
|
+
/**
|
|
234
|
+
* Announces the code as entered, from whichever moment reached it first.
|
|
235
|
+
*
|
|
236
|
+
* **One writer, because the fact has two moments and only one meaning.** A
|
|
237
|
+
* filled code and a row being left are both "the reader is done with this",
|
|
238
|
+
* and they were two dispatch sites kept from disagreeing by both remembering
|
|
239
|
+
* to update `committed`. They are one call now, so a third moment cannot be
|
|
240
|
+
* added that fires without baselining, which is the way the pair would have
|
|
241
|
+
* drifted.
|
|
242
|
+
*
|
|
243
|
+
* Silent when nothing moved since the baseline, which is what makes it safe
|
|
244
|
+
* to call from both: completing a code that is already the committed one, or
|
|
245
|
+
* leaving a row nobody edited, says nothing.
|
|
246
|
+
*
|
|
247
|
+
* `composed: false`, like the native event this stands in for. It is
|
|
248
|
+
* dispatched on the host, so a consumer hears it.
|
|
249
|
+
*/
|
|
250
|
+
private commit;
|
|
251
|
+
/**
|
|
252
|
+
* Reports the code and a verdict on it.
|
|
253
|
+
*
|
|
254
|
+
* **A half-entered code is invalid whether or not it is required, and that is
|
|
255
|
+
* the platform's answer rather than ours.** It looked like an oversight worth
|
|
256
|
+
* a question: `required` guards `valueMissing` and nothing guards `tooShort`,
|
|
257
|
+
* so an optional code is refused for being half filled. Measured in Chromium
|
|
258
|
+
* against a native `<input minlength="4">` with real keystrokes, which is the
|
|
259
|
+
* feature this is the same shape as:
|
|
260
|
+
*
|
|
261
|
+
* | | optional | required |
|
|
262
|
+
* |---|---|---|
|
|
263
|
+
* | typed `12` | `tooShort`, invalid | `tooShort`, invalid |
|
|
264
|
+
* | left empty | valid | `valueMissing` |
|
|
265
|
+
* | typed `1234` | valid | valid |
|
|
266
|
+
*
|
|
267
|
+
* So `required` decides whether *nothing* is acceptable, and the length rule
|
|
268
|
+
* applies to anything that is not nothing. That is the right split for a code
|
|
269
|
+
* as well: two of four characters is not an optional code omitted, it is a
|
|
270
|
+
* code got wrong, and submitting it would send a fragment. The gate on the
|
|
271
|
+
* message is `touched` rather than `required`, which is what stops a reader
|
|
272
|
+
* being told off before they have had a go.
|
|
273
|
+
*
|
|
274
|
+
* `execCommand('insertText')` is not enough to measure this: `tooShort`
|
|
275
|
+
* applies only to a value the user edited, and the first run of the probe
|
|
276
|
+
* reported every case valid because nothing had set that flag.
|
|
277
|
+
*/
|
|
278
|
+
private sync;
|
|
279
|
+
/** Puts the caret in the first empty box, which is where a reader resumes. */
|
|
280
|
+
focus(options?: FocusOptions): void;
|
|
281
|
+
/** Empties every box and returns to the first. */
|
|
282
|
+
clear(): void;
|
|
283
|
+
protected firstUpdated(changed: PropertyValues): void;
|
|
284
|
+
protected updated(changed: PropertyValues): void;
|
|
285
|
+
protected render(): TemplateResult;
|
|
286
|
+
}
|
|
287
|
+
declare global {
|
|
288
|
+
interface HTMLElementTagNameMap {
|
|
289
|
+
'helix-headless-pin-input': HelixHeadlessPinInput;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
export {};
|