@daffodil/design 0.91.0 → 0.92.3-rc.1

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/accordion/README.md +26 -38
  2. package/accordion/index.d.ts +2 -2
  3. package/article/README.md +66 -46
  4. package/article/index.d.ts +22 -1
  5. package/article/src/article-theme.scss +12 -0
  6. package/breadcrumb/README.md +6 -1
  7. package/breadcrumb/index.d.ts +65 -11
  8. package/breadcrumb/src/breadcrumb-theme.scss +1 -1
  9. package/button/README.md +36 -33
  10. package/button/index.d.ts +26 -5
  11. package/button/src/button/basic/button-theme.scss +4 -2
  12. package/button/src/button/button-base.scss +26 -3
  13. package/button/src/button/icon/icon-theme.scss +10 -6
  14. package/button/src/button/raised/raised-theme.scss +4 -2
  15. package/callout/README.md +15 -27
  16. package/card/README.md +36 -61
  17. package/container/README.md +18 -23
  18. package/fesm2022/daffodil-design-accordion.mjs +13 -13
  19. package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
  20. package/fesm2022/daffodil-design-article.mjs +168 -26
  21. package/fesm2022/daffodil-design-article.mjs.map +1 -1
  22. package/fesm2022/daffodil-design-breadcrumb.mjs +180 -28
  23. package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
  24. package/fesm2022/daffodil-design-button.mjs +83 -42
  25. package/fesm2022/daffodil-design-button.mjs.map +1 -1
  26. package/fesm2022/daffodil-design-callout.mjs +23 -23
  27. package/fesm2022/daffodil-design-callout.mjs.map +1 -1
  28. package/fesm2022/daffodil-design-card.mjs +33 -33
  29. package/fesm2022/daffodil-design-card.mjs.map +1 -1
  30. package/fesm2022/daffodil-design-checkbox.mjs +13 -13
  31. package/fesm2022/daffodil-design-checkbox.mjs.map +1 -1
  32. package/fesm2022/daffodil-design-container.mjs +8 -8
  33. package/fesm2022/daffodil-design-container.mjs.map +1 -1
  34. package/fesm2022/daffodil-design-form-field.mjs +26 -26
  35. package/fesm2022/daffodil-design-form-field.mjs.map +1 -1
  36. package/fesm2022/daffodil-design-form.mjs +9 -9
  37. package/fesm2022/daffodil-design-form.mjs.map +1 -1
  38. package/fesm2022/daffodil-design-hero.mjs +23 -23
  39. package/fesm2022/daffodil-design-hero.mjs.map +1 -1
  40. package/fesm2022/daffodil-design-image.mjs +8 -8
  41. package/fesm2022/daffodil-design-image.mjs.map +1 -1
  42. package/fesm2022/daffodil-design-input.mjs +18 -14
  43. package/fesm2022/daffodil-design-input.mjs.map +1 -1
  44. package/fesm2022/daffodil-design-link-set.mjs +25 -17
  45. package/fesm2022/daffodil-design-link-set.mjs.map +1 -1
  46. package/fesm2022/daffodil-design-list.mjs +16 -16
  47. package/fesm2022/daffodil-design-list.mjs.map +1 -1
  48. package/fesm2022/daffodil-design-loading-icon.mjs +8 -8
  49. package/fesm2022/daffodil-design-loading-icon.mjs.map +1 -1
  50. package/fesm2022/daffodil-design-media-gallery.mjs +13 -13
  51. package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
  52. package/fesm2022/daffodil-design-menu.mjs +223 -60
  53. package/fesm2022/daffodil-design-menu.mjs.map +1 -1
  54. package/fesm2022/daffodil-design-modal.mjs +33 -29
  55. package/fesm2022/daffodil-design-modal.mjs.map +1 -1
  56. package/fesm2022/daffodil-design-native-select.mjs +47 -41
  57. package/fesm2022/daffodil-design-native-select.mjs.map +1 -1
  58. package/fesm2022/daffodil-design-navbar.mjs +25 -21
  59. package/fesm2022/daffodil-design-navbar.mjs.map +1 -1
  60. package/fesm2022/daffodil-design-notification.mjs +16 -16
  61. package/fesm2022/daffodil-design-notification.mjs.map +1 -1
  62. package/fesm2022/daffodil-design-paginator.mjs +7 -7
  63. package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
  64. package/fesm2022/daffodil-design-progress-bar.mjs +10 -10
  65. package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
  66. package/fesm2022/daffodil-design-quantity-field.mjs +17 -14
  67. package/fesm2022/daffodil-design-quantity-field.mjs.map +1 -1
  68. package/fesm2022/daffodil-design-radio.mjs +16 -16
  69. package/fesm2022/daffodil-design-radio.mjs.map +1 -1
  70. package/fesm2022/daffodil-design-select.mjs +6 -6
  71. package/fesm2022/daffodil-design-select.mjs.map +1 -1
  72. package/fesm2022/daffodil-design-sidebar.mjs +25 -25
  73. package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
  74. package/fesm2022/daffodil-design-spinner.mjs +99 -0
  75. package/fesm2022/daffodil-design-spinner.mjs.map +1 -0
  76. package/fesm2022/daffodil-design-switch.mjs +3 -3
  77. package/fesm2022/daffodil-design-switch.mjs.map +1 -1
  78. package/fesm2022/daffodil-design-tabs.mjs +15 -15
  79. package/fesm2022/daffodil-design-tabs.mjs.map +1 -1
  80. package/fesm2022/daffodil-design-tag.mjs +7 -7
  81. package/fesm2022/daffodil-design-tag.mjs.map +1 -1
  82. package/fesm2022/daffodil-design-text-snippet.mjs +6 -8
  83. package/fesm2022/daffodil-design-text-snippet.mjs.map +1 -1
  84. package/fesm2022/daffodil-design-textarea.mjs +6 -3
  85. package/fesm2022/daffodil-design-textarea.mjs.map +1 -1
  86. package/fesm2022/daffodil-design-toast.mjs +23 -25
  87. package/fesm2022/daffodil-design-toast.mjs.map +1 -1
  88. package/fesm2022/daffodil-design-tree.mjs +152 -103
  89. package/fesm2022/daffodil-design-tree.mjs.map +1 -1
  90. package/fesm2022/daffodil-design-youtube-player.mjs +6 -6
  91. package/fesm2022/daffodil-design-youtube-player.mjs.map +1 -1
  92. package/fesm2022/daffodil-design.mjs +385 -326
  93. package/fesm2022/daffodil-design.mjs.map +1 -1
  94. package/form-field/README.md +50 -85
  95. package/form-field/index.d.ts +11 -9
  96. package/hero/README.md +5 -5
  97. package/image/README.md +2 -2
  98. package/index.d.ts +184 -270
  99. package/input/README.md +4 -4
  100. package/input/index.d.ts +4 -3
  101. package/link-set/index.d.ts +9 -1
  102. package/list/README.md +2 -2
  103. package/loading-icon/README.md +1 -1
  104. package/loading-icon/index.d.ts +1 -1
  105. package/media-gallery/README.md +3 -3
  106. package/menu/README.md +107 -10
  107. package/menu/index.d.ts +143 -11
  108. package/modal/README.md +1 -1
  109. package/modal/index.d.ts +23 -15
  110. package/native-select/README.md +4 -4
  111. package/native-select/index.d.ts +8 -7
  112. package/navbar/README.md +23 -17
  113. package/navbar/index.d.ts +12 -2
  114. package/navbar/src/navbar-theme.scss +4 -46
  115. package/notification/README.md +4 -4
  116. package/package.json +1 -1
  117. package/paginator/README.md +42 -6
  118. package/paginator/index.d.ts +4 -2
  119. package/progress-bar/README.md +3 -3
  120. package/quantity-field/README.md +4 -4
  121. package/quantity-field/index.d.ts +4 -1
  122. package/radio/README.md +1 -1
  123. package/scss/theme.scss +7 -1
  124. package/scss/theming/_color-palettes.scss +0 -6
  125. package/select/README.md +4 -4
  126. package/sidebar/README.md +6 -6
  127. package/spinner/README.md +57 -0
  128. package/spinner/index.d.ts +53 -0
  129. package/spinner/src/spinner-theme.scss +62 -0
  130. package/switch/README.md +4 -4
  131. package/switch/index.d.ts +2 -2
  132. package/tabs/README.md +1 -1
  133. package/tabs/index.d.ts +2 -2
  134. package/tag/README.md +24 -30
  135. package/tag/index.d.ts +1 -1
  136. package/text-snippet/README.md +1 -1
  137. package/text-snippet/src/text-snippet-theme.scss +12 -0
  138. package/textarea/README.md +4 -4
  139. package/textarea/index.d.ts +4 -4
  140. package/toast/README.md +4 -4
  141. package/tree/README.md +39 -22
  142. package/tree/index.d.ts +57 -90
@@ -1,8 +1,12 @@
1
+ import * as i1$1 from '@angular/cdk/layout';
2
+ import { NgTemplateOutlet } from '@angular/common';
1
3
  import * as i0 from '@angular/core';
2
- import { Directive, ContentChildren, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
4
+ import { TemplateRef, ViewChild, ChangeDetectionStrategy, Component, Directive, signal, contentChildren, computed, ContentChildren, ViewEncapsulation, NgModule } from '@angular/core';
3
5
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import * as i1 from '@daffodil/design';
5
- import { DaffArticleEncapsulatedDirective, DaffSkeletonableDirective } from '@daffodil/design';
6
+ import * as i2 from '@daffodil/design';
7
+ import { DaffBreakpoints, DaffArticleEncapsulatedDirective, DaffSkeletonableDirective } from '@daffodil/design';
8
+ import * as i1 from '@daffodil/design/menu';
9
+ import { provideDaffMenuItemToken, DaffMenuService, DAFF_MENU_COMPONENTS } from '@daffodil/design/menu';
6
10
 
7
11
  /* eslint-disable quote-props */
8
12
  /**
@@ -15,9 +19,12 @@ import { DaffArticleEncapsulatedDirective, DaffSkeletonableDirective } from '@da
15
19
  * </li>
16
20
  * ```
17
21
  */
18
- class DaffBreadcrumbItemDirective {
22
+ class DaffBreadcrumbItemComponent {
19
23
  constructor(cdRef) {
20
24
  this.cdRef = cdRef;
25
+ /**
26
+ * @docs-private
27
+ */
21
28
  this._active = false;
22
29
  }
23
30
  /** Called by the DaffBreadcrumbComponent to set the active state */
@@ -25,20 +32,99 @@ class DaffBreadcrumbItemDirective {
25
32
  this._active = value;
26
33
  this.cdRef.detectChanges();
27
34
  }
28
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffBreadcrumbItemDirective, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
29
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.1", type: DaffBreadcrumbItemDirective, isStandalone: true, selector: "li[daffBreadcrumbItem]", host: { properties: { "class.active": "_active", "attr.aria-current": "_active ? \"page\" : null" }, classAttribute: "daff-breadcrumb__item" }, ngImport: i0 }); }
35
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: DaffBreadcrumbItemComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
36
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: DaffBreadcrumbItemComponent, isStandalone: true, selector: "li[daffBreadcrumbItem]", host: { properties: { "attr.aria-current": "_active ? \"page\" : null" }, classAttribute: "daff-breadcrumb__item" }, viewQueries: [{ propertyName: "itemRef", first: true, predicate: ["item"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
37
+ <ng-template #item>
38
+ <ng-content></ng-content>
39
+ </ng-template>
40
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
41
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffBreadcrumbItemDirective, decorators: [{
32
- type: Directive,
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: DaffBreadcrumbItemComponent, decorators: [{
43
+ type: Component,
33
44
  args: [{
45
+ // eslint-disable-next-line @angular-eslint/component-selector
34
46
  selector: 'li[daffBreadcrumbItem]',
47
+ template: `
48
+ <ng-template #item>
49
+ <ng-content></ng-content>
50
+ </ng-template>
51
+ `,
52
+ changeDetection: ChangeDetectionStrategy.OnPush,
35
53
  host: {
36
54
  'class': 'daff-breadcrumb__item',
37
- '[class.active]': '_active',
38
55
  '[attr.aria-current]': '_active ? "page" : null',
39
56
  },
40
57
  }]
41
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
58
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { itemRef: [{
59
+ type: ViewChild,
60
+ args: ['item', { read: TemplateRef, static: true }]
61
+ }] } });
62
+
63
+ /**
64
+ * @docs-private
65
+ *
66
+ * Applied to an `ng-container` that projects breadcrumb item templates into `daff-menu`,
67
+ * allowing breadcrumb items to take on `daff-menu-item` styling and behavior.
68
+ */
69
+ class DaffBreadcrumbMenuItemDirective {
70
+ constructor(_viewContainerRef, _menuService) {
71
+ this._viewContainerRef = _viewContainerRef;
72
+ this._menuService = _menuService;
73
+ this._focusableElement = null;
74
+ this._clickHandler = () => this._menuService.close();
75
+ }
76
+ /**
77
+ * @docs-private
78
+ */
79
+ ngAfterViewInit() {
80
+ this._focusableElement = this._findFocusableElement();
81
+ this._focusableElement?.classList.add('daff-menu-item'); // For styling
82
+ this._focusableElement?.addEventListener('click', this._clickHandler);
83
+ }
84
+ focus() {
85
+ this._focusableElement?.focus(); // Allows `FocusKeyManager` to focus on the element
86
+ }
87
+ _findFocusableElement() {
88
+ const view = this._viewContainerRef.get(0);
89
+ return view?.rootNodes.find((n) => n.nodeType === Node.ELEMENT_NODE) ?? null;
90
+ }
91
+ ngOnDestroy() {
92
+ this._focusableElement?.removeEventListener('click', this._clickHandler);
93
+ this._focusableElement?.classList.remove('daff-menu-item');
94
+ }
95
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: DaffBreadcrumbMenuItemDirective, deps: [{ token: i0.ViewContainerRef }, { token: i1.DaffMenuService }], target: i0.ɵɵFactoryTarget.Directive }); }
96
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.18", type: DaffBreadcrumbMenuItemDirective, isStandalone: true, selector: "[daffBreadcrumbMenuItem]", providers: [provideDaffMenuItemToken(DaffBreadcrumbMenuItemDirective)], ngImport: i0 }); }
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: DaffBreadcrumbMenuItemDirective, decorators: [{
99
+ type: Directive,
100
+ args: [{
101
+ selector: '[daffBreadcrumbMenuItem]',
102
+ providers: [provideDaffMenuItemToken(DaffBreadcrumbMenuItemDirective)],
103
+ }]
104
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i1.DaffMenuService }] });
105
+
106
+ /**
107
+ * Determines whether a breadcrumb item should be rendered in the breadcrumb trail.
108
+ * Returns a {@link DaffBreadcrumbRender} when the item should be visible,
109
+ * or `null` when the item should be collapsed into a menu.
110
+ *
111
+ * When there are fewer than 5 items, all items are rendered.
112
+ * Otherwise, only the first 2 and last 2 items are rendered.
113
+ */
114
+ const toRenderType = (item, length, index) => {
115
+ if (length < 5) {
116
+ return { item, type: 'breadcrumb' };
117
+ }
118
+ switch (index) {
119
+ case 0:
120
+ case 1:
121
+ case length - 1:
122
+ case length - 2:
123
+ return { item, type: 'breadcrumb' };
124
+ default:
125
+ return null;
126
+ }
127
+ };
42
128
 
43
129
  /* eslint-disable quote-props */
44
130
  /**
@@ -57,8 +143,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
57
143
  * ```
58
144
  */
59
145
  class DaffBreadcrumbComponent {
60
- constructor(destroyRef) {
146
+ constructor(destroyRef, breakpointObserver) {
61
147
  this.destroyRef = destroyRef;
148
+ this.breakpointObserver = breakpointObserver;
149
+ /**
150
+ * @docs-private
151
+ */
152
+ this._isMobile = signal(false, ...(ngDevMode ? [{ debugName: "_isMobile" }] : []));
153
+ /**
154
+ * @docs-private
155
+ */
156
+ this._breadcrumbItems = contentChildren(DaffBreadcrumbItemComponent, ...(ngDevMode ? [{ debugName: "_breadcrumbItems" }] : []));
157
+ /**
158
+ * @docs-private
159
+ */
160
+ this._partition = computed(() => {
161
+ this._isMobile(); // signal rerenders breadcrumb on viewport change
162
+ const items = this._breadcrumbItems();
163
+ const visible = [];
164
+ const menu = [];
165
+ for (let index = 0; index < items.length; index++) {
166
+ const item = items[index];
167
+ const res = toRenderType(item, items.length, index);
168
+ if (res) {
169
+ if (index === 0) {
170
+ visible.push({ type: 'menu', target: 'mobileMenu' });
171
+ }
172
+ visible.push(res);
173
+ }
174
+ else {
175
+ if (menu.length === 0) {
176
+ visible.push({ type: 'menu', target: 'desktopMenu' });
177
+ }
178
+ menu.push(item);
179
+ }
180
+ }
181
+ return { visible, menu };
182
+ }, ...(ngDevMode ? [{ debugName: "_partition" }] : []));
183
+ /**
184
+ * @docs-private
185
+ */
186
+ this._computedBreadcrumbItems = computed(() => this._partition().visible, ...(ngDevMode ? [{ debugName: "_computedBreadcrumbItems" }] : []));
187
+ /**
188
+ * @docs-private
189
+ */
190
+ this._desktopMenuItems = computed(() => this._partition().menu, ...(ngDevMode ? [{ debugName: "_desktopMenuItems" }] : []));
191
+ /**
192
+ * @docs-private
193
+ */
194
+ this._mobileMenuItems = computed(() => {
195
+ const items = this._breadcrumbItems();
196
+ return items.slice(0, items.length - 1);
197
+ }, ...(ngDevMode ? [{ debugName: "_mobileMenuItems" }] : []));
62
198
  }
63
199
  /**
64
200
  * @docs-private
@@ -68,6 +204,12 @@ class DaffBreadcrumbComponent {
68
204
  this.breadcrumbItems.changes
69
205
  .pipe(takeUntilDestroyed(this.destroyRef))
70
206
  .subscribe(() => this.updateActiveState());
207
+ this.breakpointObserver
208
+ .observe([DaffBreakpoints.MOBILE])
209
+ .pipe(takeUntilDestroyed(this.destroyRef))
210
+ .subscribe(result => {
211
+ this._isMobile.set(!result.matches);
212
+ });
71
213
  }
72
214
  updateActiveState() {
73
215
  if (!this.breadcrumbItems.length) {
@@ -76,10 +218,10 @@ class DaffBreadcrumbComponent {
76
218
  this.breadcrumbItems.forEach(item => item.setActive(false));
77
219
  this.breadcrumbItems.last.setActive(true);
78
220
  }
79
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffBreadcrumbComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
80
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.1", type: DaffBreadcrumbComponent, isStandalone: true, selector: "ol[daff-breadcrumb]", host: { classAttribute: "daff-breadcrumb" }, queries: [{ propertyName: "breadcrumbItems", predicate: DaffBreadcrumbItemDirective }], hostDirectives: [{ directive: i1.DaffArticleEncapsulatedDirective }, { directive: i1.DaffSkeletonableDirective, inputs: ["skeleton", "skeleton"] }], ngImport: i0, template: "<ng-content select=\"[daffBreadcrumbItem]\"></ng-content>", styles: [".daff-breadcrumb{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.daff-breadcrumb__item{font-size:1rem}.daff-breadcrumb__item a{text-decoration:none}.daff-breadcrumb__item a:hover{text-decoration:underline}.daff-breadcrumb__item.active{font-weight:500}.daff-breadcrumb__item:not(:last-child):after{content:\"/\";color:currentColor;font-weight:400;margin:0 .5rem}.daff-breadcrumb.daff-skeleton{max-width:290px;display:flex;position:relative;height:1.5rem;width:100%;border-radius:0}.daff-breadcrumb.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:1.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-breadcrumb.daff-skeleton .daff-breadcrumb__item{visibility:hidden}.daff-breadcrumb.daff-skeleton .daff-breadcrumb__item:before{content:unset}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
221
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: DaffBreadcrumbComponent, deps: [{ token: i0.DestroyRef }, { token: i1$1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
222
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: DaffBreadcrumbComponent, isStandalone: true, selector: "ol[daff-breadcrumb]", host: { classAttribute: "daff-breadcrumb" }, providers: [DaffMenuService], queries: [{ propertyName: "_breadcrumbItems", predicate: DaffBreadcrumbItemComponent, isSignal: true }, { propertyName: "breadcrumbItems", predicate: DaffBreadcrumbItemComponent }], viewQueries: [{ propertyName: "fullMenu", first: true, predicate: ["mobileMenu"], descendants: true, static: true }, { propertyName: "partialMenu", first: true, predicate: ["desktopMenu"], descendants: true, static: true }], hostDirectives: [{ directive: i2.DaffArticleEncapsulatedDirective }, { directive: i2.DaffSkeletonableDirective, inputs: ["skeleton", "skeleton"] }], ngImport: i0, template: "@for (breadcrumbItem of _computedBreadcrumbItems(); track breadcrumbItem) {\n\t@if (breadcrumbItem.type === 'breadcrumb') {\n\t\t<li class=\"daff-breadcrumb__item\"\n\t\t\t[class.active]=\"breadcrumbItem.item._active\">\n\t\t\t<ng-container *ngTemplateOutlet=\"breadcrumbItem.item.itemRef\"></ng-container>\n\t\t</li>\n\t} @else {\n\t\t<li class=\"daff-breadcrumb__item\"\n\t\t\t[class.on-mobile]=\"breadcrumbItem.target === 'mobileMenu'\"\n\t\t\t[class.on-desktop]=\"breadcrumbItem.target === 'desktopMenu'\">\n\t\t\t<button class=\"daff-breadcrumb__menu-activator\"\n\t\t\t\t[daffMenuActivator]=\"breadcrumbItem.target === 'mobileMenu' ? mobileMenu : desktopMenu\"\n\t\t\t\taria-label=\"Show more breadcrumb items\">...</button>\n\t\t</li>\n\t}\n}\n\n<ng-template #mobileMenu>\n\t<daff-menu>\n\t\t@for (breadcrumbItem of _mobileMenuItems(); track breadcrumbItem) {\n\t\t\t<ng-container daffBreadcrumbMenuItem [ngTemplateOutlet]=\"breadcrumbItem.itemRef\"></ng-container>\n\t\t}\n\t</daff-menu>\t\n</ng-template>\n\n<ng-template #desktopMenu>\n\t<daff-menu>\n\t\t@for (breadcrumbItem of _desktopMenuItems(); track breadcrumbItem) {\n\t\t\t<ng-container daffBreadcrumbMenuItem [ngTemplateOutlet]=\"breadcrumbItem.itemRef\"></ng-container>\n\t\t}\n\t</daff-menu>\t\n</ng-template>", styles: [".daff-breadcrumb{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.daff-breadcrumb__item{font-size:1rem}.daff-breadcrumb__item a{text-decoration:none}.daff-breadcrumb__item a:hover{text-decoration:underline}.daff-breadcrumb__item.active{font-weight:500}.daff-breadcrumb__item:not(:last-child):after{content:\"/\";color:currentColor;font-weight:400;margin:0 .5rem}.daff-breadcrumb__item.on-mobile{display:inline-block}@media(min-width:480px){.daff-breadcrumb__item.on-mobile{display:none}}.daff-breadcrumb__item.on-desktop{display:none}@media(min-width:480px){.daff-breadcrumb__item.on-desktop{display:inline-block}}.daff-breadcrumb__item:nth-child(2),.daff-breadcrumb__item:nth-child(3),.daff-breadcrumb__item:nth-last-child(2){display:none}@media(min-width:480px){.daff-breadcrumb__item:nth-child(2),.daff-breadcrumb__item:nth-child(3),.daff-breadcrumb__item:nth-last-child(2){display:inline-block}}.daff-breadcrumb__menu-activator{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;appearance:none;background:none;border:none;margin:0;padding:0}.daff-breadcrumb.daff-skeleton{max-width:290px;display:flex;position:relative;height:1.5rem;width:100%;border-radius:0}.daff-breadcrumb.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:1.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-breadcrumb.daff-skeleton .daff-breadcrumb__item{visibility:hidden}.daff-breadcrumb.daff-skeleton .daff-breadcrumb__item:after{content:unset}\n"], dependencies: [{ kind: "component", type: i1.DaffMenuComponent, selector: "daff-menu" }, { kind: "directive", type: i1.DaffMenuActivatorDirective, selector: "[daffMenuActivator]", inputs: ["daffMenuActivator", "id"], exportAs: ["daffMenuActivator"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: DaffBreadcrumbMenuItemDirective, selector: "[daffBreadcrumbMenuItem]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
81
223
  }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffBreadcrumbComponent, decorators: [{
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: DaffBreadcrumbComponent, decorators: [{
83
225
  type: Component,
84
226
  args: [{ selector: 'ol[daff-breadcrumb]', hostDirectives: [
85
227
  { directive: DaffArticleEncapsulatedDirective },
@@ -89,40 +231,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
89
231
  },
90
232
  ], host: {
91
233
  'class': 'daff-breadcrumb',
92
- }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-content select=\"[daffBreadcrumbItem]\"></ng-content>", styles: [".daff-breadcrumb{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.daff-breadcrumb__item{font-size:1rem}.daff-breadcrumb__item a{text-decoration:none}.daff-breadcrumb__item a:hover{text-decoration:underline}.daff-breadcrumb__item.active{font-weight:500}.daff-breadcrumb__item:not(:last-child):after{content:\"/\";color:currentColor;font-weight:400;margin:0 .5rem}.daff-breadcrumb.daff-skeleton{max-width:290px;display:flex;position:relative;height:1.5rem;width:100%;border-radius:0}.daff-breadcrumb.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:1.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-breadcrumb.daff-skeleton .daff-breadcrumb__item{visibility:hidden}.daff-breadcrumb.daff-skeleton .daff-breadcrumb__item:before{content:unset}\n"] }]
93
- }], ctorParameters: () => [{ type: i0.DestroyRef }], propDecorators: { breadcrumbItems: [{
234
+ }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
235
+ DAFF_MENU_COMPONENTS,
236
+ NgTemplateOutlet,
237
+ DaffBreadcrumbMenuItemDirective,
238
+ ], providers: [DaffMenuService], template: "@for (breadcrumbItem of _computedBreadcrumbItems(); track breadcrumbItem) {\n\t@if (breadcrumbItem.type === 'breadcrumb') {\n\t\t<li class=\"daff-breadcrumb__item\"\n\t\t\t[class.active]=\"breadcrumbItem.item._active\">\n\t\t\t<ng-container *ngTemplateOutlet=\"breadcrumbItem.item.itemRef\"></ng-container>\n\t\t</li>\n\t} @else {\n\t\t<li class=\"daff-breadcrumb__item\"\n\t\t\t[class.on-mobile]=\"breadcrumbItem.target === 'mobileMenu'\"\n\t\t\t[class.on-desktop]=\"breadcrumbItem.target === 'desktopMenu'\">\n\t\t\t<button class=\"daff-breadcrumb__menu-activator\"\n\t\t\t\t[daffMenuActivator]=\"breadcrumbItem.target === 'mobileMenu' ? mobileMenu : desktopMenu\"\n\t\t\t\taria-label=\"Show more breadcrumb items\">...</button>\n\t\t</li>\n\t}\n}\n\n<ng-template #mobileMenu>\n\t<daff-menu>\n\t\t@for (breadcrumbItem of _mobileMenuItems(); track breadcrumbItem) {\n\t\t\t<ng-container daffBreadcrumbMenuItem [ngTemplateOutlet]=\"breadcrumbItem.itemRef\"></ng-container>\n\t\t}\n\t</daff-menu>\t\n</ng-template>\n\n<ng-template #desktopMenu>\n\t<daff-menu>\n\t\t@for (breadcrumbItem of _desktopMenuItems(); track breadcrumbItem) {\n\t\t\t<ng-container daffBreadcrumbMenuItem [ngTemplateOutlet]=\"breadcrumbItem.itemRef\"></ng-container>\n\t\t}\n\t</daff-menu>\t\n</ng-template>", styles: [".daff-breadcrumb{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.daff-breadcrumb__item{font-size:1rem}.daff-breadcrumb__item a{text-decoration:none}.daff-breadcrumb__item a:hover{text-decoration:underline}.daff-breadcrumb__item.active{font-weight:500}.daff-breadcrumb__item:not(:last-child):after{content:\"/\";color:currentColor;font-weight:400;margin:0 .5rem}.daff-breadcrumb__item.on-mobile{display:inline-block}@media(min-width:480px){.daff-breadcrumb__item.on-mobile{display:none}}.daff-breadcrumb__item.on-desktop{display:none}@media(min-width:480px){.daff-breadcrumb__item.on-desktop{display:inline-block}}.daff-breadcrumb__item:nth-child(2),.daff-breadcrumb__item:nth-child(3),.daff-breadcrumb__item:nth-last-child(2){display:none}@media(min-width:480px){.daff-breadcrumb__item:nth-child(2),.daff-breadcrumb__item:nth-child(3),.daff-breadcrumb__item:nth-last-child(2){display:inline-block}}.daff-breadcrumb__menu-activator{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;appearance:none;background:none;border:none;margin:0;padding:0}.daff-breadcrumb.daff-skeleton{max-width:290px;display:flex;position:relative;height:1.5rem;width:100%;border-radius:0}.daff-breadcrumb.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:1.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-breadcrumb.daff-skeleton .daff-breadcrumb__item{visibility:hidden}.daff-breadcrumb.daff-skeleton .daff-breadcrumb__item:after{content:unset}\n"] }]
239
+ }], ctorParameters: () => [{ type: i0.DestroyRef }, { type: i1$1.BreakpointObserver }], propDecorators: { breadcrumbItems: [{
94
240
  type: ContentChildren,
95
- args: [DaffBreadcrumbItemDirective]
96
- }] } });
241
+ args: [DaffBreadcrumbItemComponent]
242
+ }], fullMenu: [{
243
+ type: ViewChild,
244
+ args: ['mobileMenu', { static: true }]
245
+ }], partialMenu: [{
246
+ type: ViewChild,
247
+ args: ['desktopMenu', { static: true }]
248
+ }], _breadcrumbItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DaffBreadcrumbItemComponent), { isSignal: true }] }] } });
97
249
 
98
250
  /**
99
251
  * @docs-private
100
252
  */
101
253
  const DAFF_BREADCRUMB_COMPONENTS = [
102
254
  DaffBreadcrumbComponent,
103
- DaffBreadcrumbItemDirective,
255
+ DaffBreadcrumbItemComponent,
104
256
  ];
105
257
 
106
258
  /**
107
259
  * @deprecated in favor of {@link DAFF_BREADCRUMB_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.
108
260
  */
109
261
  class DaffBreadcrumbModule {
110
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffBreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
111
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.1", ngImport: i0, type: DaffBreadcrumbModule, imports: [DaffBreadcrumbComponent,
112
- DaffBreadcrumbItemDirective], exports: [DaffBreadcrumbComponent,
113
- DaffBreadcrumbItemDirective] }); }
114
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffBreadcrumbModule }); }
262
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: DaffBreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
263
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.18", ngImport: i0, type: DaffBreadcrumbModule, imports: [DaffBreadcrumbComponent,
264
+ DaffBreadcrumbItemComponent], exports: [DaffBreadcrumbComponent,
265
+ DaffBreadcrumbItemComponent] }); }
266
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: DaffBreadcrumbModule, imports: [DaffBreadcrumbComponent] }); }
115
267
  }
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffBreadcrumbModule, decorators: [{
268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: DaffBreadcrumbModule, decorators: [{
117
269
  type: NgModule,
118
270
  args: [{
119
271
  imports: [
120
272
  DaffBreadcrumbComponent,
121
- DaffBreadcrumbItemDirective,
273
+ DaffBreadcrumbItemComponent,
122
274
  ],
123
275
  exports: [
124
276
  DaffBreadcrumbComponent,
125
- DaffBreadcrumbItemDirective,
277
+ DaffBreadcrumbItemComponent,
126
278
  ],
127
279
  }]
128
280
  }] });
@@ -131,5 +283,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
131
283
  * Generated bundle index. Do not edit.
132
284
  */
133
285
 
134
- export { DAFF_BREADCRUMB_COMPONENTS, DaffBreadcrumbComponent, DaffBreadcrumbItemDirective, DaffBreadcrumbModule };
286
+ export { DAFF_BREADCRUMB_COMPONENTS, DaffBreadcrumbComponent, DaffBreadcrumbItemComponent, DaffBreadcrumbModule };
135
287
  //# sourceMappingURL=daffodil-design-breadcrumb.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-design-breadcrumb.mjs","sources":["../../../libs/design/breadcrumb/src/breadcrumb-item/breadcrumb-item.directive.ts","../../../libs/design/breadcrumb/src/breadcrumb/breadcrumb.component.ts","../../../libs/design/breadcrumb/src/breadcrumb/breadcrumb.component.html","../../../libs/design/breadcrumb/src/breadcrumb.ts","../../../libs/design/breadcrumb/src/breadcrumb.module.ts","../../../libs/design/breadcrumb/src/daffodil-design-breadcrumb.ts"],"sourcesContent":["/* eslint-disable quote-props */\nimport {\n ChangeDetectorRef,\n Directive,\n} from '@angular/core';\n\n/**\n * Represents each individual breadcrumb item. Must be used on a `<li>` element.\n *\n * @example\n * ```html\n * <li daffBreadcrumbItem>\n * <a routerLink=\"/\">Link</a>\n * </li>\n * ```\n */\n@Directive({\n selector: 'li[daffBreadcrumbItem]',\n host: {\n 'class': 'daff-breadcrumb__item',\n '[class.active]': '_active',\n '[attr.aria-current]': '_active ? \"page\" : null',\n },\n})\nexport class DaffBreadcrumbItemDirective {\n private _active = false;\n\n constructor( private cdRef: ChangeDetectorRef ) {}\n\n /** Called by the DaffBreadcrumbComponent to set the active state */\n setActive(value: boolean) {\n this._active = value;\n\n this.cdRef.detectChanges();\n }\n}\n","/* eslint-disable quote-props */\nimport {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ContentChildren,\n QueryList,\n AfterContentInit,\n DestroyRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport {\n DaffArticleEncapsulatedDirective,\n DaffSkeletonableDirective,\n} from '@daffodil/design';\n\n\nimport { DaffBreadcrumbItemDirective } from '../breadcrumb-item/breadcrumb-item.directive';\n\n/**\n * Groups breadcrumb items. Must be applied to a native `<ol>` element.\n *\n * @example\n * ```html\n * <ol daff-breadcrumb>\n * <li daffBreadcrumbItem>\n * <a routerLink=\"/\">Home</a>\n * </li>\n * <li daffBreacrumbItem>\n * <span>Current page</span>\n * </li>\n * </ol>\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ol[daff-breadcrumb]',\n templateUrl: './breadcrumb.component.html',\n styleUrl: './breadcrumb.component.scss',\n hostDirectives: [\n { directive: DaffArticleEncapsulatedDirective },\n {\n directive: DaffSkeletonableDirective,\n inputs: ['skeleton'],\n },\n ],\n host: {\n 'class': 'daff-breadcrumb',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\n\nexport class DaffBreadcrumbComponent implements AfterContentInit {\n\n constructor(private destroyRef: DestroyRef) {}\n\n /**\n * @docs-private\n */\n @ContentChildren(DaffBreadcrumbItemDirective) breadcrumbItems!: QueryList<DaffBreadcrumbItemDirective>;\n\n /**\n * @docs-private\n */\n ngAfterContentInit() {\n this.updateActiveState();\n\n this.breadcrumbItems.changes\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateActiveState());\n }\n\n private updateActiveState() {\n if (!this.breadcrumbItems.length) {\n return;\n }\n\n this.breadcrumbItems.forEach(item => item.setActive(false));\n\n this.breadcrumbItems.last.setActive(true);\n }\n}\n","<ng-content select=\"[daffBreadcrumbItem]\"></ng-content>","import { DaffBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { DaffBreadcrumbItemDirective } from './breadcrumb-item/breadcrumb-item.directive';\n\n/**\n * @docs-private\n */\nexport const DAFF_BREADCRUMB_COMPONENTS = <const> [\n DaffBreadcrumbComponent,\n DaffBreadcrumbItemDirective,\n];\n","import { NgModule } from '@angular/core';\n\nimport { DaffBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { DaffBreadcrumbItemDirective } from './breadcrumb-item/breadcrumb-item.directive';\n\n/**\n * @deprecated in favor of {@link DAFF_BREADCRUMB_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n DaffBreadcrumbComponent,\n DaffBreadcrumbItemDirective,\n ],\n exports: [\n DaffBreadcrumbComponent,\n DaffBreadcrumbItemDirective,\n ],\n})\nexport class DaffBreadcrumbModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daffodil-design-breadcrumb.mjs","sources":["../../../libs/design/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.ts","../../../libs/design/breadcrumb/src/breadcrumb-menu-item/breadcrumb-menu-item.directive.ts","../../../libs/design/breadcrumb/src/breadcrumb-render/to-render-type.ts","../../../libs/design/breadcrumb/src/breadcrumb/breadcrumb.component.ts","../../../libs/design/breadcrumb/src/breadcrumb/breadcrumb.component.html","../../../libs/design/breadcrumb/src/breadcrumb.ts","../../../libs/design/breadcrumb/src/breadcrumb.module.ts","../../../libs/design/breadcrumb/src/daffodil-design-breadcrumb.ts"],"sourcesContent":["/* eslint-disable quote-props */\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\n\n/**\n * Represents each individual breadcrumb item. Must be used on a `<li>` element.\n *\n * @example\n * ```html\n * <li daffBreadcrumbItem>\n * <a routerLink=\"/\">Link</a>\n * </li>\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[daffBreadcrumbItem]',\n template: `\n <ng-template #item>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'daff-breadcrumb__item',\n '[attr.aria-current]': '_active ? \"page\" : null',\n },\n})\nexport class DaffBreadcrumbItemComponent {\n /**\n * @docs-private\n */\n @ViewChild('item', { read: TemplateRef, static: true }) itemRef: TemplateRef<any>;\n\n /**\n * @docs-private\n */\n _active = false;\n\n constructor( private cdRef: ChangeDetectorRef ) {}\n\n /** Called by the DaffBreadcrumbComponent to set the active state */\n setActive(value: boolean) {\n this._active = value;\n\n this.cdRef.detectChanges();\n }\n}\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n Directive,\n EmbeddedViewRef,\n OnDestroy,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n provideDaffMenuItemToken,\n DaffMenuService,\n} from '@daffodil/design/menu';\n\n/**\n * @docs-private\n *\n * Applied to an `ng-container` that projects breadcrumb item templates into `daff-menu`,\n * allowing breadcrumb items to take on `daff-menu-item` styling and behavior.\n */\n@Directive({\n selector: '[daffBreadcrumbMenuItem]',\n providers: [provideDaffMenuItemToken(DaffBreadcrumbMenuItemDirective)],\n})\nexport class DaffBreadcrumbMenuItemDirective implements FocusableOption, AfterViewInit, OnDestroy {\n private _focusableElement: HTMLElement | null = null;\n private _clickHandler = () => this._menuService.close();\n\n constructor(\n private _viewContainerRef: ViewContainerRef,\n private _menuService: DaffMenuService,\n ) {}\n\n /**\n * @docs-private\n */\n ngAfterViewInit() {\n this._focusableElement = this._findFocusableElement();\n this._focusableElement?.classList.add('daff-menu-item'); // For styling\n this._focusableElement?.addEventListener('click', this._clickHandler);\n }\n\n focus() {\n this._focusableElement?.focus(); // Allows `FocusKeyManager` to focus on the element\n }\n\n private _findFocusableElement(): HTMLElement | null {\n const view = <EmbeddedViewRef<unknown>>this._viewContainerRef.get(0);\n return view?.rootNodes.find((n): n is HTMLElement => n.nodeType === Node.ELEMENT_NODE) ?? null;\n }\n\n ngOnDestroy() {\n this._focusableElement?.removeEventListener('click', this._clickHandler);\n this._focusableElement?.classList.remove('daff-menu-item');\n }\n}\n","import { DaffBreadcrumbItemComponent } from '../public_api';\nimport { DaffBreadcrumbRender } from './breadcrumb-render.type';\n\n/**\n * Determines whether a breadcrumb item should be rendered in the breadcrumb trail.\n * Returns a {@link DaffBreadcrumbRender} when the item should be visible,\n * or `null` when the item should be collapsed into a menu.\n *\n * When there are fewer than 5 items, all items are rendered.\n * Otherwise, only the first 2 and last 2 items are rendered.\n */\nexport const toRenderType = (item: DaffBreadcrumbItemComponent, length: number, index: number): DaffBreadcrumbRender | null => {\n if(length < 5) {\n return { item, type: 'breadcrumb' };\n }\n\n switch(index) {\n case 0:\n case 1:\n case length - 1:\n case length - 2:\n return { item, type: 'breadcrumb' };\n default:\n return null;\n }\n};\n","/* eslint-disable quote-props */\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ContentChildren,\n QueryList,\n AfterContentInit,\n DestroyRef,\n ViewChild,\n contentChildren,\n computed,\n TemplateRef,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport {\n DaffArticleEncapsulatedDirective,\n DaffSkeletonableDirective,\n DaffBreakpoints,\n} from '@daffodil/design';\nimport {\n DAFF_MENU_COMPONENTS,\n DaffMenuService,\n} from '@daffodil/design/menu';\n\nimport { DaffBreadcrumbItemComponent } from '../breadcrumb-item/breadcrumb-item.component';\nimport { DaffBreadcrumbMenuItemDirective } from '../breadcrumb-menu-item/breadcrumb-menu-item.directive';\nimport { DaffBreadcrumbRender } from '../breadcrumb-render/breadcrumb-render.type';\nimport { toRenderType } from '../breadcrumb-render/to-render-type';\n\n/**\n * Groups breadcrumb items. Must be applied to a native `<ol>` element.\n *\n * @example\n * ```html\n * <ol daff-breadcrumb>\n * <li daffBreadcrumbItem>\n * <a routerLink=\"/\">Home</a>\n * </li>\n * <li daffBreacrumbItem>\n * <span>Current page</span>\n * </li>\n * </ol>\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ol[daff-breadcrumb]',\n templateUrl: './breadcrumb.component.html',\n styleUrl: './breadcrumb.component.scss',\n hostDirectives: [\n { directive: DaffArticleEncapsulatedDirective },\n {\n directive: DaffSkeletonableDirective,\n inputs: ['skeleton'],\n },\n ],\n host: {\n 'class': 'daff-breadcrumb',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n DAFF_MENU_COMPONENTS,\n NgTemplateOutlet,\n DaffBreadcrumbMenuItemDirective,\n ],\n providers: [DaffMenuService],\n})\n\nexport class DaffBreadcrumbComponent implements AfterContentInit {\n\n constructor(\n private destroyRef: DestroyRef,\n private breakpointObserver: BreakpointObserver,\n ) {}\n\n /**\n * @docs-private\n */\n _isMobile = signal(false);\n\n /**\n * @docs-private\n */\n @ContentChildren(DaffBreadcrumbItemComponent) breadcrumbItems!: QueryList<DaffBreadcrumbItemComponent>;\n\n /**\n * @docs-private\n */\n @ViewChild('mobileMenu', { static: true }) fullMenu: TemplateRef<unknown>;\n\n /**\n * @docs-private\n */\n @ViewChild('desktopMenu', { static: true }) partialMenu: TemplateRef<unknown>;\n\n /**\n * @docs-private\n */\n _breadcrumbItems = contentChildren(DaffBreadcrumbItemComponent);\n\n /**\n * @docs-private\n */\n _partition = computed(() => {\n this._isMobile(); // signal rerenders breadcrumb on viewport change\n\n const items = this._breadcrumbItems();\n const visible: DaffBreadcrumbRender[] = [];\n const menu: DaffBreadcrumbItemComponent[] = [];\n\n for(let index = 0; index < items.length; index++) {\n const item = items[index];\n const res = toRenderType(item, items.length, index);\n if(res) {\n if(index === 0) {\n visible.push({ type: 'menu', target: 'mobileMenu' });\n }\n visible.push(res);\n } else {\n if(menu.length === 0) {\n visible.push({ type: 'menu', target: 'desktopMenu' });\n }\n menu.push(item);\n }\n }\n\n return { visible, menu };\n });\n\n /**\n * @docs-private\n */\n _computedBreadcrumbItems = computed(() => this._partition().visible);\n\n /**\n * @docs-private\n */\n _desktopMenuItems = computed(() => this._partition().menu);\n\n /**\n * @docs-private\n */\n _mobileMenuItems = computed(() => {\n const items = this._breadcrumbItems();\n return items.slice(0, items.length - 1);\n });\n\n /**\n * @docs-private\n */\n ngAfterContentInit() {\n this.updateActiveState();\n\n this.breadcrumbItems.changes\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateActiveState());\n\n this.breakpointObserver\n .observe([DaffBreakpoints.MOBILE])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(result => {\n this._isMobile.set(!result.matches);\n });\n }\n\n private updateActiveState() {\n if (!this.breadcrumbItems.length) {\n return;\n }\n\n this.breadcrumbItems.forEach(item => item.setActive(false));\n\n this.breadcrumbItems.last.setActive(true);\n }\n}\n","@for (breadcrumbItem of _computedBreadcrumbItems(); track breadcrumbItem) {\n\t@if (breadcrumbItem.type === 'breadcrumb') {\n\t\t<li class=\"daff-breadcrumb__item\"\n\t\t\t[class.active]=\"breadcrumbItem.item._active\">\n\t\t\t<ng-container *ngTemplateOutlet=\"breadcrumbItem.item.itemRef\"></ng-container>\n\t\t</li>\n\t} @else {\n\t\t<li class=\"daff-breadcrumb__item\"\n\t\t\t[class.on-mobile]=\"breadcrumbItem.target === 'mobileMenu'\"\n\t\t\t[class.on-desktop]=\"breadcrumbItem.target === 'desktopMenu'\">\n\t\t\t<button class=\"daff-breadcrumb__menu-activator\"\n\t\t\t\t[daffMenuActivator]=\"breadcrumbItem.target === 'mobileMenu' ? mobileMenu : desktopMenu\"\n\t\t\t\taria-label=\"Show more breadcrumb items\">...</button>\n\t\t</li>\n\t}\n}\n\n<ng-template #mobileMenu>\n\t<daff-menu>\n\t\t@for (breadcrumbItem of _mobileMenuItems(); track breadcrumbItem) {\n\t\t\t<ng-container daffBreadcrumbMenuItem [ngTemplateOutlet]=\"breadcrumbItem.itemRef\"></ng-container>\n\t\t}\n\t</daff-menu>\t\n</ng-template>\n\n<ng-template #desktopMenu>\n\t<daff-menu>\n\t\t@for (breadcrumbItem of _desktopMenuItems(); track breadcrumbItem) {\n\t\t\t<ng-container daffBreadcrumbMenuItem [ngTemplateOutlet]=\"breadcrumbItem.itemRef\"></ng-container>\n\t\t}\n\t</daff-menu>\t\n</ng-template>","import { DaffBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { DaffBreadcrumbItemComponent } from './breadcrumb-item/breadcrumb-item.component';\n\n/**\n * @docs-private\n */\nexport const DAFF_BREADCRUMB_COMPONENTS = <const> [\n DaffBreadcrumbComponent,\n DaffBreadcrumbItemComponent,\n];\n","import { NgModule } from '@angular/core';\n\nimport { DaffBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { DaffBreadcrumbItemComponent } from './breadcrumb-item/breadcrumb-item.component';\n\n/**\n * @deprecated in favor of {@link DAFF_BREADCRUMB_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n DaffBreadcrumbComponent,\n DaffBreadcrumbItemComponent,\n ],\n exports: [\n DaffBreadcrumbComponent,\n DaffBreadcrumbItemComponent,\n ],\n})\nexport class DaffBreadcrumbModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3"],"mappings":"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"}