@daffodil/design 0.93.0 → 0.94.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +0 -1
  2. package/accordion/src/accordion-theme.scss +2 -2
  3. package/article/src/article/_stops-article-cascade.scss +5 -1
  4. package/article/src/article-theme.scss +2 -2
  5. package/badge/README.md +85 -0
  6. package/badge/src/badge-theme.scss +197 -0
  7. package/beacon/README.md +61 -0
  8. package/beacon/src/beacon-theme.scss +61 -0
  9. package/breadcrumb/src/breadcrumb-theme.scss +2 -2
  10. package/button/src/button/basic/button-theme.scss +2 -2
  11. package/button/src/button/flat/flat-theme.scss +2 -2
  12. package/button/src/button/icon/icon-theme.scss +2 -2
  13. package/button/src/button/raised/raised-theme.scss +13 -13
  14. package/button/src/button/stroked/stroked-theme.scss +2 -2
  15. package/button/src/button/underline/underline-theme.scss +2 -2
  16. package/callout/src/callout-theme.scss +12 -2
  17. package/card/src/card/stroked/stroked-theme.scss +14 -22
  18. package/card/src/card-base-theme.scss +4 -4
  19. package/card/src/card-base.scss +13 -16
  20. package/fesm2022/daffodil-design-accordion.mjs +9 -15
  21. package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
  22. package/fesm2022/daffodil-design-article.mjs +2 -2
  23. package/fesm2022/daffodil-design-article.mjs.map +1 -1
  24. package/fesm2022/daffodil-design-badge.mjs +87 -0
  25. package/fesm2022/daffodil-design-badge.mjs.map +1 -0
  26. package/fesm2022/daffodil-design-beacon.mjs +48 -0
  27. package/fesm2022/daffodil-design-beacon.mjs.map +1 -0
  28. package/fesm2022/daffodil-design-breadcrumb.mjs +1 -1
  29. package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
  30. package/fesm2022/daffodil-design-button.mjs +1 -1
  31. package/fesm2022/daffodil-design-button.mjs.map +1 -1
  32. package/fesm2022/daffodil-design-callout.mjs +2 -2
  33. package/fesm2022/daffodil-design-card.mjs +9 -11
  34. package/fesm2022/daffodil-design-card.mjs.map +1 -1
  35. package/fesm2022/daffodil-design-form-field.mjs +95 -115
  36. package/fesm2022/daffodil-design-form-field.mjs.map +1 -1
  37. package/fesm2022/daffodil-design-form.mjs +5 -7
  38. package/fesm2022/daffodil-design-form.mjs.map +1 -1
  39. package/fesm2022/daffodil-design-image.mjs +41 -98
  40. package/fesm2022/daffodil-design-image.mjs.map +1 -1
  41. package/fesm2022/daffodil-design-input.mjs +3 -3
  42. package/fesm2022/daffodil-design-input.mjs.map +1 -1
  43. package/fesm2022/daffodil-design-list.mjs +16 -21
  44. package/fesm2022/daffodil-design-list.mjs.map +1 -1
  45. package/fesm2022/daffodil-design-media-gallery.mjs +56 -61
  46. package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
  47. package/fesm2022/daffodil-design-menu.mjs +61 -38
  48. package/fesm2022/daffodil-design-menu.mjs.map +1 -1
  49. package/fesm2022/daffodil-design-modal.mjs +2 -2
  50. package/fesm2022/daffodil-design-modal.mjs.map +1 -1
  51. package/fesm2022/daffodil-design-native-select.mjs +3 -3
  52. package/fesm2022/daffodil-design-native-select.mjs.map +1 -1
  53. package/fesm2022/daffodil-design-notification.mjs +17 -20
  54. package/fesm2022/daffodil-design-notification.mjs.map +1 -1
  55. package/fesm2022/daffodil-design-paginator.mjs +71 -76
  56. package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
  57. package/fesm2022/daffodil-design-progress-bar.mjs +33 -53
  58. package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
  59. package/fesm2022/daffodil-design-select.mjs +1 -1
  60. package/fesm2022/daffodil-design-select.mjs.map +1 -1
  61. package/fesm2022/daffodil-design-sidebar.mjs +2 -2
  62. package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
  63. package/fesm2022/daffodil-design-spinner.mjs +17 -16
  64. package/fesm2022/daffodil-design-spinner.mjs.map +1 -1
  65. package/fesm2022/daffodil-design-switch.mjs +20 -29
  66. package/fesm2022/daffodil-design-switch.mjs.map +1 -1
  67. package/fesm2022/daffodil-design-tabs.mjs +86 -88
  68. package/fesm2022/daffodil-design-tabs.mjs.map +1 -1
  69. package/fesm2022/daffodil-design-tag.mjs +33 -28
  70. package/fesm2022/daffodil-design-tag.mjs.map +1 -1
  71. package/fesm2022/daffodil-design-text-snippet.mjs +18 -23
  72. package/fesm2022/daffodil-design-text-snippet.mjs.map +1 -1
  73. package/fesm2022/daffodil-design-textarea.mjs +3 -3
  74. package/fesm2022/daffodil-design-textarea.mjs.map +1 -1
  75. package/fesm2022/daffodil-design-toast.mjs +19 -20
  76. package/fesm2022/daffodil-design-toast.mjs.map +1 -1
  77. package/fesm2022/daffodil-design.mjs +111 -80
  78. package/fesm2022/daffodil-design.mjs.map +1 -1
  79. package/form/src/hint/hint-theme.scss +2 -2
  80. package/form-field/src/form-field-theme.scss +2 -2
  81. package/hero/src/hero-theme.scss +12 -2
  82. package/list/README.md +10 -0
  83. package/list/src/list-theme.scss +2 -2
  84. package/media-gallery/README.md +0 -5
  85. package/media-gallery/src/media-gallery-theme.scss +2 -2
  86. package/menu/README.md +5 -0
  87. package/menu/src/menu-theme.scss +4 -4
  88. package/notification/src/notification-theme.scss +2 -2
  89. package/package.json +1 -1
  90. package/paginator/src/paginator-theme.scss +2 -2
  91. package/progress-bar/README.md +1 -1
  92. package/progress-bar/src/progress-bar-theme.scss +2 -2
  93. package/scss/global.scss +4 -0
  94. package/scss/state/skeleton/_mixins.scss +2 -2
  95. package/scss/theme/default.scss +15 -0
  96. package/scss/theme.scss +4 -8
  97. package/scss/theming/_configure-palette.scss +5 -1
  98. package/scss/theming/_get-theme-mode.scss +1 -1
  99. package/scss/theming/_index.scss +2 -3
  100. package/scss/theming/_light-dark.scss +37 -12
  101. package/scss/theming/color-shift/_color-shift.scss +56 -0
  102. package/scss/theming/color-shift/_color-shift.spec.scss +107 -0
  103. package/scss/theming/color-shift/_index.scss +1 -0
  104. package/scss/theming/{_daff-theme.scss → default/_daff-theme.scss} +4 -4
  105. package/scss/theming/default/_index.scss +1 -0
  106. package/select/src/select-theme.scss +5 -3
  107. package/switch/src/switch-theme.scss +2 -2
  108. package/tabs/src/tabs-theme.scss +2 -2
  109. package/tag/README.md +10 -6
  110. package/tag/src/tag-theme.scss +102 -5
  111. package/toast/src/toast-theme.scss +2 -2
  112. package/tree/src/tree-theme.scss +2 -2
  113. package/types/daffodil-design-accordion.d.ts +4 -4
  114. package/types/daffodil-design-badge.d.ts +63 -0
  115. package/types/daffodil-design-beacon.d.ts +26 -0
  116. package/types/daffodil-design-card.d.ts +2 -2
  117. package/types/daffodil-design-form-field.d.ts +34 -31
  118. package/types/daffodil-design-form.d.ts +2 -2
  119. package/types/daffodil-design-image.d.ts +15 -28
  120. package/types/daffodil-design-list.d.ts +3 -3
  121. package/types/daffodil-design-media-gallery.d.ts +31 -20
  122. package/types/daffodil-design-menu.d.ts +51 -20
  123. package/types/daffodil-design-notification.d.ts +5 -6
  124. package/types/daffodil-design-paginator.d.ts +20 -25
  125. package/types/daffodil-design-progress-bar.d.ts +16 -21
  126. package/types/daffodil-design-spinner.d.ts +2 -2
  127. package/types/daffodil-design-switch.d.ts +7 -8
  128. package/types/daffodil-design-tabs.d.ts +29 -29
  129. package/types/daffodil-design-tag.d.ts +22 -16
  130. package/types/daffodil-design-text-snippet.d.ts +9 -9
  131. package/types/daffodil-design.d.ts +61 -41
  132. package/fesm2022/daffodil-design-loading-icon.mjs +0 -67
  133. package/fesm2022/daffodil-design-loading-icon.mjs.map +0 -1
  134. package/loading-icon/README.md +0 -59
  135. package/loading-icon/src/loading-icon-theme.scss +0 -103
  136. package/scss/theming/illuminate/illuminate.scss +0 -149
  137. package/scss/theming/illuminate/illuminate.spec.scss +0 -15
  138. package/types/daffodil-design-loading-icon.d.ts +0 -31
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-design-card.mjs","sources":["../../../libs/design/card/src/card-base.directive.ts","../../../libs/design/card/src/card/basic/basic.component.ts","../../../libs/design/card/src/card-base.component.html","../../../libs/design/card/src/card/stroked/stroked.component.ts","../../../libs/design/card/src/card-actions/card-actions.directive.ts","../../../libs/design/card/src/card-content/card-content.directive.ts","../../../libs/design/card/src/card-icon/card-icon.directive.ts","../../../libs/design/card/src/card-image/card-image.directive.ts","../../../libs/design/card/src/card-tagline/card-tagline.directive.ts","../../../libs/design/card/src/card-title/card-title.directive.ts","../../../libs/design/card/src/card.module.ts","../../../libs/design/card/src/card.ts","../../../libs/design/card/src/daffodil-design-card.ts"],"sourcesContent":["import {\n Input,\n Directive,\n} from '@angular/core';\n\nimport {\n DaffArticleEncapsulatedDirective,\n DaffColorableDirective,\n DaffOrientableDirective,\n} from '@daffodil/design';\n\n@Directive({\n selector: '[daffCardBase]',\n hostDirectives: [\n { directive: DaffArticleEncapsulatedDirective },\n {\n directive: DaffColorableDirective,\n inputs: ['color'],\n },\n {\n directive: DaffOrientableDirective,\n inputs: ['orientation'],\n },\n ],\n host: {\n '[class.elevated]': 'elevated',\n },\n})\nexport class DaffCardBaseDirective {\n /**\n * Whether or not a card displays a shadow.\n */\n @Input() elevated = false;\n\n constructor(private orientation: DaffOrientableDirective) {\n this.orientation.defaultOrientation = 'vertical';\n }\n}\n","/* eslint-disable quote-props */\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { DaffCardBaseDirective } from '../../card-base.directive';\n\n/**\n * A basic card variant with a filled background.\n *\n * @example\n * ```html\n * <daff-card>\n * \t<img daffCardImage src=\"/\" alt=\"image caption\" >\n * <div daffCardIcon></div>\n * <div daffCardTagline>Card tagline</div>\n * <h4 daffCardTitle>Card title</h4>\n * \t<div daffCardContent>Detailed information about the subject of the card.</div>\n * <div daffCardActions>\n * <button>Card link</button>\n * <button>Another card link</button>\n * </div>\n * </daff-card>\n * ```\n */\n@Component({\n selector:\n 'daff-card' + ',' +\n 'a[daff-card]',\n templateUrl: '../../card-base.component.html',\n styleUrls: ['./basic.component.scss'],\n host: {\n 'class': 'daff-card',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class DaffCardComponent extends DaffCardBaseDirective {}\n","<ng-content select=\"[daffCardImage]\"></ng-content>\n<div class=\"daff-card__wrapper\">\n\t<div class=\"daff-card__body\">\n\t\t<ng-content select=\"[daffCardIcon]\"></ng-content>\n\t\t<ng-content select=\"[daffCardTagline]\"></ng-content>\n\t\t<ng-content select=\"[daffCardTitle]\"></ng-content>\n\t\t<ng-content select=\"[daffCardContent]\"></ng-content>\n\t</div>\n\t<ng-content select=\"[daffCardActions]\"></ng-content>\n</div>","/* eslint-disable quote-props */\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { DaffCardBaseDirective } from '../../card-base.directive';\n\n/**\n * A card variant with a stroked (outlined) border instead of a filled background.\n *\n * @example\n * ```html\n * <daff-card>\n * \t<img daffCardImage src=\"/\" alt=\"image caption\" >\n * <div daffCardIcon></div>\n * <div daffCardTagline>Card tagline</div>\n * <h4 daffCardTitle>Card title</h4>\n * \t<div daffCardContent>Detailed information about the subject of the card.</div>\n * <div daffCardActions>\n * <button>Card link</button>\n * <button>Another card link</button>\n * </div>\n * </daff-card>\n * ```\n */\n@Component({\n selector:\n 'daff-stroked-card' + ',' +\n 'a[daff-stroked-card]',\n templateUrl: '../../card-base.component.html',\n styleUrls: ['./stroked.component.scss'],\n host: {\n 'class': 'daff-stroked-card',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class DaffStrokedCardComponent extends DaffCardBaseDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * A container for buttons or calls-to-action, always positioned to the bottom of the card.\n *\n * @example\n * ```html\n * <div daffCardActions></div>\n * ```\n */\n@Directive({\n selector: '[daffCardActions]',\n host: {\n 'class': 'daff-card__actions',\n },\n})\nexport class DaffCardActionsDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * A flexible wrapper for text, components, or custom layouts.\n * It's unstyled except for spacing and should only be used once per card.\n *\n * @example\n * ```html\n * <div daffCardContent></div>\n * ```\n */\n@Directive({\n selector: '[daffCardContent]',\n host: {\n 'class': 'daff-card__content',\n },\n})\nexport class DaffCardContentDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * Displays a visual or branding element. Avoid using this for interactive or actionable icons.\n *\n * @example\n * ```html\n * <div daffCardIcon></div>\n * ```\n */\n@Directive({\n selector: '[daffCardIcon]',\n host: {\n 'class': 'daff-card__icon',\n },\n})\nexport class DaffCardIconDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * Displays an image.\n *\n * @example\n * ```html\n * <div daffCardImage></div>\n * ```\n */\n@Directive({\n selector: '[daffCardImage]',\n host: {\n 'class': 'daff-card__image',\n },\n})\nexport class DaffCardImageDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * Short, memorable phrase that complements the title and provides quick context.\n *\n * @example\n * ```html\n * <div daffCardTagline></div>\n * ```\n */\n@Directive({\n selector: '[daffCardTagline]',\n host: {\n 'class': 'daff-card__tagline',\n },\n})\nexport class DaffCardTaglineDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * The primary heading of the card.\n *\n * @example\n * ```html\n * <div daffCardTitle></div>\n * ```\n */\n@Directive({\n selector: '[daffCardTitle]',\n host: {\n 'class': 'daff-card__title',\n },\n})\nexport class DaffCardTitleDirective {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffCardComponent } from './card/basic/basic.component';\nimport { DaffStrokedCardComponent } from './card/stroked/stroked.component';\nimport { DaffCardActionsDirective } from './card-actions/card-actions.directive';\nimport { DaffCardContentDirective } from './card-content/card-content.directive';\nimport { DaffCardIconDirective } from './card-icon/card-icon.directive';\nimport { DaffCardImageDirective } from './card-image/card-image.directive';\nimport { DaffCardTaglineDirective } from './card-tagline/card-tagline.directive';\nimport { DaffCardTitleDirective } from './card-title/card-title.directive';\n\n/**\n * @deprecated in favor of {@link DAFF_CARD_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n CommonModule,\n DaffCardComponent,\n DaffStrokedCardComponent,\n DaffCardIconDirective,\n DaffCardImageDirective,\n DaffCardTaglineDirective,\n DaffCardTitleDirective,\n DaffCardContentDirective,\n DaffCardActionsDirective,\n ],\n exports: [\n DaffCardComponent,\n DaffStrokedCardComponent,\n DaffCardIconDirective,\n DaffCardImageDirective,\n DaffCardTaglineDirective,\n DaffCardTitleDirective,\n DaffCardContentDirective,\n DaffCardActionsDirective,\n ],\n})\nexport class DaffCardModule { }\n","import { DaffCardComponent } from './card/basic/basic.component';\nimport { DaffStrokedCardComponent } from './card/stroked/stroked.component';\nimport { DaffCardActionsDirective } from './card-actions/card-actions.directive';\nimport { DaffCardContentDirective } from './card-content/card-content.directive';\nimport { DaffCardIconDirective } from './card-icon/card-icon.directive';\nimport { DaffCardImageDirective } from './card-image/card-image.directive';\nimport { DaffCardTaglineDirective } from './card-tagline/card-tagline.directive';\nimport { DaffCardTitleDirective } from './card-title/card-title.directive';\n\n/**\n * @docs-private\n */\nexport const DAFF_CARD_COMPONENTS = <const> [\n DaffCardComponent,\n DaffCardIconDirective,\n DaffCardImageDirective,\n DaffCardTaglineDirective,\n DaffCardTitleDirective,\n DaffCardContentDirective,\n DaffCardActionsDirective,\n];\n\n/**\n * @docs-private\n */\nexport const DAFF_STROKED_CARD_COMPONENTS = <const> [\n DaffStrokedCardComponent,\n DaffCardIconDirective,\n DaffCardImageDirective,\n DaffCardTaglineDirective,\n DaffCardTitleDirective,\n DaffCardContentDirective,\n DaffCardActionsDirective,\n];\n\n/**\n * @docs-private\n */\nexport const DAFF_ALL_CARD_COMPONENTS = <const> [\n DaffCardComponent,\n DaffStrokedCardComponent,\n DaffCardIconDirective,\n DaffCardImageDirective,\n DaffCardTaglineDirective,\n DaffCardTitleDirective,\n DaffCardContentDirective,\n DaffCardActionsDirective,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MA4Ba,qBAAqB,CAAA;AAMhC,IAAA,WAAA,CAAoB,WAAoC,EAAA;QAApC,IAAA,CAAA,WAAW,GAAX,WAAW;AAL/B;;AAEG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK;AAGvB,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,UAAU;IAClD;iIARW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gCAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAjBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,cAAc,EAAE;wBACd,EAAE,SAAS,EAAE,gCAAgC,EAAE;AAC/C,wBAAA;AACE,4BAAA,SAAS,EAAE,sBAAsB;4BACjC,MAAM,EAAE,CAAC,OAAO,CAAC;AAClB,yBAAA;AACD,wBAAA;AACE,4BAAA,SAAS,EAAE,uBAAuB;4BAClC,MAAM,EAAE,CAAC,aAAa,CAAC;AACxB,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,UAAU;AAC/B,qBAAA;AACF,iBAAA;;sBAKE;;;AChCH;AASA;;;;;;;;;;;;;;;;;AAiBG;AAcG,MAAO,iBAAkB,SAAQ,qBAAqB,CAAA;iIAA/C,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,gJCxC9B,obASM,EAAA,MAAA,EAAA,CAAA,wrDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD+BO,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AAEN,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,GAAG,GAAG;AACjB,wBAAA,cAAc,EAAA,IAAA,EAGV;AACJ,wBAAA,OAAO,EAAE,WAAW;AACrB,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,obAAA,EAAA,MAAA,EAAA,CAAA,wrDAAA,CAAA,EAAA;;;AErCjD;AASA;;;;;;;;;;;;;;;;;AAiBG;AAcG,MAAO,wBAAyB,SAAQ,qBAAqB,CAAA;iIAAtD,wBAAwB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,wBAAwB,wKDxCrC,obASM,EAAA,MAAA,EAAA,CAAA,w2DAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FC+BO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;AAEN,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,GAAG,GAAG;AACzB,wBAAA,sBAAsB,EAAA,IAAA,EAGlB;AACJ,wBAAA,OAAO,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,obAAA,EAAA,MAAA,EAAA,CAAA,w2DAAA,CAAA,EAAA;;;ACrCjD;AAGA;;;;;;;AAOG;MAOU,wBAAwB,CAAA;iIAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,oBAAoB;AAC9B,qBAAA;AACF,iBAAA;;;AChBD;AAGA;;;;;;;;AAQG;MAOU,wBAAwB,CAAA;iIAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,oBAAoB;AAC9B,qBAAA;AACF,iBAAA;;;ACjBD;AAGA;;;;;;;AAOG;MAOU,qBAAqB,CAAA;iIAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,iBAAiB;AAC3B,qBAAA;AACF,iBAAA;;;AChBD;AAGA;;;;;;;AAOG;MAOU,sBAAsB,CAAA;iIAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC5B,qBAAA;AACF,iBAAA;;;AChBD;AAGA;;;;;;;AAOG;MAOU,wBAAwB,CAAA;iIAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,oBAAoB;AAC9B,qBAAA;AACF,iBAAA;;;AChBD;AAGA;;;;;;;AAOG;MAOU,sBAAsB,CAAA;iIAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC5B,qBAAA;AACF,iBAAA;;;ACJD;;AAEG;MAwBU,cAAc,CAAA;iIAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YArBvB,YAAY;YACZ,iBAAiB;YACjB,wBAAwB;YACxB,qBAAqB;YACrB,sBAAsB;YACtB,wBAAwB;YACxB,sBAAsB;YACtB,wBAAwB;AACxB,YAAA,wBAAwB,aAGxB,iBAAiB;YACjB,wBAAwB;YACxB,qBAAqB;YACrB,sBAAsB;YACtB,wBAAwB;YACxB,sBAAsB;YACtB,wBAAwB;YACxB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAGf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YArBvB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAqBH,cAAc,EAAA,UAAA,EAAA,CAAA;kBAvB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,wBAAwB;wBACxB,qBAAqB;wBACrB,sBAAsB;wBACtB,wBAAwB;wBACxB,sBAAsB;wBACtB,wBAAwB;wBACxB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,wBAAwB;wBACxB,qBAAqB;wBACrB,sBAAsB;wBACtB,wBAAwB;wBACxB,sBAAsB;wBACtB,wBAAwB;wBACxB,wBAAwB;AACzB,qBAAA;AACF,iBAAA;;;AC5BD;;AAEG;AACI,MAAM,oBAAoB,GAAW;IAC1C,iBAAiB;IACjB,qBAAqB;IACrB,sBAAsB;IACtB,wBAAwB;IACxB,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;;AAG1B;;AAEG;AACI,MAAM,4BAA4B,GAAW;IAClD,wBAAwB;IACxB,qBAAqB;IACrB,sBAAsB;IACtB,wBAAwB;IACxB,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;;AAG1B;;AAEG;AACI,MAAM,wBAAwB,GAAW;IAC9C,iBAAiB;IACjB,wBAAwB;IACxB,qBAAqB;IACrB,sBAAsB;IACtB,wBAAwB;IACxB,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;;;AC9C1B;;AAEG;;;;"}
1
+ {"version":3,"file":"daffodil-design-card.mjs","sources":["../../../libs/design/card/src/card-base.directive.ts","../../../libs/design/card/src/card/basic/basic.component.ts","../../../libs/design/card/src/card-base.component.html","../../../libs/design/card/src/card/stroked/stroked.component.ts","../../../libs/design/card/src/card-actions/card-actions.directive.ts","../../../libs/design/card/src/card-content/card-content.directive.ts","../../../libs/design/card/src/card-icon/card-icon.directive.ts","../../../libs/design/card/src/card-image/card-image.directive.ts","../../../libs/design/card/src/card-tagline/card-tagline.directive.ts","../../../libs/design/card/src/card-title/card-title.directive.ts","../../../libs/design/card/src/card.module.ts","../../../libs/design/card/src/card.ts","../../../libs/design/card/src/daffodil-design-card.ts"],"sourcesContent":["import {\n Directive,\n input,\n} from '@angular/core';\n\nimport {\n DaffArticleEncapsulatedDirective,\n DaffColorableDirective,\n DaffOrientableDirective,\n} from '@daffodil/design';\n\n@Directive({\n selector: '[daffCardBase]',\n hostDirectives: [\n { directive: DaffArticleEncapsulatedDirective },\n {\n directive: DaffColorableDirective,\n inputs: ['color'],\n },\n {\n directive: DaffOrientableDirective,\n inputs: ['orientation'],\n },\n ],\n host: {\n '[class.elevated]': 'elevated()',\n },\n})\nexport class DaffCardBaseDirective {\n /**\n * Whether or not a card displays a shadow.\n */\n elevated = input(false);\n\n constructor(private orientation: DaffOrientableDirective) {\n this.orientation.defaultOrientation = 'vertical';\n }\n}\n","/* eslint-disable quote-props */\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { DaffCardBaseDirective } from '../../card-base.directive';\n\n/**\n * A basic card variant with a filled background.\n *\n * @example\n * ```html\n * <daff-card>\n * \t<img daffCardImage src=\"/\" alt=\"image caption\" >\n * <div daffCardIcon></div>\n * <div daffCardTagline>Card tagline</div>\n * <h4 daffCardTitle>Card title</h4>\n * \t<div daffCardContent>Detailed information about the subject of the card.</div>\n * <div daffCardActions>\n * <button>Card link</button>\n * <button>Another card link</button>\n * </div>\n * </daff-card>\n * ```\n */\n@Component({\n selector:\n 'daff-card' + ',' +\n 'a[daff-card]',\n templateUrl: '../../card-base.component.html',\n styleUrls: ['./basic.component.scss'],\n host: {\n 'class': 'daff-card',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class DaffCardComponent extends DaffCardBaseDirective {}\n","<ng-content select=\"[daffCardImage]\"></ng-content>\n<div class=\"daff-card__wrapper\">\n\t<div class=\"daff-card__body\">\n\t\t<ng-content select=\"[daffCardIcon]\"></ng-content>\n\t\t<ng-content select=\"[daffCardTagline]\"></ng-content>\n\t\t<ng-content select=\"[daffCardTitle]\"></ng-content>\n\t\t<ng-content select=\"[daffCardContent]\"></ng-content>\n\t</div>\n\t<ng-content select=\"[daffCardActions]\"></ng-content>\n</div>","/* eslint-disable quote-props */\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { DaffCardBaseDirective } from '../../card-base.directive';\n\n/**\n * A card variant with a stroked (outlined) border instead of a filled background.\n *\n * @example\n * ```html\n * <daff-card>\n * \t<img daffCardImage src=\"/\" alt=\"image caption\" >\n * <div daffCardIcon></div>\n * <div daffCardTagline>Card tagline</div>\n * <h4 daffCardTitle>Card title</h4>\n * \t<div daffCardContent>Detailed information about the subject of the card.</div>\n * <div daffCardActions>\n * <button>Card link</button>\n * <button>Another card link</button>\n * </div>\n * </daff-card>\n * ```\n */\n@Component({\n selector:\n 'daff-stroked-card' + ',' +\n 'a[daff-stroked-card]',\n templateUrl: '../../card-base.component.html',\n styleUrls: ['./stroked.component.scss'],\n host: {\n 'class': 'daff-stroked-card',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class DaffStrokedCardComponent extends DaffCardBaseDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * A container for buttons or calls-to-action, always positioned to the bottom of the card.\n *\n * @example\n * ```html\n * <div daffCardActions></div>\n * ```\n */\n@Directive({\n selector: '[daffCardActions]',\n host: {\n 'class': 'daff-card__actions',\n },\n})\nexport class DaffCardActionsDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * A flexible wrapper for text, components, or custom layouts.\n * It's unstyled except for spacing and should only be used once per card.\n *\n * @example\n * ```html\n * <div daffCardContent></div>\n * ```\n */\n@Directive({\n selector: '[daffCardContent]',\n host: {\n 'class': 'daff-card__content',\n },\n})\nexport class DaffCardContentDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * Displays a visual or branding element. Avoid using this for interactive or actionable icons.\n *\n * @example\n * ```html\n * <div daffCardIcon></div>\n * ```\n */\n@Directive({\n selector: '[daffCardIcon]',\n host: {\n 'class': 'daff-card__icon',\n },\n})\nexport class DaffCardIconDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * Displays an image.\n *\n * @example\n * ```html\n * <div daffCardImage></div>\n * ```\n */\n@Directive({\n selector: '[daffCardImage]',\n host: {\n 'class': 'daff-card__image',\n },\n})\nexport class DaffCardImageDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * Short, memorable phrase that complements the title and provides quick context.\n *\n * @example\n * ```html\n * <div daffCardTagline></div>\n * ```\n */\n@Directive({\n selector: '[daffCardTagline]',\n host: {\n 'class': 'daff-card__tagline',\n },\n})\nexport class DaffCardTaglineDirective {}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n/**\n * The primary heading of the card.\n *\n * @example\n * ```html\n * <div daffCardTitle></div>\n * ```\n */\n@Directive({\n selector: '[daffCardTitle]',\n host: {\n 'class': 'daff-card__title',\n },\n})\nexport class DaffCardTitleDirective {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffCardComponent } from './card/basic/basic.component';\nimport { DaffStrokedCardComponent } from './card/stroked/stroked.component';\nimport { DaffCardActionsDirective } from './card-actions/card-actions.directive';\nimport { DaffCardContentDirective } from './card-content/card-content.directive';\nimport { DaffCardIconDirective } from './card-icon/card-icon.directive';\nimport { DaffCardImageDirective } from './card-image/card-image.directive';\nimport { DaffCardTaglineDirective } from './card-tagline/card-tagline.directive';\nimport { DaffCardTitleDirective } from './card-title/card-title.directive';\n\n/**\n * @deprecated in favor of {@link DAFF_CARD_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n CommonModule,\n DaffCardComponent,\n DaffStrokedCardComponent,\n DaffCardIconDirective,\n DaffCardImageDirective,\n DaffCardTaglineDirective,\n DaffCardTitleDirective,\n DaffCardContentDirective,\n DaffCardActionsDirective,\n ],\n exports: [\n DaffCardComponent,\n DaffStrokedCardComponent,\n DaffCardIconDirective,\n DaffCardImageDirective,\n DaffCardTaglineDirective,\n DaffCardTitleDirective,\n DaffCardContentDirective,\n DaffCardActionsDirective,\n ],\n})\nexport class DaffCardModule { }\n","import { DaffCardComponent } from './card/basic/basic.component';\nimport { DaffStrokedCardComponent } from './card/stroked/stroked.component';\nimport { DaffCardActionsDirective } from './card-actions/card-actions.directive';\nimport { DaffCardContentDirective } from './card-content/card-content.directive';\nimport { DaffCardIconDirective } from './card-icon/card-icon.directive';\nimport { DaffCardImageDirective } from './card-image/card-image.directive';\nimport { DaffCardTaglineDirective } from './card-tagline/card-tagline.directive';\nimport { DaffCardTitleDirective } from './card-title/card-title.directive';\n\n/**\n * @docs-private\n */\nexport const DAFF_CARD_COMPONENTS = <const> [\n DaffCardComponent,\n DaffCardIconDirective,\n DaffCardImageDirective,\n DaffCardTaglineDirective,\n DaffCardTitleDirective,\n DaffCardContentDirective,\n DaffCardActionsDirective,\n];\n\n/**\n * @docs-private\n */\nexport const DAFF_STROKED_CARD_COMPONENTS = <const> [\n DaffStrokedCardComponent,\n DaffCardIconDirective,\n DaffCardImageDirective,\n DaffCardTaglineDirective,\n DaffCardTitleDirective,\n DaffCardContentDirective,\n DaffCardActionsDirective,\n];\n\n/**\n * @docs-private\n */\nexport const DAFF_ALL_CARD_COMPONENTS = <const> [\n DaffCardComponent,\n DaffStrokedCardComponent,\n DaffCardIconDirective,\n DaffCardImageDirective,\n DaffCardTaglineDirective,\n DaffCardTitleDirective,\n DaffCardContentDirective,\n DaffCardActionsDirective,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, isDevMode, Input, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
2
+ import { Directive, computed, contentChild, signal, input, isDevMode, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@daffodil/design';
4
4
  import { DaffPrefixDirective, DaffSuffixDirective, DaffFormLabelDirective, DaffSkeletonableDirective, DaffFormLabelModule } from '@daffodil/design';
5
5
  import { DaffFormFieldLabelDirective, DaffHintComponent, DaffErrorMessageComponent } from '@daffodil/design/form';
@@ -86,67 +86,120 @@ class DaffFormFieldControl {
86
86
  ;
87
87
 
88
88
  let daffFormFieldId = 0;
89
- var DaffFormFieldApperanaceEnum;
90
- (function (DaffFormFieldApperanaceEnum) {
91
- DaffFormFieldApperanaceEnum["Fluid"] = "fluid";
92
- DaffFormFieldApperanaceEnum["Fixed"] = "fixed";
93
- })(DaffFormFieldApperanaceEnum || (DaffFormFieldApperanaceEnum = {}));
89
+ var DaffFormFieldAppearanceEnum;
90
+ (function (DaffFormFieldAppearanceEnum) {
91
+ DaffFormFieldAppearanceEnum["Fluid"] = "fluid";
92
+ DaffFormFieldAppearanceEnum["Fixed"] = "fixed";
93
+ })(DaffFormFieldAppearanceEnum || (DaffFormFieldAppearanceEnum = {}));
94
94
  const DaffFormFieldMissingControlMessage = 'A DaffFormFieldComponent must contain a DaffFormFieldControl';
95
95
  /**
96
96
  * DaffFormFieldComponent is a wrapping component that provides consistent styling and behavior for form control elements.
97
97
  */
98
98
  class DaffFormFieldComponent {
99
- /** @docs-private */
100
- get isNativeSelect() {
101
- return this._control.controlType === 'native-select';
102
- }
103
99
  constructor(cd, elementRef) {
104
100
  this.cd = cd;
105
101
  this.elementRef = elementRef;
102
+ /** @docs-private */
103
+ this.isNativeSelect = computed(() => this._control()?.controlType === 'native-select', ...(ngDevMode ? [{ debugName: "isNativeSelect" }] : /* istanbul ignore next */ []));
104
+ /** @docs-private */
105
+ this._prefix = contentChild(DaffPrefixDirective, ...(ngDevMode ? [{ debugName: "_prefix" }] : /* istanbul ignore next */ []));
106
+ /** @docs-private */
107
+ this._suffix = contentChild(DaffSuffixDirective, ...(ngDevMode ? [{ debugName: "_suffix" }] : /* istanbul ignore next */ []));
108
+ /**
109
+ * @docs-private
110
+ *
111
+ * The child form control that the form field manages.
112
+ */
113
+ this._control = contentChild(DaffFormFieldControl, ...(ngDevMode ? [{ debugName: "_control" }] : /* istanbul ignore next */ []));
114
+ /**
115
+ * @docs-private
116
+ *
117
+ * @deprecated Deprecated in version 0.86.0. Will be removed in version 1.0.0.
118
+ */
119
+ this._formLabelDirective = contentChild(DaffFormLabelDirective, ...(ngDevMode ? [{ debugName: "_formLabelDirective" }] : /* istanbul ignore next */ []));
120
+ /**
121
+ * @docs-private
122
+ */
123
+ this._formFieldLabelDirective = contentChild(DaffFormFieldLabelDirective, ...(ngDevMode ? [{ debugName: "_formFieldLabelDirective" }] : /* istanbul ignore next */ []));
124
+ /**
125
+ * @docs-private
126
+ */
127
+ this._action = contentChild(DaffFormFieldActionDirective, ...(ngDevMode ? [{ debugName: "_action" }] : /* istanbul ignore next */ []));
128
+ /**
129
+ * @docs-private
130
+ */
131
+ this._hint = contentChild(DaffHintComponent, ...(ngDevMode ? [{ debugName: "_hint" }] : /* istanbul ignore next */ []));
132
+ /**
133
+ * @docs-private
134
+ */
135
+ this._error = contentChild(DaffErrorMessageComponent, ...(ngDevMode ? [{ debugName: "_error" }] : /* istanbul ignore next */ []));
106
136
  /**
107
137
  * @docs-private
108
138
  *
109
139
  * Tracking property to keep a record of whether or not the
110
140
  * form field should be marked as error.
111
141
  */
112
- this.isError = false;
142
+ this.isError = signal(false, ...(ngDevMode ? [{ debugName: "isError" }] : /* istanbul ignore next */ []));
113
143
  /**
114
144
  * @docs-private
115
145
  *
116
146
  * Tracking property to keep a record of whether or not the
117
147
  * form field contains any user input.
118
148
  */
119
- this.isFilled = false;
149
+ this.isFilled = signal(false, ...(ngDevMode ? [{ debugName: "isFilled" }] : /* istanbul ignore next */ []));
120
150
  /**
121
151
  * @docs-private
122
152
  *
123
153
  * Tracking property to keep a record of whether or not the
124
154
  * form field should be marked as disabled.
125
155
  */
126
- this.isDisabled = false;
156
+ this.isDisabled = signal(false, ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
127
157
  /**
128
158
  * @docs-private
129
159
  *
130
160
  * Tracking property to keep a record of whether or not the
131
161
  * form field should be marked as valid.
132
162
  */
133
- this.isValid = false;
134
- this._appearance = DaffFormFieldApperanaceEnum.Fluid;
163
+ this.isValid = signal(false, ...(ngDevMode ? [{ debugName: "isValid" }] : /* istanbul ignore next */ []));
164
+ /**
165
+ * The appearance of the form field. Defaults to `fluid`.
166
+ */
167
+ this.appearance = input(DaffFormFieldAppearanceEnum.Fluid, { ...(ngDevMode ? { debugName: "appearance" } : /* istanbul ignore next */ {}), transform: (value) => value || DaffFormFieldAppearanceEnum.Fluid });
168
+ /**
169
+ * @docs-private
170
+ */
171
+ this.isFixed = computed(() => this.appearance() === DaffFormFieldAppearanceEnum.Fixed, ...(ngDevMode ? [{ debugName: "isFixed" }] : /* istanbul ignore next */ []));
135
172
  /**
136
173
  * The unique id of the form field. Defaults to an autogenerated value. When using this,
137
174
  * it's your responsibility to ensure that the id for each form field is unique.
138
175
  *
139
176
  * It gets assigned to the `for` attribute on the `<label>` inside of the form field.
140
177
  */
141
- this.id = 'daff-form-field-' + ++daffFormFieldId;
178
+ this.id = input('daff-form-field-' + ++daffFormFieldId, ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
179
+ /**
180
+ * @docs-private
181
+ */
182
+ this.hasHint = computed(() => !!this._hint(), ...(ngDevMode ? [{ debugName: "hasHint" }] : /* istanbul ignore next */ []));
142
183
  /**
143
184
  * @docs-private
144
185
  */
145
- this.hintId = this.id + '-hint';
186
+ this.hintId = computed(() => this.id() + '-hint', ...(ngDevMode ? [{ debugName: "hintId" }] : /* istanbul ignore next */ []));
146
187
  /**
147
188
  * @docs-private
148
189
  */
149
- this.errorMessageId = this.id + '-error';
190
+ this.hasErrorMessage = computed(() => !!this._error(), ...(ngDevMode ? [{ debugName: "hasErrorMessage" }] : /* istanbul ignore next */ []));
191
+ /**
192
+ * @docs-private
193
+ */
194
+ this.errorMessageId = computed(() => this.id() + '-error', ...(ngDevMode ? [{ debugName: "errorMessageId" }] : /* istanbul ignore next */ []));
195
+ /**
196
+ * @docs-private
197
+ */
198
+ this.autoLabelId = computed(() => this._control()?.supportsAutoLabelling ? this.id() : null, ...(ngDevMode ? [{ debugName: "autoLabelId" }] : /* istanbul ignore next */ []));
199
+ /**
200
+ * @docs-private
201
+ */
202
+ this.customId = computed(() => this._control()?.supportsAutoLabelling ? null : this.id(), ...(ngDevMode ? [{ debugName: "customId" }] : /* istanbul ignore next */ []));
150
203
  }
151
204
  /**
152
205
  * @docs-private
@@ -154,58 +207,13 @@ class DaffFormFieldComponent {
154
207
  * Determines whether or not the form field should display its focused state.
155
208
  */
156
209
  get isFocused() {
157
- return this._control?.focused;
210
+ return this._control()?.focused;
158
211
  }
159
212
  /**
160
213
  * @docs-private
161
214
  */
162
215
  get isRaised() {
163
- return this._control?.raised || this.isFilled;
164
- }
165
- /**
166
- * The appearance of the form field. Defaults to `fluid`.
167
- */
168
- get appearance() {
169
- return this._appearance;
170
- }
171
- set appearance(value) {
172
- if (value === null || value === undefined || value === '') {
173
- this._appearance = DaffFormFieldApperanaceEnum.Fluid;
174
- }
175
- else {
176
- this._appearance = value;
177
- }
178
- }
179
- ;
180
- /**
181
- * @docs-private
182
- */
183
- get isFixed() {
184
- return this._appearance === DaffFormFieldApperanaceEnum.Fixed;
185
- }
186
- /**
187
- * @docs-private
188
- */
189
- hasHint() {
190
- return this._hint ? true : false;
191
- }
192
- /**
193
- * @docs-private
194
- */
195
- hasErrorMessage() {
196
- return this._error ? true : false;
197
- }
198
- /**
199
- * @docs-private
200
- */
201
- get autoLabelId() {
202
- return this._control.supportsAutoLabelling ? this.id : null;
203
- }
204
- /**
205
- * @docs-private
206
- */
207
- get customId() {
208
- return this._control.supportsAutoLabelling ? null : this.id;
216
+ return this._control()?.raised || this.isFilled();
209
217
  }
210
218
  /**
211
219
  * @docs-private
@@ -214,14 +222,14 @@ class DaffFormFieldComponent {
214
222
  */
215
223
  ngAfterViewInit() {
216
224
  if (isDevMode()) {
217
- if (!this._formFieldLabelDirective && this._control.supportsAutoLabelling && !(this._control.id)) {
218
- console.warn(`Accessibility Warning: The form field with id "${this.id}" uses a control that supports auto-labelling, but no <daff-form-label> component was found.\n\n` +
225
+ if (!this._formFieldLabelDirective() && this._control()?.supportsAutoLabelling && !(this._control()?.id)) {
226
+ console.warn(`Accessibility Warning: The form field with id "${this.id()}" uses a control that supports auto-labelling, but no <daff-form-label> component was found.\n\n` +
219
227
  `1. Add a <daff-form-label> component (recommended)\n` +
220
228
  `2. OR manually set an 'id' on your input and matching 'for' attribute on your <label>.\n\n` +
221
229
  `Why this matters: Proper labelling ensures assistive technologies can identify form fields correctly.`);
222
230
  }
223
- if (this._suffix && this._action && !this.isFixed) {
224
- console.warn(`UI consideration for form field with id "${this.id}":\n\n` + `In a fluid appearance, avoid using suffix alongside an action.`);
231
+ if (this._suffix() && this._action() && !this.isFixed()) {
232
+ console.warn(`UI consideration for form field with id "${this.id()}":\n\n` + `In a fluid appearance, avoid using suffix alongside an action.`);
225
233
  }
226
234
  ;
227
235
  }
@@ -230,7 +238,7 @@ class DaffFormFieldComponent {
230
238
  * Validates whether or not the form field is in a "usable" state.
231
239
  */
232
240
  _validateFormControl() {
233
- if (!this._control) {
241
+ if (!this._control()) {
234
242
  throw new Error(DaffFormFieldMissingControlMessage);
235
243
  }
236
244
  }
@@ -243,11 +251,11 @@ class DaffFormFieldComponent {
243
251
  */
244
252
  ngAfterContentInit() {
245
253
  this._validateFormControl();
246
- this._control.stateChanges?.subscribe(({ focused, filled, disabled, error, valid }) => {
247
- this.isFilled = filled;
248
- this.isError = error;
249
- this.isDisabled = disabled;
250
- this.isValid = valid;
254
+ this._control()?.stateChanges?.subscribe(({ filled, disabled, error, valid }) => {
255
+ this.isFilled.set(filled);
256
+ this.isError.set(error);
257
+ this.isDisabled.set(disabled);
258
+ this.isValid.set(valid);
251
259
  this.cd.markForCheck();
252
260
  });
253
261
  }
@@ -262,7 +270,7 @@ class DaffFormFieldComponent {
262
270
  this._validateFormControl();
263
271
  }
264
272
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DaffFormFieldComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
265
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DaffFormFieldComponent, isStandalone: true, selector: "daff-form-field", inputs: { appearance: "appearance", id: "id" }, host: { properties: { "class.is-native-select": "isNativeSelect", "class.has-prefix": "_prefix", "class.has-suffix": "_suffix", "class.has-action": "_action", "class.daff-error": "isError", "class.daff-disabled": "isDisabled", "class.daff-valid": "isValid", "class.daff-focused": "isFocused", "class.daff-raised": "isRaised", "class.fluid": "appearance === \"fluid\"", "class.fixed": "appearance === \"fixed\"" }, classAttribute: "daff-form-field" }, queries: [{ propertyName: "_prefix", first: true, predicate: DaffPrefixDirective, descendants: true }, { propertyName: "_suffix", first: true, predicate: DaffSuffixDirective, descendants: true }, { propertyName: "_control", first: true, predicate: DaffFormFieldControl, descendants: true }, { propertyName: "_formLabelDirective", first: true, predicate: DaffFormLabelDirective, descendants: true }, { propertyName: "_formFieldLabelDirective", first: true, predicate: DaffFormFieldLabelDirective, descendants: true }, { propertyName: "_action", first: true, predicate: DaffFormFieldActionDirective, descendants: true }, { propertyName: "_hint", first: true, predicate: DaffHintComponent, descendants: true }, { propertyName: "_error", first: true, predicate: DaffErrorMessageComponent, descendants: true }], hostDirectives: [{ directive: i1.DaffSkeletonableDirective, inputs: ["skeleton", "skeleton"] }], ngImport: i0, template: "<ng-content />\n\n@if (isFixed) {\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n}\n<div class=\"daff-form-field__wrapper\">\n\t<div class=\"daff-form-field__control\">\n\t\t@if (_prefix) {\n\t\t\t<ng-content select=\"[daffPrefix]\"></ng-content>\n\t\t}\n\t\t<div class=\"daff-form-field__inner\">\n\t\t\t@if (!isFixed) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n\t\t\t}\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t@if (_suffix) {\n\t\t\t<ng-content select=\"[daffSuffix]\"></ng-content>\n\t\t}\n\t\t@if (_action && !isFixed) {\n\t\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t\t}\n\t</div>\n\t@if ((_action && isFixed)) {\n\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t}\n</div>\n@if (hasHint()) {\n\t<div\n\t\tclass=\"daff-form-field__hint-wrapper\"\n\t\t[id]=\"hintId\">\n\t\t<ng-content select=\"daff-hint\"></ng-content>\n\t</div>\n}\n@if (hasErrorMessage()) {\n\t<div\n\t\tclass=\"daff-form-field__error-wrapper\"\n\t\t[id]=\"errorMessageId\">\n\t\t<ng-content select=\"daff-error-message\"></ng-content>\n\t</div>\n}\n\n<ng-template #actionTemplate>\n\t<ng-content select=\"[daffFormFieldAction]\"></ng-content>\n</ng-template>\n\n<ng-template #labelTemplate>\n @if (_formLabelDirective) {\n <ng-content select=\"label[daffFormLabel]\"></ng-content>\n } @else if(_formFieldLabelDirective) {\n <label class=\"daff-form-field__label\"\n [attr.for]=\"autoLabelId\"\n [attr.id]=\"customId\">\n <ng-content select=\"daff-form-label\"></ng-content>\n\t\t\t@if (_control.required) {\n\t\t\t<span aria-hidden=\"true\">*</span>\n\t\t\t}\n </label>\n } @else {\n <ng-content select=\"label\"></ng-content>\n }\n</ng-template>", styles: [".daff-form-field{display:flex;flex-direction:column;gap:.25rem;position:relative}.daff-form-field.has-prefix .daff-form-field__control{padding-left:0}.daff-form-field.has-suffix .daff-form-field__control{padding-right:0}.daff-form-field__hint-wrapper,.daff-form-field__error-wrapper{display:flex;flex-direction:column;gap:.25rem}.daff-form-field__wrapper{display:flex;gap:.25rem}.daff-form-field__control{display:flex;align-items:center;border-radius:.25rem;font-size:1rem;line-height:1rem;padding:0 1rem;position:relative;width:100%}.daff-form-field__control+.daff-hint,.daff-form-field__control+.daff-error-message{margin-top:.5rem}.daff-form-field.is-native-select .daff-form-field__control:after{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:.125rem solid currentColor;border-bottom:.125rem solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg)}.daff-form-field.fixed input,.daff-form-field.fixed textarea,.daff-form-field.fixed select{font-size:1rem;line-height:1.5rem;padding:calc(.75rem - 1px) 0}.daff-form-field.fixed input * ::-webkit-input-placeholder,.daff-form-field.fixed textarea * ::-webkit-input-placeholder,.daff-form-field.fixed select * ::-webkit-input-placeholder{opacity:1}.daff-form-field.fluid .daff-form-field__control * ::-webkit-input-placeholder{opacity:0}.daff-form-field.fluid.has-action .daff-form-field__control{padding-right:0}.daff-form-field.fluid.has-action .daff-form-field__inner{padding-right:1rem}.daff-form-field.fluid .daff-form-field-action{margin-right:.25rem}.daff-form-field.fluid input,.daff-form-field.fluid textarea,.daff-form-field.fluid select{font-size:1rem;line-height:1.5rem;padding:1rem 0}.daff-form-field.fluid label,.daff-form-field.fluid .daff-form-label,.daff-form-field.fluid .daff-form-field__label{position:absolute;left:0;top:1.25rem;pointer-events:none;transform-origin:left top;transition:transform .15s;white-space:nowrap}.daff-form-field.fluid label+input,.daff-form-field.fluid label+textarea,.daff-form-field.fluid label+select,.daff-form-field.fluid label~* input,.daff-form-field.fluid label~* textarea,.daff-form-field.fluid label~* select,.daff-form-field.fluid .daff-form-label+input,.daff-form-field.fluid .daff-form-label+textarea,.daff-form-field.fluid .daff-form-label+select,.daff-form-field.fluid .daff-form-label~* input,.daff-form-field.fluid .daff-form-label~* textarea,.daff-form-field.fluid .daff-form-label~* select,.daff-form-field.fluid .daff-form-field__label+input,.daff-form-field.fluid .daff-form-field__label+textarea,.daff-form-field.fluid .daff-form-field__label+select,.daff-form-field.fluid .daff-form-field__label~* input,.daff-form-field.fluid .daff-form-field__label~* textarea,.daff-form-field.fluid .daff-form-field__label~* select{padding:calc(1.5rem - 1px) 0 calc(.5rem - 1px)}.daff-form-field.fluid.daff-raised label,.daff-form-field.fluid.daff-raised .daff-form-label,.daff-form-field.fluid.daff-raised .daff-form-field__label{transform:translateY(-75%) scale(.75)}.daff-form-field.fluid.daff-raised * ::-webkit-input-placeholder{opacity:1}.daff-form-field.fluid .daff-prefix,.daff-form-field.fluid .daff-suffix{height:3rem;min-width:3rem}.daff-form-field.daff-disabled{cursor:not-allowed;opacity:.5}.daff-form-field__inner{flex-grow:1;position:relative;overflow:hidden}.daff-form-field .daff-prefix,.daff-form-field .daff-suffix{display:flex;align-items:center;justify-content:center;appearance:none;background:none;border:none;height:calc(3rem - 2px);min-width:calc(3rem - 2px)}.daff-form-field.daff-skeleton{display:flex;position:relative;height:3.5rem;width:100%;border-radius:.25rem}.daff-form-field.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:3.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-form-field.daff-skeleton>*{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
273
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: DaffFormFieldComponent, isStandalone: true, selector: "daff-form-field", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.is-native-select": "isNativeSelect()", "class.has-prefix": "_prefix()", "class.has-suffix": "_suffix()", "class.has-action": "_action()", "class.daff-error": "isError()", "class.daff-disabled": "isDisabled()", "class.daff-valid": "isValid()", "class.daff-focused": "isFocused", "class.daff-raised": "isRaised", "class.fluid": "appearance() === \"fluid\"", "class.fixed": "appearance() === \"fixed\"" }, classAttribute: "daff-form-field" }, queries: [{ propertyName: "_prefix", first: true, predicate: DaffPrefixDirective, descendants: true, isSignal: true }, { propertyName: "_suffix", first: true, predicate: DaffSuffixDirective, descendants: true, isSignal: true }, { propertyName: "_control", first: true, predicate: DaffFormFieldControl, descendants: true, isSignal: true }, { propertyName: "_formLabelDirective", first: true, predicate: DaffFormLabelDirective, descendants: true, isSignal: true }, { propertyName: "_formFieldLabelDirective", first: true, predicate: DaffFormFieldLabelDirective, descendants: true, isSignal: true }, { propertyName: "_action", first: true, predicate: DaffFormFieldActionDirective, descendants: true, isSignal: true }, { propertyName: "_hint", first: true, predicate: DaffHintComponent, descendants: true, isSignal: true }, { propertyName: "_error", first: true, predicate: DaffErrorMessageComponent, descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.DaffSkeletonableDirective, inputs: ["skeleton", "skeleton"] }], ngImport: i0, template: "<ng-content />\n\n@if (isFixed()) {\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n}\n<div class=\"daff-form-field__wrapper\">\n\t<div class=\"daff-form-field__control\">\n\t\t@if (_prefix()) {\n\t\t\t<ng-content select=\"[daffPrefix]\"></ng-content>\n\t\t}\n\t\t<div class=\"daff-form-field__inner\">\n\t\t\t@if (!isFixed()) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n\t\t\t}\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t@if (_suffix()) {\n\t\t\t<ng-content select=\"[daffSuffix]\"></ng-content>\n\t\t}\n\t\t@if (_action() && !isFixed()) {\n\t\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t\t}\n\t</div>\n\t@if ((_action() && isFixed())) {\n\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t}\n</div>\n@if (hasHint()) {\n\t<div\n\t\tclass=\"daff-form-field__hint-wrapper\"\n\t\t[id]=\"hintId()\">\n\t\t<ng-content select=\"daff-hint\"></ng-content>\n\t</div>\n}\n@if (hasErrorMessage()) {\n\t<div\n\t\tclass=\"daff-form-field__error-wrapper\"\n\t\t[id]=\"errorMessageId()\">\n\t\t<ng-content select=\"daff-error-message\"></ng-content>\n\t</div>\n}\n\n<ng-template #actionTemplate>\n\t<ng-content select=\"[daffFormFieldAction]\"></ng-content>\n</ng-template>\n\n<ng-template #labelTemplate>\n @if (_formLabelDirective()) {\n <ng-content select=\"label[daffFormLabel]\"></ng-content>\n } @else if(_formFieldLabelDirective()) {\n <label class=\"daff-form-field__label\"\n [attr.for]=\"autoLabelId()\"\n [attr.id]=\"customId()\">\n <ng-content select=\"daff-form-label\"></ng-content>\n\t\t\t@if (_control().required) {\n\t\t\t<span aria-hidden=\"true\">*</span>\n\t\t\t}\n </label>\n } @else {\n <ng-content select=\"label\"></ng-content>\n }\n</ng-template>", styles: [".daff-form-field{display:flex;flex-direction:column;gap:.25rem;position:relative}.daff-form-field.has-prefix .daff-form-field__control{padding-left:0}.daff-form-field.has-suffix .daff-form-field__control{padding-right:0}.daff-form-field__hint-wrapper,.daff-form-field__error-wrapper{display:flex;flex-direction:column;gap:.25rem}.daff-form-field__wrapper{display:flex;gap:.25rem}.daff-form-field__control{display:flex;align-items:center;border-radius:.25rem;font-size:1rem;line-height:1rem;padding:0 1rem;position:relative;width:100%}.daff-form-field__control+.daff-hint,.daff-form-field__control+.daff-error-message{margin-top:.5rem}.daff-form-field.is-native-select .daff-form-field__control:after{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:.125rem solid currentColor;border-bottom:.125rem solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg)}.daff-form-field.fixed input,.daff-form-field.fixed textarea,.daff-form-field.fixed select{font-size:1rem;line-height:1.5rem;padding:calc(.75rem - 1px) 0}.daff-form-field.fixed input * ::-webkit-input-placeholder,.daff-form-field.fixed textarea * ::-webkit-input-placeholder,.daff-form-field.fixed select * ::-webkit-input-placeholder{opacity:1}.daff-form-field.fluid .daff-form-field__control * ::-webkit-input-placeholder{opacity:0}.daff-form-field.fluid.has-action .daff-form-field__control{padding-right:0}.daff-form-field.fluid.has-action .daff-form-field__inner{padding-right:1rem}.daff-form-field.fluid .daff-form-field-action{margin-right:.25rem}.daff-form-field.fluid input,.daff-form-field.fluid textarea,.daff-form-field.fluid select{font-size:1rem;line-height:1.5rem;padding:1rem 0}.daff-form-field.fluid label,.daff-form-field.fluid .daff-form-label,.daff-form-field.fluid .daff-form-field__label{position:absolute;left:0;top:1.25rem;pointer-events:none;transform-origin:left top;transition:transform .15s;white-space:nowrap}.daff-form-field.fluid label+input,.daff-form-field.fluid label+textarea,.daff-form-field.fluid label+select,.daff-form-field.fluid label~* input,.daff-form-field.fluid label~* textarea,.daff-form-field.fluid label~* select,.daff-form-field.fluid .daff-form-label+input,.daff-form-field.fluid .daff-form-label+textarea,.daff-form-field.fluid .daff-form-label+select,.daff-form-field.fluid .daff-form-label~* input,.daff-form-field.fluid .daff-form-label~* textarea,.daff-form-field.fluid .daff-form-label~* select,.daff-form-field.fluid .daff-form-field__label+input,.daff-form-field.fluid .daff-form-field__label+textarea,.daff-form-field.fluid .daff-form-field__label+select,.daff-form-field.fluid .daff-form-field__label~* input,.daff-form-field.fluid .daff-form-field__label~* textarea,.daff-form-field.fluid .daff-form-field__label~* select{padding:calc(1.5rem - 1px) 0 calc(.5rem - 1px)}.daff-form-field.fluid.daff-raised label,.daff-form-field.fluid.daff-raised .daff-form-label,.daff-form-field.fluid.daff-raised .daff-form-field__label{transform:translateY(-75%) scale(.75)}.daff-form-field.fluid.daff-raised * ::-webkit-input-placeholder{opacity:1}.daff-form-field.fluid .daff-prefix,.daff-form-field.fluid .daff-suffix{height:3rem;min-width:3rem}.daff-form-field.daff-disabled{cursor:not-allowed;opacity:.5}.daff-form-field__inner{flex-grow:1;position:relative;overflow:hidden}.daff-form-field .daff-prefix,.daff-form-field .daff-suffix{display:flex;align-items:center;justify-content:center;appearance:none;background:none;border:none;height:calc(3rem - 2px);min-width:calc(3rem - 2px)}.daff-form-field.daff-skeleton{display:flex;position:relative;height:3.5rem;width:100%;border-radius:.25rem}.daff-form-field.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:3.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-form-field.daff-skeleton>*{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
266
274
  }
267
275
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DaffFormFieldComponent, decorators: [{
268
276
  type: Component,
@@ -270,52 +278,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
270
278
  NgTemplateOutlet,
271
279
  ], host: {
272
280
  class: 'daff-form-field',
273
- '[class.is-native-select]': 'isNativeSelect',
274
- '[class.has-prefix]': '_prefix',
275
- '[class.has-suffix]': '_suffix',
276
- '[class.has-action]': '_action',
277
- '[class.daff-error]': 'isError',
278
- '[class.daff-disabled]': 'isDisabled',
279
- '[class.daff-valid]': 'isValid',
281
+ '[class.is-native-select]': 'isNativeSelect()',
282
+ '[class.has-prefix]': '_prefix()',
283
+ '[class.has-suffix]': '_suffix()',
284
+ '[class.has-action]': '_action()',
285
+ '[class.daff-error]': 'isError()',
286
+ '[class.daff-disabled]': 'isDisabled()',
287
+ '[class.daff-valid]': 'isValid()',
280
288
  '[class.daff-focused]': 'isFocused',
281
289
  '[class.daff-raised]': 'isRaised',
282
- '[class.fluid]': 'appearance === "fluid"',
283
- '[class.fixed]': 'appearance === "fixed"',
290
+ '[class.fluid]': 'appearance() === "fluid"',
291
+ '[class.fixed]': 'appearance() === "fixed"',
284
292
  }, hostDirectives: [
285
293
  {
286
294
  directive: DaffSkeletonableDirective,
287
295
  inputs: ['skeleton'],
288
296
  },
289
- ], template: "<ng-content />\n\n@if (isFixed) {\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n}\n<div class=\"daff-form-field__wrapper\">\n\t<div class=\"daff-form-field__control\">\n\t\t@if (_prefix) {\n\t\t\t<ng-content select=\"[daffPrefix]\"></ng-content>\n\t\t}\n\t\t<div class=\"daff-form-field__inner\">\n\t\t\t@if (!isFixed) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n\t\t\t}\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t@if (_suffix) {\n\t\t\t<ng-content select=\"[daffSuffix]\"></ng-content>\n\t\t}\n\t\t@if (_action && !isFixed) {\n\t\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t\t}\n\t</div>\n\t@if ((_action && isFixed)) {\n\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t}\n</div>\n@if (hasHint()) {\n\t<div\n\t\tclass=\"daff-form-field__hint-wrapper\"\n\t\t[id]=\"hintId\">\n\t\t<ng-content select=\"daff-hint\"></ng-content>\n\t</div>\n}\n@if (hasErrorMessage()) {\n\t<div\n\t\tclass=\"daff-form-field__error-wrapper\"\n\t\t[id]=\"errorMessageId\">\n\t\t<ng-content select=\"daff-error-message\"></ng-content>\n\t</div>\n}\n\n<ng-template #actionTemplate>\n\t<ng-content select=\"[daffFormFieldAction]\"></ng-content>\n</ng-template>\n\n<ng-template #labelTemplate>\n @if (_formLabelDirective) {\n <ng-content select=\"label[daffFormLabel]\"></ng-content>\n } @else if(_formFieldLabelDirective) {\n <label class=\"daff-form-field__label\"\n [attr.for]=\"autoLabelId\"\n [attr.id]=\"customId\">\n <ng-content select=\"daff-form-label\"></ng-content>\n\t\t\t@if (_control.required) {\n\t\t\t<span aria-hidden=\"true\">*</span>\n\t\t\t}\n </label>\n } @else {\n <ng-content select=\"label\"></ng-content>\n }\n</ng-template>", styles: [".daff-form-field{display:flex;flex-direction:column;gap:.25rem;position:relative}.daff-form-field.has-prefix .daff-form-field__control{padding-left:0}.daff-form-field.has-suffix .daff-form-field__control{padding-right:0}.daff-form-field__hint-wrapper,.daff-form-field__error-wrapper{display:flex;flex-direction:column;gap:.25rem}.daff-form-field__wrapper{display:flex;gap:.25rem}.daff-form-field__control{display:flex;align-items:center;border-radius:.25rem;font-size:1rem;line-height:1rem;padding:0 1rem;position:relative;width:100%}.daff-form-field__control+.daff-hint,.daff-form-field__control+.daff-error-message{margin-top:.5rem}.daff-form-field.is-native-select .daff-form-field__control:after{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:.125rem solid currentColor;border-bottom:.125rem solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg)}.daff-form-field.fixed input,.daff-form-field.fixed textarea,.daff-form-field.fixed select{font-size:1rem;line-height:1.5rem;padding:calc(.75rem - 1px) 0}.daff-form-field.fixed input * ::-webkit-input-placeholder,.daff-form-field.fixed textarea * ::-webkit-input-placeholder,.daff-form-field.fixed select * ::-webkit-input-placeholder{opacity:1}.daff-form-field.fluid .daff-form-field__control * ::-webkit-input-placeholder{opacity:0}.daff-form-field.fluid.has-action .daff-form-field__control{padding-right:0}.daff-form-field.fluid.has-action .daff-form-field__inner{padding-right:1rem}.daff-form-field.fluid .daff-form-field-action{margin-right:.25rem}.daff-form-field.fluid input,.daff-form-field.fluid textarea,.daff-form-field.fluid select{font-size:1rem;line-height:1.5rem;padding:1rem 0}.daff-form-field.fluid label,.daff-form-field.fluid .daff-form-label,.daff-form-field.fluid .daff-form-field__label{position:absolute;left:0;top:1.25rem;pointer-events:none;transform-origin:left top;transition:transform .15s;white-space:nowrap}.daff-form-field.fluid label+input,.daff-form-field.fluid label+textarea,.daff-form-field.fluid label+select,.daff-form-field.fluid label~* input,.daff-form-field.fluid label~* textarea,.daff-form-field.fluid label~* select,.daff-form-field.fluid .daff-form-label+input,.daff-form-field.fluid .daff-form-label+textarea,.daff-form-field.fluid .daff-form-label+select,.daff-form-field.fluid .daff-form-label~* input,.daff-form-field.fluid .daff-form-label~* textarea,.daff-form-field.fluid .daff-form-label~* select,.daff-form-field.fluid .daff-form-field__label+input,.daff-form-field.fluid .daff-form-field__label+textarea,.daff-form-field.fluid .daff-form-field__label+select,.daff-form-field.fluid .daff-form-field__label~* input,.daff-form-field.fluid .daff-form-field__label~* textarea,.daff-form-field.fluid .daff-form-field__label~* select{padding:calc(1.5rem - 1px) 0 calc(.5rem - 1px)}.daff-form-field.fluid.daff-raised label,.daff-form-field.fluid.daff-raised .daff-form-label,.daff-form-field.fluid.daff-raised .daff-form-field__label{transform:translateY(-75%) scale(.75)}.daff-form-field.fluid.daff-raised * ::-webkit-input-placeholder{opacity:1}.daff-form-field.fluid .daff-prefix,.daff-form-field.fluid .daff-suffix{height:3rem;min-width:3rem}.daff-form-field.daff-disabled{cursor:not-allowed;opacity:.5}.daff-form-field__inner{flex-grow:1;position:relative;overflow:hidden}.daff-form-field .daff-prefix,.daff-form-field .daff-suffix{display:flex;align-items:center;justify-content:center;appearance:none;background:none;border:none;height:calc(3rem - 2px);min-width:calc(3rem - 2px)}.daff-form-field.daff-skeleton{display:flex;position:relative;height:3.5rem;width:100%;border-radius:.25rem}.daff-form-field.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:3.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-form-field.daff-skeleton>*{visibility:hidden}\n"] }]
290
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { _prefix: [{
291
- type: ContentChild,
292
- args: [DaffPrefixDirective]
293
- }], _suffix: [{
294
- type: ContentChild,
295
- args: [DaffSuffixDirective]
296
- }], _control: [{
297
- type: ContentChild,
298
- args: [DaffFormFieldControl]
299
- }], _formLabelDirective: [{
300
- type: ContentChild,
301
- args: [DaffFormLabelDirective]
302
- }], _formFieldLabelDirective: [{
303
- type: ContentChild,
304
- args: [DaffFormFieldLabelDirective]
305
- }], _action: [{
306
- type: ContentChild,
307
- args: [DaffFormFieldActionDirective]
308
- }], _hint: [{
309
- type: ContentChild,
310
- args: [DaffHintComponent]
311
- }], _error: [{
312
- type: ContentChild,
313
- args: [DaffErrorMessageComponent]
314
- }], appearance: [{
315
- type: Input
316
- }], id: [{
317
- type: Input
318
- }] } });
297
+ ], template: "<ng-content />\n\n@if (isFixed()) {\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n}\n<div class=\"daff-form-field__wrapper\">\n\t<div class=\"daff-form-field__control\">\n\t\t@if (_prefix()) {\n\t\t\t<ng-content select=\"[daffPrefix]\"></ng-content>\n\t\t}\n\t\t<div class=\"daff-form-field__inner\">\n\t\t\t@if (!isFixed()) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n\t\t\t}\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t@if (_suffix()) {\n\t\t\t<ng-content select=\"[daffSuffix]\"></ng-content>\n\t\t}\n\t\t@if (_action() && !isFixed()) {\n\t\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t\t}\n\t</div>\n\t@if ((_action() && isFixed())) {\n\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t}\n</div>\n@if (hasHint()) {\n\t<div\n\t\tclass=\"daff-form-field__hint-wrapper\"\n\t\t[id]=\"hintId()\">\n\t\t<ng-content select=\"daff-hint\"></ng-content>\n\t</div>\n}\n@if (hasErrorMessage()) {\n\t<div\n\t\tclass=\"daff-form-field__error-wrapper\"\n\t\t[id]=\"errorMessageId()\">\n\t\t<ng-content select=\"daff-error-message\"></ng-content>\n\t</div>\n}\n\n<ng-template #actionTemplate>\n\t<ng-content select=\"[daffFormFieldAction]\"></ng-content>\n</ng-template>\n\n<ng-template #labelTemplate>\n @if (_formLabelDirective()) {\n <ng-content select=\"label[daffFormLabel]\"></ng-content>\n } @else if(_formFieldLabelDirective()) {\n <label class=\"daff-form-field__label\"\n [attr.for]=\"autoLabelId()\"\n [attr.id]=\"customId()\">\n <ng-content select=\"daff-form-label\"></ng-content>\n\t\t\t@if (_control().required) {\n\t\t\t<span aria-hidden=\"true\">*</span>\n\t\t\t}\n </label>\n } @else {\n <ng-content select=\"label\"></ng-content>\n }\n</ng-template>", styles: [".daff-form-field{display:flex;flex-direction:column;gap:.25rem;position:relative}.daff-form-field.has-prefix .daff-form-field__control{padding-left:0}.daff-form-field.has-suffix .daff-form-field__control{padding-right:0}.daff-form-field__hint-wrapper,.daff-form-field__error-wrapper{display:flex;flex-direction:column;gap:.25rem}.daff-form-field__wrapper{display:flex;gap:.25rem}.daff-form-field__control{display:flex;align-items:center;border-radius:.25rem;font-size:1rem;line-height:1rem;padding:0 1rem;position:relative;width:100%}.daff-form-field__control+.daff-hint,.daff-form-field__control+.daff-error-message{margin-top:.5rem}.daff-form-field.is-native-select .daff-form-field__control:after{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:.125rem solid currentColor;border-bottom:.125rem solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg)}.daff-form-field.fixed input,.daff-form-field.fixed textarea,.daff-form-field.fixed select{font-size:1rem;line-height:1.5rem;padding:calc(.75rem - 1px) 0}.daff-form-field.fixed input * ::-webkit-input-placeholder,.daff-form-field.fixed textarea * ::-webkit-input-placeholder,.daff-form-field.fixed select * ::-webkit-input-placeholder{opacity:1}.daff-form-field.fluid .daff-form-field__control * ::-webkit-input-placeholder{opacity:0}.daff-form-field.fluid.has-action .daff-form-field__control{padding-right:0}.daff-form-field.fluid.has-action .daff-form-field__inner{padding-right:1rem}.daff-form-field.fluid .daff-form-field-action{margin-right:.25rem}.daff-form-field.fluid input,.daff-form-field.fluid textarea,.daff-form-field.fluid select{font-size:1rem;line-height:1.5rem;padding:1rem 0}.daff-form-field.fluid label,.daff-form-field.fluid .daff-form-label,.daff-form-field.fluid .daff-form-field__label{position:absolute;left:0;top:1.25rem;pointer-events:none;transform-origin:left top;transition:transform .15s;white-space:nowrap}.daff-form-field.fluid label+input,.daff-form-field.fluid label+textarea,.daff-form-field.fluid label+select,.daff-form-field.fluid label~* input,.daff-form-field.fluid label~* textarea,.daff-form-field.fluid label~* select,.daff-form-field.fluid .daff-form-label+input,.daff-form-field.fluid .daff-form-label+textarea,.daff-form-field.fluid .daff-form-label+select,.daff-form-field.fluid .daff-form-label~* input,.daff-form-field.fluid .daff-form-label~* textarea,.daff-form-field.fluid .daff-form-label~* select,.daff-form-field.fluid .daff-form-field__label+input,.daff-form-field.fluid .daff-form-field__label+textarea,.daff-form-field.fluid .daff-form-field__label+select,.daff-form-field.fluid .daff-form-field__label~* input,.daff-form-field.fluid .daff-form-field__label~* textarea,.daff-form-field.fluid .daff-form-field__label~* select{padding:calc(1.5rem - 1px) 0 calc(.5rem - 1px)}.daff-form-field.fluid.daff-raised label,.daff-form-field.fluid.daff-raised .daff-form-label,.daff-form-field.fluid.daff-raised .daff-form-field__label{transform:translateY(-75%) scale(.75)}.daff-form-field.fluid.daff-raised * ::-webkit-input-placeholder{opacity:1}.daff-form-field.fluid .daff-prefix,.daff-form-field.fluid .daff-suffix{height:3rem;min-width:3rem}.daff-form-field.daff-disabled{cursor:not-allowed;opacity:.5}.daff-form-field__inner{flex-grow:1;position:relative;overflow:hidden}.daff-form-field .daff-prefix,.daff-form-field .daff-suffix{display:flex;align-items:center;justify-content:center;appearance:none;background:none;border:none;height:calc(3rem - 2px);min-width:calc(3rem - 2px)}.daff-form-field.daff-skeleton{display:flex;position:relative;height:3.5rem;width:100%;border-radius:.25rem}.daff-form-field.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:3.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-form-field.daff-skeleton>*{visibility:hidden}\n"] }]
298
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { _prefix: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DaffPrefixDirective), { isSignal: true }] }], _suffix: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DaffSuffixDirective), { isSignal: true }] }], _control: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DaffFormFieldControl), { isSignal: true }] }], _formLabelDirective: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DaffFormLabelDirective), { isSignal: true }] }], _formFieldLabelDirective: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DaffFormFieldLabelDirective), { isSignal: true }] }], _action: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DaffFormFieldActionDirective), { isSignal: true }] }], _hint: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DaffHintComponent), { isSignal: true }] }], _error: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DaffErrorMessageComponent), { isSignal: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }] } });
319
299
 
320
300
  /**
321
301
  * @deprecated in favor of standalone components. Deprecated in version 0.84.0. Will be removed in version 1.0.0.
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-design-form-field.mjs","sources":["../../../libs/design/form-field/src/action/action.directive.ts","../../../libs/design/form-field/src/form-field-control.ts","../../../libs/design/form-field/src/form-field/form-field.component.ts","../../../libs/design/form-field/src/form-field/form-field.component.html","../../../libs/design/form-field/src/form-field.module.ts","../../../libs/design/form-field/src/form-field.ts","../../../libs/design/form-field/src/daffodil-design-form-field.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n/**\n * DaffFormFieldActionDirective marks an element, typically a button, as an action attached to a form control inside `DaffFormFieldComponent`.\n */\n@Directive({\n selector: '[daffFormFieldAction]',\n host: {\n class: 'daff-form-field-action',\n },\n})\nexport class DaffFormFieldActionDirective {}\n","import { NgControl } from '@angular/forms';\nimport {\n BehaviorSubject,\n Observable,\n} from 'rxjs';\n\nimport { DaffFormFieldState } from './form-field-state';\n\n/**\n * Form controls must extend this class to be used inside `DaffFormFieldComponent`.\n *\n * > **Note**\n * > The control is defined as an abstract class instead of an interface to support Angular's dependency injection. Interfaces are erased during TypeScript compilation and cannot be used as DI tokens.\n * >\n * > By using an abstract class, the Angular DI container can match the class token for injection.\n */\nexport abstract class DaffFormFieldControl<T> {\n /**\n * The type of the control (e.g., 'input', 'select', 'textarea').\n * Used to apply control-specific styling or behavior.\n */\n abstract readonly controlType?: any;\n\n /**\n * Whether the control supports automatic label behavior.\n * When `true`, the form field will associate the label with the control using `for` and `id` attributes.\n *\n * Defaults to `true`.\n */\n readonly supportsAutoLabelling?: boolean = true;\n\n /**\n * Whether the control currently has focus.\n */\n abstract readonly focused: boolean;\n\n /**\n * Whether the control is required for form validation.\n */\n abstract readonly required: boolean;\n\n /**\n * Whether the control is disabled.\n */\n abstract readonly disabled: boolean;\n\n /**\n * The unique identifier for the control element.\n */\n readonly id?: string;\n\n /**\n * Whether the label should be in the raised position.\n * By default, matches the focused state.\n */\n get raised() {\n return this.focused;\n };\n\n /**\n * Sets focus on the control.\n *\n * @param event - Optional event that triggers the focus.\n */\n abstract focus(event?: Event): void;\n\n /**\n * The current value of the control.\n */\n abstract readonly value: T;\n\n constructor(public ngControl: NgControl | null) {}\n\n /**\n * Computes the current state of the form field control.\n * Combines control properties and form validation state.\n */\n get state(): DaffFormFieldState {\n return {\n focused: this.focused,\n filled: !!this.value,\n disabled: this.ngControl?.disabled ?? this.disabled,\n error: this.ngControl?.errors && (this.ngControl?.dirty || this.ngControl?.touched),\n valid: !this.ngControl?.errors && this.ngControl?.dirty,\n };\n }\n\n _stateChanges = new BehaviorSubject({\n focused: false,\n filled: false,\n disabled: false,\n error: false,\n valid: true,\n });\n\n /**\n * Observable stream of state changes for the form field control.\n */\n stateChanges: Observable<DaffFormFieldState>;\n\n /**\n * Emits the current state.\n */\n emitState(deferred = false) {\n if(deferred) {\n Promise.resolve().then(() => {\n this._stateChanges.next(this.state);\n });\n return;\n }\n\n this._stateChanges.next(this.state);\n }\n};\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ViewEncapsulation,\n ContentChild,\n AfterContentInit,\n AfterContentChecked,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Input,\n AfterViewInit,\n isDevMode,\n ElementRef,\n} from '@angular/core';\n\nimport {\n DaffPrefixDirective,\n DaffSuffixDirective,\n DaffSkeletonableDirective,\n DaffFormLabelDirective,\n} from '@daffodil/design';\nimport {\n DaffErrorMessageComponent,\n DaffHintComponent,\n DaffFormFieldLabelDirective,\n} from '@daffodil/design/form';\n\nimport { DaffFormFieldActionDirective } from '../action/action.directive';\nimport { DaffFormFieldControl } from '../form-field-control';\n\nlet daffFormFieldId = 0;\n\nexport type DaffFormFieldApperanace = 'fluid' | 'fixed';\n\nenum DaffFormFieldApperanaceEnum {\n Fluid = 'fluid',\n Fixed = 'fixed',\n}\n\nexport const DaffFormFieldMissingControlMessage = 'A DaffFormFieldComponent must contain a DaffFormFieldControl';\n\n/**\n * DaffFormFieldComponent is a wrapping component that provides consistent styling and behavior for form control elements.\n */\n@Component({\n selector: 'daff-form-field',\n templateUrl: './form-field.component.html',\n styleUrl: './form-field.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n ],\n host: {\n class: 'daff-form-field',\n '[class.is-native-select]': 'isNativeSelect',\n '[class.has-prefix]': '_prefix',\n '[class.has-suffix]': '_suffix',\n '[class.has-action]': '_action',\n '[class.daff-error]': 'isError',\n '[class.daff-disabled]': 'isDisabled',\n '[class.daff-valid]': 'isValid',\n '[class.daff-focused]': 'isFocused',\n '[class.daff-raised]': 'isRaised',\n '[class.fluid]': 'appearance === \"fluid\"',\n '[class.fixed]': 'appearance === \"fixed\"',\n },\n hostDirectives: [\n {\n directive: DaffSkeletonableDirective,\n inputs: ['skeleton'],\n },\n ],\n})\nexport class DaffFormFieldComponent implements AfterContentInit, AfterContentChecked, AfterViewInit {\n /** @docs-private */\n get isNativeSelect() {\n return this._control.controlType === 'native-select';\n }\n\n constructor(private cd: ChangeDetectorRef, public elementRef: ElementRef) {}\n\n /** @docs-private */\n @ContentChild(DaffPrefixDirective) _prefix: DaffPrefixDirective;\n\n /** @docs-private */\n @ContentChild(DaffSuffixDirective) _suffix: DaffSuffixDirective;\n\n /**\n * @docs-private\n *\n * The child form control that the form field manages.\n */\n @ContentChild(DaffFormFieldControl) _control: DaffFormFieldControl<unknown>;\n\n /**\n * @docs-private\n * @deprecated Deprecated in version 0.86.0. Will be removed in version 1.0.0.\n */\n @ContentChild(DaffFormLabelDirective) _formLabelDirective: DaffFormLabelDirective;\n\n /**\n * @docs-private\n */\n @ContentChild(DaffFormFieldLabelDirective) _formFieldLabelDirective: DaffFormFieldLabelDirective;\n\n /**\n * @docs-private\n */\n @ContentChild(DaffFormFieldActionDirective) _action: DaffFormFieldActionDirective;\n\n /**\n * @docs-private\n */\n @ContentChild(DaffHintComponent) private _hint: DaffHintComponent;\n\n /**\n * @docs-private\n */\n @ContentChild(DaffErrorMessageComponent) private _error: DaffErrorMessageComponent;\n\n /**\n * @docs-private\n *\n * Tracking property to keep a record of whether or not the\n * form field should be marked as error.\n */\n isError = false;\n\n /**\n * @docs-private\n *\n * Tracking property to keep a record of whether or not the\n * form field contains any user input.\n */\n isFilled = false;\n\n /**\n * @docs-private\n *\n * Tracking property to keep a record of whether or not the\n * form field should be marked as disabled.\n */\n isDisabled = false;\n\n /**\n * @docs-private\n *\n * Tracking property to keep a record of whether or not the\n * form field should be marked as valid.\n */\n isValid = false;\n\n /**\n * @docs-private\n *\n * Determines whether or not the form field should display its focused state.\n */\n get isFocused() {\n return this._control?.focused;\n }\n\n /**\n * @docs-private\n */\n get isRaised() {\n return this._control?.raised || this.isFilled;\n }\n\n private _appearance: DaffFormFieldApperanace = DaffFormFieldApperanaceEnum.Fluid;\n\n /**\n * The appearance of the form field. Defaults to `fluid`.\n */\n @Input()\n get appearance() {\n return this._appearance;\n }\n\n set appearance(value: DaffFormFieldApperanace) {\n if(value === null || value === undefined || <unknown>value === '') {\n this._appearance = DaffFormFieldApperanaceEnum.Fluid;\n } else {\n this._appearance = value;\n }\n };\n\n /**\n * @docs-private\n */\n get isFixed() {\n return this._appearance === DaffFormFieldApperanaceEnum.Fixed;\n }\n\n /**\n * The unique id of the form field. Defaults to an autogenerated value. When using this,\n * it's your responsibility to ensure that the id for each form field is unique.\n *\n * It gets assigned to the `for` attribute on the `<label>` inside of the form field.\n */\n @Input() id = 'daff-form-field-' + ++daffFormFieldId;\n\n /**\n * @docs-private\n */\n hasHint() {\n return this._hint ? true : false;\n }\n\n /**\n * @docs-private\n */\n hintId = this.id + '-hint';\n\n /**\n * @docs-private\n */\n hasErrorMessage() {\n return this._error ? true : false;\n }\n\n /**\n * @docs-private\n */\n errorMessageId = this.id + '-error';\n\n /**\n * @docs-private\n */\n get autoLabelId() {\n return this._control.supportsAutoLabelling ? this.id : null;\n }\n\n /**\n * @docs-private\n */\n get customId() {\n return this._control.supportsAutoLabelling ? null : this.id;\n }\n\n /**\n * @docs-private\n *\n * Displays a console warning if the `DaffFormFieldLabelDirective` is not used on controls (native HTML control elements) that support auto-labelling.\n */\n ngAfterViewInit() {\n if (isDevMode()) {\n if (!this._formFieldLabelDirective && this._control.supportsAutoLabelling && !(this._control.id)) {\n console.warn(\n `Accessibility Warning: The form field with id \"${this.id}\" uses a control that supports auto-labelling, but no <daff-form-label> component was found.\\n\\n` +\n `1. Add a <daff-form-label> component (recommended)\\n` +\n `2. OR manually set an 'id' on your input and matching 'for' attribute on your <label>.\\n\\n` +\n `Why this matters: Proper labelling ensures assistive technologies can identify form fields correctly.`,\n );\n }\n\n if(this._suffix && this._action && !this.isFixed) {\n console.warn(\n `UI consideration for form field with id \"${this.id}\":\\n\\n` + `In a fluid appearance, avoid using suffix alongside an action.`,\n );\n };\n }\n }\n\n /**\n * Validates whether or not the form field is in a \"usable\" state.\n */\n private _validateFormControl() {\n if (!this._control) {\n throw new Error(DaffFormFieldMissingControlMessage);\n }\n }\n\n /**\n * @docs-private\n *\n * Lifecycle hook to verify that the form field has an acceptable\n * child control instance. Mostly useful for development-time\n * validation of usage.\n */\n ngAfterContentInit() {\n this._validateFormControl();\n\n this._control.stateChanges?.subscribe(({ focused, filled, disabled, error, valid }) => {\n this.isFilled = filled;\n this.isError = error;\n this.isDisabled = disabled;\n this.isValid = valid;\n\n this.cd.markForCheck();\n });\n }\n\n /**\n * @docs-private\n *\n * Lifecycle hook to verify that the form field has an acceptable\n * child control instance. Mostly useful for development-time\n * validation of usage.\n */\n ngAfterContentChecked() {\n this._validateFormControl();\n }\n}\n","<ng-content />\n\n@if (isFixed) {\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n}\n<div class=\"daff-form-field__wrapper\">\n\t<div class=\"daff-form-field__control\">\n\t\t@if (_prefix) {\n\t\t\t<ng-content select=\"[daffPrefix]\"></ng-content>\n\t\t}\n\t\t<div class=\"daff-form-field__inner\">\n\t\t\t@if (!isFixed) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n\t\t\t}\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t@if (_suffix) {\n\t\t\t<ng-content select=\"[daffSuffix]\"></ng-content>\n\t\t}\n\t\t@if (_action && !isFixed) {\n\t\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t\t}\n\t</div>\n\t@if ((_action && isFixed)) {\n\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t}\n</div>\n@if (hasHint()) {\n\t<div\n\t\tclass=\"daff-form-field__hint-wrapper\"\n\t\t[id]=\"hintId\">\n\t\t<ng-content select=\"daff-hint\"></ng-content>\n\t</div>\n}\n@if (hasErrorMessage()) {\n\t<div\n\t\tclass=\"daff-form-field__error-wrapper\"\n\t\t[id]=\"errorMessageId\">\n\t\t<ng-content select=\"daff-error-message\"></ng-content>\n\t</div>\n}\n\n<ng-template #actionTemplate>\n\t<ng-content select=\"[daffFormFieldAction]\"></ng-content>\n</ng-template>\n\n<ng-template #labelTemplate>\n @if (_formLabelDirective) {\n <ng-content select=\"label[daffFormLabel]\"></ng-content>\n } @else if(_formFieldLabelDirective) {\n <label class=\"daff-form-field__label\"\n [attr.for]=\"autoLabelId\"\n [attr.id]=\"customId\">\n <ng-content select=\"daff-form-label\"></ng-content>\n\t\t\t@if (_control.required) {\n\t\t\t<span aria-hidden=\"true\">*</span>\n\t\t\t}\n </label>\n } @else {\n <ng-content select=\"label\"></ng-content>\n }\n</ng-template>","import { NgModule } from '@angular/core';\n\nimport { DaffFormLabelModule } from '@daffodil/design';\nimport {\n DaffErrorMessageComponent,\n DaffFormFieldLabelDirective,\n DaffHintComponent,\n} from '@daffodil/design/form';\n\nimport { DaffFormFieldComponent } from './form-field/form-field.component';\n\n/**\n * @deprecated in favor of standalone components. Deprecated in version 0.84.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n DaffFormFieldComponent,\n DaffErrorMessageComponent,\n DaffHintComponent,\n DaffFormFieldLabelDirective,\n DaffFormLabelModule,\n ],\n exports: [\n DaffFormFieldComponent,\n DaffErrorMessageComponent,\n DaffHintComponent,\n DaffFormFieldLabelDirective,\n DaffFormLabelModule,\n ],\n})\nexport class DaffFormFieldModule { }\n","import {\n DaffPrefixDirective,\n DaffSuffixDirective,\n DaffFormLabelDirective,\n} from '@daffodil/design';\nimport {\n DaffErrorMessageComponent,\n DaffFormFieldLabelDirective,\n DaffHintComponent,\n} from '@daffodil/design/form';\n\nimport { DaffFormFieldActionDirective } from './action/action.directive';\nimport { DaffFormFieldComponent } from './form-field/form-field.component';\n\n/**\n * @docs-private\n */\nexport const DAFF_FORM_FIELD_COMPONENTS = <const> [\n DaffFormFieldComponent,\n DaffFormLabelDirective,\n DaffPrefixDirective,\n DaffSuffixDirective,\n DaffFormFieldActionDirective,\n DaffHintComponent,\n DaffFormFieldLabelDirective,\n DaffErrorMessageComponent,\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-form-field.mjs","sources":["../../../libs/design/form-field/src/action/action.directive.ts","../../../libs/design/form-field/src/form-field-control.ts","../../../libs/design/form-field/src/form-field/form-field.component.ts","../../../libs/design/form-field/src/form-field/form-field.component.html","../../../libs/design/form-field/src/form-field.module.ts","../../../libs/design/form-field/src/form-field.ts","../../../libs/design/form-field/src/daffodil-design-form-field.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n/**\n * DaffFormFieldActionDirective marks an element, typically a button, as an action attached to a form control inside `DaffFormFieldComponent`.\n */\n@Directive({\n selector: '[daffFormFieldAction]',\n host: {\n class: 'daff-form-field-action',\n },\n})\nexport class DaffFormFieldActionDirective {}\n","import { NgControl } from '@angular/forms';\nimport {\n BehaviorSubject,\n Observable,\n} from 'rxjs';\n\nimport { DaffFormFieldState } from './form-field-state';\n\n/**\n * Form controls must extend this class to be used inside `DaffFormFieldComponent`.\n *\n * > **Note**\n * > The control is defined as an abstract class instead of an interface to support Angular's dependency injection. Interfaces are erased during TypeScript compilation and cannot be used as DI tokens.\n * >\n * > By using an abstract class, the Angular DI container can match the class token for injection.\n */\nexport abstract class DaffFormFieldControl<T> {\n /**\n * The type of the control (e.g., 'input', 'select', 'textarea').\n * Used to apply control-specific styling or behavior.\n */\n abstract readonly controlType?: any;\n\n /**\n * Whether the control supports automatic label behavior.\n * When `true`, the form field will associate the label with the control using `for` and `id` attributes.\n *\n * Defaults to `true`.\n */\n readonly supportsAutoLabelling?: boolean = true;\n\n /**\n * Whether the control currently has focus.\n */\n abstract readonly focused: boolean;\n\n /**\n * Whether the control is required for form validation.\n */\n abstract readonly required: boolean;\n\n /**\n * Whether the control is disabled.\n */\n abstract readonly disabled: boolean;\n\n /**\n * The unique identifier for the control element.\n */\n readonly id?: string;\n\n /**\n * Whether the label should be in the raised position.\n * By default, matches the focused state.\n */\n get raised() {\n return this.focused;\n };\n\n /**\n * Sets focus on the control.\n *\n * @param event - Optional event that triggers the focus.\n */\n abstract focus(event?: Event): void;\n\n /**\n * The current value of the control.\n */\n abstract readonly value: T;\n\n constructor(public ngControl: NgControl | null) {}\n\n /**\n * Computes the current state of the form field control.\n * Combines control properties and form validation state.\n */\n get state(): DaffFormFieldState {\n return {\n focused: this.focused,\n filled: !!this.value,\n disabled: this.ngControl?.disabled ?? this.disabled,\n error: this.ngControl?.errors && (this.ngControl?.dirty || this.ngControl?.touched),\n valid: !this.ngControl?.errors && this.ngControl?.dirty,\n };\n }\n\n _stateChanges = new BehaviorSubject({\n focused: false,\n filled: false,\n disabled: false,\n error: false,\n valid: true,\n });\n\n /**\n * Observable stream of state changes for the form field control.\n */\n stateChanges: Observable<DaffFormFieldState>;\n\n /**\n * Emits the current state.\n */\n emitState(deferred = false) {\n if(deferred) {\n Promise.resolve().then(() => {\n this._stateChanges.next(this.state);\n });\n return;\n }\n\n this._stateChanges.next(this.state);\n }\n};\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ViewEncapsulation,\n AfterContentInit,\n AfterContentChecked,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n AfterViewInit,\n isDevMode,\n ElementRef,\n input,\n contentChild,\n signal,\n computed,\n} from '@angular/core';\n\nimport {\n DaffPrefixDirective,\n DaffSuffixDirective,\n DaffSkeletonableDirective,\n DaffFormLabelDirective,\n} from '@daffodil/design';\nimport {\n DaffErrorMessageComponent,\n DaffHintComponent,\n DaffFormFieldLabelDirective,\n} from '@daffodil/design/form';\n\nimport { DaffFormFieldActionDirective } from '../action/action.directive';\nimport { DaffFormFieldControl } from '../form-field-control';\n\nlet daffFormFieldId = 0;\n\nexport type DaffFormFieldAppearance = 'fluid' | 'fixed';\n\nenum DaffFormFieldAppearanceEnum {\n Fluid = 'fluid',\n Fixed = 'fixed',\n}\n\nexport const DaffFormFieldMissingControlMessage = 'A DaffFormFieldComponent must contain a DaffFormFieldControl';\n\n/**\n * DaffFormFieldComponent is a wrapping component that provides consistent styling and behavior for form control elements.\n */\n@Component({\n selector: 'daff-form-field',\n templateUrl: './form-field.component.html',\n styleUrl: './form-field.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n ],\n host: {\n class: 'daff-form-field',\n '[class.is-native-select]': 'isNativeSelect()',\n '[class.has-prefix]': '_prefix()',\n '[class.has-suffix]': '_suffix()',\n '[class.has-action]': '_action()',\n '[class.daff-error]': 'isError()',\n '[class.daff-disabled]': 'isDisabled()',\n '[class.daff-valid]': 'isValid()',\n '[class.daff-focused]': 'isFocused',\n '[class.daff-raised]': 'isRaised',\n '[class.fluid]': 'appearance() === \"fluid\"',\n '[class.fixed]': 'appearance() === \"fixed\"',\n },\n hostDirectives: [\n {\n directive: DaffSkeletonableDirective,\n inputs: ['skeleton'],\n },\n ],\n})\nexport class DaffFormFieldComponent implements AfterContentInit, AfterContentChecked, AfterViewInit {\n /** @docs-private */\n isNativeSelect = computed(() => this._control()?.controlType === 'native-select');\n\n constructor(\n private cd: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) {}\n\n /** @docs-private */\n _prefix = contentChild(DaffPrefixDirective);\n\n /** @docs-private */\n _suffix = contentChild(DaffSuffixDirective);\n\n /**\n * @docs-private\n *\n * The child form control that the form field manages.\n */\n _control = contentChild(DaffFormFieldControl);\n\n /**\n * @docs-private\n *\n * @deprecated Deprecated in version 0.86.0. Will be removed in version 1.0.0.\n */\n _formLabelDirective = contentChild(DaffFormLabelDirective);\n\n /**\n * @docs-private\n */\n _formFieldLabelDirective = contentChild(DaffFormFieldLabelDirective);\n\n /**\n * @docs-private\n */\n _action = contentChild(DaffFormFieldActionDirective);\n\n /**\n * @docs-private\n */\n private _hint = contentChild(DaffHintComponent);\n\n /**\n * @docs-private\n */\n private _error = contentChild(DaffErrorMessageComponent);\n\n /**\n * @docs-private\n *\n * Tracking property to keep a record of whether or not the\n * form field should be marked as error.\n */\n isError = signal(false);\n\n /**\n * @docs-private\n *\n * Tracking property to keep a record of whether or not the\n * form field contains any user input.\n */\n isFilled = signal(false);\n\n /**\n * @docs-private\n *\n * Tracking property to keep a record of whether or not the\n * form field should be marked as disabled.\n */\n isDisabled = signal(false);\n\n /**\n * @docs-private\n *\n * Tracking property to keep a record of whether or not the\n * form field should be marked as valid.\n */\n isValid = signal(false);\n\n /**\n * @docs-private\n *\n * Determines whether or not the form field should display its focused state.\n */\n get isFocused() {\n return this._control()?.focused;\n }\n\n /**\n * @docs-private\n */\n get isRaised() {\n return this._control()?.raised || this.isFilled();\n }\n\n /**\n * The appearance of the form field. Defaults to `fluid`.\n */\n appearance = input(DaffFormFieldAppearanceEnum.Fluid, {\n transform: (value: DaffFormFieldAppearance | '' | null | undefined) =>\n value || DaffFormFieldAppearanceEnum.Fluid,\n });\n\n /**\n * @docs-private\n */\n isFixed = computed(() => this.appearance() === DaffFormFieldAppearanceEnum.Fixed);\n\n /**\n * The unique id of the form field. Defaults to an autogenerated value. When using this,\n * it's your responsibility to ensure that the id for each form field is unique.\n *\n * It gets assigned to the `for` attribute on the `<label>` inside of the form field.\n */\n id = input('daff-form-field-' + ++daffFormFieldId);\n\n /**\n * @docs-private\n */\n hasHint = computed(() => !!this._hint());\n\n /**\n * @docs-private\n */\n hintId = computed(() => this.id() + '-hint');\n\n /**\n * @docs-private\n */\n hasErrorMessage = computed(() => !!this._error());\n\n /**\n * @docs-private\n */\n errorMessageId = computed(() => this.id() + '-error');\n\n /**\n * @docs-private\n */\n autoLabelId = computed(() => this._control()?.supportsAutoLabelling ? this.id() : null);\n\n /**\n * @docs-private\n */\n customId = computed(() => this._control()?.supportsAutoLabelling ? null : this.id());\n\n /**\n * @docs-private\n *\n * Displays a console warning if the `DaffFormFieldLabelDirective` is not used on controls (native HTML control elements) that support auto-labelling.\n */\n ngAfterViewInit() {\n if (isDevMode()) {\n if (!this._formFieldLabelDirective() && this._control()?.supportsAutoLabelling && !(this._control()?.id)) {\n console.warn(\n `Accessibility Warning: The form field with id \"${this.id()}\" uses a control that supports auto-labelling, but no <daff-form-label> component was found.\\n\\n` +\n `1. Add a <daff-form-label> component (recommended)\\n` +\n `2. OR manually set an 'id' on your input and matching 'for' attribute on your <label>.\\n\\n` +\n `Why this matters: Proper labelling ensures assistive technologies can identify form fields correctly.`,\n );\n }\n\n if(this._suffix() && this._action() && !this.isFixed()) {\n console.warn(\n `UI consideration for form field with id \"${this.id()}\":\\n\\n` + `In a fluid appearance, avoid using suffix alongside an action.`,\n );\n };\n }\n }\n\n /**\n * Validates whether or not the form field is in a \"usable\" state.\n */\n private _validateFormControl() {\n if (!this._control()) {\n throw new Error(DaffFormFieldMissingControlMessage);\n }\n }\n\n /**\n * @docs-private\n *\n * Lifecycle hook to verify that the form field has an acceptable\n * child control instance. Mostly useful for development-time\n * validation of usage.\n */\n ngAfterContentInit() {\n this._validateFormControl();\n\n this._control()?.stateChanges?.subscribe(({ filled, disabled, error, valid }) => {\n this.isFilled.set(filled);\n this.isError.set(error);\n this.isDisabled.set(disabled);\n this.isValid.set(valid);\n\n this.cd.markForCheck();\n });\n }\n\n /**\n * @docs-private\n *\n * Lifecycle hook to verify that the form field has an acceptable\n * child control instance. Mostly useful for development-time\n * validation of usage.\n */\n ngAfterContentChecked() {\n this._validateFormControl();\n }\n}\n","<ng-content />\n\n@if (isFixed()) {\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n}\n<div class=\"daff-form-field__wrapper\">\n\t<div class=\"daff-form-field__control\">\n\t\t@if (_prefix()) {\n\t\t\t<ng-content select=\"[daffPrefix]\"></ng-content>\n\t\t}\n\t\t<div class=\"daff-form-field__inner\">\n\t\t\t@if (!isFixed()) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n\t\t\t}\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t@if (_suffix()) {\n\t\t\t<ng-content select=\"[daffSuffix]\"></ng-content>\n\t\t}\n\t\t@if (_action() && !isFixed()) {\n\t\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t\t}\n\t</div>\n\t@if ((_action() && isFixed())) {\n\t\t<ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n\t}\n</div>\n@if (hasHint()) {\n\t<div\n\t\tclass=\"daff-form-field__hint-wrapper\"\n\t\t[id]=\"hintId()\">\n\t\t<ng-content select=\"daff-hint\"></ng-content>\n\t</div>\n}\n@if (hasErrorMessage()) {\n\t<div\n\t\tclass=\"daff-form-field__error-wrapper\"\n\t\t[id]=\"errorMessageId()\">\n\t\t<ng-content select=\"daff-error-message\"></ng-content>\n\t</div>\n}\n\n<ng-template #actionTemplate>\n\t<ng-content select=\"[daffFormFieldAction]\"></ng-content>\n</ng-template>\n\n<ng-template #labelTemplate>\n @if (_formLabelDirective()) {\n <ng-content select=\"label[daffFormLabel]\"></ng-content>\n } @else if(_formFieldLabelDirective()) {\n <label class=\"daff-form-field__label\"\n [attr.for]=\"autoLabelId()\"\n [attr.id]=\"customId()\">\n <ng-content select=\"daff-form-label\"></ng-content>\n\t\t\t@if (_control().required) {\n\t\t\t<span aria-hidden=\"true\">*</span>\n\t\t\t}\n </label>\n } @else {\n <ng-content select=\"label\"></ng-content>\n }\n</ng-template>","import { NgModule } from '@angular/core';\n\nimport { DaffFormLabelModule } from '@daffodil/design';\nimport {\n DaffErrorMessageComponent,\n DaffFormFieldLabelDirective,\n DaffHintComponent,\n} from '@daffodil/design/form';\n\nimport { DaffFormFieldComponent } from './form-field/form-field.component';\n\n/**\n * @deprecated in favor of standalone components. Deprecated in version 0.84.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n DaffFormFieldComponent,\n DaffErrorMessageComponent,\n DaffHintComponent,\n DaffFormFieldLabelDirective,\n DaffFormLabelModule,\n ],\n exports: [\n DaffFormFieldComponent,\n DaffErrorMessageComponent,\n DaffHintComponent,\n DaffFormFieldLabelDirective,\n DaffFormLabelModule,\n ],\n})\nexport class DaffFormFieldModule { }\n","import {\n DaffPrefixDirective,\n DaffSuffixDirective,\n DaffFormLabelDirective,\n} from '@daffodil/design';\nimport {\n DaffErrorMessageComponent,\n DaffFormFieldLabelDirective,\n DaffHintComponent,\n} from '@daffodil/design/form';\n\nimport { DaffFormFieldActionDirective } from './action/action.directive';\nimport { DaffFormFieldComponent } from './form-field/form-field.component';\n\n/**\n * @docs-private\n */\nexport const DAFF_FORM_FIELD_COMPONENTS = <const> [\n DaffFormFieldComponent,\n DaffFormLabelDirective,\n DaffPrefixDirective,\n DaffSuffixDirective,\n DaffFormFieldActionDirective,\n DaffHintComponent,\n DaffFormFieldLabelDirective,\n DaffErrorMessageComponent,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}