@daffodil/design 0.87.1 → 0.88.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 (215) hide show
  1. package/accordion/accordion/accordion-item/accordion-item.component.d.ts +1 -9
  2. package/accordion/accordion/accordion-item-title/accordion-item-title.directive.d.ts +0 -4
  3. package/article/article/article.component.d.ts +0 -8
  4. package/article/article-meta/article-meta.directive.d.ts +0 -4
  5. package/atoms/form/form-field/form-field/form-field.component.d.ts +3 -2
  6. package/atoms/form/form-field/form-field-control.d.ts +3 -1
  7. package/atoms/form/native-select/native-select.component.d.ts +11 -0
  8. package/breadcrumb/breadcrumb/breadcrumb.component.d.ts +0 -4
  9. package/breadcrumb/breadcrumb-item/breadcrumb-item.directive.d.ts +0 -12
  10. package/button/button/basic/button.component.d.ts +0 -4
  11. package/button/button/button-base.directive.d.ts +0 -18
  12. package/button/button/flat/flat.component.d.ts +0 -4
  13. package/button/button/icon/icon.component.d.ts +0 -4
  14. package/button/button/stroked/stroked.component.d.ts +0 -4
  15. package/button/button/underline/underline.component.d.ts +0 -4
  16. package/button/src/button/button-base.scss +3 -3
  17. package/callout/README.md +38 -40
  18. package/callout/callout/callout.component.d.ts +13 -5
  19. package/callout/callout-body/callout-body.directive.d.ts +9 -4
  20. package/callout/callout-icon/callout-icon.directive.d.ts +9 -4
  21. package/callout/callout-subtitle/callout-subtitle.directive.d.ts +8 -4
  22. package/callout/callout-tagline/callout-tagline.directive.d.ts +8 -4
  23. package/callout/callout-title/callout-title.directive.d.ts +8 -4
  24. package/card/README.md +52 -44
  25. package/card/card/basic/basic.component.d.ts +18 -4
  26. package/card/card/raised/raised.component.d.ts +3 -4
  27. package/card/card/stroked/stroked.component.d.ts +18 -4
  28. package/card/card-actions/card-actions.directive.d.ts +8 -4
  29. package/card/card-base.directive.d.ts +8 -16
  30. package/card/card-content/card-content.directive.d.ts +9 -4
  31. package/card/card-icon/card-icon.directive.d.ts +8 -4
  32. package/card/card-image/card-image.directive.d.ts +8 -4
  33. package/card/card-tagline/card-tagline.directive.d.ts +8 -4
  34. package/card/card-title/card-title.directive.d.ts +8 -4
  35. package/card/card.d.ts +1 -0
  36. package/card/examples/elevated-card/elevated-card.component.d.ts +5 -0
  37. package/card/examples/public_api.d.ts +3 -3
  38. package/card/helpers/card-orientation.d.ts +17 -0
  39. package/card/public_api.d.ts +9 -8
  40. package/card/src/card-base-theme.scss +40 -58
  41. package/container/container/container.component.d.ts +0 -4
  42. package/core/public_api.d.ts +1 -0
  43. package/core/sticky/public_api.d.ts +1 -0
  44. package/core/sticky/sticky-tracker.directive.d.ts +23 -0
  45. package/fesm2022/daffodil-design-accordion.mjs +13 -55
  46. package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
  47. package/fesm2022/daffodil-design-article.mjs +14 -32
  48. package/fesm2022/daffodil-design-article.mjs.map +1 -1
  49. package/fesm2022/daffodil-design-breadcrumb.mjs +15 -38
  50. package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
  51. package/fesm2022/daffodil-design-button.mjs +41 -108
  52. package/fesm2022/daffodil-design-button.mjs.map +1 -1
  53. package/fesm2022/daffodil-design-callout.mjs +91 -73
  54. package/fesm2022/daffodil-design-callout.mjs.map +1 -1
  55. package/fesm2022/daffodil-design-card-examples.mjs +17 -32
  56. package/fesm2022/daffodil-design-card-examples.mjs.map +1 -1
  57. package/fesm2022/daffodil-design-card.mjs +167 -145
  58. package/fesm2022/daffodil-design-card.mjs.map +1 -1
  59. package/fesm2022/daffodil-design-container.mjs +7 -13
  60. package/fesm2022/daffodil-design-container.mjs.map +1 -1
  61. package/fesm2022/daffodil-design-form-field-examples.mjs +7 -7
  62. package/fesm2022/daffodil-design-form-field-examples.mjs.map +1 -1
  63. package/fesm2022/daffodil-design-hero-examples.mjs +18 -1
  64. package/fesm2022/daffodil-design-hero-examples.mjs.map +1 -1
  65. package/fesm2022/daffodil-design-hero.mjs +102 -71
  66. package/fesm2022/daffodil-design-hero.mjs.map +1 -1
  67. package/fesm2022/daffodil-design-image.mjs +5 -12
  68. package/fesm2022/daffodil-design-image.mjs.map +1 -1
  69. package/fesm2022/daffodil-design-input-examples.mjs +6 -6
  70. package/fesm2022/daffodil-design-input-examples.mjs.map +1 -1
  71. package/fesm2022/daffodil-design-input.mjs +60 -35
  72. package/fesm2022/daffodil-design-input.mjs.map +1 -1
  73. package/fesm2022/daffodil-design-list-examples.mjs +14 -10
  74. package/fesm2022/daffodil-design-list-examples.mjs.map +1 -1
  75. package/fesm2022/daffodil-design-list.mjs +111 -98
  76. package/fesm2022/daffodil-design-list.mjs.map +1 -1
  77. package/fesm2022/daffodil-design-media-gallery.mjs +7 -17
  78. package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
  79. package/fesm2022/daffodil-design-menu.mjs +26 -63
  80. package/fesm2022/daffodil-design-menu.mjs.map +1 -1
  81. package/fesm2022/daffodil-design-modal.mjs +63 -130
  82. package/fesm2022/daffodil-design-modal.mjs.map +1 -1
  83. package/fesm2022/daffodil-design-navbar.mjs +7 -20
  84. package/fesm2022/daffodil-design-navbar.mjs.map +1 -1
  85. package/fesm2022/daffodil-design-notification-examples.mjs +16 -41
  86. package/fesm2022/daffodil-design-notification-examples.mjs.map +1 -1
  87. package/fesm2022/daffodil-design-notification.mjs +112 -116
  88. package/fesm2022/daffodil-design-notification.mjs.map +1 -1
  89. package/fesm2022/daffodil-design-paginator.mjs +8 -21
  90. package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
  91. package/fesm2022/daffodil-design-progress-bar-examples.mjs +6 -6
  92. package/fesm2022/daffodil-design-progress-bar-examples.mjs.map +1 -1
  93. package/fesm2022/daffodil-design-progress-bar.mjs +74 -115
  94. package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
  95. package/fesm2022/daffodil-design-quantity-field.mjs +11 -3
  96. package/fesm2022/daffodil-design-quantity-field.mjs.map +1 -1
  97. package/fesm2022/daffodil-design-select-examples.mjs +4 -4
  98. package/fesm2022/daffodil-design-select-examples.mjs.map +1 -1
  99. package/fesm2022/daffodil-design-select.mjs +50 -117
  100. package/fesm2022/daffodil-design-select.mjs.map +1 -1
  101. package/fesm2022/daffodil-design-sidebar-examples.mjs +29 -3
  102. package/fesm2022/daffodil-design-sidebar-examples.mjs.map +1 -1
  103. package/fesm2022/daffodil-design-sidebar.mjs +39 -78
  104. package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
  105. package/fesm2022/daffodil-design-sticky-examples.mjs +25 -0
  106. package/fesm2022/daffodil-design-sticky-examples.mjs.map +1 -0
  107. package/fesm2022/daffodil-design-tabs.mjs +54 -131
  108. package/fesm2022/daffodil-design-tabs.mjs.map +1 -1
  109. package/fesm2022/daffodil-design-text-snippet.mjs +17 -8
  110. package/fesm2022/daffodil-design-text-snippet.mjs.map +1 -1
  111. package/fesm2022/daffodil-design-textarea-examples.mjs +3 -3
  112. package/fesm2022/daffodil-design-textarea-examples.mjs.map +1 -1
  113. package/fesm2022/daffodil-design-textarea.mjs +49 -25
  114. package/fesm2022/daffodil-design-textarea.mjs.map +1 -1
  115. package/fesm2022/daffodil-design-toast.mjs +42 -128
  116. package/fesm2022/daffodil-design-toast.mjs.map +1 -1
  117. package/fesm2022/daffodil-design-tree.mjs +26 -70
  118. package/fesm2022/daffodil-design-tree.mjs.map +1 -1
  119. package/fesm2022/daffodil-design.mjs +164 -17
  120. package/fesm2022/daffodil-design.mjs.map +1 -1
  121. package/hero/README.md +39 -25
  122. package/hero/examples/basic-hero/basic-hero.component.d.ts +6 -0
  123. package/hero/examples/public_api.d.ts +1 -0
  124. package/hero/hero/hero.component.d.ts +21 -4
  125. package/hero/hero-body/hero-body.directive.d.ts +10 -4
  126. package/hero/hero-icon/hero-icon.directive.d.ts +10 -4
  127. package/hero/hero-subtitle/hero-subtitle.directive.d.ts +8 -4
  128. package/hero/hero-tagline/hero-tagline.directive.d.ts +8 -4
  129. package/hero/hero-title/hero-title.directive.d.ts +8 -4
  130. package/image/image/image.component.d.ts +0 -4
  131. package/input/input.component.d.ts +29 -9
  132. package/list/README.md +43 -13
  133. package/list/examples/multiline-list/multiline-list.component.d.ts +1 -0
  134. package/list/list/list.component.d.ts +12 -24
  135. package/list/list-item/list-item.component.d.ts +13 -20
  136. package/list/list-item-title/list-item-title.directive.d.ts +13 -0
  137. package/list/list.d.ts +8 -2
  138. package/list/list.module.d.ts +4 -3
  139. package/list/nav-list/nav-list.component.d.ts +17 -0
  140. package/list/public_api.d.ts +5 -2
  141. package/list/src/list-base.scss +40 -0
  142. package/list/src/list-theme.scss +5 -0
  143. package/media-gallery/media-gallery/media-gallery.component.d.ts +0 -6
  144. package/menu/menu/menu.component.d.ts +0 -12
  145. package/menu/menu-activator/menu-activator.component.d.ts +4 -5
  146. package/menu/menu-item/menu-item.component.d.ts +0 -10
  147. package/modal/modal/modal.component.d.ts +12 -33
  148. package/modal/modal-actions/modal-actions.component.d.ts +0 -4
  149. package/modal/modal-close/modal-close.directive.d.ts +1 -8
  150. package/modal/modal-content/modal-content.component.d.ts +0 -4
  151. package/modal/modal-header/modal-header.component.d.ts +0 -4
  152. package/modal/modal-title/modal-title.directive.d.ts +0 -11
  153. package/navbar/navbar/navbar.component.d.ts +0 -8
  154. package/navbar/src/navbar-theme.scss +2 -1
  155. package/notification/README.md +39 -24
  156. package/notification/examples/default-notification/default-notification.component.d.ts +0 -2
  157. package/notification/examples/public_api.d.ts +1 -5
  158. package/notification/helpers/notification-orientation.d.ts +17 -0
  159. package/notification/notification/notification.component.d.ts +39 -23
  160. package/notification/notification-actions/notification-actions.directive.d.ts +11 -4
  161. package/notification/notification-message/notification-message.directive.d.ts +9 -4
  162. package/notification/notification-subtitle/notification-subtitle.directive.d.ts +3 -4
  163. package/notification/notification-title/notification-title.directive.d.ts +8 -4
  164. package/notification/public_api.d.ts +6 -5
  165. package/package.json +1 -1
  166. package/paginator/paginator/paginator.component.d.ts +0 -11
  167. package/progress-bar/README.md +31 -8
  168. package/progress-bar/progress-bar-label/progress-bar-label.directive.d.ts +9 -5
  169. package/progress-bar/progress-bar.component.d.ts +39 -35
  170. package/progress-bar/public_api.d.ts +2 -2
  171. package/quantity-field/quantity-field.component.d.ts +10 -0
  172. package/scss/global.scss +0 -1
  173. package/select/select/select.component.d.ts +13 -25
  174. package/select/select.d.ts +1 -2
  175. package/sidebar/README.md +67 -72
  176. package/sidebar/examples/over-and-under-sidebars/over-and-under-sidebars.component.d.ts +0 -1
  177. package/sidebar/examples/sidebar-sides/sidebar-sides.component.d.ts +11 -0
  178. package/sidebar/sidebar/sidebar.component.d.ts +0 -9
  179. package/sidebar/sidebar-footer/sidebar-footer.component.d.ts +0 -4
  180. package/sidebar/sidebar-header/sidebar-header-action/sidebar-header-action.directive.d.ts +3 -0
  181. package/sidebar/sidebar-header/sidebar-header.component.d.ts +0 -4
  182. package/sidebar/sidebar-viewport/sidebar-viewport.component.d.ts +0 -17
  183. package/sticky/examples/basic-sticky/basic-sticky.component.d.ts +5 -0
  184. package/sticky/examples/index.d.ts +1 -0
  185. package/sticky/examples/public_api.d.ts +2 -0
  186. package/tabs/README.md +38 -14
  187. package/tabs/tabs/tab/tab.component.d.ts +4 -16
  188. package/tabs/tabs/tab-activator/tab-activator.component.d.ts +6 -27
  189. package/tabs/tabs/tab-label/tab-label.component.d.ts +5 -2
  190. package/tabs/tabs/tab-panel/tab-panel.component.d.ts +7 -24
  191. package/tabs/tabs/tabs.component.d.ts +5 -11
  192. package/text-snippet/README.md +31 -3
  193. package/text-snippet/text-snippet.component.d.ts +17 -2
  194. package/textarea/textarea.component.d.ts +25 -5
  195. package/toast/README.md +47 -21
  196. package/toast/interfaces/toast-action.d.ts +4 -5
  197. package/toast/interfaces/toast-options.d.ts +3 -1
  198. package/toast/interfaces/toast.d.ts +22 -7
  199. package/toast/service/toast.service.d.ts +3 -3
  200. package/toast/toast/toast-config.d.ts +7 -3
  201. package/toast/toast/toast-template.component.d.ts +1 -1
  202. package/toast/toast/toast.component.d.ts +0 -2
  203. package/toast/toast-actions/toast-actions.directive.d.ts +0 -4
  204. package/toast/toast-message/toast-message.directive.d.ts +0 -4
  205. package/toast/toast-title/toast-title.directive.d.ts +0 -4
  206. package/tree/tree/tree.component.d.ts +0 -6
  207. package/tree/tree-item/tree-item.directive.d.ts +7 -35
  208. package/accordion/accordion/animation/accordion-animation-state.d.ts +0 -1
  209. package/accordion/accordion/animation/accordion-animation.d.ts +0 -4
  210. package/card/examples/raised-card/raised-card.component.d.ts +0 -11
  211. package/notification/examples/notification-with-actions/notification-with-actions.component.d.ts +0 -8
  212. package/progress-bar/animation/progress-bar-animation.d.ts +0 -4
  213. package/select/animation/select-animation-state.d.ts +0 -7
  214. package/select/animation/select-animation.d.ts +0 -4
  215. package/select/animation/state.enum.d.ts +0 -4
@@ -1,123 +1,100 @@
1
- import { NgIf, CommonModule } from '@angular/common';
1
+ import { CommonModule } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { HostBinding, ChangeDetectionStrategy, ViewEncapsulation, Component, ContentChild, Input, NgModule } from '@angular/core';
3
+ import { ChangeDetectionStrategy, ViewEncapsulation, Component, ContentChild, Input, NgModule, Directive } from '@angular/core';
4
4
  import * as i1 from '@daffodil/design';
5
- import { DaffArticleEncapsulatedDirective, DaffPrefixSuffixModule, DaffPrefixDirective, DaffSuffixDirective } from '@daffodil/design';
5
+ import { DaffArticleEncapsulatedDirective, DaffPrefixDirective, DaffPrefixSuffixModule } from '@daffodil/design';
6
6
 
7
- var DaffListTypeEnum;
8
- (function (DaffListTypeEnum) {
9
- DaffListTypeEnum["Default"] = "daff-list";
10
- DaffListTypeEnum["Nav"] = "daff-nav-list";
11
- })(DaffListTypeEnum || (DaffListTypeEnum = {}));
7
+ /* eslint-disable quote-props */
8
+ /**
9
+ * A standard list used for grouping generic content.
10
+ *
11
+ * @example
12
+ * ```html
13
+ * <daff-list>
14
+ * <daff-list-item>List item</daff-list-item>
15
+ * <daff-list-item>List item</daff-list-item>
16
+ * </daff-list>
17
+ * ```
18
+ */
12
19
  class DaffListComponent {
13
- /**
14
- * @docs-private
15
- */
16
- get list() {
17
- return this.listType === DaffListTypeEnum.Default;
18
- }
19
- /**
20
- * @docs-private
21
- */
22
- get listType() {
23
- return this._getHostElement().localName;
24
- }
25
- constructor(elementRef) {
26
- this.elementRef = elementRef;
27
- }
28
- /**
29
- * @docs-private
30
- */
31
- get nav() {
32
- return this.listType === DaffListTypeEnum.Nav;
33
- }
34
- /**
35
- * Sets the role for a `<daff-nav-list>` to navigation.
36
- *
37
- * @docs-private
38
- */
39
- get role() {
40
- return this.listType === DaffListTypeEnum.Nav ? 'navigation' : 'list';
41
- }
42
- ;
43
- _getHostElement() {
44
- return this.elementRef.nativeElement;
45
- }
46
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
47
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffListComponent, isStandalone: true, selector: "daff-list,daff-nav-list", host: { properties: { "class.daff-list": "this.list", "class.daff-nav-list": "this.nav", "attr.role": "this.role" } }, hostDirectives: [{ directive: i1.DaffArticleEncapsulatedDirective }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".daff-list{display:block;margin:0;padding:0}.daff-list .daff-list-item{display:flex;gap:16px;padding:12px 16px}.daff-list .daff-list-item__content{flex-grow:1}.daff-list .daff-list-item__content *:nth-child(1){font-size:1rem;font-weight:700;line-height:1.5em;margin:0;padding:0}.daff-list .daff-list-item__content *:nth-child(n+2){font-size:1rem;margin:0;padding:0}.daff-list .daff-list-item .daff-prefix,.daff-list .daff-list-item .daff-suffix{display:flex;align-items:center;z-index:2}.daff-nav-list{display:block;margin:0;padding:0}.daff-nav-list .daff-list-item{display:flex;gap:16px;padding:12px 16px}.daff-nav-list .daff-list-item__content{flex-grow:1}.daff-nav-list .daff-list-item__content *:nth-child(1){font-size:1rem;font-weight:700;line-height:1.5em;margin:0;padding:0}.daff-nav-list .daff-list-item__content *:nth-child(n+2){font-size:1rem;margin:0;padding:0}.daff-nav-list .daff-list-item .daff-prefix,.daff-nav-list .daff-list-item .daff-suffix{display:flex;align-items:center;z-index:2}.daff-nav-list .daff-list-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none;text-decoration:none;position:relative}.daff-nav-list .daff-list-item__content{z-index:2}.daff-nav-list .daff-list-item:after{content:\"\";position:absolute;height:100%;width:100%;top:0;left:0;opacity:0;transition:opacity .3s;z-index:1}.daff-nav-list .daff-list-item:hover:after,.daff-nav-list .daff-list-item.active:after{opacity:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
20
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffListComponent, isStandalone: true, selector: "daff-list", host: { attributes: { "role": "list" }, classAttribute: "daff-list" }, hostDirectives: [{ directive: i1.DaffArticleEncapsulatedDirective }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".daff-list{display:block;margin:0;padding:0}.daff-list .daff-list-item{display:flex;gap:1rem;padding:.75rem 1rem}.daff-list .daff-list-item__content{font-size:1rem;flex-grow:1}.daff-list .daff-list-item__content>*{margin:0;padding:0}.daff-list .daff-list-item__title{font-size:1rem;font-weight:600;line-height:1.5rem;margin:0;padding:0}.daff-list .daff-list-item .daff-prefix{display:flex;align-items:center;height:1.5rem;width:auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
48
22
  }
49
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListComponent, decorators: [{
50
24
  type: Component,
51
- args: [{ selector: 'daff-list' + ',' +
52
- 'daff-nav-list', template: '<ng-content></ng-content>', hostDirectives: [{
25
+ args: [{ selector: 'daff-list', template: '<ng-content></ng-content>', host: {
26
+ 'class': 'daff-list',
27
+ 'role': 'list',
28
+ }, hostDirectives: [{
53
29
  directive: DaffArticleEncapsulatedDirective,
54
- }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [".daff-list{display:block;margin:0;padding:0}.daff-list .daff-list-item{display:flex;gap:16px;padding:12px 16px}.daff-list .daff-list-item__content{flex-grow:1}.daff-list .daff-list-item__content *:nth-child(1){font-size:1rem;font-weight:700;line-height:1.5em;margin:0;padding:0}.daff-list .daff-list-item__content *:nth-child(n+2){font-size:1rem;margin:0;padding:0}.daff-list .daff-list-item .daff-prefix,.daff-list .daff-list-item .daff-suffix{display:flex;align-items:center;z-index:2}.daff-nav-list{display:block;margin:0;padding:0}.daff-nav-list .daff-list-item{display:flex;gap:16px;padding:12px 16px}.daff-nav-list .daff-list-item__content{flex-grow:1}.daff-nav-list .daff-list-item__content *:nth-child(1){font-size:1rem;font-weight:700;line-height:1.5em;margin:0;padding:0}.daff-nav-list .daff-list-item__content *:nth-child(n+2){font-size:1rem;margin:0;padding:0}.daff-nav-list .daff-list-item .daff-prefix,.daff-nav-list .daff-list-item .daff-suffix{display:flex;align-items:center;z-index:2}.daff-nav-list .daff-list-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none;text-decoration:none;position:relative}.daff-nav-list .daff-list-item__content{z-index:2}.daff-nav-list .daff-list-item:after{content:\"\";position:absolute;height:100%;width:100%;top:0;left:0;opacity:0;transition:opacity .3s;z-index:1}.daff-nav-list .daff-list-item:hover:after,.daff-nav-list .daff-list-item.active:after{opacity:1}\n"] }]
55
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { list: [{
56
- type: HostBinding,
57
- args: ['class.daff-list']
58
- }], nav: [{
59
- type: HostBinding,
60
- args: ['class.daff-nav-list']
61
- }], role: [{
62
- type: HostBinding,
63
- args: ['attr.role']
64
- }] } });
30
+ }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".daff-list{display:block;margin:0;padding:0}.daff-list .daff-list-item{display:flex;gap:1rem;padding:.75rem 1rem}.daff-list .daff-list-item__content{font-size:1rem;flex-grow:1}.daff-list .daff-list-item__content>*{margin:0;padding:0}.daff-list .daff-list-item__title{font-size:1rem;font-weight:600;line-height:1.5rem;margin:0;padding:0}.daff-list .daff-list-item .daff-prefix{display:flex;align-items:center;height:1.5rem;width:auto}\n"] }]
31
+ }] });
65
32
 
33
+ /* eslint-disable quote-props */
34
+ /**
35
+ * Individual items within a list.
36
+ *
37
+ * @example
38
+ * ```html
39
+ * <daff-list-item>Standard list item</daff-list-item>
40
+ * <a href="/" daff-list-item> Linked list item</a>
41
+ * ```
42
+ */
66
43
  class DaffListItemComponent {
67
44
  constructor(elementRef) {
68
45
  this.elementRef = elementRef;
69
- /**
70
- * @docs-private
71
- */
72
- this.class = true;
73
- /** Whether or not the header item is active */
46
+ /** Whether an item in a `<daff-nav-list>` is the currently active item. */
74
47
  this.active = false;
75
48
  }
76
- /**
77
- * Sets the role for a regular `<daff-list-item>` to listitem.
78
- *
79
- * @docs-private
80
- */
81
- get role() {
82
- return this._isAnchor() ? null : 'listitem';
83
- }
84
- ;
85
- _getHostElement() {
86
- return this.elementRef.nativeElement;
87
- }
88
- /** Gets whether a list item has one of the given attributes. */
89
- _isAnchor() {
90
- return this.elementRef.nativeElement.localName === 'a';
49
+ get _isAnchor() {
50
+ return this.elementRef.nativeElement.nodeName.toLowerCase() === 'a';
91
51
  }
92
52
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
93
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffListItemComponent, isStandalone: true, selector: "daff-list-item,a[daff-list-item]", inputs: { active: "active" }, host: { properties: { "class.daff-list-item": "this.class", "class.active": "this.active", "attr.role": "this.role" } }, queries: [{ propertyName: "_prefix", first: true, predicate: DaffPrefixDirective, descendants: true }, { propertyName: "_suffix", first: true, predicate: DaffSuffixDirective, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"_prefix\">\n <ng-content select=\"[daffPrefix]\"></ng-content>\n</ng-container>\n<div class=\"daff-list-item__content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"_suffix\">\n <ng-content select=\"[daffSuffix]\"></ng-content>\n</ng-container>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DaffPrefixSuffixModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
53
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DaffListItemComponent, isStandalone: true, selector: "daff-list-item,a[daff-list-item]", inputs: { active: "active" }, host: { properties: { "class.active": "active", "attr.role": "this._isAnchor ? null : \"listitem\"" }, classAttribute: "daff-list-item" }, queries: [{ propertyName: "_prefix", first: true, predicate: DaffPrefixDirective, descendants: true }], ngImport: i0, template: "@if(_prefix) {\n <ng-content select=\"[daffPrefix]\"></ng-content>\n}\n<div class=\"daff-list-item__content\">\n <ng-content></ng-content>\n</div>", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
94
54
  }
95
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListItemComponent, decorators: [{
96
56
  type: Component,
97
57
  args: [{ selector: 'daff-list-item' + ',' +
98
- 'a[daff-list-item]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
99
- NgIf,
100
- DaffPrefixSuffixModule,
101
- ], template: "<ng-container *ngIf=\"_prefix\">\n <ng-content select=\"[daffPrefix]\"></ng-content>\n</ng-container>\n<div class=\"daff-list-item__content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"_suffix\">\n <ng-content select=\"[daffSuffix]\"></ng-content>\n</ng-container>" }]
102
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { class: [{
103
- type: HostBinding,
104
- args: ['class.daff-list-item']
105
- }], active: [{
58
+ 'a[daff-list-item]', host: {
59
+ 'class': 'daff-list-item',
60
+ '[class.active]': 'active',
61
+ '[attr.role]': 'this._isAnchor ? null : "listitem"',
62
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if(_prefix) {\n <ng-content select=\"[daffPrefix]\"></ng-content>\n}\n<div class=\"daff-list-item__content\">\n <ng-content></ng-content>\n</div>" }]
63
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { active: [{
106
64
  type: Input
107
- }, {
108
- type: HostBinding,
109
- args: ['class.active']
110
65
  }], _prefix: [{
111
66
  type: ContentChild,
112
67
  args: [DaffPrefixDirective]
113
- }], _suffix: [{
114
- type: ContentChild,
115
- args: [DaffSuffixDirective]
116
- }], role: [{
117
- type: HostBinding,
118
- args: ['attr.role']
119
68
  }] } });
120
69
 
70
+ /* eslint-disable quote-props */
71
+ /**
72
+ * A navigation list intended for use with anchor elements (`<a>`).
73
+ *
74
+ * @example
75
+ * ```html
76
+ * <daff-nav-list aria-label="Sidebar links">
77
+ * <a href="/" daff-list-item></a>
78
+ * <a href="/" daff-list-item></a>
79
+ * </daff-nav-list>
80
+ * ```
81
+ */
82
+ class DaffNavListComponent {
83
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffNavListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
84
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffNavListComponent, isStandalone: true, selector: "daff-nav-list", host: { attributes: { "role": "navigation" }, classAttribute: "daff-nav-list" }, hostDirectives: [{ directive: i1.DaffArticleEncapsulatedDirective }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".daff-nav-list{display:block;margin:0;padding:0}.daff-nav-list .daff-list-item{display:flex;gap:1rem;padding:.75rem 1rem}.daff-nav-list .daff-list-item__content{font-size:1rem;flex-grow:1}.daff-nav-list .daff-list-item__content>*{margin:0;padding:0}.daff-nav-list .daff-list-item__title{font-size:1rem;font-weight:600;line-height:1.5rem;margin:0;padding:0}.daff-nav-list .daff-list-item .daff-prefix{display:flex;align-items:center;height:1.5rem;width:auto}.daff-nav-list .daff-list-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;position:relative}.daff-nav-list .daff-list-item__content{z-index:2}.daff-nav-list .daff-list-item:after{content:\"\";position:absolute;height:100%;width:100%;top:0;left:0;opacity:0;transition:opacity .3s;z-index:1}.daff-nav-list .daff-list-item:hover:after,.daff-nav-list .daff-list-item.active:after{opacity:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
85
+ }
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffNavListComponent, decorators: [{
87
+ type: Component,
88
+ args: [{ selector: 'daff-nav-list', template: '<ng-content></ng-content>', host: {
89
+ 'class': 'daff-nav-list',
90
+ 'role': 'navigation',
91
+ }, hostDirectives: [
92
+ {
93
+ directive: DaffArticleEncapsulatedDirective,
94
+ },
95
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".daff-nav-list{display:block;margin:0;padding:0}.daff-nav-list .daff-list-item{display:flex;gap:1rem;padding:.75rem 1rem}.daff-nav-list .daff-list-item__content{font-size:1rem;flex-grow:1}.daff-nav-list .daff-list-item__content>*{margin:0;padding:0}.daff-nav-list .daff-list-item__title{font-size:1rem;font-weight:600;line-height:1.5rem;margin:0;padding:0}.daff-nav-list .daff-list-item .daff-prefix{display:flex;align-items:center;height:1.5rem;width:auto}.daff-nav-list .daff-list-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;position:relative}.daff-nav-list .daff-list-item__content{z-index:2}.daff-nav-list .daff-list-item:after{content:\"\";position:absolute;height:100%;width:100%;top:0;left:0;opacity:0;transition:opacity .3s;z-index:1}.daff-nav-list .daff-list-item:hover:after,.daff-nav-list .daff-list-item.active:after{opacity:1}\n"] }]
96
+ }] });
97
+
121
98
  /**
122
99
  * @deprecated in favor of {@link DAFF_LIST_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.
123
100
  */
@@ -125,11 +102,12 @@ class DaffListModule {
125
102
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
126
103
  /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.11", ngImport: i0, type: DaffListModule, imports: [CommonModule,
127
104
  DaffListComponent,
105
+ DaffNavListComponent,
128
106
  DaffListItemComponent], exports: [DaffListComponent,
107
+ DaffNavListComponent,
129
108
  DaffListItemComponent,
130
109
  DaffPrefixSuffixModule] }); }
131
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListModule, imports: [CommonModule,
132
- DaffListItemComponent, DaffPrefixSuffixModule] }); }
110
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListModule, imports: [CommonModule, DaffPrefixSuffixModule] }); }
133
111
  }
134
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListModule, decorators: [{
135
113
  type: NgModule,
@@ -137,28 +115,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
137
115
  imports: [
138
116
  CommonModule,
139
117
  DaffListComponent,
118
+ DaffNavListComponent,
140
119
  DaffListItemComponent,
141
120
  ],
142
121
  exports: [
143
122
  DaffListComponent,
123
+ DaffNavListComponent,
144
124
  DaffListItemComponent,
145
125
  DaffPrefixSuffixModule,
146
126
  ],
147
127
  }]
148
128
  }] });
149
129
 
130
+ /* eslint-disable quote-props */
131
+ /**
132
+ * Used to identify the primary title of a list item within a multi-line list.
133
+ *
134
+ * @example
135
+ * ```html
136
+ * <div daffListItemTitle>Title</div>
137
+ * ```
138
+ */
139
+ class DaffListItemTitleDirective {
140
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListItemTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
141
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: DaffListItemTitleDirective, isStandalone: true, selector: "[daffListItemTitle]", host: { classAttribute: "daff-list-item__title" }, ngImport: i0 }); }
142
+ }
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffListItemTitleDirective, decorators: [{
144
+ type: Directive,
145
+ args: [{
146
+ selector: '[daffListItemTitle]',
147
+ host: {
148
+ 'class': 'daff-list-item__title',
149
+ },
150
+ }]
151
+ }] });
152
+
150
153
  /**
151
154
  * @docs-private
152
155
  */
153
156
  const DAFF_LIST_COMPONENTS = [
154
157
  DaffListComponent,
155
158
  DaffListItemComponent,
156
- DaffPrefixSuffixModule,
159
+ DaffListItemTitleDirective,
160
+ DaffPrefixDirective,
161
+ ];
162
+ /**
163
+ * @docs-private
164
+ */
165
+ const DAFF_NAV_LIST_COMPONENTS = [
166
+ DaffNavListComponent,
167
+ DaffListItemComponent,
168
+ DaffListItemTitleDirective,
169
+ DaffPrefixDirective,
157
170
  ];
158
171
 
159
172
  /**
160
173
  * Generated bundle index. Do not edit.
161
174
  */
162
175
 
163
- export { DAFF_LIST_COMPONENTS, DaffListComponent, DaffListItemComponent, DaffListModule };
176
+ export { DAFF_LIST_COMPONENTS, DAFF_NAV_LIST_COMPONENTS, DaffListComponent, DaffListItemComponent, DaffListItemTitleDirective, DaffListModule, DaffNavListComponent };
164
177
  //# sourceMappingURL=daffodil-design-list.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-design-list.mjs","sources":["../../../libs/design/list/src/list/list.component.ts","../../../libs/design/list/src/list-item/list-item.component.ts","../../../libs/design/list/src/list-item/list-item.component.html","../../../libs/design/list/src/list.module.ts","../../../libs/design/list/src/list.ts","../../../libs/design/list/src/daffodil-design-list.ts"],"sourcesContent":["import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n HostBinding,\n ElementRef,\n} from '@angular/core';\n\nimport { DaffArticleEncapsulatedDirective } from '@daffodil/design';\n\nexport type DaffListType = 'daff-list' | 'daff-nav-list';\n\nenum DaffListTypeEnum {\n Default = 'daff-list',\n Nav = 'daff-nav-list'\n}\n\n@Component({\n selector:\n 'daff-list' + ',' +\n 'daff-nav-list',\n template: '<ng-content></ng-content>',\n styleUrls: ['./list.component.scss'],\n hostDirectives: [{\n directive: DaffArticleEncapsulatedDirective,\n }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\n\nexport class DaffListComponent {\n /**\n * @docs-private\n */\n @HostBinding('class.daff-list') get list() {\n return this.listType === DaffListTypeEnum.Default;\n }\n\n /**\n * @docs-private\n */\n get listType(): DaffListType {\n return this._getHostElement().localName;\n }\n\n constructor(private elementRef: ElementRef) {}\n\n /**\n * @docs-private\n */\n @HostBinding('class.daff-nav-list') get nav() {\n return this.listType === DaffListTypeEnum.Nav;\n }\n\n /**\n * Sets the role for a `<daff-nav-list>` to navigation.\n *\n * @docs-private\n */\n @HostBinding('attr.role') get role() {\n return this.listType === DaffListTypeEnum.Nav ? 'navigation' : 'list';\n };\n\n private _getHostElement() {\n return this.elementRef.nativeElement;\n }\n}\n","import { NgIf } from '@angular/common';\nimport {\n Component,\n ChangeDetectionStrategy,\n HostBinding,\n ContentChild,\n ElementRef,\n Input,\n} from '@angular/core';\n\nimport {\n DaffPrefixDirective,\n DaffPrefixSuffixModule,\n DaffSuffixDirective,\n} from '@daffodil/design';\n\n@Component({\n selector: 'daff-list-item' + ',' +\n 'a[daff-list-item]',\n templateUrl: './list-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n DaffPrefixSuffixModule,\n ],\n})\n\nexport class DaffListItemComponent {\n\n /**\n * @docs-private\n */\n @HostBinding('class.daff-list-item') class = true;\n\n /** Whether or not the header item is active */\n @Input() @HostBinding('class.active') active = false;\n\n /**\n * @docs-private\n */\n @ContentChild(DaffPrefixDirective) _prefix: DaffPrefixDirective;\n /**\n * @docs-private\n */\n @ContentChild(DaffSuffixDirective) _suffix: DaffSuffixDirective;\n\n constructor(private elementRef: ElementRef) {}\n\n /**\n * Sets the role for a regular `<daff-list-item>` to listitem.\n *\n * @docs-private\n */\n @HostBinding('attr.role') get role() {\n return this._isAnchor() ? null : 'listitem';\n };\n\n private _getHostElement() {\n return this.elementRef.nativeElement;\n }\n\n /** Gets whether a list item has one of the given attributes. */\n private _isAnchor() {\n return this.elementRef.nativeElement.localName === 'a';\n }\n}\n","<ng-container *ngIf=\"_prefix\">\n <ng-content select=\"[daffPrefix]\"></ng-content>\n</ng-container>\n<div class=\"daff-list-item__content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"_suffix\">\n <ng-content select=\"[daffSuffix]\"></ng-content>\n</ng-container>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffPrefixSuffixModule } from '@daffodil/design';\n\nimport { DaffListComponent } from './list/list.component';\nimport { DaffListItemComponent } from './list-item/list-item.component';\n\n/**\n * @deprecated in favor of {@link DAFF_LIST_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n CommonModule,\n DaffListComponent,\n DaffListItemComponent,\n ],\n exports: [\n DaffListComponent,\n DaffListItemComponent,\n DaffPrefixSuffixModule,\n ],\n})\nexport class DaffListModule { }\n","import { DaffPrefixSuffixModule } from '@daffodil/design';\n\nimport { DaffListComponent } from './list/list.component';\nimport { DaffListItemComponent } from './list-item/list-item.component';\n\n/**\n * @docs-private\n */\nexport const DAFF_LIST_COMPONENTS = <const> [\n DaffListComponent,\n DaffListItemComponent,\n DaffPrefixSuffixModule,\n];\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-list.mjs","sources":["../../../libs/design/list/src/list/list.component.ts","../../../libs/design/list/src/list-item/list-item.component.ts","../../../libs/design/list/src/list-item/list-item.component.html","../../../libs/design/list/src/nav-list/nav-list.component.ts","../../../libs/design/list/src/list.module.ts","../../../libs/design/list/src/list-item-title/list-item-title.directive.ts","../../../libs/design/list/src/list.ts","../../../libs/design/list/src/daffodil-design-list.ts"],"sourcesContent":["import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { DaffArticleEncapsulatedDirective } from '@daffodil/design';\n\n/* eslint-disable quote-props */\n/**\n * A standard list used for grouping generic content.\n *\n * @example\n * ```html\n * <daff-list>\n * <daff-list-item>List item</daff-list-item>\n * <daff-list-item>List item</daff-list-item>\n * </daff-list>\n * ```\n */\n@Component({\n selector: 'daff-list',\n template: '<ng-content></ng-content>',\n styleUrls: ['./list.component.scss'],\n host: {\n 'class': 'daff-list',\n 'role': 'list',\n },\n hostDirectives: [{\n directive: DaffArticleEncapsulatedDirective,\n }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class DaffListComponent { }\n","import {\n Component,\n ChangeDetectionStrategy,\n ContentChild,\n ElementRef,\n Input,\n} from '@angular/core';\n\nimport { DaffPrefixDirective } from '@daffodil/design';\n\n/* eslint-disable quote-props */\n/**\n * Individual items within a list.\n *\n * @example\n * ```html\n * <daff-list-item>Standard list item</daff-list-item>\n * <a href=\"/\" daff-list-item> Linked list item</a>\n * ```\n */\n@Component({\n selector:\n 'daff-list-item' + ',' +\n 'a[daff-list-item]',\n templateUrl: './list-item.component.html',\n host: {\n 'class': 'daff-list-item',\n '[class.active]': 'active',\n '[attr.role]': 'this._isAnchor ? null : \"listitem\"',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class DaffListItemComponent {\n /** Whether an item in a `<daff-nav-list>` is the currently active item. */\n @Input() active = false;\n\n /**\n * @docs-private\n */\n @ContentChild(DaffPrefixDirective) _prefix: DaffPrefixDirective;\n\n constructor(private elementRef: ElementRef) {}\n\n private get _isAnchor() {\n return this.elementRef.nativeElement.nodeName.toLowerCase() === 'a';\n }\n}\n","@if(_prefix) {\n <ng-content select=\"[daffPrefix]\"></ng-content>\n}\n<div class=\"daff-list-item__content\">\n <ng-content></ng-content>\n</div>","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { DaffArticleEncapsulatedDirective } from '@daffodil/design';\n\n/* eslint-disable quote-props */\n/**\n * A navigation list intended for use with anchor elements (`<a>`).\n *\n * @example\n * ```html\n * <daff-nav-list aria-label=\"Sidebar links\">\n * <a href=\"/\" daff-list-item></a>\n * <a href=\"/\" daff-list-item></a>\n * </daff-nav-list>\n * ```\n */\n@Component({\n selector: 'daff-nav-list',\n template: '<ng-content></ng-content>',\n styleUrl: './nav-list.component.scss',\n host: {\n 'class': 'daff-nav-list',\n 'role': 'navigation',\n },\n hostDirectives: [\n {\n directive: DaffArticleEncapsulatedDirective,\n },\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class DaffNavListComponent {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffPrefixSuffixModule } from '@daffodil/design';\n\nimport { DaffListComponent } from './list/list.component';\nimport { DaffListItemComponent } from './list-item/list-item.component';\nimport { DaffNavListComponent } from './nav-list/nav-list.component';\n\n/**\n * @deprecated in favor of {@link DAFF_LIST_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n CommonModule,\n DaffListComponent,\n DaffNavListComponent,\n DaffListItemComponent,\n ],\n exports: [\n DaffListComponent,\n DaffNavListComponent,\n DaffListItemComponent,\n DaffPrefixSuffixModule,\n ],\n})\nexport class DaffListModule { }\n","import { Directive } from '@angular/core';\n\n/* eslint-disable quote-props */\n/**\n * Used to identify the primary title of a list item within a multi-line list.\n *\n * @example\n * ```html\n * <div daffListItemTitle>Title</div>\n * ```\n */\n@Directive({\n selector: '[daffListItemTitle]',\n host: {\n 'class': 'daff-list-item__title',\n },\n})\n\nexport class DaffListItemTitleDirective {}\n","import { DaffPrefixDirective } from '@daffodil/design';\n\nimport { DaffListComponent } from './list/list.component';\nimport { DaffListItemComponent } from './list-item/list-item.component';\nimport { DaffListItemTitleDirective } from './list-item-title/list-item-title.directive';\nimport { DaffNavListComponent } from './nav-list/nav-list.component';\n\n/**\n * @docs-private\n */\nexport const DAFF_LIST_COMPONENTS = <const> [\n DaffListComponent,\n DaffListItemComponent,\n DaffListItemTitleDirective,\n DaffPrefixDirective,\n];\n\n/**\n * @docs-private\n */\nexport const DAFF_NAV_LIST_COMPONENTS = <const> [\n DaffNavListComponent,\n DaffListItemComponent,\n DaffListItemTitleDirective,\n DaffPrefixDirective,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { NgTemplateOutlet, CommonModule } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { isDevMode, Input, Inject, Directive, EventEmitter, contentChildren, computed, signal, ElementRef, ViewChildren, Output, HostBinding, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
+ import { isDevMode, Input, Inject, Directive, EventEmitter, contentChildren, computed, signal, ElementRef, ViewChildren, Output, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
4
4
  import * as i1 from '@daffodil/design';
5
5
  import { DaffSelectableDirective, DaffArticleEncapsulatedDirective, DaffSkeletonableDirective } from '@daffodil/design';
6
6
  import { createSingleInjectionToken } from '@daffodil/core';
@@ -87,6 +87,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
87
87
  type: Input
88
88
  }] } });
89
89
 
90
+ /* eslint-disable quote-props */
90
91
  let uniqueGalleryId = 0;
91
92
  /**
92
93
  * The `DaffMediaGalleryComonent` is used to display a group of thumbnails in a gallery format.
@@ -122,12 +123,6 @@ class DaffMediaGalleryComponent {
122
123
  * The internal ID of the gallery.
123
124
  */
124
125
  this._id = 'media-gallery-' + uniqueGalleryId;
125
- /**
126
- * @docs-private
127
- *
128
- * Adds a class for styling the media gallery
129
- */
130
- this.class = true;
131
126
  /**
132
127
  * An event indicating that the selected media gallery element has changed.
133
128
  */
@@ -218,15 +213,13 @@ class DaffMediaGalleryComponent {
218
213
  }
219
214
  }
220
215
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffMediaGalleryComponent, deps: [{ token: i1.DaffSkeletonableDirective }], target: i0.ɵɵFactoryTarget.Component }); }
221
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DaffMediaGalleryComponent, isStandalone: true, selector: "daff-media-gallery", inputs: { id: "id" }, outputs: { elementChange: "elementChange" }, host: { properties: { "attr.id": "this.id", "class.daff-media-gallery": "this.class" } }, providers: [
222
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
216
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DaffMediaGalleryComponent, isStandalone: true, selector: "daff-media-gallery", inputs: { id: "id" }, outputs: { elementChange: "elementChange" }, host: { properties: { "attr.id": "id" }, classAttribute: "daff-media-gallery" }, providers: [
223
217
  { provide: DAFF_MEDIA_GALLERY_TOKEN, useExisting: DaffMediaGalleryComponent },
224
218
  ], queries: [{ propertyName: "_thumbnails", predicate: DaffThumbnailDirective, isSignal: true }], viewQueries: [{ propertyName: "_thumbnailButtons", predicate: ["thumbnailButtons"], descendants: true, read: ElementRef }], hostDirectives: [{ directive: i1.DaffArticleEncapsulatedDirective }, { directive: i1.DaffSkeletonableDirective, inputs: ["skeleton", "skeleton"] }], ngImport: i0, template: "<ng-content></ng-content>\n\n<div class=\"daff-media-gallery__thumbnails\" #thumbnailsEl role=\"tablist\">\n\t@if(skeleton) {\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t}\n\t@else {\n\t\t@for (thumbnail of _thumbnails(); track thumbnail; let index = $index) {\n\t\t\t<button \n\t\t\t\t#thumbnailButtons\n\t\t\t\tclass=\"daff-thumbnail\" \n\t\t\t\trole=\"tab\"\n\t\t\t\tdaffSelected\n\t\t\t\t[selected]=\"thumbnail === _selectedThumbnail()\"\n\t\t\t\tattr.aria-label=\"{{ thumbnail.label ?? 'Gallery Element ' + (index + 1) }}\"\n\t\t\t\t[attr.aria-selected]=\"thumbnail === _selectedThumbnail() ? 'true' : 'false'\"\n\t\t\t\t[attr.aria-controls]=\"thumbnail.selectedThumbnailId\"\n\t\t\t\t[attr.tabindex]=\"thumbnail === _selectedThumbnail() ? 0 : -1\"\n\t\t\t\t(click)=\"selectIndex(index)\"\n\t\t\t\t[attr.id]=\"thumbnail.id\" \n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t@if (thumbnail.thumbnailSrc) {\n\t\t\t\t\t<img [src]=\"thumbnail.thumbnailSrc\" aria-hidden=\"true\"/>\n\t\t\t\t}\n\t\t\t\t@if (thumbnail.isVideo) {\n\t\t\t\t\t<div class=\"daff-media-gallery__video-button\">\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n@let selectedEl = this._selectedThumbnail();\n<div \n\tclass=\"daff-media-gallery__selected-thumbnail\"\n\ttabindex=\"0\"\n\t#selectedThumbnail\n\trole=\"tabpanel\"\n\t[attr.id]=\"selectedEl?.selectedThumbnailId\">\n\t\t@if(selectedEl) {\n\t\t\t<ng-container *ngTemplateOutlet=\"selectedEl.templateRef\"></ng-container>\n\t\t}\n\t\t@else {\n\t\t\t<div class=\"daff-media-gallery__skeleton-placeholder\"></div>\n\t\t}\n</div>", styles: [":host(.daff-media-gallery){display:flex;flex-direction:column;gap:.5rem}@media (min-width: 1024px){:host(.daff-media-gallery){flex-direction:row}}:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;display:flex;flex-direction:row;justify-content:center;align-items:center;height:4rem;width:4rem;max-width:100%;overflow:hidden;user-select:none;padding:0;position:relative;flex-shrink:0}@media (min-width: 480px){:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{height:4.5rem;width:4.5rem}}@media (min-width: 1024px){:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{flex-direction:column;height:5rem;width:5rem}}:host(.daff-media-gallery) ::ng-deep .daff-thumbnail img{display:block;width:100%}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative;height:4rem;width:4rem;border-radius:0}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:4rem;width:4rem;position:absolute;top:0;left:0}@media (min-width: 480px){:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative;height:4.5rem;width:4.5rem;border-radius:0}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:4.5rem;width:4.5rem;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}}@media (min-width: 1024px){:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative;height:5rem;width:5rem;border-radius:0}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:5rem;width:5rem;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}}:host(.daff-media-gallery).daff-skeleton ::ng-deep img{opacity:0}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__selected-thumbnail{flex-grow:1;display:flex;position:relative;height:100%;width:100%;border-radius:0}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__selected-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:100%;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__skeleton-placeholder{height:16rem}@media (min-width: 1024px){:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__skeleton-placeholder{height:30rem}}.daff-media-gallery__thumbnails{display:flex;flex-direction:row;flex-shrink:0;gap:.25rem;order:2;max-width:100%;overflow-x:auto}@media (min-width: 1024px){.daff-media-gallery__thumbnails{max-height:29.5rem;flex-direction:column;overflow-y:auto;order:1}}.daff-media-gallery__selected-thumbnail{display:flex;align-items:center;justify-content:center;flex-grow:1;width:100%;order:1}@media (min-width: 1024px){.daff-media-gallery__selected-thumbnail{order:2;margin:0}}.daff-media-gallery__video-button{width:2rem;height:2rem;border-radius:100%;position:absolute}.daff-media-gallery__video-button:after{content:\"\";position:absolute;width:.75rem;height:.75rem;left:60%;top:50%;transform:translate(-60%,-50%) rotate(90deg);clip-path:polygon(50% 15%,0% 100%,100% 100%);transition:all .4s ease-in-out}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: DaffSelectableDirective, selector: "[daffSelected]", inputs: ["selected"], outputs: ["becameSelected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
225
219
  }
226
220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffMediaGalleryComponent, decorators: [{
227
221
  type: Component,
228
222
  args: [{ selector: 'daff-media-gallery', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
229
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
230
223
  { provide: DAFF_MEDIA_GALLERY_TOKEN, useExisting: DaffMediaGalleryComponent },
231
224
  ], hostDirectives: [
232
225
  { directive: DaffArticleEncapsulatedDirective },
@@ -234,19 +227,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
234
227
  directive: DaffSkeletonableDirective,
235
228
  inputs: ['skeleton'],
236
229
  },
237
- ], imports: [
230
+ ], host: {
231
+ 'class': 'daff-media-gallery',
232
+ '[attr.id]': 'id',
233
+ }, imports: [
238
234
  DaffThumbnailDirective,
239
235
  NgTemplateOutlet,
240
236
  DaffSelectableDirective,
241
237
  ], template: "<ng-content></ng-content>\n\n<div class=\"daff-media-gallery__thumbnails\" #thumbnailsEl role=\"tablist\">\n\t@if(skeleton) {\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t}\n\t@else {\n\t\t@for (thumbnail of _thumbnails(); track thumbnail; let index = $index) {\n\t\t\t<button \n\t\t\t\t#thumbnailButtons\n\t\t\t\tclass=\"daff-thumbnail\" \n\t\t\t\trole=\"tab\"\n\t\t\t\tdaffSelected\n\t\t\t\t[selected]=\"thumbnail === _selectedThumbnail()\"\n\t\t\t\tattr.aria-label=\"{{ thumbnail.label ?? 'Gallery Element ' + (index + 1) }}\"\n\t\t\t\t[attr.aria-selected]=\"thumbnail === _selectedThumbnail() ? 'true' : 'false'\"\n\t\t\t\t[attr.aria-controls]=\"thumbnail.selectedThumbnailId\"\n\t\t\t\t[attr.tabindex]=\"thumbnail === _selectedThumbnail() ? 0 : -1\"\n\t\t\t\t(click)=\"selectIndex(index)\"\n\t\t\t\t[attr.id]=\"thumbnail.id\" \n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t@if (thumbnail.thumbnailSrc) {\n\t\t\t\t\t<img [src]=\"thumbnail.thumbnailSrc\" aria-hidden=\"true\"/>\n\t\t\t\t}\n\t\t\t\t@if (thumbnail.isVideo) {\n\t\t\t\t\t<div class=\"daff-media-gallery__video-button\">\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n@let selectedEl = this._selectedThumbnail();\n<div \n\tclass=\"daff-media-gallery__selected-thumbnail\"\n\ttabindex=\"0\"\n\t#selectedThumbnail\n\trole=\"tabpanel\"\n\t[attr.id]=\"selectedEl?.selectedThumbnailId\">\n\t\t@if(selectedEl) {\n\t\t\t<ng-container *ngTemplateOutlet=\"selectedEl.templateRef\"></ng-container>\n\t\t}\n\t\t@else {\n\t\t\t<div class=\"daff-media-gallery__skeleton-placeholder\"></div>\n\t\t}\n</div>", styles: [":host(.daff-media-gallery){display:flex;flex-direction:column;gap:.5rem}@media (min-width: 1024px){:host(.daff-media-gallery){flex-direction:row}}:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;display:flex;flex-direction:row;justify-content:center;align-items:center;height:4rem;width:4rem;max-width:100%;overflow:hidden;user-select:none;padding:0;position:relative;flex-shrink:0}@media (min-width: 480px){:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{height:4.5rem;width:4.5rem}}@media (min-width: 1024px){:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{flex-direction:column;height:5rem;width:5rem}}:host(.daff-media-gallery) ::ng-deep .daff-thumbnail img{display:block;width:100%}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative;height:4rem;width:4rem;border-radius:0}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:4rem;width:4rem;position:absolute;top:0;left:0}@media (min-width: 480px){:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative;height:4.5rem;width:4.5rem;border-radius:0}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:4.5rem;width:4.5rem;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}}@media (min-width: 1024px){:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative;height:5rem;width:5rem;border-radius:0}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:5rem;width:5rem;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}}:host(.daff-media-gallery).daff-skeleton ::ng-deep img{opacity:0}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__selected-thumbnail{flex-grow:1;display:flex;position:relative;height:100%;width:100%;border-radius:0}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__selected-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:100%;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__skeleton-placeholder{height:16rem}@media (min-width: 1024px){:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__skeleton-placeholder{height:30rem}}.daff-media-gallery__thumbnails{display:flex;flex-direction:row;flex-shrink:0;gap:.25rem;order:2;max-width:100%;overflow-x:auto}@media (min-width: 1024px){.daff-media-gallery__thumbnails{max-height:29.5rem;flex-direction:column;overflow-y:auto;order:1}}.daff-media-gallery__selected-thumbnail{display:flex;align-items:center;justify-content:center;flex-grow:1;width:100%;order:1}@media (min-width: 1024px){.daff-media-gallery__selected-thumbnail{order:2;margin:0}}.daff-media-gallery__video-button{width:2rem;height:2rem;border-radius:100%;position:absolute}.daff-media-gallery__video-button:after{content:\"\";position:absolute;width:.75rem;height:.75rem;left:60%;top:50%;transform:translate(-60%,-50%) rotate(90deg);clip-path:polygon(50% 15%,0% 100%,100% 100%);transition:all .4s ease-in-out}\n"] }]
242
238
  }], ctorParameters: () => [{ type: i1.DaffSkeletonableDirective }], propDecorators: { id: [{
243
- type: HostBinding,
244
- args: ['attr.id']
245
- }, {
246
239
  type: Input
247
- }], class: [{
248
- type: HostBinding,
249
- args: ['class.daff-media-gallery']
250
240
  }], elementChange: [{
251
241
  type: Output
252
242
  }], _thumbnailButtons: [{
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-design-media-gallery.mjs","sources":["../../../libs/design/media-gallery/src/helpers/media-gallery-token.ts","../../../libs/design/media-gallery/src/thumbnail/thumbnail.directive.ts","../../../libs/design/media-gallery/src/media-gallery/media-gallery.component.ts","../../../libs/design/media-gallery/src/media-gallery/media-gallery.component.html","../../../libs/design/media-gallery/src/media-gallery.module.ts","../../../libs/design/media-gallery/src/media-gallery.ts","../../../libs/design/media-gallery/src/daffodil-design-media-gallery.ts"],"sourcesContent":["import { createSingleInjectionToken } from '@daffodil/core';\n\nimport { DaffMediaGalleryRegistration } from './media-gallery-registration.interface';\n\nexport const {\n token: DAFF_MEDIA_GALLERY_TOKEN,\n /**\n * Provider function for {@link DAFF_MEDIA_GALLERY_TOKEN}.\n */\n provider: provideDaffMediaGalleryToken,\n} = createSingleInjectionToken<DaffMediaGalleryRegistration>('DAFF_MEDIA_GALLERY_TOKEN');\n","import {\n Directive,\n Inject,\n Input,\n TemplateRef,\n OnInit,\n isDevMode,\n} from '@angular/core';\n\nimport { DaffMediaGalleryRegistration } from '../helpers/media-gallery-registration.interface';\nimport { DAFF_MEDIA_GALLERY_TOKEN } from '../helpers/media-gallery-token';\n\nlet uniqueThumbnailId = 0;\n\n/**\n * DaffThumbnailDirective is a structural directive used to mark elements as thumbnails within the `DaffMediaGalleryComponent`.\n *\n * ```html\n * <ng-template daffThumbnail></ng-template>\n * ```\n */\n@Directive({\n selector: '[daffThumbnail]',\n})\nexport class DaffThumbnailDirective implements OnInit {\n\n private _increment = uniqueThumbnailId;\n\n /**\n * @docs-private\n *\n * The autogenerated unique id for a thumbnail.\n */\n get id(): string {\n return this.gallery.id + '-thumbnail-' + this._increment;\n }\n\n /**\n * @docs-private\n *\n * The unique id of the selected thumbnail.\n */\n get selectedThumbnailId(): string {\n return this.id + '-selected';\n }\n\n /**\n * The file path to a thumbnail, presumably an image.\n */\n @Input() thumbnailSrc = undefined;\n\n /**\n * Provides an accessible label for a thumbnail.\n */\n @Input() label: string = undefined;\n\n /** Indicates whether the thumbnail represents a video. */\n @Input() isVideo = false;\n\n constructor(\n /**\n * @docs-private\n */\n @Inject(DAFF_MEDIA_GALLERY_TOKEN) public gallery: DaffMediaGalleryRegistration,\n /**\n * @docs-private\n */\n public templateRef: TemplateRef<unknown>,\n ) {\n uniqueThumbnailId++;\n }\n\n /**\n * @docs-private\n */\n ngOnInit() {\n if(!this.label && isDevMode()) {\n console.warn('The thumbnail ' + this.id + ' is missing a label.');\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n HostBinding,\n ChangeDetectionStrategy,\n Input,\n QueryList,\n ViewChildren,\n ElementRef,\n Output,\n EventEmitter,\n contentChildren,\n signal,\n computed,\n Signal,\n} from '@angular/core';\n\nimport {\n DaffArticleEncapsulatedDirective,\n DaffSelectableDirective,\n DaffSkeletonableDirective,\n} from '@daffodil/design';\n\nimport { DaffMediaGalleryRegistration } from '../helpers/media-gallery-registration.interface';\nimport { DAFF_MEDIA_GALLERY_TOKEN } from '../helpers/media-gallery-token';\nimport { DaffThumbnailDirective } from '../thumbnail/thumbnail.directive';\n\nlet uniqueGalleryId = 0;\n\n/**\n * The `DaffMediaGalleryComonent` is used to display a group of thumbnails in a gallery format.\n *\n * ```html\n * <daff-media-gallery>\n * <ng-template daffThumbnail thumbnailSrc=\"/thumbnail-path.jpg\" label=\"Your description\">\n * <daff-image src=\"/image-path.jpg\" alt=\"Your description\" width=\"100\" height=\"100\"></daff-image>\n * </ng-template>\n * </daff-media-gallery>\n * ```\n */\n@Component({\n selector: 'daff-media-gallery',\n templateUrl: './media-gallery.component.html',\n styleUrls: ['./media-gallery.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n { provide: DAFF_MEDIA_GALLERY_TOKEN, useExisting: DaffMediaGalleryComponent },\n ],\n hostDirectives: [\n { directive: DaffArticleEncapsulatedDirective },\n {\n directive: DaffSkeletonableDirective,\n inputs: ['skeleton'],\n },\n ],\n imports: [\n DaffThumbnailDirective,\n NgTemplateOutlet,\n DaffSelectableDirective,\n ],\n})\nexport class DaffMediaGalleryComponent implements DaffMediaGalleryRegistration {\n /**\n * The internal ID of the gallery.\n */\n private _id = 'media-gallery-' + uniqueGalleryId;\n\n /**\n * Custom ID for the media gallery that overrides the auto-generated one. When using this input, it is your responsibility to ensure that the ID is unique.\n */\n @HostBinding('attr.id')\n @Input()\n get id() {\n return this._id;\n }\n set id(val: string | undefined | null) {\n if(!val){\n return;\n }\n this._id = val;\n };\n\n /**\n * @docs-private\n *\n * Adds a class for styling the media gallery\n */\n @HostBinding('class.daff-media-gallery') private class = true;\n\n /**\n * An event indicating that the selected media gallery element has changed.\n */\n @Output() elementChange: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * @docs-private\n */\n _thumbnails = contentChildren(DaffThumbnailDirective);\n\n /**\n * @docs-private\n */\n @ViewChildren('thumbnailButtons', { read: ElementRef }) private _thumbnailButtons: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @docs-private\n */\n constructor(private skeletonDirective: DaffSkeletonableDirective) {\n uniqueGalleryId++;\n }\n\n /**\n * @docs-private\n *\n * Whether or not the component its currently displaying its skeleton state.\n */\n get skeleton() {\n return this.skeletonDirective.skeleton;\n }\n\n /**\n * @docs-private\n */\n _selectedThumbnail: Signal<DaffThumbnailDirective> = computed(() => {\n const idx = this._selectedIndex();\n if(!idx) {\n return this._thumbnails().at(0);\n }\n return this._thumbnails().at(idx);\n });\n\n private _selectedIndex = signal<number | null>(null);\n\n private focusSelected() {\n this._thumbnailButtons.get(this._selectedIndex())?.nativeElement.focus();\n }\n\n /**\n * Select a specific entry in the media gallery by its index.\n *\n * @param index The index to set, starting at 0.\n */\n selectIndex(index: number) {\n this._selectedIndex.set(index);\n this.elementChange.emit(index);\n }\n\n /**\n * Navigate to the next element in the list of thumbnails.\n *\n * @param focus Whether to move focus to the newly selected item.\n */\n next(focus: boolean = true) {\n this._selectedIndex.update((curr) => ((curr ?? 0) + 1 + this._thumbnails().length) % this._thumbnails().length);\n this.elementChange.emit(this._selectedIndex());\n\n if(focus) {\n this.focusSelected();\n }\n }\n\n /**\n * Navigate to the previous element in the list of thumbnails.\n *\n * @param focus Whether to move focus to the newly selected item.\n */\n previous(focus: boolean = true) {\n this._selectedIndex.update((curr) => ((curr ?? 0) - 1 + this._thumbnails().length) % this._thumbnails().length);\n this.elementChange.emit(this._selectedIndex());\n\n if(focus) {\n this.focusSelected();\n }\n }\n\n /**\n * Select the first element.\n *\n * @param focus Whether to move focus to the newly selected item.\n */\n selectFirst(focus: boolean = true) {\n this._selectedIndex.set(0);\n this.elementChange.emit(this._selectedIndex());\n\n if(focus) {\n this.focusSelected();\n }\n }\n\n /**\n * Select the last element of the gallery.\n *\n * @param Whether to move focus to the newly selected item.\n */\n selectLast(focus: boolean = true) {\n this._selectedIndex.set(this._thumbnails().length - 1);\n this.elementChange.emit(this._selectedIndex());\n\n if(focus) {\n this.focusSelected();\n }\n }\n}\n","<ng-content></ng-content>\n\n<div class=\"daff-media-gallery__thumbnails\" #thumbnailsEl role=\"tablist\">\n\t@if(skeleton) {\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t}\n\t@else {\n\t\t@for (thumbnail of _thumbnails(); track thumbnail; let index = $index) {\n\t\t\t<button \n\t\t\t\t#thumbnailButtons\n\t\t\t\tclass=\"daff-thumbnail\" \n\t\t\t\trole=\"tab\"\n\t\t\t\tdaffSelected\n\t\t\t\t[selected]=\"thumbnail === _selectedThumbnail()\"\n\t\t\t\tattr.aria-label=\"{{ thumbnail.label ?? 'Gallery Element ' + (index + 1) }}\"\n\t\t\t\t[attr.aria-selected]=\"thumbnail === _selectedThumbnail() ? 'true' : 'false'\"\n\t\t\t\t[attr.aria-controls]=\"thumbnail.selectedThumbnailId\"\n\t\t\t\t[attr.tabindex]=\"thumbnail === _selectedThumbnail() ? 0 : -1\"\n\t\t\t\t(click)=\"selectIndex(index)\"\n\t\t\t\t[attr.id]=\"thumbnail.id\" \n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t@if (thumbnail.thumbnailSrc) {\n\t\t\t\t\t<img [src]=\"thumbnail.thumbnailSrc\" aria-hidden=\"true\"/>\n\t\t\t\t}\n\t\t\t\t@if (thumbnail.isVideo) {\n\t\t\t\t\t<div class=\"daff-media-gallery__video-button\">\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n@let selectedEl = this._selectedThumbnail();\n<div \n\tclass=\"daff-media-gallery__selected-thumbnail\"\n\ttabindex=\"0\"\n\t#selectedThumbnail\n\trole=\"tabpanel\"\n\t[attr.id]=\"selectedEl?.selectedThumbnailId\">\n\t\t@if(selectedEl) {\n\t\t\t<ng-container *ngTemplateOutlet=\"selectedEl.templateRef\"></ng-container>\n\t\t}\n\t\t@else {\n\t\t\t<div class=\"daff-media-gallery__skeleton-placeholder\"></div>\n\t\t}\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffMediaGalleryComponent } from './media-gallery/media-gallery.component';\nimport { DaffThumbnailDirective } from './thumbnail/thumbnail.directive';\n\n/**\n * @deprecated in favor of {@link DAFF_MEDIA_GALLERY_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n CommonModule,\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n ],\n exports: [\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n ],\n})\nexport class DaffMediaGalleryModule {}\n","import { DaffMediaGalleryComponent } from './media-gallery/media-gallery.component';\nimport { DaffThumbnailDirective } from './thumbnail/thumbnail.directive';\n\n/**\n * @docs-private\n */\nexport const DAFF_MEDIA_GALLERY_COMPONENTS = <const> [\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n];\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-media-gallery.mjs","sources":["../../../libs/design/media-gallery/src/helpers/media-gallery-token.ts","../../../libs/design/media-gallery/src/thumbnail/thumbnail.directive.ts","../../../libs/design/media-gallery/src/media-gallery/media-gallery.component.ts","../../../libs/design/media-gallery/src/media-gallery/media-gallery.component.html","../../../libs/design/media-gallery/src/media-gallery.module.ts","../../../libs/design/media-gallery/src/media-gallery.ts","../../../libs/design/media-gallery/src/daffodil-design-media-gallery.ts"],"sourcesContent":["import { createSingleInjectionToken } from '@daffodil/core';\n\nimport { DaffMediaGalleryRegistration } from './media-gallery-registration.interface';\n\nexport const {\n token: DAFF_MEDIA_GALLERY_TOKEN,\n /**\n * Provider function for {@link DAFF_MEDIA_GALLERY_TOKEN}.\n */\n provider: provideDaffMediaGalleryToken,\n} = createSingleInjectionToken<DaffMediaGalleryRegistration>('DAFF_MEDIA_GALLERY_TOKEN');\n","import {\n Directive,\n Inject,\n Input,\n TemplateRef,\n OnInit,\n isDevMode,\n} from '@angular/core';\n\nimport { DaffMediaGalleryRegistration } from '../helpers/media-gallery-registration.interface';\nimport { DAFF_MEDIA_GALLERY_TOKEN } from '../helpers/media-gallery-token';\n\nlet uniqueThumbnailId = 0;\n\n/**\n * DaffThumbnailDirective is a structural directive used to mark elements as thumbnails within the `DaffMediaGalleryComponent`.\n *\n * ```html\n * <ng-template daffThumbnail></ng-template>\n * ```\n */\n@Directive({\n selector: '[daffThumbnail]',\n})\nexport class DaffThumbnailDirective implements OnInit {\n\n private _increment = uniqueThumbnailId;\n\n /**\n * @docs-private\n *\n * The autogenerated unique id for a thumbnail.\n */\n get id(): string {\n return this.gallery.id + '-thumbnail-' + this._increment;\n }\n\n /**\n * @docs-private\n *\n * The unique id of the selected thumbnail.\n */\n get selectedThumbnailId(): string {\n return this.id + '-selected';\n }\n\n /**\n * The file path to a thumbnail, presumably an image.\n */\n @Input() thumbnailSrc = undefined;\n\n /**\n * Provides an accessible label for a thumbnail.\n */\n @Input() label: string = undefined;\n\n /** Indicates whether the thumbnail represents a video. */\n @Input() isVideo = false;\n\n constructor(\n /**\n * @docs-private\n */\n @Inject(DAFF_MEDIA_GALLERY_TOKEN) public gallery: DaffMediaGalleryRegistration,\n /**\n * @docs-private\n */\n public templateRef: TemplateRef<unknown>,\n ) {\n uniqueThumbnailId++;\n }\n\n /**\n * @docs-private\n */\n ngOnInit() {\n if(!this.label && isDevMode()) {\n console.warn('The thumbnail ' + this.id + ' is missing a label.');\n }\n }\n}\n","/* eslint-disable quote-props */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ChangeDetectionStrategy,\n Input,\n QueryList,\n ViewChildren,\n ElementRef,\n Output,\n EventEmitter,\n contentChildren,\n signal,\n computed,\n Signal,\n} from '@angular/core';\n\nimport {\n DaffArticleEncapsulatedDirective,\n DaffSelectableDirective,\n DaffSkeletonableDirective,\n} from '@daffodil/design';\n\nimport { DaffMediaGalleryRegistration } from '../helpers/media-gallery-registration.interface';\nimport { DAFF_MEDIA_GALLERY_TOKEN } from '../helpers/media-gallery-token';\nimport { DaffThumbnailDirective } from '../thumbnail/thumbnail.directive';\n\nlet uniqueGalleryId = 0;\n\n/**\n * The `DaffMediaGalleryComonent` is used to display a group of thumbnails in a gallery format.\n *\n * ```html\n * <daff-media-gallery>\n * <ng-template daffThumbnail thumbnailSrc=\"/thumbnail-path.jpg\" label=\"Your description\">\n * <daff-image src=\"/image-path.jpg\" alt=\"Your description\" width=\"100\" height=\"100\"></daff-image>\n * </ng-template>\n * </daff-media-gallery>\n * ```\n */\n@Component({\n selector: 'daff-media-gallery',\n templateUrl: './media-gallery.component.html',\n styleUrls: ['./media-gallery.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n\n { provide: DAFF_MEDIA_GALLERY_TOKEN, useExisting: DaffMediaGalleryComponent },\n ],\n hostDirectives: [\n { directive: DaffArticleEncapsulatedDirective },\n {\n directive: DaffSkeletonableDirective,\n inputs: ['skeleton'],\n },\n ],\n host: {\n 'class': 'daff-media-gallery',\n '[attr.id]': 'id',\n },\n imports: [\n DaffThumbnailDirective,\n NgTemplateOutlet,\n DaffSelectableDirective,\n ],\n})\nexport class DaffMediaGalleryComponent implements DaffMediaGalleryRegistration {\n /**\n * The internal ID of the gallery.\n */\n private _id = 'media-gallery-' + uniqueGalleryId;\n\n /**\n * Custom ID for the media gallery that overrides the auto-generated one. When using this input, it is your responsibility to ensure that the ID is unique.\n */\n @Input()\n get id() {\n return this._id;\n }\n set id(val: string | undefined | null) {\n if(!val){\n return;\n }\n this._id = val;\n };\n\n /**\n * An event indicating that the selected media gallery element has changed.\n */\n @Output() elementChange: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * @docs-private\n */\n _thumbnails = contentChildren(DaffThumbnailDirective);\n\n /**\n * @docs-private\n */\n @ViewChildren('thumbnailButtons', { read: ElementRef }) private _thumbnailButtons: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @docs-private\n */\n constructor(private skeletonDirective: DaffSkeletonableDirective) {\n uniqueGalleryId++;\n }\n\n /**\n * @docs-private\n *\n * Whether or not the component its currently displaying its skeleton state.\n */\n get skeleton() {\n return this.skeletonDirective.skeleton;\n }\n\n /**\n * @docs-private\n */\n _selectedThumbnail: Signal<DaffThumbnailDirective> = computed(() => {\n const idx = this._selectedIndex();\n if(!idx) {\n return this._thumbnails().at(0);\n }\n return this._thumbnails().at(idx);\n });\n\n private _selectedIndex = signal<number | null>(null);\n\n private focusSelected() {\n this._thumbnailButtons.get(this._selectedIndex())?.nativeElement.focus();\n }\n\n /**\n * Select a specific entry in the media gallery by its index.\n *\n * @param index The index to set, starting at 0.\n */\n selectIndex(index: number) {\n this._selectedIndex.set(index);\n this.elementChange.emit(index);\n }\n\n /**\n * Navigate to the next element in the list of thumbnails.\n *\n * @param focus Whether to move focus to the newly selected item.\n */\n next(focus: boolean = true) {\n this._selectedIndex.update((curr) => ((curr ?? 0) + 1 + this._thumbnails().length) % this._thumbnails().length);\n this.elementChange.emit(this._selectedIndex());\n\n if(focus) {\n this.focusSelected();\n }\n }\n\n /**\n * Navigate to the previous element in the list of thumbnails.\n *\n * @param focus Whether to move focus to the newly selected item.\n */\n previous(focus: boolean = true) {\n this._selectedIndex.update((curr) => ((curr ?? 0) - 1 + this._thumbnails().length) % this._thumbnails().length);\n this.elementChange.emit(this._selectedIndex());\n\n if(focus) {\n this.focusSelected();\n }\n }\n\n /**\n * Select the first element.\n *\n * @param focus Whether to move focus to the newly selected item.\n */\n selectFirst(focus: boolean = true) {\n this._selectedIndex.set(0);\n this.elementChange.emit(this._selectedIndex());\n\n if(focus) {\n this.focusSelected();\n }\n }\n\n /**\n * Select the last element of the gallery.\n *\n * @param Whether to move focus to the newly selected item.\n */\n selectLast(focus: boolean = true) {\n this._selectedIndex.set(this._thumbnails().length - 1);\n this.elementChange.emit(this._selectedIndex());\n\n if(focus) {\n this.focusSelected();\n }\n }\n}\n","<ng-content></ng-content>\n\n<div class=\"daff-media-gallery__thumbnails\" #thumbnailsEl role=\"tablist\">\n\t@if(skeleton) {\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t}\n\t@else {\n\t\t@for (thumbnail of _thumbnails(); track thumbnail; let index = $index) {\n\t\t\t<button \n\t\t\t\t#thumbnailButtons\n\t\t\t\tclass=\"daff-thumbnail\" \n\t\t\t\trole=\"tab\"\n\t\t\t\tdaffSelected\n\t\t\t\t[selected]=\"thumbnail === _selectedThumbnail()\"\n\t\t\t\tattr.aria-label=\"{{ thumbnail.label ?? 'Gallery Element ' + (index + 1) }}\"\n\t\t\t\t[attr.aria-selected]=\"thumbnail === _selectedThumbnail() ? 'true' : 'false'\"\n\t\t\t\t[attr.aria-controls]=\"thumbnail.selectedThumbnailId\"\n\t\t\t\t[attr.tabindex]=\"thumbnail === _selectedThumbnail() ? 0 : -1\"\n\t\t\t\t(click)=\"selectIndex(index)\"\n\t\t\t\t[attr.id]=\"thumbnail.id\" \n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t@if (thumbnail.thumbnailSrc) {\n\t\t\t\t\t<img [src]=\"thumbnail.thumbnailSrc\" aria-hidden=\"true\"/>\n\t\t\t\t}\n\t\t\t\t@if (thumbnail.isVideo) {\n\t\t\t\t\t<div class=\"daff-media-gallery__video-button\">\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n@let selectedEl = this._selectedThumbnail();\n<div \n\tclass=\"daff-media-gallery__selected-thumbnail\"\n\ttabindex=\"0\"\n\t#selectedThumbnail\n\trole=\"tabpanel\"\n\t[attr.id]=\"selectedEl?.selectedThumbnailId\">\n\t\t@if(selectedEl) {\n\t\t\t<ng-container *ngTemplateOutlet=\"selectedEl.templateRef\"></ng-container>\n\t\t}\n\t\t@else {\n\t\t\t<div class=\"daff-media-gallery__skeleton-placeholder\"></div>\n\t\t}\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffMediaGalleryComponent } from './media-gallery/media-gallery.component';\nimport { DaffThumbnailDirective } from './thumbnail/thumbnail.directive';\n\n/**\n * @deprecated in favor of {@link DAFF_MEDIA_GALLERY_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n CommonModule,\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n ],\n exports: [\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n ],\n})\nexport class DaffMediaGalleryModule {}\n","import { DaffMediaGalleryComponent } from './media-gallery/media-gallery.component';\nimport { DaffThumbnailDirective } from './thumbnail/thumbnail.directive';\n\n/**\n * @docs-private\n */\nexport const DAFF_MEDIA_GALLERY_COMPONENTS = <const> [\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}