@i-cell/ids-angular 0.1.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 (324) hide show
  1. package/README.md +24 -0
  2. package/accordion/accordion-animations.d.ts +1 -0
  3. package/accordion/accordion-defaults.d.ts +18 -0
  4. package/accordion/accordion-item/accordion-item.component.d.ts +27 -0
  5. package/accordion/accordion.component.d.ts +29 -0
  6. package/accordion/index.d.ts +5 -0
  7. package/accordion/public-api.d.ts +5 -0
  8. package/accordion/types/accordion-appearance.type.d.ts +5 -0
  9. package/avatar/avatar-defaults.d.ts +12 -0
  10. package/avatar/avatar-image.directive.d.ts +5 -0
  11. package/avatar/avatar.component.d.ts +28 -0
  12. package/avatar/index.d.ts +5 -0
  13. package/avatar/public-api.d.ts +6 -0
  14. package/avatar/tokens/avatar-parent.d.ts +6 -0
  15. package/avatar/types/avatar-type.type.d.ts +6 -0
  16. package/avatar/types/avatar-variant.type.d.ts +8 -0
  17. package/button/button-defaults.d.ts +11 -0
  18. package/button/button-group-defaults.d.ts +7 -0
  19. package/button/button-group.component.d.ts +11 -0
  20. package/button/button.component.d.ts +23 -0
  21. package/button/index.d.ts +5 -0
  22. package/button/public-api.d.ts +7 -0
  23. package/button/tokens/button-parent.d.ts +6 -0
  24. package/button/types/button-appearance.type.d.ts +6 -0
  25. package/button/types/button-variant.type.d.ts +14 -0
  26. package/card/card-body.directive.d.ts +6 -0
  27. package/card/card-defaults.d.ts +12 -0
  28. package/card/card-footer.directive.d.ts +6 -0
  29. package/card/card-header.component.d.ts +6 -0
  30. package/card/card-media.directive.d.ts +7 -0
  31. package/card/card-section-base.directive.d.ts +9 -0
  32. package/card/card-subtitle.directive.d.ts +5 -0
  33. package/card/card-title.directive.d.ts +5 -0
  34. package/card/card.component.d.ts +21 -0
  35. package/card/index.d.ts +5 -0
  36. package/card/public-api.d.ts +10 -0
  37. package/card/types/card-appearances.type.d.ts +6 -0
  38. package/card/types/card-variant.type.d.ts +13 -0
  39. package/checkbox/checkbox-defaults.d.ts +9 -0
  40. package/checkbox/checkbox-group-defaults.d.ts +9 -0
  41. package/checkbox/checkbox-group.component.d.ts +28 -0
  42. package/checkbox/checkbox.component.d.ts +68 -0
  43. package/checkbox/index.d.ts +5 -0
  44. package/checkbox/public-api.d.ts +7 -0
  45. package/checkbox/types/checkbox-events.class.d.ts +6 -0
  46. package/checkbox/types/checkbox-group-child.d.ts +7 -0
  47. package/checkbox/types/checkbox-parent.d.ts +8 -0
  48. package/checkbox/types/checkbox-state.type.d.ts +6 -0
  49. package/checkbox/types/checkbox-variant.type.d.ts +6 -0
  50. package/chip/chip-defaults.d.ts +12 -0
  51. package/chip/chip-group-defaults.d.ts +9 -0
  52. package/chip/chip-group.component.d.ts +14 -0
  53. package/chip/chip.component.d.ts +35 -0
  54. package/chip/index.d.ts +5 -0
  55. package/chip/public-api.d.ts +7 -0
  56. package/chip/types/chip-appearance.type.d.ts +5 -0
  57. package/chip/types/chip-events.type.d.ts +4 -0
  58. package/chip/types/chip-variant.type.d.ts +8 -0
  59. package/core/base-classes/component-base.d.ts +13 -0
  60. package/core/base-classes/directive-base.d.ts +16 -0
  61. package/core/directives/detect-scrollable.directive.d.ts +11 -0
  62. package/core/index.d.ts +5 -0
  63. package/core/pipes/sentence-case.pipe.d.ts +7 -0
  64. package/core/public-api.d.ts +17 -0
  65. package/core/services/resize-observer.service.d.ts +13 -0
  66. package/core/types/orientation.type.d.ts +5 -0
  67. package/core/types/position.type.d.ts +39 -0
  68. package/core/types/size-collection.type.d.ts +5 -0
  69. package/core/types/size.type.d.ts +7 -0
  70. package/core/utils/class-prefix.d.ts +2 -0
  71. package/core/utils/class.d.ts +2 -0
  72. package/core/utils/coercion.d.ts +6 -0
  73. package/core/utils/compare.d.ts +1 -0
  74. package/core/utils/date.d.ts +1 -0
  75. package/core/utils/even-odd.d.ts +2 -0
  76. package/core/utils/fallback-value.d.ts +1 -0
  77. package/core/utils/string.d.ts +1 -0
  78. package/dialog/custom-dialog-base.d.ts +15 -0
  79. package/dialog/dialog-defaults.d.ts +9 -0
  80. package/dialog/dialog-header.directive.d.ts +7 -0
  81. package/dialog/dialog.component.d.ts +22 -0
  82. package/dialog/dialog.service.d.ts +17 -0
  83. package/dialog/index.d.ts +5 -0
  84. package/dialog/public-api.d.ts +5 -0
  85. package/divider/divider-defaults.d.ts +12 -0
  86. package/divider/divider.component.d.ts +18 -0
  87. package/divider/index.d.ts +5 -0
  88. package/divider/public-api.d.ts +3 -0
  89. package/divider/types/divider-variant.type.d.ts +13 -0
  90. package/fesm2022/i-cell-ids-angular-accordion.mjs +223 -0
  91. package/fesm2022/i-cell-ids-angular-accordion.mjs.map +1 -0
  92. package/fesm2022/i-cell-ids-angular-avatar.mjs +125 -0
  93. package/fesm2022/i-cell-ids-angular-avatar.mjs.map +1 -0
  94. package/fesm2022/i-cell-ids-angular-button.mjs +117 -0
  95. package/fesm2022/i-cell-ids-angular-button.mjs.map +1 -0
  96. package/fesm2022/i-cell-ids-angular-card.mjs +222 -0
  97. package/fesm2022/i-cell-ids-angular-card.mjs.map +1 -0
  98. package/fesm2022/i-cell-ids-angular-checkbox.mjs +346 -0
  99. package/fesm2022/i-cell-ids-angular-checkbox.mjs.map +1 -0
  100. package/fesm2022/i-cell-ids-angular-chip.mjs +166 -0
  101. package/fesm2022/i-cell-ids-angular-chip.mjs.map +1 -0
  102. package/fesm2022/i-cell-ids-angular-core.mjs +266 -0
  103. package/fesm2022/i-cell-ids-angular-core.mjs.map +1 -0
  104. package/fesm2022/i-cell-ids-angular-dialog.mjs +157 -0
  105. package/fesm2022/i-cell-ids-angular-dialog.mjs.map +1 -0
  106. package/fesm2022/i-cell-ids-angular-divider.mjs +76 -0
  107. package/fesm2022/i-cell-ids-angular-divider.mjs.map +1 -0
  108. package/fesm2022/i-cell-ids-angular-forms.mjs +871 -0
  109. package/fesm2022/i-cell-ids-angular-forms.mjs.map +1 -0
  110. package/fesm2022/i-cell-ids-angular-icon-button.mjs +81 -0
  111. package/fesm2022/i-cell-ids-angular-icon-button.mjs.map +1 -0
  112. package/fesm2022/i-cell-ids-angular-icon.mjs +149 -0
  113. package/fesm2022/i-cell-ids-angular-icon.mjs.map +1 -0
  114. package/fesm2022/i-cell-ids-angular-menu.mjs +108 -0
  115. package/fesm2022/i-cell-ids-angular-menu.mjs.map +1 -0
  116. package/fesm2022/i-cell-ids-angular-notification.mjs +167 -0
  117. package/fesm2022/i-cell-ids-angular-notification.mjs.map +1 -0
  118. package/fesm2022/i-cell-ids-angular-overlay-panel.mjs +72 -0
  119. package/fesm2022/i-cell-ids-angular-overlay-panel.mjs.map +1 -0
  120. package/fesm2022/i-cell-ids-angular-paginator.mjs +319 -0
  121. package/fesm2022/i-cell-ids-angular-paginator.mjs.map +1 -0
  122. package/fesm2022/i-cell-ids-angular-radio.mjs +312 -0
  123. package/fesm2022/i-cell-ids-angular-radio.mjs.map +1 -0
  124. package/fesm2022/i-cell-ids-angular-segmented-control-toggle.mjs +264 -0
  125. package/fesm2022/i-cell-ids-angular-segmented-control-toggle.mjs.map +1 -0
  126. package/fesm2022/i-cell-ids-angular-segmented-control.mjs +283 -0
  127. package/fesm2022/i-cell-ids-angular-segmented-control.mjs.map +1 -0
  128. package/fesm2022/i-cell-ids-angular-select.mjs +550 -0
  129. package/fesm2022/i-cell-ids-angular-select.mjs.map +1 -0
  130. package/fesm2022/i-cell-ids-angular-snackbar.mjs +440 -0
  131. package/fesm2022/i-cell-ids-angular-snackbar.mjs.map +1 -0
  132. package/fesm2022/i-cell-ids-angular-switch.mjs +181 -0
  133. package/fesm2022/i-cell-ids-angular-switch.mjs.map +1 -0
  134. package/fesm2022/i-cell-ids-angular-tab.mjs +141 -0
  135. package/fesm2022/i-cell-ids-angular-tab.mjs.map +1 -0
  136. package/fesm2022/i-cell-ids-angular-table.mjs +663 -0
  137. package/fesm2022/i-cell-ids-angular-table.mjs.map +1 -0
  138. package/fesm2022/i-cell-ids-angular-tag.mjs +116 -0
  139. package/fesm2022/i-cell-ids-angular-tag.mjs.map +1 -0
  140. package/fesm2022/i-cell-ids-angular-tooltip.mjs +587 -0
  141. package/fesm2022/i-cell-ids-angular-tooltip.mjs.map +1 -0
  142. package/fesm2022/i-cell-ids-angular.mjs +9 -0
  143. package/fesm2022/i-cell-ids-angular.mjs.map +1 -0
  144. package/forms/common/error/error-state.d.ts +23 -0
  145. package/forms/common/success/success-state.d.ts +23 -0
  146. package/forms/components/fieldset/fieldset-defaults.d.ts +9 -0
  147. package/forms/components/fieldset/fieldset-message.directive.d.ts +5 -0
  148. package/forms/components/fieldset/fieldset-row/fieldset-row.component.d.ts +8 -0
  149. package/forms/components/fieldset/fieldset.component.d.ts +16 -0
  150. package/forms/components/form-field/form-field-control.d.ts +21 -0
  151. package/forms/components/form-field/form-field-defaults.d.ts +9 -0
  152. package/forms/components/form-field/form-field.component.d.ts +41 -0
  153. package/forms/components/form-field/tokens/form-field-control.d.ts +3 -0
  154. package/forms/components/form-field/types/form-field-variant.type.d.ts +5 -0
  155. package/forms/components/input/input-defaults.d.ts +9 -0
  156. package/forms/components/input/input.directive.d.ts +55 -0
  157. package/forms/components/input/types/input.type.d.ts +1 -0
  158. package/forms/components/message/error-message/error-message.component.d.ts +15 -0
  159. package/forms/components/message/hint-message/hint-message.component.d.ts +10 -0
  160. package/forms/components/message/message-defaults.d.ts +9 -0
  161. package/forms/components/message/success-message/success-message.component.d.ts +11 -0
  162. package/forms/components/message/types/message-parent-form-field.d.ts +9 -0
  163. package/forms/components/message/types/message-variant.type.d.ts +6 -0
  164. package/forms/components/message/types/message.type.d.ts +6 -0
  165. package/forms/components/option/option-group.component.d.ts +13 -0
  166. package/forms/components/option/option.component.d.ts +47 -0
  167. package/forms/components/option/tokens/option-group.d.ts +3 -0
  168. package/forms/components/option/tokens/option-parent.d.ts +11 -0
  169. package/forms/components/option/types/option-events.class.d.ts +7 -0
  170. package/forms/components/pseudo-checkbox/pseudo-checkbox.component.d.ts +14 -0
  171. package/forms/components/pseudo-checkbox/tokens/pseudo-checkbox-parent.d.ts +7 -0
  172. package/forms/components/pseudo-checkbox/types/pseudo-checkbox-state.type.d.ts +6 -0
  173. package/forms/directives/form-field-action.directive.d.ts +5 -0
  174. package/forms/directives/label.directive.d.ts +5 -0
  175. package/forms/directives/message-prefix.directive.d.ts +5 -0
  176. package/forms/directives/message-suffix.directive.d.ts +5 -0
  177. package/forms/directives/message.directive.d.ts +17 -0
  178. package/forms/directives/prefix.directive.d.ts +7 -0
  179. package/forms/directives/suffix.directive.d.ts +7 -0
  180. package/forms/index.d.ts +5 -0
  181. package/forms/public-api.d.ts +35 -0
  182. package/forms/validators.d.ts +9 -0
  183. package/icon/icon-defaults.d.ts +11 -0
  184. package/icon/icon.component.d.ts +32 -0
  185. package/icon/index.d.ts +5 -0
  186. package/icon/public-api.d.ts +5 -0
  187. package/icon/tokens/icon-parent.d.ts +6 -0
  188. package/icon/types/icon-source.type.d.ts +5 -0
  189. package/icon/types/icon-variant.type.d.ts +12 -0
  190. package/icon-button/icon-button-defaults.d.ts +11 -0
  191. package/icon-button/icon-button.component.d.ts +22 -0
  192. package/icon-button/index.d.ts +5 -0
  193. package/icon-button/public-api.d.ts +5 -0
  194. package/icon-button/tokens/icon-button-parent.d.ts +9 -0
  195. package/icon-button/types/icon-button-appearance.type.d.ts +6 -0
  196. package/icon-button/types/icon-button-variant.type.d.ts +13 -0
  197. package/index.d.ts +5 -0
  198. package/menu/action-menu/action-menu-trigger.directive.d.ts +12 -0
  199. package/menu/index.d.ts +5 -0
  200. package/menu/menu-item/menu-item-defaults.d.ts +11 -0
  201. package/menu/menu-item/menu-item.component.d.ts +23 -0
  202. package/menu/menu-item/types/menu-item-appearance.type.d.ts +5 -0
  203. package/menu/menu-item/types/menu-item-variant.type.d.ts +4 -0
  204. package/menu/public-api.d.ts +5 -0
  205. package/notification/index.d.ts +5 -0
  206. package/notification/notification-action-button.directive.d.ts +5 -0
  207. package/notification/notification-defaults.d.ts +15 -0
  208. package/notification/notification.component.d.ts +34 -0
  209. package/notification/public-api.d.ts +5 -0
  210. package/notification/types/notification-appearance.type.d.ts +5 -0
  211. package/notification/types/notification-variant.type.d.ts +10 -0
  212. package/overlay-panel/index.d.ts +5 -0
  213. package/overlay-panel/overlay-panel-defaults.d.ts +11 -0
  214. package/overlay-panel/overlay-panel.component.d.ts +18 -0
  215. package/overlay-panel/public-api.d.ts +4 -0
  216. package/overlay-panel/types/overlay-panel-appearance.type.d.ts +6 -0
  217. package/overlay-panel/types/overlay-panel-variant.type.d.ts +5 -0
  218. package/package.json +153 -0
  219. package/paginator/index.d.ts +5 -0
  220. package/paginator/paginator-defaults.d.ts +22 -0
  221. package/paginator/paginator-intl.d.ts +24 -0
  222. package/paginator/paginator.component.d.ts +67 -0
  223. package/paginator/public-api.d.ts +5 -0
  224. package/paginator/types/paginator-appearance.type.d.ts +4 -0
  225. package/paginator/types/paginator-events.class.d.ts +6 -0
  226. package/paginator/types/paginator-variant.type.d.ts +7 -0
  227. package/public-api.d.ts +2 -0
  228. package/radio/index.d.ts +5 -0
  229. package/radio/public-api.d.ts +5 -0
  230. package/radio/radio-defaults.d.ts +11 -0
  231. package/radio/radio-group.directive.d.ts +46 -0
  232. package/radio/radio.component.d.ts +30 -0
  233. package/radio/types/radio-events.class.d.ts +6 -0
  234. package/radio/types/radio-variant.type.d.ts +6 -0
  235. package/segmented-control/index.d.ts +5 -0
  236. package/segmented-control/public-api.d.ts +6 -0
  237. package/segmented-control/segmented-control-defaults.d.ts +11 -0
  238. package/segmented-control/segmented-control-item.component.d.ts +33 -0
  239. package/segmented-control/segmented-control.directive.d.ts +42 -0
  240. package/segmented-control/types/segmented-control-appearance.type.d.ts +4 -0
  241. package/segmented-control/types/segmented-control-item-change.class.d.ts +7 -0
  242. package/segmented-control/types/segmented-control-variant.type.d.ts +6 -0
  243. package/segmented-control-toggle/index.d.ts +5 -0
  244. package/segmented-control-toggle/public-api.d.ts +6 -0
  245. package/segmented-control-toggle/segmented-control-toggle-defaults.d.ts +12 -0
  246. package/segmented-control-toggle/segmented-control-toggle-item.component.d.ts +32 -0
  247. package/segmented-control-toggle/segmented-control-toggle.directive.d.ts +43 -0
  248. package/segmented-control-toggle/types/segmented-control-toggle-appearance.type.d.ts +5 -0
  249. package/segmented-control-toggle/types/segmented-control-toggle-item-change.class.d.ts +6 -0
  250. package/segmented-control-toggle/types/segmented-control-toggle-variant.type.d.ts +11 -0
  251. package/select/index.d.ts +5 -0
  252. package/select/public-api.d.ts +3 -0
  253. package/select/select-defaults.d.ts +9 -0
  254. package/select/select-positions.d.ts +2 -0
  255. package/select/select-trigger.directive.d.ts +5 -0
  256. package/select/select.component.d.ts +102 -0
  257. package/snackbar/animations.d.ts +2 -0
  258. package/snackbar/index.d.ts +5 -0
  259. package/snackbar/public-api.d.ts +7 -0
  260. package/snackbar/services/snackbar.service.d.ts +28 -0
  261. package/snackbar/snackbar-defaults.d.ts +16 -0
  262. package/snackbar/snackbar-group.component.d.ts +25 -0
  263. package/snackbar/snackbar-position-strategies.d.ts +4 -0
  264. package/snackbar/snackbar.component.d.ts +51 -0
  265. package/snackbar/types/snackbar-data.type.d.ts +15 -0
  266. package/snackbar/types/snackbar-inner-data.type.d.ts +4 -0
  267. package/snackbar/types/snackbar-position.type.d.ts +9 -0
  268. package/snackbar/types/snackbar-variant.type.d.ts +8 -0
  269. package/switch/index.d.ts +5 -0
  270. package/switch/public-api.d.ts +5 -0
  271. package/switch/switch-animations.d.ts +2 -0
  272. package/switch/switch-defaults.d.ts +13 -0
  273. package/switch/switch-group.component.d.ts +14 -0
  274. package/switch/switch.component.d.ts +45 -0
  275. package/switch/types/switch-positions.type.d.ts +10 -0
  276. package/switch/types/switch-variant.type.d.ts +6 -0
  277. package/tab/index.d.ts +5 -0
  278. package/tab/public-api.d.ts +6 -0
  279. package/tab/tab-group-defaults.d.ts +15 -0
  280. package/tab/tab-group.component.d.ts +29 -0
  281. package/tab/tab.component.d.ts +18 -0
  282. package/tab/types/tab-group-position.type.d.ts +6 -0
  283. package/tab/types/tab-group-variant.type.d.ts +6 -0
  284. package/tab/types/tab-indicator-position.type.d.ts +7 -0
  285. package/table/components/cell-content/cell-content.component.d.ts +25 -0
  286. package/table/datasource/server-side-datasource.d.ts +37 -0
  287. package/table/directives/cell-renderer.d.ts +13 -0
  288. package/table/directives/cell-template.d.ts +8 -0
  289. package/table/directives/row-info-holder.d.ts +9 -0
  290. package/table/index.d.ts +5 -0
  291. package/table/public-api.d.ts +18 -0
  292. package/table/table-defaults.d.ts +22 -0
  293. package/table/table-intl.d.ts +25 -0
  294. package/table/table.component.d.ts +142 -0
  295. package/table/types/pagination-params.d.ts +9 -0
  296. package/table/types/request-factory.d.ts +5 -0
  297. package/table/types/request-pagination-data.d.ts +6 -0
  298. package/table/types/response-data.d.ts +5 -0
  299. package/table/types/table-appearance.type.d.ts +6 -0
  300. package/table/types/table-cell-click-event.d.ts +6 -0
  301. package/table/types/table-column-def.d.ts +97 -0
  302. package/table/types/table-row-click-event.d.ts +4 -0
  303. package/table/types/table-row-keydown-event.d.ts +4 -0
  304. package/table/types/table-sort-direction.d.ts +6 -0
  305. package/table/types/table-sort-info.d.ts +6 -0
  306. package/table/types/table-variant.type.d.ts +6 -0
  307. package/tag/index.d.ts +5 -0
  308. package/tag/public-api.d.ts +6 -0
  309. package/tag/tag-defaults.d.ts +11 -0
  310. package/tag/tag-group-defaults.d.ts +9 -0
  311. package/tag/tag-group.component.d.ts +13 -0
  312. package/tag/tag.component.d.ts +23 -0
  313. package/tag/types/tag-appearance.type.d.ts +5 -0
  314. package/tag/types/tag-variant.type.d.ts +13 -0
  315. package/tooltip/index.d.ts +5 -0
  316. package/tooltip/public-api.d.ts +5 -0
  317. package/tooltip/tooltip-defaults.d.ts +18 -0
  318. package/tooltip/tooltip-position-strategies.d.ts +3 -0
  319. package/tooltip/tooltip.component.d.ts +31 -0
  320. package/tooltip/tooltip.directive.d.ts +60 -0
  321. package/tooltip/types/tooltip-position.type.d.ts +11 -0
  322. package/tooltip/types/tooltip-variant.type.d.ts +5 -0
  323. package/tooltip/types/tooltip.type.d.ts +2 -0
  324. package/tooltip/utils/tooltip-converters.d.ts +3 -0
@@ -0,0 +1,550 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Directive, inject, ElementRef, ChangeDetectorRef, input, signal, computed, viewChild, contentChildren, contentChild, effect, isDevMode, forwardRef, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
3
+ import { ErrorStateMatcher, SuccessStateMatcher, IdsFormFieldComponent, formFieldControlClass, IdsOptionComponent, IDS_OPTION_GROUP, ErrorStateTracker, SuccessStateTracker, _countGroupLabelsBeforeOption, _getOptionScrollPosition, IDS_FORM_FIELD_CONTROL, IDS_OPTION_PARENT_COMPONENT } from '@i-cell/ids-angular/forms';
4
+ import { LiveAnnouncer, ActiveDescendantKeyManager } from '@angular/cdk/a11y';
5
+ import { SelectionModel } from '@angular/cdk/collections';
6
+ import { hasModifierKey } from '@angular/cdk/keycodes';
7
+ import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
8
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
+ import { NgForm, FormGroupDirective, NG_VALUE_ACCESSOR } from '@angular/forms';
10
+ import { ComponentBaseWithDefaults, coerceBooleanAttribute, coerceNumberAttribute, createClassList } from '@i-cell/ids-angular/core';
11
+ import { IdsIconComponent } from '@i-cell/ids-angular/icon';
12
+ import { Subject, first } from 'rxjs';
13
+
14
+ const IDS_SELECT_DEFAULT_CONFIG = new InjectionToken('IDS_SELECT_DEFAULT_CONFIG', {
15
+ providedIn: 'root',
16
+ factory: IDS_SELECT_DEFAULT_CONFIG_FACTORY,
17
+ });
18
+ function IDS_SELECT_DEFAULT_CONFIG_FACTORY() {
19
+ return {
20
+ errorStateMatcher: ErrorStateMatcher,
21
+ successStateMatcher: SuccessStateMatcher,
22
+ typeaheadDebounceInterval: 200,
23
+ };
24
+ }
25
+
26
+ class IdsSelectTriggerDirective {
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSelectTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
28
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.2", type: IdsSelectTriggerDirective, isStandalone: true, selector: "ids-select-trigger", ngImport: i0 }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSelectTriggerDirective, decorators: [{
31
+ type: Directive,
32
+ args: [{
33
+ selector: 'ids-select-trigger',
34
+ standalone: true,
35
+ }]
36
+ }] });
37
+
38
+ const selectConnectedPositions = [
39
+ {
40
+ originX: 'start',
41
+ originY: 'bottom',
42
+ overlayX: 'start',
43
+ overlayY: 'top',
44
+ },
45
+ {
46
+ originX: 'end',
47
+ originY: 'bottom',
48
+ overlayX: 'end',
49
+ overlayY: 'top',
50
+ },
51
+ {
52
+ originX: 'start',
53
+ originY: 'top',
54
+ overlayX: 'start',
55
+ overlayY: 'bottom',
56
+ panelClass: 'ids-select-panel-above',
57
+ },
58
+ {
59
+ originX: 'end',
60
+ originY: 'top',
61
+ overlayX: 'end',
62
+ overlayY: 'bottom',
63
+ panelClass: 'ids-select-panel-above',
64
+ },
65
+ ];
66
+
67
+ const defaultConfig = IDS_SELECT_DEFAULT_CONFIG_FACTORY();
68
+ class IdsSelectComponent extends ComponentBaseWithDefaults {
69
+ get _hostName() {
70
+ return 'select';
71
+ }
72
+ get _empty() {
73
+ return Boolean(this._selectionModel?.isEmpty());
74
+ }
75
+ get selected() {
76
+ return this.multiSelect() ? this._selectionModel?.selected : this._selectionModel?.selected?.[0] || [];
77
+ }
78
+ get _triggerValue() {
79
+ if (this._empty) {
80
+ return '';
81
+ }
82
+ if (this.multiSelect()) {
83
+ const selectedOptions = this._selectionModel?.selected?.map((option) => option.viewValue());
84
+ return selectedOptions?.join(', ') || '';
85
+ }
86
+ return this._selectionModel?.selected?.[0].viewValue() || '';
87
+ }
88
+ constructor() {
89
+ super();
90
+ this._defaultConfig = this._getDefaultConfig(defaultConfig, IDS_SELECT_DEFAULT_CONFIG);
91
+ this._elementRef = inject(ElementRef);
92
+ this._changeDetectorRef = inject(ChangeDetectorRef);
93
+ this._liveAnnouncer = inject(LiveAnnouncer);
94
+ this._parentFormField = inject(IdsFormFieldComponent);
95
+ this._parentForm = inject(NgForm, { optional: true });
96
+ this._parentFormGroup = inject(FormGroupDirective, { optional: true });
97
+ this._connectedPositions = selectConnectedPositions;
98
+ this.errorStateChanges = new Subject();
99
+ this.successStateChanges = new Subject();
100
+ this._overlayWidth = 0;
101
+ this.multiSelect = input(false);
102
+ this.placeholder = input('');
103
+ this.required = input(false, { transform: coerceBooleanAttribute });
104
+ this.readonly = input(false, { transform: coerceBooleanAttribute });
105
+ this.canHandleSuccessState = input(false);
106
+ this.errorStateMatcher = input(inject(this._defaultConfig.errorStateMatcher));
107
+ this.successStateMatcher = input(inject(this._defaultConfig.successStateMatcher));
108
+ this.ariaLabel = input('', { alias: 'aria-label' });
109
+ this.ariaLabelledby = input('', { alias: 'aria-labelledby' });
110
+ this.valueCompareFn = input((o1, o2) => o1 === o2);
111
+ this.sortCompareFn = input();
112
+ this.tabIndex = input(0, { transform: coerceNumberAttribute });
113
+ this.typeaheadDebounceInterval = input(this._defaultConfig.typeaheadDebounceInterval, { transform: coerceNumberAttribute });
114
+ this.disabled = signal(false);
115
+ this.isPanelOpen = signal(false);
116
+ this.hasErrorState = signal(false);
117
+ this.hasSuccessState = signal(false);
118
+ this.parentSize = computed(() => this._parentFormField.parentOrSelfSize());
119
+ this.parentVariant = computed(() => this._parentFormField.parentOrSelfVariant());
120
+ this._focused = signal(false);
121
+ this._canOpen = computed(() => !this.isPanelOpen() && !this.disabled() && !this.readonly() && this.options().length > 0);
122
+ this._hostClasses = computed(() => this._getHostClasses([
123
+ this.parentSize(),
124
+ this.parentVariant(),
125
+ this.disabled() ? 'disabled' : null,
126
+ this.readonly() ? 'readonly' : null,
127
+ ], [formFieldControlClass]));
128
+ this._panelClasses = computed(() => createClassList(`${this._hostClassName}-panel`, [
129
+ this.parentSize(),
130
+ this.parentVariant(),
131
+ ]));
132
+ this._panel = viewChild('panel');
133
+ this._overlayDir = viewChild(CdkConnectedOverlay);
134
+ this.options = contentChildren(IdsOptionComponent, { descendants: true });
135
+ this.optionGroups = contentChildren(IDS_OPTION_GROUP, { descendants: true });
136
+ this._customTrigger = contentChild(IdsSelectTriggerDirective);
137
+ this.ngControl = null;
138
+ this._onChange = () => { };
139
+ this._onTouched = () => { };
140
+ this._skipPredicate = (option) => {
141
+ if (this.isPanelOpen()) {
142
+ return false;
143
+ }
144
+ return option.disabledInput();
145
+ };
146
+ this.onContainerClick = () => {
147
+ this.focus();
148
+ this.open();
149
+ };
150
+ effect(() => {
151
+ this._keyManager?.withTypeAhead(this.typeaheadDebounceInterval());
152
+ });
153
+ }
154
+ ngOnInit() {
155
+ if (!this._parentFormField) {
156
+ throw this._createHostError('Select must be in a form field');
157
+ }
158
+ this._selectionModel = new SelectionModel(this.multiSelect(), undefined, false, this.valueCompareFn());
159
+ this._initErrorStateTracker();
160
+ this._initSuccessStateTracker();
161
+ }
162
+ ngAfterContentInit() {
163
+ this._initKeyManager();
164
+ this._selectionModel?.select(...this.options().filter((item) => item.selected()));
165
+ this._subscribeOptionChanges();
166
+ }
167
+ ngOnDestroy() {
168
+ this._keyManager?.destroy();
169
+ }
170
+ _initErrorStateTracker() {
171
+ this._errorStateTracker = new ErrorStateTracker(this.errorStateMatcher(), this.ngControl, this._parentFormGroup, this._parentForm, this.errorStateChanges);
172
+ this.errorStateChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.hasErrorState.set(this._errorStateTracker.hasErrorState));
173
+ }
174
+ _initSuccessStateTracker() {
175
+ if (this.canHandleSuccessState()) {
176
+ this._successStateTracker = new SuccessStateTracker(this.successStateMatcher(), this.ngControl, this._parentFormGroup, this._parentForm, this.successStateChanges);
177
+ this.successStateChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.hasSuccessState.set(this._successStateTracker.hasSuccessState));
178
+ }
179
+ }
180
+ _initKeyManager() {
181
+ this._keyManager = new ActiveDescendantKeyManager(this.options())
182
+ .withTypeAhead(this.typeaheadDebounceInterval())
183
+ .withVerticalOrientation()
184
+ .withHorizontalOrientation('ltr')
185
+ .withHomeAndEnd()
186
+ .withPageUpDown()
187
+ .withAllowedModifierKeys(['shiftKey'])
188
+ .skipPredicate(this._skipPredicate);
189
+ this._keyManager.tabOut.subscribe(() => {
190
+ if (this.isPanelOpen()) {
191
+ if (!this.multiSelect() && this._keyManager?.activeItem) {
192
+ this._keyManager.activeItem.selectViaInteraction();
193
+ }
194
+ this.focus();
195
+ this.close();
196
+ }
197
+ });
198
+ this._keyManager.change.subscribe(() => {
199
+ if (this.isPanelOpen() && this._panel()) {
200
+ this._scrollOptionIntoView(this._keyManager?.activeItemIndex || 0);
201
+ }
202
+ });
203
+ }
204
+ _subscribeOptionChanges() {
205
+ this.options().forEach((option) => {
206
+ option.onSelectionChange.subscribe((change) => {
207
+ this._handleOptionChange(change);
208
+ });
209
+ });
210
+ }
211
+ _handleOptionChange(change) {
212
+ const { source, selected, isUserInput } = change;
213
+ if (!this.multiSelect()) {
214
+ this._clearSelection();
215
+ }
216
+ source.selected.set(selected);
217
+ if (isUserInput) {
218
+ this._keyManager?.setActiveItem(source);
219
+ }
220
+ if (isUserInput && !this.multiSelect() && this.isPanelOpen()) {
221
+ this.close();
222
+ this.focus();
223
+ }
224
+ if (this.multiSelect()) {
225
+ this._sortValues();
226
+ if (isUserInput) {
227
+ this.focus();
228
+ }
229
+ }
230
+ if (selected) {
231
+ this._selectionModel?.select(source);
232
+ }
233
+ else {
234
+ this._selectionModel?.deselect(source);
235
+ }
236
+ this._handleChange();
237
+ this._onTouched();
238
+ }
239
+ _handleKeydown(event) {
240
+ if (!this.disabled() && !this.readonly()) {
241
+ this.isPanelOpen() ? this._handleOpenedPanelKeydown(event) : this._handleClosedPanelKeydown(event);
242
+ }
243
+ }
244
+ _handleClosedPanelKeydown(event) {
245
+ const manager = this._keyManager;
246
+ const key = event.key;
247
+ const isArrowKey = key === 'ArrowDown' ||
248
+ key === 'ArrowUp' ||
249
+ key === 'ArrowLeft' ||
250
+ key === 'ArrowRight';
251
+ const isOpenKey = key === 'Enter' || key === ' ';
252
+ if ((!manager?.isTyping() && isOpenKey && !hasModifierKey(event)) || isArrowKey) {
253
+ event.preventDefault();
254
+ this.open();
255
+ }
256
+ else if (!this.multiSelect()) {
257
+ const previouslySelectedOption = this.selected;
258
+ manager?.onKeydown(event);
259
+ const selectedOption = this.selected;
260
+ if (selectedOption && previouslySelectedOption !== selectedOption) {
261
+ // eslint-disable-next-line no-magic-numbers
262
+ this._liveAnnouncer.announce(selectedOption.viewValue(), 10000);
263
+ }
264
+ }
265
+ }
266
+ _handleOpenedPanelKeydown(event) {
267
+ const manager = this._keyManager;
268
+ const key = event.key;
269
+ const isArrowKey = key === 'ArrowDown' || key === 'ArrowUp';
270
+ const isTyping = manager?.isTyping();
271
+ if (isArrowKey && event.altKey) {
272
+ event.preventDefault();
273
+ this.close();
274
+ }
275
+ else if (!isTyping &&
276
+ (key === 'Enter' || key === ' ') &&
277
+ manager?.activeItem &&
278
+ !hasModifierKey(event)) {
279
+ event.preventDefault();
280
+ manager.activeItem.selectViaInteraction();
281
+ }
282
+ else if (!isTyping && this.multiSelect() && key === 'a' && event.ctrlKey) {
283
+ event.preventDefault();
284
+ const hasDeselectedOptions = this.options().some((opt) => !opt.disabled && !opt.selected());
285
+ this.options().forEach((option) => {
286
+ if (!option.disabled) {
287
+ hasDeselectedOptions ? option.select() : option.deselect();
288
+ }
289
+ });
290
+ }
291
+ else {
292
+ const previouslyFocusedIndex = manager?.activeItemIndex;
293
+ manager?.onKeydown(event);
294
+ if (this.multiSelect() &&
295
+ isArrowKey &&
296
+ event.shiftKey &&
297
+ manager?.activeItem &&
298
+ manager?.activeItemIndex !== previouslyFocusedIndex) {
299
+ manager?.activeItem.selectViaInteraction();
300
+ }
301
+ }
302
+ }
303
+ _positioningSettled() {
304
+ this._scrollOptionIntoView(this._keyManager?.activeItemIndex || 0);
305
+ }
306
+ _scrollOptionIntoView(index) {
307
+ const option = this.options()[index];
308
+ if (option) {
309
+ const panel = this._panel().nativeElement;
310
+ const labelCount = _countGroupLabelsBeforeOption(index, this.options(), this.optionGroups());
311
+ const element = option.getHostElement();
312
+ if (index === 0 && labelCount === 1) {
313
+ panel.scrollTop = 0;
314
+ }
315
+ else {
316
+ panel.scrollTop = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, panel.scrollTop, panel.offsetHeight);
317
+ }
318
+ }
319
+ }
320
+ _sortValues() {
321
+ if (this.multiSelect()) {
322
+ const options = this.options();
323
+ const sortComparator = this.sortCompareFn();
324
+ this._selectionModel?.sort((a, b) => (sortComparator
325
+ ? sortComparator(a, b, options)
326
+ : options.indexOf(a) - options.indexOf(b)));
327
+ }
328
+ }
329
+ _getOverlayWidth(preferredOrigin) {
330
+ const refToMeasure = preferredOrigin instanceof CdkOverlayOrigin
331
+ ? preferredOrigin.elementRef
332
+ : preferredOrigin || this._elementRef;
333
+ return refToMeasure.nativeElement.getBoundingClientRect().width;
334
+ }
335
+ _panelAttached() {
336
+ this._overlayDir()?.positionChange.pipe(first()).subscribe(() => {
337
+ this._changeDetectorRef.detectChanges();
338
+ this._positioningSettled();
339
+ });
340
+ }
341
+ toggle() {
342
+ this.isPanelOpen() ? this.close() : this.open();
343
+ }
344
+ open() {
345
+ if (!this._canOpen()) {
346
+ return;
347
+ }
348
+ if (this._parentFormField) {
349
+ this._preferredOverlayOrigin = this._parentFormField?.getConnectedOverlayOrigin();
350
+ }
351
+ this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);
352
+ this.isPanelOpen.set(true);
353
+ this._keyManager?.withHorizontalOrientation(null);
354
+ this._highlightCorrectOption();
355
+ this._changeDetectorRef.markForCheck();
356
+ }
357
+ close() {
358
+ if (this.isPanelOpen()) {
359
+ this.isPanelOpen.set(false);
360
+ this._keyManager?.withHorizontalOrientation('ltr');
361
+ this._changeDetectorRef.markForCheck();
362
+ this._onTouched();
363
+ }
364
+ }
365
+ writeValue(value) {
366
+ this._setSelectionByValue(value);
367
+ }
368
+ registerOnChange(fn) {
369
+ this._onChange = fn;
370
+ }
371
+ registerOnTouched(fn) {
372
+ this._onTouched = fn;
373
+ }
374
+ setDisabledState(isDisabled) {
375
+ this.disabled.set(isDisabled);
376
+ }
377
+ _setSelectionByValue(value) {
378
+ this.options().forEach((option) => option.setInactiveStyles());
379
+ this._selectionModel?.clear();
380
+ this._rawValue = value;
381
+ if (this.options().length === 0) {
382
+ return;
383
+ }
384
+ if (this.multiSelect() && value) {
385
+ if (!Array.isArray(value)) {
386
+ throw this._createHostError('value must be an array in multiple-selection mode');
387
+ }
388
+ value.forEach((currentValue) => this._selectValue(currentValue));
389
+ this._sortValues();
390
+ }
391
+ else {
392
+ const correspondingOption = this._selectValue(value);
393
+ if (correspondingOption) {
394
+ this._keyManager?.updateActiveItem(correspondingOption);
395
+ }
396
+ else if (!this.isPanelOpen()) {
397
+ this._keyManager?.updateActiveItem(-1);
398
+ }
399
+ }
400
+ }
401
+ _selectValue(value) {
402
+ const correspondingOption = this.options().find((option) => {
403
+ if (this._selectionModel?.isSelected(option)) {
404
+ return false;
405
+ }
406
+ try {
407
+ const valueCompareFn = this.valueCompareFn();
408
+ return option.value() != null && valueCompareFn && valueCompareFn(option.value(), value);
409
+ }
410
+ catch (error) {
411
+ if (isDevMode()) {
412
+ console.warn(error);
413
+ }
414
+ return false;
415
+ }
416
+ });
417
+ if (correspondingOption) {
418
+ correspondingOption.selected.set(true);
419
+ this._selectionModel?.select(correspondingOption);
420
+ }
421
+ return correspondingOption;
422
+ }
423
+ _clearSelection() {
424
+ this._selectionModel?.clear();
425
+ this.options().forEach((option) => {
426
+ option.selected.set(false);
427
+ });
428
+ }
429
+ _handleChange() {
430
+ const selectionModelValues = this._selectionModel?.selected?.map((item) => item.value());
431
+ if (this.multiSelect()) {
432
+ this._onChange(selectionModelValues);
433
+ }
434
+ else {
435
+ this._onChange(selectionModelValues?.[0]);
436
+ }
437
+ this._changeDetectorRef.markForCheck();
438
+ }
439
+ _highlightCorrectOption() {
440
+ if (this._keyManager) {
441
+ if (this._empty) {
442
+ let firstEnabledOptionIndex = -1;
443
+ for (let index = 0; index < this.options().length; index++) {
444
+ const option = this.options()[index];
445
+ if (!option.disabled) {
446
+ firstEnabledOptionIndex = index;
447
+ break;
448
+ }
449
+ }
450
+ this._keyManager.setActiveItem(firstEnabledOptionIndex);
451
+ }
452
+ else {
453
+ if (this._selectionModel) {
454
+ this._keyManager.setActiveItem(this._selectionModel.selected[0]);
455
+ }
456
+ }
457
+ }
458
+ }
459
+ isOptionPreSelectedByValue(optionValue) {
460
+ if (this._rawValue === undefined) {
461
+ return false;
462
+ }
463
+ if (this.multiSelect() && Array.isArray(this._rawValue)) {
464
+ return this._rawValue.some((value) => optionValue != null && value === optionValue);
465
+ }
466
+ return optionValue === this._rawValue;
467
+ }
468
+ setDescribedByIds(ids) {
469
+ if (ids.length) {
470
+ this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));
471
+ }
472
+ else {
473
+ this._elementRef.nativeElement.removeAttribute('aria-describedby');
474
+ }
475
+ }
476
+ _onFocus() {
477
+ if (!this.disabled()) {
478
+ this._focused.set(true);
479
+ }
480
+ }
481
+ _onBlur() {
482
+ this._focused.set(false);
483
+ this._keyManager?.cancelTypeahead();
484
+ if (!this.disabled() && !this.isPanelOpen()) {
485
+ this._onTouched();
486
+ this._changeDetectorRef.markForCheck();
487
+ }
488
+ }
489
+ _getAriaActiveDescendant() {
490
+ if (this.isPanelOpen() && this._keyManager?.activeItem) {
491
+ return this._keyManager.activeItem.id();
492
+ }
493
+ return null;
494
+ }
495
+ focus(options) {
496
+ this._elementRef.nativeElement.focus(options);
497
+ }
498
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
499
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.2", type: IdsSelectComponent, isStandalone: true, selector: "ids-select[ngModel]:not([formControl]):not([formControlName]),\n ids-select[formControl]:not([ngModel]):not([formControlName]),\n ids-select[formControlName]:not([ngModel]):not([formControl])", inputs: { multiSelect: { classPropertyName: "multiSelect", publicName: "multiSelect", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, canHandleSuccessState: { classPropertyName: "canHandleSuccessState", publicName: "canHandleSuccessState", isSignal: true, isRequired: false, transformFunction: null }, errorStateMatcher: { classPropertyName: "errorStateMatcher", publicName: "errorStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, successStateMatcher: { classPropertyName: "successStateMatcher", publicName: "successStateMatcher", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, valueCompareFn: { classPropertyName: "valueCompareFn", publicName: "valueCompareFn", isSignal: true, isRequired: false, transformFunction: null }, sortCompareFn: { classPropertyName: "sortCompareFn", publicName: "sortCompareFn", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, typeaheadDebounceInterval: { classPropertyName: "typeaheadDebounceInterval", publicName: "typeaheadDebounceInterval", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "select", "aria-autocomplete": "none", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "focus()", "blur": "_onBlur()" }, properties: { "attr.tabindex": "disabled() ? -1 : tabIndex()", "attr.aria-controls": "isPanelOpen() ? id() + \"-panel\" : null", "attr.aria-owns": "isPanelOpen() ? id() + \"-panel\" : null", "attr.aria-expanded": "isPanelOpen()", "attr.aria-label": "ariaLabel() || null", "attr.aria-labelledby": "ariaLabelledby() || null", "attr.aria-required": "required().toString()", "attr.aria-disabled": "disabled().toString()", "attr.aria-invalid": "hasErrorState()", "attr.aria-activedescendant": "_getAriaActiveDescendant()" } }, providers: [
500
+ { provide: IDS_FORM_FIELD_CONTROL, useExisting: IdsSelectComponent },
501
+ { provide: IDS_OPTION_PARENT_COMPONENT, useExisting: IdsSelectComponent },
502
+ {
503
+ provide: NG_VALUE_ACCESSOR,
504
+ useExisting: forwardRef(() => IdsSelectComponent),
505
+ multi: true,
506
+ },
507
+ ], queries: [{ propertyName: "options", predicate: IdsOptionComponent, descendants: true, isSignal: true }, { propertyName: "optionGroups", predicate: IDS_OPTION_GROUP, descendants: true, isSignal: true }, { propertyName: "_customTrigger", first: true, predicate: IdsSelectTriggerDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }, { propertyName: "_overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #trigger #fallbackOverlayOrigin=\"cdkOverlayOrigin\" cdk-overlay-origin class=\"ids-select__trigger\" (click)=\"open()\">\n <div class=\"ids-select__value\">\n @if (_empty) {\n <span class=\"ids-select__placeholder\">{{ placeholder() }}</span>\n } @else {\n <span class=\"ids-select__value-text\">\n @if (_customTrigger()) {\n <ng-content select=\"ids-select-trigger\" />\n } @else {\n {{ _triggerValue }}\n }\n </span>\n }\n </div>\n\n <div class=\"ids-select__arrow\">\n <ids-icon fontIcon=\"chevron-down\" />\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isPanelOpen()\"\n [cdkConnectedOverlayPositions]=\"_connectedPositions\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayPush]=\"true\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"_panelAttached()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id() + '-panel'\"\n [attr.aria-multiselectable]=\"multiSelect()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [class]=\"_panelClasses()\"\n (keydown)=\"_handleKeydown($event)\"\n >\n <ng-content />\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: IdsIconComponent, selector: "ids-icon", inputs: ["size", "sizeCollection", "variant", "fontIcon", "svgIcon", "aria-hidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
508
+ }
509
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: IdsSelectComponent, decorators: [{
510
+ type: Component,
511
+ args: [{ selector: `ids-select[ngModel]:not([formControl]):not([formControlName]),
512
+ ids-select[formControl]:not([ngModel]):not([formControlName]),
513
+ ids-select[formControlName]:not([ngModel]):not([formControl])`, imports: [
514
+ CdkOverlayOrigin,
515
+ CdkConnectedOverlay,
516
+ IdsIconComponent,
517
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
518
+ { provide: IDS_FORM_FIELD_CONTROL, useExisting: IdsSelectComponent },
519
+ { provide: IDS_OPTION_PARENT_COMPONENT, useExisting: IdsSelectComponent },
520
+ {
521
+ provide: NG_VALUE_ACCESSOR,
522
+ useExisting: forwardRef(() => IdsSelectComponent),
523
+ multi: true,
524
+ },
525
+ ], host: {
526
+ 'role': 'select',
527
+ 'aria-autocomplete': 'none',
528
+ 'aria-haspopup': 'listbox',
529
+ '[attr.tabindex]': 'disabled() ? -1 : tabIndex()',
530
+ '[attr.aria-controls]': 'isPanelOpen() ? id() + "-panel" : null',
531
+ '[attr.aria-owns]': 'isPanelOpen() ? id() + "-panel" : null',
532
+ '[attr.aria-expanded]': 'isPanelOpen()',
533
+ '[attr.aria-label]': 'ariaLabel() || null',
534
+ '[attr.aria-labelledby]': 'ariaLabelledby() || null',
535
+ '[attr.aria-required]': 'required().toString()',
536
+ '[attr.aria-disabled]': 'disabled().toString()',
537
+ '[attr.aria-invalid]': 'hasErrorState()',
538
+ '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',
539
+ '(keydown)': '_handleKeydown($event)',
540
+ '(focus)': 'focus()',
541
+ '(blur)': '_onBlur()',
542
+ }, template: "<div #trigger #fallbackOverlayOrigin=\"cdkOverlayOrigin\" cdk-overlay-origin class=\"ids-select__trigger\" (click)=\"open()\">\n <div class=\"ids-select__value\">\n @if (_empty) {\n <span class=\"ids-select__placeholder\">{{ placeholder() }}</span>\n } @else {\n <span class=\"ids-select__value-text\">\n @if (_customTrigger()) {\n <ng-content select=\"ids-select-trigger\" />\n } @else {\n {{ _triggerValue }}\n }\n </span>\n }\n </div>\n\n <div class=\"ids-select__arrow\">\n <ids-icon fontIcon=\"chevron-down\" />\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isPanelOpen()\"\n [cdkConnectedOverlayPositions]=\"_connectedPositions\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayPush]=\"true\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"_panelAttached()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id() + '-panel'\"\n [attr.aria-multiselectable]=\"multiSelect()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [class]=\"_panelClasses()\"\n (keydown)=\"_handleKeydown($event)\"\n >\n <ng-content />\n </div>\n</ng-template>\n" }]
543
+ }], ctorParameters: () => [] });
544
+
545
+ /**
546
+ * Generated bundle index. Do not edit.
547
+ */
548
+
549
+ export { IDS_SELECT_DEFAULT_CONFIG, IDS_SELECT_DEFAULT_CONFIG_FACTORY, IdsSelectComponent, IdsSelectTriggerDirective };
550
+ //# sourceMappingURL=i-cell-ids-angular-select.mjs.map