@daffodil/design 0.90.0 → 0.92.3-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/accordion/README.md +26 -38
  2. package/accordion/index.d.ts +9 -6
  3. package/article/README.md +66 -46
  4. package/article/index.d.ts +41 -0
  5. package/article/src/article-theme.scss +22 -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 +27 -6
  11. package/button/src/button/basic/button-theme.scss +4 -2
  12. package/button/src/button/button-base.scss +29 -6
  13. package/button/src/button/icon/icon-theme.scss +10 -6
  14. package/button/src/button/raised/raised-theme.scss +6 -4
  15. package/callout/README.md +15 -27
  16. package/card/README.md +36 -69
  17. package/card/index.d.ts +7 -41
  18. package/card/src/card-base-theme.scss +2 -5
  19. package/card/src/card-base.scss +2 -2
  20. package/checkbox/README.md +0 -0
  21. package/checkbox/index.d.ts +177 -0
  22. package/container/README.md +18 -23
  23. package/fesm2022/daffodil-design-accordion.mjs +34 -25
  24. package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
  25. package/fesm2022/daffodil-design-article.mjs +283 -17
  26. package/fesm2022/daffodil-design-article.mjs.map +1 -1
  27. package/fesm2022/daffodil-design-breadcrumb.mjs +180 -28
  28. package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
  29. package/fesm2022/daffodil-design-button.mjs +90 -45
  30. package/fesm2022/daffodil-design-button.mjs.map +1 -1
  31. package/fesm2022/daffodil-design-callout.mjs +23 -23
  32. package/fesm2022/daffodil-design-callout.mjs.map +1 -1
  33. package/fesm2022/daffodil-design-card.mjs +43 -90
  34. package/fesm2022/daffodil-design-card.mjs.map +1 -1
  35. package/fesm2022/daffodil-design-checkbox.mjs +317 -0
  36. package/fesm2022/daffodil-design-checkbox.mjs.map +1 -0
  37. package/fesm2022/daffodil-design-container.mjs +8 -8
  38. package/fesm2022/daffodil-design-container.mjs.map +1 -1
  39. package/fesm2022/daffodil-design-form-field.mjs +56 -86
  40. package/fesm2022/daffodil-design-form-field.mjs.map +1 -1
  41. package/fesm2022/daffodil-design-form.mjs +62 -0
  42. package/fesm2022/daffodil-design-form.mjs.map +1 -0
  43. package/fesm2022/daffodil-design-hero.mjs +23 -23
  44. package/fesm2022/daffodil-design-hero.mjs.map +1 -1
  45. package/fesm2022/daffodil-design-image.mjs +19 -11
  46. package/fesm2022/daffodil-design-image.mjs.map +1 -1
  47. package/fesm2022/daffodil-design-input.mjs +18 -14
  48. package/fesm2022/daffodil-design-input.mjs.map +1 -1
  49. package/fesm2022/daffodil-design-link-set.mjs +25 -17
  50. package/fesm2022/daffodil-design-link-set.mjs.map +1 -1
  51. package/fesm2022/daffodil-design-list.mjs +16 -16
  52. package/fesm2022/daffodil-design-list.mjs.map +1 -1
  53. package/fesm2022/daffodil-design-loading-icon.mjs +8 -8
  54. package/fesm2022/daffodil-design-loading-icon.mjs.map +1 -1
  55. package/fesm2022/daffodil-design-media-gallery.mjs +13 -13
  56. package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
  57. package/fesm2022/daffodil-design-menu.mjs +223 -60
  58. package/fesm2022/daffodil-design-menu.mjs.map +1 -1
  59. package/fesm2022/daffodil-design-modal.mjs +86 -83
  60. package/fesm2022/daffodil-design-modal.mjs.map +1 -1
  61. package/fesm2022/daffodil-design-native-select.mjs +47 -41
  62. package/fesm2022/daffodil-design-native-select.mjs.map +1 -1
  63. package/fesm2022/daffodil-design-navbar.mjs +25 -21
  64. package/fesm2022/daffodil-design-navbar.mjs.map +1 -1
  65. package/fesm2022/daffodil-design-notification.mjs +28 -64
  66. package/fesm2022/daffodil-design-notification.mjs.map +1 -1
  67. package/fesm2022/daffodil-design-paginator.mjs +11 -16
  68. package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
  69. package/fesm2022/daffodil-design-progress-bar.mjs +10 -10
  70. package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
  71. package/fesm2022/daffodil-design-quantity-field.mjs +19 -18
  72. package/fesm2022/daffodil-design-quantity-field.mjs.map +1 -1
  73. package/fesm2022/daffodil-design-radio.mjs +27 -56
  74. package/fesm2022/daffodil-design-radio.mjs.map +1 -1
  75. package/fesm2022/daffodil-design-select.mjs +6 -6
  76. package/fesm2022/daffodil-design-select.mjs.map +1 -1
  77. package/fesm2022/daffodil-design-sidebar.mjs +30 -60
  78. package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
  79. package/fesm2022/daffodil-design-spinner.mjs +99 -0
  80. package/fesm2022/daffodil-design-spinner.mjs.map +1 -0
  81. package/fesm2022/daffodil-design-switch.mjs +49 -106
  82. package/fesm2022/daffodil-design-switch.mjs.map +1 -1
  83. package/fesm2022/daffodil-design-tabs.mjs +35 -27
  84. package/fesm2022/daffodil-design-tabs.mjs.map +1 -1
  85. package/fesm2022/daffodil-design-tag.mjs +7 -7
  86. package/fesm2022/daffodil-design-tag.mjs.map +1 -1
  87. package/fesm2022/daffodil-design-text-snippet.mjs +6 -8
  88. package/fesm2022/daffodil-design-text-snippet.mjs.map +1 -1
  89. package/fesm2022/daffodil-design-textarea.mjs +6 -3
  90. package/fesm2022/daffodil-design-textarea.mjs.map +1 -1
  91. package/fesm2022/daffodil-design-toast.mjs +79 -80
  92. package/fesm2022/daffodil-design-toast.mjs.map +1 -1
  93. package/fesm2022/daffodil-design-tree.mjs +152 -112
  94. package/fesm2022/daffodil-design-tree.mjs.map +1 -1
  95. package/fesm2022/daffodil-design-youtube-player.mjs +6 -6
  96. package/fesm2022/daffodil-design-youtube-player.mjs.map +1 -1
  97. package/fesm2022/daffodil-design.mjs +559 -711
  98. package/fesm2022/daffodil-design.mjs.map +1 -1
  99. package/form/README.md +75 -0
  100. package/form/index.d.ts +27 -0
  101. package/form-field/README.md +74 -99
  102. package/form-field/index.d.ts +64 -42
  103. package/hero/README.md +5 -5
  104. package/image/README.md +27 -19
  105. package/image/index.d.ts +6 -1
  106. package/index.d.ts +282 -447
  107. package/input/README.md +36 -16
  108. package/input/index.d.ts +4 -3
  109. package/link-set/index.d.ts +9 -1
  110. package/list/README.md +2 -2
  111. package/loading-icon/README.md +1 -1
  112. package/loading-icon/index.d.ts +1 -1
  113. package/media-gallery/README.md +3 -3
  114. package/menu/README.md +107 -10
  115. package/menu/index.d.ts +143 -11
  116. package/modal/README.md +107 -17
  117. package/modal/index.d.ts +72 -35
  118. package/native-select/README.md +52 -15
  119. package/native-select/index.d.ts +8 -7
  120. package/navbar/README.md +23 -17
  121. package/navbar/index.d.ts +12 -2
  122. package/navbar/src/navbar-theme.scss +4 -46
  123. package/notification/README.md +4 -4
  124. package/notification/index.d.ts +7 -38
  125. package/package.json +1 -1
  126. package/paginator/README.md +42 -6
  127. package/paginator/index.d.ts +5 -9
  128. package/progress-bar/README.md +3 -3
  129. package/quantity-field/README.md +4 -4
  130. package/quantity-field/index.d.ts +4 -1
  131. package/radio/README.md +1 -1
  132. package/radio/index.d.ts +0 -16
  133. package/scss/layout/_breakpoint.scss +1 -1
  134. package/scss/theme.scss +9 -5
  135. package/scss/theming/_color-palettes.scss +19 -11
  136. package/scss/theming/_configure-theme.scss +11 -10
  137. package/scss/theming/_daff-theme.scss +5 -14
  138. package/scss/theming/_get-base-color.scss +2 -2
  139. package/scss/theming/_get-palette.scss +2 -2
  140. package/scss/theming/_get-theme-mode.scss +3 -3
  141. package/scss/theming/_index.scss +2 -1
  142. package/scss/theming/contrast/max-contrast/max-contrast.scss +3 -3
  143. package/scss/theming/contrast/text-contrast/text-contrast.scss +22 -16
  144. package/scss/theming/contrast/text-contrast/text-contrast.spec.scss +57 -0
  145. package/scss/theming/create-theme/_create-theme.scss +330 -0
  146. package/scss/theming/create-theme/_create-theme.spec.scss +122 -0
  147. package/scss/theming/create-theme/_index.scss +1 -0
  148. package/scss/theming/get-font-colors/_get-font-colors.scss +36 -0
  149. package/scss/theming/get-font-colors/_get-font-colors.spec.scss +72 -0
  150. package/scss/typography/mixins/_font-weight.scss +8 -14
  151. package/select/README.md +107 -4
  152. package/sidebar/README.md +6 -14
  153. package/sidebar/index.d.ts +3 -15
  154. package/spinner/README.md +57 -0
  155. package/spinner/index.d.ts +53 -0
  156. package/spinner/src/spinner-theme.scss +62 -0
  157. package/switch/README.md +21 -29
  158. package/switch/index.d.ts +18 -48
  159. package/switch/src/switch-theme.scss +26 -18
  160. package/tabs/README.md +1 -1
  161. package/tabs/index.d.ts +8 -5
  162. package/tag/README.md +24 -30
  163. package/tag/index.d.ts +1 -1
  164. package/tag/src/tag-theme.scss +11 -9
  165. package/text-snippet/README.md +1 -1
  166. package/text-snippet/src/text-snippet-theme.scss +12 -0
  167. package/textarea/README.md +36 -6
  168. package/textarea/index.d.ts +4 -4
  169. package/toast/README.md +4 -4
  170. package/tree/README.md +39 -22
  171. package/tree/index.d.ts +57 -96
  172. package/tree/src/tree-theme.scss +0 -4
  173. package/accordion/examples/index.d.ts +0 -20
  174. package/article/examples/index.d.ts +0 -50
  175. package/breadcrumb/examples/index.d.ts +0 -10
  176. package/button/examples/index.d.ts +0 -67
  177. package/callout/examples/index.d.ts +0 -41
  178. package/card/examples/index.d.ts +0 -62
  179. package/card/src/card/raised/raised-theme.scss +0 -28
  180. package/checkbox/examples/index.d.ts +0 -32
  181. package/container/examples/index.d.ts +0 -16
  182. package/fesm2022/daffodil-design-accordion-examples.mjs +0 -50
  183. package/fesm2022/daffodil-design-accordion-examples.mjs.map +0 -1
  184. package/fesm2022/daffodil-design-article-examples.mjs +0 -134
  185. package/fesm2022/daffodil-design-article-examples.mjs.map +0 -1
  186. package/fesm2022/daffodil-design-breadcrumb-examples.mjs +0 -46
  187. package/fesm2022/daffodil-design-breadcrumb-examples.mjs.map +0 -1
  188. package/fesm2022/daffodil-design-button-examples.mjs +0 -178
  189. package/fesm2022/daffodil-design-button-examples.mjs.map +0 -1
  190. package/fesm2022/daffodil-design-callout-examples.mjs +0 -116
  191. package/fesm2022/daffodil-design-callout-examples.mjs.map +0 -1
  192. package/fesm2022/daffodil-design-card-examples.mjs +0 -168
  193. package/fesm2022/daffodil-design-card-examples.mjs.map +0 -1
  194. package/fesm2022/daffodil-design-checkbox-examples.mjs +0 -76
  195. package/fesm2022/daffodil-design-checkbox-examples.mjs.map +0 -1
  196. package/fesm2022/daffodil-design-container-examples.mjs +0 -41
  197. package/fesm2022/daffodil-design-container-examples.mjs.map +0 -1
  198. package/fesm2022/daffodil-design-form-field-examples.mjs +0 -96
  199. package/fesm2022/daffodil-design-form-field-examples.mjs.map +0 -1
  200. package/fesm2022/daffodil-design-hero-examples.mjs +0 -121
  201. package/fesm2022/daffodil-design-hero-examples.mjs.map +0 -1
  202. package/fesm2022/daffodil-design-image-examples.mjs +0 -58
  203. package/fesm2022/daffodil-design-image-examples.mjs.map +0 -1
  204. package/fesm2022/daffodil-design-input-examples.mjs +0 -108
  205. package/fesm2022/daffodil-design-input-examples.mjs.map +0 -1
  206. package/fesm2022/daffodil-design-list-examples.mjs +0 -77
  207. package/fesm2022/daffodil-design-list-examples.mjs.map +0 -1
  208. package/fesm2022/daffodil-design-loading-icon-examples.mjs +0 -44
  209. package/fesm2022/daffodil-design-loading-icon-examples.mjs.map +0 -1
  210. package/fesm2022/daffodil-design-media-gallery-examples.mjs +0 -104
  211. package/fesm2022/daffodil-design-media-gallery-examples.mjs.map +0 -1
  212. package/fesm2022/daffodil-design-menu-examples.mjs +0 -50
  213. package/fesm2022/daffodil-design-menu-examples.mjs.map +0 -1
  214. package/fesm2022/daffodil-design-modal-examples.mjs +0 -51
  215. package/fesm2022/daffodil-design-modal-examples.mjs.map +0 -1
  216. package/fesm2022/daffodil-design-native-select-examples.mjs +0 -71
  217. package/fesm2022/daffodil-design-native-select-examples.mjs.map +0 -1
  218. package/fesm2022/daffodil-design-navbar-examples.mjs +0 -88
  219. package/fesm2022/daffodil-design-navbar-examples.mjs.map +0 -1
  220. package/fesm2022/daffodil-design-notification-examples.mjs +0 -102
  221. package/fesm2022/daffodil-design-notification-examples.mjs.map +0 -1
  222. package/fesm2022/daffodil-design-paginator-examples.mjs +0 -59
  223. package/fesm2022/daffodil-design-paginator-examples.mjs.map +0 -1
  224. package/fesm2022/daffodil-design-progress-bar-examples.mjs +0 -57
  225. package/fesm2022/daffodil-design-progress-bar-examples.mjs.map +0 -1
  226. package/fesm2022/daffodil-design-quantity-field-examples.mjs +0 -85
  227. package/fesm2022/daffodil-design-quantity-field-examples.mjs.map +0 -1
  228. package/fesm2022/daffodil-design-radio-examples.mjs +0 -34
  229. package/fesm2022/daffodil-design-radio-examples.mjs.map +0 -1
  230. package/fesm2022/daffodil-design-select-examples.mjs +0 -117
  231. package/fesm2022/daffodil-design-select-examples.mjs.map +0 -1
  232. package/fesm2022/daffodil-design-sidebar-examples.mjs +0 -109
  233. package/fesm2022/daffodil-design-sidebar-examples.mjs.map +0 -1
  234. package/fesm2022/daffodil-design-sticky-examples.mjs +0 -25
  235. package/fesm2022/daffodil-design-sticky-examples.mjs.map +0 -1
  236. package/fesm2022/daffodil-design-switch-examples.mjs +0 -110
  237. package/fesm2022/daffodil-design-switch-examples.mjs.map +0 -1
  238. package/fesm2022/daffodil-design-tabs-examples.mjs +0 -115
  239. package/fesm2022/daffodil-design-tabs-examples.mjs.map +0 -1
  240. package/fesm2022/daffodil-design-tag-examples.mjs +0 -125
  241. package/fesm2022/daffodil-design-tag-examples.mjs.map +0 -1
  242. package/fesm2022/daffodil-design-text-snippet-examples.mjs +0 -25
  243. package/fesm2022/daffodil-design-text-snippet-examples.mjs.map +0 -1
  244. package/fesm2022/daffodil-design-textarea-examples.mjs +0 -66
  245. package/fesm2022/daffodil-design-textarea-examples.mjs.map +0 -1
  246. package/fesm2022/daffodil-design-toast-examples.mjs +0 -147
  247. package/fesm2022/daffodil-design-toast-examples.mjs.map +0 -1
  248. package/fesm2022/daffodil-design-tree-examples.mjs +0 -104
  249. package/fesm2022/daffodil-design-tree-examples.mjs.map +0 -1
  250. package/form-field/examples/index.d.ts +0 -18
  251. package/hero/examples/index.d.ts +0 -45
  252. package/image/examples/index.d.ts +0 -10
  253. package/input/examples/index.d.ts +0 -10
  254. package/list/examples/index.d.ts +0 -29
  255. package/loading-icon/examples/index.d.ts +0 -16
  256. package/media-gallery/examples/index.d.ts +0 -38
  257. package/menu/examples/index.d.ts +0 -20
  258. package/modal/examples/index.d.ts +0 -15
  259. package/native-select/examples/index.d.ts +0 -10
  260. package/navbar/examples/index.d.ts +0 -31
  261. package/notification/examples/index.d.ts +0 -12
  262. package/paginator/examples/index.d.ts +0 -26
  263. package/progress-bar/examples/index.d.ts +0 -10
  264. package/quantity-field/examples/index.d.ts +0 -30
  265. package/radio/examples/index.d.ts +0 -13
  266. package/select/examples/index.d.ts +0 -28
  267. package/sidebar/examples/index.d.ts +0 -10
  268. package/sticky/examples/index.d.ts +0 -10
  269. package/switch/examples/index.d.ts +0 -46
  270. package/tabs/examples/index.d.ts +0 -12
  271. package/tag/examples/index.d.ts +0 -50
  272. package/text-snippet/examples/index.d.ts +0 -10
  273. package/textarea/examples/index.d.ts +0 -10
  274. package/toast/examples/index.d.ts +0 -56
  275. package/tree/examples/index.d.ts +0 -18
  276. /package/{form-field → form}/src/error-message/error-message-theme.scss +0 -0
  277. /package/{form-field → form}/src/hint/hint-theme.scss +0 -0
@@ -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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"}