@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,392 @@
|
|
|
1
|
+
import { HelixElement } from '@fusion.dev/helix-core';
|
|
2
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
|
+
import type { HelixHeadlessTableColumn } from '../../table/column/table-column.js';
|
|
4
|
+
import '../../pagination/index.js';
|
|
5
|
+
import { type DataRow } from './order.js';
|
|
6
|
+
declare const HelixHeadlessDataTable_base: (new (...args: any[]) => import("@fusion.dev/helix-core").CollectionElement) & typeof HelixElement;
|
|
7
|
+
/**
|
|
8
|
+
* @summary A table that owns a result: rows as data, with sort, filter and paging.
|
|
9
|
+
*
|
|
10
|
+
* @description
|
|
11
|
+
* **The schema is markup and the data is a property.** Columns are declared as
|
|
12
|
+
* `helix-table-column` children, because a schema is small, declarative, and
|
|
13
|
+
* something a reader should be able to see in the HTML; rows are handed over as
|
|
14
|
+
* an array, because data is large and a table that draws ten thousand elements
|
|
15
|
+
* cannot window them.
|
|
16
|
+
*
|
|
17
|
+
* ```html
|
|
18
|
+
* <helix-data-table .rows=${rows} sort="name:asc" page-size="20">
|
|
19
|
+
* <helix-table-column field="name" sortable>Name</helix-table-column>
|
|
20
|
+
* <helix-table-column field="size" align="end" sortable .cell=${bytes}>Size</helix-table-column>
|
|
21
|
+
* </helix-data-table>
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* This is the resolution of a deferral rather than a new idea. `helix-table`
|
|
25
|
+
* takes rows as markup and is the right component for a table of twelve things
|
|
26
|
+
* a person wrote out; the repeated `page`, `page-size` and `total` attributes on
|
|
27
|
+
* the three pagination elements are placeholders whose own comments name the fix
|
|
28
|
+
* as "a data table composing a pagination inside itself", and `helix-table`
|
|
29
|
+
* already carried `@aliases DataTable`: a name claimed and not kept.
|
|
30
|
+
*
|
|
31
|
+
* **Sort and filter apply to the whole set, never the page.** Sorting the drawn
|
|
32
|
+
* window is correct on the first screen and wrong on every other one, which is
|
|
33
|
+
* how it survives being looked at. The arithmetic lives in `order.ts` where
|
|
34
|
+
* nothing can see a window, and its spec asserts the composition rather than the
|
|
35
|
+
* three steps, because each step alone passes either way.
|
|
36
|
+
*
|
|
37
|
+
* **What it does not do, stated where a consumer will read it: the cell values
|
|
38
|
+
* do not server-render.** The headings do, because a column renders its own, and
|
|
39
|
+
* the row elements do, because their count comes from `rows`. Reading a cell
|
|
40
|
+
* needs the columns, and the columns are markup children that Lit SSR does not
|
|
41
|
+
* hand this element: `children` is undefined there. So a crawler and a reader on
|
|
42
|
+
* a slow connection see a table of the right shape with nothing in it, which is
|
|
43
|
+
* strictly less than `helix-table` serves for a table whose rows are markup.
|
|
44
|
+
*
|
|
45
|
+
* That is the cost of "the schema is markup and the data is a property". Use
|
|
46
|
+
* `helix-table` where the content has to be in the served HTML and the result is
|
|
47
|
+
* small enough to write out; use this where the result is large, and accept that
|
|
48
|
+
* the first paint is a shell. The obvious workaround, a `columns` property
|
|
49
|
+
* beside the markup columns, is deliberately not offered: this family has
|
|
50
|
+
* already shipped one source of truth for columns splitting into two, nothing
|
|
51
|
+
* checked that they agreed, and a table rendering one way on the server and
|
|
52
|
+
* another in the browser is that failure with a hydration mismatch on top.
|
|
53
|
+
*
|
|
54
|
+
* **Every axis is controlled or uncontrolled, and that is what makes a server
|
|
55
|
+
* mode fall out rather than be bolted on.** `sort`, `filter`, `page` and
|
|
56
|
+
* `page-size` each defer to the consumer when set and seed themselves from a
|
|
57
|
+
* `default-*` when not. A consumer who answers all four holds the data flow:
|
|
58
|
+
* they hear the reader's request, fetch, and hand back a new `rows` with a
|
|
59
|
+
* `total`. Retrofitting that inverts the flow and is a rewrite, so it is here
|
|
60
|
+
* from the start.
|
|
61
|
+
*
|
|
62
|
+
* @since 0.1.0
|
|
63
|
+
* @status experimental
|
|
64
|
+
* @category data
|
|
65
|
+
* @aliases Grid, Result table, Data grid
|
|
66
|
+
* @documentation https://helix.fusion.dev/components/data-table
|
|
67
|
+
*
|
|
68
|
+
* @slot - The columns, declared as `helix-table-column` children.
|
|
69
|
+
* @slot footer - Below the grid, replacing the pagination this would otherwise draw.
|
|
70
|
+
* @slot toolbar - Above the grid, for a search field or actions.
|
|
71
|
+
*
|
|
72
|
+
* @event {HelixFilterEvent} helix-filter - Fired when the query changes, and cancelable.
|
|
73
|
+
* @event {HelixNavigateEvent} helix-navigate - Fired when a reader asks for another page, and cancelable.
|
|
74
|
+
* @event {HelixSortEvent} helix-sort - Fired when a reader asks for a different order, and cancelable.
|
|
75
|
+
*
|
|
76
|
+
* @csspart cell - One cell.
|
|
77
|
+
* @csspart empty - Shown when no rows match.
|
|
78
|
+
* @csspart footer - The region below the grid.
|
|
79
|
+
* @csspart head - The row the column headings sit in. `display: contents`, so it takes no space.
|
|
80
|
+
* @csspart loading - Shown while the rows are still on their way.
|
|
81
|
+
* @csspart pagination - The pagination, where this draws one.
|
|
82
|
+
* @csspart row - One row of data.
|
|
83
|
+
* @csspart table - The grid.
|
|
84
|
+
* @csspart toolbar - The region above the grid.
|
|
85
|
+
*
|
|
86
|
+
* @cssproperty --data-table-template - The column track list this element worked out from the columns declared in it. Written by the component, read by the sheet that paints: a stylesheet takes it to lay the grid out, and setting it does nothing, because the component writes it inline on the very element that reads it and an inline declaration beats any sheet. `--data-table-columns` is the one to set.
|
|
87
|
+
*/
|
|
88
|
+
export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base {
|
|
89
|
+
/**
|
|
90
|
+
* Nothing is assigned by name, so the columns can be put in a header row.
|
|
91
|
+
*
|
|
92
|
+
* `role="columnheader"` under `role="grid"` with no owning row is invalid, and
|
|
93
|
+
* the columns are ordinary children a consumer writes with no `slot`. Manual
|
|
94
|
+
* assignment is the only way to wrap them without editing the consumer's
|
|
95
|
+
* markup, which is a change a React consumer's hydration reports and does not
|
|
96
|
+
* patch up. The same arrangement `helix-table` arrived at, for the same reason.
|
|
97
|
+
*/
|
|
98
|
+
static shadowRootOptions: ShadowRootInit;
|
|
99
|
+
/**
|
|
100
|
+
* The whole result, in the order it arrived.
|
|
101
|
+
*
|
|
102
|
+
* A property and not an attribute: it is an array. Left alone this element
|
|
103
|
+
* filters, sorts and pages it; in `server` mode it is the page the consumer
|
|
104
|
+
* already fetched and none of the three is applied.
|
|
105
|
+
*
|
|
106
|
+
* **Read, never written.** Sorting produces a new array rather than reordering
|
|
107
|
+
* this one, because a consumer's array may be the same object their own state
|
|
108
|
+
* holds and reordering it under them is a mutation they did not ask for.
|
|
109
|
+
*/
|
|
110
|
+
rows: readonly DataRow[];
|
|
111
|
+
/**
|
|
112
|
+
* The field naming a row's stable identity.
|
|
113
|
+
*
|
|
114
|
+
* **Needed before selection exists, not after.** Lit keys the rendered rows by
|
|
115
|
+
* it, so a sort moves a row's element rather than rewriting every cell in
|
|
116
|
+
* place, which is what keeps focus inside a cell and keeps a CSS transition
|
|
117
|
+
* attached to the row it belongs to. Left unset the index is the key, which is
|
|
118
|
+
* correct only while nothing reorders: it is why this defaults to something
|
|
119
|
+
* that works and is worth setting anyway.
|
|
120
|
+
*/
|
|
121
|
+
key: string;
|
|
122
|
+
/**
|
|
123
|
+
* Whether this element does the work or asks the consumer to.
|
|
124
|
+
*
|
|
125
|
+
* `client` filters, sorts and pages `rows` itself. `server` applies none of
|
|
126
|
+
* them: `rows` is the page, `total` is the size of the whole result, and the
|
|
127
|
+
* three events are requests the consumer answers by fetching. Past some size
|
|
128
|
+
* the client cannot hold the data, so this is not an optimization, it is the
|
|
129
|
+
* only mode that works, and it is here from the start because adding it later
|
|
130
|
+
* inverts the data flow.
|
|
131
|
+
*/
|
|
132
|
+
mode: 'client' | 'server';
|
|
133
|
+
/**
|
|
134
|
+
* How many rows the whole result has, where this element cannot count them.
|
|
135
|
+
*
|
|
136
|
+
* Only read in `server` mode, where `rows` is one page and its length says
|
|
137
|
+
* nothing about the result. Ignored in `client` mode rather than trusted,
|
|
138
|
+
* because two sources for one count is the mistake, and here the array is the
|
|
139
|
+
* one that cannot be stale.
|
|
140
|
+
*/
|
|
141
|
+
total: number;
|
|
142
|
+
/**
|
|
143
|
+
* Accessible name for the grid.
|
|
144
|
+
*/
|
|
145
|
+
label: string;
|
|
146
|
+
/**
|
|
147
|
+
* The order, as `field:direction`.
|
|
148
|
+
*
|
|
149
|
+
* Set it and this element defers: a reader's click fires `helix-sort` and
|
|
150
|
+
* changes nothing until a new value arrives. `default-sort` seeds an order this
|
|
151
|
+
* element then owns.
|
|
152
|
+
*
|
|
153
|
+
*
|
|
154
|
+
*/
|
|
155
|
+
get sort(): string;
|
|
156
|
+
set sort(next: string);
|
|
157
|
+
/**
|
|
158
|
+
* Order to open on, where nothing declared one.
|
|
159
|
+
*/
|
|
160
|
+
defaultSort: string;
|
|
161
|
+
/**
|
|
162
|
+
* What the rows are narrowed to, as one query across every column.
|
|
163
|
+
*
|
|
164
|
+
* One query rather than a predicate per column, which is what a reader means
|
|
165
|
+
* by a search box above a table. It matches on each column's ordering value,
|
|
166
|
+
* so search and sort cannot disagree about what a column holds.
|
|
167
|
+
*
|
|
168
|
+
*
|
|
169
|
+
*/
|
|
170
|
+
get filter(): string;
|
|
171
|
+
set filter(next: string);
|
|
172
|
+
/**
|
|
173
|
+
* Query to open with, where nothing declared one.
|
|
174
|
+
*/
|
|
175
|
+
defaultFilter: string;
|
|
176
|
+
/**
|
|
177
|
+
* The page on show, from 1.
|
|
178
|
+
*
|
|
179
|
+
* Clamped on the way out, so what this reports is the page it drew: a
|
|
180
|
+
* bookmarked link to page 99 of a result that has since shrunk reads back as
|
|
181
|
+
* the last page rather than as 99.
|
|
182
|
+
*
|
|
183
|
+
*
|
|
184
|
+
*/
|
|
185
|
+
get page(): number;
|
|
186
|
+
set page(next: number);
|
|
187
|
+
/**
|
|
188
|
+
* Page to open on, where nothing declared one.
|
|
189
|
+
*/
|
|
190
|
+
defaultPage: number;
|
|
191
|
+
/**
|
|
192
|
+
* How many rows a page holds. Zero is every row, which is what "no paging" means.
|
|
193
|
+
*
|
|
194
|
+
* **It announces nothing, and that is not an omission.** Nothing in this
|
|
195
|
+
* element ever asks for a different page size: a size selector is
|
|
196
|
+
* `helix-pagination-size`, which a consumer puts in the `footer` slot and
|
|
197
|
+
* answers themselves. Routing this through `requestChange` would announce an
|
|
198
|
+
* event the element never has cause to fire.
|
|
199
|
+
*/
|
|
200
|
+
get pageSize(): number;
|
|
201
|
+
set pageSize(next: number);
|
|
202
|
+
/**
|
|
203
|
+
* Page size to open with, where nothing declared one.
|
|
204
|
+
*/
|
|
205
|
+
defaultPageSize: number;
|
|
206
|
+
/**
|
|
207
|
+
* Whether to draw a pagination under the grid.
|
|
208
|
+
*
|
|
209
|
+
* On by default once a page size is set, because a paged table with no way to
|
|
210
|
+
* change pages shows a reader the first twenty rows and no way to know there
|
|
211
|
+
* are more. Off for a consumer supplying their own through the `footer` slot,
|
|
212
|
+
* which is why the slot replaces this rather than sitting beside it.
|
|
213
|
+
*/
|
|
214
|
+
get paginated(): boolean;
|
|
215
|
+
set paginated(next: boolean);
|
|
216
|
+
private sortState;
|
|
217
|
+
private filterState;
|
|
218
|
+
private pageState;
|
|
219
|
+
private pageSizeState;
|
|
220
|
+
private paginatedState;
|
|
221
|
+
/** The columns declared as children, in the order they are written. */
|
|
222
|
+
get tableColumns(): HelixHeadlessTableColumn[];
|
|
223
|
+
/** The columns reduced to what the ordering needs. */
|
|
224
|
+
private get axes();
|
|
225
|
+
/** The track list, from the columns if there are any. */
|
|
226
|
+
private get template();
|
|
227
|
+
/**
|
|
228
|
+
* How many rows this draws before it is worth saying something, and why 2,000.
|
|
229
|
+
*
|
|
230
|
+
* Measured 28 Aug 2026 on a four-column grid, mounting and painting: 100 rows
|
|
231
|
+
* in 10.9ms, 500 in 30.2ms, 2,000 in 83.2ms and **5,000 rows as 20,000 cells
|
|
232
|
+
* in 186ms**. It is linear at roughly 37 microseconds a row, so the 100ms an
|
|
233
|
+
* interaction has to stay inside lands near 2,700 and this sits under it.
|
|
234
|
+
* Sorting stays cheap throughout, 23.7ms at five thousand, so the cost is the
|
|
235
|
+
* cells rather than the work over them.
|
|
236
|
+
*/
|
|
237
|
+
private static readonly COMFORTABLE;
|
|
238
|
+
/** Said once per element, so a table that re-renders does not repeat it. */
|
|
239
|
+
private warnedAboutSize;
|
|
240
|
+
/**
|
|
241
|
+
* Says so when a table is asked to draw more than it comfortably can.
|
|
242
|
+
*
|
|
243
|
+
* **The component renders every row it is given and defaults to doing so.**
|
|
244
|
+
* `defaultPageSize` is `0`, so `paginated` is false unless a consumer asks,
|
|
245
|
+
* which means the out-of-the-box arrangement is the unbounded one and nothing
|
|
246
|
+
* about it says that a result of any size will simply be drawn.
|
|
247
|
+
*
|
|
248
|
+
* **Windowing was considered and refused**, which is worth recording because
|
|
249
|
+
* it is the obvious answer. This element already has two: `paginated` with a
|
|
250
|
+
* `page-size`, and `mode="server"` where `rows` is one page, `total` is the
|
|
251
|
+
* whole result and `aria-rowcount` already reports the result rather than the
|
|
252
|
+
* window, which is the hard half of virtualization done correctly. A third
|
|
253
|
+
* mechanism would fight the first two, and virtualizing a grid means variable
|
|
254
|
+
* row heights, a sticky header and keeping `aria-rowindex` honest against a
|
|
255
|
+
* result the element is no longer holding. `VirtualizeController` exists for
|
|
256
|
+
* the case where the rows are a flat list and this is not that. See #326.
|
|
257
|
+
*
|
|
258
|
+
* So the gap was never the capability, it was that nothing said which of the
|
|
259
|
+
* two to reach for. Once per element, in a browser only: a warning during a
|
|
260
|
+
* server render is one nobody can act on and one that would print per request.
|
|
261
|
+
*/
|
|
262
|
+
private warnIfCrowded;
|
|
263
|
+
/**
|
|
264
|
+
* The rows to draw, and the counts around them.
|
|
265
|
+
*
|
|
266
|
+
* In `server` mode this element applies nothing: `rows` is already the page,
|
|
267
|
+
* `total` is the result, and both counts come from the consumer. Anything else
|
|
268
|
+
* would be this element filtering a page it was handed, which narrows one
|
|
269
|
+
* screen and calls it a search.
|
|
270
|
+
*/
|
|
271
|
+
private get view();
|
|
272
|
+
/** How many pages the result makes, which is at least one even when empty. */
|
|
273
|
+
private get pages();
|
|
274
|
+
/**
|
|
275
|
+
* Rows after filtering, computed without paging.
|
|
276
|
+
*
|
|
277
|
+
* Separate from `view` because `pages` needs it and `page` needs `pages`:
|
|
278
|
+
* asking `view` for it would recurse through the clamp in `page`.
|
|
279
|
+
*/
|
|
280
|
+
private get matched();
|
|
281
|
+
/** Emptiness is a fact about the data here, not about slotted children. */
|
|
282
|
+
protected get hasRows(): boolean;
|
|
283
|
+
/**
|
|
284
|
+
* Asks for a different order, and reports whether the request stood.
|
|
285
|
+
*
|
|
286
|
+
* Announced before it is applied, so `preventDefault()` is a refusal and the
|
|
287
|
+
* order does not move, which is what makes a server-side sort expressible: the
|
|
288
|
+
* consumer refuses the local reorder, fetches, and hands back a new set.
|
|
289
|
+
*/
|
|
290
|
+
private requestSort;
|
|
291
|
+
/** Asks for a different query. */
|
|
292
|
+
private requestFilter;
|
|
293
|
+
/** Asks for a different page. */
|
|
294
|
+
private requestPage;
|
|
295
|
+
/**
|
|
296
|
+
* Narrows the rows, from a consumer's own search field.
|
|
297
|
+
*
|
|
298
|
+
* Public because the query lives above the table in every design that has one,
|
|
299
|
+
* and a consumer wiring their own input needs somewhere to send it. Returns
|
|
300
|
+
* whether the change stood, the same as every other request here.
|
|
301
|
+
*/
|
|
302
|
+
search(query: string): boolean;
|
|
303
|
+
/**
|
|
304
|
+
* Cycles the order by one column, which is what a click on its heading means.
|
|
305
|
+
*
|
|
306
|
+
* Ascending, descending, then the order the rows arrived in. Public for the
|
|
307
|
+
* same reason `search` is: a consumer's own heading UI needs a way to ask.
|
|
308
|
+
*/
|
|
309
|
+
toggleSort(field: string): boolean;
|
|
310
|
+
/**
|
|
311
|
+
* The columns into the header row, everything else into the toolbar and footer.
|
|
312
|
+
*
|
|
313
|
+
* Manual assignment, so a consumer's own markup is never written to.
|
|
314
|
+
*/
|
|
315
|
+
private assign;
|
|
316
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
317
|
+
/**
|
|
318
|
+
* Says on the toolbar and the footer whether anything is in them.
|
|
319
|
+
*
|
|
320
|
+
* **The stylesheet used to ask, and could not.** It read
|
|
321
|
+
* `[part="toolbar"]:has(> slot:not(:has(*)))`, which is two faults at once:
|
|
322
|
+
* `:has()` may not be nested inside `:has()`, so the selector failed to parse
|
|
323
|
+
* and the whole rule was discarded; and `slot:not(:has(*))` is as true of a
|
|
324
|
+
* filled slot as of an empty one, because assigned nodes are not a slot's DOM
|
|
325
|
+
* children. Both verified in a browser. A table with no toolbar paid the gap
|
|
326
|
+
* above the grid for one that was not there.
|
|
327
|
+
*/
|
|
328
|
+
private markEmpty;
|
|
329
|
+
/**
|
|
330
|
+
* One region, hidden when its slot holds nothing and nothing of ours fills it.
|
|
331
|
+
*
|
|
332
|
+
* `hidden` beside the `data-empty` mirror: `data-empty` is the hook the styled
|
|
333
|
+
* sheet reads, and this tier ships no sheet, so an empty region left in the box
|
|
334
|
+
* tree would be a gap a headless consumer cannot close without knowing to look
|
|
335
|
+
* for it. The styled rule stays too, because that sheet sets `display` on these
|
|
336
|
+
* parts and therefore outranks the UA's `[hidden]` one.
|
|
337
|
+
*/
|
|
338
|
+
private markRegion;
|
|
339
|
+
protected updated(changed: PropertyValues): void;
|
|
340
|
+
/** Columns arrive from the light DOM, which changes no property here. */
|
|
341
|
+
private readonly handleSlotChange;
|
|
342
|
+
private renderCell;
|
|
343
|
+
private renderRows;
|
|
344
|
+
/**
|
|
345
|
+
* A row's place in the whole result, counting the header as row 1.
|
|
346
|
+
*
|
|
347
|
+
* **The number describes the result and not the window**, which is the whole
|
|
348
|
+
* reason a virtualized or paged grid needs `aria-rowindex` at all: a screen
|
|
349
|
+
* reader on page three should hear row 41, and a grid whose indices restart at
|
|
350
|
+
* every page tells a reader the result is twenty rows long however many it has.
|
|
351
|
+
*/
|
|
352
|
+
private rowIndex;
|
|
353
|
+
protected render(): TemplateResult;
|
|
354
|
+
/**
|
|
355
|
+
* Listens on the host, not on the slot the columns are assigned to.
|
|
356
|
+
*
|
|
357
|
+
* The columns are light-DOM children of this element, so their events bubble
|
|
358
|
+
* to it directly and the shadow tree is not involved at all. Bound on the
|
|
359
|
+
* `<slot>` instead, this works in a browser, because an event from a slotted
|
|
360
|
+
* node passes through the slot in the flattened tree, and does not work in
|
|
361
|
+
* happy-dom, which does not implement that propagation: measured, the host
|
|
362
|
+
* hears the click and the slot does not. A spec written against the slot fails
|
|
363
|
+
* in the suite while the component is correct, and the same trust in the
|
|
364
|
+
* flattened tree could as easily have gone the other way.
|
|
365
|
+
*
|
|
366
|
+
* Added here rather than in the template because there is nothing in the
|
|
367
|
+
* shadow tree to attach it to, and removed on disconnect because this element
|
|
368
|
+
* is the listener's owner rather than its subject.
|
|
369
|
+
*/
|
|
370
|
+
connectedCallback(): void;
|
|
371
|
+
disconnectedCallback(): void;
|
|
372
|
+
/** A click on a sortable heading. */
|
|
373
|
+
private readonly handleHeadClick;
|
|
374
|
+
/** The same on Enter and Space, since a heading that sorts is a control. */
|
|
375
|
+
private readonly handleHeadKey;
|
|
376
|
+
private columnFrom;
|
|
377
|
+
/**
|
|
378
|
+
* The composed pagination's request, relayed as this element's own.
|
|
379
|
+
*
|
|
380
|
+
* Stopped rather than allowed to bubble, because two `helix-navigate` events
|
|
381
|
+
* for one click would reach a consumer's handler twice: the pagination's, and
|
|
382
|
+
* this element's after it. The one that leaves carries this element's page
|
|
383
|
+
* bounds rather than the inner component's.
|
|
384
|
+
*/
|
|
385
|
+
private readonly handleNavigate;
|
|
386
|
+
}
|
|
387
|
+
declare global {
|
|
388
|
+
interface HTMLElementTagNameMap {
|
|
389
|
+
'helix-headless-data-table': HelixHeadlessDataTable;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
export {};
|