@fundamental-ngx/core 0.49.1 → 0.49.2

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 (310) hide show
  1. package/avatar-group-legacy/avatar-group-legacy.component.d.ts +6 -6
  2. package/avatar-group-legacy/directives/avatar-group-legacy-overflow-body.directive.d.ts +2 -2
  3. package/avatar-group-legacy/directives/avatar-group-legacy-overflow-button.directive.d.ts +2 -2
  4. package/bar/bar.component.d.ts +6 -6
  5. package/bar/button-bar/button-bar.component.d.ts +4 -4
  6. package/calendar/calendar-header/calendar-header.component.d.ts +2 -2
  7. package/card/card-content.component.d.ts +2 -2
  8. package/card/card-counter.directive.d.ts +2 -2
  9. package/card/card-header.component.d.ts +6 -6
  10. package/card/card-loader.component.d.ts +2 -2
  11. package/card/card-second-subtitle.directive.d.ts +2 -2
  12. package/card/card-subtitle.directive.d.ts +2 -2
  13. package/card/card-title.directive.d.ts +2 -2
  14. package/card/card.component.d.ts +3 -3
  15. package/card/kpi/card-kpi-analytics-content.directive.d.ts +2 -2
  16. package/card/kpi/card-kpi-analytics-label.directive.d.ts +2 -2
  17. package/card/kpi/card-kpi-analytics.directive.d.ts +2 -2
  18. package/card/kpi/card-kpi-header.component.d.ts +2 -2
  19. package/card/kpi/card-kpi-scale-icon.directive.d.ts +2 -2
  20. package/card/kpi/card-kpi-scale-text.directive.d.ts +2 -2
  21. package/card/kpi/card-kpi-value.directive.d.ts +4 -4
  22. package/checkbox/checkbox/checkbox.component.d.ts +3 -5
  23. package/content-density/providers/url-content-density-storage.d.ts +4 -4
  24. package/content-density/services/content-density-observer.service.d.ts +15 -15
  25. package/datetime/datetime-adapter.d.ts +9 -2
  26. package/datetime/fd-date.d.ts +10 -14
  27. package/datetime/fd-datetime-adapter.d.ts +2 -2
  28. package/dialog/base/dialog-base.class.d.ts +2 -2
  29. package/dialog/base/dialog-header-base.class.d.ts +4 -4
  30. package/dialog/base/dialog-ref-base.class.d.ts +6 -4
  31. package/dynamic-side-content/dynamic-side-content.component.d.ts +4 -4
  32. package/esm2022/avatar-group-legacy/avatar-group-legacy.component.mjs +15 -15
  33. package/esm2022/avatar-group-legacy/directives/avatar-group-legacy-overflow-body.directive.mjs +12 -12
  34. package/esm2022/avatar-group-legacy/directives/avatar-group-legacy-overflow-button.directive.mjs +9 -9
  35. package/esm2022/bar/bar.component.mjs +13 -13
  36. package/esm2022/bar/button-bar/button-bar.component.mjs +3 -3
  37. package/esm2022/calendar/calendar-header/calendar-header.component.mjs +1 -1
  38. package/esm2022/card/card-content.component.mjs +5 -5
  39. package/esm2022/card/card-counter.directive.mjs +6 -6
  40. package/esm2022/card/card-header.component.mjs +5 -5
  41. package/esm2022/card/card-loader.component.mjs +5 -5
  42. package/esm2022/card/card-second-subtitle.directive.mjs +5 -5
  43. package/esm2022/card/card-subtitle.directive.mjs +5 -5
  44. package/esm2022/card/card-title.directive.mjs +5 -5
  45. package/esm2022/card/card.component.mjs +5 -5
  46. package/esm2022/card/kpi/card-kpi-analytics-content.directive.mjs +5 -5
  47. package/esm2022/card/kpi/card-kpi-analytics-label.directive.mjs +5 -5
  48. package/esm2022/card/kpi/card-kpi-analytics.directive.mjs +5 -5
  49. package/esm2022/card/kpi/card-kpi-header.component.mjs +5 -5
  50. package/esm2022/card/kpi/card-kpi-scale-icon.directive.mjs +5 -5
  51. package/esm2022/card/kpi/card-kpi-scale-text.directive.mjs +5 -5
  52. package/esm2022/card/kpi/card-kpi-value.directive.mjs +5 -5
  53. package/esm2022/checkbox/checkbox/checkbox.component.mjs +1 -1
  54. package/esm2022/combobox/combobox.component.mjs +2 -2
  55. package/esm2022/content-density/providers/url-content-density-storage.mjs +11 -11
  56. package/esm2022/content-density/services/content-density-observer.service.mjs +7 -16
  57. package/esm2022/datetime/datetime-adapter.mjs +4 -2
  58. package/esm2022/datetime/fd-date.mjs +34 -27
  59. package/esm2022/datetime/fd-datetime-adapter.mjs +1 -1
  60. package/esm2022/dialog/base/dialog-base.class.mjs +1 -1
  61. package/esm2022/dialog/base/dialog-header-base.class.mjs +1 -1
  62. package/esm2022/dialog/base/dialog-ref-base.class.mjs +4 -8
  63. package/esm2022/dynamic-side-content/dynamic-side-content.component.mjs +9 -9
  64. package/esm2022/feed-input/directives/feed-input-avatar.directive.mjs +5 -5
  65. package/esm2022/feed-list-item/components/list/feed-list.component.mjs +15 -15
  66. package/esm2022/file-uploader/directives/file-uploader-select.directive.mjs +1 -1
  67. package/esm2022/file-uploader/file-uploader.component.mjs +5 -5
  68. package/esm2022/fixed-card-layout/fixed-card-layout-item/fixed-card-layout-item.component.mjs +3 -3
  69. package/esm2022/form/form-group/form-group.component.mjs +8 -8
  70. package/esm2022/form/form-message/form-message.component.mjs +9 -9
  71. package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +2 -3
  72. package/esm2022/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
  73. package/esm2022/illustrated-message/illustrated-message.component.mjs +10 -10
  74. package/esm2022/input-group/input-group-directives.mjs +22 -22
  75. package/esm2022/layout-grid/directives/layout-grid-col.directive.mjs +9 -9
  76. package/esm2022/layout-grid/layout-grid.component.mjs +9 -9
  77. package/esm2022/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +9 -9
  78. package/esm2022/list/list-item/list-item.component.mjs +20 -17
  79. package/esm2022/list/list-message.directive.mjs +9 -9
  80. package/esm2022/menu/directives/segmented-button/segmented-button-header.directive.mjs +1 -2
  81. package/esm2022/menu/directives/toggle-button.directive.mjs +1 -2
  82. package/esm2022/message-box/message-box.component.mjs +17 -17
  83. package/esm2022/message-page/message-page.component.mjs +5 -5
  84. package/esm2022/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +5 -5
  85. package/esm2022/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.mjs +1 -1
  86. package/esm2022/message-strip/alert/message-strip-alert.service.mjs +2 -3
  87. package/esm2022/message-strip/message-strip.component.mjs +16 -16
  88. package/esm2022/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +43 -45
  89. package/esm2022/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.mjs +1 -1
  90. package/esm2022/micro-process-flow/micro-process-flow-focusable-item.directive.mjs +13 -13
  91. package/esm2022/multi-combobox/multi-combobox.component.mjs +2 -5
  92. package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
  93. package/esm2022/multi-input/multi-input.component.mjs +2 -2
  94. package/esm2022/nested-list/nested-content/nested-list-content.directive.mjs +6 -6
  95. package/esm2022/nested-list/nested-item/nested-item.directive.mjs +3 -3
  96. package/esm2022/nested-list/nested-list/nested-list.directive.mjs +3 -3
  97. package/esm2022/notification/directives/notification-indicator.directive.mjs +9 -9
  98. package/esm2022/notification/notification/notification.component.mjs +9 -9
  99. package/esm2022/notification/notification-group/notification-group.component.mjs +5 -5
  100. package/esm2022/notification/notification-service/notification.service.mjs +5 -2
  101. package/esm2022/notification/notification-utils/notification-ref.mjs +2 -5
  102. package/esm2022/object-number/object-number.component.mjs +9 -9
  103. package/esm2022/object-status/object-status.component.mjs +13 -12
  104. package/esm2022/overflow-layout/directives/overflow-expand.directive.mjs +5 -5
  105. package/esm2022/overflow-layout/directives/overflow-item-ref.directive.mjs +1 -1
  106. package/esm2022/overflow-layout/directives/overflow-layout-focusable-item.directive.mjs +5 -5
  107. package/esm2022/overflow-layout/directives/overflow-layout-item-container.directive.mjs +8 -8
  108. package/esm2022/overflow-layout/interfaces/overflow-focusable-item.interface.mjs +1 -1
  109. package/esm2022/overflow-layout/overflow-layout.component.mjs +18 -18
  110. package/esm2022/radio/radio-button/radio-button.component.mjs +8 -9
  111. package/esm2022/rating-indicator/components/rating-indicator.component.mjs +28 -28
  112. package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +23 -23
  113. package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +7 -8
  114. package/esm2022/select/select.component.mjs +18 -18
  115. package/esm2022/shared/interfaces/search-component.interface.mjs +1 -1
  116. package/esm2022/shellbar/shellbar.component.mjs +7 -7
  117. package/esm2022/side-navigation/side-navigation.component.mjs +7 -7
  118. package/esm2022/skeleton/components/skeleton.component.mjs +3 -3
  119. package/esm2022/status-indicator/status-indicator.component.mjs +15 -15
  120. package/esm2022/table/directives/table-responsive-wrapper.directive.mjs +3 -3
  121. package/esm2022/tabs/tab-item/tab-item.directive.mjs +9 -9
  122. package/esm2022/tabs/tab-link/tab-link.directive.mjs +8 -8
  123. package/esm2022/tabs/tab-nav/tab-nav.component.mjs +15 -15
  124. package/esm2022/tabs/tab-panel/tab-panel.component.mjs +3 -3
  125. package/esm2022/tabs/tab-utils/tab-directives.mjs +8 -8
  126. package/esm2022/tile/directives/tile.directives.mjs +25 -25
  127. package/esm2022/tile/tile.component.mjs +9 -11
  128. package/esm2022/time/time-column/time-column.component.mjs +23 -23
  129. package/esm2022/timeline/services/position-strategies/base-strategy.mjs +1 -1
  130. package/esm2022/timeline/timeline.component.mjs +5 -5
  131. package/esm2022/title/title.component.mjs +4 -4
  132. package/esm2022/token/tokenizer.component.mjs +71 -71
  133. package/esm2022/toolbar/toolbar.component.mjs +3 -3
  134. package/esm2022/tree/components/tree-item/tree-item.component.mjs +4 -6
  135. package/esm2022/tree/tree.component.mjs +1 -4
  136. package/esm2022/upload-collection/upload-collection-item.directive.mjs +3 -3
  137. package/esm2022/vertical-navigation/vertical-navigation.component.mjs +6 -6
  138. package/esm2022/wizard/wizard-step/wizard-step.component.mjs +3 -3
  139. package/feed-input/directives/feed-input-avatar.directive.d.ts +2 -2
  140. package/feed-list-item/components/list/feed-list.component.d.ts +6 -6
  141. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +33 -33
  142. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
  143. package/fesm2022/fundamental-ngx-core-bar.mjs +14 -14
  144. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  145. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  146. package/fesm2022/fundamental-ngx-core-card.mjs +61 -61
  147. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  148. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
  150. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-core-content-density.mjs +17 -26
  152. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-core-datetime.mjs +36 -27
  154. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-core-dialog.mjs +3 -7
  156. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +8 -8
  158. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  159. package/fesm2022/fundamental-ngx-core-feed-input.mjs +4 -4
  160. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  161. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +14 -14
  162. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  163. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +4 -4
  164. package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  165. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
  166. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  167. package/fesm2022/fundamental-ngx-core-form.mjs +15 -15
  168. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  169. package/fesm2022/fundamental-ngx-core-grid-list.mjs +3 -4
  170. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  171. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +9 -9
  172. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  173. package/fesm2022/fundamental-ngx-core-input-group.mjs +21 -21
  174. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  175. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +16 -16
  176. package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  177. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +8 -8
  178. package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  179. package/fesm2022/fundamental-ngx-core-list.mjs +27 -24
  180. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  181. package/fesm2022/fundamental-ngx-core-menu.mjs +0 -2
  182. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  183. package/fesm2022/fundamental-ngx-core-message-box.mjs +16 -16
  184. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  185. package/fesm2022/fundamental-ngx-core-message-page.mjs +4 -4
  186. package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
  187. package/fesm2022/fundamental-ngx-core-message-strip.mjs +20 -21
  188. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  189. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +55 -57
  190. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  191. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +1 -4
  192. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  193. package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
  194. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  195. package/fesm2022/fundamental-ngx-core-nested-list.mjs +9 -9
  196. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  197. package/fesm2022/fundamental-ngx-core-notification.mjs +25 -25
  198. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  199. package/fesm2022/fundamental-ngx-core-object-number.mjs +8 -8
  200. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  201. package/fesm2022/fundamental-ngx-core-object-status.mjs +12 -11
  202. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  203. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +32 -32
  204. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  205. package/fesm2022/fundamental-ngx-core-radio.mjs +7 -8
  206. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  207. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +27 -27
  208. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  209. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +28 -29
  210. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  211. package/fesm2022/fundamental-ngx-core-select.mjs +17 -17
  212. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  213. package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
  214. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  215. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +6 -6
  216. package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  217. package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
  218. package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
  219. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +14 -14
  220. package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  221. package/fesm2022/fundamental-ngx-core-table.mjs +2 -2
  222. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  223. package/fesm2022/fundamental-ngx-core-tabs.mjs +38 -38
  224. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  225. package/fesm2022/fundamental-ngx-core-tile.mjs +32 -34
  226. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  227. package/fesm2022/fundamental-ngx-core-time.mjs +23 -23
  228. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  229. package/fesm2022/fundamental-ngx-core-timeline.mjs +4 -4
  230. package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
  231. package/fesm2022/fundamental-ngx-core-title.mjs +3 -3
  232. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  233. package/fesm2022/fundamental-ngx-core-token.mjs +70 -70
  234. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  235. package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
  236. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  237. package/fesm2022/fundamental-ngx-core-tree.mjs +3 -8
  238. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  239. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
  240. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  241. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +5 -5
  242. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  243. package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
  244. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  245. package/file-uploader/directives/file-uploader-select.directive.d.ts +1 -1
  246. package/file-uploader/file-uploader.component.d.ts +4 -4
  247. package/form/form-group/form-group.component.d.ts +4 -4
  248. package/form/form-message/form-message.component.d.ts +2 -2
  249. package/grid-list/components/grid-list/grid-list.component.d.ts +3 -2
  250. package/grid-list/components/grid-list-item/grid-list-item.component.d.ts +8 -8
  251. package/illustrated-message/illustrated-message.component.d.ts +7 -7
  252. package/input-group/input-group-directives.d.ts +12 -12
  253. package/layout-grid/directives/layout-grid-col.directive.d.ts +2 -2
  254. package/layout-grid/layout-grid.component.d.ts +2 -2
  255. package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +2 -2
  256. package/list/list-item/list-item.component.d.ts +13 -13
  257. package/list/list-message.directive.d.ts +4 -4
  258. package/message-box/message-box.component.d.ts +5 -5
  259. package/message-page/message-page.component.d.ts +2 -2
  260. package/message-strip/alert/message-strip-alert/message-strip-alert.component.d.ts +4 -4
  261. package/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.d.ts +4 -4
  262. package/message-strip/alert/message-strip-alert.service.d.ts +3 -2
  263. package/message-strip/message-strip.component.d.ts +6 -6
  264. package/micro-process-flow/components/micro-process-flow/micro-process-flow.component.d.ts +15 -17
  265. package/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.d.ts +2 -2
  266. package/micro-process-flow/micro-process-flow-focusable-item.directive.d.ts +6 -6
  267. package/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -2
  268. package/nested-list/nested-content/nested-list-content.directive.d.ts +2 -2
  269. package/nested-list/nested-item/nested-item.directive.d.ts +2 -2
  270. package/nested-list/nested-list/nested-list.directive.d.ts +2 -2
  271. package/notification/directives/notification-indicator.directive.d.ts +4 -4
  272. package/notification/notification/notification.component.d.ts +2 -2
  273. package/notification/notification-group/notification-group.component.d.ts +2 -2
  274. package/notification/notification-utils/notification-ref.d.ts +5 -3
  275. package/object-number/object-number.component.d.ts +4 -4
  276. package/object-status/object-status.component.d.ts +5 -4
  277. package/overflow-layout/directives/overflow-expand.directive.d.ts +2 -2
  278. package/overflow-layout/directives/overflow-item-ref.directive.d.ts +2 -2
  279. package/overflow-layout/directives/overflow-layout-focusable-item.directive.d.ts +2 -2
  280. package/overflow-layout/directives/overflow-layout-item-container.directive.d.ts +2 -2
  281. package/overflow-layout/interfaces/overflow-focusable-item.interface.d.ts +1 -1
  282. package/overflow-layout/overflow-layout.component.d.ts +4 -4
  283. package/package.json +3 -3
  284. package/radio/radio-button/radio-button.component.d.ts +7 -7
  285. package/rating-indicator/components/rating-indicator.component.d.ts +12 -12
  286. package/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.d.ts +8 -8
  287. package/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.d.ts +2 -2
  288. package/select/select.component.d.ts +19 -19
  289. package/shared/interfaces/search-component.interface.d.ts +1 -1
  290. package/shellbar/shellbar.component.d.ts +12 -12
  291. package/side-navigation/side-navigation.component.d.ts +2 -2
  292. package/skeleton/components/skeleton.component.d.ts +2 -2
  293. package/status-indicator/status-indicator.component.d.ts +7 -7
  294. package/tabs/tab-item/tab-item.directive.d.ts +2 -2
  295. package/tabs/tab-link/tab-link.directive.d.ts +2 -2
  296. package/tabs/tab-nav/tab-nav.component.d.ts +8 -8
  297. package/tabs/tab-panel/tab-panel.component.d.ts +2 -2
  298. package/tabs/tab-utils/tab-directives.d.ts +5 -5
  299. package/tile/directives/tile.directives.d.ts +12 -12
  300. package/tile/tile.component.d.ts +4 -6
  301. package/time/time-column/time-column.component.d.ts +6 -6
  302. package/timeline/services/position-strategies/base-strategy.d.ts +2 -2
  303. package/timeline/timeline.component.d.ts +2 -2
  304. package/title/title.component.d.ts +2 -2
  305. package/token/tokenizer.component.d.ts +16 -16
  306. package/toolbar/toolbar.component.d.ts +2 -2
  307. package/tree/components/tree-item/tree-item.component.d.ts +10 -9
  308. package/upload-collection/upload-collection-item.directive.d.ts +2 -2
  309. package/vertical-navigation/vertical-navigation.component.d.ts +2 -2
  310. package/wizard/wizard-step/wizard-step.component.d.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-multi-combobox.mjs","sources":["../../../../libs/core/multi-combobox/multi-announcer/multi-announcer.directive.ts","../../../../libs/core/multi-combobox/helpers.ts","../../../../libs/core/multi-combobox/models/selection-change.event.ts","../../../../libs/core/multi-combobox/multi-combobox-config.ts","../../../../libs/core/multi-combobox/base-multi-combobox.class.ts","../../../../libs/core/multi-combobox/multi-combobox.token.ts","../../../../libs/core/multi-combobox/mobile/mobile-multi-combobox.component.ts","../../../../libs/core/multi-combobox/mobile/mobile-multi-combobox.component.html","../../../../libs/core/multi-combobox/data-source/multi-combobox-data-source.ts","../../../../libs/core/multi-combobox/data-source/multi-combobox-data-source-parser.ts","../../../../libs/core/multi-combobox/select-all-toggler/select-all-toggler.component.ts","../../../../libs/core/multi-combobox/multi-combobox.component.ts","../../../../libs/core/multi-combobox/multi-combobox.component.html","../../../../libs/core/multi-combobox/multi-combobox.module.ts","../../../../libs/core/multi-combobox/fundamental-ngx-core-multi-combobox.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ContentChildren, Directive, HostListener, inject, Input, QueryList } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { TokenComponent } from '@fundamental-ngx/core/token';\nimport { resolveTranslationSyncFn } from '@fundamental-ngx/i18n';\n\n@Directive({\n selector: '[fdMultiAnnouncer]',\n exportAs: 'fdMultiAnnouncer',\n standalone: true\n})\nexport class MultiAnnouncerDirective {\n /** @hidden */\n @Input()\n multiAnnouncerOptions: unknown[];\n\n /** @hidden */\n @ContentChildren(TokenComponent, { descendants: true })\n private _tokens: QueryList<TokenComponent>;\n\n /** @hidden */\n private _noResultsAnnounced = false;\n\n /** @hidden */\n private _resultsAnnounced = false;\n\n /** @hidden */\n private _announcement = '';\n\n /** @hidden */\n private readonly _liveAnnouncer: LiveAnnouncer = inject(LiveAnnouncer);\n\n /** @hidden */\n private _resolveTranslation = resolveTranslationSyncFn();\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n private _makeSearchTermChangeAnnouncements(event: KeyboardEvent): void {\n if (KeyUtil.isKeyType(event, 'alphabetical') || KeyUtil.isKeyType(event, 'numeric')) {\n this._liveAnnouncer.clear();\n if (!this.multiAnnouncerOptions.length && !this._noResultsAnnounced) {\n this._buildAnnouncement(this._resolveTranslation('coreMultiInput.noResults'));\n this._noResultsAnnounced = true;\n this._resultsAnnounced = false;\n } else if (this.multiAnnouncerOptions.length) {\n if (this.multiAnnouncerOptions.length === 1) {\n this._buildAnnouncement(\n this._resolveTranslation('coreMultiInput.countListResultsSingular', { count: 1 })\n );\n } else {\n this._buildAnnouncement(\n this._resolveTranslation('coreMultiInput.countListResultsPlural', {\n count: this.multiAnnouncerOptions.length\n })\n );\n }\n this._buildAnnouncement(this._resolveTranslation('coreMultiInput.navigateSelectionsWithArrows'));\n if (!this._resultsAnnounced) {\n this._noResultsAnnounced = false;\n this._resultsAnnounced = true;\n }\n }\n if (this._tokens && this._tokens.length) {\n this._buildAnnouncement(this._resolveTranslation('coreMultiInput.escapeNavigateTokens'));\n }\n this._makeAnnouncement(this._announcement);\n }\n }\n\n /** @hidden */\n private _buildAnnouncement(message: string): void {\n this._announcement = this._announcement + message + ' ';\n }\n\n /** @hidden */\n private async _makeAnnouncement(message: string): Promise<void> {\n await this._liveAnnouncer.announce(message, 'assertive').then(() => {\n this._announcement = '';\n });\n }\n}\n","import { isSelectItem, SelectableOptionItem } from '@fundamental-ngx/cdk/forms';\nimport { isFunction, isJsObject, isString } from '@fundamental-ngx/cdk/utils';\nimport equal from 'fast-deep-equal';\n\n/** @hidden */\nexport function lookupValue(item: unknown, lookupKey: string): string {\n if (isSelectItem(item)) {\n return lookupKey && item ? item.value[lookupKey] : item.value;\n } else {\n return lookupKey && item ? item[lookupKey] : item;\n }\n}\n\n/** @hidden */\nexport function displayValue(item: unknown, displayKey: string): string {\n if (isSelectItem(item)) {\n return item.label;\n } else if (isJsObject(item) && displayKey) {\n const currentItem = objectGet(item, displayKey);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n } else {\n return item as string;\n }\n}\n\n/** @hidden */\nexport function objectGet(obj: unknown, is: string | string[] | undefined): any {\n if (!isJsObject(obj)) {\n return obj;\n } else if (isString(is)) {\n return objectGet(obj, is.split('.'));\n } else if (!is?.length) {\n return obj;\n } else {\n return objectGet(obj[is[0]], is.slice(1));\n }\n}\n\n/** @hidden */\nexport function getSelectItemByInputValue<T>(\n suggestions: SelectableOptionItem<T>[],\n needleValue: string\n): SelectableOptionItem<T> | undefined {\n return suggestions.find((value) => value.label === needleValue);\n}\n\n/** @hidden\n * Map grouped values to array. */\nexport function flattenGroups(items: SelectableOptionItem[]): SelectableOptionItem[] {\n return items.reduce((result, item) => result.concat(item.children ?? []), <SelectableOptionItem[]>[]);\n}\n\n/** @hidden */\nexport function getTokenIndexByIdlOrValue(item: SelectableOptionItem, suggestions: SelectableOptionItem[]): number {\n return suggestions.findIndex((token) => token.id === item.id || equal(token.value, item.value));\n}\n","import { SelectableOptionItem } from '@fundamental-ngx/cdk/forms';\nimport { BaseMultiCombobox } from '../base-multi-combobox.class';\n\nexport class MultiComboboxSelectionChangeEvent {\n /**\n * Multi Combobox selection change event\n * @param source Multi Combobox component\n * @param selectedItems Selected items\n */\n constructor(\n public source: BaseMultiCombobox,\n public selectedItems: SelectableOptionItem['value'] // Contains selected items\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { DataProvider, MatchingStrategy } from '@fundamental-ngx/cdk/data-source';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\n// import { PlatformConfig } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for Multi-Combobox\n */\n@Injectable({ providedIn: 'root' })\nexport class MultiComboboxConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * String matching strategy for typeahead list. Default: 'starts with per term'\n */\n matchingStrategy: MatchingStrategy = MatchingStrategy.STARTS_WITH_PER_TERM;\n\n /**\n * Maps data providers\n */\n providers: Map<string, DataProvider<any>> | null = new Map();\n\n /**\n * Create Provider factory function\n */\n // static createProviderFactory(\n // obj: Partial<MultiComboboxConfig>\n // ): (platformConfig: PlatformConfig) => MultiComboboxConfig {\n // const useFactory = (platformConfig: PlatformConfig): MultiComboboxConfig =>\n // Object.assign(new MultiComboboxConfig(platformConfig), obj);\n // return useFactory;\n // }\n\n /** @hidden */\n // constructor(platformConfig: PlatformConfig) {\n // this.contentDensity = platformConfig.contentDensity;\n // }\n}\n","import {\n ALT,\n BACKSPACE,\n CONTROL,\n DOWN_ARROW,\n ENTER,\n ESCAPE,\n LEFT_ARROW,\n RIGHT_ARROW,\n SHIFT,\n TAB,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { ChangeDetectorRef, DestroyRef, Directive, ElementRef, EventEmitter, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DataSourceDirective, MatchingBy, MatchingStrategy } from '@fundamental-ngx/cdk/data-source';\nimport {\n CvaControl,\n CvaDirective,\n FormStates,\n SelectableOptionItem,\n isOptionItem,\n isSelectableOptionItem\n} from '@fundamental-ngx/cdk/forms';\nimport { Nullable, RangeSelector, coerceArraySafe, isFunction, isJsObject, isString } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver } from '@fundamental-ngx/core/content-density';\nimport equal from 'fast-deep-equal';\nimport { BehaviorSubject, Subscription, skip, startWith, timer } from 'rxjs';\nimport {\n FdMultiComboBoxDataSource,\n FdMultiComboboxAcceptableDataSource\n} from './data-source/multi-combobox-data-source';\nimport { displayValue, flattenGroups, lookupValue, objectGet } from './helpers';\nimport { MultiComboboxSelectionChangeEvent } from './models/selection-change.event';\nimport { MultiComboboxConfig } from './multi-combobox-config';\nimport { FD_MAP_LIMIT } from './multi-combobox.component';\n\nexport type TextAlignment = 'left' | 'right';\n\n@Directive()\nexport abstract class BaseMultiCombobox<T = any> {\n abstract selectedItems: T[];\n abstract group: boolean;\n abstract groupKey: string;\n abstract displayKey: string;\n abstract secondaryKey: string;\n abstract showSecondaryText: boolean;\n abstract lookupKey: string;\n abstract invalidEntryMessage: string;\n abstract invalidEntryDisplayTime: number;\n abstract limitless: boolean;\n abstract isGroup: boolean;\n abstract inputText: string;\n\n abstract searchInputElement: Nullable<ElementRef<HTMLInputElement>>;\n\n abstract selectionChange: EventEmitter<MultiComboboxSelectionChangeEvent>;\n abstract dataReceived: EventEmitter<boolean>;\n abstract dataRequested: EventEmitter<boolean>;\n // Injection section\n\n /** @hidden */\n readonly cvaControl: CvaControl<T> = inject(CvaControl);\n\n /** @hidden */\n readonly dataSourceDirective: DataSourceDirective<T, FdMultiComboBoxDataSource<T>> = inject(DataSourceDirective);\n\n /** Control Value Accessor directive for forms support. */\n readonly _cva = inject(CvaDirective<T>, {\n self: true\n });\n\n /** Multi combobox config. */\n readonly _multiComboboxConfig = inject(MultiComboboxConfig, {\n optional: true\n });\n\n /** Content Density Observer */\n readonly contentDensityObserver = inject(ContentDensityObserver);\n\n /**\n * @hidden\n * List of selected suggestions\n */\n _selectedSuggestions: SelectableOptionItem<T>[] = [];\n\n /**\n * @hidden\n * List of matched suggestions\n */\n _suggestions: SelectableOptionItem[];\n\n /**\n * @hidden\n * Grouped suggestions mapped to array.\n */\n _flatSuggestions: SelectableOptionItem[] = [];\n\n /** @hidden */\n _fullFlatSuggestions: SelectableOptionItem[] = [];\n\n /** @hidden */\n selectedShown$ = new BehaviorSubject(false);\n\n /** @Hidden */\n protected readonly _elmRef = inject(ElementRef<HTMLElement>);\n\n /** @hidden */\n protected readonly _cd = inject(ChangeDetectorRef);\n\n /** @hidden */\n protected readonly _mapLimit = inject(FD_MAP_LIMIT);\n\n /** @Hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n protected _dataSource: FdMultiComboboxAcceptableDataSource<T>;\n\n /** @hidden */\n protected _inputTextValue: string;\n\n /** @hidden */\n protected _previousInputText: string;\n\n /** @hidden */\n protected _matchingStrategy: MatchingStrategy =\n this._multiComboboxConfig?.matchingStrategy ?? MatchingStrategy.CONTAINS;\n\n /** @hidden */\n protected _dsSubscription: Subscription | null = null;\n\n /** @hidden */\n protected _element: HTMLElement = this._elmRef.nativeElement;\n\n /**\n * @hidden\n * Keys, that won't trigger the popover's open state, when dispatched on search input.\n */\n protected readonly _nonOpeningKeys: number[] = [\n BACKSPACE,\n ESCAPE,\n ENTER,\n CONTROL,\n TAB,\n SHIFT,\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n ALT\n ];\n\n /** @hidden */\n protected _timerSub$: Subscription;\n\n /** @hidden */\n protected _previousState?: FormStates;\n\n /** @hidden */\n protected _previousStateMessage: Nullable<string>;\n\n /** @hidden */\n protected readonly _rangeSelector = new RangeSelector();\n\n /** @hidden */\n private _dataSourceChanged = false;\n\n /** @hidden */\n writeValue(value: T[]): void {\n this.selectedItems = coerceArraySafe(value);\n this._cva.writeValue(this.selectedItems);\n this._setSelectedSuggestions();\n this._emitChangeEvent();\n }\n\n /**\n * Used to change the value of a control.\n * @param value the value to be applied\n * @param emitOnChange whether to emit \"onChange\" event.\n * Should be \"false\", if the change is made programmatically (internally) by the control, \"true\" otherwise\n */\n setValue(value: T[], emitOnChange = true): void {\n this.selectedItems = coerceArraySafe(value);\n this._cva.setValue(this.selectedItems, emitOnChange);\n this._setSelectedSuggestions();\n this._emitChangeEvent();\n }\n\n /** @hidden */\n protected _displayFn = (value: T): string => displayValue(value, this.displayKey);\n\n /** @hidden */\n protected _secondaryFn = (value: T): string => {\n if (isOptionItem(value)) {\n return value.secondaryText ?? '';\n } else if (isJsObject(value) && this.secondaryKey) {\n const currentItem = objectGet(value, this.secondaryKey);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n } else {\n return value as string;\n }\n };\n\n /**\n * @hidden\n * Method to emit change event\n */\n protected _emitChangeEvent(): void {\n const event = new MultiComboboxSelectionChangeEvent(this, this.selectedItems);\n\n this.selectionChange.emit(event);\n }\n\n /** @hidden */\n protected _setSelectedSuggestions(): void {\n this._selectedSuggestions = [];\n\n if (!this.selectedItems?.length) {\n return;\n }\n\n for (let i = 0; i <= this.selectedItems.length; i++) {\n const selectedItem = this.selectedItems[i];\n const idx = this._fullFlatSuggestions.findIndex(\n (item) => item.label === selectedItem || item.value === selectedItem\n );\n if (idx !== -1) {\n this._selectedSuggestions.push(this._fullFlatSuggestions[idx]);\n this._fullFlatSuggestions[idx].selected = true;\n }\n }\n\n this._cd.detectChanges();\n }\n\n /**\n * Convert original data to SelectableOptionItems Interface\n * @hidden\n */\n protected _convertToOptionItems(items: T[]): SelectableOptionItem<T>[] {\n const item = items[0];\n\n const elementTypeIsOptionItem = isSelectableOptionItem(item);\n if (elementTypeIsOptionItem) {\n return items as SelectableOptionItem[];\n }\n\n const elementTypeIsObject = isJsObject(item);\n if (elementTypeIsObject) {\n return this._convertObjectsToOptionItems(items);\n }\n\n const elementTypeIsString = isString(item);\n if (elementTypeIsString) {\n return this._convertPrimitiveToOptionItems(items);\n }\n\n return [];\n }\n\n /**\n * Convert data to SelectableOptionItems Interface\n * @hidden\n */\n protected _convertObjectsToOptionItems(items: T[]): SelectableOptionItem<T>[] {\n if (this.isGroup) {\n return this._convertObjectsToGroupOptionItems(items);\n } else if (this.showSecondaryText && this.secondaryKey) {\n return this._convertObjectsToSecondaryOptionItems(items);\n } else {\n return this._convertObjectsToDefaultOptionItems(items);\n }\n }\n\n /**\n * Convert object[] data to Group OptionItems Interface\n * @hidden\n */\n protected _convertObjectsToGroupOptionItems<K extends T>(items: K[]): SelectableOptionItem<T>[] {\n const group: Record<string, K[]> = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const keyValue = item[this.groupKey];\n if (!keyValue) {\n continue;\n }\n\n if (!group[keyValue]) {\n group[keyValue] = [];\n }\n\n group[keyValue].push(item);\n }\n\n return Object.keys(group).map((key) => {\n const selectItem: SelectableOptionItem = {\n label: key,\n value: null,\n isGroup: true\n };\n\n const currentGroup = group[key];\n\n if (this.showSecondaryText && this.secondaryKey) {\n selectItem.children = this._convertObjectsToSecondaryOptionItems(currentGroup);\n } else {\n selectItem.children = this._convertObjectsToDefaultOptionItems(currentGroup);\n }\n\n return selectItem;\n });\n }\n\n /**\n * Convert T[] data to Secondary SelectableOptionItems<T> Interface\n * @hidden\n */\n protected _convertObjectsToSecondaryOptionItems<K extends T>(items: K[]): SelectableOptionItem<T>[] {\n const selectItems: SelectableOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: displayValue(value, this.displayKey),\n id: lookupValue(value, this.lookupKey),\n secondaryText: objectGet(value, this.secondaryKey),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert Primitive data(Boolean, String, Number) to SelectableOptionItems Interface\n * @hidden\n */\n protected _convertPrimitiveToOptionItems(items: any[]): SelectableOptionItem<T>[] {\n const selectItems: SelectableOptionItem[] = [];\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: value,\n id: lookupValue(value, this.lookupKey),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert T[] to SelectableOptionItems<T> Interface (Default)\n * @hidden\n */\n protected _convertObjectsToDefaultOptionItems(items: T[]): SelectableOptionItem<T>[] {\n const selectItems: SelectableOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: displayValue(value, this.displayKey),\n id: lookupValue(value, this.lookupKey),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /** @hidden */\n protected _setInvalidEntry(): void {\n if (this._previousState || this._previousStateMessage) {\n return;\n }\n\n this._previousState = this._cva.state;\n this._cva.state = 'error';\n\n this._previousStateMessage = this._cva.stateMessage;\n this._cva.stateMessage = this.invalidEntryMessage;\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n protected _unsetInvalidEntry(): void {\n this._cva.state = this._previousState;\n this._previousState = undefined;\n\n this._cva.stateMessage = this._previousStateMessage;\n this._previousStateMessage = undefined;\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n protected _focusToSearchField(): void {\n this.searchInputElement?.nativeElement.focus();\n }\n\n /** @hidden */\n protected _mapAndUpdateModel(): void {\n const selectedItems = this._selectedSuggestions.map(({ value }) => value);\n\n const shouldEmitChangeEvent = !equal(this.selectedItems, selectedItems);\n\n if (!shouldEmitChangeEvent) {\n return;\n }\n\n this.writeValue(selectedItems);\n\n this._cva.onChange(selectedItems);\n\n this._emitChangeEvent();\n }\n\n /**\n * @hidden\n * Prepares the data stream and subscribes to it.\n */\n protected _openDataStream(): void {\n const dataSourceProvider = this.dataSourceDirective.dataSourceProvider;\n\n if (!dataSourceProvider) {\n throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n }\n\n dataSourceProvider.limitless = this.limitless;\n\n dataSourceProvider.dataProvider.setLookupKey(this.lookupKey);\n const matchingBy: MatchingBy = {\n firstBy: this._displayFn\n };\n\n if (this.secondaryKey) {\n matchingBy.secondaryBy = this._secondaryFn;\n }\n\n dataSourceProvider.dataProvider.setMatchingBy(matchingBy);\n dataSourceProvider.dataProvider.setMatchingStrategy(this._matchingStrategy);\n\n // initial data fetch\n const map = new Map();\n map.set('query', '*');\n\n if (!this.limitless) {\n map.set('limit', this._mapLimit);\n }\n\n dataSourceProvider.match(map);\n\n this._dsSubscription = new Subscription();\n\n this._dsSubscription.add(\n this.dataSourceDirective.dataSourceProvider?.dataRequested.subscribe(this.dataRequested)\n );\n this._dsSubscription.add(\n this.dataSourceDirective.dataSourceProvider?.dataReceived.subscribe(this.dataReceived)\n );\n\n this.dataSourceDirective.dataSourceChanged\n .pipe(startWith(true), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._dataSourceChanged = true;\n });\n\n this.dataSourceDirective.dataChanged$.pipe(skip(0), takeUntilDestroyed(this._destroyRef)).subscribe((data) => {\n if (data.length === 0) {\n this._processingEmptyData();\n return;\n }\n\n this._previousInputText = this.inputText;\n\n this._parseDataSourceValue(data);\n\n this._cva.stateChanges.next('initDataSource.open().');\n\n this._cd.markForCheck();\n });\n }\n\n /**\n * Parses the data from the data stream and updates the model if needed.\n * @param data array of objects from the data stream.\n */\n protected _parseDataSourceValue(data: T[]): void {\n this._convertDataSourceSuggestions(data);\n\n const selectedSuggestionsLength = this._selectedSuggestions.length;\n if (selectedSuggestionsLength > 0) {\n for (let i = 0; i < selectedSuggestionsLength; i++) {\n const selectedSuggestion = this._selectedSuggestions[i];\n const idx = this._suggestions.findIndex((item) => equal(item.value, selectedSuggestion.value));\n\n if (idx !== -1) {\n this._suggestions[idx].selected = true;\n }\n }\n }\n\n if (this._dataSourceChanged) {\n this._flatSuggestions = this.isGroup ? flattenGroups(this._suggestions) : this._suggestions;\n this._fullFlatSuggestions = this._flatSuggestions;\n\n this._setSelectedSuggestions();\n\n this._mapAndUpdateModel();\n\n this._dataSourceChanged = false;\n }\n }\n\n /**\n * Transforms plain array into `SelectableOptionItem<T>`\n * @param data\n */\n protected _convertDataSourceSuggestions(data: T[]): void {\n this._suggestions = this._convertToOptionItems(data).map((optionItem) => {\n const selectedElement = this._selectedSuggestions.find((selectedItem) => selectedItem.id === optionItem.id);\n if (selectedElement) {\n optionItem.selected = selectedElement.selected;\n }\n return optionItem;\n });\n }\n\n /** @hidden */\n protected _processingEmptyData(): void {\n this.inputText = this._previousInputText;\n\n this._setInvalidEntry();\n\n if (this._timerSub$) {\n this._timerSub$.unsubscribe();\n }\n\n this._timerSub$ = timer(this.invalidEntryDisplayTime).subscribe(() => this._unsetInvalidEntry());\n\n this._cd.detectChanges();\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const MULTI_COMBOBOX_COMPONENT = new InjectionToken('FdMultiComboboxInterface');\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { Component, Inject, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SelectableOptionItem } from '@fundamental-ngx/cdk/forms';\nimport { Nullable, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarElementDirective, BarMiddleDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { MobileMultiComboboxInterface } from '../models/multi-combobox.interface';\nimport { MULTI_COMBOBOX_COMPONENT } from '../multi-combobox.token';\n\n@Component({\n selector: 'fd-mobile-multi-combobox',\n templateUrl: './mobile-multi-combobox.component.html',\n styleUrl: './mobile-multi-combobox.component.scss',\n standalone: true,\n imports: [\n DialogModule,\n TitleComponent,\n TemplateDirective,\n BarMiddleDirective,\n BarElementDirective,\n NgTemplateOutlet,\n ButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n ButtonBarComponent,\n FdTranslatePipe,\n AsyncPipe\n ]\n})\nexport class MobileMultiComboboxComponent extends MobileModeBase<MobileMultiComboboxInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden\n * For internal usage\n * Control element, which will be rendered inside dialog.\n * List element, which will be rendered inside dialog.\n */\n childContent: Nullable<{\n listTemplate: TemplateRef<any>;\n controlTemplate: TemplateRef<any>;\n }> = null;\n\n /** @hidden */\n selectedShown$ = this._component.selectedShown$;\n\n /** @hidden */\n private _selectedBackup: SelectableOptionItem[];\n\n /** @hidden */\n constructor(@Inject(MULTI_COMBOBOX_COMPONENT) multiComboboxComponent: MobileMultiComboboxInterface) {\n super(multiComboboxComponent, MobileModeControl.MULTI_COMBOBOX);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnMultiComboboxOpenChange();\n }\n\n /** @hidden */\n showSelected(): void {\n const isSelectedShown = this.selectedShown$.getValue();\n\n if (isSelectedShown) {\n this._component._searchTermChanged();\n this.selectedShown$.next(false);\n return;\n }\n\n this._component._moreClicked();\n }\n\n /** @hidden */\n handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component._dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n handleApprove(): void {\n this.dialogRef.close();\n this._component._dialogApprove();\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (!open) {\n return;\n }\n\n this._selectedBackup = this._component._selectedSuggestions?.length\n ? [...this._component._selectedSuggestions]\n : [];\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n\n /** @hidden */\n private _listenOnMultiComboboxOpenChange(): void {\n this._component.openChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((isOpen) => this._toggleDialog(isOpen));\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n ...this.dialogConfig,\n backdropClickCloseable: false,\n escKeyCloseable: false,\n container: this._elementRef.nativeElement,\n disablePaddings: true\n });\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title fd-dialog-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-template [ngTemplateOutlet]=\"childContent?.controlTemplate || null\"></ng-template>\n @if (selectedShown$ | async) {\n <button\n fd-button\n glyph=\"multiselect-all\"\n fdType=\"emphasized\"\n [title]=\"'platformMultiCombobox.mobileShowAllItemsButton' | fdTranslate\"\n [attr.aria-label]=\"'platformMultiCombobox.mobileShowAllItemsButton' | fdTranslate\"\n class=\"fd-margin-begin--tiny\"\n (click)=\"showSelected()\"\n ></button>\n }\n @if ((selectedShown$ | async) === false) {\n <button\n fd-button\n glyph=\"multiselect-all\"\n fdType=\"transparent\"\n [title]=\"'platformMultiCombobox.mobileShowSelectedItemsButton' | fdTranslate\"\n [attr.aria-label]=\"'platformMultiCombobox.mobileShowSelectedItemsButton' | fdTranslate\"\n class=\"fd-margin-begin--tiny\"\n (click)=\"showSelected()\"\n ></button>\n }\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"childContent?.listTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\"> </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { AbstractDataProvider, BaseDataSource, DataProvider } from '@fundamental-ngx/cdk/data-source';\nimport { Observable } from 'rxjs';\n\nexport class FdMultiComboBoxDataSource<T> extends BaseDataSource<T> {\n /** @hidden */\n limitless = false;\n /** @hidden */\n constructor(public dataProvider: AbstractDataProvider<T>) {\n super(dataProvider);\n }\n}\n\nexport class ArrayMultiComboBoxDataSource<T> extends FdMultiComboBoxDataSource<T> {\n /** @hidden */\n constructor(data: T[]) {\n super(new DataProvider(data));\n }\n}\n\nexport class ObservableMultiComboBoxDataSource<T> extends FdMultiComboBoxDataSource<T> {\n /** @hidden */\n constructor(data: Observable<T[]>) {\n super(new DataProvider(data));\n }\n}\n\n/**\n * Type of acceptable objects as a datasource for the Multi-Combo Box component.\n */\nexport type FdMultiComboboxAcceptableDataSource<T> = FdMultiComboBoxDataSource<T> | Observable<T[]> | T[];\n","import { DataSourceParser, isDataSource } from '@fundamental-ngx/cdk/data-source';\nimport { isObservable } from 'rxjs';\nimport {\n ArrayMultiComboBoxDataSource,\n FdMultiComboBoxDataSource,\n FdMultiComboboxAcceptableDataSource,\n ObservableMultiComboBoxDataSource\n} from './multi-combobox-data-source';\n\nexport class MultiComboboxDataSourceParser<T> implements DataSourceParser<T, FdMultiComboBoxDataSource<T>> {\n /**\n * Transforms plain array or observable into DataSource class.\n * @param source\n */\n parse(source: FdMultiComboboxAcceptableDataSource<T>): FdMultiComboBoxDataSource<T> | undefined {\n if (isDataSource(source)) {\n return source as FdMultiComboBoxDataSource<T>;\n }\n\n if (Array.isArray(source)) {\n return new ArrayMultiComboBoxDataSource<T>(source);\n }\n\n if (isObservable(source)) {\n return new ObservableMultiComboBoxDataSource<T>(source);\n }\n\n return undefined;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n HostListener,\n inject,\n Input,\n OnInit,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { FormItemComponent } from '@fundamental-ngx/core/form';\nimport { ListFocusItem } from '@fundamental-ngx/core/list';\nimport { ToolbarComponent } from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'fd-multi-combobox-select-all-toggler',\n template: `\n <fd-toolbar>\n <div fd-form-item class=\"fd-multi-combobox-select-all__form-item\">\n <fd-checkbox tabIndexValue=\"-1\" [ngModel]=\"checkboxValue\" [tristate]=\"true\">\n {{\n 'coreMultiComboBox.selectAllLabel'\n | fdTranslate: { selectedItems: selectedItems.length, totalItems: flatItems.length }\n }}\n </fd-checkbox>\n </div>\n </fd-toolbar>\n `,\n styleUrl: './select-all-toggler.component.scss',\n providers: [\n {\n provide: ListFocusItem,\n useExisting: SelectAllTogglerComponent\n }\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ToolbarComponent, FormItemComponent, CheckboxComponent, FormsModule, FdTranslatePipe]\n})\nexport class SelectAllTogglerComponent extends ListFocusItem implements OnInit {\n /**\n * Handler for the select all items\n * */\n @Input() selectAllHandler: (select: boolean) => void;\n\n /**\n * Stream for receiving information about the value changes,\n */\n @Input() valueChanges: Observable<unknown>;\n\n /** @hidden */\n @Input()\n selectedItems: Array<unknown> = [];\n\n /** @hidden */\n @Input()\n flatItems: Array<unknown> = [];\n\n /** @hidden */\n get allAreSelected(): boolean {\n return this.selectedItems.length === this.flatItems.length;\n }\n\n /** @hidden */\n get someAreSelected(): boolean {\n return this.selectedItems.length > 0 && !this.allAreSelected;\n }\n\n /** @hidden */\n get checkboxValue(): boolean | null {\n if (this.allAreSelected) {\n return true;\n }\n if (this.someAreSelected) {\n return null;\n }\n return false;\n }\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private changeDetector: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n /** @hidden */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n onKeyDown($event: KeyboardEvent): void {\n $event.preventDefault();\n this.change(!this.checkboxValue);\n }\n\n /** @hidden */\n @HostListener('click')\n onClick(): void {\n this.elementRef.nativeElement.focus();\n this.change(!this.checkboxValue);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.tabindex = 0;\n this.valueChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this.changeDetector.detectChanges();\n });\n }\n\n /** @hidden */\n change(value: boolean): void {\n this.selectAllHandler(value);\n }\n}\n","import { A, CONTROL, DOWN_ARROW, ENTER, ESCAPE, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { DataSourceDirective, FD_DATA_SOURCE_TRANSFORMER } from '@fundamental-ngx/cdk/data-source';\nimport { CvaControl, CvaDirective, OptionItem, SelectItem, SelectableOptionItem } from '@fundamental-ngx/cdk/forms';\nimport {\n AutoCompleteDirective,\n AutoCompleteEvent,\n ContentDensity,\n DynamicComponentService,\n FocusEscapeDirection,\n KeyUtil,\n Nullable,\n SearchHighlightPipe,\n TemplateDirective,\n TruncatedTitleDirective,\n coerceArraySafe,\n resizeObservable\n} from '@fundamental-ngx/cdk/utils';\nimport {\n FD_LIST_COMPONENT,\n ListComponent,\n ListComponentInterface,\n ListGroupHeaderDirective,\n ListItemComponent,\n ListSecondaryDirective,\n ListTitleDirective\n} from '@fundamental-ngx/core/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\n\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { TokenComponent, TokenizerComponent } from '@fundamental-ngx/core/token';\nimport equal from 'fast-deep-equal';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { BaseMultiCombobox } from './base-multi-combobox.class';\nimport { MobileMultiComboboxComponent } from './mobile/mobile-multi-combobox.component';\nimport { MULTI_COMBOBOX_COMPONENT } from './multi-combobox.token';\n\nimport { MultiComboboxDataSourceParser } from './data-source/multi-combobox-data-source-parser';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { FormControlComponent, FormInputMessageGroupComponent, FormMessageComponent } from '@fundamental-ngx/core/form';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { getSelectItemByInputValue, getTokenIndexByIdlOrValue } from './helpers';\nimport { MultiComboboxSelectionChangeEvent } from './models/selection-change.event';\nimport { MultiAnnouncerDirective } from './multi-announcer/multi-announcer.directive';\nimport { SelectAllTogglerComponent } from './select-all-toggler/select-all-toggler.component';\n\nexport const FD_MAP_LIMIT = new InjectionToken<number>('Map limit≥', { factory: () => 12 });\n\n@Component({\n selector: 'fd-multi-combobox',\n templateUrl: './multi-combobox.component.html',\n styleUrl: './multi-combobox.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: CvaDirective,\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['id:inputId', 'placeholder', 'state', 'stateMessage', 'disabled', 'readonly', 'name']\n },\n {\n directive: DataSourceDirective,\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['dataSource'],\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n outputs: ['dataChanged']\n }\n ],\n providers: [\n CvaControl,\n DynamicComponentService,\n contentDensityObserverProviders(),\n {\n provide: FD_DATA_SOURCE_TRANSFORMER,\n useClass: MultiComboboxDataSourceParser\n },\n {\n provide: MULTI_COMBOBOX_COMPONENT,\n useExisting: MultiComboboxComponent\n }\n ],\n standalone: true,\n imports: [\n NgTemplateOutlet,\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n FormInputMessageGroupComponent,\n InputGroupComponent,\n TokenizerComponent,\n TokenComponent,\n FormsModule,\n AutoCompleteDirective,\n FormControlComponent,\n InputGroupInputDirective,\n FormMessageComponent,\n ListComponent,\n SelectAllTogglerComponent,\n ListGroupHeaderDirective,\n ListTitleDirective,\n ListItemComponent,\n CheckboxComponent,\n NgClass,\n ListSecondaryDirective,\n FdTranslatePipe,\n SearchHighlightPipe,\n MultiAnnouncerDirective,\n TruncatedTitleDirective\n ]\n})\nexport class MultiComboboxComponent<T = any> extends BaseMultiCombobox<T> implements AfterViewInit, OnInit {\n /**\n * Show select all checkbox\n */\n @Input()\n showSelectAll = false;\n\n /** Provides selected items. */\n @Input()\n set selectedItems(value: T[]) {\n this._selectedItems = coerceArraySafe(value);\n }\n get selectedItems(): T[] {\n return this._selectedItems;\n }\n /** Provides maximum height for the optionPanel. */\n @Input()\n maxHeight = '250px';\n\n /**\n * Whether AddOn Button should be focusable\n * @default false\n */\n @Input()\n buttonFocusable = false;\n\n /** Whether the autocomplete should be enabled; Enabled by default. */\n @Input()\n autoComplete = true;\n\n /** Whether list item options should be rendered as byline. */\n @Input()\n byline = false;\n\n /**\n * Max width of multi combobox dropdown body.\n * `none` will not limit width of the dropdown.\n * `container` will limit width of the dropdown to the width of the multi-input itself.\n * `number` will limit width of the dropdown by provided number in pixels.\n */\n @Input()\n bodyMaxWidth: 'none' | 'container' | number = 'none';\n\n /** @hidden */\n get _popoverMaxWidth(): Nullable<number> {\n if (this.bodyMaxWidth === 'none') {\n return null;\n }\n\n if (typeof this.bodyMaxWidth === 'number') {\n return this.bodyMaxWidth;\n }\n\n return this._elementRef.nativeElement.getBoundingClientRect().width;\n }\n\n /**\n * TODO: Name of the entity for which DataProvider will be loaded. You can either pass list of\n * items or use this entityClass and internally we should be able to do lookup to some registry\n * and retrieve the best matching DataProvider that is set on application level\n */\n @Input()\n entityClass: string;\n\n /** Whether the multi-combobox should be built on mobile mode. */\n @Input()\n mobile = false;\n\n /** Multi Combobox Mobile Configuration, it's applied only, when mobile is enabled. */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /** Tells the multi-combobox if we need to group items. */\n @Input()\n group = false;\n\n /** A field name to use to group data by (support dotted notation). */\n @Input()\n groupKey: string;\n\n /** The field to show data in secondary column. */\n @Input()\n secondaryKey: string;\n\n /** Show the second column (applicable for two columns layout). */\n @Input()\n showSecondaryText = false;\n\n /** Horizontally align text inside the second column (applicable for two columns layout). */\n @Input()\n secondaryTextAlignment: 'left' | 'right' = 'right';\n\n /** Turns on/off Adjustable Width feature. */\n @Input()\n autoResize = true;\n\n /** Whether to open the dropdown when the addon button is clicked. */\n @Input()\n openDropdownOnAddOnClicked = true;\n\n /** Value of the multi combobox */\n @Input()\n set value(value: T[]) {\n this.setValue(value, true);\n }\n\n get value(): T[] {\n return this._cva.value;\n }\n /**\n * Preset options for the Select body width, whatever is chosen, the body has a 600px limit.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control. - Default\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * 'fit-content' will apply width needed to properly display items inside, independent of control.\n */\n @Input()\n fillControlMode: PopoverFillMode = 'at-least';\n\n /** Sets title attribute to addon button. */\n @Input()\n addonIconTitle: string;\n\n /** Sets invalid entry message. */\n @Input()\n invalidEntryMessage = 'Invalid entry';\n\n /** Turns limitless mode, ON or OFF */\n @Input()\n limitless: boolean;\n\n /**\n * Used in filters and any kind of comparators when we work with objects and this identify\n * unique field name based on which we are going to do the job\n */\n @Input()\n lookupKey: string;\n\n /**\n * When we deal with unknown object we can use `displayKey` to retrieve value from specific\n * property of the object to act as display value.\n *\n * @See ComboBox, Select, RadioGroup, CheckBox Group\n */\n @Input()\n displayKey: string;\n\n /**\n * List of values, it can be of type SelectItem, string or any object.\n * Generic object type is among the list of types,\n * because we allow to get labels and values using `displayKey` and `lookupKey` inputs accordingly.\n */\n @Input()\n list: Array<SelectItem | string | object>;\n\n /** Time in ms for how long message of invalid entry should be displayed. */\n @Input()\n invalidEntryDisplayTime = 3000;\n\n /** Event emitted when item is selected. */\n @Output()\n selectionChange = new EventEmitter<MultiComboboxSelectionChangeEvent>();\n\n /** @hidden Emits event when the menu is opened/closed. */\n @Output()\n isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Emits event when the addon button is clicked. */\n @Output()\n addOnButtonClicked: EventEmitter<Event> = new EventEmitter<Event>();\n\n /** Event emitted when data loading is started. */\n @Output()\n dataRequested = new EventEmitter<boolean>();\n\n /** Event emitted when data loading is finished. */\n @Output()\n dataReceived = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild('searchInputElement', { read: ElementRef })\n readonly searchInputElement: Nullable<ElementRef<HTMLInputElement>>;\n\n /** @hidden */\n @ViewChild(FD_LIST_COMPONENT)\n private readonly listComponent: ListComponentInterface;\n\n /** @hidden */\n @ContentChildren(TemplateDirective)\n private readonly customTemplates: QueryList<TemplateDirective>;\n\n /** @hidden */\n @ViewChild('mobileControlTemplate')\n private readonly mobileControlTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('listTemplate')\n private readonly listTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild(TokenizerComponent)\n private readonly _tokenizer: TokenizerComponent;\n\n /** @hidden */\n @ViewChild('inputGroup', { read: ElementRef })\n private readonly _inputGroup: ElementRef<HTMLElement>;\n\n /**\n * @hidden\n * Custom Option item Template.\n */\n optionItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Group Header item Template.\n */\n groupItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Secondary item Template.\n */\n secondaryItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Selected option item Template.\n */\n selectedItemTemplate: TemplateRef<any>;\n\n /** @hidden */\n _contentDensity: ContentDensity = this._multiComboboxConfig?.contentDensity ?? 'cozy';\n\n /** Set the input text of the input. */\n set inputText(value: string) {\n this._inputTextValue = value;\n\n this._cva.onTouched();\n }\n\n /** Get the input text of the input. */\n get inputText(): string {\n return this._inputTextValue || '';\n }\n\n /** Is empty search field. */\n get isEmptyValue(): boolean {\n return this.inputText.trim().length === 0;\n }\n\n /** @hidden */\n get isGroup(): boolean {\n return !!(this.group && this.groupKey);\n }\n\n /** Whether the Multi Input is opened. */\n isOpen = false;\n\n /**\n * @hidden\n * Max width of list container\n */\n maxWidth: number;\n\n /**\n * @hidden\n * Min width of list container\n */\n minWidth: number;\n\n /**\n * @hidden\n * Need for opening mobile version\n */\n openChange = new Subject<boolean>();\n\n /** @hidden */\n private _selectedItems: T[] = [];\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _injector: Injector,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _dynamicComponentService: DynamicComponentService\n ) {\n super();\n\n this.contentDensityObserver.subscribe();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.cvaControl.listenToChanges();\n this._openDataStream();\n }\n\n /** @hidden */\n async ngAfterViewInit(): Promise<void> {\n if (this.mobile) {\n await this._setUpMobileMode();\n }\n\n this._assignCustomTemplates();\n\n this._initWindowResize();\n }\n\n /** @hidden */\n _toggleSelection(item: SelectableOptionItem, fromTokenCloseClick = false): void {\n const idx = getTokenIndexByIdlOrValue(item, this._selectedSuggestions);\n if (idx === -1) {\n this._selectedSuggestions.push(item);\n } else {\n this._selectedSuggestions.splice(idx, 1);\n }\n\n item.selected = !item.selected;\n\n this._propagateChange(fromTokenCloseClick);\n\n if (!this._selectedSuggestions.length) {\n this._focusToSearchField();\n }\n\n this._cd.detectChanges();\n }\n\n /** @hidden */\n _onOptionCheckboxClicked(event: MouseEvent, index: number): void {\n event.stopPropagation();\n this._onListElementClicked(event, index);\n }\n\n /** @hidden */\n _onCompleteTerm(event: AutoCompleteEvent): void {\n if (event.forceClose) {\n this._toggleSelectionByInputText(event.term);\n this.close();\n }\n }\n\n /**\n * @hidden\n * Method that selects all possible options.\n * *select* attribute – if *true* select all, if *false* unselect all\n * */\n _handleSelectAllItems = (select: boolean): void => {\n this._flatSuggestions.forEach((item) => (item.selected = select));\n this._onEveryItem(this._suggestions, (item) => (item.selected = select));\n this._selectedSuggestions = select ? [...this._flatSuggestions] : [];\n this._rangeSelector.reset();\n\n this._propagateChange();\n };\n\n /** @hidden */\n _navigateByTokens(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW]) && this.isOpen) {\n this.listComponent.items?.first.focus();\n }\n }\n\n /** @hidden */\n _removeToken(token: SelectableOptionItem, event?: MouseEvent): void {\n if (event) {\n event.preventDefault();\n }\n const optionItem = this._flatSuggestions.find((s) => s.value === token.value);\n if (optionItem) {\n this._toggleSelection(optionItem, true);\n this._rangeSelector.reset();\n }\n }\n\n /** @hidden */\n _moreClicked(): void {\n this._suggestions = this.isGroup\n ? this._convertObjectsToGroupOptionItems(this._selectedSuggestions.map(({ value }) => value))\n : this._suggestions.filter((value) =>\n this._selectedSuggestions.some((item) => equal(item.value, value.value))\n );\n\n this._showList(true);\n this.selectedShown$.next(true);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n _onBlur(event: FocusEvent): void {\n const target = event.relatedTarget as HTMLElement;\n if (target) {\n const isList = !!target.closest('.fd-multi-combobox__list-container');\n if (isList) {\n return;\n }\n if (\n this._suggestions?.length === 1 &&\n this._suggestions[0].label === this.inputText &&\n !this._suggestions[0].selected\n ) {\n this._toggleSelection(this._suggestions[0]);\n }\n this._showList(false);\n this.inputText = '';\n }\n this._cva.onTouched();\n }\n\n /** @hidden */\n _onItemKeyDownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, ESCAPE)) {\n this._focusToSearchField();\n this.close();\n } else if ((event.ctrlKey || event.metaKey) && event.shiftKey && KeyUtil.isKeyCode(event, A)) {\n event.preventDefault();\n this._handleSelectAllItems(false);\n } else if ((event.ctrlKey || event.metaKey) && KeyUtil.isKeyCode(event, A)) {\n event.preventDefault();\n this._handleSelectAllItems(true);\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n if (!this.mobile) {\n this.close();\n }\n this._rangeSelector.reset();\n } else if (KeyUtil.isKeyCode(event, SPACE)) {\n this._rangeSelector.reset();\n }\n }\n\n /** @hidden */\n _onOptionClicked(event: MouseEvent, index: number): void {\n this._onListElementClicked(event, index);\n this.close();\n }\n\n /**\n * @hidden\n * Handle dialog dismissing, closes popover and sets backup data.\n */\n _dialogDismiss(backup: SelectableOptionItem[]): void {\n this._selectedSuggestions = [...backup];\n this.inputText = '';\n this._showList(false);\n this.selectedShown$.next(false);\n }\n\n /**\n * @hidden\n * Handle dialog approval, closes popover and propagates data changes.\n */\n _dialogApprove(): void {\n this.inputText = '';\n this._showList(false);\n this._propagateChange(true);\n }\n\n /** @hidden */\n _popoverOpenChangeHandle(isOpen: boolean): void {\n this.isOpen = isOpen;\n this._rangeSelector.reset();\n if (!isOpen) {\n this._cva.onTouched();\n }\n }\n\n /** Opens the select popover body. */\n open(): void {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n this._cd.markForCheck();\n }\n\n /** Closes the select popover body. */\n close(): void {\n this._focusToSearchField();\n this._rangeSelector.reset();\n this.selectedShown$.next(false);\n this.inputText = '';\n\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n this._cva.onTouched();\n this._cd.markForCheck();\n }\n\n /** @hidden */\n _showList(isOpen: boolean): void {\n if (this.isOpen !== isOpen) {\n this.isOpen = isOpen;\n this._cva.onTouched();\n this.openChange.next(isOpen);\n }\n\n if (!this.isOpen) {\n this._searchTermChanged('');\n }\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n _searchTermChanged(text: string = this.inputText): void {\n const map = new Map();\n map.set('query', text);\n\n if (!this.limitless) {\n map.set('limit', this._mapLimit);\n }\n\n this.dataSourceDirective.dataSourceProvider?.match(map);\n\n if (text) {\n this.open();\n }\n\n this._cd.markForCheck();\n }\n\n /**\n * Handle Click on Button\n * @hidden\n */\n _onPrimaryButtonClick(isOpen: boolean): void {\n if (!isOpen) {\n this._searchTermChanged('');\n }\n\n if (this.openDropdownOnAddOnClicked) {\n this._showList(!isOpen);\n } else if (this.isOpen) {\n this._showList(false);\n }\n\n if (this.isOpen) {\n this.searchInputElement?.nativeElement.focus();\n }\n }\n\n /**\n * Handle Keydown on Input\n * @hidden\n */\n _onInputKeydownHandler(event: KeyboardEvent): void {\n if (this._cva.readonly) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n if (event.altKey) {\n this._showList(true);\n }\n\n if (this.isOpen && this.listComponent) {\n this.listComponent.setItemActive(0);\n } else if (!this.isOpen) {\n this._chooseOtherItem(1);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this._chooseOtherItem(-1);\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n this._toggleSelectionByInputText();\n } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n event.stopPropagation();\n\n this._showList(false);\n } else if (!KeyUtil.isKeyCode(event, [...this._nonOpeningKeys, CONTROL])) {\n this._showList(true);\n const acceptedKeys = !KeyUtil.isKeyType(event, 'alphabetical') && !KeyUtil.isKeyType(event, 'numeric');\n if (acceptedKeys) {\n // SetTimeout is needed for input to receive new value.\n setTimeout(() => {\n if (this.isEmptyValue) {\n this.listComponent?.setItemActive(0);\n }\n });\n }\n }\n }\n\n /**\n * @hidden\n * Method passed to list component.\n */\n _handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up') {\n this._focusToSearchField();\n }\n }\n\n /**\n * @hidden\n */\n _addOnClicked($event: Event): void {\n this.addOnButtonClicked.emit($event);\n if (!this.mobile) {\n this._onPrimaryButtonClick(this.isOpen);\n }\n }\n /**\n * @hidden\n * Iterate over every item and perform callback\n */\n private _onEveryItem(items: SelectableOptionItem[], callback: (item: SelectableOptionItem) => void): void {\n items.forEach((item) => {\n callback(item);\n if (item.children && item.children.length > 0) {\n this._onEveryItem(item.children, callback);\n }\n });\n }\n\n /** @hidden */\n private _toggleSelectionByInputText(text = this.inputText): void {\n const item = getSelectItemByInputValue<T>(this._fullFlatSuggestions, text);\n if (item) {\n this._toggleSelection(item);\n this.inputText = '';\n }\n\n this._searchTermChanged();\n }\n\n /**\n * @hidden\n * Method to set input text as item label.\n */\n private _setInputTextFromOptionItem(item: OptionItem): void {\n this.inputText = item.label;\n\n if (this.mobile) {\n return;\n }\n\n this._showList(false);\n }\n\n /**\n * @hidden\n * applying range selection. Note, that this function will be invoked after combobox item's value has been changed\n */\n private _onListElementClicked(event: MouseEvent, index: number): void {\n // value has been changed at this point, so it can be safely used\n const selectionState = this._flatSuggestions[index].selected;\n this._rangeSelector.onRangeElementToggled(index, event);\n const toRemoveSet = new Set();\n this._rangeSelector.applyValueToEachInRange((idx) => {\n const current = this._flatSuggestions[idx];\n if (current.selected !== selectionState) {\n if (current.selected) {\n // removing from \"_selectedSuggestions\" list\n toRemoveSet.add(current.value);\n } else {\n // adding current item to \"_selectedSuggestions\"\n this._selectedSuggestions.push(current);\n }\n current.selected = selectionState;\n }\n });\n this._selectedSuggestions = this._selectedSuggestions.filter((s) => !toRemoveSet.has(s.value));\n this._propagateChange();\n\n this._tokenizer.onResize();\n\n this._tokenizer.tokenizerInnerEl.nativeElement.scrollLeft =\n this._tokenizer.tokenizerInnerEl.nativeElement.scrollWidth;\n }\n\n /** @hidden */\n private _propagateChange(emitInMobile?: boolean): void {\n if (!this.mobile || emitInMobile) {\n this._mapAndUpdateModel();\n }\n }\n\n /** @hidden */\n private async _setUpMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MULTI_COMBOBOX_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._dynamicComponentService.createDynamicComponent(\n { listTemplate: this.listTemplate, controlTemplate: this.mobileControlTemplate },\n MobileMultiComboboxComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n }\n\n /**\n * @hidden\n * Method that picks other value moved from current one by offset, called only when Multi Combobox is closed.\n */\n private _chooseOtherItem(offset: number): void {\n if (this._selectedSuggestions?.length === this._flatSuggestions.length) {\n this.inputText = '';\n return;\n }\n\n const activeValue = getSelectItemByInputValue<T>(this._fullFlatSuggestions, this.inputText);\n const index = this._flatSuggestions.findIndex((value) => value === activeValue);\n const position = !this.inputText && offset === -1 ? this._flatSuggestions.length - 1 : index + offset;\n const item = this._flatSuggestions[position];\n\n if (item) {\n this._setInputTextFromOptionItem(item);\n }\n\n const selectedIndex = this._selectedSuggestions.findIndex((value) => value.label === item?.label);\n if (selectedIndex !== -1) {\n this._chooseOtherItem(offset);\n }\n }\n\n /** @hidden */\n private _initWindowResize(): void {\n this._getOptionsListWidth();\n\n if (!this.autoResize) {\n return;\n }\n\n resizeObservable(this._inputGroup.nativeElement)\n .pipe(debounceTime(30), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._getOptionsListWidth());\n }\n\n /** @hidden */\n private _getOptionsListWidth(): void {\n const body = document.body;\n const rect = this._inputGroup.nativeElement.getBoundingClientRect();\n const scrollBarWidth = body.offsetWidth - body.clientWidth;\n this.maxWidth = this.autoResize ? window.innerWidth - scrollBarWidth - rect.left : this.minWidth;\n this.minWidth = rect.width - 2;\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * Assign custom templates\n */\n private _assignCustomTemplates(): void {\n this.customTemplates.forEach((template) => {\n switch (template.name) {\n case 'optionItemTemplate':\n this.optionItemTemplate = template.templateRef;\n break;\n case 'groupItemTemplate':\n this.groupItemTemplate = template.templateRef;\n break;\n case 'secondaryItemTemplate':\n this.secondaryItemTemplate = template.templateRef;\n break;\n case 'selectedItemTemplate':\n this.selectedItemTemplate = template.templateRef;\n break;\n }\n });\n }\n}\n","<div class=\"fd-multi-combobox\">\n @if (mobile) {\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n } @else {\n <fd-popover\n additionalBodyClass=\"fd-popover-custom-list fd-multi-combobox__list-container\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"_cva.disabled\"\n [maxWidth]=\"_popoverMaxWidth\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-template [ngTemplateOutlet]=\"listTemplate\"></ng-template>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n }\n</div>\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n #inputGroup\n [id]=\"_cva.id + '-input-group-container'\"\n [state]=\"_cva.state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!_cva.readonly\"\n [glyph]=\"!_cva.readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"_cva.disabled || _cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"_cva.disabled || _cva.readonly\"\n [attr.aria-readonly]=\"_cva.readonly\"\n [glyphAriaLabel]=\"_cva.ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && _onPrimaryButtonClick(false)\"\n (keydown)=\"_navigateByTokens($event)\"\n >\n <fd-tokenizer\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n [showOverflowPopover]=\"false\"\n #tokenizer\n class=\"fd-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"_moreClicked()\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n >\n @for (token of _selectedSuggestions; track token) {\n <fd-token [readOnly]=\"_cva.disabled\" (onCloseClick)=\"_removeToken(token, $event)\">\n {{ token.label }}\n </fd-token>\n }\n <input\n #searchInputElement\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"'coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"_cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? _cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"_cva.id\"\n [name]=\"_cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"_cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [attr.placeholder]=\"_selectedSuggestions.length ? null : _cva.placeholder\"\n (focus)=\"tokenizer._showAllTokens()\"\n (blur)=\"!mobile && _onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"_cva.readonly\"\n [attr.aria-readonly]=\"_cva.readonly\"\n [attr.aria-required]=\"_cva.required\"\n [displayFn]=\"_displayFn\"\n class=\"fd-tokenizer__input fd-input-group__input\"\n />\n </fd-tokenizer>\n </fd-input-group>\n @if (mobile && isOpen ? false : !!_cva.stateMessage) {\n <fd-form-message [type]=\"_cva.state\" [innerHtml]=\"_cva.stateMessage\"></fd-form-message>\n }\n </fd-form-input-message-group>\n</ng-template>\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"_cva.id + '-input-group-container'\"\n class=\"fd-multi-combobox-input-group-custom\"\n [state]=\"_cva.state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"_cva.disabled || _cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"_cva.disabled || _cva.readonly\"\n [attr.aria-readonly]=\"_cva.readonly\"\n [glyphAriaLabel]=\"_cva.ariaLabel\"\n >\n <input\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"'coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"_cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? _cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"_cva.id\"\n [name]=\"_cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"_cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [placeholder]=\"_cva.placeholder\"\n (focus)=\"_cva.onTouched()\"\n (blur)=\"!mobile && _onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"_cva.readonly\"\n [attr.aria-readonly]=\"_cva.readonly\"\n [displayFn]=\"_displayFn\"\n />\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <ul\n fd-list\n [byline]=\"byline\"\n [selection]=\"byline\"\n (focusEscapeList)=\"_handleListFocusEscape($event)\"\n class=\"fd-multi-combobox__list fd-list--multi-input\"\n [id]=\"_cva.id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width.px]=\"!mobile && minWidth\"\n [style.max-width.px]=\"autoResize && maxWidth\"\n [attr.aria-labelledby]=\"_cva.id + '-search'\"\n aria-multiselectable=\"true\"\n (keydown.tab)=\"close()\"\n (keydown.shift.tab)=\"close()\"\n >\n @if (!!_cva.stateMessage) {\n <fd-form-message [type]=\"_cva.state\" [innerHtml]=\"_cva.stateMessage\"></fd-form-message>\n }\n @if (showSelectAll) {\n <fd-multi-combobox-select-all-toggler\n [selectAllHandler]=\"_handleSelectAllItems\"\n [valueChanges]=\"selectionChange\"\n [selectedItems]=\"_selectedSuggestions\"\n [flatItems]=\"_flatSuggestions\"\n ></fd-multi-combobox-select-all-toggler>\n }\n <ng-content></ng-content>\n @if (isGroup) {\n @for (group of _suggestions; track group) {\n @if (!groupItemTemplate) {\n <label fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-template>\n }\n @for (optionItem of group.children; track optionItem; let i = $index) {\n <li\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && _onOptionClicked($event, i)\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n } @else {\n @for (optionItem of _suggestions; track optionItem; let i = $index) {\n <li\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && _onOptionClicked($event, i)\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n </ul>\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n @if (optionItem.selected && !!selectedItemTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n @if (!(optionItem.selected && selectedItemTemplate)) {\n <ng-template\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-template>\n <ng-template\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n @if (!optionItemTemplate) {\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight: inputText\"\n fdTruncatedTitle\n ></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n @if (showSecondaryText) {\n @if (!secondaryItemTemplate) {\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight: inputText\"\n ></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-template>\n }\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { MultiAnnouncerDirective } from './multi-announcer/multi-announcer.directive';\nimport { MultiComboboxComponent } from './multi-combobox.component';\nimport { SelectAllTogglerComponent } from './select-all-toggler/select-all-toggler.component';\n\n@NgModule({\n imports: [MultiComboboxComponent, SelectAllTogglerComponent, MultiAnnouncerDirective],\n exports: [MultiComboboxComponent, SelectAllTogglerComponent, MultiAnnouncerDirective]\n})\nexport class MultiComboboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-multi-combobox.mjs","sources":["../../../../libs/core/multi-combobox/multi-announcer/multi-announcer.directive.ts","../../../../libs/core/multi-combobox/helpers.ts","../../../../libs/core/multi-combobox/models/selection-change.event.ts","../../../../libs/core/multi-combobox/multi-combobox-config.ts","../../../../libs/core/multi-combobox/base-multi-combobox.class.ts","../../../../libs/core/multi-combobox/multi-combobox.token.ts","../../../../libs/core/multi-combobox/mobile/mobile-multi-combobox.component.ts","../../../../libs/core/multi-combobox/mobile/mobile-multi-combobox.component.html","../../../../libs/core/multi-combobox/data-source/multi-combobox-data-source.ts","../../../../libs/core/multi-combobox/data-source/multi-combobox-data-source-parser.ts","../../../../libs/core/multi-combobox/select-all-toggler/select-all-toggler.component.ts","../../../../libs/core/multi-combobox/multi-combobox.component.ts","../../../../libs/core/multi-combobox/multi-combobox.component.html","../../../../libs/core/multi-combobox/multi-combobox.module.ts","../../../../libs/core/multi-combobox/fundamental-ngx-core-multi-combobox.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ContentChildren, Directive, HostListener, inject, Input, QueryList } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { TokenComponent } from '@fundamental-ngx/core/token';\nimport { resolveTranslationSyncFn } from '@fundamental-ngx/i18n';\n\n@Directive({\n selector: '[fdMultiAnnouncer]',\n exportAs: 'fdMultiAnnouncer',\n standalone: true\n})\nexport class MultiAnnouncerDirective {\n /** @hidden */\n @Input()\n multiAnnouncerOptions: unknown[];\n\n /** @hidden */\n @ContentChildren(TokenComponent, { descendants: true })\n private _tokens: QueryList<TokenComponent>;\n\n /** @hidden */\n private _noResultsAnnounced = false;\n\n /** @hidden */\n private _resultsAnnounced = false;\n\n /** @hidden */\n private _announcement = '';\n\n /** @hidden */\n private readonly _liveAnnouncer: LiveAnnouncer = inject(LiveAnnouncer);\n\n /** @hidden */\n private _resolveTranslation = resolveTranslationSyncFn();\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n private _makeSearchTermChangeAnnouncements(event: KeyboardEvent): void {\n if (KeyUtil.isKeyType(event, 'alphabetical') || KeyUtil.isKeyType(event, 'numeric')) {\n this._liveAnnouncer.clear();\n if (!this.multiAnnouncerOptions.length && !this._noResultsAnnounced) {\n this._buildAnnouncement(this._resolveTranslation('coreMultiInput.noResults'));\n this._noResultsAnnounced = true;\n this._resultsAnnounced = false;\n } else if (this.multiAnnouncerOptions.length) {\n if (this.multiAnnouncerOptions.length === 1) {\n this._buildAnnouncement(\n this._resolveTranslation('coreMultiInput.countListResultsSingular', { count: 1 })\n );\n } else {\n this._buildAnnouncement(\n this._resolveTranslation('coreMultiInput.countListResultsPlural', {\n count: this.multiAnnouncerOptions.length\n })\n );\n }\n this._buildAnnouncement(this._resolveTranslation('coreMultiInput.navigateSelectionsWithArrows'));\n if (!this._resultsAnnounced) {\n this._noResultsAnnounced = false;\n this._resultsAnnounced = true;\n }\n }\n if (this._tokens && this._tokens.length) {\n this._buildAnnouncement(this._resolveTranslation('coreMultiInput.escapeNavigateTokens'));\n }\n this._makeAnnouncement(this._announcement);\n }\n }\n\n /** @hidden */\n private _buildAnnouncement(message: string): void {\n this._announcement = this._announcement + message + ' ';\n }\n\n /** @hidden */\n private async _makeAnnouncement(message: string): Promise<void> {\n await this._liveAnnouncer.announce(message, 'assertive').then(() => {\n this._announcement = '';\n });\n }\n}\n","import { isSelectItem, SelectableOptionItem } from '@fundamental-ngx/cdk/forms';\nimport { isFunction, isJsObject, isString } from '@fundamental-ngx/cdk/utils';\nimport equal from 'fast-deep-equal';\n\n/** @hidden */\nexport function lookupValue(item: unknown, lookupKey: string): string {\n if (isSelectItem(item)) {\n return lookupKey && item ? item.value[lookupKey] : item.value;\n } else {\n return lookupKey && item ? item[lookupKey] : item;\n }\n}\n\n/** @hidden */\nexport function displayValue(item: unknown, displayKey: string): string {\n if (isSelectItem(item)) {\n return item.label;\n } else if (isJsObject(item) && displayKey) {\n const currentItem = objectGet(item, displayKey);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n } else {\n return item as string;\n }\n}\n\n/** @hidden */\nexport function objectGet(obj: unknown, is: string | string[] | undefined): any {\n if (!isJsObject(obj)) {\n return obj;\n } else if (isString(is)) {\n return objectGet(obj, is.split('.'));\n } else if (!is?.length) {\n return obj;\n } else {\n return objectGet(obj[is[0]], is.slice(1));\n }\n}\n\n/** @hidden */\nexport function getSelectItemByInputValue<T>(\n suggestions: SelectableOptionItem<T>[],\n needleValue: string\n): SelectableOptionItem<T> | undefined {\n return suggestions.find((value) => value.label === needleValue);\n}\n\n/** @hidden\n * Map grouped values to array. */\nexport function flattenGroups(items: SelectableOptionItem[]): SelectableOptionItem[] {\n return items.reduce((result, item) => result.concat(item.children ?? []), <SelectableOptionItem[]>[]);\n}\n\n/** @hidden */\nexport function getTokenIndexByIdlOrValue(item: SelectableOptionItem, suggestions: SelectableOptionItem[]): number {\n return suggestions.findIndex((token) => token.id === item.id || equal(token.value, item.value));\n}\n","import { SelectableOptionItem } from '@fundamental-ngx/cdk/forms';\nimport { BaseMultiCombobox } from '../base-multi-combobox.class';\n\nexport class MultiComboboxSelectionChangeEvent {\n /**\n * Multi Combobox selection change event\n * @param source Multi Combobox component\n * @param selectedItems Selected items\n */\n constructor(\n public source: BaseMultiCombobox,\n public selectedItems: SelectableOptionItem['value'] // Contains selected items\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { DataProvider, MatchingStrategy } from '@fundamental-ngx/cdk/data-source';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\n// import { PlatformConfig } from '@fundamental-ngx/platform/shared';\n\n/**\n * Default options for Multi-Combobox\n */\n@Injectable({ providedIn: 'root' })\nexport class MultiComboboxConfig {\n /**\n * Content Density of element. 'cozy' | 'compact'\n */\n contentDensity: ContentDensity;\n\n /**\n * String matching strategy for typeahead list. Default: 'starts with per term'\n */\n matchingStrategy: MatchingStrategy = MatchingStrategy.STARTS_WITH_PER_TERM;\n\n /**\n * Maps data providers\n */\n providers: Map<string, DataProvider<any>> | null = new Map();\n\n /**\n * Create Provider factory function\n */\n // static createProviderFactory(\n // obj: Partial<MultiComboboxConfig>\n // ): (platformConfig: PlatformConfig) => MultiComboboxConfig {\n // const useFactory = (platformConfig: PlatformConfig): MultiComboboxConfig =>\n // Object.assign(new MultiComboboxConfig(platformConfig), obj);\n // return useFactory;\n // }\n\n /** @hidden */\n // constructor(platformConfig: PlatformConfig) {\n // this.contentDensity = platformConfig.contentDensity;\n // }\n}\n","import {\n ALT,\n BACKSPACE,\n CONTROL,\n DOWN_ARROW,\n ENTER,\n ESCAPE,\n LEFT_ARROW,\n RIGHT_ARROW,\n SHIFT,\n TAB,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { ChangeDetectorRef, DestroyRef, Directive, ElementRef, EventEmitter, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DataSourceDirective, MatchingBy, MatchingStrategy } from '@fundamental-ngx/cdk/data-source';\nimport {\n CvaControl,\n CvaDirective,\n FormStates,\n SelectableOptionItem,\n isOptionItem,\n isSelectableOptionItem\n} from '@fundamental-ngx/cdk/forms';\nimport { Nullable, RangeSelector, coerceArraySafe, isFunction, isJsObject, isString } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver } from '@fundamental-ngx/core/content-density';\nimport equal from 'fast-deep-equal';\nimport { BehaviorSubject, Subscription, skip, startWith, timer } from 'rxjs';\nimport {\n FdMultiComboBoxDataSource,\n FdMultiComboboxAcceptableDataSource\n} from './data-source/multi-combobox-data-source';\nimport { displayValue, flattenGroups, lookupValue, objectGet } from './helpers';\nimport { MultiComboboxSelectionChangeEvent } from './models/selection-change.event';\nimport { MultiComboboxConfig } from './multi-combobox-config';\nimport { FD_MAP_LIMIT } from './multi-combobox.component';\n\nexport type TextAlignment = 'left' | 'right';\n\n@Directive()\nexport abstract class BaseMultiCombobox<T = any> {\n abstract selectedItems: T[];\n abstract group: boolean;\n abstract groupKey: string;\n abstract displayKey: string;\n abstract secondaryKey: string;\n abstract showSecondaryText: boolean;\n abstract lookupKey: string;\n abstract invalidEntryMessage: string;\n abstract invalidEntryDisplayTime: number;\n abstract limitless: boolean;\n abstract isGroup: boolean;\n abstract inputText: string;\n\n abstract searchInputElement: Nullable<ElementRef<HTMLInputElement>>;\n\n abstract selectionChange: EventEmitter<MultiComboboxSelectionChangeEvent>;\n abstract dataReceived: EventEmitter<boolean>;\n abstract dataRequested: EventEmitter<boolean>;\n // Injection section\n\n /** @hidden */\n readonly cvaControl: CvaControl<T> = inject(CvaControl);\n\n /** @hidden */\n readonly dataSourceDirective: DataSourceDirective<T, FdMultiComboBoxDataSource<T>> = inject(DataSourceDirective);\n\n /** Control Value Accessor directive for forms support. */\n readonly _cva = inject(CvaDirective<T>, {\n self: true\n });\n\n /** Multi combobox config. */\n readonly _multiComboboxConfig = inject(MultiComboboxConfig, {\n optional: true\n });\n\n /** Content Density Observer */\n readonly contentDensityObserver = inject(ContentDensityObserver);\n\n /**\n * @hidden\n * List of selected suggestions\n */\n _selectedSuggestions: SelectableOptionItem<T>[] = [];\n\n /**\n * @hidden\n * List of matched suggestions\n */\n _suggestions: SelectableOptionItem[];\n\n /**\n * @hidden\n * Grouped suggestions mapped to array.\n */\n _flatSuggestions: SelectableOptionItem[] = [];\n\n /** @hidden */\n _fullFlatSuggestions: SelectableOptionItem[] = [];\n\n /** @hidden */\n selectedShown$ = new BehaviorSubject(false);\n\n /** @Hidden */\n protected readonly _elmRef = inject(ElementRef<HTMLElement>);\n\n /** @hidden */\n protected readonly _cd = inject(ChangeDetectorRef);\n\n /** @hidden */\n protected readonly _mapLimit = inject(FD_MAP_LIMIT);\n\n /** @Hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n protected _dataSource: FdMultiComboboxAcceptableDataSource<T>;\n\n /** @hidden */\n protected _inputTextValue: string;\n\n /** @hidden */\n protected _previousInputText: string;\n\n /** @hidden */\n protected _matchingStrategy: MatchingStrategy =\n this._multiComboboxConfig?.matchingStrategy ?? MatchingStrategy.CONTAINS;\n\n /** @hidden */\n protected _dsSubscription: Subscription | null = null;\n\n /** @hidden */\n protected _element: HTMLElement = this._elmRef.nativeElement;\n\n /**\n * @hidden\n * Keys, that won't trigger the popover's open state, when dispatched on search input.\n */\n protected readonly _nonOpeningKeys: number[] = [\n BACKSPACE,\n ESCAPE,\n ENTER,\n CONTROL,\n TAB,\n SHIFT,\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n ALT\n ];\n\n /** @hidden */\n protected _timerSub$: Subscription;\n\n /** @hidden */\n protected _previousState?: FormStates;\n\n /** @hidden */\n protected _previousStateMessage: Nullable<string>;\n\n /** @hidden */\n protected readonly _rangeSelector = new RangeSelector();\n\n /** @hidden */\n private _dataSourceChanged = false;\n\n /** @hidden */\n writeValue(value: T[]): void {\n this.selectedItems = coerceArraySafe(value);\n this._cva.writeValue(this.selectedItems);\n this._setSelectedSuggestions();\n this._emitChangeEvent();\n }\n\n /**\n * Used to change the value of a control.\n * @param value the value to be applied\n * @param emitOnChange whether to emit \"onChange\" event.\n * Should be \"false\", if the change is made programmatically (internally) by the control, \"true\" otherwise\n */\n setValue(value: T[], emitOnChange = true): void {\n this.selectedItems = coerceArraySafe(value);\n this._cva.setValue(this.selectedItems, emitOnChange);\n this._setSelectedSuggestions();\n this._emitChangeEvent();\n }\n\n /** @hidden */\n protected _displayFn = (value: T): string => displayValue(value, this.displayKey);\n\n /** @hidden */\n protected _secondaryFn = (value: T): string => {\n if (isOptionItem(value)) {\n return value.secondaryText ?? '';\n } else if (isJsObject(value) && this.secondaryKey) {\n const currentItem = objectGet(value, this.secondaryKey);\n\n return isFunction(currentItem) ? currentItem() : currentItem;\n } else {\n return value as string;\n }\n };\n\n /**\n * @hidden\n * Method to emit change event\n */\n protected _emitChangeEvent(): void {\n const event = new MultiComboboxSelectionChangeEvent(this, this.selectedItems);\n\n this.selectionChange.emit(event);\n }\n\n /** @hidden */\n protected _setSelectedSuggestions(): void {\n this._selectedSuggestions = [];\n\n if (!this.selectedItems?.length) {\n return;\n }\n\n for (let i = 0; i <= this.selectedItems.length; i++) {\n const selectedItem = this.selectedItems[i];\n const idx = this._fullFlatSuggestions.findIndex(\n (item) => item.label === selectedItem || item.value === selectedItem\n );\n if (idx !== -1) {\n this._selectedSuggestions.push(this._fullFlatSuggestions[idx]);\n this._fullFlatSuggestions[idx].selected = true;\n }\n }\n\n this._cd.detectChanges();\n }\n\n /**\n * Convert original data to SelectableOptionItems Interface\n * @hidden\n */\n protected _convertToOptionItems(items: T[]): SelectableOptionItem<T>[] {\n const item = items[0];\n\n const elementTypeIsOptionItem = isSelectableOptionItem(item);\n if (elementTypeIsOptionItem) {\n return items as SelectableOptionItem[];\n }\n\n const elementTypeIsObject = isJsObject(item);\n if (elementTypeIsObject) {\n return this._convertObjectsToOptionItems(items);\n }\n\n const elementTypeIsString = isString(item);\n if (elementTypeIsString) {\n return this._convertPrimitiveToOptionItems(items);\n }\n\n return [];\n }\n\n /**\n * Convert data to SelectableOptionItems Interface\n * @hidden\n */\n protected _convertObjectsToOptionItems(items: T[]): SelectableOptionItem<T>[] {\n if (this.isGroup) {\n return this._convertObjectsToGroupOptionItems(items);\n } else if (this.showSecondaryText && this.secondaryKey) {\n return this._convertObjectsToSecondaryOptionItems(items);\n } else {\n return this._convertObjectsToDefaultOptionItems(items);\n }\n }\n\n /**\n * Convert object[] data to Group OptionItems Interface\n * @hidden\n */\n protected _convertObjectsToGroupOptionItems<K extends T>(items: K[]): SelectableOptionItem<T>[] {\n const group: Record<string, K[]> = {};\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const keyValue = item[this.groupKey];\n if (!keyValue) {\n continue;\n }\n\n if (!group[keyValue]) {\n group[keyValue] = [];\n }\n\n group[keyValue].push(item);\n }\n\n return Object.keys(group).map((key) => {\n const selectItem: SelectableOptionItem = {\n label: key,\n value: null,\n isGroup: true\n };\n\n const currentGroup = group[key];\n\n if (this.showSecondaryText && this.secondaryKey) {\n selectItem.children = this._convertObjectsToSecondaryOptionItems(currentGroup);\n } else {\n selectItem.children = this._convertObjectsToDefaultOptionItems(currentGroup);\n }\n\n return selectItem;\n });\n }\n\n /**\n * Convert T[] data to Secondary SelectableOptionItems<T> Interface\n * @hidden\n */\n protected _convertObjectsToSecondaryOptionItems<K extends T>(items: K[]): SelectableOptionItem<T>[] {\n const selectItems: SelectableOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: displayValue(value, this.displayKey),\n id: lookupValue(value, this.lookupKey),\n secondaryText: objectGet(value, this.secondaryKey),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert Primitive data(Boolean, String, Number) to SelectableOptionItems Interface\n * @hidden\n */\n protected _convertPrimitiveToOptionItems(items: any[]): SelectableOptionItem<T>[] {\n const selectItems: SelectableOptionItem[] = [];\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: value,\n id: lookupValue(value, this.lookupKey),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /**\n * Convert T[] to SelectableOptionItems<T> Interface (Default)\n * @hidden\n */\n protected _convertObjectsToDefaultOptionItems(items: T[]): SelectableOptionItem<T>[] {\n const selectItems: SelectableOptionItem[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const value = items[i];\n selectItems.push({\n label: displayValue(value, this.displayKey),\n id: lookupValue(value, this.lookupKey),\n value,\n selected: this.selectedItems?.includes(value) || false\n });\n }\n\n return selectItems;\n }\n\n /** @hidden */\n protected _setInvalidEntry(): void {\n if (this._previousState || this._previousStateMessage) {\n return;\n }\n\n this._previousState = this._cva.state;\n this._cva.state = 'error';\n\n this._previousStateMessage = this._cva.stateMessage;\n this._cva.stateMessage = this.invalidEntryMessage;\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n protected _unsetInvalidEntry(): void {\n this._cva.state = this._previousState;\n this._previousState = undefined;\n\n this._cva.stateMessage = this._previousStateMessage;\n this._previousStateMessage = undefined;\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n protected _focusToSearchField(): void {\n this.searchInputElement?.nativeElement.focus();\n }\n\n /** @hidden */\n protected _mapAndUpdateModel(): void {\n const selectedItems = this._selectedSuggestions.map(({ value }) => value);\n\n const shouldEmitChangeEvent = !equal(this.selectedItems, selectedItems);\n\n if (!shouldEmitChangeEvent) {\n return;\n }\n\n this.writeValue(selectedItems);\n\n this._cva.onChange(selectedItems);\n\n this._emitChangeEvent();\n }\n\n /**\n * @hidden\n * Prepares the data stream and subscribes to it.\n */\n protected _openDataStream(): void {\n const dataSourceProvider = this.dataSourceDirective.dataSourceProvider;\n\n if (!dataSourceProvider) {\n throw new Error(`[dataSource] source did not match an array, Observable, or DataSource`);\n }\n\n dataSourceProvider.limitless = this.limitless;\n\n dataSourceProvider.dataProvider.setLookupKey(this.lookupKey);\n const matchingBy: MatchingBy = {\n firstBy: this._displayFn\n };\n\n if (this.secondaryKey) {\n matchingBy.secondaryBy = this._secondaryFn;\n }\n\n dataSourceProvider.dataProvider.setMatchingBy(matchingBy);\n dataSourceProvider.dataProvider.setMatchingStrategy(this._matchingStrategy);\n\n // initial data fetch\n const map = new Map();\n map.set('query', '*');\n\n if (!this.limitless) {\n map.set('limit', this._mapLimit);\n }\n\n dataSourceProvider.match(map);\n\n this._dsSubscription = new Subscription();\n\n this._dsSubscription.add(\n this.dataSourceDirective.dataSourceProvider?.dataRequested.subscribe(this.dataRequested)\n );\n this._dsSubscription.add(\n this.dataSourceDirective.dataSourceProvider?.dataReceived.subscribe(this.dataReceived)\n );\n\n this.dataSourceDirective.dataSourceChanged\n .pipe(startWith(true), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._dataSourceChanged = true;\n });\n\n this.dataSourceDirective.dataChanged$.pipe(skip(0), takeUntilDestroyed(this._destroyRef)).subscribe((data) => {\n if (data.length === 0) {\n this._processingEmptyData();\n return;\n }\n\n this._previousInputText = this.inputText;\n\n this._parseDataSourceValue(data);\n\n this._cva.stateChanges.next('initDataSource.open().');\n\n this._cd.markForCheck();\n });\n }\n\n /**\n * Parses the data from the data stream and updates the model if needed.\n * @param data array of objects from the data stream.\n */\n protected _parseDataSourceValue(data: T[]): void {\n this._convertDataSourceSuggestions(data);\n\n const selectedSuggestionsLength = this._selectedSuggestions.length;\n if (selectedSuggestionsLength > 0) {\n for (let i = 0; i < selectedSuggestionsLength; i++) {\n const selectedSuggestion = this._selectedSuggestions[i];\n const idx = this._suggestions.findIndex((item) => equal(item.value, selectedSuggestion.value));\n\n if (idx !== -1) {\n this._suggestions[idx].selected = true;\n }\n }\n }\n\n if (this._dataSourceChanged) {\n this._flatSuggestions = this.isGroup ? flattenGroups(this._suggestions) : this._suggestions;\n this._fullFlatSuggestions = this._flatSuggestions;\n\n this._setSelectedSuggestions();\n\n this._mapAndUpdateModel();\n\n this._dataSourceChanged = false;\n }\n }\n\n /**\n * Transforms plain array into `SelectableOptionItem<T>`\n * @param data\n */\n protected _convertDataSourceSuggestions(data: T[]): void {\n this._suggestions = this._convertToOptionItems(data).map((optionItem) => {\n const selectedElement = this._selectedSuggestions.find((selectedItem) => selectedItem.id === optionItem.id);\n if (selectedElement) {\n optionItem.selected = selectedElement.selected;\n }\n return optionItem;\n });\n }\n\n /** @hidden */\n protected _processingEmptyData(): void {\n this.inputText = this._previousInputText;\n\n this._setInvalidEntry();\n\n if (this._timerSub$) {\n this._timerSub$.unsubscribe();\n }\n\n this._timerSub$ = timer(this.invalidEntryDisplayTime).subscribe(() => this._unsetInvalidEntry());\n\n this._cd.detectChanges();\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const MULTI_COMBOBOX_COMPONENT = new InjectionToken('FdMultiComboboxInterface');\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { Component, Inject, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SelectableOptionItem } from '@fundamental-ngx/cdk/forms';\nimport { Nullable, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarElementDirective, BarMiddleDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { MobileMultiComboboxInterface } from '../models/multi-combobox.interface';\nimport { MULTI_COMBOBOX_COMPONENT } from '../multi-combobox.token';\n\n@Component({\n selector: 'fd-mobile-multi-combobox',\n templateUrl: './mobile-multi-combobox.component.html',\n styleUrl: './mobile-multi-combobox.component.scss',\n standalone: true,\n imports: [\n DialogModule,\n TitleComponent,\n TemplateDirective,\n BarMiddleDirective,\n BarElementDirective,\n NgTemplateOutlet,\n ButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n ButtonBarComponent,\n FdTranslatePipe,\n AsyncPipe\n ]\n})\nexport class MobileMultiComboboxComponent extends MobileModeBase<MobileMultiComboboxInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** @hidden\n * For internal usage\n * Control element, which will be rendered inside dialog.\n * List element, which will be rendered inside dialog.\n */\n childContent: Nullable<{\n listTemplate: TemplateRef<any>;\n controlTemplate: TemplateRef<any>;\n }> = null;\n\n /** @hidden */\n selectedShown$ = this._component.selectedShown$;\n\n /** @hidden */\n private _selectedBackup: SelectableOptionItem[];\n\n /** @hidden */\n constructor(@Inject(MULTI_COMBOBOX_COMPONENT) multiComboboxComponent: MobileMultiComboboxInterface) {\n super(multiComboboxComponent, MobileModeControl.MULTI_COMBOBOX);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnMultiComboboxOpenChange();\n }\n\n /** @hidden */\n showSelected(): void {\n const isSelectedShown = this.selectedShown$.getValue();\n\n if (isSelectedShown) {\n this._component._searchTermChanged();\n this.selectedShown$.next(false);\n return;\n }\n\n this._component._moreClicked();\n }\n\n /** @hidden */\n handleDismiss(): void {\n this.dialogRef.dismiss();\n this._component._dialogDismiss(this._selectedBackup);\n }\n\n /** @hidden */\n handleApprove(): void {\n this.dialogRef.close();\n this._component._dialogApprove();\n }\n\n /** @hidden */\n private _toggleDialog(open: boolean): void {\n if (!open) {\n return;\n }\n\n this._selectedBackup = this._component._selectedSuggestions?.length\n ? [...this._component._selectedSuggestions]\n : [];\n if (!this._dialogService.hasOpenDialogs()) {\n this._open();\n }\n }\n\n /** @hidden */\n private _listenOnMultiComboboxOpenChange(): void {\n this._component.openChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((isOpen) => this._toggleDialog(isOpen));\n }\n\n /** @hidden */\n private _open(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n ...this.dialogConfig,\n backdropClickCloseable: false,\n escKeyCloseable: false,\n container: this._elementRef.nativeElement,\n disablePaddings: true\n });\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title fd-dialog-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-template [ngTemplateOutlet]=\"childContent?.controlTemplate || null\"></ng-template>\n @if (selectedShown$ | async) {\n <button\n fd-button\n glyph=\"multiselect-all\"\n fdType=\"emphasized\"\n [title]=\"'platformMultiCombobox.mobileShowAllItemsButton' | fdTranslate\"\n [attr.aria-label]=\"'platformMultiCombobox.mobileShowAllItemsButton' | fdTranslate\"\n class=\"fd-margin-begin--tiny\"\n (click)=\"showSelected()\"\n ></button>\n }\n @if ((selectedShown$ | async) === false) {\n <button\n fd-button\n glyph=\"multiselect-all\"\n fdType=\"transparent\"\n [title]=\"'platformMultiCombobox.mobileShowSelectedItemsButton' | fdTranslate\"\n [attr.aria-label]=\"'platformMultiCombobox.mobileShowSelectedItemsButton' | fdTranslate\"\n class=\"fd-margin-begin--tiny\"\n (click)=\"showSelected()\"\n ></button>\n }\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"childContent?.listTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\"> </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n","import { AbstractDataProvider, BaseDataSource, DataProvider } from '@fundamental-ngx/cdk/data-source';\nimport { Observable } from 'rxjs';\n\nexport class FdMultiComboBoxDataSource<T> extends BaseDataSource<T> {\n /** @hidden */\n limitless = false;\n /** @hidden */\n constructor(public dataProvider: AbstractDataProvider<T>) {\n super(dataProvider);\n }\n}\n\nexport class ArrayMultiComboBoxDataSource<T> extends FdMultiComboBoxDataSource<T> {\n /** @hidden */\n constructor(data: T[]) {\n super(new DataProvider(data));\n }\n}\n\nexport class ObservableMultiComboBoxDataSource<T> extends FdMultiComboBoxDataSource<T> {\n /** @hidden */\n constructor(data: Observable<T[]>) {\n super(new DataProvider(data));\n }\n}\n\n/**\n * Type of acceptable objects as a datasource for the Multi-Combo Box component.\n */\nexport type FdMultiComboboxAcceptableDataSource<T> = FdMultiComboBoxDataSource<T> | Observable<T[]> | T[];\n","import { DataSourceParser, isDataSource } from '@fundamental-ngx/cdk/data-source';\nimport { isObservable } from 'rxjs';\nimport {\n ArrayMultiComboBoxDataSource,\n FdMultiComboBoxDataSource,\n FdMultiComboboxAcceptableDataSource,\n ObservableMultiComboBoxDataSource\n} from './multi-combobox-data-source';\n\nexport class MultiComboboxDataSourceParser<T> implements DataSourceParser<T, FdMultiComboBoxDataSource<T>> {\n /**\n * Transforms plain array or observable into DataSource class.\n * @param source\n */\n parse(source: FdMultiComboboxAcceptableDataSource<T>): FdMultiComboBoxDataSource<T> | undefined {\n if (isDataSource(source)) {\n return source as FdMultiComboBoxDataSource<T>;\n }\n\n if (Array.isArray(source)) {\n return new ArrayMultiComboBoxDataSource<T>(source);\n }\n\n if (isObservable(source)) {\n return new ObservableMultiComboBoxDataSource<T>(source);\n }\n\n return undefined;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n HostListener,\n inject,\n Input,\n OnInit,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { FormItemComponent } from '@fundamental-ngx/core/form';\nimport { ListFocusItem } from '@fundamental-ngx/core/list';\nimport { ToolbarComponent } from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'fd-multi-combobox-select-all-toggler',\n template: `\n <fd-toolbar>\n <div fd-form-item class=\"fd-multi-combobox-select-all__form-item\">\n <fd-checkbox tabIndexValue=\"-1\" [ngModel]=\"checkboxValue\" [tristate]=\"true\">\n {{\n 'coreMultiComboBox.selectAllLabel'\n | fdTranslate: { selectedItems: selectedItems.length, totalItems: flatItems.length }\n }}\n </fd-checkbox>\n </div>\n </fd-toolbar>\n `,\n styleUrl: './select-all-toggler.component.scss',\n providers: [\n {\n provide: ListFocusItem,\n useExisting: SelectAllTogglerComponent\n }\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ToolbarComponent, FormItemComponent, CheckboxComponent, FormsModule, FdTranslatePipe]\n})\nexport class SelectAllTogglerComponent extends ListFocusItem implements OnInit {\n /**\n * Handler for the select all items\n * */\n @Input() selectAllHandler: (select: boolean) => void;\n\n /**\n * Stream for receiving information about the value changes,\n */\n @Input() valueChanges: Observable<unknown>;\n\n /** @hidden */\n @Input()\n selectedItems: Array<unknown> = [];\n\n /** @hidden */\n @Input()\n flatItems: Array<unknown> = [];\n\n /** @hidden */\n get allAreSelected(): boolean {\n return this.selectedItems.length === this.flatItems.length;\n }\n\n /** @hidden */\n get someAreSelected(): boolean {\n return this.selectedItems.length > 0 && !this.allAreSelected;\n }\n\n /** @hidden */\n get checkboxValue(): boolean | null {\n if (this.allAreSelected) {\n return true;\n }\n if (this.someAreSelected) {\n return null;\n }\n return false;\n }\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private changeDetector: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n /** @hidden */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n onKeyDown($event: KeyboardEvent): void {\n $event.preventDefault();\n this.change(!this.checkboxValue);\n }\n\n /** @hidden */\n @HostListener('click')\n onClick(): void {\n this.elementRef.nativeElement.focus();\n this.change(!this.checkboxValue);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.tabindex = 0;\n this.valueChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this.changeDetector.detectChanges();\n });\n }\n\n /** @hidden */\n change(value: boolean): void {\n this.selectAllHandler(value);\n }\n}\n","import { A, CONTROL, DOWN_ARROW, ENTER, ESCAPE, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { DataSourceDirective, FD_DATA_SOURCE_TRANSFORMER } from '@fundamental-ngx/cdk/data-source';\nimport { CvaControl, CvaDirective, OptionItem, SelectItem, SelectableOptionItem } from '@fundamental-ngx/cdk/forms';\nimport {\n AutoCompleteDirective,\n AutoCompleteEvent,\n ContentDensity,\n DynamicComponentService,\n FocusEscapeDirection,\n KeyUtil,\n Nullable,\n SearchHighlightPipe,\n TemplateDirective,\n TruncatedTitleDirective,\n coerceArraySafe,\n resizeObservable\n} from '@fundamental-ngx/cdk/utils';\nimport {\n FD_LIST_COMPONENT,\n ListComponent,\n ListComponentInterface,\n ListGroupHeaderDirective,\n ListItemComponent,\n ListSecondaryDirective,\n ListTitleDirective\n} from '@fundamental-ngx/core/list';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\n\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { TokenComponent, TokenizerComponent } from '@fundamental-ngx/core/token';\nimport equal from 'fast-deep-equal';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { BaseMultiCombobox } from './base-multi-combobox.class';\nimport { MobileMultiComboboxComponent } from './mobile/mobile-multi-combobox.component';\nimport { MULTI_COMBOBOX_COMPONENT } from './multi-combobox.token';\n\nimport { MultiComboboxDataSourceParser } from './data-source/multi-combobox-data-source-parser';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { FormControlComponent, FormInputMessageGroupComponent, FormMessageComponent } from '@fundamental-ngx/core/form';\nimport { InputGroupComponent, InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { getSelectItemByInputValue, getTokenIndexByIdlOrValue } from './helpers';\nimport { MultiComboboxSelectionChangeEvent } from './models/selection-change.event';\nimport { MultiAnnouncerDirective } from './multi-announcer/multi-announcer.directive';\nimport { SelectAllTogglerComponent } from './select-all-toggler/select-all-toggler.component';\n\nexport const FD_MAP_LIMIT = new InjectionToken<number>('Map limit≥', { factory: () => 12 });\n\n@Component({\n selector: 'fd-multi-combobox',\n templateUrl: './multi-combobox.component.html',\n styleUrl: './multi-combobox.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'placeholder', 'state', 'stateMessage', 'disabled', 'readonly', 'name']\n },\n {\n directive: DataSourceDirective,\n inputs: ['dataSource'],\n outputs: ['dataChanged']\n }\n ],\n providers: [\n CvaControl,\n DynamicComponentService,\n contentDensityObserverProviders(),\n {\n provide: FD_DATA_SOURCE_TRANSFORMER,\n useClass: MultiComboboxDataSourceParser\n },\n {\n provide: MULTI_COMBOBOX_COMPONENT,\n useExisting: MultiComboboxComponent\n }\n ],\n standalone: true,\n imports: [\n NgTemplateOutlet,\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n FormInputMessageGroupComponent,\n InputGroupComponent,\n TokenizerComponent,\n TokenComponent,\n FormsModule,\n AutoCompleteDirective,\n FormControlComponent,\n InputGroupInputDirective,\n FormMessageComponent,\n ListComponent,\n SelectAllTogglerComponent,\n ListGroupHeaderDirective,\n ListTitleDirective,\n ListItemComponent,\n CheckboxComponent,\n NgClass,\n ListSecondaryDirective,\n FdTranslatePipe,\n SearchHighlightPipe,\n MultiAnnouncerDirective,\n TruncatedTitleDirective\n ]\n})\nexport class MultiComboboxComponent<T = any> extends BaseMultiCombobox<T> implements AfterViewInit, OnInit {\n /**\n * Show select all checkbox\n */\n @Input()\n showSelectAll = false;\n\n /** Provides selected items. */\n @Input()\n set selectedItems(value: T[]) {\n this._selectedItems = coerceArraySafe(value);\n }\n get selectedItems(): T[] {\n return this._selectedItems;\n }\n /** Provides maximum height for the optionPanel. */\n @Input()\n maxHeight = '250px';\n\n /**\n * Whether AddOn Button should be focusable\n * @default false\n */\n @Input()\n buttonFocusable = false;\n\n /** Whether the autocomplete should be enabled; Enabled by default. */\n @Input()\n autoComplete = true;\n\n /** Whether list item options should be rendered as byline. */\n @Input()\n byline = false;\n\n /**\n * Max width of multi combobox dropdown body.\n * `none` will not limit width of the dropdown.\n * `container` will limit width of the dropdown to the width of the multi-input itself.\n * `number` will limit width of the dropdown by provided number in pixels.\n */\n @Input()\n bodyMaxWidth: 'none' | 'container' | number = 'none';\n\n /** @hidden */\n get _popoverMaxWidth(): Nullable<number> {\n if (this.bodyMaxWidth === 'none') {\n return null;\n }\n\n if (typeof this.bodyMaxWidth === 'number') {\n return this.bodyMaxWidth;\n }\n\n return this._elementRef.nativeElement.getBoundingClientRect().width;\n }\n\n /**\n * TODO: Name of the entity for which DataProvider will be loaded. You can either pass list of\n * items or use this entityClass and internally we should be able to do lookup to some registry\n * and retrieve the best matching DataProvider that is set on application level\n */\n @Input()\n entityClass: string;\n\n /** Whether the multi-combobox should be built on mobile mode. */\n @Input()\n mobile = false;\n\n /** Multi Combobox Mobile Configuration, it's applied only, when mobile is enabled. */\n @Input()\n mobileConfig: MobileModeConfig;\n\n /** Tells the multi-combobox if we need to group items. */\n @Input()\n group = false;\n\n /** A field name to use to group data by (support dotted notation). */\n @Input()\n groupKey: string;\n\n /** The field to show data in secondary column. */\n @Input()\n secondaryKey: string;\n\n /** Show the second column (applicable for two columns layout). */\n @Input()\n showSecondaryText = false;\n\n /** Horizontally align text inside the second column (applicable for two columns layout). */\n @Input()\n secondaryTextAlignment: 'left' | 'right' = 'right';\n\n /** Turns on/off Adjustable Width feature. */\n @Input()\n autoResize = true;\n\n /** Whether to open the dropdown when the addon button is clicked. */\n @Input()\n openDropdownOnAddOnClicked = true;\n\n /** Value of the multi combobox */\n @Input()\n set value(value: T[]) {\n this.setValue(value, true);\n }\n\n get value(): T[] {\n return this._cva.value;\n }\n /**\n * Preset options for the Select body width, whatever is chosen, the body has a 600px limit.\n * * `at-least` will apply a minimum width to the body equivalent to the width of the control. - Default\n * * `equal` will apply a width to the body equivalent to the width of the control.\n * * 'fit-content' will apply width needed to properly display items inside, independent of control.\n */\n @Input()\n fillControlMode: PopoverFillMode = 'at-least';\n\n /** Sets title attribute to addon button. */\n @Input()\n addonIconTitle: string;\n\n /** Sets invalid entry message. */\n @Input()\n invalidEntryMessage = 'Invalid entry';\n\n /** Turns limitless mode, ON or OFF */\n @Input()\n limitless: boolean;\n\n /**\n * Used in filters and any kind of comparators when we work with objects and this identify\n * unique field name based on which we are going to do the job\n */\n @Input()\n lookupKey: string;\n\n /**\n * When we deal with unknown object we can use `displayKey` to retrieve value from specific\n * property of the object to act as display value.\n *\n * @See ComboBox, Select, RadioGroup, CheckBox Group\n */\n @Input()\n displayKey: string;\n\n /**\n * List of values, it can be of type SelectItem, string or any object.\n * Generic object type is among the list of types,\n * because we allow to get labels and values using `displayKey` and `lookupKey` inputs accordingly.\n */\n @Input()\n list: Array<SelectItem | string | object>;\n\n /** Time in ms for how long message of invalid entry should be displayed. */\n @Input()\n invalidEntryDisplayTime = 3000;\n\n /** Event emitted when item is selected. */\n @Output()\n selectionChange = new EventEmitter<MultiComboboxSelectionChangeEvent>();\n\n /** @hidden Emits event when the menu is opened/closed. */\n @Output()\n isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Emits event when the addon button is clicked. */\n @Output()\n addOnButtonClicked: EventEmitter<Event> = new EventEmitter<Event>();\n\n /** Event emitted when data loading is started. */\n @Output()\n dataRequested = new EventEmitter<boolean>();\n\n /** Event emitted when data loading is finished. */\n @Output()\n dataReceived = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild('searchInputElement', { read: ElementRef })\n readonly searchInputElement: Nullable<ElementRef<HTMLInputElement>>;\n\n /** @hidden */\n @ViewChild(FD_LIST_COMPONENT)\n private readonly listComponent: ListComponentInterface;\n\n /** @hidden */\n @ContentChildren(TemplateDirective)\n private readonly customTemplates: QueryList<TemplateDirective>;\n\n /** @hidden */\n @ViewChild('mobileControlTemplate')\n private readonly mobileControlTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('listTemplate')\n private readonly listTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild(TokenizerComponent)\n private readonly _tokenizer: TokenizerComponent;\n\n /** @hidden */\n @ViewChild('inputGroup', { read: ElementRef })\n private readonly _inputGroup: ElementRef<HTMLElement>;\n\n /**\n * @hidden\n * Custom Option item Template.\n */\n optionItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Group Header item Template.\n */\n groupItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Secondary item Template.\n */\n secondaryItemTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n * Custom Selected option item Template.\n */\n selectedItemTemplate: TemplateRef<any>;\n\n /** @hidden */\n _contentDensity: ContentDensity = this._multiComboboxConfig?.contentDensity ?? 'cozy';\n\n /** Set the input text of the input. */\n set inputText(value: string) {\n this._inputTextValue = value;\n\n this._cva.onTouched();\n }\n\n /** Get the input text of the input. */\n get inputText(): string {\n return this._inputTextValue || '';\n }\n\n /** Is empty search field. */\n get isEmptyValue(): boolean {\n return this.inputText.trim().length === 0;\n }\n\n /** @hidden */\n get isGroup(): boolean {\n return !!(this.group && this.groupKey);\n }\n\n /** Whether the Multi Input is opened. */\n isOpen = false;\n\n /**\n * @hidden\n * Max width of list container\n */\n maxWidth: number;\n\n /**\n * @hidden\n * Min width of list container\n */\n minWidth: number;\n\n /**\n * @hidden\n * Need for opening mobile version\n */\n openChange = new Subject<boolean>();\n\n /** @hidden */\n private _selectedItems: T[] = [];\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _injector: Injector,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _dynamicComponentService: DynamicComponentService\n ) {\n super();\n\n this.contentDensityObserver.subscribe();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.cvaControl.listenToChanges();\n this._openDataStream();\n }\n\n /** @hidden */\n async ngAfterViewInit(): Promise<void> {\n if (this.mobile) {\n await this._setUpMobileMode();\n }\n\n this._assignCustomTemplates();\n\n this._initWindowResize();\n }\n\n /** @hidden */\n _toggleSelection(item: SelectableOptionItem, fromTokenCloseClick = false): void {\n const idx = getTokenIndexByIdlOrValue(item, this._selectedSuggestions);\n if (idx === -1) {\n this._selectedSuggestions.push(item);\n } else {\n this._selectedSuggestions.splice(idx, 1);\n }\n\n item.selected = !item.selected;\n\n this._propagateChange(fromTokenCloseClick);\n\n if (!this._selectedSuggestions.length) {\n this._focusToSearchField();\n }\n\n this._cd.detectChanges();\n }\n\n /** @hidden */\n _onOptionCheckboxClicked(event: MouseEvent, index: number): void {\n event.stopPropagation();\n this._onListElementClicked(event, index);\n }\n\n /** @hidden */\n _onCompleteTerm(event: AutoCompleteEvent): void {\n if (event.forceClose) {\n this._toggleSelectionByInputText(event.term);\n this.close();\n }\n }\n\n /**\n * @hidden\n * Method that selects all possible options.\n * *select* attribute – if *true* select all, if *false* unselect all\n * */\n _handleSelectAllItems = (select: boolean): void => {\n this._flatSuggestions.forEach((item) => (item.selected = select));\n this._onEveryItem(this._suggestions, (item) => (item.selected = select));\n this._selectedSuggestions = select ? [...this._flatSuggestions] : [];\n this._rangeSelector.reset();\n\n this._propagateChange();\n };\n\n /** @hidden */\n _navigateByTokens(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW]) && this.isOpen) {\n this.listComponent.items?.first.focus();\n }\n }\n\n /** @hidden */\n _removeToken(token: SelectableOptionItem, event?: MouseEvent): void {\n if (event) {\n event.preventDefault();\n }\n const optionItem = this._flatSuggestions.find((s) => s.value === token.value);\n if (optionItem) {\n this._toggleSelection(optionItem, true);\n this._rangeSelector.reset();\n }\n }\n\n /** @hidden */\n _moreClicked(): void {\n this._suggestions = this.isGroup\n ? this._convertObjectsToGroupOptionItems(this._selectedSuggestions.map(({ value }) => value))\n : this._suggestions.filter((value) =>\n this._selectedSuggestions.some((item) => equal(item.value, value.value))\n );\n\n this._showList(true);\n this.selectedShown$.next(true);\n this._cd.markForCheck();\n }\n\n /** @hidden */\n _onBlur(event: FocusEvent): void {\n const target = event.relatedTarget as HTMLElement;\n if (target) {\n const isList = !!target.closest('.fd-multi-combobox__list-container');\n if (isList) {\n return;\n }\n if (\n this._suggestions?.length === 1 &&\n this._suggestions[0].label === this.inputText &&\n !this._suggestions[0].selected\n ) {\n this._toggleSelection(this._suggestions[0]);\n }\n this._showList(false);\n this.inputText = '';\n }\n this._cva.onTouched();\n }\n\n /** @hidden */\n _onItemKeyDownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, ESCAPE)) {\n this._focusToSearchField();\n this.close();\n } else if ((event.ctrlKey || event.metaKey) && event.shiftKey && KeyUtil.isKeyCode(event, A)) {\n event.preventDefault();\n this._handleSelectAllItems(false);\n } else if ((event.ctrlKey || event.metaKey) && KeyUtil.isKeyCode(event, A)) {\n event.preventDefault();\n this._handleSelectAllItems(true);\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n if (!this.mobile) {\n this.close();\n }\n this._rangeSelector.reset();\n } else if (KeyUtil.isKeyCode(event, SPACE)) {\n this._rangeSelector.reset();\n }\n }\n\n /** @hidden */\n _onOptionClicked(event: MouseEvent, index: number): void {\n this._onListElementClicked(event, index);\n this.close();\n }\n\n /**\n * @hidden\n * Handle dialog dismissing, closes popover and sets backup data.\n */\n _dialogDismiss(backup: SelectableOptionItem[]): void {\n this._selectedSuggestions = [...backup];\n this.inputText = '';\n this._showList(false);\n this.selectedShown$.next(false);\n }\n\n /**\n * @hidden\n * Handle dialog approval, closes popover and propagates data changes.\n */\n _dialogApprove(): void {\n this.inputText = '';\n this._showList(false);\n this._propagateChange(true);\n }\n\n /** @hidden */\n _popoverOpenChangeHandle(isOpen: boolean): void {\n this.isOpen = isOpen;\n this._rangeSelector.reset();\n if (!isOpen) {\n this._cva.onTouched();\n }\n }\n\n /** Opens the select popover body. */\n open(): void {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n this._cd.markForCheck();\n }\n\n /** Closes the select popover body. */\n close(): void {\n this._focusToSearchField();\n this._rangeSelector.reset();\n this.selectedShown$.next(false);\n this.inputText = '';\n\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n this._cva.onTouched();\n this._cd.markForCheck();\n }\n\n /** @hidden */\n _showList(isOpen: boolean): void {\n if (this.isOpen !== isOpen) {\n this.isOpen = isOpen;\n this._cva.onTouched();\n this.openChange.next(isOpen);\n }\n\n if (!this.isOpen) {\n this._searchTermChanged('');\n }\n\n this._cd.markForCheck();\n }\n\n /** @hidden */\n _searchTermChanged(text: string = this.inputText): void {\n const map = new Map();\n map.set('query', text);\n\n if (!this.limitless) {\n map.set('limit', this._mapLimit);\n }\n\n this.dataSourceDirective.dataSourceProvider?.match(map);\n\n if (text) {\n this.open();\n }\n\n this._cd.markForCheck();\n }\n\n /**\n * Handle Click on Button\n * @hidden\n */\n _onPrimaryButtonClick(isOpen: boolean): void {\n if (!isOpen) {\n this._searchTermChanged('');\n }\n\n if (this.openDropdownOnAddOnClicked) {\n this._showList(!isOpen);\n } else if (this.isOpen) {\n this._showList(false);\n }\n\n if (this.isOpen) {\n this.searchInputElement?.nativeElement.focus();\n }\n }\n\n /**\n * Handle Keydown on Input\n * @hidden\n */\n _onInputKeydownHandler(event: KeyboardEvent): void {\n if (this._cva.readonly) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n if (event.altKey) {\n this._showList(true);\n }\n\n if (this.isOpen && this.listComponent) {\n this.listComponent.setItemActive(0);\n } else if (!this.isOpen) {\n this._chooseOtherItem(1);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this._chooseOtherItem(-1);\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n this._toggleSelectionByInputText();\n } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n event.stopPropagation();\n\n this._showList(false);\n } else if (!KeyUtil.isKeyCode(event, [...this._nonOpeningKeys, CONTROL])) {\n this._showList(true);\n const acceptedKeys = !KeyUtil.isKeyType(event, 'alphabetical') && !KeyUtil.isKeyType(event, 'numeric');\n if (acceptedKeys) {\n // SetTimeout is needed for input to receive new value.\n setTimeout(() => {\n if (this.isEmptyValue) {\n this.listComponent?.setItemActive(0);\n }\n });\n }\n }\n }\n\n /**\n * @hidden\n * Method passed to list component.\n */\n _handleListFocusEscape(direction: FocusEscapeDirection): void {\n if (direction === 'up') {\n this._focusToSearchField();\n }\n }\n\n /**\n * @hidden\n */\n _addOnClicked($event: Event): void {\n this.addOnButtonClicked.emit($event);\n if (!this.mobile) {\n this._onPrimaryButtonClick(this.isOpen);\n }\n }\n /**\n * @hidden\n * Iterate over every item and perform callback\n */\n private _onEveryItem(items: SelectableOptionItem[], callback: (item: SelectableOptionItem) => void): void {\n items.forEach((item) => {\n callback(item);\n if (item.children && item.children.length > 0) {\n this._onEveryItem(item.children, callback);\n }\n });\n }\n\n /** @hidden */\n private _toggleSelectionByInputText(text = this.inputText): void {\n const item = getSelectItemByInputValue<T>(this._fullFlatSuggestions, text);\n if (item) {\n this._toggleSelection(item);\n this.inputText = '';\n }\n\n this._searchTermChanged();\n }\n\n /**\n * @hidden\n * Method to set input text as item label.\n */\n private _setInputTextFromOptionItem(item: OptionItem): void {\n this.inputText = item.label;\n\n if (this.mobile) {\n return;\n }\n\n this._showList(false);\n }\n\n /**\n * @hidden\n * applying range selection. Note, that this function will be invoked after combobox item's value has been changed\n */\n private _onListElementClicked(event: MouseEvent, index: number): void {\n // value has been changed at this point, so it can be safely used\n const selectionState = this._flatSuggestions[index].selected;\n this._rangeSelector.onRangeElementToggled(index, event);\n const toRemoveSet = new Set();\n this._rangeSelector.applyValueToEachInRange((idx) => {\n const current = this._flatSuggestions[idx];\n if (current.selected !== selectionState) {\n if (current.selected) {\n // removing from \"_selectedSuggestions\" list\n toRemoveSet.add(current.value);\n } else {\n // adding current item to \"_selectedSuggestions\"\n this._selectedSuggestions.push(current);\n }\n current.selected = selectionState;\n }\n });\n this._selectedSuggestions = this._selectedSuggestions.filter((s) => !toRemoveSet.has(s.value));\n this._propagateChange();\n\n this._tokenizer.onResize();\n\n this._tokenizer.tokenizerInnerEl.nativeElement.scrollLeft =\n this._tokenizer.tokenizerInnerEl.nativeElement.scrollWidth;\n }\n\n /** @hidden */\n private _propagateChange(emitInMobile?: boolean): void {\n if (!this.mobile || emitInMobile) {\n this._mapAndUpdateModel();\n }\n }\n\n /** @hidden */\n private async _setUpMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MULTI_COMBOBOX_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._dynamicComponentService.createDynamicComponent(\n { listTemplate: this.listTemplate, controlTemplate: this.mobileControlTemplate },\n MobileMultiComboboxComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n }\n\n /**\n * @hidden\n * Method that picks other value moved from current one by offset, called only when Multi Combobox is closed.\n */\n private _chooseOtherItem(offset: number): void {\n if (this._selectedSuggestions?.length === this._flatSuggestions.length) {\n this.inputText = '';\n return;\n }\n\n const activeValue = getSelectItemByInputValue<T>(this._fullFlatSuggestions, this.inputText);\n const index = this._flatSuggestions.findIndex((value) => value === activeValue);\n const position = !this.inputText && offset === -1 ? this._flatSuggestions.length - 1 : index + offset;\n const item = this._flatSuggestions[position];\n\n if (item) {\n this._setInputTextFromOptionItem(item);\n }\n\n const selectedIndex = this._selectedSuggestions.findIndex((value) => value.label === item?.label);\n if (selectedIndex !== -1) {\n this._chooseOtherItem(offset);\n }\n }\n\n /** @hidden */\n private _initWindowResize(): void {\n this._getOptionsListWidth();\n\n if (!this.autoResize) {\n return;\n }\n\n resizeObservable(this._inputGroup.nativeElement)\n .pipe(debounceTime(30), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._getOptionsListWidth());\n }\n\n /** @hidden */\n private _getOptionsListWidth(): void {\n const body = document.body;\n const rect = this._inputGroup.nativeElement.getBoundingClientRect();\n const scrollBarWidth = body.offsetWidth - body.clientWidth;\n this.maxWidth = this.autoResize ? window.innerWidth - scrollBarWidth - rect.left : this.minWidth;\n this.minWidth = rect.width - 2;\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * Assign custom templates\n */\n private _assignCustomTemplates(): void {\n this.customTemplates.forEach((template) => {\n switch (template.name) {\n case 'optionItemTemplate':\n this.optionItemTemplate = template.templateRef;\n break;\n case 'groupItemTemplate':\n this.groupItemTemplate = template.templateRef;\n break;\n case 'secondaryItemTemplate':\n this.secondaryItemTemplate = template.templateRef;\n break;\n case 'selectedItemTemplate':\n this.selectedItemTemplate = template.templateRef;\n break;\n }\n });\n }\n}\n","<div class=\"fd-multi-combobox\">\n @if (mobile) {\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n } @else {\n <fd-popover\n additionalBodyClass=\"fd-popover-custom-list fd-multi-combobox__list-container\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [isOpen]=\"isOpen\"\n [triggers]=\"[]\"\n [disabled]=\"_cva.disabled\"\n [maxWidth]=\"_popoverMaxWidth\"\n [fillControlMode]=\"fillControlMode\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body [style.width.%]=\"!autoResize && 100\">\n <ng-template [ngTemplateOutlet]=\"listTemplate\"></ng-template>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n }\n</div>\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n #inputGroup\n [id]=\"_cva.id + '-input-group-container'\"\n [state]=\"_cva.state\"\n [buttonFocusable]=\"buttonFocusable\"\n [button]=\"!_cva.readonly\"\n [glyph]=\"!_cva.readonly ? 'navigation-down-arrow' : ' '\"\n [isControl]=\"true\"\n [disabled]=\"_cva.disabled || _cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"_cva.disabled || _cva.readonly\"\n [attr.aria-readonly]=\"_cva.readonly\"\n [glyphAriaLabel]=\"_cva.ariaLabel || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n [iconTitle]=\"addonIconTitle || ('platformMultiCombobox.inputGlyphAriaLabel' | fdTranslate)\"\n (addOnButtonClicked)=\"_addOnClicked($event)\"\n (click)=\"mobile && !isOpen && _onPrimaryButtonClick(false)\"\n (keydown)=\"_navigateByTokens($event)\"\n >\n <fd-tokenizer\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n [showOverflowPopover]=\"false\"\n #tokenizer\n class=\"fd-multi-combobox-tokenizer-custom\"\n (moreClickedEvent)=\"_moreClicked()\"\n fdMultiAnnouncer\n [multiAnnouncerOptions]=\"_suggestions\"\n >\n @for (token of _selectedSuggestions; track token) {\n <fd-token [readOnly]=\"_cva.disabled\" (onCloseClick)=\"_removeToken(token, $event)\">\n {{ token.label }}\n </fd-token>\n }\n <input\n #searchInputElement\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"'coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"_cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? _cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"_cva.id\"\n [name]=\"_cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"_cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [attr.placeholder]=\"_selectedSuggestions.length ? null : _cva.placeholder\"\n (focus)=\"tokenizer._showAllTokens()\"\n (blur)=\"!mobile && _onBlur($event); tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"_cva.readonly\"\n [attr.aria-readonly]=\"_cva.readonly\"\n [attr.aria-required]=\"_cva.required\"\n [displayFn]=\"_displayFn\"\n class=\"fd-tokenizer__input fd-input-group__input\"\n />\n </fd-tokenizer>\n </fd-input-group>\n @if (mobile && isOpen ? false : !!_cva.stateMessage) {\n <fd-form-message [type]=\"_cva.state\" [innerHtml]=\"_cva.stateMessage\"></fd-form-message>\n }\n </fd-form-input-message-group>\n</ng-template>\n<ng-template #mobileControlTemplate>\n <fd-input-group\n [id]=\"_cva.id + '-input-group-container'\"\n class=\"fd-multi-combobox-input-group-custom\"\n [state]=\"_cva.state\"\n [buttonFocusable]=\"false\"\n [isControl]=\"true\"\n [disabled]=\"_cva.disabled || _cva.readonly\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"_cva.disabled || _cva.readonly\"\n [attr.aria-readonly]=\"_cva.readonly\"\n [glyphAriaLabel]=\"_cva.ariaLabel\"\n >\n <input\n fdkAutoComplete\n (onComplete)=\"_onCompleteTerm($event)\"\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [ariaLabel]=\"'coreMultiComboBox.multiComboBoxAriaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"_cva.ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? _cva.id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n fd-form-control\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"_cva.id\"\n [name]=\"_cva.name\"\n (keydown)=\"_onInputKeydownHandler($event)\"\n [disabled]=\"_cva.disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"_searchTermChanged()\"\n [placeholder]=\"_cva.placeholder\"\n (focus)=\"_cva.onTouched()\"\n (blur)=\"!mobile && _onBlur($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [readonly]=\"_cva.readonly\"\n [attr.aria-readonly]=\"_cva.readonly\"\n [displayFn]=\"_displayFn\"\n />\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <ul\n fd-list\n [byline]=\"byline\"\n [selection]=\"byline\"\n (focusEscapeList)=\"_handleListFocusEscape($event)\"\n class=\"fd-multi-combobox__list fd-list--multi-input\"\n [id]=\"_cva.id + '-result'\"\n role=\"listbox\"\n [style.max-height]=\"!mobile && maxHeight\"\n [style.min-width.px]=\"!mobile && minWidth\"\n [style.max-width.px]=\"autoResize && maxWidth\"\n [attr.aria-labelledby]=\"_cva.id + '-search'\"\n aria-multiselectable=\"true\"\n (keydown.tab)=\"close()\"\n (keydown.shift.tab)=\"close()\"\n >\n @if (!!_cva.stateMessage) {\n <fd-form-message [type]=\"_cva.state\" [innerHtml]=\"_cva.stateMessage\"></fd-form-message>\n }\n @if (showSelectAll) {\n <fd-multi-combobox-select-all-toggler\n [selectAllHandler]=\"_handleSelectAllItems\"\n [valueChanges]=\"selectionChange\"\n [selectedItems]=\"_selectedSuggestions\"\n [flatItems]=\"_flatSuggestions\"\n ></fd-multi-combobox-select-all-toggler>\n }\n <ng-content></ng-content>\n @if (isGroup) {\n @for (group of _suggestions; track group) {\n @if (!groupItemTemplate) {\n <label fd-list-group-header role=\"group\">\n <span fd-list-title>{{ group.label }}</span>\n </label>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-template>\n }\n @for (optionItem of group.children; track optionItem; let i = $index) {\n <li\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && _onOptionClicked($event, i)\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n } @else {\n @for (optionItem of _suggestions; track optionItem; let i = $index) {\n <li\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (click)=\"!mobile && _onOptionClicked($event, i)\"\n (keydown)=\"_onItemKeyDownHandler($event)\"\n [selected]=\"!!optionItem.selected\"\n >\n <fd-checkbox\n (click)=\"_onOptionCheckboxClicked($event, i)\"\n (ngModelChange)=\"_toggleSelection(optionItem)\"\n [ngModel]=\"optionItem.selected\"\n >\n </fd-checkbox>\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n </ul>\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n @if (optionItem.selected && !!selectedItemTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n @if (!(optionItem.selected && selectedItemTemplate)) {\n <ng-template\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-template>\n <ng-template\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n @if (!optionItemTemplate) {\n <span\n fd-list-title\n [attr.title]=\"optionItem.label\"\n [innerHTML]=\"optionItem.label | highlight: inputText\"\n fdTruncatedTitle\n ></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n @if (showSecondaryText) {\n @if (!secondaryItemTemplate) {\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight: inputText\"\n ></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-template>\n }\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { MultiAnnouncerDirective } from './multi-announcer/multi-announcer.directive';\nimport { MultiComboboxComponent } from './multi-combobox.component';\nimport { SelectAllTogglerComponent } from './select-all-toggler/select-all-toggler.component';\n\n@NgModule({\n imports: [MultiComboboxComponent, SelectAllTogglerComponent, MultiAnnouncerDirective],\n exports: [MultiComboboxComponent, SelectAllTogglerComponent, MultiAnnouncerDirective]\n})\nexport class MultiComboboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3"],"mappings":"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"}