@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,287 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { closestInstance, customElement, HelixElement, MixinCollection, MixinControllerActive, scrollItemIntoView, } from '@fusion.dev/helix-core';
|
|
8
|
+
import { html, nothing } from 'lit';
|
|
9
|
+
import { property } from 'lit/decorators.js';
|
|
10
|
+
import { HelixHeadlessTreeItem } from '../item/tree-item.js';
|
|
11
|
+
/** Keys the tree handles, per the APG tree pattern. */
|
|
12
|
+
const KEYS = new Set([
|
|
13
|
+
'ArrowDown',
|
|
14
|
+
'ArrowUp',
|
|
15
|
+
'ArrowRight',
|
|
16
|
+
'ArrowLeft',
|
|
17
|
+
'Home',
|
|
18
|
+
'End',
|
|
19
|
+
'Enter',
|
|
20
|
+
' ',
|
|
21
|
+
]);
|
|
22
|
+
/**
|
|
23
|
+
* @summary A tree of items, navigable entirely from the keyboard.
|
|
24
|
+
*
|
|
25
|
+
* @description
|
|
26
|
+
* Focus is a single tab stop, moved with the arrow keys, which is what the tree
|
|
27
|
+
* pattern requires: a sidebar of forty items should not be forty presses of Tab
|
|
28
|
+
* to get past. The tree owns which item is the tab stop and moves it as focus
|
|
29
|
+
* moves, so the browser's own focus order is never fought with.
|
|
30
|
+
*
|
|
31
|
+
* Items are found with `instanceof`, never by tag name, so the headless tier
|
|
32
|
+
* does not learn about the styled one.
|
|
33
|
+
*
|
|
34
|
+
* @since 0.1.0
|
|
35
|
+
* @status experimental
|
|
36
|
+
* @category navigation
|
|
37
|
+
* @aliases FileTree, Navigation tree
|
|
38
|
+
* @documentation https://helix.fusion.dev/components/tree
|
|
39
|
+
*
|
|
40
|
+
* @slot - The tree's items.
|
|
41
|
+
*
|
|
42
|
+
* @event {HelixActivateEvent} helix-activate - Fired once the current one has moved, so the element already holds it.
|
|
43
|
+
* @event {HelixBeforeActivateEvent} helix-before-activate - Fired before the current node moves, and cancelable. The only way to refuse one.
|
|
44
|
+
* @event {HelixSelectEvent} helix-select - Fired when an item is chosen. Dispatched by the item and listened for here, because the tree is what a consumer holds a reference to. Cancelable: refusing it takes the decision and nothing moves.
|
|
45
|
+
*
|
|
46
|
+
* @csspart empty - Shown when there are no rows to show.
|
|
47
|
+
* @csspart loading - Shown while the rows are still on their way.
|
|
48
|
+
* @csspart tree - The tree container.
|
|
49
|
+
*/
|
|
50
|
+
let HelixHeadlessTree = class HelixHeadlessTree extends MixinCollection(MixinControllerActive(HelixElement)) {
|
|
51
|
+
constructor() {
|
|
52
|
+
super(...arguments);
|
|
53
|
+
/**
|
|
54
|
+
* Accessible name for the tree.
|
|
55
|
+
*/
|
|
56
|
+
this.label = 'Tree';
|
|
57
|
+
/* Through the mixin, so a consumer can refuse the change. It was written
|
|
58
|
+
straight from the event, the same way Tabs did, which made `helix-before-activate`
|
|
59
|
+
an announcement nobody could answer. */
|
|
60
|
+
this.handleSelection = (event) => {
|
|
61
|
+
this.requestActive(event.detail.value);
|
|
62
|
+
this.syncItems();
|
|
63
|
+
};
|
|
64
|
+
this.handleKeydown = (event) => {
|
|
65
|
+
/* The innermost item the press came from, which `find` could not give.
|
|
66
|
+
*
|
|
67
|
+
* `items` is every tree item in document order and a nested one is inside
|
|
68
|
+
* all of its ancestors, so `entry.contains(target)` matched the outermost
|
|
69
|
+
* ancestor first: every key pressed on a nested node moved the root of its
|
|
70
|
+
* branch instead. The deeper the node, the further the answer was wrong,
|
|
71
|
+
* and the shallow cases it was written against all looked right.
|
|
72
|
+
*
|
|
73
|
+
* `closestInstance` walks up by identity and crosses shadow roots on the
|
|
74
|
+
* way, which is the util that exists for exactly this. `closest('*')` was
|
|
75
|
+
* also a no-op: it returns the element it was called on. */
|
|
76
|
+
const current = closestInstance(event.target, HelixHeadlessTreeItem);
|
|
77
|
+
if (!current || !this.items.includes(current) || !KEYS.has(event.key)) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (event.key === 'ArrowDown') {
|
|
81
|
+
this.move(current, 1);
|
|
82
|
+
}
|
|
83
|
+
else if (event.key === 'ArrowUp') {
|
|
84
|
+
this.move(current, -1);
|
|
85
|
+
}
|
|
86
|
+
else if (event.key === 'Home') {
|
|
87
|
+
this.focusOn(this.visibleItems[0]);
|
|
88
|
+
}
|
|
89
|
+
else if (event.key === 'End') {
|
|
90
|
+
this.focusOn(this.visibleItems.at(-1));
|
|
91
|
+
}
|
|
92
|
+
else if (event.key === 'ArrowRight') {
|
|
93
|
+
// Open a closed branch, then step into it. Two presses rather than one
|
|
94
|
+
// that does both, which is what the pattern specifies.
|
|
95
|
+
if (current.isBranch && !current.open) {
|
|
96
|
+
current.requestOpen(true);
|
|
97
|
+
this.syncItems();
|
|
98
|
+
}
|
|
99
|
+
else if (current.isBranch) {
|
|
100
|
+
this.move(current, 1);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if (event.key === 'ArrowLeft') {
|
|
104
|
+
if (current.isBranch && current.open) {
|
|
105
|
+
current.requestOpen(false);
|
|
106
|
+
this.syncItems();
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
const parent = closestInstance(current.parentElement, HelixHeadlessTreeItem);
|
|
110
|
+
this.focusOn(parent instanceof HelixHeadlessTreeItem ? parent : undefined);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
if (current.isBranch) {
|
|
115
|
+
current.toggleOpen();
|
|
116
|
+
this.syncItems();
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
/* `activate`, not `select`. Enter announced the choice and stopped
|
|
120
|
+
there, so a tree used as navigation could be walked with the arrows
|
|
121
|
+
and never entered: the pointer had a link under it to press and the
|
|
122
|
+
keyboard had nothing. */
|
|
123
|
+
current.activate();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
event.preventDefault();
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* A branch opened or closed, whoever did it.
|
|
130
|
+
*
|
|
131
|
+
* The keyboard paths called `syncItems` by hand and the pointer path did not,
|
|
132
|
+
* so collapsing a branch by clicking its chevron left the tab stop on a row
|
|
133
|
+
* inside the subtree that had just been hidden: the tree kept its one stop
|
|
134
|
+
* and the stop was on something nobody could see or reach. Listening for the
|
|
135
|
+
* item's own open events covers every way a branch can move, including a
|
|
136
|
+
* consumer setting `open` directly.
|
|
137
|
+
*/
|
|
138
|
+
this.handleBranch = () => {
|
|
139
|
+
this.syncItems();
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Every item, in the order a reader moving down would meet them.
|
|
144
|
+
*
|
|
145
|
+
* Selected by tag rather than by walking everything and filtering. `'*'` built
|
|
146
|
+
* an array of every descendant element in the tree, labels and icons and
|
|
147
|
+
* whatever a consumer slotted into a row included, and threw most of it away;
|
|
148
|
+
* on a tree of any size that is the array a single arrow press rebuilds.
|
|
149
|
+
*
|
|
150
|
+
* The two tag names rather than `instanceof` on everything: a styled
|
|
151
|
+
* `helix-tree-item` extends the base, so both names are needed, and the
|
|
152
|
+
* `instanceof` stays as the type guard because a consumer can write either
|
|
153
|
+
* tag and neither selector proves what the element is.
|
|
154
|
+
*/
|
|
155
|
+
get items() {
|
|
156
|
+
return [...this.querySelectorAll('helix-tree-item, helix-headless-tree-item')].filter((node) => node instanceof HelixHeadlessTreeItem);
|
|
157
|
+
}
|
|
158
|
+
/** Items a reader can actually reach: not inside a collapsed branch. */
|
|
159
|
+
get visibleItems() {
|
|
160
|
+
return this.items.filter((item) => {
|
|
161
|
+
let parent = item.parentElement;
|
|
162
|
+
while (parent && parent !== this) {
|
|
163
|
+
if (parent instanceof HelixHeadlessTreeItem && !parent.open) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
parent = parent.parentElement;
|
|
167
|
+
}
|
|
168
|
+
return true;
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Pushes tree-owned state down: which item is selected, which holds the tab
|
|
173
|
+
* stop, and how deep each one sits.
|
|
174
|
+
*
|
|
175
|
+
* Depth is computed here rather than by each item counting its own ancestors,
|
|
176
|
+
* so an item moved in the tree gets the right indent without knowing it moved.
|
|
177
|
+
*/
|
|
178
|
+
syncItems() {
|
|
179
|
+
const visible = this.visibleItems;
|
|
180
|
+
/* Through the mixin, which resolves an exact match and otherwise falls back
|
|
181
|
+
to the first item. The comment here used to add "which skips a disabled
|
|
182
|
+
one", and a tree item has no `disabled` property at all, so the claim was
|
|
183
|
+
about a check that could not be running. `Tree.Item` is the only
|
|
184
|
+
selectable row in the library without one, which is worth knowing and is
|
|
185
|
+
not this line's business to fix. */
|
|
186
|
+
const chosen = this.resolveActive(visible);
|
|
187
|
+
/* The keyboard keeps its place. The stop was bound to the selection on
|
|
188
|
+
every sync, so a branch opening or a child arriving threw the reader back
|
|
189
|
+
to the selected row from wherever they had arrowed to. It only moves when
|
|
190
|
+
the row holding it is no longer reachable. */
|
|
191
|
+
const held = visible.find((item) => item.focusable);
|
|
192
|
+
const stop = held ?? chosen;
|
|
193
|
+
for (const item of this.items) {
|
|
194
|
+
item.selected = item.value !== '' && item.value === this.active;
|
|
195
|
+
item.focusable = item === stop;
|
|
196
|
+
let level = 1;
|
|
197
|
+
let parent = item.parentElement;
|
|
198
|
+
while (parent && parent !== this) {
|
|
199
|
+
if (parent instanceof HelixHeadlessTreeItem) {
|
|
200
|
+
level += 1;
|
|
201
|
+
}
|
|
202
|
+
parent = parent.parentElement;
|
|
203
|
+
}
|
|
204
|
+
item.level = level;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
move(from, delta) {
|
|
208
|
+
const visible = this.visibleItems;
|
|
209
|
+
const index = visible.indexOf(from);
|
|
210
|
+
const next = visible[Math.min(visible.length - 1, Math.max(0, index + delta))];
|
|
211
|
+
this.focusOn(next);
|
|
212
|
+
}
|
|
213
|
+
focusOn(item) {
|
|
214
|
+
if (!item) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
for (const entry of this.items) {
|
|
218
|
+
entry.focusable = entry === item;
|
|
219
|
+
}
|
|
220
|
+
item.focusItem();
|
|
221
|
+
/* And bring it into view, which arrow keys through a long tree did not do
|
|
222
|
+
at all: focus moved to an item below the fold and the tree stayed where
|
|
223
|
+
it was, so a reader navigating a sidebar of forty items was moving
|
|
224
|
+
something they could not see.
|
|
225
|
+
|
|
226
|
+
Not `scrollIntoView`, which scrolls every scrollable ancestor including
|
|
227
|
+
the page. A reader who pressed Down in a sidebar did not ask the document
|
|
228
|
+
to move. */
|
|
229
|
+
scrollItemIntoView(item, { padding: 4 });
|
|
230
|
+
}
|
|
231
|
+
connectedCallback() {
|
|
232
|
+
super.connectedCallback();
|
|
233
|
+
this.addEventListener('helix-select', this.handleSelection);
|
|
234
|
+
this.addEventListener('helix-before-open', this.handleBranch);
|
|
235
|
+
this.addEventListener('helix-before-close', this.handleBranch);
|
|
236
|
+
this.addEventListener('keydown', this.handleKeydown);
|
|
237
|
+
/* Nested items arrive on a *branch's* slot, not on this element's, so the
|
|
238
|
+
root's `slotchange` never fires for them: a subtree rendered after first
|
|
239
|
+
paint got no `level`, no `selected` and no `focusable`, and sat at the
|
|
240
|
+
wrong indent with no way into it. A framework filling a branch on demand,
|
|
241
|
+
which is what a lazy tree is, hit this every time. */
|
|
242
|
+
this.watcher = new MutationObserver(() => this.syncItems());
|
|
243
|
+
this.watcher.observe(this, { childList: true, subtree: true });
|
|
244
|
+
}
|
|
245
|
+
disconnectedCallback() {
|
|
246
|
+
super.disconnectedCallback();
|
|
247
|
+
this.removeEventListener('helix-select', this.handleSelection);
|
|
248
|
+
this.removeEventListener('helix-before-open', this.handleBranch);
|
|
249
|
+
this.removeEventListener('helix-before-close', this.handleBranch);
|
|
250
|
+
this.removeEventListener('keydown', this.handleKeydown);
|
|
251
|
+
this.watcher?.disconnect();
|
|
252
|
+
this.watcher = undefined;
|
|
253
|
+
}
|
|
254
|
+
firstUpdated(changed) {
|
|
255
|
+
super.firstUpdated(changed);
|
|
256
|
+
this.syncItems();
|
|
257
|
+
}
|
|
258
|
+
updated(changed) {
|
|
259
|
+
super.updated(changed);
|
|
260
|
+
if (changed.has('active')) {
|
|
261
|
+
this.syncItems();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
render() {
|
|
265
|
+
return html `<div
|
|
266
|
+
part="tree"
|
|
267
|
+
role="tree"
|
|
268
|
+
aria-busy=${this.loading ? 'true' : nothing}
|
|
269
|
+
aria-label=${this.label}
|
|
270
|
+
>
|
|
271
|
+
<slot
|
|
272
|
+
@slotchange=${(event) => {
|
|
273
|
+
this.countRows(event);
|
|
274
|
+
this.syncItems();
|
|
275
|
+
}}
|
|
276
|
+
></slot>
|
|
277
|
+
${this.renderStatus(this.hasRows)}
|
|
278
|
+
</div>`;
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
__decorate([
|
|
282
|
+
property()
|
|
283
|
+
], HelixHeadlessTree.prototype, "label", void 0);
|
|
284
|
+
HelixHeadlessTree = __decorate([
|
|
285
|
+
customElement('helix-headless-tree')
|
|
286
|
+
], HelixHeadlessTree);
|
|
287
|
+
export { HelixHeadlessTree };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './root/trend-root.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './root/trend-root.js';
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { HelixElement } from '@fusion.dev/helix-core';
|
|
2
|
+
import { type TemplateResult } from 'lit';
|
|
3
|
+
/**
|
|
4
|
+
* @summary Which way a measurement moved, and whether that is good news.
|
|
5
|
+
*
|
|
6
|
+
* @description
|
|
7
|
+
* Three parts: a direction that is up, down or neutral, the metric that moved,
|
|
8
|
+
* and a label saying over what. The arrow carries the direction and its color
|
|
9
|
+
* carries the judgment, and the two are separate properties because they are
|
|
10
|
+
* separate facts.
|
|
11
|
+
*
|
|
12
|
+
* **`good` is absent by default, so an unjudged trend is gray.** Every
|
|
13
|
+
* dashboard convention says up is green, and for churn, latency, error rate,
|
|
14
|
+
* cost and bounce rate that convention is a lie told in the most legible color
|
|
15
|
+
* on the page. A component that guesses is wrong roughly a third of the time
|
|
16
|
+
* and silent about it; one that waits to be told is uninformative until it is,
|
|
17
|
+
* which is the cheaper failure. State the metric's polarity once and the
|
|
18
|
+
* component does the part that varies.
|
|
19
|
+
*
|
|
20
|
+
* The direction is also written as a word, because a coloured arrow says
|
|
21
|
+
* nothing to a reader who is not looking at it. `part="direction"` is what the
|
|
22
|
+
* styled tier clips out of sight and leaves in the accessibility tree.
|
|
23
|
+
*
|
|
24
|
+
* Both the metric and the label are bare slots. An element whose only job is to
|
|
25
|
+
* assign itself a slot on connect gives its own host an attribute after
|
|
26
|
+
* upgrade, which a React consumer's server markup never had.
|
|
27
|
+
*
|
|
28
|
+
* @since 0.1.0
|
|
29
|
+
* @status stable
|
|
30
|
+
* @category charts
|
|
31
|
+
* @aliases Delta, Change, Movement
|
|
32
|
+
* @documentation https://helix.fusion.dev/components/trend
|
|
33
|
+
*
|
|
34
|
+
* @slot - The metric that moved.
|
|
35
|
+
* @slot label - What it moved over.
|
|
36
|
+
*
|
|
37
|
+
* @csspart direction - The direction as a word, for readers who are not looking.
|
|
38
|
+
* @csspart icon - The arrow.
|
|
39
|
+
*/
|
|
40
|
+
export declare class HelixHeadlessTrend extends HelixElement {
|
|
41
|
+
/**
|
|
42
|
+
* Which way the measurement moved.
|
|
43
|
+
*
|
|
44
|
+
* Absent is neutral, so a trend with nothing to report draws a bar rather
|
|
45
|
+
* than picking a direction. Optional rather than defaulted for the reason
|
|
46
|
+
* `Stat.direction` is: a reflecting property with a default writes its
|
|
47
|
+
* attribute onto the host the moment the element upgrades, and the host is
|
|
48
|
+
* markup the consumer rendered, which React compares against what it rendered
|
|
49
|
+
* and reports as a hydration mismatch.
|
|
50
|
+
*/
|
|
51
|
+
direction?: 'down' | 'neutral' | 'up';
|
|
52
|
+
/**
|
|
53
|
+
* Which direction is the improvement, for this metric.
|
|
54
|
+
*
|
|
55
|
+
* Absent states the movement without judging it, which is the honest default:
|
|
56
|
+
* revenue up is good news and latency up is bad news, and only the consumer
|
|
57
|
+
* knows which one this is. Set it once per metric and it holds while the
|
|
58
|
+
* direction changes underneath.
|
|
59
|
+
*/
|
|
60
|
+
good?: 'down' | 'up';
|
|
61
|
+
protected render(): TemplateResult;
|
|
62
|
+
}
|
|
63
|
+
declare global {
|
|
64
|
+
interface HTMLElementTagNameMap {
|
|
65
|
+
'helix-headless-trend': HelixHeadlessTrend;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { customElement, HelixElement } from '@fusion.dev/helix-core';
|
|
8
|
+
import { arrowDown, arrowUp, minus } from '@fusion.dev/helix-icons';
|
|
9
|
+
import { html } from 'lit';
|
|
10
|
+
import { property } from 'lit/decorators.js';
|
|
11
|
+
import { unsafeSVG } from 'lit/directives/unsafe-svg.js';
|
|
12
|
+
/** The three directions a measurement can have moved, and how each is drawn. */
|
|
13
|
+
const DIRECTIONS = {
|
|
14
|
+
down: { icon: arrowDown, word: 'Down' },
|
|
15
|
+
neutral: { icon: minus, word: 'Unchanged' },
|
|
16
|
+
up: { icon: arrowUp, word: 'Up' },
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Reads the direction, treating an absent or unrecognised one as neutral.
|
|
20
|
+
*
|
|
21
|
+
* The cast is a lie the fallback catches: an attribute is a string and a
|
|
22
|
+
* consumer can write anything into it, so an unrecognised word has to draw
|
|
23
|
+
* something rather than fail to index and throw inside `render`.
|
|
24
|
+
*/
|
|
25
|
+
const readDirection = (value) => DIRECTIONS[value] ?? DIRECTIONS.neutral;
|
|
26
|
+
/**
|
|
27
|
+
* @summary Which way a measurement moved, and whether that is good news.
|
|
28
|
+
*
|
|
29
|
+
* @description
|
|
30
|
+
* Three parts: a direction that is up, down or neutral, the metric that moved,
|
|
31
|
+
* and a label saying over what. The arrow carries the direction and its color
|
|
32
|
+
* carries the judgment, and the two are separate properties because they are
|
|
33
|
+
* separate facts.
|
|
34
|
+
*
|
|
35
|
+
* **`good` is absent by default, so an unjudged trend is gray.** Every
|
|
36
|
+
* dashboard convention says up is green, and for churn, latency, error rate,
|
|
37
|
+
* cost and bounce rate that convention is a lie told in the most legible color
|
|
38
|
+
* on the page. A component that guesses is wrong roughly a third of the time
|
|
39
|
+
* and silent about it; one that waits to be told is uninformative until it is,
|
|
40
|
+
* which is the cheaper failure. State the metric's polarity once and the
|
|
41
|
+
* component does the part that varies.
|
|
42
|
+
*
|
|
43
|
+
* The direction is also written as a word, because a coloured arrow says
|
|
44
|
+
* nothing to a reader who is not looking at it. `part="direction"` is what the
|
|
45
|
+
* styled tier clips out of sight and leaves in the accessibility tree.
|
|
46
|
+
*
|
|
47
|
+
* Both the metric and the label are bare slots. An element whose only job is to
|
|
48
|
+
* assign itself a slot on connect gives its own host an attribute after
|
|
49
|
+
* upgrade, which a React consumer's server markup never had.
|
|
50
|
+
*
|
|
51
|
+
* @since 0.1.0
|
|
52
|
+
* @status stable
|
|
53
|
+
* @category charts
|
|
54
|
+
* @aliases Delta, Change, Movement
|
|
55
|
+
* @documentation https://helix.fusion.dev/components/trend
|
|
56
|
+
*
|
|
57
|
+
* @slot - The metric that moved.
|
|
58
|
+
* @slot label - What it moved over.
|
|
59
|
+
*
|
|
60
|
+
* @csspart direction - The direction as a word, for readers who are not looking.
|
|
61
|
+
* @csspart icon - The arrow.
|
|
62
|
+
*/
|
|
63
|
+
let HelixHeadlessTrend = class HelixHeadlessTrend extends HelixElement {
|
|
64
|
+
render() {
|
|
65
|
+
const direction = readDirection(this.direction);
|
|
66
|
+
/* Silent on a neutral move, whatever `good` says. Neither better nor worse
|
|
67
|
+
is a reading of "unchanged" that the word already carries. */
|
|
68
|
+
const judgment = this.good && this.direction && this.direction !== 'neutral'
|
|
69
|
+
? this.good === this.direction
|
|
70
|
+
? ', better'
|
|
71
|
+
: ', worse'
|
|
72
|
+
: '';
|
|
73
|
+
/* One interpolation rather than two, so the phrase is one text node.
|
|
74
|
+
Lit SSR writes a `<!--lit-part-->` marker around every binding, and two
|
|
75
|
+
bindings put a pair of comments between "Up" and ", worse" in the served
|
|
76
|
+
markup. No screen reader is confused by adjacent text nodes, but the
|
|
77
|
+
server output should read as the thing the DOM will hold, and a test
|
|
78
|
+
against it should be able to say so in one string. */
|
|
79
|
+
/* Written out rather than through `drawIcon`, because this one needs a
|
|
80
|
+
`part` and a part behind an interpolation is one the manifest cannot see:
|
|
81
|
+
the helper's `part=${…}` binding took `[part="icon"]` out of the
|
|
82
|
+
stylesheet's reach and `check:selectors` said so. */
|
|
83
|
+
return html `<svg
|
|
84
|
+
aria-hidden="true"
|
|
85
|
+
data-glyph
|
|
86
|
+
fill="currentColor"
|
|
87
|
+
part="icon"
|
|
88
|
+
viewBox=${direction.icon.viewBox}
|
|
89
|
+
>
|
|
90
|
+
${unsafeSVG(direction.icon.content)}
|
|
91
|
+
</svg>
|
|
92
|
+
<span part="direction">${`${direction.word}${judgment}`}</span>
|
|
93
|
+
<slot></slot>
|
|
94
|
+
<slot name="label"></slot>`;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
__decorate([
|
|
98
|
+
property({ reflect: true })
|
|
99
|
+
], HelixHeadlessTrend.prototype, "direction", void 0);
|
|
100
|
+
__decorate([
|
|
101
|
+
property({ reflect: true })
|
|
102
|
+
], HelixHeadlessTrend.prototype, "good", void 0);
|
|
103
|
+
HelixHeadlessTrend = __decorate([
|
|
104
|
+
customElement('helix-headless-trend')
|
|
105
|
+
], HelixHeadlessTrend);
|
|
106
|
+
export { HelixHeadlessTrend };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { HelixHeadlessVideo } from './root/video-root.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { HelixHeadlessVideo } from './root/video-root.js';
|