@aceshooting/lyra-ui 1.2.0 → 2.1.0
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/README.md +98 -14
- package/custom-elements.json +30279 -12124
- package/dist/components/app-rail/app-rail-item.d.ts +30 -0
- package/dist/components/app-rail/app-rail-item.js +68 -0
- package/dist/components/app-rail/app-rail-item.styles.d.ts +1 -0
- package/dist/components/app-rail/app-rail-item.styles.js +65 -0
- package/dist/components/app-rail/app-rail.d.ts +168 -0
- package/dist/components/app-rail/app-rail.js +419 -0
- package/dist/components/app-rail/app-rail.styles.d.ts +1 -0
- package/dist/components/app-rail/app-rail.styles.js +128 -0
- package/dist/components/attachment-chip/attachment-chip.d.ts +141 -0
- package/dist/components/attachment-chip/attachment-chip.js +356 -0
- package/dist/components/attachment-chip/attachment-chip.styles.d.ts +1 -0
- package/dist/components/attachment-chip/attachment-chip.styles.js +184 -0
- package/dist/components/attachment-trigger/attachment-trigger.d.ts +96 -0
- package/dist/components/attachment-trigger/attachment-trigger.js +270 -0
- package/dist/components/attachment-trigger/attachment-trigger.styles.d.ts +1 -0
- package/dist/components/attachment-trigger/attachment-trigger.styles.js +90 -0
- package/dist/components/chart/bar-chart.js +2 -18
- package/dist/components/chart/box-plot.d.ts +25 -1
- package/dist/components/chart/box-plot.js +147 -7
- package/dist/components/chart/box-plot.styles.js +13 -0
- package/dist/components/chart/bubble-chart.js +2 -18
- package/dist/components/chart/chart-loader.d.ts +44 -13
- package/dist/components/chart/chart-loader.js +65 -18
- package/dist/components/chart/chart.d.ts +55 -12
- package/dist/components/chart/chart.js +247 -49
- package/dist/components/chart/doughnut-chart.js +2 -18
- package/dist/components/chart/histogram-bin.d.ts +7 -1
- package/dist/components/chart/histogram-bin.js +32 -14
- package/dist/components/chart/histogram.js +8 -16
- package/dist/components/chart/line-chart.js +2 -18
- package/dist/components/chart/lite-chart.d.ts +134 -3
- package/dist/components/chart/lite-chart.js +382 -67
- package/dist/components/chart/lite-chart.styles.js +9 -0
- package/dist/components/chart/pie-chart.js +2 -18
- package/dist/components/chart/polar-area-chart.js +2 -18
- package/dist/components/chart/radar-chart.js +2 -18
- package/dist/components/chart/scatter-chart.js +2 -18
- package/dist/components/chat-composer/chat-composer.d.ts +133 -0
- package/dist/components/chat-composer/chat-composer.js +366 -0
- package/dist/components/chat-composer/chat-composer.styles.d.ts +1 -0
- package/dist/components/chat-composer/chat-composer.styles.js +145 -0
- package/dist/components/chat-message/chat-message.d.ts +141 -0
- package/dist/components/chat-message/chat-message.js +331 -0
- package/dist/components/chat-message/chat-message.styles.d.ts +1 -0
- package/dist/components/chat-message/chat-message.styles.js +203 -0
- package/dist/components/checkbox/checkbox.d.ts +117 -0
- package/dist/components/checkbox/checkbox.js +353 -0
- package/dist/components/checkbox/checkbox.styles.d.ts +1 -0
- package/dist/components/checkbox/checkbox.styles.js +77 -0
- package/dist/components/chip/chip-group.d.ts +56 -0
- package/dist/components/chip/chip-group.js +130 -0
- package/dist/components/chip/chip-group.styles.d.ts +1 -0
- package/dist/components/chip/chip-group.styles.js +57 -0
- package/dist/components/chip/chip.d.ts +64 -0
- package/dist/components/chip/chip.js +122 -0
- package/dist/components/chip/chip.styles.d.ts +1 -0
- package/dist/components/chip/chip.styles.js +115 -0
- package/dist/components/citation-badge/citation-badge.d.ts +113 -0
- package/dist/components/citation-badge/citation-badge.js +318 -0
- package/dist/components/citation-badge/citation-badge.styles.d.ts +1 -0
- package/dist/components/citation-badge/citation-badge.styles.js +96 -0
- package/dist/components/code-block/code-block.d.ts +127 -0
- package/dist/components/code-block/code-block.js +382 -0
- package/dist/components/code-block/code-block.styles.d.ts +1 -0
- package/dist/components/code-block/code-block.styles.js +187 -0
- package/dist/components/code-block/code-loader.d.ts +87 -0
- package/dist/components/code-block/code-loader.js +142 -0
- package/dist/components/combobox/combobox.d.ts +65 -6
- package/dist/components/combobox/combobox.js +258 -48
- package/dist/components/combobox/combobox.styles.js +3 -3
- package/dist/components/combobox/option.d.ts +5 -1
- package/dist/components/combobox/option.js +35 -0
- package/dist/components/context-meter/context-meter.d.ts +53 -0
- package/dist/components/context-meter/context-meter.js +159 -0
- package/dist/components/context-meter/context-meter.styles.d.ts +1 -0
- package/dist/components/context-meter/context-meter.styles.js +114 -0
- package/dist/components/conversation-item/conversation-item.d.ts +125 -0
- package/dist/components/conversation-item/conversation-item.js +331 -0
- package/dist/components/conversation-item/conversation-item.styles.d.ts +1 -0
- package/dist/components/conversation-item/conversation-item.styles.js +155 -0
- package/dist/components/date-picker/calendar-core.d.ts +24 -0
- package/dist/components/date-picker/calendar-core.js +51 -4
- package/dist/components/date-picker/date-input.d.ts +100 -9
- package/dist/components/date-picker/date-input.js +383 -66
- package/dist/components/date-picker/date-picker.d.ts +35 -4
- package/dist/components/date-picker/date-picker.js +171 -44
- package/dist/components/dialog/confirm.d.ts +40 -0
- package/dist/components/dialog/confirm.js +76 -0
- package/dist/components/dialog/dialog.d.ts +129 -0
- package/dist/components/dialog/dialog.js +288 -0
- package/dist/components/dialog/dialog.styles.d.ts +1 -0
- package/dist/components/dialog/dialog.styles.js +96 -0
- package/dist/components/dock-panel/dock-panel.d.ts +142 -0
- package/dist/components/dock-panel/dock-panel.js +359 -0
- package/dist/components/dock-panel/dock-panel.styles.d.ts +1 -0
- package/dist/components/dock-panel/dock-panel.styles.js +159 -0
- package/dist/components/document-preview/document-preview.d.ts +143 -0
- package/dist/components/document-preview/document-preview.js +388 -0
- package/dist/components/document-preview/document-preview.styles.d.ts +1 -0
- package/dist/components/document-preview/document-preview.styles.js +191 -0
- package/dist/components/empty/empty.d.ts +1 -2
- package/dist/components/empty/empty.js +18 -12
- package/dist/components/empty/empty.styles.js +0 -3
- package/dist/components/export-button/csv.js +1 -1
- package/dist/components/export-button/export-button.d.ts +12 -0
- package/dist/components/export-button/export-button.js +35 -5
- package/dist/components/export-button/export-button.styles.js +5 -1
- package/dist/components/file-input/accept.js +2 -0
- package/dist/components/file-input/file-input.d.ts +10 -1
- package/dist/components/file-input/file-input.js +36 -5
- package/dist/components/flag/flag.d.ts +29 -13
- package/dist/components/flag/flag.js +54 -14
- package/dist/components/flag/flag.styles.js +1 -1
- package/dist/components/flag/language-map.d.ts +4 -1
- package/dist/components/flag/language-map.js +6 -3
- package/dist/components/gauge/gauge.d.ts +10 -1
- package/dist/components/gauge/gauge.js +41 -13
- package/dist/components/generation-status/generation-status.d.ts +117 -0
- package/dist/components/generation-status/generation-status.js +327 -0
- package/dist/components/generation-status/generation-status.styles.d.ts +1 -0
- package/dist/components/generation-status/generation-status.styles.js +84 -0
- package/dist/components/graph/graph.d.ts +37 -3
- package/dist/components/graph/graph.js +132 -20
- package/dist/components/heatmap/calendar-grid.d.ts +19 -7
- package/dist/components/heatmap/calendar-grid.js +42 -18
- package/dist/components/heatmap/heatmap-scale.d.ts +11 -1
- package/dist/components/heatmap/heatmap-scale.js +14 -2
- package/dist/components/heatmap/heatmap.d.ts +227 -12
- package/dist/components/heatmap/heatmap.js +488 -93
- package/dist/components/json-viewer/json-viewer.d.ts +70 -0
- package/dist/components/json-viewer/json-viewer.js +361 -0
- package/dist/components/json-viewer/json-viewer.styles.d.ts +1 -0
- package/dist/components/json-viewer/json-viewer.styles.js +177 -0
- package/dist/components/kbd/kbd.d.ts +77 -0
- package/dist/components/kbd/kbd.js +231 -0
- package/dist/components/kbd/kbd.styles.d.ts +1 -0
- package/dist/components/kbd/kbd.styles.js +52 -0
- package/dist/components/live-region/live-region.d.ts +90 -0
- package/dist/components/live-region/live-region.js +189 -0
- package/dist/components/live-region/live-region.styles.d.ts +1 -0
- package/dist/components/live-region/live-region.styles.js +10 -0
- package/dist/components/map/map.d.ts +32 -7
- package/dist/components/map/map.js +133 -32
- package/dist/components/markdown/markdown-loader.d.ts +58 -0
- package/dist/components/markdown/markdown-loader.js +77 -0
- package/dist/components/markdown/markdown.d.ts +119 -0
- package/dist/components/markdown/markdown.js +389 -0
- package/dist/components/markdown/markdown.styles.d.ts +1 -0
- package/dist/components/markdown/markdown.styles.js +88 -0
- package/dist/components/media-card/media-card.d.ts +130 -0
- package/dist/components/media-card/media-card.js +273 -0
- package/dist/components/media-card/media-card.styles.d.ts +1 -0
- package/dist/components/media-card/media-card.styles.js +132 -0
- package/dist/components/mention-popover/mention-popover.d.ts +203 -0
- package/dist/components/mention-popover/mention-popover.js +493 -0
- package/dist/components/mention-popover/mention-popover.styles.d.ts +1 -0
- package/dist/components/mention-popover/mention-popover.styles.js +101 -0
- package/dist/components/menu/menu-item.d.ts +91 -0
- package/dist/components/menu/menu-item.js +206 -0
- package/dist/components/menu/menu-item.styles.d.ts +1 -0
- package/dist/components/menu/menu-item.styles.js +75 -0
- package/dist/components/menu/menu.d.ts +167 -0
- package/dist/components/menu/menu.js +461 -0
- package/dist/components/menu/menu.styles.d.ts +1 -0
- package/dist/components/menu/menu.styles.js +67 -0
- package/dist/components/model-select/model-select.d.ts +170 -0
- package/dist/components/model-select/model-select.js +588 -0
- package/dist/components/model-select/model-select.styles.d.ts +1 -0
- package/dist/components/model-select/model-select.styles.js +203 -0
- package/dist/components/model-settings-panel/model-settings-panel.d.ts +93 -0
- package/dist/components/model-settings-panel/model-settings-panel.js +209 -0
- package/dist/components/model-settings-panel/model-settings-panel.styles.d.ts +1 -0
- package/dist/components/model-settings-panel/model-settings-panel.styles.js +82 -0
- package/dist/components/playback/playback.d.ts +19 -3
- package/dist/components/playback/playback.js +109 -33
- package/dist/components/playback/playback.styles.js +6 -1
- package/dist/components/responsive-panel/responsive-panel.d.ts +163 -0
- package/dist/components/responsive-panel/responsive-panel.js +363 -0
- package/dist/components/responsive-panel/responsive-panel.styles.d.ts +1 -0
- package/dist/components/responsive-panel/responsive-panel.styles.js +103 -0
- package/dist/components/result-card/result-card.d.ts +50 -0
- package/dist/components/result-card/result-card.js +89 -0
- package/dist/components/result-card/result-card.styles.d.ts +1 -0
- package/dist/components/result-card/result-card.styles.js +49 -0
- package/dist/components/result-card/result-field.d.ts +36 -0
- package/dist/components/result-card/result-field.js +87 -0
- package/dist/components/result-card/result-field.styles.d.ts +1 -0
- package/dist/components/result-card/result-field.styles.js +32 -0
- package/dist/components/select/select.d.ts +84 -4
- package/dist/components/select/select.js +251 -36
- package/dist/components/skeleton/skeleton.d.ts +3 -0
- package/dist/components/skeleton/skeleton.js +7 -1
- package/dist/components/skeleton/skeleton.styles.js +5 -4
- package/dist/components/slider/slider.d.ts +141 -0
- package/dist/components/slider/slider.js +467 -0
- package/dist/components/slider/slider.styles.d.ts +1 -0
- package/dist/components/slider/slider.styles.js +87 -0
- package/dist/components/source-card/source-card.d.ts +104 -0
- package/dist/components/source-card/source-card.js +195 -0
- package/dist/components/source-card/source-card.styles.d.ts +1 -0
- package/dist/components/source-card/source-card.styles.js +69 -0
- package/dist/components/source-list/source-list.d.ts +63 -0
- package/dist/components/source-list/source-list.js +130 -0
- package/dist/components/source-list/source-list.styles.d.ts +1 -0
- package/dist/components/source-list/source-list.styles.js +59 -0
- package/dist/components/sparkline/sparkline.js +58 -20
- package/dist/components/split/split.d.ts +224 -5
- package/dist/components/split/split.js +617 -43
- package/dist/components/split/split.styles.js +47 -0
- package/dist/components/stat/stat.d.ts +15 -4
- package/dist/components/stat/stat.js +53 -12
- package/dist/components/stream-status/stream-status.d.ts +126 -0
- package/dist/components/stream-status/stream-status.js +292 -0
- package/dist/components/stream-status/stream-status.styles.d.ts +1 -0
- package/dist/components/stream-status/stream-status.styles.js +103 -0
- package/dist/components/streaming-text/streaming-text.d.ts +104 -0
- package/dist/components/streaming-text/streaming-text.js +224 -0
- package/dist/components/streaming-text/streaming-text.styles.d.ts +1 -0
- package/dist/components/streaming-text/streaming-text.styles.js +63 -0
- package/dist/components/switch/switch.d.ts +103 -0
- package/dist/components/switch/switch.js +250 -0
- package/dist/components/switch/switch.styles.d.ts +1 -0
- package/dist/components/switch/switch.styles.js +75 -0
- package/dist/components/table/table.d.ts +89 -5
- package/dist/components/table/table.js +243 -26
- package/dist/components/table/table.styles.js +6 -1
- package/dist/components/tabs/tabs.d.ts +74 -0
- package/dist/components/tabs/tabs.js +254 -0
- package/dist/components/tabs/tabs.styles.d.ts +1 -0
- package/dist/components/tabs/tabs.styles.js +74 -0
- package/dist/components/thinking-panel/thinking-panel.d.ts +123 -0
- package/dist/components/thinking-panel/thinking-panel.js +260 -0
- package/dist/components/thinking-panel/thinking-panel.styles.d.ts +1 -0
- package/dist/components/thinking-panel/thinking-panel.styles.js +123 -0
- package/dist/components/time-range/time-range.d.ts +59 -2
- package/dist/components/time-range/time-range.js +163 -67
- package/dist/components/toast/toast-item.d.ts +12 -2
- package/dist/components/toast/toast-item.js +106 -44
- package/dist/components/toast/toast-item.styles.js +59 -28
- package/dist/components/toast/toast.js +17 -5
- package/dist/components/toast/toaster.js +10 -1
- package/dist/components/tool-approval-dialog/tool-approval-dialog.d.ts +131 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.js +329 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.d.ts +1 -0
- package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.js +160 -0
- package/dist/components/tool-call-chip/tool-call-chip.d.ts +105 -0
- package/dist/components/tool-call-chip/tool-call-chip.js +349 -0
- package/dist/components/tool-call-chip/tool-call-chip.styles.d.ts +1 -0
- package/dist/components/tool-call-chip/tool-call-chip.styles.js +203 -0
- package/dist/components/tool-param-form/tool-param-form.d.ts +206 -0
- package/dist/components/tool-param-form/tool-param-form.js +610 -0
- package/dist/components/tool-param-form/tool-param-form.styles.d.ts +1 -0
- package/dist/components/tool-param-form/tool-param-form.styles.js +75 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.d.ts +122 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.js +358 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.d.ts +1 -0
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.js +176 -0
- package/dist/components/tool-result-view/registry.d.ts +73 -0
- package/dist/components/tool-result-view/registry.js +89 -0
- package/dist/components/tool-result-view/tool-result-view.d.ts +58 -0
- package/dist/components/tool-result-view/tool-result-view.js +152 -0
- package/dist/components/tool-result-view/tool-result-view.styles.d.ts +1 -0
- package/dist/components/tool-result-view/tool-result-view.styles.js +13 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.d.ts +151 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.js +350 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.styles.d.ts +1 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.styles.js +191 -0
- package/dist/components/tree/tree-node.d.ts +15 -3
- package/dist/components/tree/tree-node.js +20 -7
- package/dist/components/tree/tree.d.ts +25 -10
- package/dist/components/tree/tree.js +39 -31
- package/dist/components/typing-indicator/typing-indicator.d.ts +70 -0
- package/dist/components/typing-indicator/typing-indicator.js +108 -0
- package/dist/components/typing-indicator/typing-indicator.styles.d.ts +1 -0
- package/dist/components/typing-indicator/typing-indicator.styles.js +132 -0
- package/dist/components/virtual-list/virtual-list.d.ts +210 -0
- package/dist/components/virtual-list/virtual-list.js +607 -0
- package/dist/components/virtual-list/virtual-list.styles.d.ts +1 -0
- package/dist/components/virtual-list/virtual-list.styles.js +56 -0
- package/dist/components/widget/widget.d.ts +5 -4
- package/dist/components/widget/widget.js +54 -120
- package/dist/components/widget/widget.styles.js +8 -2
- package/dist/components/word-cloud/word-cloud-layout.d.ts +7 -0
- package/dist/components/word-cloud/word-cloud-layout.js +29 -2
- package/dist/components/word-cloud/word-cloud.d.ts +28 -2
- package/dist/components/word-cloud/word-cloud.js +69 -19
- package/dist/components/word-cloud/word-cloud.styles.js +16 -3
- package/dist/internal/anchored-validity.d.ts +1 -0
- package/dist/internal/anchored-validity.js +86 -0
- package/dist/internal/announcer.d.ts +57 -0
- package/dist/internal/announcer.js +71 -0
- package/dist/internal/form-associated.d.ts +8 -0
- package/dist/internal/form-associated.js +98 -15
- package/dist/internal/group-by-recency.d.ts +50 -0
- package/dist/internal/group-by-recency.js +80 -0
- package/dist/internal/numbers.d.ts +12 -0
- package/dist/internal/numbers.js +26 -0
- package/dist/internal/overlay-manager.d.ts +51 -0
- package/dist/internal/overlay-manager.js +523 -0
- package/dist/internal/positioner.js +27 -3
- package/dist/internal/rtl.d.ts +23 -0
- package/dist/internal/rtl.js +28 -0
- package/dist/internal/safe-url.d.ts +12 -0
- package/dist/internal/safe-url.js +41 -0
- package/dist/internal/scroll-lock.d.ts +10 -5
- package/dist/internal/scroll-lock.js +30 -14
- package/dist/internal/tokens.styles.js +22 -10
- package/dist/lyra.d.ts +133 -31
- package/dist/lyra.js +96 -26
- package/llms-full.txt +4546 -183
- package/llms.txt +21 -5
- package/package.json +41 -6
- package/dist/components/chart/bar-chart.stories.d.ts +0 -5
- package/dist/components/chart/bar-chart.stories.js +0 -20
- package/dist/components/chart/box-plot.stories.d.ts +0 -5
- package/dist/components/chart/box-plot.stories.js +0 -29
- package/dist/components/chart/bubble-chart.stories.d.ts +0 -5
- package/dist/components/chart/bubble-chart.stories.js +0 -26
- package/dist/components/chart/chart.stories.d.ts +0 -32
- package/dist/components/chart/chart.stories.js +0 -141
- package/dist/components/chart/doughnut-chart.stories.d.ts +0 -5
- package/dist/components/chart/doughnut-chart.stories.js +0 -26
- package/dist/components/chart/histogram.stories.d.ts +0 -5
- package/dist/components/chart/histogram.stories.js +0 -17
- package/dist/components/chart/line-chart.stories.d.ts +0 -22
- package/dist/components/chart/line-chart.stories.js +0 -99
- package/dist/components/chart/lite-chart.stories.d.ts +0 -14
- package/dist/components/chart/lite-chart.stories.js +0 -114
- package/dist/components/chart/pie-chart.stories.d.ts +0 -5
- package/dist/components/chart/pie-chart.stories.js +0 -26
- package/dist/components/chart/polar-area-chart.stories.d.ts +0 -5
- package/dist/components/chart/polar-area-chart.stories.js +0 -20
- package/dist/components/chart/radar-chart.stories.d.ts +0 -5
- package/dist/components/chart/radar-chart.stories.js +0 -20
- package/dist/components/chart/scatter-chart.stories.d.ts +0 -5
- package/dist/components/chart/scatter-chart.stories.js +0 -31
- package/dist/components/combobox/combobox.stories.d.ts +0 -24
- package/dist/components/combobox/combobox.stories.js +0 -102
- package/dist/components/date-picker/date-input.stories.d.ts +0 -10
- package/dist/components/date-picker/date-input.stories.js +0 -48
- package/dist/components/date-picker/date-picker.stories.d.ts +0 -10
- package/dist/components/date-picker/date-picker.stories.js +0 -25
- package/dist/components/empty/empty.stories.d.ts +0 -7
- package/dist/components/empty/empty.stories.js +0 -34
- package/dist/components/export-button/export-button.stories.d.ts +0 -7
- package/dist/components/export-button/export-button.stories.js +0 -37
- package/dist/components/file-input/file-input.stories.d.ts +0 -7
- package/dist/components/file-input/file-input.stories.js +0 -19
- package/dist/components/flag/flag.stories.d.ts +0 -6
- package/dist/components/flag/flag.stories.js +0 -31
- package/dist/components/gauge/gauge.stories.d.ts +0 -8
- package/dist/components/gauge/gauge.stories.js +0 -19
- package/dist/components/graph/graph.stories.d.ts +0 -8
- package/dist/components/graph/graph.stories.js +0 -68
- package/dist/components/heatmap/heatmap.stories.d.ts +0 -27
- package/dist/components/heatmap/heatmap.stories.js +0 -179
- package/dist/components/map/map.stories.d.ts +0 -15
- package/dist/components/map/map.stories.js +0 -135
- package/dist/components/playback/playback.stories.d.ts +0 -7
- package/dist/components/playback/playback.stories.js +0 -16
- package/dist/components/select/select.stories.d.ts +0 -21
- package/dist/components/select/select.stories.js +0 -91
- package/dist/components/skeleton/skeleton.stories.d.ts +0 -5
- package/dist/components/skeleton/skeleton.stories.js +0 -16
- package/dist/components/sparkline/sparkline.stories.d.ts +0 -11
- package/dist/components/sparkline/sparkline.stories.js +0 -39
- package/dist/components/split/split.stories.d.ts +0 -7
- package/dist/components/split/split.stories.js +0 -36
- package/dist/components/stat/stat.stories.d.ts +0 -9
- package/dist/components/stat/stat.stories.js +0 -81
- package/dist/components/table/table.stories.d.ts +0 -12
- package/dist/components/table/table.stories.js +0 -67
- package/dist/components/time-range/time-range.stories.d.ts +0 -8
- package/dist/components/time-range/time-range.stories.js +0 -26
- package/dist/components/toast/toast.stories.d.ts +0 -8
- package/dist/components/toast/toast.stories.js +0 -72
- package/dist/components/tree/tree.stories.d.ts +0 -9
- package/dist/components/tree/tree.stories.js +0 -52
- package/dist/components/widget/widget.stories.d.ts +0 -9
- package/dist/components/widget/widget.stories.js +0 -74
- package/dist/components/word-cloud/word-cloud.stories.d.ts +0 -10
- package/dist/components/word-cloud/word-cloud.stories.js +0 -55
|
@@ -0,0 +1,250 @@
|
|
|
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 { html, nothing } from 'lit';
|
|
8
|
+
import { state } from 'lit/decorators.js';
|
|
9
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
|
+
import { defineElement } from '../../internal/prefix.js';
|
|
11
|
+
import { AnchoredValidityController, VALIDITY_ANCHOR } from '../../internal/anchored-validity.js';
|
|
12
|
+
import { styles } from './switch.styles.js';
|
|
13
|
+
/**
|
|
14
|
+
* `<lyra-switch>` — a boolean toggle-switch form control. Structurally the
|
|
15
|
+
* same idea as a checkbox (form-associated via `ElementInternals`, click and
|
|
16
|
+
* Space/Enter both toggle) but with switch semantics: `role="switch"` +
|
|
17
|
+
* `aria-checked` read to assistive tech as an on/off state rather than a
|
|
18
|
+
* checked/unchecked one, and there is no indeterminate state.
|
|
19
|
+
*
|
|
20
|
+
* `checked` is not a plain string, so this attaches `ElementInternals`
|
|
21
|
+
* directly and implements its own `updateValidity()` rather than using the
|
|
22
|
+
* `FormAssociated` mixin (that mixin's `value` accessor assumes a string —
|
|
23
|
+
* see `<lyra-combobox>` for the same direct-`ElementInternals` shape with a
|
|
24
|
+
* non-string value).
|
|
25
|
+
*
|
|
26
|
+
* @customElement lyra-switch
|
|
27
|
+
* @slot - Label text, rendered next to the track. Clicking it toggles the
|
|
28
|
+
* switch, the same as clicking a checkbox's associated `<label>`. If left
|
|
29
|
+
* empty, set `aria-label` on the host so the control still has an
|
|
30
|
+
* accessible name.
|
|
31
|
+
* @event lyra-change - The user toggled the switch (click or Space/Enter). `detail: { checked }`.
|
|
32
|
+
* @csspart base - The whole interactive control (`role="switch"`); wraps the track and label.
|
|
33
|
+
* @csspart track - The pill-shaped background.
|
|
34
|
+
* @csspart thumb - The circular knob that slides across the track.
|
|
35
|
+
* @csspart label - The wrapper around the default slot.
|
|
36
|
+
*/
|
|
37
|
+
export class LyraSwitch extends LyraElement {
|
|
38
|
+
static { this.styles = [LyraElement.styles, styles]; }
|
|
39
|
+
static { this.formAssociated = true; }
|
|
40
|
+
static { this.properties = {
|
|
41
|
+
checked: { type: Boolean, reflect: true, noAccessor: true },
|
|
42
|
+
disabled: { type: Boolean, reflect: true, noAccessor: true },
|
|
43
|
+
name: { reflect: true, noAccessor: true },
|
|
44
|
+
required: { type: Boolean, reflect: true, noAccessor: true },
|
|
45
|
+
value: { noAccessor: true },
|
|
46
|
+
}; }
|
|
47
|
+
/** Whether the control is disabled explicitly or by an ancestor fieldset. */
|
|
48
|
+
get effectiveDisabled() {
|
|
49
|
+
return this.disabled || this._fieldsetDisabled;
|
|
50
|
+
}
|
|
51
|
+
get checked() {
|
|
52
|
+
return this._checked;
|
|
53
|
+
}
|
|
54
|
+
set checked(next) {
|
|
55
|
+
const old = this._checked;
|
|
56
|
+
this._checked = Boolean(next);
|
|
57
|
+
this.syncFormState();
|
|
58
|
+
this.requestUpdate('checked', old);
|
|
59
|
+
}
|
|
60
|
+
get disabled() {
|
|
61
|
+
return this._disabled;
|
|
62
|
+
}
|
|
63
|
+
set disabled(next) {
|
|
64
|
+
const old = this._disabled;
|
|
65
|
+
this._disabled = Boolean(next);
|
|
66
|
+
this.toggleAttribute('disabled', this._disabled);
|
|
67
|
+
this.requestUpdate('disabled', old);
|
|
68
|
+
}
|
|
69
|
+
/** The form submission key, reflected synchronously for native form APIs. */
|
|
70
|
+
get name() {
|
|
71
|
+
return this._name;
|
|
72
|
+
}
|
|
73
|
+
set name(next) {
|
|
74
|
+
const old = this._name;
|
|
75
|
+
this._name = next ?? '';
|
|
76
|
+
if (this._name) {
|
|
77
|
+
this.setAttribute('name', this._name);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.removeAttribute('name');
|
|
81
|
+
}
|
|
82
|
+
this.requestUpdate('name', old);
|
|
83
|
+
}
|
|
84
|
+
get required() {
|
|
85
|
+
return this._required;
|
|
86
|
+
}
|
|
87
|
+
set required(next) {
|
|
88
|
+
const old = this._required;
|
|
89
|
+
this._required = Boolean(next);
|
|
90
|
+
this.toggleAttribute('required', this._required);
|
|
91
|
+
this.updateValidity();
|
|
92
|
+
this.requestUpdate('required', old);
|
|
93
|
+
}
|
|
94
|
+
get value() {
|
|
95
|
+
return this._value;
|
|
96
|
+
}
|
|
97
|
+
set value(next) {
|
|
98
|
+
const old = this._value;
|
|
99
|
+
this._value = next ?? 'on';
|
|
100
|
+
this.syncFormState();
|
|
101
|
+
this.requestUpdate('value', old);
|
|
102
|
+
}
|
|
103
|
+
constructor() {
|
|
104
|
+
super();
|
|
105
|
+
// Tracks whether the default slot carries any real (non-whitespace)
|
|
106
|
+
// content, so the label wrapper — and the `gap` next to the track — can
|
|
107
|
+
// collapse to nothing for an icon-only/aria-label-only switch instead of
|
|
108
|
+
// leaving a stray empty gap. See combobox/date-input's `hasHintSlot`-style
|
|
109
|
+
// state fields; this one checks `assignedNodes` rather than
|
|
110
|
+
// `assignedElements` because a plain slotted text label (the expected
|
|
111
|
+
// common case here, e.g. `<lyra-switch>Enable notifications</lyra-switch>`)
|
|
112
|
+
// is a text node, which `assignedElements` would silently ignore.
|
|
113
|
+
this.hasLabelSlot = false;
|
|
114
|
+
// What `form.reset()` restores to — captured once from the declarative
|
|
115
|
+
// `checked` content attribute at first connect. A pre-connect `.checked`
|
|
116
|
+
// property assignment changes live state but not the reset default, matching
|
|
117
|
+
// native `checked`/`defaultChecked` semantics. `checked` reflects, so unlike
|
|
118
|
+
// `FormAssociated`'s non-reflecting `value` this can't be captured from
|
|
119
|
+
// `attributeChangedCallback` alone — that would also fire (and wrongly
|
|
120
|
+
// redefine the default) every time the property setter itself reflects a
|
|
121
|
+
// later user toggle back into the attribute. Guarding with a one-shot flag
|
|
122
|
+
// instead mirrors `<lyra-combobox>`'s `_defaultCaptured`/`_defaultSelected`.
|
|
123
|
+
this._defaultChecked = false;
|
|
124
|
+
this._defaultCaptured = false;
|
|
125
|
+
this._fieldsetDisabled = false;
|
|
126
|
+
this._name = '';
|
|
127
|
+
this._checked = false;
|
|
128
|
+
this._disabled = false;
|
|
129
|
+
this._required = false;
|
|
130
|
+
this._value = 'on';
|
|
131
|
+
this.onClick = () => {
|
|
132
|
+
this.toggle();
|
|
133
|
+
};
|
|
134
|
+
this.onKeyDown = (e) => {
|
|
135
|
+
if (this.effectiveDisabled)
|
|
136
|
+
return;
|
|
137
|
+
// Space/Enter both activate, matching `<lyra-table>`'s sortable
|
|
138
|
+
// header/row convention (`table.ts`'s `onHeaderKeyDown`/`onRowKeyDown`)
|
|
139
|
+
// for role-based clickable elements — bound to `keydown` rather than
|
|
140
|
+
// `keyup`/native `click`-forwarding like the rest of this library.
|
|
141
|
+
if (e.key === ' ' || e.key === 'Spacebar' || e.key === 'Enter') {
|
|
142
|
+
e.preventDefault();
|
|
143
|
+
this.toggle();
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
this.onSlotChange = (e) => {
|
|
147
|
+
const nodes = e.target.assignedNodes({ flatten: true });
|
|
148
|
+
this.hasLabelSlot = nodes.some((n) => (n.textContent ?? '').trim().length > 0);
|
|
149
|
+
};
|
|
150
|
+
this.internals = this.attachInternals();
|
|
151
|
+
this.validityController = new AnchoredValidityController(this, this.internals, () => this[VALIDITY_ANCHOR]());
|
|
152
|
+
this.syncFormState();
|
|
153
|
+
}
|
|
154
|
+
get form() {
|
|
155
|
+
return this.internals.form;
|
|
156
|
+
}
|
|
157
|
+
get labels() {
|
|
158
|
+
return this.internals.labels;
|
|
159
|
+
}
|
|
160
|
+
get validity() {
|
|
161
|
+
return this.internals.validity;
|
|
162
|
+
}
|
|
163
|
+
get validationMessage() {
|
|
164
|
+
return this.internals.validationMessage;
|
|
165
|
+
}
|
|
166
|
+
get willValidate() {
|
|
167
|
+
return this.internals.willValidate;
|
|
168
|
+
}
|
|
169
|
+
/** @internal */
|
|
170
|
+
[VALIDITY_ANCHOR]() {
|
|
171
|
+
return this.renderRoot?.querySelector('[part="base"]') ?? null;
|
|
172
|
+
}
|
|
173
|
+
connectedCallback() {
|
|
174
|
+
super.connectedCallback();
|
|
175
|
+
if (!this._defaultCaptured) {
|
|
176
|
+
this._defaultCaptured = true;
|
|
177
|
+
this._defaultChecked = this.hasAttribute('checked');
|
|
178
|
+
}
|
|
179
|
+
this.updateValidity();
|
|
180
|
+
}
|
|
181
|
+
willUpdate() {
|
|
182
|
+
// Seed `hasLabelSlot` from the light-DOM children synchronously before
|
|
183
|
+
// the very first render (same `!hasUpdated` guard as combobox/date-input's
|
|
184
|
+
// `hasHintSlot` etc.) so declaratively-provided label text doesn't flash
|
|
185
|
+
// hidden for one frame while waiting on the first `slotchange` event.
|
|
186
|
+
if (!this.hasUpdated) {
|
|
187
|
+
this.hasLabelSlot = Array.from(this.childNodes).some((n) => (n.textContent ?? '').trim().length > 0);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
updateValidity() {
|
|
191
|
+
if (this.required && !this.checked) {
|
|
192
|
+
this.validityController.setValidity({ valueMissing: true }, 'Please turn this on.');
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
this.validityController.setValidity({});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
syncFormState() {
|
|
199
|
+
this.internals.setFormValue(this.checked ? this.value : null, this.checked ? 'checked' : 'unchecked');
|
|
200
|
+
this.updateValidity();
|
|
201
|
+
}
|
|
202
|
+
formResetCallback() {
|
|
203
|
+
this.checked = this._defaultChecked;
|
|
204
|
+
}
|
|
205
|
+
formStateRestoreCallback(state, _mode) {
|
|
206
|
+
this.checked = state === 'checked';
|
|
207
|
+
}
|
|
208
|
+
formDisabledCallback(disabled) {
|
|
209
|
+
this._fieldsetDisabled = disabled;
|
|
210
|
+
this.requestUpdate();
|
|
211
|
+
}
|
|
212
|
+
checkValidity() {
|
|
213
|
+
return this.internals.checkValidity();
|
|
214
|
+
}
|
|
215
|
+
reportValidity() {
|
|
216
|
+
return this.internals.reportValidity();
|
|
217
|
+
}
|
|
218
|
+
toggle() {
|
|
219
|
+
if (this.effectiveDisabled)
|
|
220
|
+
return;
|
|
221
|
+
this.checked = !this.checked;
|
|
222
|
+
this.emit('lyra-change', { checked: this.checked });
|
|
223
|
+
}
|
|
224
|
+
render() {
|
|
225
|
+
return html `
|
|
226
|
+
<span
|
|
227
|
+
part="base"
|
|
228
|
+
role="switch"
|
|
229
|
+
tabindex=${this.effectiveDisabled ? '-1' : '0'}
|
|
230
|
+
aria-checked=${this.checked ? 'true' : 'false'}
|
|
231
|
+
aria-required=${this.required ? 'true' : nothing}
|
|
232
|
+
aria-disabled=${this.effectiveDisabled ? 'true' : nothing}
|
|
233
|
+
aria-label=${this.getAttribute('aria-label') || nothing}
|
|
234
|
+
@click=${this.onClick}
|
|
235
|
+
@keydown=${this.onKeyDown}
|
|
236
|
+
>
|
|
237
|
+
<span part="track">
|
|
238
|
+
<span part="thumb"></span>
|
|
239
|
+
</span>
|
|
240
|
+
<span part="label" ?hidden=${!this.hasLabelSlot}>
|
|
241
|
+
<slot @slotchange=${this.onSlotChange}></slot>
|
|
242
|
+
</span>
|
|
243
|
+
</span>
|
|
244
|
+
`;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
__decorate([
|
|
248
|
+
state()
|
|
249
|
+
], LyraSwitch.prototype, "hasLabelSlot", void 0);
|
|
250
|
+
defineElement('switch', LyraSwitch);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `
|
|
3
|
+
:host {
|
|
4
|
+
display: inline-block;
|
|
5
|
+
/* Component-local geometry knobs (same "define your own on :host"
|
|
6
|
+
pattern as lyra-toast's --gap/--width) — a fully-rounded pill/thumb
|
|
7
|
+
needs a radius well past --lyra-radius's small 0.375rem default, so
|
|
8
|
+
it's expressed here rather than bent onto that shared token. */
|
|
9
|
+
--track-inline-size: 2.25rem;
|
|
10
|
+
--track-block-size: 1.25rem;
|
|
11
|
+
--thumb-offset: 2px;
|
|
12
|
+
}
|
|
13
|
+
[part='base'] {
|
|
14
|
+
display: inline-flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
gap: var(--lyra-space-s);
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
-webkit-tap-highlight-color: transparent;
|
|
19
|
+
}
|
|
20
|
+
[part='base']:focus-visible {
|
|
21
|
+
outline: var(--lyra-focus-ring-width) solid var(--lyra-focus-ring-color);
|
|
22
|
+
outline-offset: var(--lyra-focus-ring-offset);
|
|
23
|
+
}
|
|
24
|
+
:host(:disabled) [part='base'] {
|
|
25
|
+
cursor: not-allowed;
|
|
26
|
+
opacity: var(--lyra-opacity-disabled);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
[part='track'] {
|
|
30
|
+
position: relative;
|
|
31
|
+
flex: 0 0 auto;
|
|
32
|
+
inline-size: var(--track-inline-size);
|
|
33
|
+
block-size: var(--track-block-size);
|
|
34
|
+
border-radius: 999px;
|
|
35
|
+
background: var(--lyra-color-border);
|
|
36
|
+
transition: background-color var(--lyra-transition-fast);
|
|
37
|
+
}
|
|
38
|
+
:host([checked]) [part='track'] {
|
|
39
|
+
background: var(--lyra-color-brand);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
[part='thumb'] {
|
|
43
|
+
position: absolute;
|
|
44
|
+
inset-block-start: var(--thumb-offset);
|
|
45
|
+
inset-inline-start: var(--thumb-offset);
|
|
46
|
+
inline-size: calc(var(--track-block-size) - (var(--thumb-offset) * 2));
|
|
47
|
+
block-size: calc(var(--track-block-size) - (var(--thumb-offset) * 2));
|
|
48
|
+
border-radius: 50%;
|
|
49
|
+
background: var(--lyra-color-surface);
|
|
50
|
+
/* Animates the logical 'inset-inline-start' rather than a physical
|
|
51
|
+
'transform: translateX()' so the slide direction mirrors correctly
|
|
52
|
+
under dir="rtl" — consistent with this library's CSS-logical-
|
|
53
|
+
properties approach to RTL (see internal/lyra-element.ts). */
|
|
54
|
+
transition: inset-inline-start var(--lyra-transition-fast);
|
|
55
|
+
}
|
|
56
|
+
:host([checked]) [part='thumb'] {
|
|
57
|
+
inset-inline-start: calc(var(--track-inline-size) - var(--track-block-size) + var(--thumb-offset));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* No explicit "display" here (unlike e.g. lyra-combobox's
|
|
61
|
+
[part='form-control-label']), so the UA stylesheet's default
|
|
62
|
+
"[hidden] { display: none }" rule needs no author-side override to
|
|
63
|
+
take effect when hasLabelSlot is false. */
|
|
64
|
+
[part='label'] {
|
|
65
|
+
font-size: 0.875rem;
|
|
66
|
+
color: var(--lyra-color-text);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@media (prefers-reduced-motion: reduce) {
|
|
70
|
+
[part='track'],
|
|
71
|
+
[part='thumb'] {
|
|
72
|
+
transition: none !important;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
`;
|
|
@@ -37,17 +37,37 @@ export interface TableColumn<T> {
|
|
|
37
37
|
* Enter/Space still only sort/activate (see `activateColumn()` /
|
|
38
38
|
* `activateRow()`).
|
|
39
39
|
*
|
|
40
|
+
* Set `aria-label` on the host to give the `role="grid"` element an
|
|
41
|
+
* accessible name; it's forwarded into the shadow DOM's `<table>`.
|
|
42
|
+
*
|
|
40
43
|
* `columns[].priority` ('medium' | 'low') hides that column under
|
|
41
44
|
* `[part='base']`'s `@container` breakpoints; `[part='reveal-columns-button']`
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
+
* forces them all back into view. Rather than a *static* check of whether any
|
|
46
|
+
* column merely declares a `priority`, the button (and the public
|
|
47
|
+
* `columnsHidden` property, see below) reflects whether a `priority` column
|
|
48
|
+
* is *actually* hidden right now — measured via `ResizeObserver` on
|
|
49
|
+
* `[part='base']` plus a post-render DOM check — or `showAllColumns`
|
|
50
|
+
* force-visible mode is currently active (so there's still a way to toggle
|
|
51
|
+
* it back off). `columns[].sticky` pins a column's header/cells to the
|
|
52
|
+
* inline-start edge while the table scrolls horizontally.
|
|
45
53
|
*
|
|
46
54
|
* @customElement lyra-table
|
|
47
55
|
* @event lyra-sort - A sortable header was activated. `detail: { key }`.
|
|
48
56
|
* @event lyra-row-click - A row was activated. `detail: { row }`.
|
|
49
57
|
* @event lyra-load-more - The "load more" control was activated.
|
|
50
|
-
* @
|
|
58
|
+
* @event lyra-columns-hidden-change - `columnsHidden` actually changed value
|
|
59
|
+
* (a `priority` column just became hidden/un-hidden by the `@container`
|
|
60
|
+
* rules, or `showAllColumns` force-visible mode was toggled while a
|
|
61
|
+
* `priority` column was hidden). `detail: { hidden: boolean }`.
|
|
62
|
+
* @csspart base - The root wrapper around the `<table>` and its footer controls.
|
|
63
|
+
* @csspart table - The `<table role="grid">` element.
|
|
64
|
+
* @csspart head - The `<thead>` element.
|
|
65
|
+
* @csspart header-cell - Each `<th>` header cell.
|
|
66
|
+
* @csspart row - Each body `<tr>`.
|
|
67
|
+
* @csspart cell - Each body `<td>`.
|
|
68
|
+
* @csspart more-button - The "load more" control, shown when `hasMore` is true.
|
|
69
|
+
* @csspart sort-icon - The chevron shown in the active sortable column's header cell.
|
|
70
|
+
* @csspart reveal-columns-button - The button that toggles `priority`-hidden columns back into view.
|
|
51
71
|
*/
|
|
52
72
|
export declare class LyraTable<T = unknown> extends LyraElement {
|
|
53
73
|
static styles: import("lit").CSSResultGroup[];
|
|
@@ -72,6 +92,16 @@ export declare class LyraTable<T = unknown> extends LyraElement {
|
|
|
72
92
|
noColumnsDescription: string;
|
|
73
93
|
revealColumnsLabel: string;
|
|
74
94
|
hideColumnsLabel: string;
|
|
95
|
+
/** Whether a `priority` column is *actually* hidden right now by
|
|
96
|
+
* table.styles.ts's `@container` rules, or `showAllColumns` force-visible
|
|
97
|
+
* mode is currently active — the same computed value that gates whether
|
|
98
|
+
* `[part='reveal-columns-button']` renders at all (see `render()`), kept
|
|
99
|
+
* in sync by `recomputeColumnsHidden()`. Computed/read-only by
|
|
100
|
+
* convention: consumers may read it (and listen for
|
|
101
|
+
* `lyra-columns-hidden-change`), but setting it directly has no lasting
|
|
102
|
+
* effect, since it's recomputed on the very next render or
|
|
103
|
+
* `[part='base']` resize. */
|
|
104
|
+
columnsHidden: boolean;
|
|
75
105
|
/** Forces `priority`-hidden columns back into view, overriding the
|
|
76
106
|
* `@container` hide rules in table.styles.ts. Toggled by
|
|
77
107
|
* `[part='reveal-columns-button']`. */
|
|
@@ -86,18 +116,72 @@ export declare class LyraTable<T = unknown> extends LyraElement {
|
|
|
86
116
|
private activeRowKey;
|
|
87
117
|
private rowsByKey;
|
|
88
118
|
private columnsByKey;
|
|
119
|
+
/** Watches `[part='base']`'s own inline-size — the `@container` query
|
|
120
|
+
* container table.styles.ts's priority-hide rules react to — so a
|
|
121
|
+
* `priority` column flipping hidden/visible from an *external* width
|
|
122
|
+
* change (a window resize, an ancestor flex-layout reflow, ...) is caught
|
|
123
|
+
* even though no Lit-tracked property changed. Mirrors
|
|
124
|
+
* lite-chart.ts's connectedCallback()/disconnectedCallback() ResizeObserver
|
|
125
|
+
* lifecycle. */
|
|
126
|
+
private resizeObserver?;
|
|
127
|
+
/** The `[part='base']` element `resizeObserver` is currently observing —
|
|
128
|
+
* `render()`'s columns/rows-empty branches swap in `<lyra-empty>` instead,
|
|
129
|
+
* a different template shape that gives `[part='base']` a fresh DOM
|
|
130
|
+
* identity on the next non-empty render, so `updated()` re-observes
|
|
131
|
+
* whenever this no longer matches the live element. */
|
|
132
|
+
private observedBase?;
|
|
133
|
+
private readonly observedHeaders;
|
|
134
|
+
connectedCallback(): void;
|
|
135
|
+
disconnectedCallback(): void;
|
|
136
|
+
private observeBase;
|
|
137
|
+
private observeHeaders;
|
|
138
|
+
/** Recomputes `columnsHidden` from the live DOM (mirrors `visibleHeaders()`'s
|
|
139
|
+
* own `offsetParent !== null` technique for detecting `@container`-hidden
|
|
140
|
+
* cells) and dispatches `lyra-columns-hidden-change` only on a real
|
|
141
|
+
* transition. Called from `updated()` (covers a change driven by
|
|
142
|
+
* `columns`/`rows`/`showAllColumns` rather than a container resize) and
|
|
143
|
+
* from the `ResizeObserver` callback (covers a container resize with no
|
|
144
|
+
* Lit-tracked property change at all). */
|
|
145
|
+
private recomputeColumnsHidden;
|
|
146
|
+
private rehomeFocusedColumn;
|
|
89
147
|
private keyOf;
|
|
90
148
|
/** The header cell that currently owns `tabindex="0"`. */
|
|
91
149
|
private focusedColKey;
|
|
92
150
|
/** The body row that currently owns `tabindex="0"`. */
|
|
93
151
|
private focusedRowKey;
|
|
94
152
|
protected willUpdate(changed: PropertyValues): void;
|
|
153
|
+
/** Each sticky column's cumulative inline-start offset — the sum of the *rendered
|
|
154
|
+
* width* of every earlier sticky column — so multiple sticky columns
|
|
155
|
+
* stack left-to-right instead of all pinning to inset-inline-start: 0 and
|
|
156
|
+
* overlapping. Table columns are intrinsically sized (not fixed-width), so
|
|
157
|
+
* this can't be computed in CSS alone; it requires measuring the actual
|
|
158
|
+
* laid-out `offsetWidth` of each earlier sticky column's header cell. */
|
|
159
|
+
private stickyOffsets;
|
|
160
|
+
private applyStickyOffsets;
|
|
161
|
+
/** Applies stickyOffsets()'s measured per-column offsets as an inline
|
|
162
|
+
* `--lyra-table-sticky-offset` custom property on every header cell and
|
|
163
|
+
* body cell in that column (addressed by the shared `data-col-key`
|
|
164
|
+
* attribute). This is a post-render DOM measurement — column widths
|
|
165
|
+
* aren't known until after the browser has laid out this update's
|
|
166
|
+
* render() output — so it runs from `updated()`, not `willUpdate()`,
|
|
167
|
+
* intentionally kept as a separate pass from the rowsByKey/columnsByKey
|
|
168
|
+
* rebuild above: those two must stay in `willUpdate()` so `render()`'s
|
|
169
|
+
* own `focusedRowKey()` call sees the current update's identity maps
|
|
170
|
+
* (e.g. a freshly-assigned `selectedKey` resolving to the correct
|
|
171
|
+
* roving-tabindex row on the very first paint), whereas the sticky-offset
|
|
172
|
+
* measurement can only run after that same paint has happened. Only runs
|
|
173
|
+
* when `hasSticky` is true (opt-in) and simply recomputes on every
|
|
174
|
+
* update; a future optimization pass could cache column widths instead of
|
|
175
|
+
* re-querying every time — out of scope for this correctness fix. */
|
|
176
|
+
protected updated(changed: PropertyValues): void;
|
|
95
177
|
private activateColumn;
|
|
96
178
|
private activateRow;
|
|
97
179
|
/** Header cells currently in the tab sequence — excludes columns hidden by
|
|
98
180
|
* a `priority`-driven `@container` rule (table.styles.ts), so Left/Right/
|
|
99
181
|
* Home/End never strand the roving tab stop on a `display: none` cell
|
|
100
|
-
* that `.focus()` would silently no-op on.
|
|
182
|
+
* that `.focus()` would silently no-op on. Scoped to `th` — body `<td>`s
|
|
183
|
+
* now carry the same `data-col-key` attribute (for the sticky-offset
|
|
184
|
+
* measurement pass) but must never be treated as header cells here. */
|
|
101
185
|
private visibleHeaders;
|
|
102
186
|
private focusHeader;
|
|
103
187
|
private focusRow;
|