@proximus/lavender-header 2.0.0-alpha.22 → 2.0.0-alpha.220

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/dist/Header.d.ts CHANGED
@@ -8,9 +8,12 @@ import './Link.ts';
8
8
  import type { Dropdown } from '@proximus/lavender-dropdown';
9
9
  import type { Stack } from '@proximus/lavender-layout';
10
10
  import type { ButtonIcon } from '@proximus/lavender-button-icon';
11
+ import type { HeaderEventMap } from './events.ts';
11
12
  export declare class Header extends WithExtraAttributes {
12
13
  #private;
13
14
  internals: ElementInternals;
15
+ /** Narrows listener types for the Header specific custom events. */
16
+ addEventListener: <K extends keyof HeaderEventMap>(type: K, listener: (ev: HeaderEventMap[K]) => unknown, options?: boolean | AddEventListenerOptions) => void;
14
17
  template: string;
15
18
  constructor();
16
19
  connectedCallback(): void;
@@ -19,16 +22,16 @@ export declare class Header extends WithExtraAttributes {
19
22
  get $backdropFilter(): HTMLDivElement;
20
23
  get $burgerMenu(): ButtonIcon;
21
24
  get $slotMain(): HTMLSlotElement;
22
- get $targetGroupDropdown(): Dropdown;
23
- get $userLanguageDropdown(): Dropdown;
25
+ get $targetGroupDropdown(): Dropdown | null;
26
+ get $userLanguageDropdown(): Dropdown | null;
24
27
  get $dropDownZoneDesktop(): Stack;
25
28
  get $primaryNavigation(): Element;
26
- get closeButtonAriaLabel(): string;
27
- set closeButtonAriaLabel(value: string);
28
- get burgerMenuAriaLabel(): string;
29
- set burgerMenuAriaLabel(value: string);
30
- get backToMenuLabel(): string;
31
- set backToMenuLabel(value: string);
32
- get primaryNavigationAriaLabel(): string;
33
- set primaryNavigationAriaLabel(value: string);
29
+ get closeButtonAriaLabel(): string | null;
30
+ set closeButtonAriaLabel(value: string | null);
31
+ get burgerMenuAriaLabel(): string | null;
32
+ set burgerMenuAriaLabel(value: string | null);
33
+ get backToMenuLabel(): string | null;
34
+ set backToMenuLabel(value: string | null);
35
+ get primaryNavigationAriaLabel(): string | null;
36
+ set primaryNavigationAriaLabel(value: string | null);
34
37
  }
@@ -1,6 +1,6 @@
1
1
  import { WithExtraAttributes } from '@proximus/lavender-common';
2
2
  export declare class HeaderItem extends WithExtraAttributes {
3
- private contentObserver;
3
+ #private;
4
4
  internals: ElementInternals;
5
5
  template: () => string;
6
6
  constructor();
@@ -9,11 +9,12 @@ export declare class HeaderItem extends WithExtraAttributes {
9
9
  disconnectedCallback(): void;
10
10
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
11
11
  private setupButtonA11y;
12
- private updateDataLabel;
13
- get for(): string;
14
- set for(value: string);
12
+ get for(): string | null;
13
+ set for(value: string | null);
15
14
  get checked(): boolean;
16
15
  set checked(value: boolean);
17
- get $button(): HTMLButtonElement;
18
- get $a(): HTMLAnchorElement;
16
+ get current(): boolean;
17
+ set current(value: boolean);
18
+ get $button(): HTMLButtonElement | null;
19
+ get $a(): HTMLAnchorElement | null;
19
20
  }
package/dist/Link.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import '@proximus/lavender-link';
2
2
  export declare class MDDLink extends HTMLElement {
3
- template: string;
3
+ protected static readonly template: HTMLTemplateElement;
4
4
  constructor();
5
5
  }
@@ -2,7 +2,10 @@ import type { MegaDropDown } from '@proximus/lavender-mega-dropdown';
2
2
  import '@proximus/lavender-dropdown';
3
3
  export declare class HeaderMobileMenu extends HTMLElement {
4
4
  #private;
5
+ protected static readonly template: HTMLTemplateElement;
5
6
  constructor();
6
7
  connectedCallback(): void;
8
+ /** Builds the menu content from the header items. Runs only once. */
9
+ render(): void;
7
10
  get $megaDropDown(): MegaDropDown;
8
11
  }
@@ -0,0 +1,478 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "src/Header.ts",
8
+ "declarations": [
9
+ {
10
+ "kind": "class",
11
+ "description": "",
12
+ "name": "Header",
13
+ "members": [
14
+ {
15
+ "kind": "field",
16
+ "name": "internals",
17
+ "type": {
18
+ "text": "ElementInternals"
19
+ }
20
+ },
21
+ {
22
+ "kind": "field",
23
+ "name": "addEventListener",
24
+ "type": {
25
+ "text": "<K extends keyof HeaderEventMap>(\n type: K,\n listener: (ev: HeaderEventMap[K]) => unknown,\n options?: boolean | AddEventListenerOptions\n ) => void"
26
+ },
27
+ "description": "Narrows listener types for the Header specific custom events."
28
+ },
29
+ {
30
+ "kind": "field",
31
+ "name": "template",
32
+ "default": "` <div> <header> <slot name=\"skip\"></slot> <px-section id=\"navigation-container\" padding-bottom=\"none\" padding-bottom--mobile=\"s\" padding-bottom--tablet=\"s\" padding-top=\"s\" background-color=\"none\" > <div id=\"dropdown-zone--desktop\"> <slot name=\"target-group\"></slot> <px-spacer></px-spacer> <slot name=\"user-language\"></slot> </div> <px-hstack gap=\"default\" wrap=\"wrap\" id=\"navigation-wrapper\"> <px-hstack align-items=\"center\"> <slot name=\"header-logo\"></slot> </px-hstack> <slot name=\"header-logo\"></slot> <nav id=\"primary-navigation\" aria-label=\"${this.primaryNavigationAriaLabel}\"> <div role=\"list\"> <px-hstack gap=\"default\" wrap=\"wrap\" align-items=\"center\"> <slot name=\"header-entries\"></slot> </px-hstack> </div> </nav> <px-spacer></px-spacer> <px-hstack align-items=\"center\" gap=\"xs\"> <slot name=\"header-actions\"></slot> <px-button-icon id=\"burger-menu\" variant=\"naked\" aria-label=\"${this.burgerMenuAriaLabel ?? 'Open menu'}\" aria-expanded=\"false\" hidden--laptop hidden--desktop > <px-icon name=\"burger_menu\" from=\"lavender\" size=\"m\"></px-icon> </px-button-icon> </px-hstack> </px-hstack> </px-section> <px-section id=\"panel-container\" background-color=\"surface-default\" padding=\"none\" background-color=\"none\"> <slot name=\"header-panels\"> </px-section> </header> <div id=\"backdrop-filter\"></div> <slot name=\"main\"></slot> </div> `"
33
+ },
34
+ {
35
+ "kind": "field",
36
+ "name": "#onResize",
37
+ "privacy": "private"
38
+ },
39
+ {
40
+ "kind": "method",
41
+ "name": "#setMDDDialogOffset",
42
+ "privacy": "private"
43
+ },
44
+ {
45
+ "kind": "method",
46
+ "name": "#togglePanel",
47
+ "privacy": "private",
48
+ "parameters": [
49
+ {
50
+ "name": "id",
51
+ "type": {
52
+ "text": "string"
53
+ }
54
+ }
55
+ ]
56
+ },
57
+ {
58
+ "kind": "method",
59
+ "name": "#showMobileMenu",
60
+ "privacy": "private"
61
+ },
62
+ {
63
+ "kind": "method",
64
+ "name": "#hideMobileMenu",
65
+ "privacy": "private"
66
+ },
67
+ {
68
+ "kind": "method",
69
+ "name": "#hidePanel",
70
+ "privacy": "private"
71
+ },
72
+ {
73
+ "kind": "field",
74
+ "name": "#$mobileMenu",
75
+ "privacy": "private",
76
+ "readonly": true
77
+ },
78
+ {
79
+ "kind": "field",
80
+ "name": "#$navigationItems",
81
+ "privacy": "private",
82
+ "readonly": true
83
+ },
84
+ {
85
+ "kind": "field",
86
+ "name": "#$headerWrapper",
87
+ "privacy": "private",
88
+ "readonly": true
89
+ },
90
+ {
91
+ "kind": "field",
92
+ "name": "#$megaDropdowns",
93
+ "privacy": "private",
94
+ "readonly": true
95
+ },
96
+ {
97
+ "kind": "field",
98
+ "name": "$backdropFilter",
99
+ "readonly": true
100
+ },
101
+ {
102
+ "kind": "field",
103
+ "name": "$burgerMenu",
104
+ "readonly": true
105
+ },
106
+ {
107
+ "kind": "field",
108
+ "name": "$slotMain",
109
+ "readonly": true
110
+ },
111
+ {
112
+ "kind": "field",
113
+ "name": "$targetGroupDropdown",
114
+ "readonly": true
115
+ },
116
+ {
117
+ "kind": "field",
118
+ "name": "$userLanguageDropdown",
119
+ "readonly": true
120
+ },
121
+ {
122
+ "kind": "field",
123
+ "name": "$dropDownZoneDesktop",
124
+ "readonly": true
125
+ },
126
+ {
127
+ "kind": "field",
128
+ "name": "$primaryNavigation",
129
+ "readonly": true
130
+ },
131
+ {
132
+ "kind": "field",
133
+ "name": "closeButtonAriaLabel"
134
+ },
135
+ {
136
+ "kind": "field",
137
+ "name": "burgerMenuAriaLabel"
138
+ },
139
+ {
140
+ "kind": "field",
141
+ "name": "backToMenuLabel"
142
+ },
143
+ {
144
+ "kind": "field",
145
+ "name": "primaryNavigationAriaLabel"
146
+ }
147
+ ],
148
+ "events": [
149
+ {
150
+ "name": "close-panel",
151
+ "type": {
152
+ "text": "CustomEvent"
153
+ }
154
+ }
155
+ ],
156
+ "attributes": [
157
+ {
158
+ "name": "burger-menu-aria-label"
159
+ },
160
+ {
161
+ "name": "close-button-aria-label"
162
+ },
163
+ {
164
+ "name": "primary-navigation-aria-label"
165
+ },
166
+ {
167
+ "name": "back-to-menu-label"
168
+ }
169
+ ],
170
+ "superclass": {
171
+ "name": "WithExtraAttributes",
172
+ "package": "@proximus/lavender-common"
173
+ },
174
+ "tagName": "px-header",
175
+ "customElement": true
176
+ }
177
+ ],
178
+ "exports": [
179
+ {
180
+ "kind": "js",
181
+ "name": "Header",
182
+ "declaration": {
183
+ "name": "Header",
184
+ "module": "src/Header.ts"
185
+ }
186
+ },
187
+ {
188
+ "kind": "custom-element-definition",
189
+ "name": "px-header",
190
+ "declaration": {
191
+ "name": "Header",
192
+ "module": "src/Header.ts"
193
+ }
194
+ }
195
+ ]
196
+ },
197
+ {
198
+ "kind": "javascript-module",
199
+ "path": "src/HeaderItem.ts",
200
+ "declarations": [
201
+ {
202
+ "kind": "class",
203
+ "description": "",
204
+ "name": "HeaderItem",
205
+ "members": [
206
+ {
207
+ "kind": "field",
208
+ "name": "internals",
209
+ "type": {
210
+ "text": "ElementInternals"
211
+ }
212
+ },
213
+ {
214
+ "kind": "field",
215
+ "name": "template"
216
+ },
217
+ {
218
+ "kind": "method",
219
+ "name": "setupButtonA11y",
220
+ "privacy": "private"
221
+ },
222
+ {
223
+ "kind": "field",
224
+ "name": "#updateDataLabel",
225
+ "privacy": "private"
226
+ },
227
+ {
228
+ "kind": "field",
229
+ "name": "#contentObserver",
230
+ "privacy": "private",
231
+ "default": "new MutationObserver(this.#updateDataLabel)"
232
+ },
233
+ {
234
+ "kind": "field",
235
+ "name": "for"
236
+ },
237
+ {
238
+ "kind": "field",
239
+ "name": "checked"
240
+ },
241
+ {
242
+ "kind": "field",
243
+ "name": "current"
244
+ },
245
+ {
246
+ "kind": "field",
247
+ "name": "$button",
248
+ "readonly": true
249
+ },
250
+ {
251
+ "kind": "field",
252
+ "name": "$a",
253
+ "readonly": true
254
+ },
255
+ {
256
+ "kind": "field",
257
+ "name": "adoptedStyleSheets",
258
+ "type": {
259
+ "text": "array"
260
+ },
261
+ "default": "[stylesheet]"
262
+ }
263
+ ],
264
+ "attributes": [
265
+ {
266
+ "name": "for"
267
+ },
268
+ {
269
+ "name": "href"
270
+ },
271
+ {
272
+ "name": "current"
273
+ }
274
+ ],
275
+ "superclass": {
276
+ "name": "WithExtraAttributes",
277
+ "package": "@proximus/lavender-common"
278
+ },
279
+ "tagName": "px-header-item",
280
+ "customElement": true
281
+ }
282
+ ],
283
+ "exports": [
284
+ {
285
+ "kind": "js",
286
+ "name": "HeaderItem",
287
+ "declaration": {
288
+ "name": "HeaderItem",
289
+ "module": "src/HeaderItem.ts"
290
+ }
291
+ },
292
+ {
293
+ "kind": "custom-element-definition",
294
+ "name": "px-header-item",
295
+ "declaration": {
296
+ "name": "HeaderItem",
297
+ "module": "src/HeaderItem.ts"
298
+ }
299
+ }
300
+ ]
301
+ },
302
+ {
303
+ "kind": "javascript-module",
304
+ "path": "src/Link.ts",
305
+ "declarations": [
306
+ {
307
+ "kind": "class",
308
+ "description": "",
309
+ "name": "MDDLink",
310
+ "members": [
311
+ {
312
+ "kind": "field",
313
+ "name": "template",
314
+ "privacy": "protected",
315
+ "static": true,
316
+ "readonly": true
317
+ }
318
+ ],
319
+ "superclass": {
320
+ "name": "HTMLElement"
321
+ },
322
+ "tagName": "px-mdd-a",
323
+ "customElement": true
324
+ }
325
+ ],
326
+ "exports": [
327
+ {
328
+ "kind": "js",
329
+ "name": "MDDLink",
330
+ "declaration": {
331
+ "name": "MDDLink",
332
+ "module": "src/Link.ts"
333
+ }
334
+ },
335
+ {
336
+ "kind": "custom-element-definition",
337
+ "name": "px-mdd-a",
338
+ "declaration": {
339
+ "name": "MDDLink",
340
+ "module": "src/Link.ts"
341
+ }
342
+ }
343
+ ]
344
+ },
345
+ {
346
+ "kind": "javascript-module",
347
+ "path": "src/MobileMenu.ts",
348
+ "declarations": [
349
+ {
350
+ "kind": "class",
351
+ "description": "",
352
+ "name": "HeaderMobileMenu",
353
+ "members": [
354
+ {
355
+ "kind": "field",
356
+ "name": "template",
357
+ "privacy": "protected",
358
+ "static": true,
359
+ "readonly": true
360
+ },
361
+ {
362
+ "kind": "field",
363
+ "name": "#rendered",
364
+ "privacy": "private",
365
+ "type": {
366
+ "text": "boolean"
367
+ },
368
+ "default": "false"
369
+ },
370
+ {
371
+ "kind": "method",
372
+ "name": "render",
373
+ "description": "Builds the menu content from the header items. Runs only once."
374
+ },
375
+ {
376
+ "kind": "method",
377
+ "name": "#createMobileMenuPanelDropDowns",
378
+ "privacy": "private"
379
+ },
380
+ {
381
+ "kind": "field",
382
+ "name": "$megaDropDown",
383
+ "readonly": true
384
+ },
385
+ {
386
+ "kind": "field",
387
+ "name": "adoptedStyleSheets",
388
+ "type": {
389
+ "text": "array"
390
+ },
391
+ "default": "[stylesheet]"
392
+ }
393
+ ],
394
+ "superclass": {
395
+ "name": "HTMLElement"
396
+ },
397
+ "tagName": "px-header-mobile-menu",
398
+ "customElement": true
399
+ }
400
+ ],
401
+ "exports": [
402
+ {
403
+ "kind": "js",
404
+ "name": "HeaderMobileMenu",
405
+ "declaration": {
406
+ "name": "HeaderMobileMenu",
407
+ "module": "src/MobileMenu.ts"
408
+ }
409
+ },
410
+ {
411
+ "kind": "custom-element-definition",
412
+ "name": "px-header-mobile-menu",
413
+ "declaration": {
414
+ "name": "HeaderMobileMenu",
415
+ "module": "src/MobileMenu.ts"
416
+ }
417
+ }
418
+ ]
419
+ },
420
+ {
421
+ "kind": "javascript-module",
422
+ "path": "src/events.ts",
423
+ "declarations": [],
424
+ "exports": []
425
+ },
426
+ {
427
+ "kind": "javascript-module",
428
+ "path": "src/header-item.css",
429
+ "declarations": [],
430
+ "exports": []
431
+ },
432
+ {
433
+ "kind": "javascript-module",
434
+ "path": "src/header.css",
435
+ "declarations": [],
436
+ "exports": []
437
+ },
438
+ {
439
+ "kind": "javascript-module",
440
+ "path": "src/index.ts",
441
+ "declarations": [],
442
+ "exports": [
443
+ {
444
+ "kind": "js",
445
+ "name": "*",
446
+ "declaration": {
447
+ "name": "*",
448
+ "module": "src/Header"
449
+ }
450
+ },
451
+ {
452
+ "kind": "js",
453
+ "name": "*",
454
+ "declaration": {
455
+ "name": "*",
456
+ "module": "src/MobileMenu"
457
+ }
458
+ },
459
+ {
460
+ "kind": "js",
461
+ "name": "*",
462
+ "declaration": {
463
+ "name": "*",
464
+ "module": "src/HeaderItem"
465
+ }
466
+ },
467
+ {
468
+ "kind": "js",
469
+ "name": "*",
470
+ "declaration": {
471
+ "name": "*",
472
+ "module": "src/events"
473
+ }
474
+ }
475
+ ]
476
+ }
477
+ ]
478
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Custom events handled by the Header, on top of the standard DOM events.
3
+ * Declared locally (instead of augmenting the global `HTMLElementEventMap`)
4
+ * so these event names are only typed on the elements that actually use them.
5
+ */
6
+ export interface HeaderEventMap extends HTMLElementEventMap {
7
+ 'close-panel-from-dialog': CustomEvent<{
8
+ clientX: number;
9
+ clientY: number;
10
+ }>;
11
+ 'section-item-click': CustomEvent<{
12
+ for: string;
13
+ }>;
14
+ 'back-to-mobile-menu': CustomEvent;
15
+ 'close-panel': CustomEvent;
16
+ }
package/dist/index.d.ts CHANGED
@@ -3,3 +3,4 @@ import '@proximus/lavender-cell';
3
3
  export * from './Header';
4
4
  export * from './MobileMenu';
5
5
  export * from './HeaderItem';
6
+ export type * from './events';