@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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { TemplateRef, Input, ViewChild, ChangeDetectionStrategy, Component, ContentChild, HostBinding, ViewEncapsulation, EventEmitter, ViewChildren, ContentChildren, Output } from '@angular/core';
2
+ import { TemplateRef, Input, ViewChild, ChangeDetectionStrategy, Component, ContentChild, ViewEncapsulation, EventEmitter, ViewChildren, ContentChildren, Output, HostBinding } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common';
4
4
  import { NgIf, NgTemplateOutlet } from '@angular/common';
5
5
  import * as i1 from '@daffodil/design';
@@ -8,11 +8,11 @@ import { RouterLink, RouterLinkActive } from '@angular/router';
8
8
 
9
9
  let tabId = 1;
10
10
  /**
11
- * `DaffTabComponet` is an element in the tab list that is used as a content container to group the label of a tab panel and the tab panel together.
11
+ * Tab is a single tab in the tablist that is used to group the label of a tab panel and the tab panel together.
12
12
  *
13
13
  * A `<daff-tab>` should include the DaffTabLabelComponent and DaffTabPanelComponent components in order to properly structure the UI.
14
14
  *
15
- * @example Basic structure of tab
15
+ * @example
16
16
  * ```html
17
17
  * <daff-tab>
18
18
  * <daff-tab-label>
@@ -29,23 +29,11 @@ class DaffTabComponent {
29
29
  constructor() {
30
30
  /**
31
31
  * Whether the tab is disabled.
32
- *
33
- * @example Using the `disabled` property
34
- * ```html
35
- * <daff-tab [disabled]="true">
36
- * </daff-tab>
37
- * ```
38
32
  */
39
33
  this.disabled = false;
40
34
  /**
41
- * A unique id for the tab component.
42
- *
43
- * The `id` is automatically generated by linking the prefix 'daff-tab-' with an incrementing `tabId`. This value can be customized by passing a different `id` value via the component's `id` input.
44
- *
45
- * @example Using the `id` property
46
- * ```html
47
- * <daff-tab [id]="'custom-id'"></daff-tab>
48
- * ```
35
+ * A unique id for the tab component. Defaults to an autogenerated value. When using this,
36
+ * it's your responsibility to ensure that the id for each tab is unique.
49
37
  */
50
38
  this.id = 'daff-tab-' + tabId;
51
39
  /**
@@ -91,9 +79,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
91
79
  }] } });
92
80
 
93
81
  /**
94
- * DaffTabLabelComponent is used to display the label of a tab panel. Labels may optionally contain a `daffPrefix` or `daffSuffix` to add icons or badges.
82
+ * Tab label is the clicakble label that activates its corresponding tab panel. Labels can contain text, icons, or both.
95
83
  *
96
- * @example Basic structure of tab label
84
+ * @example
97
85
  * ```html
98
86
  * <daff-tab-label>
99
87
  * <div daffPrefix></div>
@@ -121,10 +109,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
121
109
  args: [DaffSuffixDirective]
122
110
  }] } });
123
111
 
112
+ /* eslint-disable quote-props */
124
113
  /**
125
- * DaffTabPanelComponent is used to display the content panel of a tab.
114
+ * Tab panel is the content area displayed when a tab is active.
126
115
  *
127
- * @example Basic structure of tab panel
116
+ * @example
128
117
  * ```html
129
118
  * <daff-tab-panel>
130
119
  * <!-- Tab panel content goes here -->
@@ -140,75 +129,50 @@ class DaffTabPanelComponent {
140
129
  get tabPanelId() {
141
130
  return this._id;
142
131
  }
132
+ /**
133
+ * @docs-private
134
+ */
135
+ get ariaLabelledBy() {
136
+ return this._ariaLabelledBy;
137
+ }
143
138
  constructor(tab) {
144
139
  this.tab = tab;
145
- /**
146
- * @docs-private
147
- */
148
- this.class = true;
149
- /**
150
- * @docs-private
151
- *
152
- * Sets the `role` to tabpanel.
153
- */
154
- this.role = 'tabpanel';
155
- /**
156
- * @docs-private
157
- *
158
- * `aria-labelledby` for the tab.
159
- */
160
- this.ariaLabelledBy = '';
161
- /**
162
- * @docs-private
163
- *
164
- * Sets the `tabindex` to 0.
165
- */
166
- this.tabIndex = '0';
167
140
  this._id = '';
141
+ this._ariaLabelledBy = '';
168
142
  /**
169
143
  * Sets the value of `ariaLabelledBy` to the id of the tab component.
170
144
  */
171
- this.ariaLabelledBy = this.tab.id;
145
+ this._ariaLabelledBy = this.tab.id;
172
146
  this._id = this.tab.panelId;
173
147
  }
174
148
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffTabPanelComponent, deps: [{ token: DaffTabComponent }], target: i0.ɵɵFactoryTarget.Component }); }
175
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffTabPanelComponent, isStandalone: true, selector: "daff-tab-panel", host: { properties: { "class.daff-tab-panel": "this.class", "attr.role": "this.role", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.tabindex": "this.tabIndex", "attr.id": "this.tabPanelId" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host(.daff-tab-panel){display:block;padding:1rem 0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
149
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffTabPanelComponent, isStandalone: true, selector: "daff-tab-panel", host: { attributes: { "role": "tabpanel", "tabindex": "0" }, properties: { "attr.id": "tabPanelId", "attr.aria-labelledby": "ariaLabelledBy" }, classAttribute: "daff-tab-panel" }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host(.daff-tab-panel){display:block;padding:1rem 0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
176
150
  }
177
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffTabPanelComponent, decorators: [{
178
152
  type: Component,
179
- args: [{ selector: 'daff-tab-panel', template: `<ng-content></ng-content>`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host(.daff-tab-panel){display:block;padding:1rem 0}\n"] }]
180
- }], ctorParameters: () => [{ type: DaffTabComponent }], propDecorators: { class: [{
181
- type: HostBinding,
182
- args: ['class.daff-tab-panel']
183
- }], role: [{
184
- type: HostBinding,
185
- args: ['attr.role']
186
- }], ariaLabelledBy: [{
187
- type: HostBinding,
188
- args: ['attr.aria-labelledby']
189
- }], tabIndex: [{
190
- type: HostBinding,
191
- args: ['attr.tabindex']
192
- }], tabPanelId: [{
193
- type: HostBinding,
194
- args: ['attr.id']
195
- }] } });
153
+ args: [{ selector: 'daff-tab-panel', template: `<ng-content></ng-content>`, changeDetection: ChangeDetectionStrategy.OnPush, host: {
154
+ 'class': 'daff-tab-panel',
155
+ 'role': 'tabpanel',
156
+ 'tabindex': '0',
157
+ '[attr.id]': 'tabPanelId',
158
+ '[attr.aria-labelledby]': 'ariaLabelledBy',
159
+ }, styles: [":host(.daff-tab-panel){display:block;padding:1rem 0}\n"] }]
160
+ }], ctorParameters: () => [{ type: DaffTabComponent }] });
196
161
 
162
+ /* eslint-disable quote-props */
197
163
  class DaffTabActivatorComponent {
198
- /**
199
- * Sets `aria-selected` to true if the component is selected and false if it's not selected.
200
- */
201
164
  /**
202
165
  * @docs-private
166
+ *
167
+ * Sets `aria-selected` to true if the component is selected and false if it's not selected.
203
168
  */
204
169
  get ariaSelected() {
205
170
  return this.selectableDirective.selected ? true : false;
206
171
  }
207
- /**
208
- * Sets `tabindex` to `0` if the component is selected and `-1` if it's not selected.
209
- */
210
172
  /**
211
173
  * @docs-private
174
+ *
175
+ * Sets `tabindex` to `0` if the component is selected and `-1` if it's not selected.
212
176
  */
213
177
  get tabIndex() {
214
178
  return this.selectableDirective.selected ? '0' : '-1';
@@ -216,21 +180,6 @@ class DaffTabActivatorComponent {
216
180
  constructor(el, selectableDirective) {
217
181
  this.el = el;
218
182
  this.selectableDirective = selectableDirective;
219
- /**
220
- * @docs-private
221
- */
222
- this.class = true;
223
- /**
224
- * Sets the `role` to tab.
225
- */
226
- /**
227
- * @docs-private
228
- */
229
- this.role = 'tab';
230
- /**
231
- * @docs-private
232
- */
233
- this.ariaControls = '';
234
183
  /**
235
184
  * The html id of the tab activator component
236
185
  */
@@ -238,22 +187,13 @@ class DaffTabActivatorComponent {
238
187
  this.panelId = '';
239
188
  }
240
189
  /**
241
- * @docs-private
242
- */
243
- ngOnInit() {
244
- /**
245
- * Sets the value of `panelId` to the `ariaControls` property
246
- */
247
- this.ariaControls = this.panelId;
248
- }
249
- /**
250
- * Sets focus to the native element of the component
190
+ * Sets focus to the native element of the component.
251
191
  */
252
192
  focus() {
253
193
  this.el.nativeElement.focus();
254
194
  }
255
195
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffTabActivatorComponent, deps: [{ token: i0.ElementRef }, { token: i1.DaffSelectableDirective }], target: i0.ɵɵFactoryTarget.Component }); }
256
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffTabActivatorComponent, isStandalone: true, selector: "button[daff-tab-activator],a[daff-tab-activator]", inputs: { tabActivatorId: "tabActivatorId", panelId: "panelId" }, host: { properties: { "class.daff-tab-activator": "this.class", "attr.role": "this.role", "attr.aria-selected": "this.ariaSelected", "attr.tabindex": "this.tabIndex", "attr.aria-controls": "this.ariaControls", "attr.id": "this.tabActivatorId" } }, hostDirectives: [{ directive: i1.DaffSelectableDirective, inputs: ["selected", "selected"] }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [".daff-tab-activator{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;appearance:none;background:none;border:none;font-size:1rem;line-height:1.5rem;font-weight:500;height:3rem;margin:0;min-width:8rem;padding:.5rem 1.5rem;text-decoration:none;z-index:2}.daff-tab-activator[disabled]{cursor:not-allowed;opacity:.6}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
196
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffTabActivatorComponent, isStandalone: true, selector: "button[daff-tab-activator],a[daff-tab-activator]", inputs: { tabActivatorId: "tabActivatorId", panelId: "panelId" }, host: { attributes: { "role": "tab" }, properties: { "attr.aria-selected": "ariaSelected", "attr.tabindex": "tabIndex", "attr.id": "tabActivatorId", "attr.aria-controls": "panelId" }, classAttribute: "daff-tab-activator" }, hostDirectives: [{ directive: i1.DaffSelectableDirective, inputs: ["selected", "selected"] }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [".daff-tab-activator{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;appearance:none;background:none;border:none;font-size:1rem;line-height:1.5rem;font-weight:500;height:3rem;margin:0;min-width:8rem;padding:.5rem 1.5rem;text-decoration:none;z-index:2}.daff-tab-activator[disabled]{cursor:not-allowed;opacity:.6}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
257
197
  }
258
198
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffTabActivatorComponent, decorators: [{
259
199
  type: Component,
@@ -264,35 +204,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
264
204
  directive: DaffSelectableDirective,
265
205
  inputs: ['selected'],
266
206
  },
267
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".daff-tab-activator{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;appearance:none;background:none;border:none;font-size:1rem;line-height:1.5rem;font-weight:500;height:3rem;margin:0;min-width:8rem;padding:.5rem 1.5rem;text-decoration:none;z-index:2}.daff-tab-activator[disabled]{cursor:not-allowed;opacity:.6}\n"] }]
268
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DaffSelectableDirective }], propDecorators: { class: [{
269
- type: HostBinding,
270
- args: ['class.daff-tab-activator']
271
- }], role: [{
272
- type: HostBinding,
273
- args: ['attr.role']
274
- }], ariaSelected: [{
275
- type: HostBinding,
276
- args: ['attr.aria-selected']
277
- }], tabIndex: [{
278
- type: HostBinding,
279
- args: ['attr.tabindex']
280
- }], ariaControls: [{
281
- type: HostBinding,
282
- args: ['attr.aria-controls']
283
- }], tabActivatorId: [{
207
+ ], host: {
208
+ 'class': 'daff-tab-activator',
209
+ 'role': 'tab',
210
+ '[attr.aria-selected]': 'ariaSelected',
211
+ '[attr.tabindex]': 'tabIndex',
212
+ '[attr.id]': 'tabActivatorId',
213
+ '[attr.aria-controls]': 'panelId',
214
+ }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".daff-tab-activator{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;appearance:none;background:none;border:none;font-size:1rem;line-height:1.5rem;font-weight:500;height:3rem;margin:0;min-width:8rem;padding:.5rem 1.5rem;text-decoration:none;z-index:2}.daff-tab-activator[disabled]{cursor:not-allowed;opacity:.6}\n"] }]
215
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DaffSelectableDirective }], propDecorators: { tabActivatorId: [{
284
216
  type: Input
285
- }, {
286
- type: HostBinding,
287
- args: ['attr.id']
288
217
  }], panelId: [{
289
218
  type: Input
290
219
  }] } });
291
220
 
221
+ /* eslint-disable quote-props */
292
222
  /**
293
- * Tabs provide a way to navigate between panels that display related content.
223
+ * Tabs provide a way to navigate between panels that display related content without leaving the page.
294
224
  *
295
- * @example Basic use of the tabs component
225
+ * @example
296
226
  * ```html
297
227
  * <daff-tabs aria-label="List of tabs">
298
228
  * <daff-tab>
@@ -326,24 +256,18 @@ class DaffTabsComponent {
326
256
  constructor(cdRef, location) {
327
257
  this.cdRef = cdRef;
328
258
  this.location = location;
329
- /**
330
- * @docs-private
331
- */
332
- this.class = true;
333
259
  /**
334
260
  * The tab that is selected on initial load. If it's not used, the first tab in the tablist will be selected by default.
335
261
  */
336
262
  this.initiallySelected = null;
337
- /**
338
- * aria-label for the tab.
339
- */
340
263
  /**
341
264
  * @docs-private
265
+ *
266
+ * aria-label for the tab.
342
267
  */
343
268
  this.externalAriaLabel = null;
344
269
  /**
345
- * @docs-private
346
- *
270
+ * `aria-label` to label the tablist.
347
271
  */
348
272
  this.ariaLabel = '';
349
273
  /**
@@ -461,20 +385,19 @@ class DaffTabsComponent {
461
385
  this.select(array[array.length - 1].id);
462
386
  }
463
387
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffTabsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.Location }], target: i0.ɵɵFactoryTarget.Component }); }
464
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DaffTabsComponent, isStandalone: true, selector: "daff-tabs", inputs: { initiallySelected: "initiallySelected", ariaLabel: ["aria-label", "ariaLabel"], linkMode: "linkMode", url: "url", queryParam: "queryParam" }, outputs: { tabChange: "tabChange" }, host: { properties: { "class.daff-tabs": "this.class", "attr.aria-label": "this.externalAriaLabel" } }, queries: [{ propertyName: "_labels", predicate: DaffTabLabelComponent, descendants: true }, { propertyName: "_tabs", predicate: DaffTabComponent }], viewQueries: [{ propertyName: "_tabActivators", predicate: DaffTabActivatorComponent, descendants: true }], ngImport: i0, template: "<div class=\"daff-tabs__tab-list\"\n\trole=\"tablist\"\n\t[attr.aria-label]=\"ariaLabel\"\n\t(keydown.home)=\"selectFirst($event)\"\n\t(keydown.end)=\"selectLast($event)\">\n\t@for (tab of _tabs; track tab) {\n\t\t@if (linkMode && tab.disabled) {\n\t\t\t<button daff-tab-activator routerLinkActive\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t} @else if (linkMode) {\n\t\t\t<a daff-tab-activator routerLinkActive\n\t\t\t\tclass=\"daff-ae daff_tabs__link\"\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[routerLink]=\"url || currentPath\"\n\t\t\t\tqueryParamsHandling=\"merge\"\n\t\t\t\t[queryParams]=\"_buildQueryParams(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\"\n\t\t\t\t(isActiveChange)=\"$event && select(tab.id)\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</a>\n\t\t} @else {\n\t\t\t<button daff-tab-activator\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t(click)=\"select(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n\n@for (tab of _tabs; track tab) {\n\t@if(tab.id === selectedTab ) {\n\t\t<ng-container *ngTemplateOutlet=\"tab.contentRef\"></ng-container>\n\t}\n}", styles: [":host(.daff-tabs){max-width:100%}.daff-tabs{display:block}.daff-tabs .daff-tabs__tab-list{display:flex;overflow-x:auto;scrollbar-width:thin;position:relative}.daff-tabs .daff-tabs__tab-list:after{content:\"\";position:absolute;height:.125rem;width:100%;bottom:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: DaffTabActivatorComponent, selector: "button[daff-tab-activator],a[daff-tab-activator]", inputs: ["tabActivatorId", "panelId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
388
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DaffTabsComponent, isStandalone: true, selector: "daff-tabs", inputs: { initiallySelected: "initiallySelected", ariaLabel: ["aria-label", "ariaLabel"], linkMode: "linkMode", url: "url", queryParam: "queryParam" }, outputs: { tabChange: "tabChange" }, host: { properties: { "attr.aria-label": "this.externalAriaLabel" }, classAttribute: "daff-tabs" }, queries: [{ propertyName: "_labels", predicate: DaffTabLabelComponent, descendants: true }, { propertyName: "_tabs", predicate: DaffTabComponent }], viewQueries: [{ propertyName: "_tabActivators", predicate: DaffTabActivatorComponent, descendants: true }], ngImport: i0, template: "<div class=\"daff-tabs__tab-list\"\n\trole=\"tablist\"\n\t[attr.aria-label]=\"ariaLabel\"\n\t(keydown.home)=\"selectFirst($event)\"\n\t(keydown.end)=\"selectLast($event)\">\n\t@for (tab of _tabs; track tab) {\n\t\t@if (linkMode && tab.disabled) {\n\t\t\t<button daff-tab-activator routerLinkActive\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t} @else if (linkMode) {\n\t\t\t<a daff-tab-activator routerLinkActive\n\t\t\t\tclass=\"daff-ae daff_tabs__link\"\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[routerLink]=\"url || currentPath\"\n\t\t\t\tqueryParamsHandling=\"merge\"\n\t\t\t\t[queryParams]=\"_buildQueryParams(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\"\n\t\t\t\t(isActiveChange)=\"$event && select(tab.id)\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</a>\n\t\t} @else {\n\t\t\t<button daff-tab-activator\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t(click)=\"select(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n\n@for (tab of _tabs; track tab) {\n\t@if(tab.id === selectedTab ) {\n\t\t<ng-container *ngTemplateOutlet=\"tab.contentRef\"></ng-container>\n\t}\n}", styles: [":host(.daff-tabs){max-width:100%}.daff-tabs{display:block}.daff-tabs .daff-tabs__tab-list{display:flex;overflow-x:auto;scrollbar-width:thin;position:relative}.daff-tabs .daff-tabs__tab-list:after{content:\"\";position:absolute;height:.125rem;width:100%;bottom:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: DaffTabActivatorComponent, selector: "button[daff-tab-activator],a[daff-tab-activator]", inputs: ["tabActivatorId", "panelId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
465
389
  }
466
390
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffTabsComponent, decorators: [{
467
391
  type: Component,
468
- args: [{ selector: 'daff-tabs', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
392
+ args: [{ selector: 'daff-tabs', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
393
+ 'class': 'daff-tabs',
394
+ }, imports: [
469
395
  NgTemplateOutlet,
470
396
  RouterLink,
471
397
  RouterLinkActive,
472
398
  DaffTabActivatorComponent,
473
399
  ], template: "<div class=\"daff-tabs__tab-list\"\n\trole=\"tablist\"\n\t[attr.aria-label]=\"ariaLabel\"\n\t(keydown.home)=\"selectFirst($event)\"\n\t(keydown.end)=\"selectLast($event)\">\n\t@for (tab of _tabs; track tab) {\n\t\t@if (linkMode && tab.disabled) {\n\t\t\t<button daff-tab-activator routerLinkActive\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t} @else if (linkMode) {\n\t\t\t<a daff-tab-activator routerLinkActive\n\t\t\t\tclass=\"daff-ae daff_tabs__link\"\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[routerLink]=\"url || currentPath\"\n\t\t\t\tqueryParamsHandling=\"merge\"\n\t\t\t\t[queryParams]=\"_buildQueryParams(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\"\n\t\t\t\t(isActiveChange)=\"$event && select(tab.id)\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</a>\n\t\t} @else {\n\t\t\t<button daff-tab-activator\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t(click)=\"select(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n\n@for (tab of _tabs; track tab) {\n\t@if(tab.id === selectedTab ) {\n\t\t<ng-container *ngTemplateOutlet=\"tab.contentRef\"></ng-container>\n\t}\n}", styles: [":host(.daff-tabs){max-width:100%}.daff-tabs{display:block}.daff-tabs .daff-tabs__tab-list{display:flex;overflow-x:auto;scrollbar-width:thin;position:relative}.daff-tabs .daff-tabs__tab-list:after{content:\"\";position:absolute;height:.125rem;width:100%;bottom:0}\n"] }]
474
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.Location }], propDecorators: { class: [{
475
- type: HostBinding,
476
- args: ['class.daff-tabs']
477
- }], initiallySelected: [{
400
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.Location }], propDecorators: { initiallySelected: [{
478
401
  type: Input
479
402
  }], externalAriaLabel: [{
480
403
  type: HostBinding,
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-design-tabs.mjs","sources":["../../../libs/design/tabs/src/tabs/tab/tab.component.ts","../../../libs/design/tabs/src/tabs/tab-label/tab-label.component.ts","../../../libs/design/tabs/src/tabs/tab-label/tab-label.component.html","../../../libs/design/tabs/src/tabs/tab-panel/tab-panel.component.ts","../../../libs/design/tabs/src/tabs/tab-activator/tab-activator.component.ts","../../../libs/design/tabs/src/tabs/tabs.component.ts","../../../libs/design/tabs/src/tabs/tabs.component.html","../../../libs/design/tabs/src/tabs.ts","../../../libs/design/tabs/src/daffodil-design-tabs.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n TemplateRef,\n ViewChild,\n Input,\n} from '@angular/core';\n\nlet tabId = 1;\n\n/**\n * `DaffTabComponet` is an element in the tab list that is used as a content container to group the label of a tab panel and the tab panel together.\n *\n * A `<daff-tab>` should include the DaffTabLabelComponent and DaffTabPanelComponent components in order to properly structure the UI.\n *\n * @example Basic structure of tab\n * ```html\n * <daff-tab>\n * \t<daff-tab-label>\n * \t\t<fa-icon [icon]=\"faInfoCircle\" daffPrefix></fa-icon>\n * \t\tTab 1\n * \t</daff-tab-label>\n * \t<daff-tab-panel>\n * \t\tTab 1 Panel\n * \t</daff-tab-panel>\n * </daff-tab>\n * ```\n */\n@Component({\n selector: 'daff-tab',\n template: `\n <ng-template #label>\n <ng-content select=\"daff-tab-label\"></ng-content>\n </ng-template>\n <ng-template #content>\n <ng-content select=\"daff-tab-panel\"></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaffTabComponent {\n /**\n * Whether the tab is disabled.\n *\n * @example Using the `disabled` property\n * ```html\n * <daff-tab [disabled]=\"true\">\n * </daff-tab>\n * ```\n */\n @Input() disabled = false;\n\n /**\n * @docs-private\n */\n @ViewChild('content', { read: TemplateRef, static: true }) contentRef: TemplateRef<any>;\n\n /**\n * @docs-private\n */\n @ViewChild('label', { read: TemplateRef, static: true }) labelRef: TemplateRef<any>;\n\n /**\n * A unique id for the tab component.\n *\n * The `id` is automatically generated by linking the prefix 'daff-tab-' with an incrementing `tabId`. This value can be customized by passing a different `id` value via the component's `id` input.\n *\n * @example Using the `id` property\n * ```html\n * <daff-tab [id]=\"'custom-id'\"></daff-tab>\n * ```\n */\n @Input() id = 'daff-tab-' + tabId;\n\n /**\n * @docs-private\n */\n panelId = 'daff-tab-panel-' + tabId;\n\n constructor() {\n tabId++;\n }\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n} from '@angular/core';\n\nimport {\n DaffPrefixDirective,\n DaffSuffixDirective,\n} from '@daffodil/design';\n\n/**\n * DaffTabLabelComponent is used to display the label of a tab panel. Labels may optionally contain a `daffPrefix` or `daffSuffix` to add icons or badges.\n *\n * @example Basic structure of tab label\n * ```html\n * <daff-tab-label>\n * <div daffPrefix></div>\n * Label\n * <div daffSuffix></div\n * </daff-tab-Label>\n * ```\n */\n@Component({\n selector: 'daff-tab-label',\n templateUrl: './tab-label.component.html',\n styleUrl: './tab-label.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n DaffPrefixDirective,\n DaffSuffixDirective,\n ],\n})\nexport class DaffTabLabelComponent {\n @ContentChild(DaffPrefixDirective) _prefix: DaffPrefixDirective;\n\n /**\n * @docs-private\n */\n @ContentChild(DaffSuffixDirective) _suffix: DaffSuffixDirective;\n}\n","@if (_prefix) {\n <ng-content select=\"[daffPrefix]\"></ng-content>\n}\n<div class=\"daff-tab-label__content\">\n <ng-content></ng-content>\n</div>\n@if (_suffix) {\n <ng-content select=\"[daffSuffix]\"></ng-content>\n}","import {\n Component,\n HostBinding,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { DaffTabComponent } from '../tab/tab.component';\n\n/**\n * DaffTabPanelComponent is used to display the content panel of a tab.\n *\n * @example Basic structure of tab panel\n * ```html\n * <daff-tab-panel>\n * <!-- Tab panel content goes here -->\n * </daff-tab-panel>\n * ```\n */\n@Component({\n selector: 'daff-tab-panel',\n template: `<ng-content></ng-content>`,\n styleUrl: './tab-panel.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaffTabPanelComponent {\n /**\n * @docs-private\n */\n @HostBinding('class.daff-tab-panel') private class = true;\n\n /**\n * @docs-private\n *\n * Sets the `role` to tabpanel.\n */\n @HostBinding('attr.role') role = 'tabpanel';\n\n /**\n * @docs-private\n *\n * `aria-labelledby` for the tab.\n */\n @HostBinding('attr.aria-labelledby') ariaLabelledBy = '';\n\n /**\n * @docs-private\n *\n * Sets the `tabindex` to 0.\n */\n @HostBinding('attr.tabindex') tabIndex = '0';\n\n private _id = '';\n\n /**\n * @docs-private\n *\n * Dynamically binds the tab panel's id to a unique value generated from the associated tab's panelId.\n */\n @HostBinding('attr.id') get tabPanelId() {\n return this._id;\n }\n\n constructor(private tab: DaffTabComponent) {\n /**\n * Sets the value of `ariaLabelledBy` to the id of the tab component.\n */\n this.ariaLabelledBy = this.tab.id;\n\n this._id = this.tab.panelId;\n }\n}\n","import {\n HostBinding,\n Input,\n OnInit,\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ElementRef,\n} from '@angular/core';\n\nimport { DaffSelectableDirective } from '@daffodil/design';\n\n@Component({\n selector: '' +\n 'button[daff-tab-activator]' + ',' +\n 'a[daff-tab-activator]',\n template: `<ng-content></ng-content>`,\n styleUrl: './tab-activator.component.scss',\n hostDirectives: [\n {\n directive: DaffSelectableDirective,\n inputs: ['selected'],\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DaffTabActivatorComponent implements OnInit {\n /**\n * @docs-private\n */\n @HostBinding('class.daff-tab-activator') class = true;\n\n /**\n * Sets the `role` to tab.\n */\n /**\n * @docs-private\n */\n @HostBinding('attr.role') role = 'tab';\n\n /**\n * Sets `aria-selected` to true if the component is selected and false if it's not selected.\n */\n /**\n * @docs-private\n */\n @HostBinding('attr.aria-selected') get ariaSelected() {\n return this.selectableDirective.selected ? true : false;\n }\n\n /**\n * Sets `tabindex` to `0` if the component is selected and `-1` if it's not selected.\n */\n /**\n * @docs-private\n */\n @HostBinding('attr.tabindex') get tabIndex() {\n return this.selectableDirective.selected ? '0' : '-1';\n }\n\n /**\n * @docs-private\n */\n @HostBinding('attr.aria-controls') ariaControls = '';\n\n constructor(\n private el: ElementRef,\n private selectableDirective: DaffSelectableDirective,\n ) {\n }\n\n /**\n * The html id of the tab activator component\n */\n @Input() @HostBinding('attr.id') tabActivatorId = '';\n\n @Input() panelId = '';\n\n /**\n * @docs-private\n */\n ngOnInit() {\n /**\n * Sets the value of `panelId` to the `ariaControls` property\n */\n this.ariaControls = this.panelId;\n }\n\n /**\n * Sets focus to the native element of the component\n */\n focus() {\n this.el.nativeElement.focus();\n }\n}\n","import {\n Location,\n NgTemplateOutlet,\n} from '@angular/common';\nimport {\n Component,\n HostBinding,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n AfterContentInit,\n Input,\n Output,\n EventEmitter,\n ViewChildren,\n ChangeDetectorRef,\n OnInit,\n} from '@angular/core';\nimport {\n Params,\n RouterLink,\n RouterLinkActive,\n} from '@angular/router';\n\nimport { DaffTabComponent } from './tab/tab.component';\nimport { DaffTabActivatorComponent } from './tab-activator/tab-activator.component';\nimport { DaffTabLabelComponent } from './tab-label/tab-label.component';\n\n/**\n * Tabs provide a way to navigate between panels that display related content.\n *\n * @example Basic use of the tabs component\n * ```html\n * <daff-tabs aria-label=\"List of tabs\">\n * \t<daff-tab>\n * \t\t<daff-tab-label>\n * \t\t\t<fa-icon [icon]=\"faInfoCircle\" daffPrefix></fa-icon>\n * \t\t\tTab 1\n * \t\t</daff-tab-label>\n * \t\t<daff-tab-panel>\n * \t\t\tTab 1 Panel\n * \t\t</daff-tab-panel>\n * \t</daff-tab>\n * \t<daff-tab>\n * \t\t<daff-tab-label>\n * \t\t\tTab 2\n * \t\t\t<fa-icon [icon]=\"faInfoCircle\" daffSuffix></fa-icon>\n * \t\t</daff-tab-label>\n * \t\t<daff-tab-panel>\n * \t\t\tTab 2 Panel\n * \t\t</daff-tab-panel>\n * \t</daff-tab>\n * </daff-tabs>\n * ```\n */\n@Component({\n selector: 'daff-tabs',\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n RouterLink,\n RouterLinkActive,\n DaffTabActivatorComponent,\n ],\n})\n\nexport class DaffTabsComponent implements AfterContentInit, OnInit {\n /**\n * @docs-private\n */\n @HostBinding('class.daff-tabs') private class = true;\n\n /**\n * @docs-private\n *\n * The currently selected tab. This property is dynamically updated when a user selects a tab.\n */\n selectedTab: string;\n\n /**\n * The tab that is selected on initial load. If it's not used, the first tab in the tablist will be selected by default.\n */\n @Input() initiallySelected: string = null;\n\n /**\n * aria-label for the tab.\n */\n /**\n * @docs-private\n */\n @HostBinding('attr.aria-label') private externalAriaLabel = null;\n\n /**\n * @docs-private\n *\n */\n @Input('aria-label') ariaLabel = '';\n\n /**\n * Replace the tab buttons as links.\n */\n @Input() linkMode = false;\n\n /**\n * The URL to navigate to when the component is in link mode.\n * This component will set the specified query param.\n */\n @Input() url?: string;\n\n /**\n * The query parameter that the tabs component will use to set the tab value in link mode.\n */\n @Input() queryParam = 'tab';\n\n /**\n * Event emitted when tab selection changes.\n */\n @Output() tabChange = new EventEmitter<string>();\n\n /**\n * @docs-private\n */\n @ContentChildren(DaffTabLabelComponent, { descendants: true }) _labels: QueryList<DaffTabLabelComponent>;\n\n /**\n * @docs-private\n */\n @ContentChildren(DaffTabComponent) _tabs: QueryList<DaffTabComponent>;\n\n /**\n * @docs-private\n */\n @ViewChildren(DaffTabActivatorComponent) _tabActivators: QueryList<DaffTabActivatorComponent>;\n\n /**\n * @docs-private\n */\n get currentPath(): string {\n return this.location.path();\n }\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private location: Location,\n ) {}\n\n private reset() {\n if(this.initiallySelected) {\n this.selectedTab = this.initiallySelected;\n }\n\n if (!this.selectedTab) {\n this.selectedTab = this._tabs.first.id;\n }\n }\n\n /**\n * @docs-private\n */\n ngOnInit(): void {\n this.location.onUrlChange(() => {\n // if the app is navigated away from the current page, reset the state\n if (this.linkMode && !this.location.isCurrentPathEqualTo(this.url, `${this.queryParam}=${this.selectedTab}`)) {\n this.selectedTab = null;\n this.reset();\n this.tabChange.emit(this.selectedTab);\n }\n });\n }\n\n /**\n * @docs-private\n */\n ngAfterContentInit() {\n this.reset();\n }\n\n /**\n * @docs-private\n *\n * Selects a tab and sets focus on the selected tab.\n */\n select(tabId: string) {\n const tabActivator = this._tabActivators.find(el => el.tabActivatorId === tabId);\n\n if (!tabActivator) {\n console.warn(`The tab '${tabId}' was not able to be selected because it does not exist. Check the id on your <daff-tab>s.`);\n return;\n }\n\n this.tabChange.emit(tabId);\n this.selectedTab = tabId;\n this.cdRef.markForCheck();\n\n tabActivator.focus();\n }\n\n /**\n * Navigates through the tabs based on the given offset.\n * Moves forward or backward in the tab array, wrapping around when necessary.\n */\n private navigateTabs(offset: number) {\n const array = this._tabs.toArray();\n let selectedIndex = array.findIndex(el => el.id === this.selectedTab);\n const startingIndex = selectedIndex;\n let newIndex;\n\n do {\n newIndex = (selectedIndex + offset + array.length) % array.length;\n selectedIndex = newIndex;\n } while (array[newIndex].disabled && selectedIndex !== startingIndex); // Skip disabled tabs\n\n this.select(array[newIndex].id);\n }\n\n /**\n * @docs-private\n */\n _buildQueryParams(tab: string): Params {\n return {\n [this.queryParam]: tab,\n };\n }\n\n /**\n * @docs-private\n *\n * Selects the previous tab and wraps around to the last tab if the first tab is currently selected.\n */\n previous() {\n this.navigateTabs(-1);\n }\n\n /**\n * @docs-private\n *\n * Selects the next tab and wraps around to the first tab if the last tab is currently selected.\n */\n next() {\n this.navigateTabs(1);\n }\n\n /**\n * @docs-private\n *\n * Selects the first tab.\n */\n selectFirst(event: KeyboardEvent | null) {\n event.preventDefault();\n this.select(this._tabs.toArray()[0].id);\n }\n\n /**\n * @docs-private\n *\n * Selects the last tab.\n */\n selectLast(event: KeyboardEvent | null) {\n event.preventDefault();\n const array = this._tabs.toArray();\n this.select(array[array.length - 1].id);\n }\n}\n","<div class=\"daff-tabs__tab-list\"\n\trole=\"tablist\"\n\t[attr.aria-label]=\"ariaLabel\"\n\t(keydown.home)=\"selectFirst($event)\"\n\t(keydown.end)=\"selectLast($event)\">\n\t@for (tab of _tabs; track tab) {\n\t\t@if (linkMode && tab.disabled) {\n\t\t\t<button daff-tab-activator routerLinkActive\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t} @else if (linkMode) {\n\t\t\t<a daff-tab-activator routerLinkActive\n\t\t\t\tclass=\"daff-ae daff_tabs__link\"\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[routerLink]=\"url || currentPath\"\n\t\t\t\tqueryParamsHandling=\"merge\"\n\t\t\t\t[queryParams]=\"_buildQueryParams(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\"\n\t\t\t\t(isActiveChange)=\"$event && select(tab.id)\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</a>\n\t\t} @else {\n\t\t\t<button daff-tab-activator\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t(click)=\"select(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n\n@for (tab of _tabs; track tab) {\n\t@if(tab.id === selectedTab ) {\n\t\t<ng-container *ngTemplateOutlet=\"tab.contentRef\"></ng-container>\n\t}\n}","import { DaffTabComponent } from './tabs/tab/tab.component';\nimport { DaffTabLabelComponent } from './tabs/tab-label/tab-label.component';\nimport { DaffTabPanelComponent } from './tabs/tab-panel/tab-panel.component';\nimport { DaffTabsComponent } from './tabs/tabs.component';\n\n/**\n * @docs-private\n *\n * ```ts\n * import { DAFF_TABS_COMPONENTS } from '@daffodil/design/tabs';\n * ```\n */\nexport const DAFF_TABS_COMPONENTS = <const> [\n DaffTabsComponent,\n DaffTabLabelComponent,\n DaffTabPanelComponent,\n DaffTabComponent,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffTabComponent","i1"],"mappings":"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"}
1
+ {"version":3,"file":"daffodil-design-tabs.mjs","sources":["../../../libs/design/tabs/src/tabs/tab/tab.component.ts","../../../libs/design/tabs/src/tabs/tab-label/tab-label.component.ts","../../../libs/design/tabs/src/tabs/tab-label/tab-label.component.html","../../../libs/design/tabs/src/tabs/tab-panel/tab-panel.component.ts","../../../libs/design/tabs/src/tabs/tab-activator/tab-activator.component.ts","../../../libs/design/tabs/src/tabs/tabs.component.ts","../../../libs/design/tabs/src/tabs/tabs.component.html","../../../libs/design/tabs/src/tabs.ts","../../../libs/design/tabs/src/daffodil-design-tabs.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n TemplateRef,\n ViewChild,\n Input,\n} from '@angular/core';\n\nlet tabId = 1;\n\n/**\n * Tab is a single tab in the tablist that is used to group the label of a tab panel and the tab panel together.\n *\n * A `<daff-tab>` should include the DaffTabLabelComponent and DaffTabPanelComponent components in order to properly structure the UI.\n *\n * @example\n * ```html\n * <daff-tab>\n * \t<daff-tab-label>\n * \t\t<fa-icon [icon]=\"faInfoCircle\" daffPrefix></fa-icon>\n * \t\tTab 1\n * \t</daff-tab-label>\n * \t<daff-tab-panel>\n * \t\tTab 1 Panel\n * \t</daff-tab-panel>\n * </daff-tab>\n * ```\n */\n@Component({\n selector: 'daff-tab',\n template: `\n <ng-template #label>\n <ng-content select=\"daff-tab-label\"></ng-content>\n </ng-template>\n <ng-template #content>\n <ng-content select=\"daff-tab-panel\"></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaffTabComponent {\n /**\n * Whether the tab is disabled.\n */\n @Input() disabled = false;\n\n /**\n * @docs-private\n */\n @ViewChild('content', { read: TemplateRef, static: true }) contentRef: TemplateRef<any>;\n\n /**\n * @docs-private\n */\n @ViewChild('label', { read: TemplateRef, static: true }) labelRef: TemplateRef<any>;\n\n /**\n * A unique id for the tab component. Defaults to an autogenerated value. When using this,\n * it's your responsibility to ensure that the id for each tab is unique.\n */\n @Input() id = 'daff-tab-' + tabId;\n\n /**\n * @docs-private\n */\n panelId = 'daff-tab-panel-' + tabId;\n\n constructor() {\n tabId++;\n }\n}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n} from '@angular/core';\n\nimport {\n DaffPrefixDirective,\n DaffSuffixDirective,\n} from '@daffodil/design';\n\n/**\n * Tab label is the clicakble label that activates its corresponding tab panel. Labels can contain text, icons, or both.\n *\n * @example\n * ```html\n * <daff-tab-label>\n * <div daffPrefix></div>\n * Label\n * <div daffSuffix></div\n * </daff-tab-Label>\n * ```\n */\n@Component({\n selector: 'daff-tab-label',\n templateUrl: './tab-label.component.html',\n styleUrl: './tab-label.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n DaffPrefixDirective,\n DaffSuffixDirective,\n ],\n})\nexport class DaffTabLabelComponent {\n /**\n * @docs-private\n */\n @ContentChild(DaffPrefixDirective) _prefix: DaffPrefixDirective;\n\n /**\n * @docs-private\n */\n @ContentChild(DaffSuffixDirective) _suffix: DaffSuffixDirective;\n}\n","@if (_prefix) {\n <ng-content select=\"[daffPrefix]\"></ng-content>\n}\n<div class=\"daff-tab-label__content\">\n <ng-content></ng-content>\n</div>\n@if (_suffix) {\n <ng-content select=\"[daffSuffix]\"></ng-content>\n}","/* eslint-disable quote-props */\nimport {\n Component,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { DaffTabComponent } from '../tab/tab.component';\n\n/**\n * Tab panel is the content area displayed when a tab is active.\n *\n * @example\n * ```html\n * <daff-tab-panel>\n * <!-- Tab panel content goes here -->\n * </daff-tab-panel>\n * ```\n */\n@Component({\n selector: 'daff-tab-panel',\n template: `<ng-content></ng-content>`,\n styleUrl: './tab-panel.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'daff-tab-panel',\n 'role': 'tabpanel',\n 'tabindex': '0',\n '[attr.id]': 'tabPanelId',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n },\n})\nexport class DaffTabPanelComponent {\n private _id = '';\n\n /**\n * @docs-private\n *\n * Dynamically binds the tab panel's id to a unique value generated from the associated tab's panelId.\n */\n get tabPanelId() {\n return this._id;\n }\n\n private _ariaLabelledBy = '';\n\n /**\n * @docs-private\n */\n get ariaLabelledBy() {\n return this._ariaLabelledBy;\n }\n\n constructor(private tab: DaffTabComponent) {\n /**\n * Sets the value of `ariaLabelledBy` to the id of the tab component.\n */\n this._ariaLabelledBy = this.tab.id;\n\n this._id = this.tab.panelId;\n }\n}\n","/* eslint-disable quote-props */\nimport {\n Input,\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ElementRef,\n} from '@angular/core';\n\nimport { DaffSelectableDirective } from '@daffodil/design';\n\n@Component({\n selector: '' +\n 'button[daff-tab-activator]' + ',' +\n 'a[daff-tab-activator]',\n template: `<ng-content></ng-content>`,\n styleUrl: './tab-activator.component.scss',\n hostDirectives: [\n {\n directive: DaffSelectableDirective,\n inputs: ['selected'],\n },\n ],\n host: {\n 'class': 'daff-tab-activator',\n 'role': 'tab',\n '[attr.aria-selected]': 'ariaSelected',\n '[attr.tabindex]': 'tabIndex',\n '[attr.id]': 'tabActivatorId',\n '[attr.aria-controls]': 'panelId',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DaffTabActivatorComponent {\n /**\n * @docs-private\n *\n * Sets `aria-selected` to true if the component is selected and false if it's not selected.\n */\n get ariaSelected() {\n return this.selectableDirective.selected ? true : false;\n }\n\n /**\n * @docs-private\n *\n * Sets `tabindex` to `0` if the component is selected and `-1` if it's not selected.\n */\n get tabIndex() {\n return this.selectableDirective.selected ? '0' : '-1';\n }\n\n constructor(\n private el: ElementRef,\n private selectableDirective: DaffSelectableDirective,\n ) {\n }\n\n /**\n * The html id of the tab activator component\n */\n @Input() tabActivatorId = '';\n\n @Input() panelId = '';\n\n /**\n * Sets focus to the native element of the component.\n */\n focus() {\n this.el.nativeElement.focus();\n }\n}\n","/* eslint-disable quote-props */\nimport {\n Location,\n NgTemplateOutlet,\n} from '@angular/common';\nimport {\n Component,\n HostBinding,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n AfterContentInit,\n Input,\n Output,\n EventEmitter,\n ViewChildren,\n ChangeDetectorRef,\n OnInit,\n} from '@angular/core';\nimport {\n Params,\n RouterLink,\n RouterLinkActive,\n} from '@angular/router';\n\nimport { DaffTabComponent } from './tab/tab.component';\nimport { DaffTabActivatorComponent } from './tab-activator/tab-activator.component';\nimport { DaffTabLabelComponent } from './tab-label/tab-label.component';\n\n/**\n * Tabs provide a way to navigate between panels that display related content without leaving the page.\n *\n * @example\n * ```html\n * <daff-tabs aria-label=\"List of tabs\">\n * \t<daff-tab>\n * \t\t<daff-tab-label>\n * \t\t\t<fa-icon [icon]=\"faInfoCircle\" daffPrefix></fa-icon>\n * \t\t\tTab 1\n * \t\t</daff-tab-label>\n * \t\t<daff-tab-panel>\n * \t\t\tTab 1 Panel\n * \t\t</daff-tab-panel>\n * \t</daff-tab>\n * \t<daff-tab>\n * \t\t<daff-tab-label>\n * \t\t\tTab 2\n * \t\t\t<fa-icon [icon]=\"faInfoCircle\" daffSuffix></fa-icon>\n * \t\t</daff-tab-label>\n * \t\t<daff-tab-panel>\n * \t\t\tTab 2 Panel\n * \t\t</daff-tab-panel>\n * \t</daff-tab>\n * </daff-tabs>\n * ```\n */\n@Component({\n selector: 'daff-tabs',\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'daff-tabs',\n },\n imports: [\n NgTemplateOutlet,\n RouterLink,\n RouterLinkActive,\n DaffTabActivatorComponent,\n ],\n})\n\nexport class DaffTabsComponent implements AfterContentInit, OnInit {\n /**\n * @docs-private\n *\n * The currently selected tab. This property is dynamically updated when a user selects a tab.\n */\n selectedTab: string;\n\n /**\n * The tab that is selected on initial load. If it's not used, the first tab in the tablist will be selected by default.\n */\n @Input() initiallySelected: string = null;\n\n /**\n * @docs-private\n *\n * aria-label for the tab.\n */\n @HostBinding('attr.aria-label') private externalAriaLabel = null;\n\n /**\n * `aria-label` to label the tablist.\n */\n @Input('aria-label') ariaLabel = '';\n\n /**\n * Replace the tab buttons as links.\n */\n @Input() linkMode = false;\n\n /**\n * The URL to navigate to when the component is in link mode.\n * This component will set the specified query param.\n */\n @Input() url?: string;\n\n /**\n * The query parameter that the tabs component will use to set the tab value in link mode.\n */\n @Input() queryParam = 'tab';\n\n /**\n * Event emitted when tab selection changes.\n */\n @Output() tabChange = new EventEmitter<string>();\n\n /**\n * @docs-private\n */\n @ContentChildren(DaffTabLabelComponent, { descendants: true }) _labels: QueryList<DaffTabLabelComponent>;\n\n /**\n * @docs-private\n */\n @ContentChildren(DaffTabComponent) _tabs: QueryList<DaffTabComponent>;\n\n /**\n * @docs-private\n */\n @ViewChildren(DaffTabActivatorComponent) _tabActivators: QueryList<DaffTabActivatorComponent>;\n\n /**\n * @docs-private\n */\n get currentPath(): string {\n return this.location.path();\n }\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private location: Location,\n ) {}\n\n private reset() {\n if(this.initiallySelected) {\n this.selectedTab = this.initiallySelected;\n }\n\n if (!this.selectedTab) {\n this.selectedTab = this._tabs.first.id;\n }\n }\n\n /**\n * @docs-private\n */\n ngOnInit(): void {\n this.location.onUrlChange(() => {\n // if the app is navigated away from the current page, reset the state\n if (this.linkMode && !this.location.isCurrentPathEqualTo(this.url, `${this.queryParam}=${this.selectedTab}`)) {\n this.selectedTab = null;\n this.reset();\n this.tabChange.emit(this.selectedTab);\n }\n });\n }\n\n /**\n * @docs-private\n */\n ngAfterContentInit() {\n this.reset();\n }\n\n /**\n * @docs-private\n *\n * Selects a tab and sets focus on the selected tab.\n */\n select(tabId: string) {\n const tabActivator = this._tabActivators.find(el => el.tabActivatorId === tabId);\n\n if (!tabActivator) {\n console.warn(`The tab '${tabId}' was not able to be selected because it does not exist. Check the id on your <daff-tab>s.`);\n return;\n }\n\n this.tabChange.emit(tabId);\n this.selectedTab = tabId;\n this.cdRef.markForCheck();\n\n tabActivator.focus();\n }\n\n /**\n * Navigates through the tabs based on the given offset.\n * Moves forward or backward in the tab array, wrapping around when necessary.\n */\n private navigateTabs(offset: number) {\n const array = this._tabs.toArray();\n let selectedIndex = array.findIndex(el => el.id === this.selectedTab);\n const startingIndex = selectedIndex;\n let newIndex;\n\n do {\n newIndex = (selectedIndex + offset + array.length) % array.length;\n selectedIndex = newIndex;\n } while (array[newIndex].disabled && selectedIndex !== startingIndex); // Skip disabled tabs\n\n this.select(array[newIndex].id);\n }\n\n /**\n * @docs-private\n */\n _buildQueryParams(tab: string): Params {\n return {\n [this.queryParam]: tab,\n };\n }\n\n /**\n * @docs-private\n *\n * Selects the previous tab and wraps around to the last tab if the first tab is currently selected.\n */\n previous() {\n this.navigateTabs(-1);\n }\n\n /**\n * @docs-private\n *\n * Selects the next tab and wraps around to the first tab if the last tab is currently selected.\n */\n next() {\n this.navigateTabs(1);\n }\n\n /**\n * @docs-private\n *\n * Selects the first tab.\n */\n selectFirst(event: KeyboardEvent | null) {\n event.preventDefault();\n this.select(this._tabs.toArray()[0].id);\n }\n\n /**\n * @docs-private\n *\n * Selects the last tab.\n */\n selectLast(event: KeyboardEvent | null) {\n event.preventDefault();\n const array = this._tabs.toArray();\n this.select(array[array.length - 1].id);\n }\n}\n","<div class=\"daff-tabs__tab-list\"\n\trole=\"tablist\"\n\t[attr.aria-label]=\"ariaLabel\"\n\t(keydown.home)=\"selectFirst($event)\"\n\t(keydown.end)=\"selectLast($event)\">\n\t@for (tab of _tabs; track tab) {\n\t\t@if (linkMode && tab.disabled) {\n\t\t\t<button daff-tab-activator routerLinkActive\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t} @else if (linkMode) {\n\t\t\t<a daff-tab-activator routerLinkActive\n\t\t\t\tclass=\"daff-ae daff_tabs__link\"\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t[routerLink]=\"url || currentPath\"\n\t\t\t\tqueryParamsHandling=\"merge\"\n\t\t\t\t[queryParams]=\"_buildQueryParams(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\"\n\t\t\t\t(isActiveChange)=\"$event && select(tab.id)\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</a>\n\t\t} @else {\n\t\t\t<button daff-tab-activator\n\t\t\t\t[selected]=\"tab.id === selectedTab\"\n\t\t\t\t(click)=\"select(tab.id)\"\n\t\t\t\t[panelId]=\"tab.panelId\"\n\t\t\t\t[disabled]=\"tab.disabled\"\n\t\t\t\t[tabActivatorId]=\"tab.id\"\n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"tab.labelRef\"></ng-container>\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n\n@for (tab of _tabs; track tab) {\n\t@if(tab.id === selectedTab ) {\n\t\t<ng-container *ngTemplateOutlet=\"tab.contentRef\"></ng-container>\n\t}\n}","import { DaffTabComponent } from './tabs/tab/tab.component';\nimport { DaffTabLabelComponent } from './tabs/tab-label/tab-label.component';\nimport { DaffTabPanelComponent } from './tabs/tab-panel/tab-panel.component';\nimport { DaffTabsComponent } from './tabs/tabs.component';\n\n/**\n * @docs-private\n *\n * ```ts\n * import { DAFF_TABS_COMPONENTS } from '@daffodil/design/tabs';\n * ```\n */\nexport const DAFF_TABS_COMPONENTS = <const> [\n DaffTabsComponent,\n DaffTabLabelComponent,\n DaffTabPanelComponent,\n DaffTabComponent,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffTabComponent","i1"],"mappings":"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"}
@@ -1,16 +1,17 @@
1
- import { NgIf } from '@angular/common';
2
1
  import * as i0 from '@angular/core';
3
2
  import { EventEmitter, ElementRef, Output, ViewChild, Input, ChangeDetectionStrategy, Component } from '@angular/core';
4
3
  import * as i1 from '@daffodil/design/button';
5
- import { DAFF_BUTTON_COMPONENTS } from '@daffodil/design/button';
4
+ import { DAFF_UNDERLINE_BUTTON_COMPONENTS } from '@daffodil/design/button';
6
5
 
7
6
  class DaffTextSnippetComponent {
8
7
  constructor() {
9
8
  /**
10
- * A property to track whether or not the component
11
- * should render a condensed version of the content.
9
+ * Whether or not the component should render a condensed version of the content.
12
10
  */
13
11
  this.condensed = true;
12
+ /**
13
+ * The HTML content to render inside the snippet.
14
+ */
14
15
  this.html = '';
15
16
  /**
16
17
  * An output event that can be used to track the state of the component externally.
@@ -18,19 +19,27 @@ class DaffTextSnippetComponent {
18
19
  // eslint-disable-next-line @angular-eslint/no-output-native
19
20
  this.toggle = new EventEmitter();
20
21
  }
22
+ /**
23
+ * @docs-private
24
+ */
25
+ ariaExpanded() {
26
+ return !this.condensed ? true : false;
27
+ }
28
+ /**
29
+ * @docs-private
30
+ */
21
31
  toggleSnippet() {
22
32
  this.condensed = !this.condensed;
23
33
  this.toggle.emit(this.condensed);
24
34
  }
25
35
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffTextSnippetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffTextSnippetComponent, isStandalone: true, selector: "daff-text-snippet", inputs: { condensed: "condensed", html: "html" }, outputs: { toggle: "toggle" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentEl"], descendants: true, read: ElementRef }, { propertyName: "htmlRef", first: true, predicate: ["htmlEl"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"daff-text-snippet__content daff-text-snippet__html\" #htmlEl [class.condensed]=\"condensed\" [innerHtml]=\"html\" *ngIf=\"html\"></div>\n<div class=\"daff-text-snippet__content daff-text-snippet__ngcontent\" #contentEl [class.condensed]=\"condensed\" *ngIf=\"!html\">\n <ng-content></ng-content>\n</div>\n<button daff-underline-button color=\"theme-contrast\" [attr.aria-expanded]=\"!condensed ? true : false\" (click)=\"toggleSnippet()\">\n <ng-container *ngIf=\"condensed\">Show More</ng-container>\n <ng-container *ngIf=\"!condensed\">Show Less</ng-container>\n</button>\n", styles: [":host{display:block;position:relative}:host ::ng-deep .daff-text-snippet__content>*:first-child{margin-top:0}:host ::ng-deep .daff-text-snippet__content>*:last-child{margin-bottom:0}:host ::ng-deep h2:first-of-type{margin-top:0}.daff-text-snippet__content{display:block}.daff-text-snippet__content.condensed{display:-webkit-box;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.DaffUnderlineButtonComponent, selector: "button[daff-underline-button],a[daff-underline-button]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DaffTextSnippetComponent, isStandalone: true, selector: "daff-text-snippet", inputs: { condensed: "condensed", html: "html" }, outputs: { toggle: "toggle" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentEl"], descendants: true, read: ElementRef }, { propertyName: "htmlRef", first: true, predicate: ["htmlEl"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (html) {\n <div class=\"daff-text-snippet__content daff-text-snippet__html\" #htmlEl [class.condensed]=\"condensed\" [innerHtml]=\"html\"></div>\n} @else {\n <div class=\"daff-text-snippet__content daff-text-snippet__ngcontent\" #contentEl [class.condensed]=\"condensed\">\n <ng-content></ng-content>\n </div>\n}\n<button daff-underline-button color=\"theme-contrast\"\n class=\"daff-text-snippet__toggle\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n (click)=\"toggleSnippet()\">\n @if (condensed) {\n Show More\n } @else {\n Show Less\n }\n</button>\n", styles: [":host{display:block;position:relative}:host ::ng-deep .daff-text-snippet__content>*:first-child{margin-top:0}:host ::ng-deep .daff-text-snippet__content>*:last-child{margin-bottom:0}:host ::ng-deep h2:first-of-type{margin-top:0}.daff-text-snippet__content{display:block}.daff-text-snippet__content.condensed{display:-webkit-box;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;width:100%}\n"], dependencies: [{ kind: "component", type: i1.DaffUnderlineButtonComponent, selector: "button[daff-underline-button],a[daff-underline-button]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
37
  }
28
38
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffTextSnippetComponent, decorators: [{
29
39
  type: Component,
30
40
  args: [{ selector: 'daff-text-snippet', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
31
- NgIf,
32
- DAFF_BUTTON_COMPONENTS,
33
- ], template: "<div class=\"daff-text-snippet__content daff-text-snippet__html\" #htmlEl [class.condensed]=\"condensed\" [innerHtml]=\"html\" *ngIf=\"html\"></div>\n<div class=\"daff-text-snippet__content daff-text-snippet__ngcontent\" #contentEl [class.condensed]=\"condensed\" *ngIf=\"!html\">\n <ng-content></ng-content>\n</div>\n<button daff-underline-button color=\"theme-contrast\" [attr.aria-expanded]=\"!condensed ? true : false\" (click)=\"toggleSnippet()\">\n <ng-container *ngIf=\"condensed\">Show More</ng-container>\n <ng-container *ngIf=\"!condensed\">Show Less</ng-container>\n</button>\n", styles: [":host{display:block;position:relative}:host ::ng-deep .daff-text-snippet__content>*:first-child{margin-top:0}:host ::ng-deep .daff-text-snippet__content>*:last-child{margin-bottom:0}:host ::ng-deep h2:first-of-type{margin-top:0}.daff-text-snippet__content{display:block}.daff-text-snippet__content.condensed{display:-webkit-box;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;width:100%}\n"] }]
41
+ DAFF_UNDERLINE_BUTTON_COMPONENTS,
42
+ ], template: "@if (html) {\n <div class=\"daff-text-snippet__content daff-text-snippet__html\" #htmlEl [class.condensed]=\"condensed\" [innerHtml]=\"html\"></div>\n} @else {\n <div class=\"daff-text-snippet__content daff-text-snippet__ngcontent\" #contentEl [class.condensed]=\"condensed\">\n <ng-content></ng-content>\n </div>\n}\n<button daff-underline-button color=\"theme-contrast\"\n class=\"daff-text-snippet__toggle\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n (click)=\"toggleSnippet()\">\n @if (condensed) {\n Show More\n } @else {\n Show Less\n }\n</button>\n", styles: [":host{display:block;position:relative}:host ::ng-deep .daff-text-snippet__content>*:first-child{margin-top:0}:host ::ng-deep .daff-text-snippet__content>*:last-child{margin-bottom:0}:host ::ng-deep h2:first-of-type{margin-top:0}.daff-text-snippet__content{display:block}.daff-text-snippet__content.condensed{display:-webkit-box;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;width:100%}\n"] }]
34
43
  }], propDecorators: { condensed: [{
35
44
  type: Input
36
45
  }], html: [{
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-design-text-snippet.mjs","sources":["../../../libs/design/text-snippet/src/text-snippet.component.ts","../../../libs/design/text-snippet/src/text-snippet.component.html","../../../libs/design/text-snippet/src/daffodil-design-text-snippet.ts"],"sourcesContent":["import { NgIf } from '@angular/common';\nimport {\n Component,\n Input,\n ChangeDetectionStrategy,\n EventEmitter,\n Output,\n ElementRef,\n ViewChild,\n} from '@angular/core';\n\nimport { DAFF_BUTTON_COMPONENTS } from '@daffodil/design/button';\n\n@Component({\n selector: 'daff-text-snippet',\n templateUrl: './text-snippet.component.html',\n styleUrls: ['./text-snippet.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n DAFF_BUTTON_COMPONENTS,\n ],\n})\nexport class DaffTextSnippetComponent {\n\n /**\n * A property to track whether or not the component\n * should render a condensed version of the content.\n */\n @Input() condensed = true;\n\n @Input() html = '';\n\n @ViewChild('contentEl', { read: ElementRef }) contentRef: ElementRef;\n @ViewChild('htmlEl', { read: ElementRef }) htmlRef: ElementRef;\n\n /**\n * An output event that can be used to track the state of the component externally.\n */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() toggle: EventEmitter<boolean> = new EventEmitter();\n\n toggleSnippet() {\n this.condensed = !this.condensed;\n this.toggle.emit(this.condensed);\n }\n}\n","<div class=\"daff-text-snippet__content daff-text-snippet__html\" #htmlEl [class.condensed]=\"condensed\" [innerHtml]=\"html\" *ngIf=\"html\"></div>\n<div class=\"daff-text-snippet__content daff-text-snippet__ngcontent\" #contentEl [class.condensed]=\"condensed\" *ngIf=\"!html\">\n <ng-content></ng-content>\n</div>\n<button daff-underline-button color=\"theme-contrast\" [attr.aria-expanded]=\"!condensed ? true : false\" (click)=\"toggleSnippet()\">\n <ng-container *ngIf=\"condensed\">Show More</ng-container>\n <ng-container *ngIf=\"!condensed\">Show Less</ng-container>\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAuBa,wBAAwB,CAAA;AAVrC,IAAA,WAAA,GAAA;AAYE;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,IAAI;QAEhB,IAAI,CAAA,IAAA,GAAG,EAAE;AAKlB;;AAEG;;AAEO,QAAA,IAAA,CAAA,MAAM,GAA0B,IAAI,YAAY,EAAE;AAM7D;IAJC,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;kIArBvB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,kPAUH,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACb,UAAU,EClCzC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ilBAQA,6dDWI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIK,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGZ,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,IAAI;wBACJ,sBAAsB;AACvB,qBAAA,EAAA,QAAA,EAAA,ilBAAA,EAAA,MAAA,EAAA,CAAA,qaAAA,CAAA,EAAA;8BAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAE6C,UAAU,EAAA,CAAA;sBAAvD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBACD,OAAO,EAAA,CAAA;sBAAjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAM/B,MAAM,EAAA,CAAA;sBAAf;;;AExCH;;AAEG;;;;"}
1
+ {"version":3,"file":"daffodil-design-text-snippet.mjs","sources":["../../../libs/design/text-snippet/src/text-snippet.component.ts","../../../libs/design/text-snippet/src/text-snippet.component.html","../../../libs/design/text-snippet/src/daffodil-design-text-snippet.ts"],"sourcesContent":["import {\n Component,\n Input,\n ChangeDetectionStrategy,\n EventEmitter,\n Output,\n ElementRef,\n ViewChild,\n} from '@angular/core';\n\nimport { DAFF_UNDERLINE_BUTTON_COMPONENTS } from '@daffodil/design/button';\n\n@Component({\n selector: 'daff-text-snippet',\n templateUrl: './text-snippet.component.html',\n styleUrls: ['./text-snippet.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DAFF_UNDERLINE_BUTTON_COMPONENTS,\n ],\n})\nexport class DaffTextSnippetComponent {\n\n /**\n * Whether or not the component should render a condensed version of the content.\n */\n @Input() condensed = true;\n\n /**\n * The HTML content to render inside the snippet.\n */\n @Input() html = '';\n\n /**\n * @docs-private\n */\n ariaExpanded() {\n return !this.condensed ? true : false;\n }\n\n /**\n * @docs-private\n */\n @ViewChild('contentEl', { read: ElementRef }) contentRef: ElementRef;\n\n /**\n * @docs-private\n */\n @ViewChild('htmlEl', { read: ElementRef }) htmlRef: ElementRef;\n\n /**\n * An output event that can be used to track the state of the component externally.\n */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() toggle: EventEmitter<boolean> = new EventEmitter();\n\n /**\n * @docs-private\n */\n toggleSnippet() {\n this.condensed = !this.condensed;\n this.toggle.emit(this.condensed);\n }\n}\n","@if (html) {\n <div class=\"daff-text-snippet__content daff-text-snippet__html\" #htmlEl [class.condensed]=\"condensed\" [innerHtml]=\"html\"></div>\n} @else {\n <div class=\"daff-text-snippet__content daff-text-snippet__ngcontent\" #contentEl [class.condensed]=\"condensed\">\n <ng-content></ng-content>\n </div>\n}\n<button daff-underline-button color=\"theme-contrast\"\n class=\"daff-text-snippet__toggle\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n (click)=\"toggleSnippet()\">\n @if (condensed) {\n Show More\n } @else {\n Show Less\n }\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAqBa,wBAAwB,CAAA;AATrC,IAAA,WAAA,GAAA;AAWE;;AAEG;QACM,IAAS,CAAA,SAAA,GAAG,IAAI;AAEzB;;AAEG;QACM,IAAI,CAAA,IAAA,GAAG,EAAE;AAmBlB;;AAEG;;AAEO,QAAA,IAAA,CAAA,MAAM,GAA0B,IAAI,YAAY,EAAE;AAS7D;AA9BC;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,KAAK;;AAmBvC;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;kIAxCvB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAsBH,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EAKb,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,6BChDzC,0kBAiBA,EAAA,MAAA,EAAA,CAAA,qaAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDIa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGZ,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,gCAAgC;AACjC,qBAAA,EAAA,QAAA,EAAA,0kBAAA,EAAA,MAAA,EAAA,CAAA,qaAAA,CAAA,EAAA;8BAOQ,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,IAAI,EAAA,CAAA;sBAAZ;gBAY6C,UAAU,EAAA,CAAA;sBAAvD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAKD,OAAO,EAAA,CAAA;sBAAjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAM/B,MAAM,EAAA,CAAA;sBAAf;;;AEtDH;;AAEG;;;;"}