@aceshooting/lyra-ui 3.5.0 → 3.7.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 +111 -2
- package/custom-elements.json +50239 -41857
- package/dist/components/animated-image/animated-image.class.d.ts +131 -0
- package/dist/components/animated-image/animated-image.class.d.ts.map +1 -0
- package/dist/components/animated-image/animated-image.class.js +296 -0
- package/dist/components/animated-image/animated-image.class.js.map +1 -0
- package/dist/components/animated-image/animated-image.d.ts +2 -0
- package/dist/components/animated-image/animated-image.d.ts.map +1 -0
- package/dist/components/animated-image/animated-image.js +5 -0
- package/dist/components/animated-image/animated-image.js.map +1 -0
- package/dist/components/animated-image/animated-image.styles.d.ts +2 -0
- package/dist/components/animated-image/animated-image.styles.d.ts.map +1 -0
- package/dist/components/animated-image/animated-image.styles.js +117 -0
- package/dist/components/animated-image/animated-image.styles.js.map +1 -0
- package/dist/components/animation/animation.class.d.ts +119 -0
- package/dist/components/animation/animation.class.d.ts.map +1 -0
- package/dist/components/animation/animation.class.js +420 -0
- package/dist/components/animation/animation.class.js.map +1 -0
- package/dist/components/animation/animation.d.ts +2 -0
- package/dist/components/animation/animation.d.ts.map +1 -0
- package/dist/components/animation/animation.js +5 -0
- package/dist/components/animation/animation.js.map +1 -0
- package/dist/components/animation/animation.styles.d.ts +2 -0
- package/dist/components/animation/animation.styles.d.ts.map +1 -0
- package/dist/components/animation/animation.styles.js +18 -0
- package/dist/components/animation/animation.styles.js.map +1 -0
- package/dist/components/avatar-group/avatar-group.class.d.ts +110 -0
- package/dist/components/avatar-group/avatar-group.class.d.ts.map +1 -0
- package/dist/components/avatar-group/avatar-group.class.js +182 -0
- package/dist/components/avatar-group/avatar-group.class.js.map +1 -0
- package/dist/components/avatar-group/avatar-group.d.ts +2 -0
- package/dist/components/avatar-group/avatar-group.d.ts.map +1 -0
- package/dist/components/avatar-group/avatar-group.js +5 -0
- package/dist/components/avatar-group/avatar-group.js.map +1 -0
- package/dist/components/avatar-group/avatar-group.styles.d.ts +2 -0
- package/dist/components/avatar-group/avatar-group.styles.d.ts.map +1 -0
- package/dist/components/avatar-group/avatar-group.styles.js +112 -0
- package/dist/components/avatar-group/avatar-group.styles.js.map +1 -0
- package/dist/components/button/button.class.d.ts +5 -2
- package/dist/components/button/button.class.d.ts.map +1 -1
- package/dist/components/button/button.class.js +4 -1
- package/dist/components/button/button.class.js.map +1 -1
- package/dist/components/button/button.styles.d.ts.map +1 -1
- package/dist/components/button/button.styles.js +16 -0
- package/dist/components/button/button.styles.js.map +1 -1
- package/dist/components/calendar/calendar.class.d.ts.map +1 -1
- package/dist/components/calendar/calendar.class.js +1 -12
- package/dist/components/calendar/calendar.class.js.map +1 -1
- package/dist/components/calendar-viewer/calendar-viewer.class.d.ts +1 -1
- package/dist/components/calendar-viewer/calendar-viewer.class.d.ts.map +1 -1
- package/dist/components/calendar-viewer/calendar-viewer.class.js +2 -2
- package/dist/components/calendar-viewer/calendar-viewer.class.js.map +1 -1
- package/dist/components/chart/box-plot.class.d.ts.map +1 -1
- package/dist/components/chart/box-plot.class.js +1 -3
- package/dist/components/chart/box-plot.class.js.map +1 -1
- package/dist/components/chart/chart.class.d.ts.map +1 -1
- package/dist/components/chart/chart.class.js +1 -3
- package/dist/components/chart/chart.class.js.map +1 -1
- package/dist/components/code-editor/code-editor.styles.d.ts.map +1 -1
- package/dist/components/code-editor/code-editor.styles.js +5 -2
- package/dist/components/code-editor/code-editor.styles.js.map +1 -1
- package/dist/components/contact-viewer/contact-viewer.class.d.ts +4 -1
- package/dist/components/contact-viewer/contact-viewer.class.d.ts.map +1 -1
- package/dist/components/contact-viewer/contact-viewer.class.js +5 -2
- package/dist/components/contact-viewer/contact-viewer.class.js.map +1 -1
- package/dist/components/email-viewer/email-viewer.class.d.ts +4 -1
- package/dist/components/email-viewer/email-viewer.class.d.ts.map +1 -1
- package/dist/components/email-viewer/email-viewer.class.js +5 -2
- package/dist/components/email-viewer/email-viewer.class.js.map +1 -1
- package/dist/components/file-icon/file-icon.class.d.ts +5 -1
- package/dist/components/file-icon/file-icon.class.d.ts.map +1 -1
- package/dist/components/file-icon/file-icon.class.js +20 -2
- package/dist/components/file-icon/file-icon.class.js.map +1 -1
- package/dist/components/file-icon/file-icon.styles.d.ts.map +1 -1
- package/dist/components/file-icon/file-icon.styles.js +4 -0
- package/dist/components/file-icon/file-icon.styles.js.map +1 -1
- package/dist/components/graph/graph.class.d.ts.map +1 -1
- package/dist/components/graph/graph.class.js +1 -3
- package/dist/components/graph/graph.class.js.map +1 -1
- package/dist/components/heatmap/heatmap.class.d.ts.map +1 -1
- package/dist/components/heatmap/heatmap.class.js +1 -8
- package/dist/components/heatmap/heatmap.class.js.map +1 -1
- package/dist/components/icon/icon.styles.d.ts.map +1 -1
- package/dist/components/icon/icon.styles.js +1 -1
- package/dist/components/icon/icon.styles.js.map +1 -1
- package/dist/components/include/include.class.d.ts +104 -0
- package/dist/components/include/include.class.d.ts.map +1 -0
- package/dist/components/include/include.class.js +149 -0
- package/dist/components/include/include.class.js.map +1 -0
- package/dist/components/include/include.d.ts +2 -0
- package/dist/components/include/include.d.ts.map +1 -0
- package/dist/components/include/include.js +5 -0
- package/dist/components/include/include.js.map +1 -0
- package/dist/components/include/include.styles.d.ts +2 -0
- package/dist/components/include/include.styles.d.ts.map +1 -0
- package/dist/components/include/include.styles.js +14 -0
- package/dist/components/include/include.styles.js.map +1 -0
- package/dist/components/kbd/kbd.class.d.ts.map +1 -1
- package/dist/components/kbd/kbd.class.js +1 -11
- package/dist/components/kbd/kbd.class.js.map +1 -1
- package/dist/components/known-date/known-date.class.d.ts +208 -0
- package/dist/components/known-date/known-date.class.d.ts.map +1 -0
- package/dist/components/known-date/known-date.class.js +588 -0
- package/dist/components/known-date/known-date.class.js.map +1 -0
- package/dist/components/known-date/known-date.d.ts +2 -0
- package/dist/components/known-date/known-date.d.ts.map +1 -0
- package/dist/components/known-date/known-date.js +5 -0
- package/dist/components/known-date/known-date.js.map +1 -0
- package/dist/components/known-date/known-date.styles.d.ts +2 -0
- package/dist/components/known-date/known-date.styles.d.ts.map +1 -0
- package/dist/components/known-date/known-date.styles.js +134 -0
- package/dist/components/known-date/known-date.styles.js.map +1 -0
- package/dist/components/lightbox/lightbox.class.d.ts +187 -0
- package/dist/components/lightbox/lightbox.class.d.ts.map +1 -0
- package/dist/components/lightbox/lightbox.class.js +415 -0
- package/dist/components/lightbox/lightbox.class.js.map +1 -0
- package/dist/components/lightbox/lightbox.d.ts +3 -0
- package/dist/components/lightbox/lightbox.d.ts.map +1 -0
- package/dist/components/lightbox/lightbox.js +6 -0
- package/dist/components/lightbox/lightbox.js.map +1 -0
- package/dist/components/lightbox/lightbox.styles.d.ts +2 -0
- package/dist/components/lightbox/lightbox.styles.d.ts.map +1 -0
- package/dist/components/lightbox/lightbox.styles.js +179 -0
- package/dist/components/lightbox/lightbox.styles.js.map +1 -0
- package/dist/components/map/map.class.d.ts.map +1 -1
- package/dist/components/map/map.class.js +11 -23
- package/dist/components/map/map.class.js.map +1 -1
- package/dist/components/menu/menu.class.d.ts +1 -1
- package/dist/components/model-settings-panel/model-settings-panel.class.d.ts.map +1 -1
- package/dist/components/model-settings-panel/model-settings-panel.class.js +1 -10
- package/dist/components/model-settings-panel/model-settings-panel.class.js.map +1 -1
- package/dist/components/qr-code/qr-code-loader.d.ts +15 -0
- package/dist/components/qr-code/qr-code-loader.d.ts.map +1 -0
- package/dist/components/qr-code/qr-code-loader.js +28 -0
- package/dist/components/qr-code/qr-code-loader.js.map +1 -0
- package/dist/components/qr-code/qr-code.class.d.ts +121 -0
- package/dist/components/qr-code/qr-code.class.d.ts.map +1 -0
- package/dist/components/qr-code/qr-code.class.js +392 -0
- package/dist/components/qr-code/qr-code.class.js.map +1 -0
- package/dist/components/qr-code/qr-code.d.ts +2 -0
- package/dist/components/qr-code/qr-code.d.ts.map +1 -0
- package/dist/components/qr-code/qr-code.js +5 -0
- package/dist/components/qr-code/qr-code.js.map +1 -0
- package/dist/components/qr-code/qr-code.styles.d.ts +2 -0
- package/dist/components/qr-code/qr-code.styles.d.ts.map +1 -0
- package/dist/components/qr-code/qr-code.styles.js +48 -0
- package/dist/components/qr-code/qr-code.styles.js.map +1 -0
- package/dist/components/random-content/random-content.class.d.ts +99 -0
- package/dist/components/random-content/random-content.class.d.ts.map +1 -0
- package/dist/components/random-content/random-content.class.js +268 -0
- package/dist/components/random-content/random-content.class.js.map +1 -0
- package/dist/components/random-content/random-content.d.ts +2 -0
- package/dist/components/random-content/random-content.d.ts.map +1 -0
- package/dist/components/random-content/random-content.js +5 -0
- package/dist/components/random-content/random-content.js.map +1 -0
- package/dist/components/random-content/random-content.styles.d.ts +2 -0
- package/dist/components/random-content/random-content.styles.d.ts.map +1 -0
- package/dist/components/random-content/random-content.styles.js +94 -0
- package/dist/components/random-content/random-content.styles.js.map +1 -0
- package/dist/components/result-card/result-card.class.d.ts +9 -8
- package/dist/components/result-card/result-card.class.d.ts.map +1 -1
- package/dist/components/result-card/result-card.class.js +7 -26
- package/dist/components/result-card/result-card.class.js.map +1 -1
- package/dist/components/result-card/result-field.class.d.ts.map +1 -1
- package/dist/components/result-card/result-field.class.js +1 -11
- package/dist/components/result-card/result-field.class.js.map +1 -1
- package/dist/components/slider/slider.class.d.ts.map +1 -1
- package/dist/components/slider/slider.class.js +1 -19
- package/dist/components/slider/slider.class.js.map +1 -1
- package/dist/components/source-card/source-card.class.d.ts +8 -7
- package/dist/components/source-card/source-card.class.d.ts.map +1 -1
- package/dist/components/source-card/source-card.class.js +6 -25
- package/dist/components/source-card/source-card.class.js.map +1 -1
- package/dist/components/stat/stat.class.js +1 -1
- package/dist/components/stat/stat.class.js.map +1 -1
- package/dist/components/swatch-picker/swatch-picker.class.d.ts +55 -0
- package/dist/components/swatch-picker/swatch-picker.class.d.ts.map +1 -0
- package/dist/components/swatch-picker/swatch-picker.class.js +120 -0
- package/dist/components/swatch-picker/swatch-picker.class.js.map +1 -0
- package/dist/components/swatch-picker/swatch-picker.d.ts +2 -0
- package/dist/components/swatch-picker/swatch-picker.d.ts.map +1 -0
- package/dist/components/swatch-picker/swatch-picker.js +5 -0
- package/dist/components/swatch-picker/swatch-picker.js.map +1 -0
- package/dist/components/swatch-picker/swatch-picker.styles.d.ts +2 -0
- package/dist/components/swatch-picker/swatch-picker.styles.d.ts.map +1 -0
- package/dist/components/swatch-picker/swatch-picker.styles.js +55 -0
- package/dist/components/swatch-picker/swatch-picker.styles.js.map +1 -0
- package/dist/components/time-range/time-range.class.d.ts.map +1 -1
- package/dist/components/time-range/time-range.class.js +1 -21
- package/dist/components/time-range/time-range.class.js.map +1 -1
- package/dist/components/timeline/timeline-item.class.d.ts +120 -0
- package/dist/components/timeline/timeline-item.class.d.ts.map +1 -0
- package/dist/components/timeline/timeline-item.class.js +203 -0
- package/dist/components/timeline/timeline-item.class.js.map +1 -0
- package/dist/components/timeline/timeline-item.d.ts +3 -0
- package/dist/components/timeline/timeline-item.d.ts.map +1 -0
- package/dist/components/timeline/timeline-item.js +10 -0
- package/dist/components/timeline/timeline-item.js.map +1 -0
- package/dist/components/timeline/timeline-item.styles.d.ts +2 -0
- package/dist/components/timeline/timeline-item.styles.d.ts.map +1 -0
- package/dist/components/timeline/timeline-item.styles.js +149 -0
- package/dist/components/timeline/timeline-item.styles.js.map +1 -0
- package/dist/components/timeline/timeline.class.d.ts +59 -0
- package/dist/components/timeline/timeline.class.d.ts.map +1 -0
- package/dist/components/timeline/timeline.class.js +100 -0
- package/dist/components/timeline/timeline.class.js.map +1 -0
- package/dist/components/timeline/timeline.d.ts +2 -0
- package/dist/components/timeline/timeline.d.ts.map +1 -0
- package/dist/components/timeline/timeline.js +5 -0
- package/dist/components/timeline/timeline.js.map +1 -0
- package/dist/components/timeline/timeline.styles.d.ts +2 -0
- package/dist/components/timeline/timeline.styles.d.ts.map +1 -0
- package/dist/components/timeline/timeline.styles.js +52 -0
- package/dist/components/timeline/timeline.styles.js.map +1 -0
- package/dist/components/toast/toast-item.class.d.ts.map +1 -1
- package/dist/components/toast/toast-item.class.js +1 -3
- package/dist/components/toast/toast-item.class.js.map +1 -1
- package/dist/components/tool-param-form/tool-param-form.class.d.ts.map +1 -1
- package/dist/components/tool-param-form/tool-param-form.class.js +0 -1
- package/dist/components/tool-param-form/tool-param-form.class.js.map +1 -1
- package/dist/components/tour/tour.class.d.ts +250 -0
- package/dist/components/tour/tour.class.d.ts.map +1 -0
- package/dist/components/tour/tour.class.js +530 -0
- package/dist/components/tour/tour.class.js.map +1 -0
- package/dist/components/tour/tour.d.ts +2 -0
- package/dist/components/tour/tour.d.ts.map +1 -0
- package/dist/components/tour/tour.js +5 -0
- package/dist/components/tour/tour.js.map +1 -0
- package/dist/components/tour/tour.styles.d.ts +2 -0
- package/dist/components/tour/tour.styles.d.ts.map +1 -0
- package/dist/components/tour/tour.styles.js +165 -0
- package/dist/components/tour/tour.styles.js.map +1 -0
- package/dist/components/virtual-list/virtual-list.class.d.ts.map +1 -1
- package/dist/components/virtual-list/virtual-list.class.js +1 -3
- package/dist/components/virtual-list/virtual-list.class.js.map +1 -1
- package/dist/components/word-cloud/word-cloud.class.d.ts.map +1 -1
- package/dist/components/word-cloud/word-cloud.class.js +1 -8
- package/dist/components/word-cloud/word-cloud.class.js.map +1 -1
- package/dist/components/zoomable-frame/zoomable-frame.class.d.ts +15 -0
- package/dist/components/zoomable-frame/zoomable-frame.class.d.ts.map +1 -1
- package/dist/components/zoomable-frame/zoomable-frame.class.js +18 -0
- package/dist/components/zoomable-frame/zoomable-frame.class.js.map +1 -1
- package/dist/internal/a11y.d.ts +4 -0
- package/dist/internal/a11y.d.ts.map +1 -1
- package/dist/internal/a11y.js +17 -0
- package/dist/internal/a11y.js.map +1 -1
- package/dist/internal/canvas.d.ts +8 -0
- package/dist/internal/canvas.d.ts.map +1 -0
- package/dist/internal/canvas.js +14 -0
- package/dist/internal/canvas.js.map +1 -0
- package/dist/internal/localization.d.ts +1 -1
- package/dist/internal/localization.d.ts.map +1 -1
- package/dist/internal/localization.js +21 -2
- package/dist/internal/localization.js.map +1 -1
- package/dist/internal/motion.d.ts +5 -0
- package/dist/internal/motion.d.ts.map +1 -0
- package/dist/internal/motion.js +7 -0
- package/dist/internal/motion.js.map +1 -0
- package/dist/internal/numbers.d.ts +11 -0
- package/dist/internal/numbers.d.ts.map +1 -1
- package/dist/internal/numbers.js +21 -0
- package/dist/internal/numbers.js.map +1 -1
- package/dist/internal/positioner.d.ts +14 -0
- package/dist/internal/positioner.d.ts.map +1 -1
- package/dist/internal/positioner.js +27 -0
- package/dist/internal/positioner.js.map +1 -1
- package/dist/internal/root-registration-allowlist.d.ts +1 -1
- package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
- package/dist/internal/root-registration-allowlist.js +12 -0
- package/dist/internal/root-registration-allowlist.js.map +1 -1
- package/dist/internal/rtl.d.ts +0 -11
- package/dist/internal/rtl.d.ts.map +1 -1
- package/dist/internal/rtl.js +0 -13
- package/dist/internal/rtl.js.map +1 -1
- package/dist/internal/safe-css.d.ts +15 -0
- package/dist/internal/safe-css.d.ts.map +1 -0
- package/dist/internal/safe-css.js +25 -0
- package/dist/internal/safe-css.js.map +1 -0
- package/dist/internal/strip-host-title.d.ts +24 -0
- package/dist/internal/strip-host-title.d.ts.map +1 -0
- package/dist/internal/strip-host-title.js +46 -0
- package/dist/internal/strip-host-title.js.map +1 -0
- package/dist/internal/tokens.styles.d.ts.map +1 -1
- package/dist/internal/tokens.styles.js +4 -0
- package/dist/internal/tokens.styles.js.map +1 -1
- package/dist/lyra.d.ts +37 -0
- package/dist/lyra.d.ts.map +1 -1
- package/dist/lyra.js +24 -0
- package/dist/lyra.js.map +1 -1
- package/llms-full.txt +161 -5
- package/llms.txt +5 -2
- package/package.json +43 -6
- package/vscode-css-data.json +733 -0
- package/vscode-html-data.json +10616 -0
- package/web-types.json +12206 -0
|
@@ -0,0 +1,268 @@
|
|
|
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 { property, query } from 'lit/decorators.js';
|
|
9
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
|
+
import { finiteDuration } from '../../internal/numbers.js';
|
|
11
|
+
import { styles } from './random-content.styles.js';
|
|
12
|
+
/**
|
|
13
|
+
* `<lyra-random-content>` — displays a randomly (or sequentially) chosen
|
|
14
|
+
* subset of its slotted children and hides the rest, for A/B copy testing,
|
|
15
|
+
* testimonial/quote rotation, or varying marketing copy on each render or
|
|
16
|
+
* interval without any custom JS beyond slotting the candidates.
|
|
17
|
+
*
|
|
18
|
+
* Not a form-associated control and has no textual chrome of its own — a
|
|
19
|
+
* pure content-rotation primitive over caller-supplied children, so the
|
|
20
|
+
* label/hint/error frame doesn't apply.
|
|
21
|
+
*
|
|
22
|
+
* The host renders `display: block` by default, like the rest of this
|
|
23
|
+
* family. A consumer needing an inline text-fragment swap inside a sentence
|
|
24
|
+
* can override `lyra-random-content { display: inline; }` from outside —
|
|
25
|
+
* that isn't baked in here, since `display: contents` on the host risks
|
|
26
|
+
* accessibility-tree inconsistencies across engines.
|
|
27
|
+
*
|
|
28
|
+
* There is no built-in trigger UI (no next/previous/shuffle button):
|
|
29
|
+
* selection is driven only by `autoplay`/`autoplayInterval` and the public
|
|
30
|
+
* `randomize()` method. Consequently there is no keyboard interaction and no
|
|
31
|
+
* RTL-aware arrow-key handling to implement here — that guarantee only
|
|
32
|
+
* applies to components with roving/arrow-key navigation, which this one
|
|
33
|
+
* structurally lacks.
|
|
34
|
+
*
|
|
35
|
+
* `fade-left`/`fade-right` are physical-direction transforms (matching the
|
|
36
|
+
* upstream naming this component mirrors), not "previous/next" navigational
|
|
37
|
+
* semantics like a carousel chevron, so they are deliberately **not**
|
|
38
|
+
* mirrored under `:host(:dir(rtl))`.
|
|
39
|
+
*
|
|
40
|
+
* @customElement lyra-random-content
|
|
41
|
+
* @slot - The pool of candidate children. Only direct element children are eligible.
|
|
42
|
+
* @event lyra-content-change - The displayed selection changed (first render, `randomize()`,
|
|
43
|
+
* a slot-change-triggered reselection, or an autoplay tick). `detail: { items }` is the exact
|
|
44
|
+
* array of elements now shown, in display order. Not emitted when the eligible pool is empty.
|
|
45
|
+
* @csspart base - The wrapping element around the default slot.
|
|
46
|
+
* @cssprop [--lyra-random-content-animation-duration=300ms] - Duration of the entrance animation.
|
|
47
|
+
* @cssprop [--lyra-random-content-animation-easing=ease] - Easing function for the entrance animation.
|
|
48
|
+
* @cssprop [--lyra-random-content-animation-translate=var(--lyra-size-0-5em)] - Translation distance for directional animations.
|
|
49
|
+
*/
|
|
50
|
+
export class LyraRandomContent extends LyraElement {
|
|
51
|
+
constructor() {
|
|
52
|
+
super(...arguments);
|
|
53
|
+
/** Entrance effect applied to a child the instant it becomes shown. */
|
|
54
|
+
this.animation = 'none';
|
|
55
|
+
/** Whether the displayed selection automatically re-rolls on an interval. */
|
|
56
|
+
this.autoplay = false;
|
|
57
|
+
/** Milliseconds between autoplay ticks. Clamped to a 1000ms floor. */
|
|
58
|
+
this.autoplayInterval = 3000;
|
|
59
|
+
/** How many children are shown simultaneously. Clamped to at least 1 and at most the pool size. */
|
|
60
|
+
this.items = 1;
|
|
61
|
+
/** Selection algorithm — see `randomize()`. */
|
|
62
|
+
this.mode = 'unique';
|
|
63
|
+
this.reduceMotion = false;
|
|
64
|
+
this.sequenceCursor = 0;
|
|
65
|
+
this.lastPool = [];
|
|
66
|
+
// Distinguishes a genuine later `updated()` pass from the very first one.
|
|
67
|
+
// Lit reports every declared reactive property as "changed" on the first
|
|
68
|
+
// update (including `items`, which otherwise would make `updated()` run a
|
|
69
|
+
// redundant second selection right after `firstUpdated()` already ran one
|
|
70
|
+
// -- doubling the emitted `lyra-content-change` event and, for
|
|
71
|
+
// mode="sequence", double-advancing the cursor).
|
|
72
|
+
this.hasUpdatedOnce = false;
|
|
73
|
+
this.onMotionPreferenceChange = (event) => {
|
|
74
|
+
this.reduceMotion = event.matches;
|
|
75
|
+
this.restartAutoplay();
|
|
76
|
+
};
|
|
77
|
+
this.onSlotChange = () => {
|
|
78
|
+
const pool = this.eligible();
|
|
79
|
+
// A slot's first assignment of already-present light-DOM children can
|
|
80
|
+
// itself dispatch an async `slotchange` shortly after `firstUpdated()`
|
|
81
|
+
// already handled that same content synchronously above -- skip when
|
|
82
|
+
// nothing about the pool actually changed to avoid double-emitting
|
|
83
|
+
// `lyra-content-change` (and, for mode="sequence", double-advancing the
|
|
84
|
+
// cursor) for a single real content change.
|
|
85
|
+
if (this.poolsEqual(pool, this.lastPool))
|
|
86
|
+
return;
|
|
87
|
+
this.reselect({ resetPrevious: true });
|
|
88
|
+
this.restartAutoplay();
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Selects a new set of children using the current mode. Applies
|
|
92
|
+
* `hidden`/`aria-hidden`, emits `lyra-content-change`, and returns the
|
|
93
|
+
* elements now shown. Does not reset or restart the autoplay timer.
|
|
94
|
+
*/
|
|
95
|
+
this.randomize = () => this.reselect();
|
|
96
|
+
}
|
|
97
|
+
static { this.styles = [LyraElement.styles, styles]; }
|
|
98
|
+
connectedCallback() {
|
|
99
|
+
super.connectedCallback();
|
|
100
|
+
this.mediaQuery = typeof matchMedia === 'function' ? matchMedia('(prefers-reduced-motion: reduce)') : undefined;
|
|
101
|
+
this.reduceMotion = this.mediaQuery?.matches ?? false;
|
|
102
|
+
this.mediaQuery?.addEventListener('change', this.onMotionPreferenceChange);
|
|
103
|
+
// `firstUpdated()` only ever runs once per element lifetime, but
|
|
104
|
+
// `disconnectedCallback()` unconditionally stops the timer on every
|
|
105
|
+
// disconnect -- without restarting here too, a disconnect/reconnect
|
|
106
|
+
// cycle (e.g. a virtualized list reordering this element) would leave
|
|
107
|
+
// autoplay permanently stopped. Harmless no-op before the shadow tree's
|
|
108
|
+
// slot exists yet (`eligible()` returns `[]`, gated off below).
|
|
109
|
+
this.restartAutoplay();
|
|
110
|
+
}
|
|
111
|
+
disconnectedCallback() {
|
|
112
|
+
this.stopAutoplay();
|
|
113
|
+
this.mediaQuery?.removeEventListener('change', this.onMotionPreferenceChange);
|
|
114
|
+
this.mediaQuery = undefined;
|
|
115
|
+
super.disconnectedCallback();
|
|
116
|
+
}
|
|
117
|
+
firstUpdated() {
|
|
118
|
+
// Handles slotted content present at parse time: the slot's assigned
|
|
119
|
+
// elements are already resolved synchronously once the shadow tree
|
|
120
|
+
// renders, so this doesn't need to wait on the (async, and not
|
|
121
|
+
// guaranteed-timed across engines) `slotchange` event just to read the
|
|
122
|
+
// initial pool. `onSlotChange` below still exists for genuinely later
|
|
123
|
+
// pool changes and as a fallback if `slotchange` is the only signal a
|
|
124
|
+
// given engine ever fires for this content.
|
|
125
|
+
this.reselect();
|
|
126
|
+
this.restartAutoplay();
|
|
127
|
+
}
|
|
128
|
+
updated(changed) {
|
|
129
|
+
if (this.hasUpdatedOnce) {
|
|
130
|
+
if (changed.has('items'))
|
|
131
|
+
this.reselect();
|
|
132
|
+
if (changed.has('autoplay') || changed.has('autoplayInterval'))
|
|
133
|
+
this.restartAutoplay();
|
|
134
|
+
}
|
|
135
|
+
this.hasUpdatedOnce = true;
|
|
136
|
+
}
|
|
137
|
+
eligible() {
|
|
138
|
+
return (this.slotEl?.assignedElements() ?? []).filter((el) => el instanceof HTMLElement);
|
|
139
|
+
}
|
|
140
|
+
clampedCount(poolSize) {
|
|
141
|
+
const n = Number.isFinite(this.items) ? Math.max(1, Math.trunc(this.items)) : 1;
|
|
142
|
+
return Math.min(n, poolSize);
|
|
143
|
+
}
|
|
144
|
+
poolsEqual(a, b) {
|
|
145
|
+
if (a.length !== b.length)
|
|
146
|
+
return false;
|
|
147
|
+
return a.every((el, index) => el === b[index]);
|
|
148
|
+
}
|
|
149
|
+
shuffledPick(pool, count) {
|
|
150
|
+
const arr = pool.slice();
|
|
151
|
+
const n = Math.min(count, arr.length);
|
|
152
|
+
for (let i = 0; i < n; i += 1) {
|
|
153
|
+
const j = i + Math.floor(Math.random() * (arr.length - i));
|
|
154
|
+
const swap = arr[i];
|
|
155
|
+
arr[i] = arr[j];
|
|
156
|
+
arr[j] = swap;
|
|
157
|
+
}
|
|
158
|
+
return arr.slice(0, n);
|
|
159
|
+
}
|
|
160
|
+
sameAsPrevious(selection) {
|
|
161
|
+
const previous = this.previousSelection;
|
|
162
|
+
if (!previous || previous.length !== selection.length)
|
|
163
|
+
return false;
|
|
164
|
+
const previousSet = new Set(previous);
|
|
165
|
+
return selection.every((el) => previousSet.has(el));
|
|
166
|
+
}
|
|
167
|
+
selectUnique(pool, count) {
|
|
168
|
+
let picked = this.shuffledPick(pool, count);
|
|
169
|
+
if (pool.length > count) {
|
|
170
|
+
let attempts = 0;
|
|
171
|
+
while (attempts < 10 && this.sameAsPrevious(picked)) {
|
|
172
|
+
picked = this.shuffledPick(pool, count);
|
|
173
|
+
attempts += 1;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return picked;
|
|
177
|
+
}
|
|
178
|
+
selectSequence(pool, count) {
|
|
179
|
+
const total = pool.length;
|
|
180
|
+
const start = this.sequenceCursor % total;
|
|
181
|
+
const picked = [];
|
|
182
|
+
for (let k = 0; k < count; k += 1) {
|
|
183
|
+
picked.push(pool[(start + k) % total]);
|
|
184
|
+
}
|
|
185
|
+
this.sequenceCursor = (start + count) % total;
|
|
186
|
+
return picked;
|
|
187
|
+
}
|
|
188
|
+
computeSelectionForMode(pool, count) {
|
|
189
|
+
switch (this.mode) {
|
|
190
|
+
case 'sequence':
|
|
191
|
+
return this.selectSequence(pool, count);
|
|
192
|
+
case 'unique':
|
|
193
|
+
return this.selectUnique(pool, count);
|
|
194
|
+
case 'random':
|
|
195
|
+
default:
|
|
196
|
+
return this.shuffledPick(pool, count);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
applySelection(pool, selected) {
|
|
200
|
+
const selectedSet = new Set(selected);
|
|
201
|
+
for (const el of pool) {
|
|
202
|
+
const shown = selectedSet.has(el);
|
|
203
|
+
el.toggleAttribute('hidden', !shown);
|
|
204
|
+
el.setAttribute('aria-hidden', shown ? 'false' : 'true');
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
reselect(options = {}) {
|
|
208
|
+
const pool = this.eligible();
|
|
209
|
+
this.lastPool = pool;
|
|
210
|
+
if (pool.length === 0) {
|
|
211
|
+
this.previousSelection = undefined;
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
if (options.resetPrevious)
|
|
215
|
+
this.previousSelection = undefined;
|
|
216
|
+
const count = this.clampedCount(pool.length);
|
|
217
|
+
const selected = this.computeSelectionForMode(pool, count);
|
|
218
|
+
this.applySelection(pool, selected);
|
|
219
|
+
this.previousSelection = selected;
|
|
220
|
+
this.emit('lyra-content-change', { items: selected });
|
|
221
|
+
return selected;
|
|
222
|
+
}
|
|
223
|
+
stopAutoplay() {
|
|
224
|
+
if (this.timer !== undefined)
|
|
225
|
+
window.clearInterval(this.timer);
|
|
226
|
+
this.timer = undefined;
|
|
227
|
+
}
|
|
228
|
+
restartAutoplay() {
|
|
229
|
+
this.stopAutoplay();
|
|
230
|
+
if (!this.autoplay || this.reduceMotion || this.eligible().length < 2)
|
|
231
|
+
return;
|
|
232
|
+
const interval = finiteDuration(this.autoplayInterval, 3000, 1000);
|
|
233
|
+
this.timer = window.setInterval(() => {
|
|
234
|
+
this.reselect();
|
|
235
|
+
}, interval);
|
|
236
|
+
}
|
|
237
|
+
render() {
|
|
238
|
+
const hostLabel = this.getAttribute('aria-label');
|
|
239
|
+
return html `<div
|
|
240
|
+
part="base"
|
|
241
|
+
role="status"
|
|
242
|
+
aria-live=${this.autoplay ? 'off' : 'polite'}
|
|
243
|
+
aria-atomic="true"
|
|
244
|
+
aria-label=${hostLabel === null ? nothing : hostLabel}
|
|
245
|
+
>
|
|
246
|
+
<slot @slotchange=${this.onSlotChange}></slot>
|
|
247
|
+
</div>`;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
__decorate([
|
|
251
|
+
property({ reflect: true })
|
|
252
|
+
], LyraRandomContent.prototype, "animation", void 0);
|
|
253
|
+
__decorate([
|
|
254
|
+
property({ type: Boolean, reflect: true })
|
|
255
|
+
], LyraRandomContent.prototype, "autoplay", void 0);
|
|
256
|
+
__decorate([
|
|
257
|
+
property({ type: Number, attribute: 'autoplay-interval' })
|
|
258
|
+
], LyraRandomContent.prototype, "autoplayInterval", void 0);
|
|
259
|
+
__decorate([
|
|
260
|
+
property({ type: Number })
|
|
261
|
+
], LyraRandomContent.prototype, "items", void 0);
|
|
262
|
+
__decorate([
|
|
263
|
+
property()
|
|
264
|
+
], LyraRandomContent.prototype, "mode", void 0);
|
|
265
|
+
__decorate([
|
|
266
|
+
query('slot')
|
|
267
|
+
], LyraRandomContent.prototype, "slotEl", void 0);
|
|
268
|
+
//# sourceMappingURL=random-content.class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random-content.class.js","sourceRoot":"","sources":["../../../src/components/random-content/random-content.class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random-content.d.ts","sourceRoot":"","sources":["../../../src/components/random-content/random-content.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random-content.js","sourceRoot":"","sources":["../../../src/components/random-content/random-content.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,aAAa,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random-content.styles.d.ts","sourceRoot":"","sources":["../../../src/components/random-content/random-content.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA2FlB,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `
|
|
3
|
+
:host {
|
|
4
|
+
display: block;
|
|
5
|
+
min-inline-size: 0;
|
|
6
|
+
}
|
|
7
|
+
/* Consumers needing an inline text-fragment swap inside a sentence can override
|
|
8
|
+
"lyra-random-content { display: inline; }" from outside -- not baked in here, since
|
|
9
|
+
"display: contents" on the host risks a11y-tree inconsistencies across engines and every
|
|
10
|
+
other component in this family defaults to "display: block". */
|
|
11
|
+
[part='base'] {
|
|
12
|
+
display: block;
|
|
13
|
+
min-inline-size: 0;
|
|
14
|
+
}
|
|
15
|
+
::slotted(*) {
|
|
16
|
+
animation-duration: var(--lyra-random-content-animation-duration, 300ms);
|
|
17
|
+
animation-timing-function: var(--lyra-random-content-animation-easing, ease);
|
|
18
|
+
}
|
|
19
|
+
:host(:not([animation='none'])) ::slotted(:not([hidden])) {
|
|
20
|
+
animation-name: lyra-random-content-fade-in;
|
|
21
|
+
}
|
|
22
|
+
:host([animation='fade-up']) ::slotted(:not([hidden])) {
|
|
23
|
+
animation-name: lyra-random-content-fade-in-up;
|
|
24
|
+
}
|
|
25
|
+
:host([animation='fade-down']) ::slotted(:not([hidden])) {
|
|
26
|
+
animation-name: lyra-random-content-fade-in-down;
|
|
27
|
+
}
|
|
28
|
+
:host([animation='fade-left']) ::slotted(:not([hidden])) {
|
|
29
|
+
animation-name: lyra-random-content-fade-in-left;
|
|
30
|
+
}
|
|
31
|
+
:host([animation='fade-right']) ::slotted(:not([hidden])) {
|
|
32
|
+
animation-name: lyra-random-content-fade-in-right;
|
|
33
|
+
}
|
|
34
|
+
@keyframes lyra-random-content-fade-in {
|
|
35
|
+
from {
|
|
36
|
+
opacity: 0;
|
|
37
|
+
}
|
|
38
|
+
to {
|
|
39
|
+
opacity: 1;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
@keyframes lyra-random-content-fade-in-up {
|
|
43
|
+
from {
|
|
44
|
+
opacity: 0;
|
|
45
|
+
transform: translateY(var(--lyra-random-content-animation-translate, var(--lyra-size-0-5em)));
|
|
46
|
+
}
|
|
47
|
+
to {
|
|
48
|
+
opacity: 1;
|
|
49
|
+
transform: translateY(0);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
@keyframes lyra-random-content-fade-in-down {
|
|
53
|
+
from {
|
|
54
|
+
opacity: 0;
|
|
55
|
+
transform: translateY(calc(-1 * var(--lyra-random-content-animation-translate, var(--lyra-size-0-5em))));
|
|
56
|
+
}
|
|
57
|
+
to {
|
|
58
|
+
opacity: 1;
|
|
59
|
+
transform: translateY(0);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/* fade-left/fade-right are physical-direction transforms (matching the upstream naming this
|
|
63
|
+
component mirrors), not "previous/next" navigational semantics like a carousel chevron, so
|
|
64
|
+
they are deliberately not flipped under :host(:dir(rtl)). */
|
|
65
|
+
@keyframes lyra-random-content-fade-in-left {
|
|
66
|
+
from {
|
|
67
|
+
opacity: 0;
|
|
68
|
+
transform: translateX(var(--lyra-random-content-animation-translate, var(--lyra-size-0-5em)));
|
|
69
|
+
}
|
|
70
|
+
to {
|
|
71
|
+
opacity: 1;
|
|
72
|
+
transform: translateX(0);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
@keyframes lyra-random-content-fade-in-right {
|
|
76
|
+
from {
|
|
77
|
+
opacity: 0;
|
|
78
|
+
transform: translateX(calc(-1 * var(--lyra-random-content-animation-translate, var(--lyra-size-0-5em))));
|
|
79
|
+
}
|
|
80
|
+
to {
|
|
81
|
+
opacity: 1;
|
|
82
|
+
transform: translateX(0);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/* The shared reduced-motion rule in tokens.styles.ts (:host *, :host *::before, ...) only
|
|
86
|
+
reaches the *shadow* tree -- it does not reach ::slotted() content, since slotted elements
|
|
87
|
+
live in the host's light DOM, not its shadow tree. Guard the entrance animation explicitly. */
|
|
88
|
+
@media (prefers-reduced-motion: reduce) {
|
|
89
|
+
::slotted(*) {
|
|
90
|
+
animation: none !important;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
`;
|
|
94
|
+
//# sourceMappingURL=random-content.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random-content.styles.js","sourceRoot":"","sources":["../../../src/components/random-content/random-content.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FxB,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
2
|
import { LyraElement } from '../../internal/lyra-element.js';
|
|
3
|
+
declare class LyraResultCardBase extends LyraElement {
|
|
4
|
+
}
|
|
5
|
+
declare const LyraResultCard_base: typeof LyraResultCardBase;
|
|
3
6
|
/**
|
|
4
7
|
* `<lyra-result-card>` — a small bordered card shell for a custom tool-result
|
|
5
8
|
* renderer's body (see `<lyra-tool-result-view>`'s `registerToolRenderer()`
|
|
@@ -27,13 +30,13 @@ import { LyraElement } from '../../internal/lyra-element.js';
|
|
|
27
30
|
* hovering the truncated text reveals it via the browser's default tooltip,
|
|
28
31
|
* scoped to just this element rather than the whole card. The host's own
|
|
29
32
|
* `title` attribute is stripped once Lit has synced it into the `title`
|
|
30
|
-
* property (see `
|
|
31
|
-
* tooltip never also covers the rest of the card.
|
|
33
|
+
* property (see `StripHostTitleAttribute` in `internal/strip-host-title.ts`),
|
|
34
|
+
* so the native tooltip never also covers the rest of the card.
|
|
32
35
|
* @csspart actions - The wrapper around the `actions` slot. `hidden`
|
|
33
36
|
* whenever the slot has no assigned content.
|
|
34
37
|
* @csspart body - The wrapper around the default slot.
|
|
35
38
|
*/
|
|
36
|
-
export declare class LyraResultCard extends
|
|
39
|
+
export declare class LyraResultCard extends LyraResultCard_base {
|
|
37
40
|
static styles: import("lit").CSSResultGroup[];
|
|
38
41
|
/** Small heading for the card. Leave unset for an untitled card (e.g. a
|
|
39
42
|
* bare block of `<lyra-result-field>` rows with no natural heading).
|
|
@@ -43,13 +46,10 @@ export declare class LyraResultCard extends LyraElement {
|
|
|
43
46
|
* `title` attribute (the browser's global tooltip attribute) is actively
|
|
44
47
|
* stripped once Lit has synced it into this property, so the card never
|
|
45
48
|
* grows an unsolicited native tooltip repeating the same text. See
|
|
46
|
-
* `
|
|
49
|
+
* `StripHostTitleAttribute` (`internal/strip-host-title.ts`). */
|
|
47
50
|
title: string;
|
|
48
51
|
private hasActionsSlot;
|
|
49
|
-
private stripHostTitleAttr;
|
|
50
52
|
protected willUpdate(): void;
|
|
51
|
-
attributeChangedCallback(name: string, old: string | null, value: string | null): void;
|
|
52
|
-
protected updated(changed: PropertyValues<this>): void;
|
|
53
53
|
private onActionsSlotChange;
|
|
54
54
|
render(): TemplateResult;
|
|
55
55
|
}
|
|
@@ -58,4 +58,5 @@ declare global {
|
|
|
58
58
|
'lyra-result-card': LyraResultCard;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
+
export {};
|
|
61
62
|
//# sourceMappingURL=result-card.class.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-card.class.d.ts","sourceRoot":"","sources":["../../../src/components/result-card/result-card.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"result-card.class.d.ts","sourceRoot":"","sources":["../../../src/components/result-card/result-card.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D,cAAM,kBAAmB,SAAQ,WAAW;CAAG;;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,cAAe,SAAQ,mBAA2C;IAC7E,MAAM,CAAC,MAAM,iCAAgC;IAE7C;;;;;;;;sEAQkE;IACtD,KAAK,SAAM;IAOd,OAAO,CAAC,cAAc,CAAS;IAExC,SAAS,CAAC,UAAU,IAAI,IAAI,CAI3B;IAED,OAAO,CAAC,mBAAmB,CAEzB;IAEF,MAAM,IAAI,cAAc,CAcvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
|
|
@@ -7,7 +7,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { html, nothing } from 'lit';
|
|
8
8
|
import { property, state } from 'lit/decorators.js';
|
|
9
9
|
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
|
+
import { StripHostTitleAttribute } from '../../internal/strip-host-title.js';
|
|
10
11
|
import { styles } from './result-card.styles.js';
|
|
12
|
+
class LyraResultCardBase extends LyraElement {
|
|
13
|
+
}
|
|
11
14
|
/**
|
|
12
15
|
* `<lyra-result-card>` — a small bordered card shell for a custom tool-result
|
|
13
16
|
* renderer's body (see `<lyra-tool-result-view>`'s `registerToolRenderer()`
|
|
@@ -35,13 +38,13 @@ import { styles } from './result-card.styles.js';
|
|
|
35
38
|
* hovering the truncated text reveals it via the browser's default tooltip,
|
|
36
39
|
* scoped to just this element rather than the whole card. The host's own
|
|
37
40
|
* `title` attribute is stripped once Lit has synced it into the `title`
|
|
38
|
-
* property (see `
|
|
39
|
-
* tooltip never also covers the rest of the card.
|
|
41
|
+
* property (see `StripHostTitleAttribute` in `internal/strip-host-title.ts`),
|
|
42
|
+
* so the native tooltip never also covers the rest of the card.
|
|
40
43
|
* @csspart actions - The wrapper around the `actions` slot. `hidden`
|
|
41
44
|
* whenever the slot has no assigned content.
|
|
42
45
|
* @csspart body - The wrapper around the default slot.
|
|
43
46
|
*/
|
|
44
|
-
export class LyraResultCard extends
|
|
47
|
+
export class LyraResultCard extends StripHostTitleAttribute(LyraResultCardBase) {
|
|
45
48
|
constructor() {
|
|
46
49
|
super(...arguments);
|
|
47
50
|
/** Small heading for the card. Leave unset for an untitled card (e.g. a
|
|
@@ -52,7 +55,7 @@ export class LyraResultCard extends LyraElement {
|
|
|
52
55
|
* `title` attribute (the browser's global tooltip attribute) is actively
|
|
53
56
|
* stripped once Lit has synced it into this property, so the card never
|
|
54
57
|
* grows an unsolicited native tooltip repeating the same text. See
|
|
55
|
-
* `
|
|
58
|
+
* `StripHostTitleAttribute` (`internal/strip-host-title.ts`). */
|
|
56
59
|
this.title = '';
|
|
57
60
|
// See `<lyra-widget>`'s identical `hasActionsSlot` -- a `[part]` wrapper
|
|
58
61
|
// always contains a literal `<slot>` child regardless of assigned
|
|
@@ -60,12 +63,6 @@ export class LyraResultCard extends LyraElement {
|
|
|
60
63
|
// in JS instead and used to both hide the actions wrapper and decide
|
|
61
64
|
// whether the header row itself has anything to show.
|
|
62
65
|
this.hasActionsSlot = false;
|
|
63
|
-
// Guards the `removeAttribute('title')` call in `updated()` below: removing
|
|
64
|
-
// an observed attribute fires `attributeChangedCallback` synchronously just
|
|
65
|
-
// like setting one does, and without this flag Lit would treat the removal
|
|
66
|
-
// as a fresh (empty) attribute value and reset the `title` property right
|
|
67
|
-
// back to `null`, losing the value it just finished syncing in.
|
|
68
|
-
this.stripHostTitleAttr = false;
|
|
69
66
|
this.onActionsSlotChange = (e) => {
|
|
70
67
|
this.hasActionsSlot = e.target.assignedElements({ flatten: true }).length > 0;
|
|
71
68
|
};
|
|
@@ -76,22 +73,6 @@ export class LyraResultCard extends LyraElement {
|
|
|
76
73
|
this.hasActionsSlot = Array.from(this.children).some((el) => el.getAttribute('slot') === 'actions');
|
|
77
74
|
}
|
|
78
75
|
}
|
|
79
|
-
attributeChangedCallback(name, old, value) {
|
|
80
|
-
if (name === 'title' && this.stripHostTitleAttr)
|
|
81
|
-
return;
|
|
82
|
-
super.attributeChangedCallback(name, old, value);
|
|
83
|
-
}
|
|
84
|
-
updated(changed) {
|
|
85
|
-
if (changed.has('title') && this.hasAttribute('title')) {
|
|
86
|
-
// The attribute has already been converted into the `title` property
|
|
87
|
-
// by this point (that's how it got here), so the DOM attribute itself
|
|
88
|
-
// is now redundant -- and, left in place, would make the whole card
|
|
89
|
-
// show a native tooltip repeating the title text on hover.
|
|
90
|
-
this.stripHostTitleAttr = true;
|
|
91
|
-
this.removeAttribute('title');
|
|
92
|
-
this.stripHostTitleAttr = false;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
76
|
render() {
|
|
96
77
|
const hasTitle = this.title.length > 0;
|
|
97
78
|
const hasHeader = hasTitle || this.hasActionsSlot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-card.class.js","sourceRoot":"","sources":["../../../src/components/result-card/result-card.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"result-card.class.js","sourceRoot":"","sources":["../../../src/components/result-card/result-card.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,kBAAmB,SAAQ,WAAW;CAAG;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,cAAe,SAAQ,uBAAuB,CAAC,kBAAkB,CAAC;IAA/E;;QAGE;;;;;;;;0EAQkE;QACtD,UAAK,GAAG,EAAE,CAAC;QAEvB,yEAAyE;QACzE,kEAAkE;QAClE,yEAAyE;QACzE,qEAAqE;QACrE,sDAAsD;QACrC,mBAAc,GAAG,KAAK,CAAC;QAQhC,wBAAmB,GAAG,CAAC,CAAQ,EAAQ,EAAE;YAC/C,IAAI,CAAC,cAAc,GAAI,CAAC,CAAC,MAA0B,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACrG,CAAC,CAAC;IAiBJ,CAAC;aA7CQ,WAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,AAA/B,CAAgC;IAoBnC,UAAU;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAMD,MAAM;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC;QAClD,OAAO,IAAI,CAAA;;qCAEsB,CAAC,SAAS;YACnC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,4BAA4B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO;wCAC1D,CAAC,IAAI,CAAC,cAAc;+CACb,IAAI,CAAC,mBAAmB;;;;;KAKlE,CAAC;IACJ,CAAC;CACF;AAlCa;IAAX,QAAQ,EAAE;6CAAY;AAON;IAAhB,KAAK,EAAE;sDAAgC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-field.class.d.ts","sourceRoot":"","sources":["../../../src/components/result-card/result-field.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"result-field.class.d.ts","sourceRoot":"","sources":["../../../src/components/result-card/result-field.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,MAAM,CAAC,MAAM,iCAAgC;IAE7C,kFAAkF;IACtE,KAAK,SAAM;IAEvB;8CAC0C;IAC9B,KAAK,SAAM;IAEd,OAAO,CAAC,YAAY,CAAS;IAEtC,SAAS,CAAC,UAAU,IAAI,IAAI,CAI3B;IAED,YAAY,IAAI,IAAI,CAOnB;IAED,OAAO,CAAC,YAAY,CAElB;IAEF,MAAM,IAAI,cAAc,CAUvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
|
|
@@ -7,18 +7,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { html, nothing } from 'lit';
|
|
8
8
|
import { property, state } from 'lit/decorators.js';
|
|
9
9
|
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
|
+
import { hasRealContent } from '../../internal/a11y.js';
|
|
10
11
|
import { styles } from './result-field.styles.js';
|
|
11
|
-
// An element always counts as real slot content, even one with no text of
|
|
12
|
-
// its own (e.g. a `<lyra-chip>` status badge whose label comes from an
|
|
13
|
-
// attribute, not slotted text) -- assignedElements()-only checks (as
|
|
14
|
-
// lyra-widget's hasActionsSlot/lyra-source-card's hasFullSlot use) would
|
|
15
|
-
// miss that case. A bare text node only counts once trimmed of whitespace,
|
|
16
|
-
// matching lyra-checkbox's hasLabelSlot. Together this catches both a
|
|
17
|
-
// plain-text value override (`<lyra-result-field label="Status">200 OK`)
|
|
18
|
-
// and a rich slotted badge.
|
|
19
|
-
function hasRealContent(nodes) {
|
|
20
|
-
return nodes.some((n) => n.nodeType === Node.ELEMENT_NODE || (n.textContent ?? '').trim().length > 0);
|
|
21
|
-
}
|
|
22
12
|
/**
|
|
23
13
|
* `<lyra-result-field>` — a single label/value row, meant for use inside a
|
|
24
14
|
* `<lyra-result-card>` body (though it works standalone too). Renders as a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-field.class.js","sourceRoot":"","sources":["../../../src/components/result-card/result-field.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"result-field.class.js","sourceRoot":"","sources":["../../../src/components/result-card/result-field.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAAhD;;QAGE,kFAAkF;QACtE,UAAK,GAAG,EAAE,CAAC;QAEvB;kDAC0C;QAC9B,UAAK,GAAG,EAAE,CAAC;QAEN,iBAAY,GAAG,KAAK,CAAC;QAiB9B,iBAAY,GAAG,CAAC,CAAQ,EAAQ,EAAE;YACxC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAE,CAAC,CAAC,MAA0B,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrG,CAAC,CAAC;IAaJ,CAAC;aAzCQ,WAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,AAA/B,CAAgC;IAWnC,UAAU;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,YAAY;QACV,sEAAsE;QACtE,uEAAuE;QACvE,qEAAqE;QACrE,2DAA2D;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAW,CAAC,aAAa,CAAC,MAAM,CAAoB,CAAC;QACvE,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAMD,MAAM;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,CAAA;;UAEL,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO;;aAEhE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,qBAAqB,IAAI,CAAC,YAAY;;;KAGtF,CAAC;IACJ,CAAC;CACF;AAtCa;IAAX,QAAQ,EAAE;8CAAY;AAIX;IAAX,QAAQ,EAAE;8CAAY;AAEN;IAAhB,KAAK,EAAE;qDAA8B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.class.d.ts","sourceRoot":"","sources":["../../../src/components/slider/slider.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"slider.class.d.ts","sourceRoot":"","sources":["../../../src/components/slider/slider.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAY7D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,WAAW,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,aAAa,EAAE,WAAW,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/C;AACD,cAAM,cAAe,SAAQ,WAAW,CAAC,kBAAkB,CAAC;CAAG;;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,UAAW,SAAQ,eAA8B;IAC5D,MAAM,CAAC,MAAM,iCAAgC;IAM7C,MAAM,CAAC,UAAU;QACf,GAAG;YAAI,IAAI;YAAU,UAAU;;QAC/B,GAAG;YAAI,IAAI;YAAU,UAAU;;QAC/B,IAAI;YAAI,IAAI;YAAU,UAAU;;MAChC;IAEF,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,KAAK,CAAK;IAKlB,OAAO,CAAC,YAAY,CAAqB;IAEzC,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAKnB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAKnB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAQpB;IACD;;;;0EAIsE;IAC1D,KAAK,SAAM;IACvB;;;;;qCAKiC;IACqB,SAAS,UAAQ;IAKvE,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAS;IAEhC,iBAAiB,IAAI,IAAI,CASxB;IAED,oBAAoB,IAAI,IAAI,CAY3B;IAED;;;;;6BAKyB;IACzB,IAAI,aAAa,IAAI,MAAM,CAI1B;IAED,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAE7B;IAED;;;;OAIG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAUrB;IAED,iBAAiB,IAAI,IAAI,CAGxB;IAED;;0EAEsE;IACtE,OAAO,CAAC,WAAW;IAInB,qFAAqF;IACrF,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,SAAS,CAgCf;IAEF,OAAO,CAAC,OAAO,CAcb;IAEF;;;;2DAIuD;IACvD,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,aAAa,CAGnB;IAEF;;;;;;;;qBAQiB;IACjB,OAAO,CAAC,iBAAiB,CAiBvB;IAEF,OAAO,CAAC,aAAa,CAqBnB;IAEF,OAAO,CAAC,WAAW,CAEjB;IAEF,qFAAqF;IACrF,OAAO,CAAC,OAAO;IAef,MAAM,IAAI,cAAc,CA4BvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
|
|
@@ -9,31 +9,13 @@ import { property } from 'lit/decorators.js';
|
|
|
9
9
|
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
10
|
import { FormAssociated } from '../../internal/form-associated.js';
|
|
11
11
|
import { isRtl } from '../../internal/rtl.js';
|
|
12
|
-
import { finiteNumber, finiteRange } from '../../internal/numbers.js';
|
|
12
|
+
import { finiteNumber, finiteRange, isSliderKey, decimalPlaces } from '../../internal/numbers.js';
|
|
13
13
|
import { styles } from './slider.styles.js';
|
|
14
14
|
/** PageUp/PageDown move by a larger increment than a single Arrow step,
|
|
15
15
|
* matching the WAI-ARIA APG slider pattern's expected keyboard interactions
|
|
16
16
|
* (and native `<input type=range>`). Mirrors lyra-time-range's identical
|
|
17
17
|
* constant. */
|
|
18
18
|
const PAGE_STEP_MULTIPLIER = 10;
|
|
19
|
-
function isArrowKey(key) {
|
|
20
|
-
return key === 'ArrowRight' || key === 'ArrowUp' || key === 'ArrowLeft' || key === 'ArrowDown';
|
|
21
|
-
}
|
|
22
|
-
/** Keys that onKeyDown acts on and onKeyUp commits after. */
|
|
23
|
-
function isSliderKey(key) {
|
|
24
|
-
return isArrowKey(key) || key === 'Home' || key === 'End' || key === 'PageUp' || key === 'PageDown';
|
|
25
|
-
}
|
|
26
|
-
/** Number of decimal places implied by `n`, including exponent notation.
|
|
27
|
-
* `0.1` -> 1, `5` -> 0, and `1e-7` -> 7. Used to round a stepped value back
|
|
28
|
-
* to the precision `step` itself implies, instead of leaving binary
|
|
29
|
-
* floating-point noise in place. */
|
|
30
|
-
function decimalPlaces(n) {
|
|
31
|
-
if (!Number.isFinite(n) || n === 0)
|
|
32
|
-
return 0;
|
|
33
|
-
const [mantissa, exponentText] = n.toExponential().split('e');
|
|
34
|
-
const mantissaPlaces = mantissa.includes('.') ? mantissa.length - mantissa.indexOf('.') - 1 : 0;
|
|
35
|
-
return Math.max(0, mantissaPlaces - Number(exponentText));
|
|
36
|
-
}
|
|
37
19
|
class LyraSliderBase extends LyraElement {
|
|
38
20
|
}
|
|
39
21
|
/**
|