@brightspot/ui 5.0.4-pre.20260624 → 5.2.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.
Files changed (142) hide show
  1. package/dist/components/button-group/ButtonGroup.d.ts +7 -2
  2. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -1
  3. package/dist/components/button-group/ButtonGroup.js +23 -16
  4. package/dist/components/button-group/ButtonGroup.js.map +1 -1
  5. package/dist/components/card/Card.css +7 -0
  6. package/dist/components/card/Card.d.ts +244 -0
  7. package/dist/components/card/Card.d.ts.map +1 -0
  8. package/dist/components/card/Card.js +512 -0
  9. package/dist/components/card/Card.js.map +1 -0
  10. package/dist/components/empty-state/EmptyState.d.ts +11 -2
  11. package/dist/components/empty-state/EmptyState.d.ts.map +1 -1
  12. package/dist/components/empty-state/EmptyState.js +19 -8
  13. package/dist/components/empty-state/EmptyState.js.map +1 -1
  14. package/dist/components/esca-avatar/EscaAvatar.d.ts +70 -0
  15. package/dist/components/esca-avatar/EscaAvatar.d.ts.map +1 -0
  16. package/dist/components/esca-avatar/EscaAvatar.js +218 -0
  17. package/dist/components/esca-avatar/EscaAvatar.js.map +1 -0
  18. package/dist/components/esca-avatar/animations/esca-search.json +1 -0
  19. package/dist/components/esca-avatar/animations/esca-task-complete.json +1 -0
  20. package/dist/components/esca-avatar/animations/esca-wave.json +1 -0
  21. package/dist/components/widget/Widget.d.ts +11 -2
  22. package/dist/components/widget/Widget.d.ts.map +1 -1
  23. package/dist/components/widget/Widget.js +21 -10
  24. package/dist/components/widget/Widget.js.map +1 -1
  25. package/dist/custom-elements.json +1081 -365
  26. package/dist/storybook/assets/{ActionBar.stories-cyX9vc6C.js → ActionBar.stories-CBN_ShP5.js} +1 -1
  27. package/dist/storybook/assets/{ActionItem.stories-Bs-Kxp5J.js → ActionItem.stories-DysfIj7U.js} +1 -1
  28. package/dist/storybook/assets/{Avatar.stories-B1Uee53f.js → Avatar.stories-BdgqH7I_.js} +1 -1
  29. package/dist/storybook/assets/{AvatarGroup.stories-W2EtKQBu.js → AvatarGroup.stories-DFCG_0Py.js} +1 -1
  30. package/dist/storybook/assets/{Badge.stories-BotNIO18.js → Badge.stories-BWPIJ2jm.js} +1 -1
  31. package/dist/storybook/assets/{Button-YTBnP55L.js → Button-B1_SwzVL.js} +1 -1
  32. package/dist/storybook/assets/{Button.stories-B-X7_d_i.js → Button.stories-C-H-KIcV.js} +1 -1
  33. package/dist/storybook/assets/{ButtonGroup.stories-BM-pxfK2.js → ButtonGroup.stories-BBdtnaP_.js} +1 -1
  34. package/dist/storybook/assets/Card.stories-FLC-WKC_.js +556 -0
  35. package/dist/storybook/assets/{Celebrate.stories-D9EJwzxo.js → Celebrate.stories-CZ7SfTOh.js} +1 -1
  36. package/dist/storybook/assets/{Checkbox.stories-f5VLVSw5.js → Checkbox.stories-C42Z-jkF.js} +1 -1
  37. package/dist/storybook/assets/{CircularProgress.stories-BI9e372u.js → CircularProgress.stories-DoC0japf.js} +1 -1
  38. package/dist/storybook/assets/{ClipboardMixin.stories-CsyJDNxc.js → ClipboardMixin.stories-Ci-drbJq.js} +1 -1
  39. package/dist/storybook/assets/{Color-6BZIO3FS-ClVOLIJG.js → Color-6BZIO3FS-rxeQBzj6.js} +1 -1
  40. package/dist/storybook/assets/{Colors.stories-hUYBvymM.js → Colors.stories-Bw1Kp3B7.js} +1 -1
  41. package/dist/storybook/assets/{CombinedEffects.stories-DkokyKCS.js → CombinedEffects.stories-DArqLKI1.js} +1 -1
  42. package/dist/storybook/assets/{ComponentStatesMixin-C4I_rtgt.js → ComponentStatesMixin-kUcZl-YW.js} +1 -1
  43. package/dist/storybook/assets/{ComponentStatesMixin.stories-BeLCYevK.js → ComponentStatesMixin.stories-PrGY6akN.js} +1 -1
  44. package/dist/storybook/assets/{CopyToClipboard.stories-DN9oagz-.js → CopyToClipboard.stories-CUzNoCic.js} +1 -1
  45. package/dist/storybook/assets/{Debounce.stories-CtNQAJxO.js → Debounce.stories-CrnUlkHs.js} +1 -1
  46. package/dist/storybook/assets/{DocsRenderer-LL677BLK-Bx1Fds2q.js → DocsRenderer-LL677BLK-BM3eNhez.js} +3 -3
  47. package/dist/storybook/assets/{Dropdown.stories-B862-mco.js → Dropdown.stories-DyIY6e6W.js} +1 -1
  48. package/dist/storybook/assets/{EmptyState.stories-Im3Vr4ZL.js → EmptyState.stories-BXFcxFcG.js} +1 -1
  49. package/dist/storybook/assets/EscaAvatar.stories-DnriDX7_.js +138 -0
  50. package/dist/storybook/assets/{Events.stories-B0tluV0t.js → Events.stories-YjZ1Qtl4.js} +1 -1
  51. package/dist/storybook/assets/{Heading.stories-6CzGqAAc.js → Heading.stories-CfQHk5pf.js} +1 -1
  52. package/dist/storybook/assets/{HueRipple.stories-DaQiDn9K.js → HueRipple.stories-CR75dLBM.js} +1 -1
  53. package/dist/storybook/assets/{Icon.stories-CFkYO_7w.js → Icon.stories-BCSRhY2s.js} +1 -1
  54. package/dist/storybook/assets/{IconButton.stories-DwBTqvTi.js → IconButton.stories-0O4LM1u6.js} +1 -1
  55. package/dist/storybook/assets/{LinearProgress.stories-Coxmgjmo.js → LinearProgress.stories-B7GYC8WE.js} +1 -1
  56. package/dist/storybook/assets/OnFindMixin.stories-UOK_ZP2n.js +300 -0
  57. package/dist/storybook/assets/{Pagination.stories-CYrKX5iI.js → Pagination.stories-Co3mbyct.js} +1 -1
  58. package/dist/storybook/assets/{Popover.stories-BkGiUOfu.js → Popover.stories-D5gsWcB0.js} +1 -1
  59. package/dist/storybook/assets/{ReadyMixin-CP6tQ4FB.js → ReadyMixin-DkhLzoe0.js} +1 -1
  60. package/dist/storybook/assets/{RovingTabindexMixin.stories-CzkPw8Nl.js → RovingTabindexMixin.stories-DPhOWmKd.js} +1 -1
  61. package/dist/storybook/assets/{Rtc.stories-CVch488H.js → Rtc.stories-D5Vpw1oP.js} +1 -1
  62. package/dist/storybook/assets/{ScrollShadow.stories-BGh-Irt7.js → ScrollShadow.stories-Cmbqjk5X.js} +1 -1
  63. package/dist/storybook/assets/{Switch.stories-DPfP0QVK.js → Switch.stories-Bfmr9Ugg.js} +1 -1
  64. package/dist/storybook/assets/{Tab.stories-CBcuRcDB.js → Tab.stories-DbucUczE.js} +1 -1
  65. package/dist/storybook/assets/{Tabs.stories-CDOBjYbs.js → Tabs.stories-DnPRsSsj.js} +1 -1
  66. package/dist/storybook/assets/{Throttle.stories-Bqyul0aW.js → Throttle.stories-DNwTsNRC.js} +1 -1
  67. package/dist/storybook/assets/{Tooltip.stories-B9dohX1h.js → Tooltip.stories-Fsp2BRAr.js} +1 -1
  68. package/dist/storybook/assets/{Upload.stories-C7dq2Wdk.js → Upload.stories-C-WggEd6.js} +1 -1
  69. package/dist/storybook/assets/{UploadItem.stories-35zsIKTv.js → UploadItem.stories-DwQzECXv.js} +1 -1
  70. package/dist/storybook/assets/{Welcome.stories-BuD3fpke.js → Welcome.stories-DFluhbVr.js} +1 -1
  71. package/dist/storybook/assets/{Widget.stories-D2UYzfyE.js → Widget.stories-7pJNHWTu.js} +1 -1
  72. package/dist/storybook/assets/{WithTooltip-65CFNBJE-DGiY8cz9.js → WithTooltip-65CFNBJE-BcgHQTz7.js} +1 -1
  73. package/dist/storybook/assets/{blocks-YjKl5E55.js → blocks-U4F5yAu3.js} +5 -5
  74. package/dist/storybook/assets/{formatter-EIJCOSYU-XYAiuXAN.js → formatter-EIJCOSYU-BjQsmbLH.js} +1 -1
  75. package/dist/storybook/assets/if-defined-CM2lJk-0.js +1 -0
  76. package/dist/storybook/assets/iframe-1F7Ef_8q.css +1 -0
  77. package/dist/storybook/assets/{iframe-CufEXQ5F.js → iframe-DNJdsh5L.js} +225 -225
  78. package/dist/storybook/assets/{index-DbEDIsEB.js → index-1U9xrCIK.js} +1 -1
  79. package/dist/storybook/assets/onFind-AbVF4rYD.js +1 -0
  80. package/dist/storybook/assets/{onFind.stories-UpwJxFqR.js → onFind.stories-j334ViWp.js} +15 -15
  81. package/dist/storybook/assets/{onRemove.stories-BMwQGBCl.js → onRemove.stories-fKMxne2_.js} +1 -1
  82. package/dist/storybook/assets/{onVisible.stories-axSo0Zv3.js → onVisible.stories-BCRoHlJz.js} +1 -1
  83. package/dist/storybook/assets/{style-map-BkaK9546.js → style-map-BZ07XihX.js} +1 -1
  84. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-CDDZTVRn.js → syntaxhighlighter-ED5Y7EFY-C2D-CgsB.js} +1 -1
  85. package/dist/storybook/iframe.html +48 -2
  86. package/dist/storybook/index.json +1 -1
  87. package/dist/storybook/project.json +1 -1
  88. package/dist/tailwind-plugin-button.js +5 -5
  89. package/dist/tailwind-plugin-button.js.map +1 -1
  90. package/dist/tailwind-plugin-button.ts +5 -5
  91. package/dist/tailwind-plugin-card.d.ts +2 -0
  92. package/dist/tailwind-plugin-card.d.ts.map +1 -0
  93. package/dist/tailwind-plugin-card.js +438 -0
  94. package/dist/tailwind-plugin-card.js.map +1 -0
  95. package/dist/tailwind-plugin-card.ts +515 -0
  96. package/dist/tailwind.config.d.ts.map +1 -1
  97. package/dist/tailwind.config.js +3 -1
  98. package/dist/tailwind.config.js.map +1 -1
  99. package/dist/tailwind.config.ts +3 -2
  100. package/dist/util/EventEmitterMixin.d.ts +5 -0
  101. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  102. package/dist/util/EventEmitterMixin.js.map +1 -1
  103. package/dist/util/OnFindMixin.d.ts +55 -0
  104. package/dist/util/OnFindMixin.d.ts.map +1 -0
  105. package/dist/util/OnFindMixin.js +70 -0
  106. package/dist/util/OnFindMixin.js.map +1 -0
  107. package/dist/util/onFind.d.ts +4 -2
  108. package/dist/util/onFind.d.ts.map +1 -1
  109. package/dist/util/onFind.js +12 -0
  110. package/dist/util/onFind.js.map +1 -1
  111. package/docs/components/ButtonGroup.md +7 -3
  112. package/docs/components/Card.md +83 -0
  113. package/docs/components/EmptyState.md +10 -6
  114. package/docs/components/EscaAvatar.md +70 -0
  115. package/docs/components/README.md +2 -0
  116. package/docs/components/Widget.md +18 -14
  117. package/package.json +2 -2
  118. package/src/legacy/tool-ui/src/AIInline.css +1 -1
  119. package/src/legacy/tool-ui/src/ContentForm.css +1 -1
  120. package/src/legacy/tool-ui/src/Guide.css +1 -1
  121. package/src/legacy/tool-ui/src/Notification.css +1 -1
  122. package/src/legacy/tool-ui/src/Popup.css +4 -1
  123. package/src/legacy/tool-ui/src/RepeatableContentInputGroup.css +3 -3
  124. package/src/legacy/tool-ui/src/SearchWidget.ts +10 -1
  125. package/src/legacy/tool-ui/src/dropdown/index.ts +2 -2
  126. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.c6f3142a97caa5cd3c21.js +500 -0
  127. package/src/legacy/tool-ui/src/main/webapp/dist/v4.c1c3bde6e394b2a2b75c.css +3 -0
  128. package/src/legacy/tool-ui/src/main/webapp/dist/{v4.c5bcef50efdfa2d2e35f.js → v4.da15ce3ce45e85b4880a.js} +5 -5
  129. package/src/legacy/tool-ui/src/main/webapp/dist/v5.4edf99db4a5f4969d041.css +5 -0
  130. package/src/legacy/tool-ui/src/main/webapp/dist/{v5.86effb9bf858ae7b0640.js → v5.8491d982a282935a3058.js} +5 -5
  131. package/src/legacy/tool-ui/src/main/webapp/v4/ContentForm.less +1 -1
  132. package/src/legacy/tool-ui/src/main/webapp/v4/ContentSelector.less +3 -3
  133. package/src/legacy/tool-ui/src/v5.ts +4 -2
  134. package/dist/storybook/assets/if-defined-f_e-RnGa.js +0 -1
  135. package/dist/storybook/assets/iframe-PeGbyIdX.css +0 -1
  136. package/dist/storybook/assets/onFind-C7Wi8jr6.js +0 -1
  137. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.945bd28778b1a3e937c7.js +0 -500
  138. package/src/legacy/tool-ui/src/main/webapp/dist/v4.a6f53058dbb04a69aa5c.css +0 -3
  139. package/src/legacy/tool-ui/src/main/webapp/dist/v5.f60c05ef0c9b89aae888.css +0 -5
  140. /package/src/legacy/tool-ui/src/main/webapp/dist/{RTEProseMirror.945bd28778b1a3e937c7.js.LICENSE.txt → RTEProseMirror.c6f3142a97caa5cd3c21.js.LICENSE.txt} +0 -0
  141. /package/src/legacy/tool-ui/src/main/webapp/dist/{v4.c5bcef50efdfa2d2e35f.js.LICENSE.txt → v4.da15ce3ce45e85b4880a.js.LICENSE.txt} +0 -0
  142. /package/src/legacy/tool-ui/src/main/webapp/dist/{v5.86effb9bf858ae7b0640.js.LICENSE.txt → v5.8491d982a282935a3058.js.LICENSE.txt} +0 -0
@@ -0,0 +1,512 @@
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 { LitElement, html, nothing } from 'lit';
8
+ import { property, state } from 'lit/decorators.js';
9
+ import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
10
+ import { OnFindMixin } from '../../util/OnFindMixin.js';
11
+ import { ReadyMixin } from '../../util/ReadyMixin.js';
12
+ import '../badge/Badge.js';
13
+ import '../checkbox/Checkbox.js';
14
+ import '../icon/Icon.js';
15
+ import './Card.css';
16
+ const isHeadingLevel = (n) => typeof n === 'number' && Number.isInteger(n) && n >= 1 && n <= 6;
17
+ /**
18
+ * A flexible content container for presenting and organizing information.
19
+ *
20
+ * The layout is driven by composition:
21
+ *
22
+ * - a direct `<img>` or `<btu-icon>` child renders the media layout (image area);
23
+ * the icon shows in the image area as the fallback.
24
+ * - neither child renders a text-only card.
25
+ * - the `compact` attribute renders a quick-start tile; only a
26
+ * featured `<btu-icon>` and the `action` slot are used.
27
+ *
28
+ * Composable children, all relocated into the layout automatically:
29
+ * - `<img>` — the thumbnail.
30
+ * - `<btu-icon>` — the featured icon (compact) or the media image fallback (shown
31
+ * when no `<img>` is provided or it fails to load; defaults to `file-text`). The card sizes it.
32
+ * - `<btu-badge>` — a status badge.
33
+ * - `slot="action"` / `slot="secondary-action"` — a control in the top-right corner
34
+ * or next to the title. A `<btu-checkbox>` there stays visible and toggles the
35
+ * selected styling (listen for the bubbling `btu-checkbox-change` event); buttons
36
+ * reveal on hover/focus.
37
+ *
38
+ * Cards are full-width by default and rely on the parent layout (grid or flex) to
39
+ * control their size.
40
+ *
41
+ * @element btu-card
42
+ *
43
+ * @fires {CustomEvent} btu-card-ready - Fired after first render and initialization
44
+ *
45
+ * @slot action - Intended for a single action in the top-right corner of the card.
46
+ * @slot secondary-action - Intended for a single action next to the title.
47
+ * @slot fields - Intended for additional metadata fields displayed below the title & description
48
+ *
49
+ * @cssprop --card-min-width - Minimum width of the card (default: 160px)
50
+ * @cssprop --card-background - Background color (default: var(--btu-theme-white))
51
+ * @cssprop --card-border - Border style (default: 1px solid gray-200)
52
+ * @cssprop --card-radius - Corner rounding (default: 8px)
53
+ * @cssprop --card-img-ratio - Fixed aspect ratio for the thumbnail when an `<img>` child is present (default: 16 / 9)
54
+ * @cssprop --card-img-fit - Object-fit mode for the `<img>` child thumbnail (default: contain)
55
+ * @cssprop --card-icon-background - Background color behind the composed icon (compact card and media-image fallback) (default: gray-100)
56
+ *
57
+ * @example
58
+ * ```html
59
+ * <!-- Selectable media card with image and badge -->
60
+ * <btu-card heading="Article Title" description="Summary text">
61
+ * <img src="/photo.jpg" alt="Article thumbnail" />
62
+ * <btu-badge variant="info" size="sm">Published</btu-badge>
63
+ * <btu-checkbox slot="action"></btu-checkbox>
64
+ * </btu-card>
65
+ *
66
+ * <!-- Media card with an icon fallback shown when the image fails to load -->
67
+ * <btu-card heading="Article Title">
68
+ * <img src="/photo.jpg" alt="Article thumbnail" />
69
+ * <btu-icon symbol="image-off"></btu-icon>
70
+ * </btu-card>
71
+ *
72
+ * <!-- Text card (no image) with a badge and metadata fields -->
73
+ * <btu-card heading="Board Item" description="Content type info">
74
+ * <btu-badge variant="info" size="sm">Draft</btu-badge>
75
+ * <div slot="fields">
76
+ * <div>Content Type: Article</div>
77
+ * </div>
78
+ * </btu-card>
79
+ *
80
+ * <!-- Card with a quick-view button revealed on hover -->
81
+ * <btu-card heading="Article">
82
+ * <img src="/photo.jpg" alt="Article thumbnail" />
83
+ * <btu-icon-button slot="secondary-action" symbol="info" size="sm"></btu-icon-button>
84
+ * </btu-card>
85
+ *
86
+ * <!-- Compact card -->
87
+ * <btu-card compact heading="Quick Action">
88
+ * <btu-icon symbol="zap"></btu-icon>
89
+ * </btu-card>
90
+ * ```
91
+ */
92
+ export default class Card extends EventEmitterMixin(OnFindMixin(ReadyMixin(LitElement))) {
93
+ constructor() {
94
+ super(...arguments);
95
+ /**
96
+ * Heading text displayed on the card.
97
+ * @attr
98
+ */
99
+ this.heading = '';
100
+ /**
101
+ * Heading level (1-6) for the card heading element. Drives the semantic h1–h6 tag.
102
+ * Invalid values log a warning and fall back to the default (2).
103
+ * @attr heading-level
104
+ */
105
+ this.headingLevel = 2;
106
+ /**
107
+ * Renders the card as a compact quick-start tile.
108
+ * Badge, image, fields, and secondary-action children are ignored in this case.
109
+ * @attr
110
+ */
111
+ this.compact = false;
112
+ /**
113
+ * Whether the card is disabled.
114
+ * @attr
115
+ */
116
+ this.disabled = false;
117
+ /** @internal */
118
+ this._initialClasses = [];
119
+ /** @internal */
120
+ this._initialClassesCaptured = false;
121
+ /** @internal */
122
+ this._checked = false;
123
+ // TODO(drag-and-drop): `_dropped` and `_draggable` toggle the
124
+ // `btu-card-dropped` / `btu-card-draggable` styling but nothing sets them yet.
125
+ // They're intentionally private (not public attributes) until a drag-and-drop
126
+ // integration is wired up to drive them; expose them then if needed.
127
+ /** @internal Whether the card is in a dropped state (visual only). */
128
+ this._dropped = false;
129
+ /** @internal Whether the card shows the draggable visual cue. */
130
+ this._draggable = false;
131
+ /** @internal Whether a direct `<img>` child is present (latched — drives the media layout). */
132
+ this._hasImage = false;
133
+ /** @internal Whether the composed image failed to load (show the fallback icon). */
134
+ this._imageFailed = false;
135
+ /** @internal Whether a direct `<btu-badge>` child is being used as the badge. */
136
+ this._hasBadge = false;
137
+ /** @internal Whether a direct `<btu-icon>` child is being used as the featured icon / fallback. */
138
+ this._hasIcon = false;
139
+ /** @internal Whether a `slot="action"` child is present (drives the top row for media/text). */
140
+ this._hasAction = false;
141
+ /** @internal Whether a `slot="secondary-action"` child is present. */
142
+ this._hasSecondaryAction = false;
143
+ /** @internal Whether a `slot="fields"` child is present. */
144
+ this._hasFields = false;
145
+ /** @internal Whether the card's link is focused via keyboard (`:focus-visible`). */
146
+ this._linkFocused = false;
147
+ /**
148
+ * @internal Toggle the selected styling from a checkbox in an action slot.
149
+ * The `btu-checkbox-change` event is left to bubble up for consumers to handle.
150
+ */
151
+ this.handleCheckboxChange = (e) => {
152
+ // Only act on checkboxes in an action slot (e.g. ignore one inside the fields slot).
153
+ const target = e.target;
154
+ if (!target?.closest('.btu-card-action, .btu-card-secondary-action'))
155
+ return;
156
+ this._checked = e.detail.checked;
157
+ this.requestUpdate();
158
+ };
159
+ /**
160
+ * @internal Track keyboard focus on the link so the card can render its focus
161
+ * ring via a class (`btu-card-link-focused`) instead of a `:has(:focus-visible)`
162
+ * selector. The ring sits on the card because the card's `overflow: clip` would
163
+ * crop a ring drawn on the absolutely-positioned link itself.
164
+ */
165
+ this.handleLinkFocus = (e) => {
166
+ const visible = e.target.matches(':focus-visible');
167
+ if (visible !== this._linkFocused) {
168
+ this._linkFocused = visible;
169
+ this.requestUpdate();
170
+ }
171
+ };
172
+ /** @internal */
173
+ this.handleLinkBlur = () => {
174
+ if (this._linkFocused) {
175
+ this._linkFocused = false;
176
+ this.requestUpdate();
177
+ }
178
+ };
179
+ /** @internal Fall back to the icon placeholder when the image fails to load. */
180
+ this.handleImageError = (e) => {
181
+ ;
182
+ e.target?.remove();
183
+ this._imageFailed = true;
184
+ this.requestUpdate();
185
+ };
186
+ }
187
+ /** @internal Layout mode derived from `compact` and the presence of an `<img>` or `<btu-icon>` child. */
188
+ get mode() {
189
+ if (this.compact)
190
+ return 'compact';
191
+ // An `<img>` is the thumbnail; a lone `<btu-icon>` renders the media layout too,
192
+ // shown in the image area as the fallback.
193
+ return this._hasImage || this._hasIcon ? 'media' : 'text';
194
+ }
195
+ /** @internal Whether the badge/action top row renders (media, or text with a badge). */
196
+ get _showTopRow() {
197
+ if (this.mode === 'compact')
198
+ return false;
199
+ if (this.mode === 'text')
200
+ return this._hasBadge;
201
+ return this._hasBadge || this._hasAction;
202
+ }
203
+ connectedCallback() {
204
+ super.connectedCallback();
205
+ if (!this._initialClassesCaptured && this.className) {
206
+ this._initialClasses = this.className.split(' ').filter(c => c.trim());
207
+ this._initialClassesCaptured = true;
208
+ }
209
+ // Detect composed children before the first render so the layout (media vs
210
+ // text, image fallback, top row, icon container) can be built correctly.
211
+ // onFind handles any added later.
212
+ if (!this.hasUpdated) {
213
+ this._hasImage = !!this.querySelector(':scope > img');
214
+ this._hasBadge = !!this.querySelector(':scope > btu-badge');
215
+ this._hasIcon = !!this.querySelector(':scope > btu-icon');
216
+ this._hasAction = !!this.querySelector(':scope > [slot="action"]');
217
+ this._hasSecondaryAction = !!this.querySelector(':scope > [slot="secondary-action"]');
218
+ this._hasFields = !!this.querySelector(':scope > [slot="fields"]');
219
+ // Reflect a pre-checked selection checkbox into the card's selected styling.
220
+ this._checked = !!this.querySelector(':scope > btu-checkbox[checked]');
221
+ }
222
+ // A checkbox in an action slot bubbles `btu-checkbox-change` up to the card.
223
+ // The handler is a stable reference, so re-adding it on each reconnect is a no-op.
224
+ this.addEventListener('btu-checkbox-change', this.handleCheckboxChange);
225
+ }
226
+ createRenderRoot() {
227
+ return this;
228
+ }
229
+ willUpdate(changedProperties) {
230
+ if (changedProperties.has('headingLevel') && !isHeadingLevel(this.headingLevel)) {
231
+ console.warn(`[btu-card] Invalid heading-level="${this.headingLevel}". Valid values are 1-6. Falling back to default (2).`);
232
+ }
233
+ if (this.href && !this.disabled && !this.heading && !this.description) {
234
+ console.warn('[btu-card] href is set without a heading or description — the link will have no accessible name.');
235
+ }
236
+ const mode = this.mode;
237
+ // The card emits classes for its own structural state so the CSS can avoid
238
+ // `:has()` selectors (which are comparatively expensive to evaluate).
239
+ const linked = Boolean(this.href && !this.disabled);
240
+ const classes = [
241
+ ...this._initialClasses,
242
+ 'btu-card',
243
+ mode === 'media' && 'btu-card-media',
244
+ mode === 'text' && 'btu-card-text',
245
+ mode === 'compact' && 'btu-card-compact',
246
+ this._checked && 'btu-card-selected',
247
+ this._dropped && 'btu-card-dropped',
248
+ this.disabled && 'btu-card-disabled',
249
+ this._draggable && 'btu-card-draggable',
250
+ linked && 'btu-card-linked',
251
+ linked && this._linkFocused && 'btu-card-link-focused',
252
+ this._showTopRow && 'btu-card-has-top',
253
+ mode !== 'compact' && this._hasFields && 'btu-card-has-fields',
254
+ mode !== 'compact' && this._hasSecondaryAction && 'btu-card-has-secondary-action',
255
+ ];
256
+ this.className = classes.filter(Boolean).join(' ');
257
+ }
258
+ firstUpdated(changedProperties) {
259
+ super.firstUpdated(changedProperties);
260
+ this.emit('btu-card-ready');
261
+ }
262
+ /**
263
+ * @internal Declares the onFind child redistribution for {@link OnFindMixin},
264
+ * which owns registration, disposal, and reattach re-arming. onFind is a global
265
+ * MutationObserver-backed utility, so this also picks up children added after
266
+ * first render. redistributeChild is idempotent, so re-running the initial
267
+ * sweep on a reattach just re-places children where they already are.
268
+ */
269
+ onFindRegistration() {
270
+ return {
271
+ selectors: ':scope > [slot], :scope > img, :scope > btu-badge, :scope > btu-icon',
272
+ callback: (el) => this.redistributeChild(el),
273
+ };
274
+ }
275
+ updated() {
276
+ // Re-place relocated children whose containers may have rendered or moved
277
+ // this cycle (e.g. a badge added dynamically, the icon fallback appearing
278
+ // after an image fails, or an action slot shifting between the top row and
279
+ // the title row when the badge toggles).
280
+ this.placeMovableChildren();
281
+ }
282
+ /** @internal Move a discovered child into the container matching its role. */
283
+ redistributeChild(el) {
284
+ const slot = el.getAttribute('slot');
285
+ if (slot === 'action') {
286
+ this._actionEl = el;
287
+ this.wireSelectionCheckbox(el);
288
+ if (!this._hasAction) {
289
+ this._hasAction = true;
290
+ this.requestUpdate();
291
+ }
292
+ this.placeMovableChildren();
293
+ return;
294
+ }
295
+ if (slot === 'secondary-action') {
296
+ this._secondaryActionEl = el;
297
+ this.wireSelectionCheckbox(el);
298
+ if (!this._hasSecondaryAction) {
299
+ this._hasSecondaryAction = true;
300
+ this.requestUpdate();
301
+ }
302
+ this.placeMovableChildren();
303
+ return;
304
+ }
305
+ if (slot === 'fields') {
306
+ this.querySelector('.btu-card-fields')?.appendChild(el);
307
+ if (!this._hasFields) {
308
+ this._hasFields = true;
309
+ this.requestUpdate();
310
+ }
311
+ return;
312
+ }
313
+ if (el.tagName === 'IMG') {
314
+ this._hasImage = true;
315
+ // A freshly relocated image gets a clean chance to load — clear any prior
316
+ // failure so it isn't shown alongside the fallback.
317
+ this._imageFailed = false;
318
+ el.addEventListener('error', this.handleImageError, { once: true });
319
+ this.querySelector('.btu-card-image')?.appendChild(el);
320
+ this.requestUpdate();
321
+ return;
322
+ }
323
+ if (el.tagName === 'BTU-ICON') {
324
+ this._iconEl = el;
325
+ if (!this._hasIcon) {
326
+ this._hasIcon = true;
327
+ this.requestUpdate();
328
+ }
329
+ this.placeMovableChildren();
330
+ return;
331
+ }
332
+ if (el.tagName === 'BTU-BADGE') {
333
+ this._badgeEl = el;
334
+ if (!this._hasBadge) {
335
+ this._hasBadge = true;
336
+ this.requestUpdate();
337
+ }
338
+ this.placeMovableChildren();
339
+ }
340
+ }
341
+ /**
342
+ * @internal When an action-slot child is a `<btu-checkbox>`, sync the card's
343
+ * selected styling from it and give it an accessible name from the heading if
344
+ * none was provided (the visible label is hidden via CSS to avoid duplicating
345
+ * the heading).
346
+ */
347
+ wireSelectionCheckbox(el) {
348
+ if (el.tagName !== 'BTU-CHECKBOX')
349
+ return;
350
+ this._checked = el.hasAttribute('checked');
351
+ if (!el.hasAttribute('label') && this.heading)
352
+ el.setAttribute('label', this.heading);
353
+ this.requestUpdate();
354
+ }
355
+ /**
356
+ * @internal Re-place relocated children into their containers whenever those
357
+ * containers (re)appear or move between template branches. Safe to call
358
+ * repeatedly — each element is only moved when it isn't already in place.
359
+ *
360
+ * The action slots in particular move between the top row and the title row
361
+ * as the badge/mode changes; re-placing here keeps their slotted child from
362
+ * being orphaned when Lit tears down and recreates the old container.
363
+ */
364
+ placeMovableChildren() {
365
+ this.placeChild(this._badgeEl, '.btu-card-badge');
366
+ this.placeChild(this._iconEl, this.mode === 'compact' ? '.btu-card-icon-container' : '.btu-card-image-fallback');
367
+ this.placeChild(this._actionEl, '.btu-card-action');
368
+ this.placeChild(this._secondaryActionEl, '.btu-card-secondary-action');
369
+ }
370
+ /** @internal Move a relocated child into its container if it isn't already there. */
371
+ placeChild(el, containerSelector) {
372
+ if (!el)
373
+ return;
374
+ const container = this.querySelector(containerSelector);
375
+ if (container && el.parentElement !== container) {
376
+ container.appendChild(el);
377
+ }
378
+ }
379
+ /**
380
+ * @internal Badge + top-right action, overlaid on the image (media) or in flow (text).
381
+ * Text cards only get this in-flow row when a badge is present — otherwise the action
382
+ * moves into the title row (see renderContent) so there's no empty space above the title.
383
+ */
384
+ renderTop() {
385
+ if (!this._showTopRow)
386
+ return nothing;
387
+ return html `
388
+ <div class="btu-card-top">
389
+ <div class="btu-card-badge"></div>
390
+ ${this.renderAction()}
391
+ </div>
392
+ `;
393
+ }
394
+ /** @internal */
395
+ renderImage() {
396
+ if (this.mode !== 'media')
397
+ return nothing;
398
+ // A composed <img> child is relocated into this container by onFind. Show the
399
+ // fallback when there's no working image — either no <img> was provided (an
400
+ // icon-only card) or it failed to load. The fallback uses the composed
401
+ // <btu-icon> if present, otherwise a default file-text icon.
402
+ const showFallback = !this._hasImage || this._imageFailed;
403
+ return html `
404
+ <div class="btu-card-image">
405
+ ${showFallback
406
+ ? html `<div class="btu-card-image-fallback">
407
+ ${this._hasIcon ? nothing : html `<btu-icon symbol="file-text"></btu-icon>`}
408
+ </div>`
409
+ : nothing}
410
+ </div>
411
+ `;
412
+ }
413
+ /** @internal */
414
+ renderIconContainer() {
415
+ // The composed <btu-icon> child is relocated into this container.
416
+ if (this.mode !== 'compact' || !this._hasIcon)
417
+ return nothing;
418
+ return html `<div class="btu-card-icon-container"></div>`;
419
+ }
420
+ /** @internal Top-right action container (`slot="action"`). */
421
+ renderAction() {
422
+ return html `<div class="btu-card-action"></div>`;
423
+ }
424
+ /** @internal Next-to-title action container (`slot="secondary-action"`). */
425
+ renderSecondaryAction() {
426
+ return html `<div class="btu-card-secondary-action"></div>`;
427
+ }
428
+ /** @internal */
429
+ renderFields() {
430
+ return html `<div class="btu-card-fields"></div>`;
431
+ }
432
+ /** @internal Renders the card title as a semantic h1–h6 element. */
433
+ renderHeading() {
434
+ if (!this.heading)
435
+ return nothing;
436
+ const level = isHeadingLevel(this.headingLevel) ? this.headingLevel : 2;
437
+ switch (level) {
438
+ case 1:
439
+ return html `<h1 class="btu-card-title">${this.heading}</h1>`;
440
+ case 2:
441
+ return html `<h2 class="btu-card-title">${this.heading}</h2>`;
442
+ case 3:
443
+ return html `<h3 class="btu-card-title">${this.heading}</h3>`;
444
+ case 4:
445
+ return html `<h4 class="btu-card-title">${this.heading}</h4>`;
446
+ case 5:
447
+ return html `<h5 class="btu-card-title">${this.heading}</h5>`;
448
+ case 6:
449
+ return html `<h6 class="btu-card-title">${this.heading}</h6>`;
450
+ }
451
+ }
452
+ /** @internal */
453
+ renderContent() {
454
+ return html `
455
+ <div class="btu-card-content">
456
+ ${this.mode === 'compact' ? this.renderIconContainer() : nothing}
457
+ ${this.mode === 'compact' ? this.renderAction() : nothing}
458
+ ${this.heading
459
+ ? html `<div class="btu-card-title-row">
460
+ ${this.renderHeading()} ${this.mode === 'compact' ? nothing : this.renderSecondaryAction()}
461
+ ${this.mode === 'text' && !this._hasBadge ? this.renderAction() : nothing}
462
+ </div>`
463
+ : nothing}
464
+ ${this.description ? html `<div class="btu-card-description">${this.description}</div>` : nothing}
465
+ ${this.mode === 'compact' ? nothing : this.renderFields()}
466
+ </div>
467
+ `;
468
+ }
469
+ render() {
470
+ return html `
471
+ ${this.href && !this.disabled
472
+ ? html `<a
473
+ href=${this.href}
474
+ class="btu-card-link"
475
+ aria-label=${this.heading || this.description || nothing}
476
+ @focus=${this.handleLinkFocus}
477
+ @blur=${this.handleLinkBlur}
478
+ ></a>`
479
+ : nothing}
480
+ ${this.renderImage()} ${this.renderTop()} ${this.renderContent()}
481
+ `;
482
+ }
483
+ }
484
+ __decorate([
485
+ property({ type: String })
486
+ ], Card.prototype, "heading", void 0);
487
+ __decorate([
488
+ property({ type: Number, attribute: 'heading-level' })
489
+ ], Card.prototype, "headingLevel", void 0);
490
+ __decorate([
491
+ property({ type: String })
492
+ ], Card.prototype, "description", void 0);
493
+ __decorate([
494
+ property({ type: Boolean })
495
+ ], Card.prototype, "compact", void 0);
496
+ __decorate([
497
+ property({ type: Boolean })
498
+ ], Card.prototype, "disabled", void 0);
499
+ __decorate([
500
+ property({ type: String })
501
+ ], Card.prototype, "href", void 0);
502
+ __decorate([
503
+ state()
504
+ ], Card.prototype, "_dropped", void 0);
505
+ __decorate([
506
+ state()
507
+ ], Card.prototype, "_draggable", void 0);
508
+ // Register custom element with guard to prevent double registration
509
+ if (!customElements.get('btu-card')) {
510
+ customElements.define('btu-card', Card);
511
+ }
512
+ //# sourceMappingURL=Card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/components/card/Card.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,mBAAmB,CAAA;AAC1B,OAAO,yBAAyB,CAAA;AAChC,OAAO,iBAAiB,CAAA;AACxB,OAAO,YAAY,CAAA;AAInB,MAAM,cAAc,GAAG,CAAC,CAAU,EAAqB,EAAE,CACvD,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAWlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;AACH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAAxF;;QACE;;;WAGG;QAEH,YAAO,GAAG,EAAE,CAAA;QAEZ;;;;WAIG;QAEH,iBAAY,GAAW,CAAC,CAAA;QASxB;;;;WAIG;QAEH,YAAO,GAAG,KAAK,CAAA;QAEf;;;WAGG;QAEH,aAAQ,GAAG,KAAK,CAAA;QAUhB,gBAAgB;QACR,oBAAe,GAAa,EAAE,CAAA;QAEtC,gBAAgB;QACR,4BAAuB,GAAG,KAAK,CAAA;QAEvC,gBAAgB;QACR,aAAQ,GAAG,KAAK,CAAA;QAExB,8DAA8D;QAC9D,+EAA+E;QAC/E,8EAA8E;QAC9E,qEAAqE;QACrE,sEAAsE;QAE9D,aAAQ,GAAG,KAAK,CAAA;QAExB,iEAAiE;QAEzD,eAAU,GAAG,KAAK,CAAA;QAE1B,+FAA+F;QACvF,cAAS,GAAG,KAAK,CAAA;QAEzB,oFAAoF;QAC5E,iBAAY,GAAG,KAAK,CAAA;QAE5B,iFAAiF;QACzE,cAAS,GAAG,KAAK,CAAA;QAEzB,mGAAmG;QAC3F,aAAQ,GAAG,KAAK,CAAA;QAExB,gGAAgG;QACxF,eAAU,GAAG,KAAK,CAAA;QAE1B,sEAAsE;QAC9D,wBAAmB,GAAG,KAAK,CAAA;QAEnC,4DAA4D;QACpD,eAAU,GAAG,KAAK,CAAA;QAE1B,oFAAoF;QAC5E,iBAAY,GAAG,KAAK,CAAA;QA0N5B;;;WAGG;QACK,yBAAoB,GAAG,CAAC,CAAQ,EAAE,EAAE;YAC1C,qFAAqF;YACrF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAwB,CAAA;YACzC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,8CAA8C,CAAC;gBAAE,OAAM;YAC5E,IAAI,CAAC,QAAQ,GAAI,CAAuC,CAAC,MAAM,CAAC,OAAO,CAAA;YACvE,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC,CAAA;QAkBD;;;;;WAKG;QACK,oBAAe,GAAG,CAAC,CAAa,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAI,CAAC,CAAC,MAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;YAC/D,IAAI,OAAO,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAA;gBAC3B,IAAI,CAAC,aAAa,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAA;QAED,gBAAgB;QACR,mBAAc,GAAG,GAAG,EAAE;YAC5B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;gBACzB,IAAI,CAAC,aAAa,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAA;QAED,gFAAgF;QACxE,qBAAgB,GAAG,CAAC,CAAQ,EAAE,EAAE;YACtC,CAAC;YAAC,CAAC,CAAC,MAAyB,EAAE,MAAM,EAAE,CAAA;YACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YACxB,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC,CAAA;IAiGH,CAAC;IAnWC,yGAAyG;IACzG,IAAY,IAAI;QACd,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAA;QAClC,iFAAiF;QACjF,2CAA2C;QAC3C,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;IAC3D,CAAC;IAED,wFAAwF;IACxF,IAAY,WAAW;QACrB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QACzC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC,SAAS,CAAA;QAC/C,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAA;IAC1C,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACtE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QACrC,CAAC;QAED,2EAA2E;QAC3E,yEAAyE;QACzE,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;YACrD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAA;YAC3D,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAA;YACzD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAA;YAClE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,oCAAoC,CAAC,CAAA;YACrF,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAA;YAClE,6EAA6E;YAC7E,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,CAAA;QACxE,CAAC;QAED,6EAA6E;QAC7E,mFAAmF;QACnF,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACzE,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAC,iBAAyD;QAClE,IAAI,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAChF,OAAO,CAAC,IAAI,CACV,qCAAqC,IAAI,CAAC,YAAY,uDAAuD,CAC9G,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,kGAAkG,CAAC,CAAA;QAClH,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACtB,2EAA2E;QAC3E,sEAAsE;QACtE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnD,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,eAAe;YACvB,UAAU;YACV,IAAI,KAAK,OAAO,IAAI,gBAAgB;YACpC,IAAI,KAAK,MAAM,IAAI,eAAe;YAClC,IAAI,KAAK,SAAS,IAAI,kBAAkB;YACxC,IAAI,CAAC,QAAQ,IAAI,mBAAmB;YACpC,IAAI,CAAC,QAAQ,IAAI,kBAAkB;YACnC,IAAI,CAAC,QAAQ,IAAI,mBAAmB;YACpC,IAAI,CAAC,UAAU,IAAI,oBAAoB;YACvC,MAAM,IAAI,iBAAiB;YAC3B,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,uBAAuB;YACtD,IAAI,CAAC,WAAW,IAAI,kBAAkB;YACtC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,qBAAqB;YAC9D,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,mBAAmB,IAAI,+BAA+B;SAClF,CAAA;QAED,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpD,CAAC;IAED,YAAY,CAAC,iBAAyD;QACpE,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB;QAChB,OAAO;YACL,SAAS,EAAE,sEAAsE;YACjF,QAAQ,EAAE,CAAC,EAAW,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;SACtD,CAAA;IACH,CAAC;IAED,OAAO;QACL,0EAA0E;QAC1E,0EAA0E;QAC1E,2EAA2E;QAC3E,yCAAyC;QACzC,IAAI,CAAC,oBAAoB,EAAE,CAAA;IAC7B,CAAC;IAED,8EAA8E;IACtE,iBAAiB,CAAC,EAAW;QACnC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QACpC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;YACnB,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBACtB,IAAI,CAAC,aAAa,EAAE,CAAA;YACtB,CAAC;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC3B,OAAM;QACR,CAAC;QACD,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAChC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;YAC5B,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;gBAC/B,IAAI,CAAC,aAAa,EAAE,CAAA;YACtB,CAAC;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC3B,OAAM;QACR,CAAC;QACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;YACvD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBACtB,IAAI,CAAC,aAAa,EAAE,CAAA;YACtB,CAAC;YACD,OAAM;QACR,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACrB,0EAA0E;YAC1E,oDAAoD;YACpD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YACnE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;YACtD,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,OAAM;QACR,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;YACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,IAAI,CAAC,aAAa,EAAE,CAAA;YACtB,CAAC;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC3B,OAAM;QACR,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;gBACrB,IAAI,CAAC,aAAa,EAAE,CAAA;YACtB,CAAC;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC7B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,qBAAqB,CAAC,EAAW;QACvC,IAAI,EAAE,CAAC,OAAO,KAAK,cAAc;YAAE,OAAM;QACzC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAC1C,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACrF,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;IAED;;;;;;;;OAQG;IACK,oBAAoB;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAA;QACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAA;QAChH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,CAAA;IACxE,CAAC;IAED,qFAAqF;IAC7E,UAAU,CAAC,EAAuB,EAAE,iBAAyB;QACnE,IAAI,CAAC,EAAE;YAAE,OAAM;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;QACvD,IAAI,SAAS,IAAI,EAAE,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAChD,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAcD;;;;OAIG;IACK,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,OAAO,CAAA;QAErC,OAAO,IAAI,CAAA;;;UAGL,IAAI,CAAC,YAAY,EAAE;;KAExB,CAAA;IACH,CAAC;IA+BD,gBAAgB;IACR,WAAW;QACjB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,OAAO,CAAA;QAEzC,8EAA8E;QAC9E,4EAA4E;QAC5E,uEAAuE;QACvE,6DAA6D;QAC7D,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAA;QACzD,OAAO,IAAI,CAAA;;UAEL,YAAY;YACZ,CAAC,CAAC,IAAI,CAAA;gBACA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,0CAA0C;mBACrE;YACT,CAAC,CAAC,OAAO;;KAEd,CAAA;IACH,CAAC;IAED,gBAAgB;IACR,mBAAmB;QACzB,kEAAkE;QAClE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAA;QAE7D,OAAO,IAAI,CAAA,6CAA6C,CAAA;IAC1D,CAAC;IAED,8DAA8D;IACtD,YAAY;QAClB,OAAO,IAAI,CAAA,qCAAqC,CAAA;IAClD,CAAC;IAED,4EAA4E;IACpE,qBAAqB;QAC3B,OAAO,IAAI,CAAA,+CAA+C,CAAA;IAC5D,CAAC;IAED,gBAAgB;IACR,YAAY;QAClB,OAAO,IAAI,CAAA,qCAAqC,CAAA;IAClD,CAAC;IAED,oEAAoE;IAC5D,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAA;QACjC,MAAM,KAAK,GAAiB,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QACrF,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAA,8BAA8B,IAAI,CAAC,OAAO,OAAO,CAAA;YAC9D,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAA,8BAA8B,IAAI,CAAC,OAAO,OAAO,CAAA;YAC9D,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAA,8BAA8B,IAAI,CAAC,OAAO,OAAO,CAAA;YAC9D,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAA,8BAA8B,IAAI,CAAC,OAAO,OAAO,CAAA;YAC9D,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAA,8BAA8B,IAAI,CAAC,OAAO,OAAO,CAAA;YAC9D,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAA,8BAA8B,IAAI,CAAC,OAAO,OAAO,CAAA;QAChE,CAAC;IACH,CAAC;IAED,gBAAgB;IACR,aAAa;QACnB,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO;UAC9D,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO;UACvD,IAAI,CAAC,OAAO;YACZ,CAAC,CAAC,IAAI,CAAA;gBACA,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBACxF,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO;mBACpE;YACT,CAAC,CAAC,OAAO;UACT,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA,qCAAqC,IAAI,CAAC,WAAW,QAAQ,CAAC,CAAC,CAAC,OAAO;UAC9F,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;;KAE5D,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;YAC3B,CAAC,CAAC,IAAI,CAAA;mBACK,IAAI,CAAC,IAAI;;yBAEH,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO;qBAC/C,IAAI,CAAC,eAAe;oBACrB,IAAI,CAAC,cAAc;gBACvB;YACR,CAAC,CAAC,OAAO;QACT,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;KACjE,CAAA;IACH,CAAC;CACF;AArcC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qCACf;AAQZ;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;0CAC/B;AAOxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCACP;AAQpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qCACb;AAOf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;sCACZ;AAQhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kCACd;AAiBL;IADP,KAAK,EAAE;sCACgB;AAIhB;IADP,KAAK,EAAE;wCACkB;AA4Y5B,oEAAoE;AACpE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;IACpC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACzC,CAAC"}
@@ -7,7 +7,7 @@ export interface EmptyStateProps {
7
7
  size?: 'sm' | 'md' | 'lg';
8
8
  headingLevel?: number;
9
9
  }
10
- declare const EmptyState_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
10
+ declare const EmptyState_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/OnFindMixin.js").OnFindMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
11
11
  /**
12
12
  * An empty state component for displaying placeholder content when no data is available.
13
13
  *
@@ -87,7 +87,16 @@ export default class EmptyState extends EmptyState_base {
87
87
  private initialClasses;
88
88
  connectedCallback(): void;
89
89
  willUpdate(changedProperties: PropertyValues): void;
90
- firstUpdated(): void;
90
+ firstUpdated(changedProperties: Map<string | number | symbol, unknown>): void;
91
+ /**
92
+ * @internal Declares the onFind child redistribution for {@link OnFindMixin}.
93
+ * Returns null until the rendered containers exist; queries them here so a
94
+ * reattach re-binds against the current DOM.
95
+ */
96
+ onFindRegistration(): {
97
+ selectors: string;
98
+ callback: (el: Element) => void;
99
+ } | null;
91
100
  updated(changedProperties: PropertyValues): void;
92
101
  private syncGraphicIconSize;
93
102
  private resolveHeadingLevel;
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../src/components/empty-state/EmptyState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAA;AAKhF,OAAO,gCAAgC,CAAA;AACvC,OAAO,kBAAkB,CAAA;AAIzB,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,eAAyC;IAC/E,SAAS,CAAC,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IAI5D;;;OAGG;IAEH,OAAO,EAAE,MAAM,CAAK;IAEpB;;;OAGG;IAEH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;OAIG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAO;IAE/B;;;;;;OAMG;IAEH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,OAAO,CAAC,cAAc,CAAe;IAErC,iBAAiB,IAAI,IAAI;IAOzB,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAYnD,YAAY,IAAI,IAAI;IAyBpB,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAOhD,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,aAAa;IAkBrB,MAAM;CAmBP;AAQD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,UAAU,CAAA;KAC9B;CACF"}
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../src/components/empty-state/EmptyState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAA;AAKhF,OAAO,gCAAgC,CAAA;AACvC,OAAO,kBAAkB,CAAA;AAIzB,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,eAAsD;IAC5F,SAAS,CAAC,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IAI5D;;;OAGG;IAEH,OAAO,EAAE,MAAM,CAAK;IAEpB;;;OAGG;IAEH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;OAIG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAO;IAE/B;;;;;;OAMG;IAEH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,OAAO,CAAC,cAAc,CAAe;IAErC,iBAAiB,IAAI,IAAI;IAOzB,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAYnD,YAAY,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK7E;;;;OAIG;IACH,kBAAkB;;uBAQC,OAAO;;IAkB1B,OAAO,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAOhD,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,aAAa;IAkBrB,MAAM;CAmBP;AAQD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,UAAU,CAAA;KAC9B;CACF"}
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { LitElement, html } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
9
  import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
10
- import onFind from '../../util/onFind.js';
10
+ import { OnFindMixin } from '../../util/OnFindMixin.js';
11
11
  import { ReadyMixin } from '../../util/ReadyMixin.js';
12
12
  import '../button-group/ButtonGroup.js';
13
13
  import './EmptyState.css';
@@ -78,7 +78,7 @@ const isHeadingLevel = (n) => typeof n === 'number' && Number.isInteger(n) && n
78
78
  * </btu-empty-state>
79
79
  * ```
80
80
  */
81
- export default class EmptyState extends EventEmitterMixin(ReadyMixin(LitElement)) {
81
+ export default class EmptyState extends EventEmitterMixin(OnFindMixin(ReadyMixin(LitElement))) {
82
82
  constructor() {
83
83
  super(...arguments);
84
84
  /**
@@ -111,11 +111,23 @@ export default class EmptyState extends EventEmitterMixin(ReadyMixin(LitElement)
111
111
  console.warn(`EmptyState: Invalid heading-level="${this.headingLevel}". Valid values are 1-6. Falling back to size-based default.`);
112
112
  }
113
113
  }
114
- firstUpdated() {
114
+ firstUpdated(changedProperties) {
115
+ super.firstUpdated(changedProperties);
116
+ this.emit('btu-empty-state-ready');
117
+ }
118
+ /**
119
+ * @internal Declares the onFind child redistribution for {@link OnFindMixin}.
120
+ * Returns null until the rendered containers exist; queries them here so a
121
+ * reattach re-binds against the current DOM.
122
+ */
123
+ onFindRegistration() {
115
124
  const graphicContainer = this.querySelector('.btu-empty-state-graphic');
116
125
  const actionsContainer = this.querySelector('.btu-empty-state-actions');
117
- if (graphicContainer && actionsContainer) {
118
- onFind(this, ':scope > :not([data-empty-state-internal])', el => {
126
+ if (!graphicContainer || !actionsContainer)
127
+ return null;
128
+ return {
129
+ selectors: ':scope > :not([data-empty-state-internal])',
130
+ callback: (el) => {
119
131
  const slot = el.getAttribute('slot');
120
132
  if (slot === 'graphic') {
121
133
  graphicContainer.appendChild(el);
@@ -132,9 +144,8 @@ export default class EmptyState extends EventEmitterMixin(ReadyMixin(LitElement)
132
144
  else {
133
145
  console.warn('EmptyState: Child element has no slot attribute. Use slot="graphic" or slot="actions".', el);
134
146
  }
135
- });
136
- }
137
- this.emit('btu-empty-state-ready');
147
+ },
148
+ };
138
149
  }
139
150
  updated(changedProperties) {
140
151
  super.updated(changedProperties);
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../../src/components/empty-state/EmptyState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../../src/components/empty-state/EmptyState.ts"],"names":[],"mappings":"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"}