@odx/angular 1.0.3 → 2.0.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 (198) hide show
  1. package/cdk/autocomplete-control/README.md +3 -0
  2. package/cdk/autocomplete-control/index.d.ts +3 -0
  3. package/cdk/autocomplete-control/lib/abstract/base-search-field.directive.d.ts +13 -0
  4. package/cdk/autocomplete-control/lib/abstract/index.d.ts +1 -0
  5. package/cdk/autocomplete-control/lib/autocomplete-control.d.ts +39 -0
  6. package/cdk/autocomplete-control/lib/pipes/base-search-filter-pipe.d.ts +11 -0
  7. package/cdk/autocomplete-control/lib/pipes/index.d.ts +1 -0
  8. package/cdk/option-control/README.md +3 -0
  9. package/cdk/option-control/index.d.ts +1 -0
  10. package/cdk/option-control/lib/option-control.d.ts +17 -0
  11. package/components/autocomplete/README.md +3 -0
  12. package/components/autocomplete/index.d.ts +6 -0
  13. package/components/autocomplete/lib/autocomplete.component.d.ts +30 -0
  14. package/components/autocomplete/lib/autocomplete.module.d.ts +11 -0
  15. package/components/autocomplete/lib/autocomplete.tokens.d.ts +3 -0
  16. package/components/autocomplete/lib/components/index.d.ts +1 -0
  17. package/components/autocomplete/lib/components/option/autocomplete-option.component.d.ts +9 -0
  18. package/components/autocomplete/lib/directives/autocomplete-search-field.directive.d.ts +9 -0
  19. package/components/autocomplete/lib/directives/index.d.ts +1 -0
  20. package/components/autocomplete/lib/pipes/autocomplete-search-filter.pipe.d.ts +12 -0
  21. package/components/autocomplete/lib/pipes/index.d.ts +1 -0
  22. package/components/button/lib/button.component.d.ts +1 -1
  23. package/components/chip/index.d.ts +1 -1
  24. package/components/chip/lib/{chip.component.d.ts → components/chip/chip.component.d.ts} +1 -1
  25. package/components/chip/lib/components/chip-list/chip-list.component.d.ts +6 -0
  26. package/components/chip/lib/components/chip-list-row/chip-list-row.component.d.ts +6 -0
  27. package/components/chip/lib/components/index.d.ts +3 -0
  28. package/components/dropdown/lib/dropdown.directive.d.ts +2 -1
  29. package/components/form-field/lib/models/form-field-variant.d.ts +1 -0
  30. package/components/main-menu/lib/directives/index.d.ts +1 -0
  31. package/components/main-menu/lib/directives/main-menu-close.directive.d.ts +7 -0
  32. package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +3 -4
  33. package/components/main-menu/lib/main-menu.module.d.ts +3 -2
  34. package/components/menu/lib/directives/menu-item.directive.d.ts +1 -1
  35. package/components/select/index.d.ts +0 -1
  36. package/components/select/lib/components/index.d.ts +1 -1
  37. package/components/select/lib/components/select-option/select-option.component.d.ts +19 -0
  38. package/components/select/lib/directives/select-search-field.directive.d.ts +3 -7
  39. package/components/select/lib/pipes/select-search-filter.pipe.d.ts +8 -8
  40. package/components/select/lib/select.component.d.ts +15 -30
  41. package/components/select/lib/select.module.d.ts +2 -2
  42. package/components/select/lib/select.tokens.d.ts +2 -2
  43. package/components/table/README.md +3 -0
  44. package/components/table/index.d.ts +5 -0
  45. package/components/table/lib/components/check-cell/check-cell.component.d.ts +11 -0
  46. package/components/table/lib/components/header-title/header-title.component.d.ts +28 -0
  47. package/components/table/lib/components/index.d.ts +2 -0
  48. package/components/table/lib/directives/index.d.ts +2 -0
  49. package/components/table/lib/directives/table-cell.directive.d.ts +6 -0
  50. package/components/table/lib/directives/table-row.directive.d.ts +6 -0
  51. package/components/table/lib/interfaces/index.d.ts +3 -0
  52. package/components/table/lib/models/index.d.ts +2 -0
  53. package/components/table/lib/models/sort-variant.d.ts +6 -0
  54. package/components/table/lib/models/table-variant.d.ts +5 -0
  55. package/components/table/lib/table.component.d.ts +29 -0
  56. package/components/table/lib/table.config.d.ts +4 -0
  57. package/components/table/lib/table.module.d.ts +11 -0
  58. package/components/wizard/README.md +3 -0
  59. package/components/wizard/index.d.ts +3 -0
  60. package/components/wizard/lib/components/index.d.ts +1 -0
  61. package/components/wizard/lib/components/wizard-step/wizard-step.component.d.ts +17 -0
  62. package/components/wizard/lib/wizard.component.d.ts +31 -0
  63. package/components/wizard/lib/wizard.module.d.ts +9 -0
  64. package/esm2020/cdk/autocomplete-control/index.mjs +4 -0
  65. package/esm2020/cdk/autocomplete-control/lib/abstract/base-search-field.directive.mjs +38 -0
  66. package/esm2020/cdk/autocomplete-control/lib/abstract/index.mjs +2 -0
  67. package/esm2020/cdk/autocomplete-control/lib/autocomplete-control.mjs +90 -0
  68. package/esm2020/cdk/autocomplete-control/lib/pipes/base-search-filter-pipe.mjs +32 -0
  69. package/esm2020/cdk/autocomplete-control/lib/pipes/index.mjs +2 -0
  70. package/esm2020/cdk/autocomplete-control/odx-angular-cdk-autocomplete-control.mjs +5 -0
  71. package/esm2020/cdk/option-control/index.mjs +2 -0
  72. package/esm2020/cdk/option-control/lib/option-control.mjs +47 -0
  73. package/esm2020/cdk/option-control/odx-angular-cdk-option-control.mjs +5 -0
  74. package/esm2020/components/autocomplete/index.mjs +7 -0
  75. package/esm2020/components/autocomplete/lib/autocomplete.component.mjs +162 -0
  76. package/esm2020/components/autocomplete/lib/autocomplete.module.mjs +21 -0
  77. package/esm2020/components/autocomplete/lib/autocomplete.tokens.mjs +3 -0
  78. package/esm2020/components/autocomplete/lib/components/index.mjs +2 -0
  79. package/esm2020/components/autocomplete/lib/components/option/autocomplete-option.component.mjs +33 -0
  80. package/esm2020/components/autocomplete/lib/directives/autocomplete-search-field.directive.mjs +26 -0
  81. package/esm2020/components/autocomplete/lib/directives/index.mjs +2 -0
  82. package/esm2020/components/autocomplete/lib/pipes/autocomplete-search-filter.pipe.mjs +30 -0
  83. package/esm2020/components/autocomplete/lib/pipes/index.mjs +2 -0
  84. package/esm2020/components/autocomplete/odx-angular-components-autocomplete.mjs +5 -0
  85. package/esm2020/components/button/lib/button.component.mjs +3 -3
  86. package/esm2020/components/card/lib/card.component.mjs +2 -2
  87. package/esm2020/components/chip/index.mjs +2 -2
  88. package/esm2020/components/chip/lib/{chip.component.mjs → components/chip/chip.component.mjs} +2 -2
  89. package/esm2020/components/chip/lib/components/chip-list/chip-list.component.mjs +21 -0
  90. package/esm2020/components/chip/lib/components/chip-list-row/chip-list-row.component.mjs +21 -0
  91. package/esm2020/components/chip/lib/components/index.mjs +4 -0
  92. package/esm2020/components/dropdown/lib/dropdown.component.mjs +3 -3
  93. package/esm2020/components/dropdown/lib/dropdown.directive.mjs +10 -2
  94. package/esm2020/components/form-field/lib/components/form-group/form-group.component.mjs +3 -3
  95. package/esm2020/components/form-field/lib/form-field.component.mjs +3 -3
  96. package/esm2020/components/form-field/lib/form-field.service.mjs +2 -2
  97. package/esm2020/components/form-field/lib/models/form-field-variant.mjs +2 -1
  98. package/esm2020/components/main-menu/lib/directives/index.mjs +2 -1
  99. package/esm2020/components/main-menu/lib/directives/main-menu-close.directive.mjs +24 -0
  100. package/esm2020/components/main-menu/lib/directives/main-menu-item.directive.mjs +6 -12
  101. package/esm2020/components/main-menu/lib/main-menu.module.mjs +4 -4
  102. package/esm2020/components/menu/lib/directives/menu-item.directive.mjs +3 -3
  103. package/esm2020/components/select/index.mjs +1 -2
  104. package/esm2020/components/select/lib/components/index.mjs +2 -2
  105. package/esm2020/components/select/lib/components/select-option/select-option.component.mjs +75 -0
  106. package/esm2020/components/select/lib/directives/select-search-field.directive.mjs +9 -21
  107. package/esm2020/components/select/lib/pipes/select-search-filter.pipe.mjs +12 -33
  108. package/esm2020/components/select/lib/select.component.mjs +44 -86
  109. package/esm2020/components/select/lib/select.module.mjs +5 -5
  110. package/esm2020/components/select/lib/select.tokens.mjs +2 -2
  111. package/esm2020/components/table/index.mjs +6 -0
  112. package/esm2020/components/table/lib/components/check-cell/check-cell.component.mjs +29 -0
  113. package/esm2020/components/table/lib/components/header-title/header-title.component.mjs +86 -0
  114. package/esm2020/components/table/lib/components/index.mjs +3 -0
  115. package/esm2020/components/table/lib/directives/index.mjs +3 -0
  116. package/esm2020/components/table/lib/directives/table-cell.directive.mjs +27 -0
  117. package/esm2020/components/table/lib/directives/table-row.directive.mjs +28 -0
  118. package/esm2020/components/table/lib/interfaces/index.mjs +4 -0
  119. package/esm2020/components/table/lib/models/index.mjs +3 -0
  120. package/esm2020/components/table/lib/models/sort-variant.mjs +6 -0
  121. package/esm2020/components/table/lib/models/table-variant.mjs +5 -0
  122. package/esm2020/components/table/lib/table.component.mjs +86 -0
  123. package/esm2020/components/table/lib/table.config.mjs +3 -0
  124. package/esm2020/components/table/lib/table.module.mjs +21 -0
  125. package/esm2020/components/table/odx-angular-components-table.mjs +5 -0
  126. package/esm2020/components/wizard/index.mjs +4 -0
  127. package/esm2020/components/wizard/lib/components/index.mjs +2 -0
  128. package/esm2020/components/wizard/lib/components/wizard-step/wizard-step.component.mjs +73 -0
  129. package/esm2020/components/wizard/lib/wizard.component.mjs +155 -0
  130. package/esm2020/components/wizard/lib/wizard.module.mjs +19 -0
  131. package/esm2020/components/wizard/odx-angular-components-wizard.mjs +5 -0
  132. package/esm2020/lib/services/window-ref.mjs +4 -1
  133. package/fesm2015/odx-angular-cdk-autocomplete-control.mjs +164 -0
  134. package/fesm2015/odx-angular-cdk-autocomplete-control.mjs.map +1 -0
  135. package/fesm2015/odx-angular-cdk-option-control.mjs +55 -0
  136. package/fesm2015/odx-angular-cdk-option-control.mjs.map +1 -0
  137. package/fesm2015/odx-angular-components-autocomplete.mjs +263 -0
  138. package/fesm2015/odx-angular-components-autocomplete.mjs.map +1 -0
  139. package/fesm2015/odx-angular-components-button.mjs +2 -2
  140. package/fesm2015/odx-angular-components-button.mjs.map +1 -1
  141. package/fesm2015/odx-angular-components-card.mjs +1 -1
  142. package/fesm2015/odx-angular-components-card.mjs.map +1 -1
  143. package/fesm2015/odx-angular-components-chip.mjs +35 -5
  144. package/fesm2015/odx-angular-components-chip.mjs.map +1 -1
  145. package/fesm2015/odx-angular-components-dropdown.mjs +11 -3
  146. package/fesm2015/odx-angular-components-dropdown.mjs.map +1 -1
  147. package/fesm2015/odx-angular-components-form-field.mjs +5 -4
  148. package/fesm2015/odx-angular-components-form-field.mjs.map +1 -1
  149. package/fesm2015/odx-angular-components-main-menu.mjs +28 -14
  150. package/fesm2015/odx-angular-components-main-menu.mjs.map +1 -1
  151. package/fesm2015/odx-angular-components-menu.mjs +2 -2
  152. package/fesm2015/odx-angular-components-menu.mjs.map +1 -1
  153. package/fesm2015/odx-angular-components-select.mjs +80 -175
  154. package/fesm2015/odx-angular-components-select.mjs.map +1 -1
  155. package/fesm2015/odx-angular-components-table.mjs +264 -0
  156. package/fesm2015/odx-angular-components-table.mjs.map +1 -0
  157. package/fesm2015/odx-angular-components-wizard.mjs +242 -0
  158. package/fesm2015/odx-angular-components-wizard.mjs.map +1 -0
  159. package/fesm2015/odx-angular.mjs +3 -0
  160. package/fesm2015/odx-angular.mjs.map +1 -1
  161. package/fesm2020/odx-angular-cdk-autocomplete-control.mjs +160 -0
  162. package/fesm2020/odx-angular-cdk-autocomplete-control.mjs.map +1 -0
  163. package/fesm2020/odx-angular-cdk-option-control.mjs +54 -0
  164. package/fesm2020/odx-angular-cdk-option-control.mjs.map +1 -0
  165. package/fesm2020/odx-angular-components-autocomplete.mjs +254 -0
  166. package/fesm2020/odx-angular-components-autocomplete.mjs.map +1 -0
  167. package/fesm2020/odx-angular-components-button.mjs +2 -2
  168. package/fesm2020/odx-angular-components-button.mjs.map +1 -1
  169. package/fesm2020/odx-angular-components-card.mjs +1 -1
  170. package/fesm2020/odx-angular-components-card.mjs.map +1 -1
  171. package/fesm2020/odx-angular-components-chip.mjs +35 -5
  172. package/fesm2020/odx-angular-components-chip.mjs.map +1 -1
  173. package/fesm2020/odx-angular-components-dropdown.mjs +11 -3
  174. package/fesm2020/odx-angular-components-dropdown.mjs.map +1 -1
  175. package/fesm2020/odx-angular-components-form-field.mjs +5 -4
  176. package/fesm2020/odx-angular-components-form-field.mjs.map +1 -1
  177. package/fesm2020/odx-angular-components-main-menu.mjs +28 -14
  178. package/fesm2020/odx-angular-components-main-menu.mjs.map +1 -1
  179. package/fesm2020/odx-angular-components-menu.mjs +2 -2
  180. package/fesm2020/odx-angular-components-menu.mjs.map +1 -1
  181. package/fesm2020/odx-angular-components-select.mjs +77 -170
  182. package/fesm2020/odx-angular-components-select.mjs.map +1 -1
  183. package/fesm2020/odx-angular-components-table.mjs +259 -0
  184. package/fesm2020/odx-angular-components-table.mjs.map +1 -0
  185. package/fesm2020/odx-angular-components-wizard.mjs +239 -0
  186. package/fesm2020/odx-angular-components-wizard.mjs.map +1 -0
  187. package/fesm2020/odx-angular.mjs +3 -0
  188. package/fesm2020/odx-angular.mjs.map +1 -1
  189. package/lib/services/window-ref.d.ts +1 -0
  190. package/package.json +48 -8
  191. package/components/select/lib/abstract/index.d.ts +0 -2
  192. package/components/select/lib/abstract/select-control-option.d.ts +0 -9
  193. package/components/select/lib/abstract/select-control.d.ts +0 -12
  194. package/components/select/lib/components/option/option.component.d.ts +0 -26
  195. package/esm2020/components/select/lib/abstract/index.mjs +0 -3
  196. package/esm2020/components/select/lib/abstract/select-control-option.mjs +0 -2
  197. package/esm2020/components/select/lib/abstract/select-control.mjs +0 -2
  198. package/esm2020/components/select/lib/components/option/option.component.mjs +0 -95
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-chip.mjs","sources":["../../../../libs/angular/components/chip/src/lib/models/chip-size.ts","../../../../libs/angular/components/chip/src/lib/models/chip-variant.ts","../../../../libs/angular/components/chip/src/lib/chip.component.ts","../../../../libs/angular/components/chip/src/lib/chip.component.html","../../../../libs/angular/components/chip/src/odx-angular-components-chip.ts"],"sourcesContent":["export type ChipSize = typeof ChipSize[keyof typeof ChipSize];\n\nexport const ChipSize = {\n SMALL: 'small',\n MEDIUM: 'medium',\n} as const;\n","export type ChipVariant = typeof ChipVariant[keyof typeof ChipVariant];\n\nexport const ChipVariant = {\n SECONDARY: 'secondary',\n HIGHLIGHT: 'highlight',\n SUCCESS: 'success',\n DANGER: 'danger',\n} as const;\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement, Transform } from '@odx/angular/utils';\nimport { ChipSize, ChipVariant } from './models';\n\n@CSSComponent('chip')\n@Component({\n selector: 'odx-chip',\n templateUrl: './chip.component.html',\n imports: [CoreModule, ButtonComponent, IconComponent],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ChipComponent {\n public static ngAcceptInputType_removable: BooleanInput;\n public readonly element = injectElement();\n\n @Transform(coerceBooleanProperty)\n @Input()\n public removable = false;\n\n @CSSModifier()\n @Input()\n public size: ChipSize = ChipSize.SMALL;\n\n @CSSModifier()\n @Input()\n public variant: ChipVariant = ChipVariant.SECONDARY;\n\n @Output()\n public remove = new EventEmitter<void>();\n\n public onClick(): void {\n this.remove.emit();\n }\n}\n","<div class=\"odx-chip__content\">\n <ng-content></ng-content>\n</div>\n<button odxButton class=\"odx-chip__action\" [size]=\"size\" [variant]=\"variant\" type=\"button\" (click)=\"onClick()\" *ngIf=\"removable\">\n <odx-icon [size]=\"size\" name=\"close\" iconSet=\"core\"></odx-icon>\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-chip.mjs","sources":["../../../../libs/angular/components/chip/src/lib/components/chip-list-row/chip-list-row.component.ts","../../../../libs/angular/components/chip/src/lib/components/chip-list-row/chip-list-row.component.html","../../../../libs/angular/components/chip/src/lib/components/chip-list/chip-list.component.ts","../../../../libs/angular/components/chip/src/lib/components/chip-list/chip-list.component.html","../../../../libs/angular/components/chip/src/lib/models/chip-size.ts","../../../../libs/angular/components/chip/src/lib/models/chip-variant.ts","../../../../libs/angular/components/chip/src/lib/components/chip/chip.component.ts","../../../../libs/angular/components/chip/src/lib/components/chip/chip.component.html","../../../../libs/angular/components/chip/src/odx-angular-components-chip.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n@CSSComponent('chip-list-row')\n@Component({\n selector: 'odx-chip-list-row',\n templateUrl: './chip-list-row.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ChipListRowComponent {\n public readonly element = injectElement();\n}\n","<ng-content select=\"odx-chip\"></ng-content>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n@CSSComponent('chip-list')\n@Component({\n selector: 'odx-chip-list',\n templateUrl: './chip-list.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ChipListComponent {\n public readonly element = injectElement();\n}\n","<ng-content select=\"odx-chip-list-row\"></ng-content>\n<ng-content select=\"odx-autocomplete\"></ng-content>\n","export type ChipSize = typeof ChipSize[keyof typeof ChipSize];\n\nexport const ChipSize = {\n SMALL: 'small',\n MEDIUM: 'medium',\n} as const;\n","export type ChipVariant = typeof ChipVariant[keyof typeof ChipVariant];\n\nexport const ChipVariant = {\n SECONDARY: 'secondary',\n HIGHLIGHT: 'highlight',\n SUCCESS: 'success',\n DANGER: 'danger',\n} as const;\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement, Transform } from '@odx/angular/utils';\nimport { ChipSize, ChipVariant } from '../../models';\n\n@CSSComponent('chip')\n@Component({\n selector: 'odx-chip',\n templateUrl: './chip.component.html',\n imports: [CoreModule, ButtonComponent, IconComponent],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ChipComponent {\n public static ngAcceptInputType_removable: BooleanInput;\n public readonly element = injectElement();\n\n @Transform(coerceBooleanProperty)\n @Input()\n public removable = false;\n\n @CSSModifier()\n @Input()\n public size: ChipSize = ChipSize.SMALL;\n\n @CSSModifier()\n @Input()\n public variant: ChipVariant = ChipVariant.SECONDARY;\n\n @Output()\n public remove = new EventEmitter<void>();\n\n public onClick(): void {\n this.remove.emit();\n }\n}\n","<div class=\"odx-chip__content\">\n <ng-content></ng-content>\n</div>\n<button odxButton class=\"odx-chip__action\" [size]=\"size\" [variant]=\"variant\" type=\"button\" (click)=\"onClick()\" *ngIf=\"removable\">\n <odx-icon [size]=\"size\" name=\"close\" iconSet=\"core\"></odx-icon>\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAYa,IAAA,oBAAoB,GAA1B,MAAM,oBAAoB,CAAA;AAA1B,IAAA,WAAA,GAAA;QACW,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;AAC3C,KAAA;;iHAFY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,6ECZjC,iDACA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;ADWa,oBAAoB,GAAA,UAAA,CAAA;IARhC,YAAY,CAAC,eAAe,CAAC;AAQjB,CAAA,EAAA,oBAAoB,CAEhC,CAAA;2FAFY,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,mBAAmB,EAAA,aAAA,EAEd,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,QAAA,EAAA,iDAAA,EAAA,CAAA;;;AEEL,IAAA,iBAAiB,GAAvB,MAAM,iBAAiB,CAAA;AAAvB,IAAA,WAAA,GAAA;QACW,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;AAC3C,KAAA;;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,yECZ9B,iHAEA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;ADUa,iBAAiB,GAAA,UAAA,CAAA;IAR7B,YAAY,CAAC,WAAW,CAAC;AAQb,CAAA,EAAA,iBAAiB,CAE7B,CAAA;2FAFY,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,eAAe,EAAA,aAAA,EAEV,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,QAAA,EAAA,iHAAA,EAAA,CAAA;;;AERL,MAAA,QAAQ,GAAG;AACtB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;;;ACFL,MAAA,WAAW,GAAG;AACzB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;;;ACYL,IAAA,aAAa,GAAnB,MAAM,aAAa,CAAA;AAAnB,IAAA,WAAA,GAAA;QAEW,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;QAInC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAIlB,QAAA,IAAA,CAAA,IAAI,GAAa,QAAQ,CAAC,KAAK,CAAC;AAIhC,QAAA,IAAA,CAAA,OAAO,GAAgB,WAAW,CAAC,SAAS,CAAC;AAG7C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;AAK1C,KAAA;IAHQ,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACpB;;0GArBU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,yKClB1B,6SAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDOY,UAAU,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,yGAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AASpD,UAAA,CAAA;IAAC,SAAS,CAAC,qBAAqB,CAAC;;AAER,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEzB,UAAA,CAAA;AAAC,IAAA,WAAW,EAAE;;AAEyB,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEvC,UAAA,CAAA;AAAC,IAAA,WAAW,EAAE;;AAEsC,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAdzC,aAAa,GAAA,UAAA,CAAA;IATzB,YAAY,CAAC,MAAM,CAAC;AASR,CAAA,EAAA,aAAa,CAsBzB,CAAA;2FAtBY,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,WAEX,CAAC,UAAU,EAAE,eAAe,EAAE,aAAa,CAAC,EACtC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,QAAA,EAAA,6SAAA,EAAA,CAAA;8BAQT,SAAS,EAAA,CAAA;sBADf,KAAK;gBAKC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAKC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAIC,MAAM,EAAA,CAAA;sBADZ,MAAM;;;AElCT;;AAEG;;;;"}
@@ -42,6 +42,7 @@ let DropdownDirective = class DropdownDirective {
42
42
  this.element = injectElement();
43
43
  this.disabled = false;
44
44
  this.showLoader = false;
45
+ this.clickOutsideActive = true;
45
46
  this.host = this.viewContainer;
46
47
  this.openTrigger = DEFAULT_DROPDOWN_OPEN_TRIGGERS;
47
48
  this.closeTrigger = DEFAULT_DROPDOWN_CLOSE_TRIGGERS;
@@ -111,7 +112,7 @@ let DropdownDirective = class DropdownDirective {
111
112
  }
112
113
  };
113
114
  DropdownDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
114
- DropdownDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DropdownDirective, isStandalone: true, selector: "[odxDropdown]", inputs: { content: ["odxDropdown", "content"], disabled: ["odxDropdownDisabled", "disabled"], showLoader: ["odxDropdownShowLoader", "showLoader"], options: ["odxDropdownOptions", "options"], referenceElement: ["odxDropdownReferenceElement", "referenceElement"], triggerElement: ["odxDropdownTriggerElement", "triggerElement"], host: ["odxDropdownHost", "host"], openTrigger: ["odxDropdownOpenTrigger", "openTrigger"], closeTrigger: ["odxDropdownCloseTrigger", "closeTrigger"] }, outputs: { beforeOpen: "odxDropdownBeforeOpen", afterOpen: "odxDropdownAfterOpen", beforeClose: "odxDropdownBeforeClose", afterClose: "odxDropdownAfterClose" }, host: { properties: { "attr.aria-haspopup": "true", "attr.aria-expanded": "isOpen" } }, providers: [EventManager], exportAs: ["odxDropdown"], usesOnChanges: true, ngImport: i0 });
115
+ DropdownDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DropdownDirective, isStandalone: true, selector: "[odxDropdown]", inputs: { content: ["odxDropdown", "content"], disabled: ["odxDropdownDisabled", "disabled"], showLoader: ["odxDropdownShowLoader", "showLoader"], clickOutsideActive: ["odxDropdownClickOutsideActive", "clickOutsideActive"], options: ["odxDropdownOptions", "options"], referenceElement: ["odxDropdownReferenceElement", "referenceElement"], triggerElement: ["odxDropdownTriggerElement", "triggerElement"], host: ["odxDropdownHost", "host"], openTrigger: ["odxDropdownOpenTrigger", "openTrigger"], closeTrigger: ["odxDropdownCloseTrigger", "closeTrigger"] }, outputs: { beforeOpen: "odxDropdownBeforeOpen", afterOpen: "odxDropdownAfterOpen", beforeClose: "odxDropdownBeforeClose", afterClose: "odxDropdownAfterClose" }, host: { properties: { "attr.aria-haspopup": "true", "attr.aria-expanded": "isOpen" } }, providers: [EventManager], exportAs: ["odxDropdown"], usesOnChanges: true, ngImport: i0 });
115
116
  __decorate([
116
117
  Transform(coerceBooleanProperty),
117
118
  __metadata("design:type", Object)
@@ -120,6 +121,10 @@ __decorate([
120
121
  Transform(coerceBooleanProperty),
121
122
  __metadata("design:type", Object)
122
123
  ], DropdownDirective.prototype, "showLoader", void 0);
124
+ __decorate([
125
+ Transform(coerceBooleanProperty),
126
+ __metadata("design:type", Object)
127
+ ], DropdownDirective.prototype, "clickOutsideActive", void 0);
123
128
  DropdownDirective = __decorate([
124
129
  CSSComponent('dropdown-host')
125
130
  ], DropdownDirective);
@@ -144,6 +149,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
144
149
  }], showLoader: [{
145
150
  type: Input,
146
151
  args: ['odxDropdownShowLoader']
152
+ }], clickOutsideActive: [{
153
+ type: Input,
154
+ args: ['odxDropdownClickOutsideActive']
147
155
  }], options: [{
148
156
  type: Input,
149
157
  args: ['odxDropdownOptions']
@@ -187,13 +195,13 @@ let DropdownComponent = class DropdownComponent {
187
195
  }
188
196
  };
189
197
  DropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
190
- DropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DropdownComponent, isStandalone: true, selector: "odx-dropdown", inputs: { content: "content" }, host: { listeners: { "odxDropdownClose": "onDropdownClose()" } }, ngImport: i0, template: "<div\n class=\"odx-dropdown__inner\"\n [odxLoadingSpinner]=\"host.showLoader\"\n [odxClickOutsideActive]=\"true\"\n (odxClickOutside)=\"host.close()\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <ng-template [odxDynamicView]=\"content\" [odxDynamicViewInjector]=\"injector\"></ng-template>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.ClickOutsideDirective, selector: "[odxClickOutside]", inputs: ["odxClickOutsideActive"], outputs: ["odxClickOutside"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "ngmodule", type: LoadingSpinnerModule }, { kind: "directive", type: i2.LoadingSpinnerDirective, selector: "[odxLoadingSpinner]", inputs: ["odxLoadingSpinnerAutoColor", "odxLoadingSpinner", "odxLoadingSpinnerMinHeight"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
198
+ DropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DropdownComponent, isStandalone: true, selector: "odx-dropdown", inputs: { content: "content" }, host: { listeners: { "odxDropdownClose": "onDropdownClose()" } }, ngImport: i0, template: "<div\n class=\"odx-dropdown__inner\"\n [odxLoadingSpinner]=\"host.showLoader\"\n [odxClickOutsideActive]=\"host.clickOutsideActive\"\n (odxClickOutside)=\"host.close()\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <ng-template [odxDynamicView]=\"content\" [odxDynamicViewInjector]=\"injector\"></ng-template>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.ClickOutsideDirective, selector: "[odxClickOutside]", inputs: ["odxClickOutsideActive"], outputs: ["odxClickOutside"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "ngmodule", type: LoadingSpinnerModule }, { kind: "directive", type: i2.LoadingSpinnerDirective, selector: "[odxLoadingSpinner]", inputs: ["odxLoadingSpinnerAutoColor", "odxLoadingSpinner", "odxLoadingSpinnerMinHeight"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
191
199
  DropdownComponent = __decorate([
192
200
  CSSComponent('dropdown')
193
201
  ], DropdownComponent);
194
202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DropdownComponent, decorators: [{
195
203
  type: Component,
196
- args: [{ standalone: true, selector: 'odx-dropdown', imports: [CoreModule, DynamicViewDirective, LoadingSpinnerModule, A11yModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"odx-dropdown__inner\"\n [odxLoadingSpinner]=\"host.showLoader\"\n [odxClickOutsideActive]=\"true\"\n (odxClickOutside)=\"host.close()\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <ng-template [odxDynamicView]=\"content\" [odxDynamicViewInjector]=\"injector\"></ng-template>\n</div>\n" }]
204
+ args: [{ standalone: true, selector: 'odx-dropdown', imports: [CoreModule, DynamicViewDirective, LoadingSpinnerModule, A11yModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"odx-dropdown__inner\"\n [odxLoadingSpinner]=\"host.showLoader\"\n [odxClickOutsideActive]=\"host.clickOutsideActive\"\n (odxClickOutside)=\"host.close()\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <ng-template [odxDynamicView]=\"content\" [odxDynamicViewInjector]=\"injector\"></ng-template>\n</div>\n" }]
197
205
  }], propDecorators: { content: [{
198
206
  type: Input
199
207
  }], onDropdownClose: [{
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-dropdown.mjs","sources":["../../../../libs/angular/components/dropdown/src/lib/models/close-dropdown-event.ts","../../../../libs/angular/components/dropdown/src/lib/models/dropdown-options.ts","../../../../libs/angular/components/dropdown/src/lib/dropdown.directive.ts","../../../../libs/angular/components/dropdown/src/lib/dropdown.component.ts","../../../../libs/angular/components/dropdown/src/lib/dropdown.component.html","../../../../libs/angular/components/dropdown/src/lib/dropdown.module.ts","../../../../libs/angular/components/dropdown/src/lib/helpers/close-current-dropdown.ts","../../../../libs/angular/components/dropdown/src/odx-angular-components-dropdown.ts"],"sourcesContent":["export class CloseDropdownEvent extends Event {\n public static readonly TYPE = 'odxDropdownClose';\n\n constructor() {\n super(CloseDropdownEvent.TYPE, { bubbles: true });\n }\n}\n","import { ConnectedOverlayOptions } from '@odx/angular/cdk/connected-overlay';\n\nexport type DropdownOptions = Pick<\n ConnectedOverlayOptions,\n 'position' | 'containerClass' | 'enableFallback' | 'matchReferenceWidth' | 'minHeight' | 'offset' | 'showArrow' | 'outerPadding'\n>;\n\nexport const DefaultDropdownOptions: DropdownOptions = {\n position: 'bottom',\n matchReferenceWidth: false,\n enableFallback: true,\n minHeight: 0,\n offset: 6,\n outerPadding: 12,\n};\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, ChangeDetectorRef, Directive, EventEmitter, inject, Input, OnChanges, OnDestroy, Output, ViewContainerRef } from '@angular/core';\nimport { ConnectedOverlayOptions, ConnectedOverlayRef, ConnectedOverlayService } from '@odx/angular/cdk/connected-overlay';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { EventManager, getInjector, hasChanged, injectElement, NgChanges, Transform } from '@odx/angular/utils';\nimport { DropdownComponent } from './dropdown.component';\nimport { DefaultDropdownOptions, DropdownOptions } from './models';\n\nexport const DEFAULT_DROPDOWN_OPEN_TRIGGERS = ['click', 'keydown.enter'];\nexport const DEFAULT_DROPDOWN_CLOSE_TRIGGERS = ['keyup.esc'];\n\n@CSSComponent('dropdown-host')\n@Directive({\n standalone: true,\n selector: '[odxDropdown]',\n exportAs: 'odxDropdown',\n providers: [EventManager],\n host: {\n '[attr.aria-haspopup]': 'true',\n '[attr.aria-expanded]': 'isOpen',\n },\n})\nexport class DropdownDirective implements AfterViewInit, OnChanges, OnDestroy {\n public static ngAcceptInputType_disabled: BooleanInput;\n public static ngAcceptInputType_loading: BooleanInput;\n\n private readonly changeDetector = inject(ChangeDetectorRef);\n private readonly connectedOverlayService = inject(ConnectedOverlayService);\n private readonly eventManager = inject(EventManager);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly injector = getInjector();\n private overlayRef: ConnectedOverlayRef | null = null;\n\n public readonly element = injectElement();\n\n public get isOpen(): boolean {\n return this.overlayRef !== null;\n }\n\n @Input('odxDropdown')\n public content?: DynamicContent | null;\n\n @Transform(coerceBooleanProperty)\n @Input('odxDropdownDisabled')\n public disabled = false;\n\n @Transform(coerceBooleanProperty)\n @Input('odxDropdownShowLoader')\n public showLoader = false;\n\n @Input('odxDropdownOptions')\n public options?: Partial<DropdownOptions> | null;\n\n @Input('odxDropdownReferenceElement')\n public referenceElement?: HTMLElement | null;\n\n @Input('odxDropdownTriggerElement')\n public triggerElement?: HTMLElement | null;\n\n @Input('odxDropdownHost')\n public host?: HTMLElement | ViewContainerRef | null = this.viewContainer;\n\n @Input('odxDropdownOpenTrigger')\n public openTrigger?: string[] | null = DEFAULT_DROPDOWN_OPEN_TRIGGERS;\n\n @Input('odxDropdownCloseTrigger')\n public closeTrigger?: string[] | null = DEFAULT_DROPDOWN_CLOSE_TRIGGERS;\n\n @Output('odxDropdownBeforeOpen')\n public beforeOpen = new EventEmitter<void>();\n\n @Output('odxDropdownAfterOpen')\n public afterOpen = new EventEmitter<void>();\n\n @Output('odxDropdownBeforeClose')\n public beforeClose = new EventEmitter<void>();\n\n @Output('odxDropdownAfterClose')\n public afterClose = new EventEmitter<void>();\n\n public ngAfterViewInit(): void {\n this.eventManager.register(this.openTrigger ?? [], (event) => this.toggle(event), this.triggerElement ?? this.referenceElement);\n this.eventManager.register(this.closeTrigger ?? [], () => this.close(), 'document');\n }\n\n public ngOnDestroy(): void {\n this.close();\n }\n\n public ngOnChanges(changes: NgChanges<DropdownDirective>) {\n if (hasChanged(changes, 'disabled') && this.disabled) {\n this.close();\n }\n if (hasChanged(changes, ['options', 'content', 'showLoader'])) {\n this.overlayRef?.update(this.createOverlayOptions());\n }\n }\n\n public toggle(event?: Event): void {\n if (this.isOpen) {\n this.close(event);\n } else {\n this.open(event);\n }\n }\n\n public open(event?: Event) {\n event?.preventDefault();\n if (this.isOpen || !this.content || this.disabled) return;\n this.overlayRef = this.connectedOverlayService.createOverlay(this.referenceElement ?? this.element.nativeElement, this.createOverlayOptions(), {\n host: this.referenceElement || this.host,\n injector: this.injector,\n });\n this.changeDetector.markForCheck();\n }\n\n public close(event?: Event) {\n event?.preventDefault();\n this.overlayRef?.close();\n this.overlayRef = null;\n this.changeDetector.markForCheck();\n }\n\n private createOverlayOptions(): Partial<ConnectedOverlayOptions> {\n const containerClass = ['odx-dropdown-overlay', this.options?.containerClass].filter(Boolean).join(' ');\n return {\n ...DefaultDropdownOptions,\n ...this.options,\n fallbackAxisSideDirection: 'end',\n containerClass,\n content: DropdownComponent,\n context: { content: this.content },\n hooks: {\n beforeOpen: () => this.beforeOpen.emit(),\n afterOpen: () => this.afterOpen.emit(),\n beforeClose: () => this.beforeClose.emit(),\n afterClose: () => this.afterClose.emit(),\n },\n };\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { A11yModule } from '@odx/angular/cdk/a11y';\nimport { DynamicContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { getInjector, injectElement } from '@odx/angular/utils';\nimport { DropdownDirective } from './dropdown.directive';\nimport { CloseDropdownEvent } from './models';\n\n@CSSComponent('dropdown')\n@Component({\n standalone: true,\n selector: 'odx-dropdown',\n imports: [CoreModule, DynamicViewDirective, LoadingSpinnerModule, A11yModule],\n templateUrl: './dropdown.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownComponent {\n protected readonly host = inject(DropdownDirective);\n protected readonly injector = getInjector();\n public readonly element = injectElement();\n\n @Input()\n public content?: DynamicContent | null;\n\n @HostListener(CloseDropdownEvent.TYPE)\n protected onDropdownClose(): void {\n this.host.close();\n }\n}\n","<div\n class=\"odx-dropdown__inner\"\n [odxLoadingSpinner]=\"host.showLoader\"\n [odxClickOutsideActive]=\"true\"\n (odxClickOutside)=\"host.close()\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <ng-template [odxDynamicView]=\"content\" [odxDynamicViewInjector]=\"injector\"></ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DropdownDirective } from './dropdown.directive';\n\nconst modules = [DropdownDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class DropdownModule {}\n","import { CloseDropdownEvent } from '../models';\n\nexport function closeCurrentDropdown(target: Element): void {\n target.dispatchEvent(new CloseDropdownEvent());\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAM,MAAO,kBAAmB,SAAQ,KAAK,CAAA;AAG3C,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;KACnD;;AAJsB,kBAAI,CAAA,IAAA,GAAG,kBAAkB;;ACMrC,MAAA,sBAAsB,GAAoB;AACrD,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,mBAAmB,EAAE,KAAK;AAC1B,IAAA,cAAc,EAAE,IAAI;AACpB,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,YAAY,EAAE,EAAE;;;MCJL,8BAA8B,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE;AAC5D,MAAA,+BAA+B,GAAG,CAAC,WAAW,EAAE;AAahD,IAAA,iBAAiB,GAAvB,MAAM,iBAAiB,CAAA;AAAvB,IAAA,WAAA,GAAA;AAIY,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACzC,IAAQ,CAAA,QAAA,GAAG,WAAW,EAAE,CAAC;QAClC,IAAU,CAAA,UAAA,GAA+B,IAAI,CAAC;QAEtC,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;QAWnC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAIjB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAYnB,QAAA,IAAA,CAAA,IAAI,GAA2C,IAAI,CAAC,aAAa,CAAC;QAGlE,IAAW,CAAA,WAAA,GAAqB,8BAA8B,CAAC;QAG/D,IAAY,CAAA,YAAA,GAAqB,+BAA+B,CAAC;AAGjE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;AAGtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;AAGrC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;AAGvC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;AA8D9C,KAAA;AAzGC,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;KACjC;IA2CM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;KACrF;IAEM,WAAW,GAAA;QAChB,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;AAEM,IAAA,WAAW,CAAC,OAAqC,EAAA;QACtD,IAAI,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpD,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;AACD,QAAA,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE;YAC7D,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACtD,SAAA;KACF;AAEM,IAAA,MAAM,CAAC,KAAa,EAAA;QACzB,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClB,SAAA;KACF;AAEM,IAAA,IAAI,CAAC,KAAa,EAAA;QACvB,KAAK,EAAE,cAAc,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC7I,YAAA,IAAI,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI;YACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;AAEM,IAAA,KAAK,CAAC,KAAa,EAAA;QACxB,KAAK,EAAE,cAAc,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAEO,oBAAoB,GAAA;QAC1B,MAAM,cAAc,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxG,OAAO;AACL,YAAA,GAAG,sBAAsB;YACzB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,yBAAyB,EAAE,KAAK;YAChC,cAAc;AACd,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AAClC,YAAA,KAAK,EAAE;gBACL,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;gBACxC,SAAS,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;gBACtC,WAAW,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;gBAC1C,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACzC,aAAA;SACF,CAAC;KACH;;8GArHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,SAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,6BAAA,EAAA,kBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,2BAAA,EAAA,gBAAA,CAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,EAAA,WAAA,EAAA,CAAA,wBAAA,EAAA,aAAA,CAAA,EAAA,YAAA,EAAA,CAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,SAAA,EANjB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AA0BzB,UAAA,CAAA;IAAC,SAAS,CAAC,qBAAqB,CAAC;;AAET,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAExB,UAAA,CAAA;IAAC,SAAS,CAAC,qBAAqB,CAAC;;AAEP,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AA1Bf,iBAAiB,GAAA,UAAA,CAAA;IAX7B,YAAY,CAAC,eAAe,CAAC;AAWjB,CAAA,EAAA,iBAAiB,CAsH7B,CAAA;2FAtHY,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,aAAa;oBACvB,SAAS,EAAE,CAAC,YAAY,CAAC;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,MAAM;AAC9B,wBAAA,sBAAsB,EAAE,QAAQ;AACjC,qBAAA;AACF,iBAAA,CAAA;8BAmBQ,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,aAAa,CAAA;gBAKb,QAAQ,EAAA,CAAA;sBADd,KAAK;uBAAC,qBAAqB,CAAA;gBAKrB,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,uBAAuB,CAAA;gBAIvB,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,oBAAoB,CAAA;gBAIpB,gBAAgB,EAAA,CAAA;sBADtB,KAAK;uBAAC,6BAA6B,CAAA;gBAI7B,cAAc,EAAA,CAAA;sBADpB,KAAK;uBAAC,2BAA2B,CAAA;gBAI3B,IAAI,EAAA,CAAA;sBADV,KAAK;uBAAC,iBAAiB,CAAA;gBAIjB,WAAW,EAAA,CAAA;sBADjB,KAAK;uBAAC,wBAAwB,CAAA;gBAIxB,YAAY,EAAA,CAAA;sBADlB,KAAK;uBAAC,yBAAyB,CAAA;gBAIzB,UAAU,EAAA,CAAA;sBADhB,MAAM;uBAAC,uBAAuB,CAAA;gBAIxB,SAAS,EAAA,CAAA;sBADf,MAAM;uBAAC,sBAAsB,CAAA;gBAIvB,WAAW,EAAA,CAAA;sBADjB,MAAM;uBAAC,wBAAwB,CAAA;gBAIzB,UAAU,EAAA,CAAA;sBADhB,MAAM;uBAAC,uBAAuB,CAAA;;;AC3DpB,IAAA,iBAAiB,GAAvB,MAAM,iBAAiB,CAAA;AAAvB,IAAA,WAAA,GAAA;AACc,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACjC,IAAQ,CAAA,QAAA,GAAG,WAAW,EAAE,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;AAS3C,KAAA;IAHW,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACnB;;8GAXU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB9B,sTAUA,EDIY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,sLAAE,oBAAoB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,wBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,EAAA,mBAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAKjE,iBAAiB,GAAA,UAAA,CAAA;IAT7B,YAAY,CAAC,UAAU,CAAC;AASZ,CAAA,EAAA,iBAAiB,CAY7B,CAAA;2FAZY,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,cAAc,EAAA,OAAA,EACf,CAAC,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,CAAC,iBAE9D,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,sTAAA,EAAA,CAAA;8BAQxC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAII,eAAe,EAAA,CAAA;sBADxB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,CAAC,IAAI,CAAA;;;AEvBvC,MAAM,OAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC;MAMvB,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EANV,OAAA,EAAA,CAAA,iBAAiB,CAItB,EAAA,OAAA,EAAA,CAAA,UAAU,EAJL,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAMrB,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAFf,UAAU,CAAA,EAAA,CAAA,CAAA;2FAET,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC;AAClC,iBAAA,CAAA;;;ACPK,SAAU,oBAAoB,CAAC,MAAe,EAAA;AAClD,IAAA,MAAM,CAAC,aAAa,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;AACjD;;ACJA;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-components-dropdown.mjs","sources":["../../../../libs/angular/components/dropdown/src/lib/models/close-dropdown-event.ts","../../../../libs/angular/components/dropdown/src/lib/models/dropdown-options.ts","../../../../libs/angular/components/dropdown/src/lib/dropdown.directive.ts","../../../../libs/angular/components/dropdown/src/lib/dropdown.component.ts","../../../../libs/angular/components/dropdown/src/lib/dropdown.component.html","../../../../libs/angular/components/dropdown/src/lib/dropdown.module.ts","../../../../libs/angular/components/dropdown/src/lib/helpers/close-current-dropdown.ts","../../../../libs/angular/components/dropdown/src/odx-angular-components-dropdown.ts"],"sourcesContent":["export class CloseDropdownEvent extends Event {\n public static readonly TYPE = 'odxDropdownClose';\n\n constructor() {\n super(CloseDropdownEvent.TYPE, { bubbles: true });\n }\n}\n","import { ConnectedOverlayOptions } from '@odx/angular/cdk/connected-overlay';\n\nexport type DropdownOptions = Pick<\n ConnectedOverlayOptions,\n 'position' | 'containerClass' | 'enableFallback' | 'matchReferenceWidth' | 'minHeight' | 'offset' | 'showArrow' | 'outerPadding'\n>;\n\nexport const DefaultDropdownOptions: DropdownOptions = {\n position: 'bottom',\n matchReferenceWidth: false,\n enableFallback: true,\n minHeight: 0,\n offset: 6,\n outerPadding: 12,\n};\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, ChangeDetectorRef, Directive, EventEmitter, inject, Input, OnChanges, OnDestroy, Output, ViewContainerRef } from '@angular/core';\nimport { ConnectedOverlayOptions, ConnectedOverlayRef, ConnectedOverlayService } from '@odx/angular/cdk/connected-overlay';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { EventManager, getInjector, hasChanged, injectElement, NgChanges, Transform } from '@odx/angular/utils';\nimport { DropdownComponent } from './dropdown.component';\nimport { DefaultDropdownOptions, DropdownOptions } from './models';\n\nexport const DEFAULT_DROPDOWN_OPEN_TRIGGERS = ['click', 'keydown.enter'];\nexport const DEFAULT_DROPDOWN_CLOSE_TRIGGERS = ['keyup.esc'];\n\n@CSSComponent('dropdown-host')\n@Directive({\n standalone: true,\n selector: '[odxDropdown]',\n exportAs: 'odxDropdown',\n providers: [EventManager],\n host: {\n '[attr.aria-haspopup]': 'true',\n '[attr.aria-expanded]': 'isOpen',\n },\n})\nexport class DropdownDirective implements AfterViewInit, OnChanges, OnDestroy {\n public static ngAcceptInputType_disabled: BooleanInput;\n public static ngAcceptInputType_loading: BooleanInput;\n\n private readonly changeDetector = inject(ChangeDetectorRef);\n private readonly connectedOverlayService = inject(ConnectedOverlayService);\n private readonly eventManager = inject(EventManager);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly injector = getInjector();\n private overlayRef: ConnectedOverlayRef | null = null;\n\n public readonly element = injectElement();\n\n public get isOpen(): boolean {\n return this.overlayRef !== null;\n }\n\n @Input('odxDropdown')\n public content?: DynamicContent | null;\n\n @Transform(coerceBooleanProperty)\n @Input('odxDropdownDisabled')\n public disabled = false;\n\n @Transform(coerceBooleanProperty)\n @Input('odxDropdownShowLoader')\n public showLoader = false;\n\n @Transform(coerceBooleanProperty)\n @Input('odxDropdownClickOutsideActive')\n public clickOutsideActive = true;\n\n @Input('odxDropdownOptions')\n public options?: Partial<DropdownOptions> | null;\n\n @Input('odxDropdownReferenceElement')\n public referenceElement?: HTMLElement | null;\n\n @Input('odxDropdownTriggerElement')\n public triggerElement?: HTMLElement | null;\n\n @Input('odxDropdownHost')\n public host?: HTMLElement | ViewContainerRef | null = this.viewContainer;\n\n @Input('odxDropdownOpenTrigger')\n public openTrigger?: string[] | null = DEFAULT_DROPDOWN_OPEN_TRIGGERS;\n\n @Input('odxDropdownCloseTrigger')\n public closeTrigger?: string[] | null = DEFAULT_DROPDOWN_CLOSE_TRIGGERS;\n\n @Output('odxDropdownBeforeOpen')\n public beforeOpen = new EventEmitter<void>();\n\n @Output('odxDropdownAfterOpen')\n public afterOpen = new EventEmitter<void>();\n\n @Output('odxDropdownBeforeClose')\n public beforeClose = new EventEmitter<void>();\n\n @Output('odxDropdownAfterClose')\n public afterClose = new EventEmitter<void>();\n\n public ngAfterViewInit(): void {\n this.eventManager.register(this.openTrigger ?? [], (event) => this.toggle(event), this.triggerElement ?? this.referenceElement);\n this.eventManager.register(this.closeTrigger ?? [], () => this.close(), 'document');\n }\n\n public ngOnDestroy(): void {\n this.close();\n }\n\n public ngOnChanges(changes: NgChanges<DropdownDirective>) {\n if (hasChanged(changes, 'disabled') && this.disabled) {\n this.close();\n }\n if (hasChanged(changes, ['options', 'content', 'showLoader'])) {\n this.overlayRef?.update(this.createOverlayOptions());\n }\n }\n\n public toggle(event?: Event): void {\n if (this.isOpen) {\n this.close(event);\n } else {\n this.open(event);\n }\n }\n\n public open(event?: Event) {\n event?.preventDefault();\n if (this.isOpen || !this.content || this.disabled) return;\n this.overlayRef = this.connectedOverlayService.createOverlay(this.referenceElement ?? this.element.nativeElement, this.createOverlayOptions(), {\n host: this.referenceElement || this.host,\n injector: this.injector,\n });\n this.changeDetector.markForCheck();\n }\n\n public close(event?: Event) {\n event?.preventDefault();\n this.overlayRef?.close();\n this.overlayRef = null;\n this.changeDetector.markForCheck();\n }\n\n private createOverlayOptions(): Partial<ConnectedOverlayOptions> {\n const containerClass = ['odx-dropdown-overlay', this.options?.containerClass].filter(Boolean).join(' ');\n return {\n ...DefaultDropdownOptions,\n ...this.options,\n fallbackAxisSideDirection: 'end',\n containerClass,\n content: DropdownComponent,\n context: { content: this.content },\n hooks: {\n beforeOpen: () => this.beforeOpen.emit(),\n afterOpen: () => this.afterOpen.emit(),\n beforeClose: () => this.beforeClose.emit(),\n afterClose: () => this.afterClose.emit(),\n },\n };\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { A11yModule } from '@odx/angular/cdk/a11y';\nimport { DynamicContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { getInjector, injectElement } from '@odx/angular/utils';\nimport { DropdownDirective } from './dropdown.directive';\nimport { CloseDropdownEvent } from './models';\n\n@CSSComponent('dropdown')\n@Component({\n standalone: true,\n selector: 'odx-dropdown',\n imports: [CoreModule, DynamicViewDirective, LoadingSpinnerModule, A11yModule],\n templateUrl: './dropdown.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownComponent {\n protected readonly host = inject(DropdownDirective);\n protected readonly injector = getInjector();\n public readonly element = injectElement();\n\n @Input()\n public content?: DynamicContent | null;\n\n @HostListener(CloseDropdownEvent.TYPE)\n protected onDropdownClose(): void {\n this.host.close();\n }\n}\n","<div\n class=\"odx-dropdown__inner\"\n [odxLoadingSpinner]=\"host.showLoader\"\n [odxClickOutsideActive]=\"host.clickOutsideActive\"\n (odxClickOutside)=\"host.close()\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <ng-template [odxDynamicView]=\"content\" [odxDynamicViewInjector]=\"injector\"></ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DropdownDirective } from './dropdown.directive';\n\nconst modules = [DropdownDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class DropdownModule {}\n","import { CloseDropdownEvent } from '../models';\n\nexport function closeCurrentDropdown(target: Element): void {\n target.dispatchEvent(new CloseDropdownEvent());\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -284,13 +284,13 @@ let FormGroupComponent = class FormGroupComponent {
284
284
  }
285
285
  };
286
286
  FormGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
287
- FormGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FormGroupComponent, isStandalone: true, selector: "odx-form-group", providers: [FormFieldService], queries: [{ propertyName: "formFieldErrorServices", predicate: FormFieldErrorService }], ngImport: i0, template: "<div class=\"odx-form-group__content\" odxLayout=\"grid auto vertical-end\">\n <ng-content select=\"odx-form-field\"> </ng-content>\n</div>\n<odx-form-field-info [error]=\"error$ | async\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n</odx-form-field-info>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldInfoComponent, selector: "odx-form-field-info", inputs: ["error"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
287
+ FormGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FormGroupComponent, isStandalone: true, selector: "odx-form-group", providers: [FormFieldService], queries: [{ propertyName: "formFieldErrorServices", predicate: FormFieldErrorService }], ngImport: i0, template: "<div class=\"odx-form-group__content\" odxLayout=\"grid\">\n <ng-content select=\"odx-form-field\"> </ng-content>\n</div>\n<odx-form-field-info [error]=\"error$ | async\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n</odx-form-field-info>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldInfoComponent, selector: "odx-form-field-info", inputs: ["error"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
288
288
  FormGroupComponent = __decorate([
289
289
  CSSComponent('form-group')
290
290
  ], FormGroupComponent);
291
291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormGroupComponent, decorators: [{
292
292
  type: Component,
293
- args: [{ standalone: true, selector: 'odx-form-group', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CoreModule, FormFieldInfoComponent], providers: [FormFieldService], template: "<div class=\"odx-form-group__content\" odxLayout=\"grid auto vertical-end\">\n <ng-content select=\"odx-form-field\"> </ng-content>\n</div>\n<odx-form-field-info [error]=\"error$ | async\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n</odx-form-field-info>\n" }]
293
+ args: [{ standalone: true, selector: 'odx-form-group', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CoreModule, FormFieldInfoComponent], providers: [FormFieldService], template: "<div class=\"odx-form-group__content\" odxLayout=\"grid\">\n <ng-content select=\"odx-form-field\"> </ng-content>\n</div>\n<odx-form-field-info [error]=\"error$ | async\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n</odx-form-field-info>\n" }]
294
294
  }], propDecorators: { formFieldErrorServices: [{
295
295
  type: ContentChildren,
296
296
  args: [FormFieldErrorService, { descendants: false }]
@@ -299,6 +299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
299
299
  const FormFieldVariant = {
300
300
  FULL: 'full',
301
301
  SIMPLE: 'simple',
302
+ HORIZONTAL: 'horizontal',
302
303
  };
303
304
 
304
305
  let FormFieldComponent = class FormFieldComponent {
@@ -328,7 +329,7 @@ let FormFieldComponent = class FormFieldComponent {
328
329
  }
329
330
  };
330
331
  FormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
331
- FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FormFieldComponent, isStandalone: true, selector: "odx-form-field", inputs: { label: "label", hasWarning: "hasWarning", variant: "variant" }, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], queries: [{ propertyName: "labelDirective", first: true, predicate: FormFieldLabelDirective, descendants: true }], ngImport: i0, template: "<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldInfoComponent, selector: "odx-form-field-info", inputs: ["error"] }, { kind: "directive", type: FormFieldLabelDirective, selector: "odx-form-field-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
332
+ FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FormFieldComponent, isStandalone: true, selector: "odx-form-field", inputs: { label: "label", hasWarning: "hasWarning", variant: "variant" }, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], queries: [{ propertyName: "labelDirective", first: true, predicate: FormFieldLabelDirective, descendants: true }], ngImport: i0, template: "<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <ng-container *ngIf=\"label; else labelTemplate\">\n <odx-form-field-label>{{ label }}</odx-form-field-label>\n <span class=\"odx-form-field__label-is-required\" *ngIf=\"formFieldService.isRequired$ | async\">*</span>\n </ng-container>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n <span class=\"odx-form-field__label-is-required\" *ngIf=\"formFieldService.isRequired$ | async\">*</span>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldInfoComponent, selector: "odx-form-field-info", inputs: ["error"] }, { kind: "directive", type: FormFieldLabelDirective, selector: "odx-form-field-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
332
333
  __decorate([
333
334
  CSSModifier(),
334
335
  __metadata("design:type", Object)
@@ -339,7 +340,7 @@ FormFieldComponent = __decorate([
339
340
  ], FormFieldComponent);
340
341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormFieldComponent, decorators: [{
341
342
  type: Component,
342
- args: [{ standalone: true, selector: 'odx-form-field', imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], template: "<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n" }]
343
+ args: [{ standalone: true, selector: 'odx-form-field', imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], template: "<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <ng-container *ngIf=\"label; else labelTemplate\">\n <odx-form-field-label>{{ label }}</odx-form-field-label>\n <span class=\"odx-form-field__label-is-required\" *ngIf=\"formFieldService.isRequired$ | async\">*</span>\n </ng-container>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n <span class=\"odx-form-field__label-is-required\" *ngIf=\"formFieldService.isRequired$ | async\">*</span>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n" }]
343
344
  }], ctorParameters: function () { return []; }, propDecorators: { labelDirective: [{
344
345
  type: ContentChild,
345
346
  args: [FormFieldLabelDirective]
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-form-field.mjs","sources":["../../../../libs/angular/components/form-field/src/lib/form-field.config.ts","../../../../libs/angular/components/form-field/src/lib/form-field.service.ts","../../../../libs/angular/components/form-field/src/lib/services/form-field-error.service.ts","../../../../libs/angular/components/form-field/src/lib/directives/form.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-control.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-error.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-hint.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-label.directive.ts","../../../../libs/angular/components/form-field/src/lib/components/form-field-info/form-field-info.component.ts","../../../../libs/angular/components/form-field/src/lib/components/form-field-info/form-field-info.component.html","../../../../libs/angular/components/form-field/src/lib/components/form-group/form-group.component.ts","../../../../libs/angular/components/form-field/src/lib/components/form-group/form-group.component.html","../../../../libs/angular/components/form-field/src/lib/models/form-field-variant.ts","../../../../libs/angular/components/form-field/src/lib/form-field.component.ts","../../../../libs/angular/components/form-field/src/lib/form-field.component.html","../../../../libs/angular/components/form-field/src/lib/form-field.module.ts","../../../../libs/angular/components/form-field/src/odx-angular-components-form-field.ts"],"sourcesContent":["import { createConfigTokens } from '@odx/angular/utils';\nimport { FormFieldErrorResolvers } from './models';\n\nexport interface FormFieldConfig {\n /**\n * Object of error resolvers used to resolve error messages globally\n * @default {}\n */\n errors: FormFieldErrorResolvers;\n /**\n * Detect form field control changes on `blur` and/or `change`\n * @default ['blur']\n */\n updateOn: Array<'blur' | 'change'>;\n ignoreErrors: string[];\n}\n\nexport const { FormFieldDefaultConfig, FormFieldConfig, injectFormFieldConfig, provideFormFieldConfig } = createConfigTokens(\n 'FormField',\n '@odx/angular/components/form-field',\n {\n errors: {},\n ignoreErrors: [],\n updateOn: ['blur'],\n } as FormFieldConfig\n);\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { AbstractControl, Validators } from '@angular/forms';\nimport { Controller, DisabledController, ReadonlyController } from '@odx/angular';\nimport { getUniqueId } from '@odx/angular/utils';\nimport { BehaviorSubject, EMPTY, Observable, distinctUntilChanged, map, merge, of, shareReplay, startWith, switchMap, tap } from 'rxjs';\n\ninterface FieldControl {\n control: AbstractControl;\n nativeElement: HTMLElement;\n}\n\n@Injectable()\nexport class FormFieldService extends Controller implements OnDestroy {\n private readonly disabledController = DisabledController.inject();\n private readonly readonlyController = ReadonlyController.inject();\n private readonly control$$ = new BehaviorSubject<FieldControl | null>(null);\n\n public readonly control$ = this.control$$.pipe(shareReplay({ refCount: true }));\n public readonly controlId$ = this.control$.pipe(\n map((control) => (control ? control.nativeElement.id || getUniqueId('odx-form-field') : null)),\n shareReplay({ refCount: true })\n );\n public readonly controlHintId$ = this.controlId$.pipe(\n map((id) => (id ? `${id}-hint` : null)),\n shareReplay({ refCount: true })\n );\n public readonly controlErrorId$ = this.controlId$.pipe(\n map((id) => (id ? `${id}-error` : null)),\n shareReplay({ refCount: true })\n );\n public readonly isDisabled$ = this.control$.pipe(\n switchMap((control) => (control ? merge(this.updateControlDisabledState(control), this.getControlDisabledState(control)) : of(false))),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n public readonly isRequired$ = this.control$.pipe(\n map((control) => (control ? control.nativeElement.hasAttribute('required') || control.control.hasValidator(Validators.required) : false)),\n shareReplay({ refCount: true })\n );\n public readonly isReadonly$ = this.control$.pipe(\n switchMap((control) => (control && this.readonlyController ? this.readonlyController.isReadonly$ : of(false)))\n );\n\n public override ngOnDestroy(): void {\n this.control$$.complete();\n super.ngOnDestroy();\n }\n\n public registerControl(control: AbstractControl, { nativeElement }: ElementRef<HTMLElement>): void {\n this.control$$.next({ control, nativeElement });\n }\n\n public removeControl(): void {\n this.control$$.next(null);\n }\n\n private updateControlDisabledState({ control }: FieldControl): Observable<boolean> {\n if (this.disabledController) {\n return this.disabledController.isDisabled$.pipe(\n tap((state) => {\n if (state) {\n control.disable();\n } else {\n control.enable();\n }\n })\n );\n }\n return EMPTY;\n }\n\n private getControlDisabledState({ control }: FieldControl): Observable<boolean> {\n return control.statusChanges.pipe(\n startWith(control.status),\n map((status) => status === 'DISABLED'),\n distinctUntilChanged()\n );\n }\n}\n","import { Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { isTemplateRef } from '@odx/angular/utils';\nimport { BehaviorSubject, combineLatest, distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { injectFormFieldConfig } from '../form-field.config';\nimport { FormFieldError } from '../models';\n\nconst DEFAULT_CUSTOM_FORM_FIELD_ERROR = '@odx/angular/form-field/default-error';\nconst DEFAULT_ERROR_RESOLVER = () => '';\n\ninterface NgFormFieldError {\n key: string;\n context: unknown;\n}\n\ntype CustomFormFieldErrors = Record<string, TemplateRef<unknown>>;\n\n@Injectable()\nexport class FormFieldErrorService implements OnDestroy {\n private readonly config = injectFormFieldConfig();\n private readonly fieldError$$ = new BehaviorSubject<NgFormFieldError | null>(null);\n private readonly customErrors$$ = new BehaviorSubject<CustomFormFieldErrors>({});\n\n public readonly error$ = combineLatest([this.fieldError$$, this.customErrors$$]).pipe(\n map(([error, customErrors]) => this.resolveError(error, customErrors)),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n public readonly hasError$ = this.error$.pipe(map((error) => error !== null));\n\n public get hasError(): boolean {\n return this.fieldError$$.getValue() !== null;\n }\n\n public ngOnDestroy(): void {\n this.fieldError$$.next(null);\n this.customErrors$$.next({});\n this.fieldError$$.complete();\n this.customErrors$$.complete();\n }\n\n public setError(errors?: ValidationErrors | null): void {\n this.fieldError$$.next(this.getFirstError(errors ?? {}));\n }\n\n public registerCustomError(key: string | undefined, template: TemplateRef<unknown>): void {\n this.customErrors$$.next({ ...this.customErrors$$.getValue(), [key || DEFAULT_CUSTOM_FORM_FIELD_ERROR]: template });\n }\n\n private getFirstError(errors: ValidationErrors): NgFormFieldError | null {\n const [key, context] = Object.entries(errors ?? {}).find(([errorKey]) => !this.config.ignoreErrors.includes(errorKey)) ?? [];\n\n return key ? { key, context } : null;\n }\n\n private resolveError(error: NgFormFieldError | null, customErrors: CustomFormFieldErrors): FormFieldError | null {\n if (!error) return null;\n const { key, context } = error;\n const message = customErrors[key] ?? customErrors[DEFAULT_CUSTOM_FORM_FIELD_ERROR];\n if (isTemplateRef(message)) {\n return {\n key,\n message,\n context: { $implicit: context },\n };\n }\n\n const getMessage = this.config.errors[key] ?? DEFAULT_ERROR_RESOLVER;\n return { key, message: getMessage(context) };\n }\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { fromEvent, share } from 'rxjs';\n\n@CSSComponent('form')\n@Directive({\n standalone: true,\n selector: 'form[odxForm]',\n})\nexport class FormDirective {\n private readonly takeUntilDestroyed = untilDestroyed();\n\n public readonly element = injectElement<HTMLFormElement>();\n public readonly submit$ = fromEvent<Event>(this.element.nativeElement, 'submit').pipe(this.takeUntilDestroyed(), share());\n public readonly reset$ = fromEvent<Event>(this.element.nativeElement, 'reset').pipe(this.takeUntilDestroyed(), share());\n}\n","import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl, NgControl } from '@angular/forms';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { booleanToOptionalAttributeString, injectElement, reactiveAttributeBinding, untilDestroyed } from '@odx/angular/utils';\nimport { EMPTY, fromEvent, map, merge, NEVER, Observable, of, startWith, switchMap, tap } from 'rxjs';\nimport { injectFormFieldConfig } from '../form-field.config';\nimport { FormFieldService } from '../form-field.service';\nimport { FormFieldErrorService } from '../services';\nimport { FormDirective } from './form.directive';\n\n@CSSComponent('form-field-control')\n@Directive({\n standalone: true,\n selector: '[odxFormFieldControl]',\n exportAs: 'odxFormFieldControl',\n})\nexport class FormFieldControlDirective implements OnInit, OnDestroy {\n private readonly config = injectFormFieldConfig();\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n private readonly form = inject(FormDirective, { optional: true, skipSelf: true });\n private readonly onFormReset$ = this.form?.reset$ ?? EMPTY;\n private readonly onFormSubmit$ = this.form?.submit$ ?? EMPTY;\n private readonly formFieldService = inject(FormFieldService);\n private readonly formFieldErrorService = inject(FormFieldErrorService);\n private readonly takeUntilDestroyed = untilDestroyed();\n public readonly element = injectElement();\n\n constructor() {\n reactiveAttributeBinding(this.formFieldService.controlId$, 'id');\n reactiveAttributeBinding(this.formFieldService.controlHintId$, 'aria-describedby');\n reactiveAttributeBinding(this.formFieldService.isReadonly$, 'readonly');\n reactiveAttributeBinding(this.formFieldService.isDisabled$.pipe(map(booleanToOptionalAttributeString)), 'aria-disabled');\n reactiveAttributeBinding(this.formFieldService.isReadonly$.pipe(map(booleanToOptionalAttributeString)), 'aria-readonly');\n reactiveAttributeBinding(this.formFieldService.isRequired$.pipe(map(booleanToOptionalAttributeString)), 'aria-required');\n reactiveAttributeBinding(this.formFieldErrorService.hasError$.pipe(map(booleanToOptionalAttributeString)), 'aria-invalid');\n reactiveAttributeBinding(\n this.formFieldErrorService.hasError$.pipe(switchMap((hasError) => (hasError ? this.formFieldService.controlErrorId$ : of(null)))),\n 'aria-errormessage'\n );\n }\n\n public ngOnInit() {\n const control = this.ngControl?.control;\n this.formFieldService.registerControl(control ?? new FormControl(), this.element);\n if (!control) return;\n\n const controlChanges$ = merge(this.registerOnBlur(control), this.registerOnChange(control), this.registerOnSubmit(control));\n const changes$ = merge(\n this.onFormReset$.pipe(tap(() => this.formFieldErrorService?.setError(null))),\n controlChanges$.pipe(tap(() => this.formFieldErrorService?.setError(control.errors)))\n );\n changes$.pipe(this.takeUntilDestroyed()).subscribe();\n }\n\n public ngOnDestroy(): void {\n this.formFieldService.removeControl();\n }\n\n private registerOnBlur({ valueChanges }: AbstractControl): Observable<unknown> {\n if (this.config.updateOn.includes('blur')) {\n return fromEvent(this.element.nativeElement, 'focusout').pipe(switchMap(() => valueChanges.pipe(startWith(true))));\n }\n return EMPTY;\n }\n\n private registerOnChange({ valueChanges }: AbstractControl): Observable<unknown> {\n if (this.config.updateOn.includes('change')) {\n return valueChanges;\n }\n return EMPTY;\n }\n\n private registerOnSubmit({ statusChanges, valueChanges }: AbstractControl): Observable<unknown> {\n return merge(this.onFormSubmit$, this.onFormReset$).pipe(\n switchMap(({ type }) => (type === 'submit' ? merge(statusChanges, valueChanges).pipe(startWith(true)) : NEVER))\n );\n }\n}\n","import { Directive, inject, Input, OnInit, TemplateRef } from '@angular/core';\nimport { FormFieldErrorService } from '../services';\n\n@Directive({\n standalone: true,\n selector: '[odxFormFieldError]',\n})\nexport class FormFieldErrorDirective implements OnInit {\n private readonly formFieldErrorService = inject(FormFieldErrorService, { skipSelf: true });\n private readonly template = inject(TemplateRef, { self: true });\n\n @Input('odxFormFieldError')\n public key?: string;\n\n public ngOnInit() {\n this.formFieldErrorService.registerCustomError(this.key, this.template);\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { reactiveAttributeBinding } from '@odx/angular/utils';\nimport { FormFieldService } from '../form-field.service';\n\n@Directive({\n standalone: true,\n selector: 'odx-form-field-hint',\n host: {\n '[class.odx-form-field__hint]': 'true',\n },\n})\nexport class FormFieldHintDirective {\n protected readonly formFieldService = inject(FormFieldService, { skipSelf: true });\n\n constructor() {\n reactiveAttributeBinding(inject(FormFieldService).controlHintId$, 'id');\n }\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n@CSSComponent('form-field-label')\n@Directive({\n standalone: true,\n selector: 'odx-form-field-label',\n})\nexport class FormFieldLabelDirective {\n public readonly element = injectElement();\n}\n","import { Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { FormFieldHintDirective } from '../../directives';\nimport { FormFieldService } from '../../form-field.service';\nimport { FormFieldError } from '../../models';\n\n@Component({\n standalone: true,\n selector: 'odx-form-field-info',\n templateUrl: './form-field-info.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [CoreModule, DynamicViewDirective, FormFieldHintDirective],\n host: {\n '[class.odx-form-field__info]': 'true',\n },\n})\nexport class FormFieldInfoComponent {\n protected readonly formFieldService = inject(FormFieldService);\n\n @Input()\n public error: FormFieldError | null = null;\n}\n","<span class=\"odx-form-field-error\" [attr.id]=\"formFieldService.controlErrorId$ | async\" *ngIf=\"error; else hint\">\n <ng-template [odxDynamicView]=\"error.message\" [odxDynamicViewContext]=\"error.context\"></ng-template>\n</span>\n<ng-template #hint>\n <ng-content></ng-content>\n</ng-template>\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, QueryList, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { combineLatest, map, Observable, startWith, switchMap } from 'rxjs';\nimport { FormFieldService } from '../../form-field.service';\nimport { FormFieldError } from '../../models';\nimport { FormFieldErrorService } from '../../services';\nimport { FormFieldInfoComponent } from '../form-field-info/form-field-info.component';\n\n@CSSComponent('form-group')\n@Component({\n standalone: true,\n selector: 'odx-form-group',\n templateUrl: './form-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CoreModule, FormFieldInfoComponent],\n providers: [FormFieldService],\n})\nexport class FormGroupComponent implements AfterContentInit {\n public readonly element = injectElement();\n public error$: Observable<FormFieldError | null> | null = null;\n\n @ContentChildren(FormFieldErrorService, { descendants: false })\n public formFieldErrorServices!: QueryList<FormFieldErrorService>;\n\n public ngAfterContentInit() {\n this.error$ = this.formFieldErrorServices.changes.pipe(\n startWith<QueryList<FormFieldErrorService>>(this.formFieldErrorServices),\n switchMap((services) => combineLatest(services.map((service) => service.error$))),\n map((errors) => errors.find((error) => error !== null) ?? null)\n );\n }\n}\n","<div class=\"odx-form-group__content\" odxLayout=\"grid auto vertical-end\">\n <ng-content select=\"odx-form-field\"> </ng-content>\n</div>\n<odx-form-field-info [error]=\"error$ | async\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n</odx-form-field-info>\n","export type FormFieldVariant = (typeof FormFieldVariant)[keyof typeof FormFieldVariant];\n\nexport const FormFieldVariant = {\n FULL: 'full',\n SIMPLE: 'simple',\n} as const;\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, ContentChild, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, DisabledController, ReadonlyController } from '@odx/angular';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement, reactiveClassBinding } from '@odx/angular/utils';\nimport { BehaviorSubject, combineLatest, map } from 'rxjs';\nimport { FormFieldInfoComponent, FormGroupComponent } from './components';\nimport { FormFieldLabelDirective } from './directives';\nimport { FormFieldService } from './form-field.service';\nimport { FormFieldVariant } from './models';\nimport { FormFieldErrorService } from './services';\n\n@CSSComponent('form-field')\n@Component({\n standalone: true,\n selector: 'odx-form-field',\n imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective],\n templateUrl: './form-field.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()],\n})\nexport class FormFieldComponent {\n public static ngAcceptInputType_warnings: string | string[] | null;\n\n protected readonly hasWarning$$ = new BehaviorSubject(false);\n\n protected readonly formGroup = inject(FormGroupComponent, { optional: true, host: true });\n protected readonly formFieldService = inject(FormFieldService, { self: true });\n protected readonly formFieldErrorService = inject(FormFieldErrorService, { self: true });\n public readonly element = injectElement();\n\n @ContentChild(FormFieldLabelDirective)\n public labelDirective?: FormFieldLabelDirective;\n\n @Input()\n public label?: string | null = null;\n\n @Input()\n public set hasWarning(value: unknown) {\n this.hasWarning$$.next(coerceBooleanProperty(value));\n }\n public get hasWarning(): boolean {\n return this.hasWarning$$.getValue();\n }\n\n @CSSModifier()\n @Input()\n public variant: FormFieldVariant | null = FormFieldVariant.FULL;\n\n public get hasLabel(): boolean {\n return !!(this.labelDirective || this.label);\n }\n\n constructor() {\n const hasWarning$ = combineLatest([this.formFieldErrorService.error$, this.hasWarning$$]).pipe(map(([hasError, hasWarning]) => hasError && hasWarning));\n reactiveClassBinding(this.formFieldService.isRequired$, 'odx-form-field--required');\n reactiveClassBinding(this.formFieldService.isDisabled$, 'is-disabled');\n reactiveClassBinding(this.formFieldService.isReadonly$, 'is-readonly');\n reactiveClassBinding(this.formFieldErrorService.hasError$, 'has-error');\n reactiveClassBinding(hasWarning$, 'has-warning');\n }\n}\n","<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <odx-form-field-label *ngIf=\"label; else labelTemplate\">\n {{ label }}\n </odx-form-field-label>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { FormGroupComponent } from './components';\nimport { FormDirective, FormFieldControlDirective, FormFieldErrorDirective, FormFieldHintDirective, FormFieldLabelDirective } from './directives';\nimport { FormFieldComponent } from './form-field.component';\n\nconst modules = [\n FormFieldComponent,\n FormGroupComponent,\n FormDirective,\n FormFieldControlDirective,\n FormFieldErrorDirective,\n FormFieldHintDirective,\n FormFieldLabelDirective,\n];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class FormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-form-field.mjs","sources":["../../../../libs/angular/components/form-field/src/lib/form-field.config.ts","../../../../libs/angular/components/form-field/src/lib/form-field.service.ts","../../../../libs/angular/components/form-field/src/lib/services/form-field-error.service.ts","../../../../libs/angular/components/form-field/src/lib/directives/form.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-control.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-error.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-hint.directive.ts","../../../../libs/angular/components/form-field/src/lib/directives/form-field-label.directive.ts","../../../../libs/angular/components/form-field/src/lib/components/form-field-info/form-field-info.component.ts","../../../../libs/angular/components/form-field/src/lib/components/form-field-info/form-field-info.component.html","../../../../libs/angular/components/form-field/src/lib/components/form-group/form-group.component.ts","../../../../libs/angular/components/form-field/src/lib/components/form-group/form-group.component.html","../../../../libs/angular/components/form-field/src/lib/models/form-field-variant.ts","../../../../libs/angular/components/form-field/src/lib/form-field.component.ts","../../../../libs/angular/components/form-field/src/lib/form-field.component.html","../../../../libs/angular/components/form-field/src/lib/form-field.module.ts","../../../../libs/angular/components/form-field/src/odx-angular-components-form-field.ts"],"sourcesContent":["import { createConfigTokens } from '@odx/angular/utils';\nimport { FormFieldErrorResolvers } from './models';\n\nexport interface FormFieldConfig {\n /**\n * Object of error resolvers used to resolve error messages globally\n * @default {}\n */\n errors: FormFieldErrorResolvers;\n /**\n * Detect form field control changes on `blur` and/or `change`\n * @default ['blur']\n */\n updateOn: Array<'blur' | 'change'>;\n ignoreErrors: string[];\n}\n\nexport const { FormFieldDefaultConfig, FormFieldConfig, injectFormFieldConfig, provideFormFieldConfig } = createConfigTokens(\n 'FormField',\n '@odx/angular/components/form-field',\n {\n errors: {},\n ignoreErrors: [],\n updateOn: ['blur'],\n } as FormFieldConfig\n);\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { AbstractControl, Validators } from '@angular/forms';\nimport { Controller, DisabledController, ReadonlyController } from '@odx/angular';\nimport { getUniqueId } from '@odx/angular/utils';\nimport { BehaviorSubject, distinctUntilChanged, EMPTY, map, merge, Observable, of, shareReplay, startWith, switchMap, tap } from 'rxjs';\n\ninterface FieldControl {\n control: AbstractControl;\n nativeElement: HTMLElement;\n}\n\n@Injectable()\nexport class FormFieldService extends Controller implements OnDestroy {\n private readonly disabledController = DisabledController.inject();\n private readonly readonlyController = ReadonlyController.inject();\n private readonly control$$ = new BehaviorSubject<FieldControl | null>(null);\n\n public readonly control$ = this.control$$.pipe(shareReplay({ refCount: true }));\n public readonly controlId$ = this.control$.pipe(\n map((control) => (control ? control.nativeElement.id || getUniqueId('odx-form-field') : null)),\n shareReplay({ refCount: true })\n );\n public readonly controlHintId$ = this.controlId$.pipe(\n map((id) => (id ? `${id}-hint` : null)),\n shareReplay({ refCount: true })\n );\n public readonly controlErrorId$ = this.controlId$.pipe(\n map((id) => (id ? `${id}-error` : null)),\n shareReplay({ refCount: true })\n );\n public readonly isDisabled$ = this.control$.pipe(\n switchMap((control) => (control ? merge(this.updateControlDisabledState(control), this.getControlDisabledState(control)) : of(false))),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n public readonly isRequired$ = this.control$.pipe(\n map((control) => (control ? control.nativeElement.hasAttribute('required') || control.control.hasValidator(Validators.required) : false)),\n shareReplay({ refCount: true })\n );\n public readonly isReadonly$ = this.control$.pipe(\n switchMap((control) => (control && this.readonlyController ? this.readonlyController.isReadonly$ : of(false)))\n );\n\n public override ngOnDestroy(): void {\n this.control$$.complete();\n super.ngOnDestroy();\n }\n\n public registerControl(control: AbstractControl, { nativeElement }: ElementRef<HTMLElement>): void {\n this.control$$.next({ control, nativeElement });\n }\n\n public removeControl(): void {\n this.control$$.next(null);\n }\n\n private updateControlDisabledState({ control }: FieldControl): Observable<boolean> {\n if (this.disabledController) {\n return this.disabledController.isDisabled$.pipe(\n tap((state) => {\n if (state) {\n control.disable();\n } else {\n control.enable();\n }\n })\n );\n }\n return EMPTY;\n }\n\n private getControlDisabledState({ control }: FieldControl): Observable<boolean> {\n return control.statusChanges.pipe(\n startWith(control.status),\n map((status) => status === 'DISABLED'),\n distinctUntilChanged()\n );\n }\n}\n","import { Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { isTemplateRef } from '@odx/angular/utils';\nimport { BehaviorSubject, combineLatest, distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { injectFormFieldConfig } from '../form-field.config';\nimport { FormFieldError } from '../models';\n\nconst DEFAULT_CUSTOM_FORM_FIELD_ERROR = '@odx/angular/form-field/default-error';\nconst DEFAULT_ERROR_RESOLVER = () => '';\n\ninterface NgFormFieldError {\n key: string;\n context: unknown;\n}\n\ntype CustomFormFieldErrors = Record<string, TemplateRef<unknown>>;\n\n@Injectable()\nexport class FormFieldErrorService implements OnDestroy {\n private readonly config = injectFormFieldConfig();\n private readonly fieldError$$ = new BehaviorSubject<NgFormFieldError | null>(null);\n private readonly customErrors$$ = new BehaviorSubject<CustomFormFieldErrors>({});\n\n public readonly error$ = combineLatest([this.fieldError$$, this.customErrors$$]).pipe(\n map(([error, customErrors]) => this.resolveError(error, customErrors)),\n distinctUntilChanged(),\n shareReplay({ refCount: true })\n );\n public readonly hasError$ = this.error$.pipe(map((error) => error !== null));\n\n public get hasError(): boolean {\n return this.fieldError$$.getValue() !== null;\n }\n\n public ngOnDestroy(): void {\n this.fieldError$$.next(null);\n this.customErrors$$.next({});\n this.fieldError$$.complete();\n this.customErrors$$.complete();\n }\n\n public setError(errors?: ValidationErrors | null): void {\n this.fieldError$$.next(this.getFirstError(errors ?? {}));\n }\n\n public registerCustomError(key: string | undefined, template: TemplateRef<unknown>): void {\n this.customErrors$$.next({ ...this.customErrors$$.getValue(), [key || DEFAULT_CUSTOM_FORM_FIELD_ERROR]: template });\n }\n\n private getFirstError(errors: ValidationErrors): NgFormFieldError | null {\n const [key, context] = Object.entries(errors ?? {}).find(([errorKey]) => !this.config.ignoreErrors.includes(errorKey)) ?? [];\n\n return key ? { key, context } : null;\n }\n\n private resolveError(error: NgFormFieldError | null, customErrors: CustomFormFieldErrors): FormFieldError | null {\n if (!error) return null;\n const { key, context } = error;\n const message = customErrors[key] ?? customErrors[DEFAULT_CUSTOM_FORM_FIELD_ERROR];\n if (isTemplateRef(message)) {\n return {\n key,\n message,\n context: { $implicit: context },\n };\n }\n\n const getMessage = this.config.errors[key] ?? DEFAULT_ERROR_RESOLVER;\n return { key, message: getMessage(context) };\n }\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { fromEvent, share } from 'rxjs';\n\n@CSSComponent('form')\n@Directive({\n standalone: true,\n selector: 'form[odxForm]',\n})\nexport class FormDirective {\n private readonly takeUntilDestroyed = untilDestroyed();\n\n public readonly element = injectElement<HTMLFormElement>();\n public readonly submit$ = fromEvent<Event>(this.element.nativeElement, 'submit').pipe(this.takeUntilDestroyed(), share());\n public readonly reset$ = fromEvent<Event>(this.element.nativeElement, 'reset').pipe(this.takeUntilDestroyed(), share());\n}\n","import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl, NgControl } from '@angular/forms';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { booleanToOptionalAttributeString, injectElement, reactiveAttributeBinding, untilDestroyed } from '@odx/angular/utils';\nimport { EMPTY, fromEvent, map, merge, NEVER, Observable, of, startWith, switchMap, tap } from 'rxjs';\nimport { injectFormFieldConfig } from '../form-field.config';\nimport { FormFieldService } from '../form-field.service';\nimport { FormFieldErrorService } from '../services';\nimport { FormDirective } from './form.directive';\n\n@CSSComponent('form-field-control')\n@Directive({\n standalone: true,\n selector: '[odxFormFieldControl]',\n exportAs: 'odxFormFieldControl',\n})\nexport class FormFieldControlDirective implements OnInit, OnDestroy {\n private readonly config = injectFormFieldConfig();\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n private readonly form = inject(FormDirective, { optional: true, skipSelf: true });\n private readonly onFormReset$ = this.form?.reset$ ?? EMPTY;\n private readonly onFormSubmit$ = this.form?.submit$ ?? EMPTY;\n private readonly formFieldService = inject(FormFieldService);\n private readonly formFieldErrorService = inject(FormFieldErrorService);\n private readonly takeUntilDestroyed = untilDestroyed();\n public readonly element = injectElement();\n\n constructor() {\n reactiveAttributeBinding(this.formFieldService.controlId$, 'id');\n reactiveAttributeBinding(this.formFieldService.controlHintId$, 'aria-describedby');\n reactiveAttributeBinding(this.formFieldService.isReadonly$, 'readonly');\n reactiveAttributeBinding(this.formFieldService.isDisabled$.pipe(map(booleanToOptionalAttributeString)), 'aria-disabled');\n reactiveAttributeBinding(this.formFieldService.isReadonly$.pipe(map(booleanToOptionalAttributeString)), 'aria-readonly');\n reactiveAttributeBinding(this.formFieldService.isRequired$.pipe(map(booleanToOptionalAttributeString)), 'aria-required');\n reactiveAttributeBinding(this.formFieldErrorService.hasError$.pipe(map(booleanToOptionalAttributeString)), 'aria-invalid');\n reactiveAttributeBinding(\n this.formFieldErrorService.hasError$.pipe(switchMap((hasError) => (hasError ? this.formFieldService.controlErrorId$ : of(null)))),\n 'aria-errormessage'\n );\n }\n\n public ngOnInit() {\n const control = this.ngControl?.control;\n this.formFieldService.registerControl(control ?? new FormControl(), this.element);\n if (!control) return;\n\n const controlChanges$ = merge(this.registerOnBlur(control), this.registerOnChange(control), this.registerOnSubmit(control));\n const changes$ = merge(\n this.onFormReset$.pipe(tap(() => this.formFieldErrorService?.setError(null))),\n controlChanges$.pipe(tap(() => this.formFieldErrorService?.setError(control.errors)))\n );\n changes$.pipe(this.takeUntilDestroyed()).subscribe();\n }\n\n public ngOnDestroy(): void {\n this.formFieldService.removeControl();\n }\n\n private registerOnBlur({ valueChanges }: AbstractControl): Observable<unknown> {\n if (this.config.updateOn.includes('blur')) {\n return fromEvent(this.element.nativeElement, 'focusout').pipe(switchMap(() => valueChanges.pipe(startWith(true))));\n }\n return EMPTY;\n }\n\n private registerOnChange({ valueChanges }: AbstractControl): Observable<unknown> {\n if (this.config.updateOn.includes('change')) {\n return valueChanges;\n }\n return EMPTY;\n }\n\n private registerOnSubmit({ statusChanges, valueChanges }: AbstractControl): Observable<unknown> {\n return merge(this.onFormSubmit$, this.onFormReset$).pipe(\n switchMap(({ type }) => (type === 'submit' ? merge(statusChanges, valueChanges).pipe(startWith(true)) : NEVER))\n );\n }\n}\n","import { Directive, inject, Input, OnInit, TemplateRef } from '@angular/core';\nimport { FormFieldErrorService } from '../services';\n\n@Directive({\n standalone: true,\n selector: '[odxFormFieldError]',\n})\nexport class FormFieldErrorDirective implements OnInit {\n private readonly formFieldErrorService = inject(FormFieldErrorService, { skipSelf: true });\n private readonly template = inject(TemplateRef, { self: true });\n\n @Input('odxFormFieldError')\n public key?: string;\n\n public ngOnInit() {\n this.formFieldErrorService.registerCustomError(this.key, this.template);\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { reactiveAttributeBinding } from '@odx/angular/utils';\nimport { FormFieldService } from '../form-field.service';\n\n@Directive({\n standalone: true,\n selector: 'odx-form-field-hint',\n host: {\n '[class.odx-form-field__hint]': 'true',\n },\n})\nexport class FormFieldHintDirective {\n protected readonly formFieldService = inject(FormFieldService, { skipSelf: true });\n\n constructor() {\n reactiveAttributeBinding(inject(FormFieldService).controlHintId$, 'id');\n }\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n@CSSComponent('form-field-label')\n@Directive({\n standalone: true,\n selector: 'odx-form-field-label',\n})\nexport class FormFieldLabelDirective {\n public readonly element = injectElement();\n}\n","import { Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { FormFieldHintDirective } from '../../directives';\nimport { FormFieldService } from '../../form-field.service';\nimport { FormFieldError } from '../../models';\n\n@Component({\n standalone: true,\n selector: 'odx-form-field-info',\n templateUrl: './form-field-info.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [CoreModule, DynamicViewDirective, FormFieldHintDirective],\n host: {\n '[class.odx-form-field__info]': 'true',\n },\n})\nexport class FormFieldInfoComponent {\n protected readonly formFieldService = inject(FormFieldService);\n\n @Input()\n public error: FormFieldError | null = null;\n}\n","<span class=\"odx-form-field-error\" [attr.id]=\"formFieldService.controlErrorId$ | async\" *ngIf=\"error; else hint\">\n <ng-template [odxDynamicView]=\"error.message\" [odxDynamicViewContext]=\"error.context\"></ng-template>\n</span>\n<ng-template #hint>\n <ng-content></ng-content>\n</ng-template>\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, QueryList, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { combineLatest, map, Observable, startWith, switchMap } from 'rxjs';\nimport { FormFieldService } from '../../form-field.service';\nimport { FormFieldError } from '../../models';\nimport { FormFieldErrorService } from '../../services';\nimport { FormFieldInfoComponent } from '../form-field-info/form-field-info.component';\n\n@CSSComponent('form-group')\n@Component({\n standalone: true,\n selector: 'odx-form-group',\n templateUrl: './form-group.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CoreModule, FormFieldInfoComponent],\n providers: [FormFieldService],\n})\nexport class FormGroupComponent implements AfterContentInit {\n public readonly element = injectElement();\n public error$: Observable<FormFieldError | null> | null = null;\n\n @ContentChildren(FormFieldErrorService, { descendants: false })\n public formFieldErrorServices!: QueryList<FormFieldErrorService>;\n\n public ngAfterContentInit() {\n this.error$ = this.formFieldErrorServices.changes.pipe(\n startWith<QueryList<FormFieldErrorService>>(this.formFieldErrorServices),\n switchMap((services) => combineLatest(services.map((service) => service.error$))),\n map((errors) => errors.find((error) => error !== null) ?? null)\n );\n }\n}\n","<div class=\"odx-form-group__content\" odxLayout=\"grid\">\n <ng-content select=\"odx-form-field\"> </ng-content>\n</div>\n<odx-form-field-info [error]=\"error$ | async\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n</odx-form-field-info>\n","export type FormFieldVariant = (typeof FormFieldVariant)[keyof typeof FormFieldVariant];\n\nexport const FormFieldVariant = {\n FULL: 'full',\n SIMPLE: 'simple',\n HORIZONTAL: 'horizontal',\n} as const;\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, ContentChild, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, DisabledController, ReadonlyController } from '@odx/angular';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement, reactiveClassBinding } from '@odx/angular/utils';\nimport { BehaviorSubject, combineLatest, map } from 'rxjs';\nimport { FormFieldInfoComponent, FormGroupComponent } from './components';\nimport { FormFieldLabelDirective } from './directives';\nimport { FormFieldService } from './form-field.service';\nimport { FormFieldVariant } from './models';\nimport { FormFieldErrorService } from './services';\n\n@CSSComponent('form-field')\n@Component({\n standalone: true,\n selector: 'odx-form-field',\n imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective],\n templateUrl: './form-field.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()],\n})\nexport class FormFieldComponent {\n public static ngAcceptInputType_warnings: string | string[] | null;\n\n protected readonly hasWarning$$ = new BehaviorSubject(false);\n\n protected readonly formGroup = inject(FormGroupComponent, { optional: true, host: true });\n protected readonly formFieldService = inject(FormFieldService, { self: true });\n protected readonly formFieldErrorService = inject(FormFieldErrorService, { self: true });\n public readonly element = injectElement();\n\n @ContentChild(FormFieldLabelDirective)\n public labelDirective?: FormFieldLabelDirective;\n\n @Input()\n public label?: string | null = null;\n\n @Input()\n public set hasWarning(value: unknown) {\n this.hasWarning$$.next(coerceBooleanProperty(value));\n }\n public get hasWarning(): boolean {\n return this.hasWarning$$.getValue();\n }\n\n @CSSModifier()\n @Input()\n public variant: FormFieldVariant | null = FormFieldVariant.FULL;\n\n public get hasLabel(): boolean {\n return !!(this.labelDirective || this.label);\n }\n\n constructor() {\n const hasWarning$ = combineLatest([this.formFieldErrorService.error$, this.hasWarning$$]).pipe(map(([hasError, hasWarning]) => hasError && hasWarning));\n reactiveClassBinding(this.formFieldService.isRequired$, 'odx-form-field--required');\n reactiveClassBinding(this.formFieldService.isDisabled$, 'is-disabled');\n reactiveClassBinding(this.formFieldService.isReadonly$, 'is-readonly');\n reactiveClassBinding(this.formFieldErrorService.hasError$, 'has-error');\n reactiveClassBinding(hasWarning$, 'has-warning');\n }\n}\n","<label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\" *ngIf=\"hasLabel\">\n <ng-container *ngIf=\"label; else labelTemplate\">\n <odx-form-field-label>{{ label }}</odx-form-field-label>\n <span class=\"odx-form-field__label-is-required\" *ngIf=\"formFieldService.isRequired$ | async\">*</span>\n </ng-container>\n <ng-template #labelTemplate>\n <ng-content select=\"odx-form-field-label\"></ng-content>\n <span class=\"odx-form-field__label-is-required\" *ngIf=\"formFieldService.isRequired$ | async\">*</span>\n </ng-template>\n</label>\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\">\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\"></ng-content>\n </div>\n </div>\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\" *ngIf=\"!formGroup\">\n <ng-content select=\"odx-form-field-hint\"></ng-content>\n </odx-form-field-info>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { FormGroupComponent } from './components';\nimport { FormDirective, FormFieldControlDirective, FormFieldErrorDirective, FormFieldHintDirective, FormFieldLabelDirective } from './directives';\nimport { FormFieldComponent } from './form-field.component';\n\nconst modules = [\n FormFieldComponent,\n FormGroupComponent,\n FormDirective,\n FormFieldControlDirective,\n FormFieldErrorDirective,\n FormFieldHintDirective,\n FormFieldLabelDirective,\n];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class FormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -4,11 +4,10 @@ import { Injectable, inject, Directive, HostListener, Component, ViewEncapsulati
4
4
  import { CSSComponent } from '@odx/angular/internal';
5
5
  import { isBoolean, injectElement, Transform } from '@odx/angular/utils';
6
6
  import { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';
7
+ import { trigger, transition, useAnimation } from '@angular/animations';
7
8
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
8
- import { RouterLinkActive } from '@angular/router';
9
9
  import * as i1$1 from '@odx/angular';
10
10
  import { CoreModule, WithDisabledState, WithTabIndex } from '@odx/angular';
11
- import { trigger, transition, useAnimation } from '@angular/animations';
12
11
  import { slideInLeft, slideOutLeft, fadeIn, fadeOut } from '@odx/angular/animations';
13
12
  import { A11yModule } from '@odx/angular/cdk/a11y';
14
13
  import * as i4 from '@odx/angular/components/area-header';
@@ -20,6 +19,7 @@ import { IconComponent } from '@odx/angular/components/icon';
20
19
  import { LogoDirective } from '@odx/angular/components/logo';
21
20
  import * as i1 from '@angular/common';
22
21
  import * as i3 from '@angular/cdk/a11y';
22
+ import { RouterLinkActive } from '@angular/router';
23
23
  import { LinkDirective } from '@odx/angular/components/link';
24
24
 
25
25
  class MainMenuService {
@@ -129,19 +129,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
129
129
  args: ['window:keyup.esc']
130
130
  }] } });
131
131
 
132
- let MainMenuItemDirective = class MainMenuItemDirective {
132
+ class MainMenuCloseDirective {
133
133
  constructor() {
134
134
  this.mainMenu = inject(MainMenuComponent, { optional: true });
135
- this.routerLinkActive = inject(RouterLinkActive, { optional: true });
136
- this.element = injectElement();
137
- this.isSelected = false;
138
135
  }
139
136
  onClick() {
140
137
  this.mainMenu?.close();
141
138
  }
139
+ }
140
+ MainMenuCloseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MainMenuCloseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
141
+ MainMenuCloseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: MainMenuCloseDirective, isStandalone: true, selector: "[odxMainMenuClose]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MainMenuCloseDirective, decorators: [{
143
+ type: Directive,
144
+ args: [{
145
+ standalone: true,
146
+ selector: '[odxMainMenuClose]',
147
+ }]
148
+ }], propDecorators: { onClick: [{
149
+ type: HostListener,
150
+ args: ['click']
151
+ }] } });
152
+
153
+ let MainMenuItemDirective = class MainMenuItemDirective {
154
+ constructor() {
155
+ this.routerLinkActive = inject(RouterLinkActive, { optional: true });
156
+ this.element = injectElement();
157
+ this.isSelected = false;
158
+ }
142
159
  };
143
160
  MainMenuItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MainMenuItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
144
- MainMenuItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: MainMenuItemDirective, isStandalone: true, selector: "[odxMainMenuItem]", inputs: { isSelected: "isSelected" }, host: { listeners: { "click": "onClick()" }, properties: { "class.is-selected": "isSelected || routerLinkActive?.isActive", "attr.role": "\"button\"" } }, hostDirectives: [{ directive: i1$1.WithDisabledState }, { directive: i1$1.WithTabIndex }], ngImport: i0 });
161
+ MainMenuItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: MainMenuItemDirective, isStandalone: true, selector: "[odxMainMenuItem]", inputs: { isSelected: "isSelected" }, host: { properties: { "class.is-selected": "isSelected || routerLinkActive?.isActive", "attr.role": "\"button\"" } }, hostDirectives: [{ directive: i1$1.WithDisabledState }, { directive: i1$1.WithTabIndex }, { directive: MainMenuCloseDirective }], ngImport: i0 });
145
162
  __decorate([
146
163
  Transform(coerceBooleanProperty),
147
164
  __metadata("design:type", Object)
@@ -154,7 +171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
154
171
  args: [{
155
172
  selector: '[odxMainMenuItem]',
156
173
  standalone: true,
157
- hostDirectives: [WithDisabledState, WithTabIndex],
174
+ hostDirectives: [WithDisabledState, WithTabIndex, MainMenuCloseDirective],
158
175
  host: {
159
176
  '[class.is-selected]': 'isSelected || routerLinkActive?.isActive',
160
177
  '[attr.role]': '"button"',
@@ -162,16 +179,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
162
179
  }]
163
180
  }], propDecorators: { isSelected: [{
164
181
  type: Input
165
- }], onClick: [{
166
- type: HostListener,
167
- args: ['click']
168
182
  }] } });
169
183
 
170
- const modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective];
184
+ const modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective, MainMenuCloseDirective];
171
185
  class MainMenuModule {
172
186
  }
173
187
  MainMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MainMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
174
- MainMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: MainMenuModule, imports: [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective], exports: [CoreModule, LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective] });
188
+ MainMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: MainMenuModule, imports: [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective, MainMenuCloseDirective], exports: [CoreModule, LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective, MainMenuCloseDirective] });
175
189
  MainMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MainMenuModule, imports: [MainMenuComponent, CoreModule] });
176
190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MainMenuModule, decorators: [{
177
191
  type: NgModule,
@@ -185,5 +199,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
185
199
  * Generated bundle index. Do not edit.
186
200
  */
187
201
 
188
- export { MainMenuButtonDirective, MainMenuComponent, MainMenuItemDirective, MainMenuModule };
202
+ export { MainMenuButtonDirective, MainMenuCloseDirective, MainMenuComponent, MainMenuItemDirective, MainMenuModule };
189
203
  //# sourceMappingURL=odx-angular-components-main-menu.mjs.map