@nldd/design-system 0.8.61 → 0.8.63

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 (150) hide show
  1. package/dist/components/actions/button/button.d.ts +9 -2
  2. package/dist/components/actions/button/button.d.ts.map +1 -1
  3. package/dist/components/actions/button/button.i18n.d.ts +5 -0
  4. package/dist/components/actions/button/button.i18n.d.ts.map +1 -0
  5. package/dist/components/actions/button/button.i18n.js +4 -0
  6. package/dist/components/actions/button/button.i18n.js.map +1 -0
  7. package/dist/components/actions/button/button.js +5 -2
  8. package/dist/components/actions/button/button.js.map +1 -1
  9. package/dist/components/actions/button/button.styles.d.ts.map +1 -1
  10. package/dist/components/actions/button/button.styles.js +14 -0
  11. package/dist/components/actions/button/button.styles.js.map +1 -1
  12. package/dist/components/actions/button/button.template.d.ts.map +1 -1
  13. package/dist/components/actions/button/button.template.js +17 -4
  14. package/dist/components/actions/button/button.template.js.map +1 -1
  15. package/dist/components/actions/icon-button/icon-button.d.ts +10 -2
  16. package/dist/components/actions/icon-button/icon-button.d.ts.map +1 -1
  17. package/dist/components/actions/icon-button/icon-button.i18n.d.ts +5 -0
  18. package/dist/components/actions/icon-button/icon-button.i18n.d.ts.map +1 -0
  19. package/dist/components/actions/icon-button/icon-button.i18n.js +4 -0
  20. package/dist/components/actions/icon-button/icon-button.i18n.js.map +1 -0
  21. package/dist/components/actions/icon-button/icon-button.js +5 -2
  22. package/dist/components/actions/icon-button/icon-button.js.map +1 -1
  23. package/dist/components/actions/icon-button/icon-button.template.d.ts.map +1 -1
  24. package/dist/components/actions/icon-button/icon-button.template.js +11 -2
  25. package/dist/components/actions/icon-button/icon-button.template.js.map +1 -1
  26. package/dist/components/components.js +63 -62
  27. package/dist/components/content/byline/byline.d.ts +11 -0
  28. package/dist/components/content/byline/byline.d.ts.map +1 -1
  29. package/dist/components/content/byline/byline.js +20 -0
  30. package/dist/components/content/byline/byline.js.map +1 -1
  31. package/dist/components/content/byline/byline.styles.d.ts.map +1 -1
  32. package/dist/components/content/byline/byline.styles.js +13 -1
  33. package/dist/components/content/byline/byline.styles.js.map +1 -1
  34. package/dist/components/content/byline/byline.template.d.ts.map +1 -1
  35. package/dist/components/content/byline/byline.template.js +17 -2
  36. package/dist/components/content/byline/byline.template.js.map +1 -1
  37. package/dist/components/forms/form-actions/form-actions.styles.d.ts.map +1 -1
  38. package/dist/components/forms/form-actions/form-actions.styles.js +1 -0
  39. package/dist/components/forms/form-actions/form-actions.styles.js.map +1 -1
  40. package/dist/components/forms/form-field/form-field.styles.d.ts.map +1 -1
  41. package/dist/components/forms/form-field/form-field.styles.js +1 -0
  42. package/dist/components/forms/form-field/form-field.styles.js.map +1 -1
  43. package/dist/components/{index-B0DIduK1.js → index-BVaijKe_.js} +1771 -663
  44. package/dist/components/index.d.ts +1 -0
  45. package/dist/components/index.d.ts.map +1 -1
  46. package/dist/components/index.js +1 -0
  47. package/dist/components/index.js.map +1 -1
  48. package/dist/components/layout/collection/collection.d.ts +3 -1
  49. package/dist/components/layout/collection/collection.d.ts.map +1 -1
  50. package/dist/components/layout/collection/collection.js +14 -2
  51. package/dist/components/layout/collection/collection.js.map +1 -1
  52. package/dist/components/layout/collection/collection.styles.d.ts.map +1 -1
  53. package/dist/components/layout/collection/collection.styles.js +7 -10
  54. package/dist/components/layout/collection/collection.styles.js.map +1 -1
  55. package/dist/components/layout/collection/collection.template.d.ts.map +1 -1
  56. package/dist/components/layout/collection/collection.template.js +4 -2
  57. package/dist/components/layout/collection/collection.template.js.map +1 -1
  58. package/dist/components/layout/page-footer/page-footer.d.ts +1 -0
  59. package/dist/components/layout/page-footer/page-footer.d.ts.map +1 -1
  60. package/dist/components/layout/page-footer/page-footer.js +12 -4
  61. package/dist/components/layout/page-footer/page-footer.js.map +1 -1
  62. package/dist/components/layout/page-footer/page-footer.styles.d.ts.map +1 -1
  63. package/dist/components/layout/page-footer/page-footer.styles.js +9 -0
  64. package/dist/components/layout/page-footer/page-footer.styles.js.map +1 -1
  65. package/dist/components/lists-and-tables/list/list.d.ts +45 -0
  66. package/dist/components/lists-and-tables/list/list.d.ts.map +1 -1
  67. package/dist/components/lists-and-tables/list/list.i18n.d.ts +1 -0
  68. package/dist/components/lists-and-tables/list/list.i18n.d.ts.map +1 -1
  69. package/dist/components/lists-and-tables/list/list.i18n.js +1 -0
  70. package/dist/components/lists-and-tables/list/list.i18n.js.map +1 -1
  71. package/dist/components/lists-and-tables/list/list.js +154 -1
  72. package/dist/components/lists-and-tables/list/list.js.map +1 -1
  73. package/dist/components/lists-and-tables/list/list.styles.d.ts.map +1 -1
  74. package/dist/components/lists-and-tables/list/list.styles.js +1 -0
  75. package/dist/components/lists-and-tables/list/list.styles.js.map +1 -1
  76. package/dist/components/lists-and-tables/list-item/list-item.d.ts +10 -2
  77. package/dist/components/lists-and-tables/list-item/list-item.d.ts.map +1 -1
  78. package/dist/components/lists-and-tables/list-item/list-item.i18n.d.ts +1 -1
  79. package/dist/components/lists-and-tables/list-item/list-item.i18n.js +1 -1
  80. package/dist/components/lists-and-tables/list-item/list-item.i18n.js.map +1 -1
  81. package/dist/components/lists-and-tables/list-item/list-item.js +39 -3
  82. package/dist/components/lists-and-tables/list-item/list-item.js.map +1 -1
  83. package/dist/components/lists-and-tables/list-item/list-item.styles.d.ts.map +1 -1
  84. package/dist/components/lists-and-tables/list-item/list-item.styles.js +6 -5
  85. package/dist/components/lists-and-tables/list-item/list-item.styles.js.map +1 -1
  86. package/dist/components/lists-and-tables/list-item/list-item.template.d.ts +1 -1
  87. package/dist/components/lists-and-tables/list-item/list-item.template.d.ts.map +1 -1
  88. package/dist/components/lists-and-tables/list-item/list-item.template.js +4 -2
  89. package/dist/components/lists-and-tables/list-item/list-item.template.js.map +1 -1
  90. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.d.ts.map +1 -1
  91. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js +1 -0
  92. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js.map +1 -1
  93. package/dist/components/navigation/link/link.d.ts +9 -2
  94. package/dist/components/navigation/link/link.d.ts.map +1 -1
  95. package/dist/components/navigation/link/link.i18n.d.ts +5 -0
  96. package/dist/components/navigation/link/link.i18n.d.ts.map +1 -0
  97. package/dist/components/navigation/link/link.i18n.js +4 -0
  98. package/dist/components/navigation/link/link.i18n.js.map +1 -0
  99. package/dist/components/navigation/link/link.js +5 -2
  100. package/dist/components/navigation/link/link.js.map +1 -1
  101. package/dist/components/navigation/link/link.styles.d.ts.map +1 -1
  102. package/dist/components/navigation/link/link.styles.js +14 -0
  103. package/dist/components/navigation/link/link.styles.js.map +1 -1
  104. package/dist/components/navigation/link/link.template.d.ts.map +1 -1
  105. package/dist/components/navigation/link/link.template.js +14 -1
  106. package/dist/components/navigation/link/link.template.js.map +1 -1
  107. package/dist/components/navigation/tab-bar/tab-bar.d.ts.map +1 -1
  108. package/dist/components/navigation/tab-bar/tab-bar.js +11 -4
  109. package/dist/components/navigation/tab-bar/tab-bar.js.map +1 -1
  110. package/dist/components/navigation/tab-bar/tab-bar.styles.d.ts.map +1 -1
  111. package/dist/components/navigation/tab-bar/tab-bar.styles.js +25 -3
  112. package/dist/components/navigation/tab-bar/tab-bar.styles.js.map +1 -1
  113. package/dist/components/{prism-python-Dtm_y95w.js → prism-python-Tr_Ff1KJ.js} +1 -1
  114. package/dist/components/{prism-rust-Bp-z7VUz.js → prism-rust-CxUpjfK5.js} +1 -1
  115. package/dist/components/{prism-typescript-hCHH5aho.js → prism-typescript-zaF4YQWN.js} +1 -1
  116. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.d.ts +35 -12
  117. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.d.ts.map +1 -1
  118. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.js +48 -13
  119. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.js.map +1 -1
  120. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.d.ts.map +1 -1
  121. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js +77 -17
  122. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js.map +1 -1
  123. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.template.d.ts +1 -2
  124. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.template.d.ts.map +1 -1
  125. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.template.js +21 -7
  126. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.template.js.map +1 -1
  127. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.d.ts.map +1 -1
  128. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.js +12 -2
  129. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.js.map +1 -1
  130. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.d.ts +123 -0
  131. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.d.ts.map +1 -0
  132. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.i18n.d.ts +6 -0
  133. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.i18n.d.ts.map +1 -0
  134. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.i18n.js +5 -0
  135. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.i18n.js.map +1 -0
  136. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.js +550 -0
  137. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.js.map +1 -0
  138. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.d.ts +2 -0
  139. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.d.ts.map +1 -0
  140. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js +301 -0
  141. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js.map +1 -0
  142. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.template.d.ts +4 -0
  143. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.template.d.ts.map +1 -0
  144. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.template.js +72 -0
  145. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.template.js.map +1 -0
  146. package/dist/components/status-and-feedback/status-bar/status-bar.d.ts +6 -1
  147. package/dist/components/status-and-feedback/status-bar/status-bar.d.ts.map +1 -1
  148. package/dist/components/status-and-feedback/status-bar/status-bar.js +23 -9
  149. package/dist/components/status-and-feedback/status-bar/status-bar.js.map +1 -1
  150. package/package.json +5 -1
@@ -0,0 +1,550 @@
1
+ /**
2
+ * Nederlandse Digitale Dienst Just in Time Education Component (Lit + TypeScript)
3
+ *
4
+ * Een guided-discovery coach-mark. Plaats een control (bijv. nldd-search-field)
5
+ * in de default slot; zolang `active` is gezet tilt het component een callout
6
+ * (titel + supporting text + dismiss) in de top layer via de Popover API
7
+ * (`popover="manual"`), geankerd aan het control met Floating UI. Geen backdrop,
8
+ * non-modaal: de achtergrond blijft interactief. Het control zelf blijft op zijn
9
+ * plek in de flow staan.
10
+ *
11
+ * Met `dismissable` beheert het component het sluiten en vuurt het nldd-close:
12
+ * - de gebruiker voert de geadviseerde interactie uit op het control -> close{completed}
13
+ * - de dismiss-knop -> close{dismissed}
14
+ * - een klik/toets BUITEN de coach-mark -> close{ignored}
15
+ * Zonder `dismissable` sluit niets vanzelf (geen knop, geen buiten- of slot-klik);
16
+ * dan bepaalt de consumer het sluiten zelf via `active` of `complete()`. `complete()`
17
+ * werkt altijd en sluit met close{completed} (bijv. pas bij een echte zoekopdracht).
18
+ *
19
+ * @element nldd-just-in-time-education
20
+ * @attr {boolean} active - Toon de coach-mark. App-gestuurd; standaard false.
21
+ * @attr {string} text - Titel van de callout.
22
+ * @attr {string} supporting-text - Ondersteunende tekst onder de titel.
23
+ * @attr {string} placement - 'auto' | 'top' | 'bottom' | 'left' | 'right' (standaard 'auto').
24
+ * @attr {boolean} dismissable - Toon de dismiss-knop en sta sluiten toe via 1 klik/toets buiten de coach-mark. Standaard false: dan beheert de consumer het sluiten zelf.
25
+ * @attr {string} arrow-length - Pijllengte en dus de afstand tussen card en control, als CSS-lengte (bijv. \`333px\`, \`30vh\`). Leeg = DS-standaard; onder 40px wordt geklemd.
26
+ * @attr {boolean} no-arrow - Verberg de pijl; de card staat dan dicht tegen het control.
27
+ *
28
+ * @slot - Het control waar de coach-mark naar wijst (blijft in de normale flow).
29
+ *
30
+ * @fires nldd-close - Wanneer de coach-mark sluit. detail: { reason: 'completed' | 'dismissed' | 'ignored' }.
31
+ *
32
+ * @note Rendert via de native Popover API (`popover="manual"`) in de top layer,
33
+ * dus het escapet ancestor stacking contexts en `overflow: hidden` clipping.
34
+ * Positionering via Floating UI met `strategy: 'fixed'` + `autoUpdate`. De kant
35
+ * wordt bepaald door de beschikbare ruimte (horizontaal de viewport, verticaal
36
+ * het hele document) bij openen en bij window-resize; scrollen laat de kant vast
37
+ * en verschuift de callout alleen mee met het control.
38
+ *
39
+ * @note Focus-model (dismissable): de callout is een bewust NIET-modale dialog
40
+ * (`role="dialog"`, geen `aria-modal`, geen focus-trap). Bij openen gaat focus
41
+ * erin zodat de dismiss-knop bereikbaar is en Escape sluit; Tab verlaat de callout
42
+ * daarna expres naar de pagina, want de coach-mark wijst naar een control dat de
43
+ * gebruiker moet kunnen bereiken, dus focus vasthouden zou het doel ondermijnen.
44
+ * Niet-dismissable gebruikt een benoemde `role="region"` (aria-label = de titel) en
45
+ * verplaatst focus nooit; de polite live region kondigt de tip aan.
46
+ */
47
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
48
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50
+ 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;
51
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
52
+ };
53
+ var NLDDJustInTimeEducation_1;
54
+ import { LitElement } from 'lit';
55
+ import { customElement, property } from 'lit/decorators.js';
56
+ import { computePosition, autoUpdate, offset, shift } from '@floating-ui/dom';
57
+ import { withTranslations } from '../../../utilities/with-translations.js';
58
+ import { justInTimeEducationStyles } from './just-in-time-education.styles.js';
59
+ import { justInTimeEducationTemplate } from './just-in-time-education.template.js';
60
+ import { nlddJustInTimeEducationTranslations } from './just-in-time-education.i18n.js';
61
+ import '../../actions/icon-button/icon-button.js';
62
+ let jiteCounter = 0;
63
+ let NLDDJustInTimeEducation = NLDDJustInTimeEducation_1 = class NLDDJustInTimeEducation extends withTranslations(LitElement, nlddJustInTimeEducationTranslations) {
64
+ constructor() {
65
+ super(...arguments);
66
+ this.active = false;
67
+ this.text = '';
68
+ this.supportingText = '';
69
+ this.placement = 'auto';
70
+ this.dismissable = false;
71
+ this.arrowLength = '';
72
+ this.noArrow = false;
73
+ this._cleanupAutoUpdate = null;
74
+ this._attachTimeout = null;
75
+ this._attributeObserver = null;
76
+ this._boundDocumentInteraction = (e) => this._handleDocumentInteraction(e);
77
+ this._resolvedSide = null;
78
+ this._lastViewportWidth = 0;
79
+ this._lastViewportHeight = 0;
80
+ this._arrowMarkerId = `nldd-jite-arrow-${++jiteCounter}`;
81
+ }
82
+ updated(changed) {
83
+ if (changed.has('arrowLength')) {
84
+ // The arrow-length attribute takes any CSS length and feeds the local
85
+ // --_arrow-length var; the CSS clamps it (min 40) into --_gap. Only
86
+ // a valid length is forwarded — an invalid value (e.g. "d") would poison
87
+ // the max()/calc() that consume it, making --_max-width and the arrow gap
88
+ // invalid (the card would lose its width cap and the arrow misrender).
89
+ // Invalid or empty falls back to the DS default by removing the override.
90
+ if (this.arrowLength && CSS.supports('width', this.arrowLength)) {
91
+ this.style.setProperty('--_arrow-length', this.arrowLength);
92
+ }
93
+ else {
94
+ this.style.removeProperty('--_arrow-length');
95
+ }
96
+ }
97
+ if (changed.has('active')) {
98
+ if (this.active)
99
+ this._open();
100
+ else
101
+ this._closePopover();
102
+ }
103
+ else if (this.active && (changed.has('placement') || changed.has('text') || changed.has('supportingText') || changed.has('arrowLength') || changed.has('noArrow'))) {
104
+ // Re-place while open when an input that affects the geometry changes;
105
+ // clear the cached side so the placement is decided from scratch.
106
+ this._resolvedSide = null;
107
+ const control = this._getControl();
108
+ const container = this._containerEl;
109
+ if (control && container)
110
+ this._updatePosition(control, container);
111
+ }
112
+ }
113
+ get _containerEl() {
114
+ return this.shadowRoot?.querySelector('.just-in-time-education') ?? null;
115
+ }
116
+ get _cardEl() {
117
+ return this.shadowRoot?.querySelector('.just-in-time-education__main') ?? null;
118
+ }
119
+ get _announcerEl() {
120
+ return this.shadowRoot?.querySelector('.just-in-time-education__announcer') ?? null;
121
+ }
122
+ _getControl() {
123
+ const slot = this.shadowRoot?.querySelector('slot');
124
+ const assigned = slot?.assignedElements({ flatten: true });
125
+ return assigned?.[0] ?? null;
126
+ }
127
+ _getControls() {
128
+ const slot = this.shadowRoot?.querySelector('slot');
129
+ return slot?.assignedElements({ flatten: true }) ?? [];
130
+ }
131
+ /** Mirror one host attribute onto the slotted control(s) — or remove it —
132
+ * unless the component owns that attribute. */
133
+ _forwardAttribute(name) {
134
+ if (NLDDJustInTimeEducation_1._ownAttributes.has(name))
135
+ return;
136
+ const present = this.hasAttribute(name);
137
+ const value = this.getAttribute(name) ?? '';
138
+ for (const control of this._getControls()) {
139
+ if (present)
140
+ control.setAttribute(name, value);
141
+ else
142
+ control.removeAttribute(name);
143
+ }
144
+ }
145
+ /** Forward every non-owned host attribute to the slotted control(s); run on
146
+ * slotchange so a freshly slotted control catches up with what's already set. */
147
+ _handleSlotChange() {
148
+ for (const attr of Array.from(this.attributes))
149
+ this._forwardAttribute(attr.name);
150
+ }
151
+ _open() {
152
+ const container = this._containerEl;
153
+ if (!container)
154
+ return;
155
+ if (!container.matches(':popover-open'))
156
+ container.showPopover();
157
+ this._startPositioning();
158
+ // Announce the tip text via a polite live region. Focusing into the callout
159
+ // (dismissable, below) only makes AT read the dialog label and the focused
160
+ // element, not the tip body, so the live region carries the actual message;
161
+ // non-dismissable keeps focus on the control entirely. Cleared on close
162
+ // (below) so re-opening re-announces.
163
+ const announcer = this._announcerEl;
164
+ if (announcer)
165
+ announcer.textContent = [this.text, this.supportingText].filter(Boolean).join('. ');
166
+ // Outside-click/keystroke dismissal only applies when dismissable. Defer
167
+ // attaching the listeners to the next task so the click or keystroke that
168
+ // opened the coach-mark isn't itself treated as an "outside" action.
169
+ if (!this.dismissable)
170
+ return;
171
+ // Move focus into the callout so the dismiss button is keyboard-reachable
172
+ // (Tab from here lands on it; Shift+Tab returns to the control) and
173
+ // role="dialog" is announced on focus-enter. Focus returns to the control on
174
+ // close (see _closePopover). The container has tabindex="-1" for this.
175
+ container.focus();
176
+ if (this._attachTimeout)
177
+ clearTimeout(this._attachTimeout);
178
+ this._attachTimeout = setTimeout(() => {
179
+ this._attachTimeout = null;
180
+ if (!this.active)
181
+ return;
182
+ document.addEventListener('click', this._boundDocumentInteraction, true);
183
+ document.addEventListener('keydown', this._boundDocumentInteraction, true);
184
+ }, 0);
185
+ }
186
+ _closePopover() {
187
+ const container = this._containerEl;
188
+ // Capture before hiding: was focus inside the callout (e.g. on the dismiss
189
+ // button)? If so, return it to the control so keyboard focus isn't dropped
190
+ // to the body. If the user already moved focus out (engaged the control,
191
+ // clicked away), leave it where they put it.
192
+ const focusWasInside = container?.matches(':focus-within') ?? false;
193
+ if (container?.matches(':popover-open'))
194
+ container.hidePopover();
195
+ this._stopPositioning();
196
+ const announcer = this._announcerEl;
197
+ if (announcer)
198
+ announcer.textContent = '';
199
+ if (focusWasInside)
200
+ this._getControl()?.focus();
201
+ if (this._attachTimeout) {
202
+ clearTimeout(this._attachTimeout);
203
+ this._attachTimeout = null;
204
+ }
205
+ document.removeEventListener('click', this._boundDocumentInteraction, true);
206
+ document.removeEventListener('keydown', this._boundDocumentInteraction, true);
207
+ }
208
+ _startPositioning() {
209
+ const control = this._getControl();
210
+ const container = this._containerEl;
211
+ if (!control || !container)
212
+ return;
213
+ this._stopPositioning();
214
+ // autoUpdate re-runs on scroll/resize/layout shifts so the container keeps
215
+ // tracking the control. Scrolling only translates the callout; the side is
216
+ // re-decided only when the viewport changes (see _updatePosition).
217
+ // _updatePosition is async and intentionally not awaited: autoUpdate is
218
+ // rAF-debounced, so overlapping runs are rare and harmless — each just writes
219
+ // the latest geometry, and the last write wins.
220
+ this._cleanupAutoUpdate = autoUpdate(control, container, () => this._updatePosition(control, container));
221
+ }
222
+ _stopPositioning() {
223
+ this._cleanupAutoUpdate?.();
224
+ this._cleanupAutoUpdate = null;
225
+ this._resolvedSide = null;
226
+ }
227
+ async _updatePosition(control, container) {
228
+ const styles = getComputedStyle(this);
229
+ const off = parseInt(styles.getPropertyValue('--_offset'), 10);
230
+ const pad = parseInt(styles.getPropertyValue('--_shift-padding'), 10);
231
+ // The side is chosen by available space, not by scrolling: horizontally
232
+ // against the viewport, vertically against the whole document. Re-decide
233
+ // only when the viewport dimensions change (a window resize); on scroll the
234
+ // dimensions are unchanged, so the cached side stays put and the callout
235
+ // merely translates to keep tracking the control.
236
+ const viewportWidth = window.innerWidth;
237
+ const viewportHeight = window.innerHeight;
238
+ if (this._resolvedSide === null || viewportWidth !== this._lastViewportWidth || viewportHeight !== this._lastViewportHeight) {
239
+ this._resolvedSide = this._chooseSide(control);
240
+ this._lastViewportWidth = viewportWidth;
241
+ this._lastViewportHeight = viewportHeight;
242
+ }
243
+ const side = this._resolvedSide;
244
+ // The gap padding only sits on the side facing the control (reflected via
245
+ // data-arrow-side), so it changes the container's size per side. Apply it
246
+ // BEFORE the compute: a padding-only change doesn't trigger autoUpdate's
247
+ // ResizeObserver, so the compute must already use the final size — otherwise
248
+ // switching between a vertical and a horizontal side leaves the position
249
+ // wrong until a manual resize.
250
+ if (this.getAttribute('data-arrow-side') !== side)
251
+ this.setAttribute('data-arrow-side', side);
252
+ // Keep the callout inside the room left as it nears an edge. Vertical
253
+ // (top/bottom): --_available-distance is the room for the arrow gap once the
254
+ // card height is reserved, measured against the whole document; the CSS
255
+ // lets the gap fall to 0. Horizontal (left/right): --_available-distance is the
256
+ // room to the viewport edge, and the CSS reserves the main width first — so
257
+ // the arrow gap shrinks to 0 first, then the container cap narrows the main.
258
+ // Set BEFORE the compute so the (smaller) padding is already in place.
259
+ const cardHeight = this._cardEl?.getBoundingClientRect().height ?? 0;
260
+ const controlRect = control.getBoundingClientRect();
261
+ let availableDistance = '9999px';
262
+ if (side === 'top') {
263
+ availableDistance = `${Math.max(0, controlRect.top + window.scrollY - cardHeight)}px`;
264
+ }
265
+ else if (side === 'bottom') {
266
+ availableDistance = `${Math.max(0, document.documentElement.scrollHeight - (controlRect.bottom + window.scrollY) - cardHeight)}px`;
267
+ }
268
+ else if (side === 'left') {
269
+ availableDistance = `${Math.max(0, controlRect.left)}px`;
270
+ }
271
+ else if (side === 'right') {
272
+ availableDistance = `${Math.max(0, window.innerWidth - controlRect.right)}px`;
273
+ }
274
+ this.style.setProperty('--_available-distance', availableDistance);
275
+ // Top/bottom: shift along the horizontal (main) axis so the card keeps its
276
+ // preferred width near a viewport edge, sliding toward the side with room
277
+ // while the arrow still points at the control's centre. Left/right: no shift
278
+ // — it would push the card off the control vertically (sticking to the
279
+ // viewport) instead of letting it sit beside the control.
280
+ const isVertical = side === 'top' || side === 'bottom';
281
+ // Drop the arrow (rather than draw it stunted) when the room would force the
282
+ // gap below its minimum — uniformly for top/bottom and left/right. The gap
283
+ // room is what's left after reserving the card: its height for top/bottom
284
+ // (already folded into availableDistance) or the main's reserved width for
285
+ // left/right (--_main-width = --_text-width + an optional --_dismiss-width).
286
+ // Decided only from edge-room + fixed reserves, never the
287
+ // post-collapse layout, so it can't oscillate. The consumer's own no-arrow
288
+ // already hides it. Set the host hook BEFORE the compute (like
289
+ // data-arrow-side) so the smaller gap is in place; CSS hides the arrow itself.
290
+ const minArrow = parseFloat(styles.getPropertyValue('--primitives-space-40')) || 40;
291
+ let gapRoom = parseFloat(availableDistance);
292
+ if (!isVertical) {
293
+ const mainReserve = (parseFloat(styles.getPropertyValue('--_text-width')) || 320)
294
+ + (this.dismissable ? (parseFloat(styles.getPropertyValue('--_dismiss-width')) || 44) : 0);
295
+ gapRoom -= mainReserve;
296
+ }
297
+ const collapsed = !this.noArrow && gapRoom < minArrow;
298
+ this.toggleAttribute('data-arrow-collapsed', collapsed);
299
+ const { x, y } = await computePosition(control, container, {
300
+ placement: side,
301
+ strategy: 'fixed',
302
+ middleware: isVertical ? [offset(off), shift({ padding: pad })] : [offset(off)],
303
+ });
304
+ container.style.left = `${x}px`;
305
+ container.style.top = `${y}px`;
306
+ this._updateArrow(control, container, side);
307
+ }
308
+ // Picks the side the callout sits on from the room around the control:
309
+ // horizontally against the viewport edges, vertically against the full
310
+ // document, so scrolling never changes the outcome (only a resize does). A
311
+ // fixed placement is honoured exactly; only 'auto' weighs the room and takes
312
+ // the side with the most of it (ties fall to 'bottom', the conventional spot).
313
+ _chooseSide(control) {
314
+ if (this.placement !== 'auto')
315
+ return this.placement;
316
+ const rect = control.getBoundingClientRect();
317
+ const documentHeight = document.documentElement.scrollHeight;
318
+ const room = {
319
+ top: rect.top + window.scrollY,
320
+ bottom: documentHeight - (rect.bottom + window.scrollY),
321
+ left: rect.left,
322
+ right: window.innerWidth - rect.right,
323
+ };
324
+ let side = 'bottom';
325
+ for (const candidate of ['top', 'bottom', 'left', 'right']) {
326
+ if (room[candidate] > room[side])
327
+ side = candidate;
328
+ }
329
+ return side;
330
+ }
331
+ // Draws a flowing cubic from the card edge to the control edge, inside the
332
+ // transparent (padded) container so it is never clipped. Runs on every
333
+ // reposition (autoUpdate) so the curve re-routes as things move.
334
+ _updateArrow(control, container, placement) {
335
+ const svg = this.shadowRoot?.querySelector('.just-in-time-education__arrow');
336
+ const path = this.shadowRoot?.querySelector('.just-in-time-education__arrow-path');
337
+ const card = this._cardEl;
338
+ if (!svg || !path || !card)
339
+ return;
340
+ // Auto-collapsed near an edge: the arrow is hidden, so skip the geometry.
341
+ if (this.hasAttribute('data-arrow-collapsed'))
342
+ return;
343
+ const containerRect = container.getBoundingClientRect();
344
+ const cardRect = card.getBoundingClientRect();
345
+ const controlRect = control.getBoundingClientRect();
346
+ const cardCenterX = cardRect.left + cardRect.width / 2;
347
+ const cardCenterY = cardRect.top + cardRect.height / 2;
348
+ const controlCenterX = controlRect.left + controlRect.width / 2;
349
+ const controlCenterY = controlRect.top + controlRect.height / 2;
350
+ const side = placement.split('-')[0];
351
+ // S starts on the card edge facing the control. The tip points just shy of
352
+ // the control edge; dir is the direction the arrow travels into the control
353
+ // (perpendicular to that edge).
354
+ const tipGap = 6;
355
+ const arrowLen = 10;
356
+ let sx, sy, tipX, tipY, dirX, dirY;
357
+ if (side === 'top') {
358
+ sx = cardCenterX;
359
+ sy = cardRect.bottom;
360
+ tipX = controlCenterX;
361
+ tipY = controlRect.top - tipGap;
362
+ dirX = 0;
363
+ dirY = 1;
364
+ }
365
+ else if (side === 'bottom') {
366
+ sx = cardCenterX;
367
+ sy = cardRect.top;
368
+ tipX = controlCenterX;
369
+ tipY = controlRect.bottom + tipGap;
370
+ dirX = 0;
371
+ dirY = -1;
372
+ }
373
+ else if (side === 'left') {
374
+ sx = cardRect.right;
375
+ sy = cardCenterY;
376
+ tipX = controlRect.left - tipGap;
377
+ tipY = controlCenterY;
378
+ dirX = 1;
379
+ dirY = 0;
380
+ }
381
+ else {
382
+ sx = cardRect.left;
383
+ sy = cardCenterY;
384
+ tipX = controlRect.right + tipGap;
385
+ tipY = controlCenterY;
386
+ dirX = -1;
387
+ dirY = 0;
388
+ }
389
+ // The stroke ends arrowLen short of the tip (along dir), so the dashed line
390
+ // stops at the arrowhead base; the marker (refX=0) fills from there to the
391
+ // tip. Building the curve to this point (not the tip) keeps the end tangent
392
+ // pointing INTO the control, so the arrowhead never flips.
393
+ const ex = tipX - arrowLen * dirX;
394
+ const ey = tipY - arrowLen * dirY;
395
+ // Two cubic segments forming a gentle bow (the "belly"), with tangents
396
+ // perpendicular to both edges and at the midpoint, so the line leaves the
397
+ // card and meets the control at 90 degrees while bowing out in the middle.
398
+ const k = 0.25;
399
+ const dx = ex - sx;
400
+ const dy = ey - sy;
401
+ const vertical = side === 'top' || side === 'bottom';
402
+ const bulge = Math.min(Math.hypot(dx, dy) * 0.18, 9);
403
+ const mx = (sx + ex) / 2 + (vertical ? bulge : 0);
404
+ const my = (sy + ey) / 2 + (vertical ? 0 : bulge);
405
+ let c1x, c1y, c2x, c2y;
406
+ let c3x, c3y, c4x, c4y;
407
+ if (vertical) {
408
+ c1x = sx;
409
+ c1y = sy + dy * k;
410
+ c2x = mx;
411
+ c2y = my - dy * k;
412
+ c3x = mx;
413
+ c3y = my + dy * k;
414
+ c4x = ex;
415
+ c4y = ey - dy * k;
416
+ }
417
+ else {
418
+ c1x = sx + dx * k;
419
+ c1y = sy;
420
+ c2x = mx - dx * k;
421
+ c2y = my;
422
+ c3x = mx + dx * k;
423
+ c3y = my;
424
+ c4x = ex - dx * k;
425
+ c4y = ey;
426
+ }
427
+ // Size/place the SVG to the bounding box of the path and the tip.
428
+ const margin = 4;
429
+ const xs = [sx, mx, ex, tipX, c1x, c2x, c3x, c4x];
430
+ const ys = [sy, my, ey, tipY, c1y, c2y, c3y, c4y];
431
+ const minX = Math.min(...xs) - margin;
432
+ const minY = Math.min(...ys) - margin;
433
+ const width = Math.max(...xs) + margin - minX;
434
+ const height = Math.max(...ys) + margin - minY;
435
+ svg.style.left = `${minX - containerRect.left}px`;
436
+ svg.style.top = `${minY - containerRect.top}px`;
437
+ svg.setAttribute('width', `${width}`);
438
+ svg.setAttribute('height', `${height}`);
439
+ svg.setAttribute('viewBox', `0 0 ${width} ${height}`);
440
+ path.setAttribute('d', `M ${sx - minX} ${sy - minY}`
441
+ + ` C ${c1x - minX} ${c1y - minY}, ${c2x - minX} ${c2y - minY}, ${mx - minX} ${my - minY}`
442
+ + ` C ${c3x - minX} ${c3y - minY}, ${c4x - minX} ${c4y - minY}, ${ex - minX} ${ey - minY}`);
443
+ }
444
+ /** Route 1: the advised interaction on the slotted control (only when
445
+ * dismissable; otherwise the consumer drives completion via complete()).
446
+ * A mouse click fires pointerdown then focusin, both landing here; the
447
+ * !this.active guard makes the second call a no-op so 'completed' fires once. */
448
+ _handleAdvisedInteraction() {
449
+ if (!this.active || !this.dismissable)
450
+ return;
451
+ this._close('completed');
452
+ }
453
+ /** Route 2: a click/keystroke outside the coach-mark (only when dismissable). */
454
+ _handleDocumentInteraction(e) {
455
+ if (!this.active || !this.dismissable)
456
+ return;
457
+ // Anything inside the coach-mark (the slotted control or the callout) is
458
+ // not an "outside" action. Interaction on the control is the advised
459
+ // interaction, handled by route 1.
460
+ if (e.composedPath().includes(this))
461
+ return;
462
+ this._close('ignored');
463
+ }
464
+ /** Route 3: the dismiss button. */
465
+ _handleDismiss() {
466
+ this._close('dismissed');
467
+ }
468
+ /** Escape while focus is inside the callout dismisses it (the ARIA non-modal
469
+ * dialog expectation). The document capture listener (route 2) treats inside
470
+ * events as not-outside and bails, so Escape is handled here. stopPropagation
471
+ * keeps it from also closing an ancestor (e.g. a modal the coach-mark sits in). */
472
+ _handleCalloutKeydown(e) {
473
+ if (e.key !== 'Escape' || !this.dismissable)
474
+ return;
475
+ e.stopPropagation();
476
+ this._handleDismiss();
477
+ }
478
+ /** Programmatically mark the advised interaction as done (success close). */
479
+ complete() {
480
+ if (this.active)
481
+ this._close('completed');
482
+ }
483
+ _close(reason) {
484
+ this.active = false; // triggers updated() -> _closePopover()
485
+ this.dispatchEvent(new CustomEvent('nldd-close', {
486
+ detail: { reason },
487
+ bubbles: true,
488
+ composed: true,
489
+ }));
490
+ }
491
+ connectedCallback() {
492
+ super.connectedCallback();
493
+ // The toolbar sets `size` on its direct child (now us) dynamically, AFTER
494
+ // mount, so we observe attribute changes and forward them; slotchange covers
495
+ // the initial set and any control swap.
496
+ if (!this._attributeObserver) {
497
+ this._attributeObserver = new MutationObserver(records => {
498
+ for (const record of records) {
499
+ if (record.attributeName)
500
+ this._forwardAttribute(record.attributeName);
501
+ }
502
+ });
503
+ }
504
+ this._attributeObserver.observe(this, { attributes: true });
505
+ }
506
+ disconnectedCallback() {
507
+ super.disconnectedCallback();
508
+ this._closePopover();
509
+ this._attributeObserver?.disconnect();
510
+ }
511
+ render() {
512
+ return justInTimeEducationTemplate(this);
513
+ }
514
+ };
515
+ NLDDJustInTimeEducation.styles = justInTimeEducationStyles;
516
+ // Attributes the component owns itself; every OTHER attribute set on the host
517
+ // is forwarded to the slotted control so the wrapper stays transparent to
518
+ // parent-driven attributes (e.g. the `size` an nldd-toolbar pushes onto its
519
+ // direct child). Structural attributes (style/class/id/slot/hidden) and the
520
+ // internal data-arrow-side deliberately stay on the host.
521
+ NLDDJustInTimeEducation._ownAttributes = new Set([
522
+ 'active', 'text', 'supporting-text', 'placement', 'dismissable', 'arrow-length', 'no-arrow', 'translations',
523
+ 'data-arrow-side', 'data-arrow-collapsed', 'style', 'class', 'id', 'role', 'slot', 'hidden',
524
+ ]);
525
+ __decorate([
526
+ property({ type: Boolean, reflect: true })
527
+ ], NLDDJustInTimeEducation.prototype, "active", void 0);
528
+ __decorate([
529
+ property({ type: String, reflect: true })
530
+ ], NLDDJustInTimeEducation.prototype, "text", void 0);
531
+ __decorate([
532
+ property({ type: String, reflect: true, attribute: 'supporting-text' })
533
+ ], NLDDJustInTimeEducation.prototype, "supportingText", void 0);
534
+ __decorate([
535
+ property({ type: String, reflect: true })
536
+ ], NLDDJustInTimeEducation.prototype, "placement", void 0);
537
+ __decorate([
538
+ property({ type: Boolean, reflect: true })
539
+ ], NLDDJustInTimeEducation.prototype, "dismissable", void 0);
540
+ __decorate([
541
+ property({ type: String, reflect: true, attribute: 'arrow-length' })
542
+ ], NLDDJustInTimeEducation.prototype, "arrowLength", void 0);
543
+ __decorate([
544
+ property({ type: Boolean, reflect: true, attribute: 'no-arrow' })
545
+ ], NLDDJustInTimeEducation.prototype, "noArrow", void 0);
546
+ NLDDJustInTimeEducation = NLDDJustInTimeEducation_1 = __decorate([
547
+ customElement('nldd-just-in-time-education')
548
+ ], NLDDJustInTimeEducation);
549
+ export { NLDDJustInTimeEducation };
550
+ //# sourceMappingURL=just-in-time-education.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"just-in-time-education.js","sourceRoot":"","sources":["../../../../src/components/status-and-feedback/just-in-time-education/just-in-time-education.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const justInTimeEducationStyles: import("lit").CSSResult;
2
+ //# sourceMappingURL=just-in-time-education.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"just-in-time-education.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB,yBAySrC,CAAC"}