@aceshooting/lyra-ui 16.0.0 → 18.0.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/CHANGELOG.md +758 -0
- package/README.md +2 -2
- package/custom-elements.json +1 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts +3 -3
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js +2 -2
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -2
- package/dist/components/agent-tools/compare-panel/compare-panel.class.js +3 -3
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +37 -13
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +4 -0
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +3 -3
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +117 -17
- package/dist/components/charts/chart/chart.class.js +3 -3
- package/dist/components/charts/chart/histogram-bin.d.ts +5 -1
- package/dist/components/charts/chart/histogram-bin.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +9 -0
- package/dist/components/conversation/code-block/code-block.styles.js +1 -1
- package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.d.ts +13 -4
- package/dist/components/conversation/model-select/model-select.class.js +2 -1
- package/dist/components/conversation/model-select/model-select.styles.js +1 -1
- package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +40 -2
- package/dist/components/conversation/streaming-text/streaming-text-base.class.js +2 -2
- package/dist/components/conversation/streaming-text/streaming-text-core.class.d.ts +27 -3
- package/dist/components/conversation/streaming-text/streaming-text-core.class.js +11 -0
- package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +31 -3
- package/dist/components/conversation/streaming-text/streaming-text.class.js +11 -0
- package/dist/components/conversation/suggestion-chips/suggestion-chips.class.d.ts +30 -2
- package/dist/components/conversation/suggestion-chips/suggestion-chips.class.js +4 -3
- package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +1 -1
- package/dist/components/conversation/thread-list/thread-list.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +4 -0
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +16 -4
- package/dist/components/conversation/voice-picker/voice-picker.class.js +2 -1
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
- package/dist/components/data/context-meter/context-meter.class.d.ts +23 -4
- package/dist/components/data/context-meter/context-meter.class.js +10 -7
- package/dist/components/data/context-meter/context-meter.styles.js +1 -1
- package/dist/components/data/data-grid/data-grid.class.d.ts +5 -2
- package/dist/components/data/data-grid/data-grid.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +32 -5
- package/dist/components/data/flow-canvas/flow-canvas.class.js +3 -1
- package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
- package/dist/components/data/flow-canvas/flow-model.js +1 -1
- package/dist/components/data/flow-canvas/flow-types.d.ts +10 -1
- package/dist/components/data/gauge/gauge.class.d.ts +15 -2
- package/dist/components/data/gauge/gauge.class.js +20 -20
- package/dist/components/data/gauge/gauge.styles.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +14 -5
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +2 -2
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +28 -2
- package/dist/components/data/sequence-strip/sequence-strip.class.js +3 -2
- package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
- package/dist/components/data/table/table.class.d.ts +155 -30
- package/dist/components/data/table/table.class.js +6 -4
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/data/timeline/timeline-item.class.d.ts +9 -1
- package/dist/components/data/timeline/timeline-item.class.js +2 -2
- package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.styles.js +1 -1
- package/dist/components/forms/button/button.class.d.ts +30 -1
- package/dist/components/forms/button/button.class.js +2 -2
- package/dist/components/forms/checkbox/checkbox.class.d.ts +8 -6
- package/dist/components/forms/checkbox/checkbox.class.js +2 -2
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -5
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +16 -2
- package/dist/components/forms/color-picker/color-picker.class.js +2 -2
- package/dist/components/forms/color-picker/color-picker.styles.js +1 -1
- package/dist/components/forms/combobox/combobox.class.d.ts +52 -7
- package/dist/components/forms/combobox/combobox.class.js +2 -2
- package/dist/components/forms/combobox/combobox.styles.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +4 -0
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.class.d.ts +20 -3
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.styles.js +1 -1
- package/dist/components/forms/input/input.class.d.ts +5 -2
- package/dist/components/forms/input/input.class.js +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +4 -0
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +11 -5
- package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.d.ts +7 -2
- package/dist/components/forms/otp-input/otp-input.class.js +2 -2
- package/dist/components/forms/radio/radio-button.class.d.ts +2 -1
- package/dist/components/forms/radio/radio-group.class.d.ts +9 -4
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.d.ts +13 -7
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +16 -6
- package/dist/components/forms/rubric-form/rubric-form.class.js +2 -2
- package/dist/components/forms/select/select.class.d.ts +50 -13
- package/dist/components/forms/select/select.class.js +2 -2
- package/dist/components/forms/slider/slider.class.d.ts +4 -2
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +8 -6
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.d.ts +5 -3
- package/dist/components/forms/textarea/textarea.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +12 -7
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/time-range/time-range.styles.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +6 -4
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail-item.class.d.ts +109 -4
- package/dist/components/layout/app-rail/app-rail-item.class.js +34 -29
- package/dist/components/layout/app-rail/app-rail-item.styles.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +25 -3
- package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
- package/dist/components/layout/app-rail-group/app-rail-group.class.d.ts +2 -2
- package/dist/components/layout/app-rail-group/app-rail-group.class.js +2 -2
- package/dist/components/layout/carousel/carousel.class.d.ts +1 -1
- package/dist/components/layout/carousel/carousel.class.js +1 -1
- package/dist/components/layout/details/accordion.class.d.ts +2 -2
- package/dist/components/layout/details/accordion.class.js +2 -2
- package/dist/components/layout/filter-bar/filter-bar-register.d.ts +1 -0
- package/dist/components/layout/filter-bar/filter-bar-register.js +1 -0
- package/dist/components/layout/filter-bar/filter-bar.class.d.ts +153 -16
- package/dist/components/layout/filter-bar/filter-bar.class.js +8 -5
- package/dist/components/layout/menu/menu-item.class.d.ts +3 -3
- package/dist/components/layout/menu/menu-item.class.js +3 -3
- package/dist/components/layout/menu/menu.class.d.ts +5 -1
- package/dist/components/layout/menu/menu.class.js +2 -2
- package/dist/components/layout/reorder-list/reorder-item.styles.js +1 -1
- package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +107 -2
- package/dist/components/layout/virtual-list/virtual-list.class.js +12 -7
- package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +1 -1
- package/dist/components/media/avatar-group/avatar-group.class.d.ts +12 -1
- package/dist/components/media/avatar-group/avatar-group.class.js +2 -2
- package/dist/components/media/drop-zone/drop-zone.class.d.ts +32 -11
- package/dist/components/media/drop-zone/drop-zone.class.js +2 -2
- package/dist/components/media/file-input/file-input.class.d.ts +40 -19
- package/dist/components/media/file-input/file-input.class.js +2 -2
- package/dist/components/media/map/map.class.d.ts +138 -12
- package/dist/components/media/map/map.class.js +25 -20
- package/dist/components/media/map/map.styles.js +1 -1
- package/dist/components/overlays/callout/callout.styles.js +1 -1
- package/dist/components/overlays/dialog/dialog.styles.js +1 -1
- package/dist/components/overlays/overlay/dropdown.class.d.ts +13 -3
- package/dist/components/overlays/overlay/dropdown.class.js +2 -2
- package/dist/components/overlays/overlay/popover.class.d.ts +12 -3
- package/dist/components/overlays/overlay/popover.class.js +2 -2
- package/dist/components/overlays/rating/rating.class.d.ts +9 -7
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +5 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +5 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
- package/dist/components/retrieval/graph-legend/graph-legend.styles.js +1 -1
- package/dist/components/retrieval/retrieval-value-format.js +1 -1
- package/dist/components/retrieval/source-list/source-list.styles.js +1 -1
- package/dist/components/utility/copy-button/copy-button.class.d.ts +23 -11
- package/dist/components/utility/copy-button/copy-button.class.js +2 -2
- package/dist/components/utility/copy-button/copy-button.styles.js +1 -1
- package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +4 -0
- package/dist/components/utility/export-button/export-button.class.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.styles.js +1 -1
- package/dist/components/utility/known-date/known-date.class.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +38 -3
- package/dist/components/utility/mention-popover/mention-popover.class.js +2 -1
- package/dist/components/utility/mention-popover/mention-popover.styles.js +1 -1
- package/dist/components/utility/poll-status/poll-status.styles.js +1 -1
- package/dist/components/utility/tour/tour.class.d.ts +4 -0
- package/dist/components/utility/tour/tour.class.js +1 -1
- package/dist/components/utility/tour/tour.styles.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +2 -2
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +2 -2
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +2 -2
- package/dist/components/viewers/highlight-layer/highlight-layer.class.js +2 -2
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +2 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +2 -2
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +2 -2
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +2 -2
- package/dist/custom-elements-jsx.d.ts +2 -2
- package/dist/events.d.ts +20 -13
- package/dist/internal/aggregate-file-limits.d.ts +33 -0
- package/dist/internal/aggregate-file-limits.js +1 -0
- package/dist/internal/catalog-picker.d.ts +15 -2
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/debounce-controller.d.ts +14 -0
- package/dist/internal/debounce-controller.js +1 -1
- package/dist/internal/default-strings.generated.d.ts +1 -1
- package/dist/internal/default-strings.generated.js +2 -2
- package/dist/internal/focus-navigation.d.ts +45 -0
- package/dist/internal/focus-navigation.js +1 -1
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/initial-slot-collection.d.ts +30 -0
- package/dist/internal/initial-slot-collection.js +1 -0
- package/dist/internal/intl-cache.js +1 -1
- package/dist/internal/invalid-event-alias.d.ts +46 -0
- package/dist/internal/invalid-event-alias.js +1 -1
- package/dist/internal/localization-runtime.d.ts +24 -0
- package/dist/internal/localization-runtime.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/positioning-strategy.d.ts +3 -1
- package/dist/internal/state-part.d.ts +49 -0
- package/dist/internal/state-part.js +1 -0
- package/dist/internal/variants.styles.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/lyra.js +1 -1
- package/dist/svelte.d.ts +2 -2
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/lyra-tag-event-map.d.ts +2 -2
- package/dist/testing/lyra-tag-event-map.js +1 -1
- package/dist/testing/wait-for-mount.d.ts +46 -0
- package/dist/testing/wait-for-mount.js +1 -0
- package/dist/theme/theme-bootstrap.js +1 -1
- package/dist/theme/theme.d.ts +11 -2
- package/dist/theme/theme.js +1 -1
- package/dist/translations/ar/layout.js +1 -1
- package/dist/translations/ar/retrieval.js +1 -1
- package/dist/translations/ar/shared.js +1 -1
- package/dist/translations/de/layout.js +1 -1
- package/dist/translations/de/retrieval.js +1 -1
- package/dist/translations/de/shared.js +1 -1
- package/dist/translations/es/layout.js +1 -1
- package/dist/translations/es/retrieval.js +1 -1
- package/dist/translations/es/shared.js +1 -1
- package/dist/translations/fa/layout.js +1 -1
- package/dist/translations/fa/retrieval.js +1 -1
- package/dist/translations/fa/shared.js +1 -1
- package/dist/translations/fr/layout.js +1 -1
- package/dist/translations/fr/retrieval.js +1 -1
- package/dist/translations/fr/shared.js +1 -1
- package/dist/translations/he/layout.js +1 -1
- package/dist/translations/he/retrieval.js +1 -1
- package/dist/translations/he/shared.js +1 -1
- package/dist/translations/it/layout.js +1 -1
- package/dist/translations/it/retrieval.js +1 -1
- package/dist/translations/it/shared.js +1 -1
- package/dist/translations/ja/layout.js +1 -1
- package/dist/translations/ja/retrieval.js +1 -1
- package/dist/translations/ja/shared.js +1 -1
- package/dist/translations/pt-BR/layout.js +1 -1
- package/dist/translations/pt-BR/retrieval.js +1 -1
- package/dist/translations/pt-BR/shared.js +1 -1
- package/dist/translations/ro/agent-tools.d.ts +1 -0
- package/dist/translations/ro/agent-tools.js +1 -0
- package/dist/translations/ro/charts.d.ts +1 -0
- package/dist/translations/ro/charts.js +1 -0
- package/dist/translations/ro/conversation.d.ts +1 -0
- package/dist/translations/ro/conversation.js +1 -0
- package/dist/translations/ro/data.d.ts +1 -0
- package/dist/translations/ro/data.js +1 -0
- package/dist/translations/ro/forms.d.ts +1 -0
- package/dist/translations/ro/forms.js +1 -0
- package/dist/translations/ro/layout.d.ts +1 -0
- package/dist/translations/ro/layout.js +1 -0
- package/dist/translations/ro/media.d.ts +1 -0
- package/dist/translations/ro/media.js +1 -0
- package/dist/translations/ro/overlays.d.ts +1 -0
- package/dist/translations/ro/overlays.js +1 -0
- package/dist/translations/ro/retrieval.d.ts +1 -0
- package/dist/translations/ro/retrieval.js +1 -0
- package/dist/translations/ro/shared.d.ts +1 -0
- package/dist/translations/ro/shared.js +1 -0
- package/dist/translations/ro/utility.d.ts +1 -0
- package/dist/translations/ro/utility.js +1 -0
- package/dist/translations/ro/viewers.d.ts +1 -0
- package/dist/translations/ro/viewers.js +5 -0
- package/dist/translations/ro.d.ts +1 -0
- package/dist/translations/ro.js +1 -0
- package/dist/translations/ru/layout.js +1 -1
- package/dist/translations/ru/retrieval.js +1 -1
- package/dist/translations/ru/shared.js +1 -1
- package/dist/translations/zh-CN/layout.js +1 -1
- package/dist/translations/zh-CN/retrieval.js +1 -1
- package/dist/translations/zh-CN/shared.js +1 -1
- package/dist/utilities/format.d.ts +17 -0
- package/dist/utilities/format.js +1 -1
- package/dist/vue.d.ts +2 -2
- package/llms/components/lr-app-rail-group.md +87 -10
- package/llms/components/lr-app-rail-item.md +88 -11
- package/llms/components/lr-app-rail.md +88 -11
- package/llms/components/lr-attachment-trigger.md +21 -0
- package/llms/components/lr-bar-chart.md +3 -2
- package/llms/components/lr-bubble-chart.md +3 -2
- package/llms/components/lr-button.md +5 -4
- package/llms/components/lr-callout.md +10 -0
- package/llms/components/lr-card.md +2 -1
- package/llms/components/lr-chart.md +43 -12
- package/llms/components/lr-citation-badge.md +7 -1
- package/llms/components/lr-code-block.md +21 -0
- package/llms/components/lr-color-picker.md +12 -7
- package/llms/components/lr-combobox.md +20 -1
- package/llms/components/lr-confirm-bar.md +36 -7
- package/llms/components/lr-context-meter.md +17 -4
- package/llms/components/lr-date-input.md +7 -1
- package/llms/components/lr-date-picker.md +6 -0
- package/llms/components/lr-dialog.md +21 -0
- package/llms/components/lr-doughnut-chart.md +3 -2
- package/llms/components/lr-drawer.md +10 -0
- package/llms/components/lr-drop-zone.md +16 -7
- package/llms/components/lr-dropdown-item.md +7 -0
- package/llms/components/lr-entity-chip.md +7 -1
- package/llms/components/lr-export-button.md +7 -1
- package/llms/components/lr-file-input.md +21 -10
- package/llms/components/lr-filter-bar.md +177 -18
- package/llms/components/lr-flow-canvas.md +16 -9
- package/llms/components/lr-gauge.md +22 -2
- package/llms/components/lr-histogram.md +7 -2
- package/llms/components/lr-icon-button.md +17 -8
- package/llms/components/lr-input.md +3 -1
- package/llms/components/lr-line-chart.md +3 -2
- package/llms/components/lr-lite-chart.md +13 -0
- package/llms/components/lr-locale-picker.md +7 -1
- package/llms/components/lr-map.md +63 -6
- package/llms/components/lr-mention-popover.md +16 -3
- package/llms/components/lr-menu-item.md +7 -0
- package/llms/components/lr-menu.md +8 -1
- package/llms/components/lr-message-actions.md +10 -0
- package/llms/components/lr-model-select.md +8 -3
- package/llms/components/lr-native-time-input.md +8 -1
- package/llms/components/lr-number-input.md +8 -1
- package/llms/components/lr-option.md +19 -0
- package/llms/components/lr-otp-input.md +6 -0
- package/llms/components/lr-pie-chart.md +3 -2
- package/llms/components/lr-polar-area-chart.md +3 -2
- package/llms/components/lr-prompt-input.md +2 -2
- package/llms/components/lr-radar-chart.md +3 -2
- package/llms/components/lr-reorder-item.md +12 -0
- package/llms/components/lr-reorder-list.md +12 -0
- package/llms/components/lr-scatter-chart.md +3 -2
- package/llms/components/lr-select.md +19 -2
- package/llms/components/lr-sequence-strip.md +10 -4
- package/llms/components/lr-streaming-text-core.md +28 -11
- package/llms/components/lr-streaming-text.md +41 -6
- package/llms/components/lr-suggestion-chips.md +8 -4
- package/llms/components/lr-table.md +47 -10
- package/llms/components/lr-textarea.md +1 -1
- package/llms/components/lr-time-input.md +7 -1
- package/llms/components/lr-tool-call-chip.md +7 -1
- package/llms/components/lr-tour.md +7 -1
- package/llms/components/lr-usage-badge.md +7 -1
- package/llms/components/lr-virtual-list.md +53 -0
- package/llms/components/lr-voice-picker.md +7 -3
- package/llms/shared.md +175 -19
- package/llms/tokens.md +17 -1
- package/llms-full.txt +1214 -169
- package/package.json +43 -3
- package/registrations.json +1 -1
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
|
|
10
10
|
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
|
-
- **Themeable via**
|
|
12
|
+
- **Themeable via** 29 parts, 2 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
14
14
|
|
|
15
15
|
---
|
|
@@ -21,7 +21,43 @@ Dashboard filter row that composes Lyra inputs and removable chips, with reset a
|
|
|
21
21
|
Choice option entries must expose string `value` and `label` data fields; malformed entries are
|
|
22
22
|
omitted independently, while supplied empty strings remain valid. A custom definition requires its
|
|
23
23
|
adapter and a callable `render`; a rejected definition does not reserve its filter ID. Valid
|
|
24
|
-
siblings remain available. Exceptions thrown by an admitted trusted renderer still propagate.
|
|
24
|
+
siblings remain available. Exceptions thrown by an admitted trusted renderer still propagate. A
|
|
25
|
+
chip-only definition requires neither options nor an adapter — a stable filter ID and a label are
|
|
26
|
+
the whole schema, since a malformed `formatValue`/`isEmpty` still has a correct fallback and so is
|
|
27
|
+
guarded where it is used rather than rejected outright.
|
|
28
|
+
|
|
29
|
+
**Lean registration entry.** `components/layout/filter-bar/filter-bar.js` (the default entry)
|
|
30
|
+
eagerly imports every composed control this bar could possibly render — `<lr-select>`,
|
|
31
|
+
`<lr-combobox>`, `<lr-dropdown>` + `<lr-dropdown-item>` (the `'checkbox-menu'` branch),
|
|
32
|
+
`<lr-date-input>`, `<lr-input>`, `<lr-chip>`/`<lr-chip-group>` (the active-filter row), and
|
|
33
|
+
`<lr-button>`/`<lr-spinner>` (the reset action and the loading status) — because `filters` is a
|
|
34
|
+
runtime value it cannot inspect ahead of time. A bar that only ever declares `'select'`/`'text'`
|
|
35
|
+
filters still pays for `<lr-combobox>` and `<lr-date-input>` through that entry: a measured ~69.5 kB
|
|
36
|
+
gzip more than importing only what it uses. A consumer who knows their own filter `type`s ahead of
|
|
37
|
+
time can import `components/layout/filter-bar/filter-bar-register.js` instead, which registers
|
|
38
|
+
`<lr-filter-bar>` and nothing else, then import each composed control's own registration entry for
|
|
39
|
+
the filter `type`s actually declared:
|
|
40
|
+
|
|
41
|
+
| Filter `type` | Registration entry |
|
|
42
|
+
| --- | --- |
|
|
43
|
+
| `'select'` | `components/forms/select/select.js` |
|
|
44
|
+
| `'combobox'` | `components/forms/combobox/combobox.js` |
|
|
45
|
+
| `'checkbox-menu'` | `components/overlays/overlay/dropdown.js` **and** `components/layout/menu/dropdown-item.js` |
|
|
46
|
+
| `'date'` / `'date-range'` | `components/forms/date-picker/date-input.js` |
|
|
47
|
+
| `'text'` | `components/forms/input/input.js` |
|
|
48
|
+
| `'chip'` | none — renders no control |
|
|
49
|
+
|
|
50
|
+
Two more are unconditional regardless of which filter `type`s are declared: `<lr-button>` renders
|
|
51
|
+
the reset action on every bar, and `<lr-chip>`/`<lr-chip-group>` render the active-filter row
|
|
52
|
+
whenever any filter has a value (further gated by `activeFiltersDisplay`, but never provably absent
|
|
53
|
+
for a generic bar) — `components/forms/button/button.js` and `components/overlays/chip/chip.js` +
|
|
54
|
+
`components/overlays/chip/chip-group.js`. `<lr-spinner>`
|
|
55
|
+
(`components/overlays/spinner/spinner.js`) is the one built-in dependency the lean entry omits even
|
|
56
|
+
though every bar could use it: `loading` is a plain boolean any consumer can leave unset entirely,
|
|
57
|
+
unlike a filter `type`, which `filters` always names outright — import it too if the bar ever sets
|
|
58
|
+
`loading`. A filter definition whose `type` has no matching import above renders no usable control
|
|
59
|
+
until something else registers it, the same trade `icon-button-register.js` documents for
|
|
60
|
+
`<lr-icon-button>`'s own `icon`/`src` attribute.
|
|
25
61
|
|
|
26
62
|
**Properties:**
|
|
27
63
|
|
|
@@ -47,8 +83,20 @@ siblings remain available. Exceptions thrown by an admitted trusted renderer sti
|
|
|
47
83
|
- `loading: boolean = false` (reflected) — shows the status spinner and disables reset while leaving
|
|
48
84
|
filters editable.
|
|
49
85
|
- `hasActiveFilters: boolean` (read-only) — whether any configured filter currently has a value.
|
|
86
|
+
Drives the reset button's own disabled state; unaffected by `activeFiltersDisplay`.
|
|
50
87
|
- `invalidFilterIds: readonly string[]` (read-only) — immutable ids of required filters whose
|
|
51
88
|
values are unset.
|
|
89
|
+
- `activeFiltersDisplay: 'all' | 'changed' | 'hidden' = 'all'` (reflected, attribute
|
|
90
|
+
`active-filters-display`) — which currently-active filters render as removable chips in the row
|
|
91
|
+
below the fields. `'all'` (the default, and this component's only behavior before this property
|
|
92
|
+
existed) shows one chip per non-empty filter, including one sitting at its own `defaultValue`.
|
|
93
|
+
`'changed'` shows a chip only for a filter whose value differs from its own `defaultValue` — so a
|
|
94
|
+
bar whose defaults narrow the view on load does not claim the user narrowed it — and a filter with
|
|
95
|
+
no declared `defaultValue` counts as changed as soon as it has any value at all. `'hidden'` never
|
|
96
|
+
renders the row. Array values compare against `defaultValue` positionally (same length, same entry
|
|
97
|
+
at each index), matching this component's only other array-equality precedent (a custom adapter's
|
|
98
|
+
own `clearValue` comparison); a `'date-range'` value is a single composed string, so it compares
|
|
99
|
+
like any other string. Removing a chip always clears that filter, unaffected by this property.
|
|
52
100
|
|
|
53
101
|
The composed reset action uses `lr-button`'s default `m` size tier, matching the default rendered
|
|
54
102
|
height of adjacent select, combobox, input, and date fields instead of introducing a shorter action
|
|
@@ -77,12 +125,13 @@ action) rendered inside `controls`, next to the reset button. Hidden and claimin
|
|
|
77
125
|
space while nothing is slotted.
|
|
78
126
|
|
|
79
127
|
**CSS parts:** `base`, `controls`, `field`, `field-<filterId>`, `end`, `filter-control`,
|
|
80
|
-
`filter-control-label`, `filter-control-
|
|
81
|
-
`filter-control-
|
|
82
|
-
`filter-control-
|
|
83
|
-
`filter-control-
|
|
84
|
-
`filter-control-
|
|
85
|
-
`
|
|
128
|
+
`filter-control-label`, `filter-control-label-group`, `filter-control-field`,
|
|
129
|
+
`filter-control-input`, `filter-control-start`, `filter-control-end`, `filter-control-listbox`,
|
|
130
|
+
`filter-control-option`, `filter-control-tags`, `filter-control-tag`, `filter-control-tag-label`,
|
|
131
|
+
`filter-control-tag-remove-button`, `filter-control-tag-remove-button-base`,
|
|
132
|
+
`filter-control-clear-button`, `filter-control-expand-button`, `filter-control-expand-icon`,
|
|
133
|
+
`filter-control-popup`, `filter-control-error`, `filter-control-hint`, `active-filters`, `chips`,
|
|
134
|
+
`chip`, `reset-button`, `status`.
|
|
86
135
|
|
|
87
136
|
The `filter-control-*` parts are semantic aliases forwarded from each built-in control's shadow
|
|
88
137
|
surface. `filter-control-field` consistently reaches the select trigger, combobox container, or
|
|
@@ -90,9 +139,23 @@ text/date input wrapper; `filter-control-input` reaches the corresponding displa
|
|
|
90
139
|
Listbox/option aliases apply to select and combobox filters, `filter-control-tags`/
|
|
91
140
|
`filter-control-tag`/`filter-control-tag-label` apply to a `multiple` combobox filter's selected-tag
|
|
92
141
|
chips (`filter-control-tag-label` is capped by that control's own `--tag-max-size`), and
|
|
93
|
-
expand-button/popup apply to date filters.
|
|
142
|
+
expand-button/popup apply to date filters. `filter-control-tag-remove-button`/
|
|
143
|
+
`filter-control-tag-remove-button-base` reach a selected tag's own remove button and its inner icon
|
|
144
|
+
wrapper — the same reach a standalone `lr-combobox`/`lr-select` consumer already has, now available
|
|
145
|
+
from `lr-filter-bar` too, for a consumer re-skinning filter tags as pills who needs the remove
|
|
146
|
+
target inside one to be stylable. This lets a consumer theme the composed tier from
|
|
94
147
|
`lr-filter-bar::part(...)` without depending on the built-in control type selected by a filter
|
|
95
148
|
definition. Custom renderers retain ownership of their own part forwarding.
|
|
149
|
+
|
|
150
|
+
A `multiple` `'combobox'` filter collapses past its own `max-options-visible` (3 by default, an
|
|
151
|
+
`<lr-combobox>` property this component does not forward) into a localized "+N" overflow indicator,
|
|
152
|
+
the same substance as `lr-select`'s own `multiple`-mode overflow chip. The one remaining difference:
|
|
153
|
+
`lr-select`'s overflow chip carries a second, distinguishing `tag-overflow` part
|
|
154
|
+
(`part="tag tag-overflow tag__base"`) so a consumer can style just that chip; `lr-combobox`'s
|
|
155
|
+
overflow chip carries only the plain `tag` part, with no equivalent token to forward as
|
|
156
|
+
`filter-control-tag-overflow`. Adding one is `<lr-combobox>`'s own surface to grow, not something
|
|
157
|
+
`lr-filter-bar`'s `exportparts` can manufacture for a part its composed child never renders — noted
|
|
158
|
+
here as a known, deliberate gap rather than silently undocumented.
|
|
96
159
|
On a `'checkbox-menu'` filter, `filter-control-field` is the trigger button's own frame — the
|
|
97
160
|
element inside `<lr-button>` that draws the border, background and radius, not the chrome-less
|
|
98
161
|
button host, so a `::part(filter-control-field) { border-color: … }` rule works there exactly as it
|
|
@@ -101,7 +164,19 @@ a definition `icon` lands), `filter-control-input` is its selection summary, `fi
|
|
|
101
164
|
is the trigger's own label text (not a stacked label above the control), `filter-control-listbox` is
|
|
102
165
|
the dropdown's popup surface, `filter-control-option` is one `role="menuitemcheckbox"` row, and
|
|
103
166
|
`filter-control-error` is the revealed required message — rendered by the bar itself, because the
|
|
104
|
-
composed dropdown has no error chrome of its own.
|
|
167
|
+
composed dropdown has no error chrome of its own. The trigger also renders a `with-caret` disclosure
|
|
168
|
+
chevron, matching `lr-select`'s own — forwarded as `filter-control-expand-icon`, the same name a
|
|
169
|
+
select/combobox/date-input filter's own chevron already uses, so one consumer rule styles every
|
|
170
|
+
filter type's expand icon. `filter-control-label-group` reaches the trigger's own label wrapper —
|
|
171
|
+
the flex row this component lays `filter-control-label` and `filter-control-input` out in, which
|
|
172
|
+
also grows to fill the stretched trigger (via `with-caret`) so its content starts at the leading
|
|
173
|
+
edge instead of centring; no other filter type renders this part, since every other type's label and
|
|
174
|
+
input are two independent elements with no shared wrapper of their own. This component does not
|
|
175
|
+
render a stacked label above a `'checkbox-menu'` field the way every other built-in type does:
|
|
176
|
+
every other type's stacked label is rendered by the composed control itself, and there is no
|
|
177
|
+
equivalent shared "stacked label" template inside `<lr-filter-bar>` for this branch to reuse without
|
|
178
|
+
inventing a new one, so `labelVisibility` keeps its narrower meaning here (whether the trigger's own
|
|
179
|
+
baked-in label text is visible or screen-reader-only).
|
|
105
180
|
|
|
106
181
|
`field` wraps one filter's composed control and its validation spacer inside `controls`; its
|
|
107
182
|
flex-basis is themeable via `--lr-filter-bar-field-basis` (default `var(--lr-size-12rem)`).
|
|
@@ -119,12 +194,17 @@ alone, exactly as before this part existed, rather than risking a `part` attribu
|
|
|
119
194
|
space-separated token list fabricates an unrelated second token.
|
|
120
195
|
|
|
121
196
|
A `'select'`, `'combobox'` or `'checkbox-menu'` filter's required `options` entries are
|
|
122
|
-
`LyraFilterBarOption { value, label, icon?, searchText? }`. `searchText` is extra text
|
|
123
|
-
also matches on, forwarded verbatim to `<lr-option>`'s own `search-text`, so a row can
|
|
124
|
-
visible `label` ("Urgent") while still matching a long canonical key ("SEV-1
|
|
125
|
-
It affects a `'combobox'` filter only: the attribute is written on every
|
|
126
|
-
but `<lr-select>`'s listbox type-ahead matches the option's `label`
|
|
127
|
-
`'checkbox-menu'` has no text entry to match against.
|
|
197
|
+
`LyraFilterBarOption { value, label, icon?, searchText?, disabled? }`. `searchText` is extra text
|
|
198
|
+
the option also matches on, forwarded verbatim to `<lr-option>`'s own `search-text`, so a row can
|
|
199
|
+
keep a short visible `label` ("Urgent") while still matching a long canonical key ("SEV-1
|
|
200
|
+
production outage"). It affects a `'combobox'` filter only: the attribute is written on every
|
|
201
|
+
choice type's `<lr-option>`, but `<lr-select>`'s listbox type-ahead matches the option's `label`
|
|
202
|
+
alone and never reads it, and a `'checkbox-menu'` has no text entry to match against. `disabled`
|
|
203
|
+
marks the option non-actionable: forwarded to `<lr-option disabled>` for `'select'`/`'combobox'`
|
|
204
|
+
and to the composed `<lr-dropdown-item disabled>` for `'checkbox-menu'`, so the row renders
|
|
205
|
+
genuinely disabled (no tab/roving stop, no hover/press affordance) and arrow-key navigation already
|
|
206
|
+
steps past it, since that is the composed control's own existing `disabled` behavior. Omitted or
|
|
207
|
+
`false` renders the option exactly as before this field existed.
|
|
128
208
|
`icon` is optional Lit content — a status dot, a type glyph, a flag — rendered into the composed
|
|
129
209
|
`<lr-option>`'s own `start` slot as inert, `aria-hidden` chrome, so it never joins the option's
|
|
130
210
|
accessible name:
|
|
@@ -146,7 +226,9 @@ same-named counterparts (with `combobox`'s `multiple` opting into a multi-value
|
|
|
146
226
|
`'date'`/`'date-range'` both map to `<lr-date-input>` (single vs. `mode="range"`), and `'text'` maps
|
|
147
227
|
to `<lr-input>` for an open-ended free-text query rather than a closed choice set. A `'text'`
|
|
148
228
|
filter's value is the raw query string, verbatim, and its chip shows exactly that string — the same
|
|
149
|
-
text the user typed, not a truncated or normalized form.
|
|
229
|
+
text the user typed, not a truncated or normalized form. `'chip'` is the one type that renders no
|
|
230
|
+
control at all (see **Chip-only filters** below): its value belongs to a widget elsewhere on the
|
|
231
|
+
page, so the bar renders only its active-filter chip and gives it no toolbar cell.
|
|
150
232
|
|
|
151
233
|
Every built-in (non-`'custom'`) filter definition additionally accepts optional `size: LyraSize`,
|
|
152
234
|
`icon: unknown` and `labelVisibility: 'visible' | 'hidden'` fields, and every one whose composed
|
|
@@ -362,12 +444,89 @@ const filters: LyraFilterBarFilterDefinition[] = [
|
|
|
362
444
|
The custom renderer returns a Lit `TemplateResult`; the filter bar places it in its
|
|
363
445
|
`filter-control` part and re-renders it whenever the controlled value or validation state changes.
|
|
364
446
|
|
|
447
|
+
### Chip-only filters
|
|
448
|
+
|
|
449
|
+
Use `type: 'chip'` when the value is already owned by a widget elsewhere on the page — a calendar
|
|
450
|
+
heatmap cell, a map selection, a chart brush — and the bar's job is only to *show* that the filter
|
|
451
|
+
is applied and to let the user take it off. Unlike `type: 'custom'`, which still renders a control
|
|
452
|
+
inside the toolbar, a chip-only filter renders **no control and no toolbar cell at all**: no `field`
|
|
453
|
+
wrapper is emitted for it, so `lr-filter-bar::part(field)` and `::part(field-<filterId>)` never
|
|
454
|
+
match one and a bar whose filters are *all* chip-only shows no empty column — its `controls` row
|
|
455
|
+
still holds the reset button (the "clear all" action such a bar needs), the `end` slot, and the
|
|
456
|
+
loading spinner, exactly like a bar with no filters at all.
|
|
457
|
+
|
|
458
|
+
Everything else is unchanged from any other filter type. The value lives in `value` under its own
|
|
459
|
+
filter ID, rides every `lr-input`/`lr-reset` detail, counts toward `hasActiveFilters` (so it enables
|
|
460
|
+
the reset button) and toward `invalidFilterIds` when the definition is `required`, renders a
|
|
461
|
+
removable active-filter chip subject to `activeFiltersDisplay`, and is cleared both by removing that
|
|
462
|
+
chip and by `reset()`. A `required` chip-only filter is honoured in **bookkeeping only**: it joins
|
|
463
|
+
`invalidFilterIds`, fails `checkValidity()` and moves `lr-validity-change`, but renders no inline
|
|
464
|
+
error, because the bar renders no element of its own for it — the owning widget is responsible for
|
|
465
|
+
its own error affordance. The inherited `placeholder` is inert here for the same reason it is for
|
|
466
|
+
`type: 'custom'`: there is no field to place it in.
|
|
467
|
+
|
|
468
|
+
A chip-only definition adds three optional fields of its own:
|
|
469
|
+
|
|
470
|
+
```ts
|
|
471
|
+
type: 'chip';
|
|
472
|
+
formatValue?: (value: LyraFilterBarFieldValue, locale: string) => string;
|
|
473
|
+
clearValue?: LyraFilterBarFieldValue;
|
|
474
|
+
isEmpty?: (value: LyraFilterBarFieldValue) => boolean;
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
`formatValue` produces the chip's text, and its `locale` argument is the bar's `effectiveLocale` —
|
|
478
|
+
the same locale every built-in type's own chip formatting and a custom adapter's `formatValue`
|
|
479
|
+
already receive, and the reason a chip-only value (normally an already-formatted string such as a
|
|
480
|
+
localized date) can be localized by the caller. That output is caller data, so — like a filter's
|
|
481
|
+
own label — the bar never routes it through its own localization. Omitted, the fallback ladder is
|
|
482
|
+
the one a custom adapter's omitted `formatValue` uses: a string array renders as a localized
|
|
483
|
+
conjunction list, anything else renders verbatim through `String(value)`, and an unset value renders
|
|
484
|
+
as the empty string. Verbatim is exact: a chip-only value is never run through the date branch that
|
|
485
|
+
localizes a `'date'`/`'date-range'` chip, so an ISO day is not silently reformatted and a value
|
|
486
|
+
containing a slash is not mangled.
|
|
487
|
+
|
|
488
|
+
`clearValue` is what a chip removal (and `clearFilter()`) writes, defaulting to the empty string —
|
|
489
|
+
what every non-multi built-in type writes. Declare an empty array for an array-valued chip-only
|
|
490
|
+
filter. `isEmpty` overrides the built-in emptiness rule (absent, `false`, the empty string and the
|
|
491
|
+
empty array are empty; everything else is set). **A domain sentinel must pair the two**: declaring
|
|
492
|
+
a sentinel clear value without a matching `isEmpty` leaves the bar reading the "cleared" value as
|
|
493
|
+
still set, so it keeps rendering a chip for it — the identical pairing a custom adapter's own
|
|
494
|
+
`clearValue`/`isEmpty` documents. With the pair declared, the sentinel is never stored in `value`
|
|
495
|
+
(cleared keys are omitted) and an absent key reads back as the sentinel for the owning widget.
|
|
496
|
+
|
|
497
|
+
```ts
|
|
498
|
+
const filters: LyraFilterBarFilterDefinition[] = [
|
|
499
|
+
{ filterId: "query", label: "Query", type: "text" },
|
|
500
|
+
{
|
|
501
|
+
filterId: "day",
|
|
502
|
+
label: "Day",
|
|
503
|
+
type: "chip",
|
|
504
|
+
formatValue: (value, locale) =>
|
|
505
|
+
new Intl.DateTimeFormat(locale, {
|
|
506
|
+
dateStyle: "medium",
|
|
507
|
+
timeZone: "UTC",
|
|
508
|
+
}).format(new Date(`${String(value)}T00:00:00Z`)),
|
|
509
|
+
},
|
|
510
|
+
];
|
|
511
|
+
|
|
512
|
+
// The calendar heatmap beside the bar owns the value; the bar only shows and removes it.
|
|
513
|
+
heatmap.addEventListener("app-select-day", (event) => {
|
|
514
|
+
const { isoDate } = (event as CustomEvent<{ isoDate: string }>).detail;
|
|
515
|
+
bar.value = { ...bar.value, day: isoDate };
|
|
516
|
+
});
|
|
517
|
+
bar.addEventListener("lr-input", (event) => {
|
|
518
|
+
const { value } = (event as LyraFilterBarInputEvent).detail;
|
|
519
|
+
heatmap.selectedDay = (value["day"] as string | undefined) ?? "";
|
|
520
|
+
});
|
|
521
|
+
```
|
|
522
|
+
|
|
365
523
|
**TypeScript:** `LyraFilterBar<Defs extends readonly LyraFilterBarFilterDefinition[] =
|
|
366
524
|
readonly LyraFilterBarFilterDefinition[]>` — `value` and the `lr-input`/`lr-reset` detail `value`
|
|
367
525
|
narrow to a record keyed per `filterId`, whose value type follows that filter's own definition (a
|
|
368
526
|
`'select'`, a non-`multiple` `'combobox'`, `'text'`, `'date'`, and `'date-range'` narrow to
|
|
369
527
|
`string`; a `'checkbox-menu'` and a `multiple: true` `'combobox'` narrow to `readonly string[]`; a
|
|
370
|
-
`'custom'` filter keeps the full unconstrained field value
|
|
528
|
+
`'custom'` filter keeps the full unconstrained field value, and so does a `'chip'` filter, whose
|
|
529
|
+
value is owned by a widget this component never renders). Declare the schema with `as const
|
|
371
530
|
satisfies readonly LyraFilterBarFilterDefinition[]` and type the element as
|
|
372
531
|
`LyraFilterBar<typeof FILTERS>` to pick it up. Types only; the runtime is unchanged, and an untyped
|
|
373
532
|
`<lr-filter-bar>` keeps today's `LyraFilterBarValue` (`Readonly<Record<string, string | readonly
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
|
|
10
10
|
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
|
-
- **Themeable via** 29 parts,
|
|
12
|
+
- **Themeable via** 29 parts, 15 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
14
14
|
|
|
15
15
|
---
|
|
@@ -47,14 +47,19 @@ import type {
|
|
|
47
47
|
**Properties:**
|
|
48
48
|
|
|
49
49
|
- `nodes: readonly FlowNode[] = []` (attribute: false) — each record has readonly `id`, optional
|
|
50
|
-
`type`, `position`, `data`, `accessibleLabel`, `inputs`, and `
|
|
51
|
-
into layered layout. String `data.label` and `data.description` feed the
|
|
52
|
-
card. Assignment takes a detached, deeply frozen snapshot of plain
|
|
53
|
-
ids and later duplicates first-wins before layout, focus,
|
|
54
|
-
snapshots, and events. At most the first 10,000 source nodes are
|
|
55
|
-
depth/entry budgets; reassign `nodes` after changes. Replacing the
|
|
56
|
-
connect gestures whose ids belonged to the old model and silently
|
|
57
|
-
longer exist.
|
|
50
|
+
`type`, `position`, `data`, `accessibleLabel`, `inputs`, `outputs`, and `disabled`. A missing
|
|
51
|
+
`position` opts into layered layout. String `data.label` and `data.description` feed the
|
|
52
|
+
declarative fallback card. Assignment takes a detached, deeply frozen snapshot of plain
|
|
53
|
+
arrays/records, omitting blank ids and later duplicates first-wins before layout, focus,
|
|
54
|
+
selection, gestures, companion snapshots, and events. At most the first 10,000 source nodes are
|
|
55
|
+
retained, with finite nested depth/entry budgets; reassign `nodes` after changes. Replacing the
|
|
56
|
+
model cancels node-drag and connect gestures whose ids belonged to the old model and silently
|
|
57
|
+
prunes selected ids that no longer exist. `disabled` marks a node non-actionable: it keeps its
|
|
58
|
+
position and card content but cannot be selected/activated by click or keyboard, roving-tabindex
|
|
59
|
+
navigation (arrow keys, Home/End) steps past it, it cannot be dragged even while
|
|
60
|
+
`nodes-draggable`, and it is excluded from starting or receiving a new connection while
|
|
61
|
+
`connectable` (an edge already touching it is left alone). Omitted or `false` renders the node
|
|
62
|
+
exactly as before this field existed.
|
|
58
63
|
- `edges: readonly FlowEdge[] = []` (attribute: false) — readonly `id`, `source`, `target`, optional
|
|
59
64
|
handle ids, optional drawn `label`, and optional `tone: LyraVariant`. The canonical brand value is
|
|
60
65
|
`brand`; the former `accent` value and `FlowEdgeTone` alias are not part of this contract. Blank
|
|
@@ -220,5 +225,7 @@ four above. Set it to `transparent` to opt out of the hover treatment.
|
|
|
220
225
|
- `part="edge-hit-area"` — The transparent wide pointer target behind an edge.
|
|
221
226
|
- `part="node-control"` — The visually hidden, roving selection button for a node.
|
|
222
227
|
- `--lr-flow-canvas-node-selected-outline-color` — Outline color of a selected node. Default: `var(--lr-color-brand)`.
|
|
228
|
+
- `--lr-flow-canvas-node-disabled-opacity` — Opacity of a node whose `FlowNode` entry sets
|
|
229
|
+
`disabled`. Default: `var(--lr-opacity-disabled)`.
|
|
223
230
|
|
|
224
231
|
---
|
|
@@ -42,6 +42,12 @@ explicitly empty labels remain empty and later labels render normally.
|
|
|
42
42
|
- `valueText?: string` (attribute `value-text` — overrides both the visible text and the host's
|
|
43
43
|
`aria-valuetext`; an empty string is treated the same as unset and falls back to the numeric
|
|
44
44
|
`value` while removing `aria-valuetext`)
|
|
45
|
+
- `showValue: boolean = true` (attribute `show-value`, not reflected) — whether the decorative
|
|
46
|
+
`part="value"` caption renders at all; `show-value="false"` omits it the same way an empty
|
|
47
|
+
`label` already omits `part="label"`. `aria-valuenow`/`aria-valuetext` and the host's accessible
|
|
48
|
+
name are unaffected either way, since the caption itself is always `aria-hidden`. Mirrors
|
|
49
|
+
`<lr-progress-bar>`'s/`<lr-progress-ring>`'s own `showValue` name and meaning; the default here
|
|
50
|
+
is `true` (a gauge's whole purpose is showing the reading it announces) where theirs is `false`.
|
|
45
51
|
- `variant: LyraProgressVariant = 'brand'` (reflected) — the same shared semantic-tone vocabulary
|
|
46
52
|
`<lr-progress-bar>` uses (`'neutral'|'brand'|'success'|'warning'|'danger'`). The fallback color
|
|
47
53
|
whenever `thresholds` is empty or matches nothing.
|
|
@@ -58,7 +64,8 @@ explicitly empty labels remain empty and later labels render normally.
|
|
|
58
64
|
|
|
59
65
|
**Slots:** none.
|
|
60
66
|
|
|
61
|
-
**CSS parts:** `base` (the `<svg>`), `track`, `fill`, `value
|
|
67
|
+
**CSS parts:** `base` (the `<svg>`), `track`, `fill`, `value` (rendered only while `showValue` is
|
|
68
|
+
true), `label` (rendered only while `label` is non-empty)
|
|
62
69
|
|
|
63
70
|
**Themeable custom properties:** `--lr-gauge-fill` (fill stroke; overrides `variant`/`thresholds`
|
|
64
71
|
entirely and falls back to the effective variant's shared semantic token —
|
|
@@ -75,6 +82,15 @@ entirely and falls back to the effective variant's shared semantic token —
|
|
|
75
82
|
style="--lr-gauge-fill: var(--lr-color-success)"
|
|
76
83
|
></lr-gauge>
|
|
77
84
|
<lr-gauge shape="linear" value="0.4" max="1" value-text="72°F"></lr-gauge>
|
|
85
|
+
<!-- compact dashboard meter: a slim, captionless, thresholded row -->
|
|
86
|
+
<lr-gauge
|
|
87
|
+
shape="linear"
|
|
88
|
+
size="xs"
|
|
89
|
+
show-value="false"
|
|
90
|
+
aria-label="Spend"
|
|
91
|
+
value="84"
|
|
92
|
+
max="100"
|
|
93
|
+
></lr-gauge>
|
|
78
94
|
<!-- automatic threshold coloring: same rule, opposite direction -->
|
|
79
95
|
<lr-gauge id="cpu" value="82" label="CPU"></lr-gauge>
|
|
80
96
|
<script>
|
|
@@ -118,7 +134,11 @@ entirely and falls back to the effective variant's shared semantic token —
|
|
|
118
134
|
- no documented component-specific sizing custom property. The host box is fixed em values
|
|
119
135
|
(`8em` radial/ring, `12em`/`1.5em` linear) against the host font size, so `size` is the supported
|
|
120
136
|
way to step it; for a dimension off the ladder, set plain CSS `width`/`height` (or `font-size`)
|
|
121
|
-
on the element instead.
|
|
137
|
+
on the element instead. The value/label captions are `em`-sized against that same host font-size,
|
|
138
|
+
so they shrink right along with the frame at a smaller tier or a smaller host `font-size` —
|
|
139
|
+
combine a small tier (or a small host `font-size`) with `show-value="false"` for a slim,
|
|
140
|
+
thresholded dashboard meter, matching `<lr-progress-bar size="xs">`'s footprint but with
|
|
141
|
+
`role="meter"` and one `thresholds` array instead of a hand-written ratio-to-variant mapping.
|
|
122
142
|
- Divide-by-zero guarded, and radial/linear share one component via the `shape`
|
|
123
143
|
attribute.
|
|
124
144
|
- non-finite `value` text remains blank unless `valueText` supplies a truthful fallback; that
|
|
@@ -37,9 +37,10 @@ Bins `values` into `bins` equal-width buckets and renders as a bar chart (extend
|
|
|
37
37
|
(`index-axis`), `hiddenDatasets`, `hiddenDatums`, `legendPosition` (`legend-position`),
|
|
38
38
|
`legendMode` (`legend-mode`), `legendDisplay` (`legend-display`), `max`, `min`, `plugins`,
|
|
39
39
|
`withoutAnimation` (`without-animation`), `withoutLegend` (`without-legend`), `withoutTooltip`
|
|
40
|
-
(`without-tooltip`), `valueFormatter`, `formatter`, `
|
|
40
|
+
(`without-tooltip`), `valueFormatter`, `formatter`, `tooltipTitleFormatter`,
|
|
41
|
+
`tooltipFooterFormatter`, `area`, `zoom`, `config`, `height`, `xLabel` (`x-label`),
|
|
41
42
|
`yLabel` (`y-label`), `y2Label` (`y2-label`), `beginAtZero` (`begin-at-zero`),
|
|
42
|
-
`stacked`, `dataLabels` (`data-labels`), `stackTotals` (`stack-totals`), `showDataTable`
|
|
43
|
+
`stacked`, `stackedAxes`, `dataLabels` (`data-labels`), `stackTotals` (`stack-totals`), `showDataTable`
|
|
43
44
|
(`show-data-table`), `dataTableToggle` (`data-table-toggle`), `chartArea` (readonly).
|
|
44
45
|
|
|
45
46
|
**Methods:** `resetZoom()`, `refreshTheme()`, and `renderChart()` are inherited; `appendSamples(values,
|
|
@@ -103,5 +104,9 @@ their semantics, defaults, and gotchas.
|
|
|
103
104
|
- `values`/`bins`/`seriesLabel` changes join the inherited connected-and-visible redraw path. There is no
|
|
104
105
|
second post-update refresh, so a same-tick disconnect cannot recreate Chart.js on a detached
|
|
105
106
|
canvas and off-screen sample updates do not repaint it.
|
|
107
|
+
- calling `binValues()` directly (not through `<lr-histogram>`, which always passes its own
|
|
108
|
+
resolved `effectiveLocale`) with an omitted `locale` (or `'auto'`) now resolves to the page's
|
|
109
|
+
active `setLyraLocale()` locale instead of a hardcoded `'en'`, matching `utilities/format.ts`'s
|
|
110
|
+
helpers; an app that never calls `setLyraLocale()` sees no change, and an explicit tag still wins.
|
|
106
111
|
|
|
107
112
|
---
|
|
@@ -69,7 +69,8 @@ button whose purpose isn't generic.
|
|
|
69
69
|
Host `aria-haspopup` and `aria-expanded` values are forwarded reactively to the shadow-internal
|
|
70
70
|
native button. `aria-pressed` (`true`, `false`, `mixed`) supports icon-only toggle actions such as
|
|
71
71
|
mute, favorite, or pin, and reaches the `<button>` rendering only — a link icon-button (`href` set)
|
|
72
|
-
never receives it, since `role="link"` has no pressed state
|
|
72
|
+
never receives it, since `role="link"` has no pressed state (that carve-out arrived in **16.0.0**;
|
|
73
|
+
earlier versions forwarded it onto the anchor too); `aria-current` (`page`, `step`,
|
|
73
74
|
`location`, `date`, `time`, `true`, `false`) is global and supports current-item icon buttons such
|
|
74
75
|
as an active nav/pagination target in both renderings. Both follow attribute
|
|
75
76
|
changes, removal, and button/link replacement without changing the native role of an enabled
|
|
@@ -123,16 +124,24 @@ DOM while at least one top-level slotted element needs the bare-geometry fallbac
|
|
|
123
124
|
**Themeable custom properties:** `--lr-icon-button-size` (default `2.5rem`) is the **minimum**
|
|
124
125
|
tappable inline and block size of the native button — a floor, not a fixed size. Content larger
|
|
125
126
|
than it grows the button and keeps its own aspect ratio; a small glyph pads out to it. It is a
|
|
126
|
-
library-wide token (declared on
|
|
127
|
+
library-wide token (declared on every `lr-*` host by the shared token layer, and the shared minimum tappable size
|
|
127
128
|
that several other components size their icon-only controls against), so overriding
|
|
128
129
|
`--lr-theme-icon-button-size` globally resizes all of them together. Keep the resolved value at or
|
|
129
|
-
above 24px — see `llms/shared.md`.
|
|
130
|
-
|
|
130
|
+
above 24px — see `llms/shared.md`. **`--lr-icon-button-size` is element-scoped, unlike every other
|
|
131
|
+
token in this section:** the shared token layer re-declares it on every `lr-*` host's own `:host`,
|
|
132
|
+
so a rule that sets `--lr-icon-button-size` on an ancestor wrapper is reset the moment it crosses
|
|
133
|
+
into any intervening `lr-*` component and never reaches a `<lr-icon-button>` composed inside it
|
|
134
|
+
(e.g. one slotted through `<lr-popover>`). The only two levers that actually reach it are: setting
|
|
135
|
+
`--lr-icon-button-size` directly on the icon button element itself, where no intervening component
|
|
136
|
+
sits between the rule and the property; or setting `--lr-theme-icon-button-size` on an ancestor,
|
|
137
|
+
which the shared layer reads through `var()` at every level and which therefore reaches a
|
|
131
138
|
`<lr-icon-button>` composed inside another component, e.g. `<lr-copy-button>`/
|
|
132
|
-
`<lr-message-actions
|
|
133
|
-
RENDERED hit area back at 2.75rem/44px
|
|
134
|
-
|
|
135
|
-
mouse. `--lr-icon-button-radius` (default
|
|
139
|
+
`<lr-message-actions>`. Lowering the floor for a dense action row through either lever is safe even
|
|
140
|
+
below 24px: a coarse-pointer/no-hover media rule floors the RENDERED hit area back at 2.75rem/44px
|
|
141
|
+
regardless of how far the override lowered it, so the control stays comfortably tappable the moment
|
|
142
|
+
the pointer reaching it is a finger rather than a mouse. `--lr-icon-button-radius` (default
|
|
143
|
+
`--lr-radius`) is not re-declared anywhere in the shared layer, so — like every other token below —
|
|
144
|
+
it inherits normally from an ancestor even through an intervening component; it is the
|
|
136
145
|
`[part='button']` corner radius, retunable without a `::part(button)` rule — the same
|
|
137
146
|
`--lr-button-radius` pattern; `lr-icon-button` has no `size` tiers, so there is no per-tier gap
|
|
138
147
|
counterpart to it. The internal control sets `font: inherit`, so an `em`-sized slotted glyph takes
|
|
@@ -153,7 +153,9 @@ writes remain valid and read back as booleans. Markup uses `autocorrect="on"` /
|
|
|
153
153
|
before. Omitted, `0`, or a non-finite value means no debounce at all: `lr-input-settled` never
|
|
154
154
|
fires. A pending debounce is flushed immediately by `change`/Enter/blur (so a blur never drops
|
|
155
155
|
the last keystroke) and cancelled with no stray settle by disconnection, the built-in clear
|
|
156
|
-
button, and a programmatic `value` write.
|
|
156
|
+
button, and a programmatic `value` write that changes the value. A write of the value already
|
|
157
|
+
held leaves it pending, so a framework binding that writes the just-typed value back on each
|
|
158
|
+
render (the controlled-input pattern) still settles. Shares its `DebounceController` primitive with
|
|
157
159
|
`lr-filter-bar`'s own per-filter `debounce` and with `lr-textarea`'s identical property
|
|
158
160
|
- `name`/`disabled`/`required` (from `FormAssociated`)
|
|
159
161
|
|
|
@@ -28,9 +28,10 @@ of every entry in these lists.**
|
|
|
28
28
|
**Properties:** `description`, `grid`, `axes`, `compact`, `indexAxis` (`index-axis`), `label`, `hiddenDatasets`, `legendPosition`
|
|
29
29
|
(`legend-position`), `hiddenDatums`, `legendMode` (`legend-mode`), `legendDisplay` (`legend-display`),
|
|
30
30
|
`max`, `min`, `plugins`, `scaleType` (`scale-type`), `annotations`,
|
|
31
|
-
`stacked`, `withoutAnimation` (`without-animation`),
|
|
31
|
+
`stacked`, `stackedAxes`, `withoutAnimation` (`without-animation`),
|
|
32
32
|
`withoutLegend` (`without-legend`), `withoutTooltip` (`without-tooltip`), `xLabel` (`x-label`),
|
|
33
|
-
`yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`,
|
|
33
|
+
`yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`,
|
|
34
|
+
`tooltipTitleFormatter`, `tooltipFooterFormatter`, `area`, `zoom`,
|
|
34
35
|
`height`, `y2Label` (`y2-label`), `beginAtZero` (`begin-at-zero`), `dataLabels`
|
|
35
36
|
(`data-labels`), `stackTotals` (`stack-totals`), `config`, `showDataTable`
|
|
36
37
|
(`show-data-table`), `dataTableToggle` (`data-table-toggle`), `chartArea` (readonly), and `chart`.
|
|
@@ -23,6 +23,19 @@ tooltips (native SVG `<title>`, no positioning JS) — not a full `lr-chart` rep
|
|
|
23
23
|
zoom/pan, no pie/doughnut/radar/scatter/bubble types, no horizontal/dual-y-axis, no raw-config
|
|
24
24
|
passthrough). Not a subclass of `LyraChart`.
|
|
25
25
|
|
|
26
|
+
Deliberate omissions, assessed and not implemented: `lr-chart`'s per-series `LyraChartSeries.stack`
|
|
27
|
+
group and per-axis `stackedAxes` have no `lr-lite-chart` counterpart. `stacked` here is already
|
|
28
|
+
chart-wide only (see below) and this component has exactly one value scale — no `y2` — so "an
|
|
29
|
+
unstacked overlay on a second axis," the motivating case for `stackedAxes`, has no equivalent
|
|
30
|
+
shape to express. A per-series stack-group id would also need the hand-rolled SVG bar-geometry
|
|
31
|
+
pass (linear/sqrt/log stack compression, `minBarHeight`) to track independent running offsets per
|
|
32
|
+
group instead of one per category, which is a materially larger, higher-risk change than this
|
|
33
|
+
component's existing single-stack model. `tooltipTitleFormatter`/`tooltipFooterFormatter` are
|
|
34
|
+
similarly absent: this component's hover tooltip is a native SVG `<title>` on each mark — one
|
|
35
|
+
self-contained string per mark, generated by `pointText` — not a Chart.js-style multi-item tooltip
|
|
36
|
+
with separate title/body/footer regions for several datasets sharing a hovered category, so there
|
|
37
|
+
is no "every item in the tooltip" surface to hook a title or footer formatter onto.
|
|
38
|
+
|
|
26
39
|
**Properties:**
|
|
27
40
|
- `type: LyraLiteChartType = 'bar'` — `'bar' | 'line'`
|
|
28
41
|
- `labels: readonly string[] = []` (attribute: false)
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
|
|
10
10
|
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
|
-
- **Themeable via** 13 parts,
|
|
12
|
+
- **Themeable via** 13 parts, 25 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
14
14
|
|
|
15
15
|
---
|
|
@@ -159,6 +159,12 @@ this listbox together with every other floating surface. `--lr-overlay-radius` r
|
|
|
159
159
|
only as the middle arm of this component's own `--lr-locale-picker-radius`, which still wins when
|
|
160
160
|
set: a component-scoped override outranks the shared family, never the other way round.
|
|
161
161
|
|
|
162
|
+
`--lr-positioning-strategy` (16.0.0) — the listbox reads this same cascading `absolute`/`fixed`
|
|
163
|
+
override documented on `<lr-popover>` when it is (re)positioned, falling back to its own `fixed`
|
|
164
|
+
default when nothing is set. There is no per-instance `positioning-strategy` property on
|
|
165
|
+
`<lr-locale-picker>`; set the custom property on `:root`, a theme, or one clipping ancestor to
|
|
166
|
+
change every unset locale picker beneath it.
|
|
167
|
+
|
|
162
168
|
**Optional peer deps:** none directly — each row's `<lr-flag>` degrades to an empty render (no
|
|
163
169
|
peer warning duplication; `lr-flag` itself already logs one) when the optional
|
|
164
170
|
`@aceshooting/lyra-flags` package isn't installed and `showFlags` is left on.
|