@danske/sapphire-angular 1.12.4

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 (354) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +25 -0
  3. package/esm2020/danske-sapphire-angular.mjs +5 -0
  4. package/esm2020/lib/badge/public_api.mjs +3 -0
  5. package/esm2020/lib/badge/src/badge.component.mjs +66 -0
  6. package/esm2020/lib/badge/src/badge.module.mjs +18 -0
  7. package/esm2020/lib/button/public_api.mjs +12 -0
  8. package/esm2020/lib/button/src/button-group.component.mjs +57 -0
  9. package/esm2020/lib/button/src/button-icon.directive.mjs +13 -0
  10. package/esm2020/lib/button/src/button.component.mjs +100 -0
  11. package/esm2020/lib/button/src/button.module.mjs +48 -0
  12. package/esm2020/lib/button/src/icon-button.component.mjs +95 -0
  13. package/esm2020/lib/button/src/toggle-button-required-validator.mjs +27 -0
  14. package/esm2020/lib/button/src/toggle-button.component.mjs +124 -0
  15. package/esm2020/lib/checkbox/public_api.mjs +8 -0
  16. package/esm2020/lib/checkbox/src/checkbox-required-validator.mjs +26 -0
  17. package/esm2020/lib/checkbox/src/checkbox.component.mjs +264 -0
  18. package/esm2020/lib/checkbox/src/checkbox.module.mjs +21 -0
  19. package/esm2020/lib/common/auto-id.decorator.mjs +24 -0
  20. package/esm2020/lib/common/coerce-boolean.decorator.mjs +32 -0
  21. package/esm2020/lib/common/constructor.mjs +2 -0
  22. package/esm2020/lib/common/disabled.mjs +16 -0
  23. package/esm2020/lib/common/focused.directive.mjs +64 -0
  24. package/esm2020/lib/common/placement.mjs +60 -0
  25. package/esm2020/lib/common/platform.mjs +45 -0
  26. package/esm2020/lib/common/pressed.directive.mjs +55 -0
  27. package/esm2020/lib/common/public_api.mjs +4 -0
  28. package/esm2020/lib/common/sapphire-view-encapsulation.mjs +83 -0
  29. package/esm2020/lib/common/scroll-monitor.directive.mjs +63 -0
  30. package/esm2020/lib/common/tabindex.mjs +19 -0
  31. package/esm2020/lib/common/visually-hidden.directive.mjs +32 -0
  32. package/esm2020/lib/contextual-help/public_api.mjs +3 -0
  33. package/esm2020/lib/contextual-help/src/contextual-help.component.mjs +112 -0
  34. package/esm2020/lib/contextual-help/src/contextual-help.module.mjs +33 -0
  35. package/esm2020/lib/core.module.mjs +179 -0
  36. package/esm2020/lib/field/public_api.mjs +8 -0
  37. package/esm2020/lib/field/src/field-control.mjs +17 -0
  38. package/esm2020/lib/field/src/field-error.directive.mjs +20 -0
  39. package/esm2020/lib/field/src/field-label.directive.mjs +17 -0
  40. package/esm2020/lib/field/src/field-note-suffix.directive.mjs +28 -0
  41. package/esm2020/lib/field/src/field-note.directive.mjs +17 -0
  42. package/esm2020/lib/field/src/field.component.mjs +153 -0
  43. package/esm2020/lib/field/src/field.module.mjs +49 -0
  44. package/esm2020/lib/icon/public_api.mjs +4 -0
  45. package/esm2020/lib/icon/src/icon-size-provider.mjs +18 -0
  46. package/esm2020/lib/icon/src/icon.component.mjs +67 -0
  47. package/esm2020/lib/icon/src/icon.module.mjs +18 -0
  48. package/esm2020/lib/label/public_api.mjs +6 -0
  49. package/esm2020/lib/label/src/label.component.mjs +61 -0
  50. package/esm2020/lib/link/public_api.mjs +7 -0
  51. package/esm2020/lib/link/src/link.component.mjs +62 -0
  52. package/esm2020/lib/link/src/link.module.mjs +16 -0
  53. package/esm2020/lib/listbox/public_api.mjs +10 -0
  54. package/esm2020/lib/listbox/src/cdk-option-scroll-issue-patch.mjs +30 -0
  55. package/esm2020/lib/listbox/src/listbox-child.mjs +7 -0
  56. package/esm2020/lib/listbox/src/listbox-input.directive.mjs +42 -0
  57. package/esm2020/lib/listbox/src/listbox-item.component.mjs +49 -0
  58. package/esm2020/lib/listbox/src/listbox.component.mjs +273 -0
  59. package/esm2020/lib/listbox/src/listbox.module.mjs +81 -0
  60. package/esm2020/lib/listbox/src/option-icon.directive.mjs +22 -0
  61. package/esm2020/lib/listbox/src/option-primary-text.directive.mjs +25 -0
  62. package/esm2020/lib/listbox/src/option-secondary-text.directive.mjs +22 -0
  63. package/esm2020/lib/listbox/src/option.component.mjs +58 -0
  64. package/esm2020/lib/listbox/src/section.directive.mjs +46 -0
  65. package/esm2020/lib/menu/public_api.mjs +10 -0
  66. package/esm2020/lib/menu/src/menu-item.component.mjs +45 -0
  67. package/esm2020/lib/menu/src/menu-section.component.mjs +27 -0
  68. package/esm2020/lib/menu/src/menu-trigger.directive.mjs +149 -0
  69. package/esm2020/lib/menu/src/menu.component.mjs +33 -0
  70. package/esm2020/lib/menu/src/menu.module.mjs +39 -0
  71. package/esm2020/lib/modal/public_api.mjs +19 -0
  72. package/esm2020/lib/modal/src/dialog/confirmation-dialog.component.mjs +61 -0
  73. package/esm2020/lib/modal/src/dialog/danger-dialog.component.mjs +62 -0
  74. package/esm2020/lib/modal/src/dialog/dialog-close-button.directive.mjs +18 -0
  75. package/esm2020/lib/modal/src/dialog/dialog-content.directive.mjs +29 -0
  76. package/esm2020/lib/modal/src/dialog/dialog-footer.component.mjs +43 -0
  77. package/esm2020/lib/modal/src/dialog/dialog-header.component.mjs +65 -0
  78. package/esm2020/lib/modal/src/dialog/dialog-trigger.directive.mjs +37 -0
  79. package/esm2020/lib/modal/src/dialog/dialog.component.mjs +60 -0
  80. package/esm2020/lib/modal/src/modal-base.component.mjs +89 -0
  81. package/esm2020/lib/modal/src/modal-close-button.directive.mjs +28 -0
  82. package/esm2020/lib/modal/src/modal-trigger.directive.mjs +42 -0
  83. package/esm2020/lib/modal/src/modal.module.mjs +143 -0
  84. package/esm2020/lib/modal/src/modal.service.mjs +58 -0
  85. package/esm2020/lib/modal/src/panel/inline-panel.component.mjs +15 -0
  86. package/esm2020/lib/modal/src/panel/panel-back-button.directive.mjs +13 -0
  87. package/esm2020/lib/modal/src/panel/panel-close-button.directive.mjs +16 -0
  88. package/esm2020/lib/modal/src/panel/panel-content.component.mjs +38 -0
  89. package/esm2020/lib/modal/src/panel/panel-footer.component.mjs +38 -0
  90. package/esm2020/lib/modal/src/panel/panel-header.component.mjs +68 -0
  91. package/esm2020/lib/modal/src/panel/panel-trigger.directive.mjs +37 -0
  92. package/esm2020/lib/modal/src/panel/panel.component.mjs +37 -0
  93. package/esm2020/lib/notification-badge/public_api.mjs +3 -0
  94. package/esm2020/lib/notification-badge/src/notification-badge.component.mjs +28 -0
  95. package/esm2020/lib/notification-badge/src/notification-badge.module.mjs +18 -0
  96. package/esm2020/lib/pagination/public_api.mjs +3 -0
  97. package/esm2020/lib/pagination/src/pagination.component.mjs +85 -0
  98. package/esm2020/lib/pagination/src/pagination.module.mjs +36 -0
  99. package/esm2020/lib/popover/public_api.mjs +10 -0
  100. package/esm2020/lib/popover/src/popover-close-button.directive.mjs +32 -0
  101. package/esm2020/lib/popover/src/popover-title.directive.mjs +24 -0
  102. package/esm2020/lib/popover/src/popover-trigger.directive.mjs +301 -0
  103. package/esm2020/lib/popover/src/popover.component.mjs +88 -0
  104. package/esm2020/lib/popover/src/popover.module.mjs +38 -0
  105. package/esm2020/lib/radio/public_api.mjs +8 -0
  106. package/esm2020/lib/radio/src/radio-group.component.mjs +195 -0
  107. package/esm2020/lib/radio/src/radio.component.mjs +279 -0
  108. package/esm2020/lib/radio/src/radio.module.mjs +22 -0
  109. package/esm2020/lib/segmented-tabs/public_api.mjs +6 -0
  110. package/esm2020/lib/segmented-tabs/src/segmented-tab-content.directive.mjs +15 -0
  111. package/esm2020/lib/segmented-tabs/src/segmented-tab-label.directive.mjs +20 -0
  112. package/esm2020/lib/segmented-tabs/src/segmented-tab.component.mjs +69 -0
  113. package/esm2020/lib/segmented-tabs/src/segmented-tabs.component.mjs +215 -0
  114. package/esm2020/lib/segmented-tabs/src/segmented-tabs.module.mjs +39 -0
  115. package/esm2020/lib/select/public_api.mjs +10 -0
  116. package/esm2020/lib/select/src/basic-select/basic-select.component.mjs +127 -0
  117. package/esm2020/lib/select/src/common/hidden-select.component.mjs +33 -0
  118. package/esm2020/lib/select/src/common/select-component-base.mjs +267 -0
  119. package/esm2020/lib/select/src/common/select-value-holder.mjs +86 -0
  120. package/esm2020/lib/select/src/select/searchable-select.directive.mjs +90 -0
  121. package/esm2020/lib/select/src/select/select.component.mjs +351 -0
  122. package/esm2020/lib/select/src/select/select.module.mjs +113 -0
  123. package/esm2020/lib/select/src/select/selection-text.directive.mjs +19 -0
  124. package/esm2020/lib/skeleton/public_api.mjs +6 -0
  125. package/esm2020/lib/skeleton/src/skeleton-block.directive.mjs +16 -0
  126. package/esm2020/lib/skeleton/src/skeleton-circle.directive.mjs +16 -0
  127. package/esm2020/lib/skeleton/src/skeleton-text.directive.mjs +43 -0
  128. package/esm2020/lib/skeleton/src/skeleton.component.mjs +29 -0
  129. package/esm2020/lib/skeleton/src/skeleton.module.mjs +37 -0
  130. package/esm2020/lib/skeleton/src/util.mjs +2 -0
  131. package/esm2020/lib/surface/public_api.mjs +7 -0
  132. package/esm2020/lib/surface/src/surface.component.mjs +25 -0
  133. package/esm2020/lib/surface/src/surface.module.mjs +16 -0
  134. package/esm2020/lib/switch/public_api.mjs +4 -0
  135. package/esm2020/lib/switch/src/switch-required-validator.mjs +27 -0
  136. package/esm2020/lib/switch/src/switch.component.mjs +216 -0
  137. package/esm2020/lib/switch/src/switch.module.mjs +19 -0
  138. package/esm2020/lib/table/public_api.mjs +15 -0
  139. package/esm2020/lib/table/src/table-body.directive.mjs +20 -0
  140. package/esm2020/lib/table/src/table-cell.directive.mjs +87 -0
  141. package/esm2020/lib/table/src/table-head-cell.component.mjs +57 -0
  142. package/esm2020/lib/table/src/table-head.directive.mjs +32 -0
  143. package/esm2020/lib/table/src/table-row.directive.mjs +48 -0
  144. package/esm2020/lib/table/src/table-sort-header.directive.mjs +44 -0
  145. package/esm2020/lib/table/src/table-sort.directive.mjs +26 -0
  146. package/esm2020/lib/table/src/table.component.mjs +82 -0
  147. package/esm2020/lib/table/src/table.directive.mjs +20 -0
  148. package/esm2020/lib/table/src/table.module.mjs +74 -0
  149. package/esm2020/lib/text-field/public_api.mjs +12 -0
  150. package/esm2020/lib/text-field/src/text-field-affix.directive.mjs +26 -0
  151. package/esm2020/lib/text-field/src/text-field-input.directive.mjs +51 -0
  152. package/esm2020/lib/text-field/src/text-field-postfix.directive.mjs +13 -0
  153. package/esm2020/lib/text-field/src/text-field-prefix.directive.mjs +13 -0
  154. package/esm2020/lib/text-field/src/text-field-textarea-autosize.directive.mjs +73 -0
  155. package/esm2020/lib/text-field/src/text-field.component.mjs +78 -0
  156. package/esm2020/lib/text-field/src/text-field.module.mjs +67 -0
  157. package/esm2020/lib/theme/public_api.mjs +34 -0
  158. package/esm2020/lib/theme/src/sapphire-overlay-container.service.mjs +38 -0
  159. package/esm2020/lib/theme/src/theme-base.directive.mjs +87 -0
  160. package/esm2020/lib/theme/src/theme-check.directive.mjs +29 -0
  161. package/esm2020/lib/theme/src/theme-root.directive.mjs +23 -0
  162. package/esm2020/lib/theme/src/theme.module.mjs +32 -0
  163. package/esm2020/lib/theme/src/themes.mjs +27 -0
  164. package/esm2020/lib/theme/src/top-level-theme-ref.service.mjs +21 -0
  165. package/esm2020/lib/tooltip/public_api.mjs +5 -0
  166. package/esm2020/lib/tooltip/src/tooltip.component.mjs +47 -0
  167. package/esm2020/lib/tooltip/src/tooltip.directive.mjs +223 -0
  168. package/esm2020/lib/tooltip/src/tooltip.module.mjs +30 -0
  169. package/esm2020/lib/tooltip/src/truncated-with-tooltip.directive.mjs +56 -0
  170. package/esm2020/lib/typography/public_api.mjs +8 -0
  171. package/esm2020/lib/typography/src/heading.component.mjs +44 -0
  172. package/esm2020/lib/typography/src/paragraph.component.mjs +24 -0
  173. package/esm2020/lib/typography/src/typography.module.mjs +19 -0
  174. package/esm2020/public-api.mjs +30 -0
  175. package/fesm2015/danske-sapphire-angular.mjs +8010 -0
  176. package/fesm2015/danske-sapphire-angular.mjs.map +1 -0
  177. package/fesm2020/danske-sapphire-angular.mjs +7890 -0
  178. package/fesm2020/danske-sapphire-angular.mjs.map +1 -0
  179. package/index.d.ts +5 -0
  180. package/lib/badge/public_api.d.ts +2 -0
  181. package/lib/badge/src/badge.component.d.ts +35 -0
  182. package/lib/badge/src/badge.module.d.ts +8 -0
  183. package/lib/button/public_api.d.ts +7 -0
  184. package/lib/button/src/button-group.component.d.ts +26 -0
  185. package/lib/button/src/button-icon.directive.d.ts +5 -0
  186. package/lib/button/src/button.component.d.ts +31 -0
  187. package/lib/button/src/button.module.d.ts +14 -0
  188. package/lib/button/src/icon-button.component.d.ts +26 -0
  189. package/lib/button/src/toggle-button-required-validator.d.ts +10 -0
  190. package/lib/button/src/toggle-button.component.d.ts +39 -0
  191. package/lib/checkbox/public_api.d.ts +3 -0
  192. package/lib/checkbox/src/checkbox-required-validator.d.ts +10 -0
  193. package/lib/checkbox/src/checkbox.component.d.ts +112 -0
  194. package/lib/checkbox/src/checkbox.module.d.ts +11 -0
  195. package/lib/common/auto-id.decorator.d.ts +7 -0
  196. package/lib/common/coerce-boolean.decorator.d.ts +7 -0
  197. package/lib/common/constructor.d.ts +2 -0
  198. package/lib/common/disabled.d.ts +9 -0
  199. package/lib/common/focused.directive.d.ts +30 -0
  200. package/lib/common/placement.d.ts +11 -0
  201. package/lib/common/platform.d.ts +9 -0
  202. package/lib/common/pressed.directive.d.ts +27 -0
  203. package/lib/common/public_api.d.ts +2 -0
  204. package/lib/common/sapphire-view-encapsulation.d.ts +37 -0
  205. package/lib/common/scroll-monitor.directive.d.ts +23 -0
  206. package/lib/common/tabindex.d.ts +12 -0
  207. package/lib/common/visually-hidden.directive.d.ts +11 -0
  208. package/lib/contextual-help/public_api.d.ts +2 -0
  209. package/lib/contextual-help/src/contextual-help.component.d.ts +50 -0
  210. package/lib/contextual-help/src/contextual-help.module.d.ts +7 -0
  211. package/lib/core.module.d.ts +30 -0
  212. package/lib/field/public_api.d.ts +7 -0
  213. package/lib/field/src/field-control.d.ts +16 -0
  214. package/lib/field/src/field-error.directive.d.ts +8 -0
  215. package/lib/field/src/field-label.directive.d.ts +8 -0
  216. package/lib/field/src/field-note-suffix.directive.d.ts +15 -0
  217. package/lib/field/src/field-note.directive.d.ts +8 -0
  218. package/lib/field/src/field.component.d.ts +77 -0
  219. package/lib/field/src/field.module.d.ts +14 -0
  220. package/lib/icon/public_api.d.ts +3 -0
  221. package/lib/icon/src/icon-size-provider.d.ts +23 -0
  222. package/lib/icon/src/icon.component.d.ts +18 -0
  223. package/lib/icon/src/icon.module.d.ts +8 -0
  224. package/lib/label/public_api.d.ts +5 -0
  225. package/lib/label/src/label.component.d.ts +43 -0
  226. package/lib/link/public_api.d.ts +2 -0
  227. package/lib/link/src/link.component.d.ts +13 -0
  228. package/lib/link/src/link.module.d.ts +7 -0
  229. package/lib/listbox/public_api.d.ts +9 -0
  230. package/lib/listbox/src/cdk-option-scroll-issue-patch.d.ts +17 -0
  231. package/lib/listbox/src/listbox-child.d.ts +6 -0
  232. package/lib/listbox/src/listbox-input.directive.d.ts +16 -0
  233. package/lib/listbox/src/listbox-item.component.d.ts +21 -0
  234. package/lib/listbox/src/listbox.component.d.ts +127 -0
  235. package/lib/listbox/src/listbox.module.d.ts +22 -0
  236. package/lib/listbox/src/option-icon.directive.d.ts +10 -0
  237. package/lib/listbox/src/option-primary-text.directive.d.ts +14 -0
  238. package/lib/listbox/src/option-secondary-text.directive.d.ts +10 -0
  239. package/lib/listbox/src/option.component.d.ts +21 -0
  240. package/lib/listbox/src/section.directive.d.ts +14 -0
  241. package/lib/menu/public_api.d.ts +5 -0
  242. package/lib/menu/src/menu-item.component.d.ts +12 -0
  243. package/lib/menu/src/menu-section.component.d.ts +12 -0
  244. package/lib/menu/src/menu-trigger.directive.d.ts +34 -0
  245. package/lib/menu/src/menu.component.d.ts +10 -0
  246. package/lib/menu/src/menu.module.d.ts +13 -0
  247. package/lib/modal/public_api.d.ts +18 -0
  248. package/lib/modal/src/dialog/confirmation-dialog.component.d.ts +43 -0
  249. package/lib/modal/src/dialog/danger-dialog.component.d.ts +44 -0
  250. package/lib/modal/src/dialog/dialog-close-button.directive.d.ts +7 -0
  251. package/lib/modal/src/dialog/dialog-content.directive.d.ts +13 -0
  252. package/lib/modal/src/dialog/dialog-footer.component.d.ts +20 -0
  253. package/lib/modal/src/dialog/dialog-header.component.d.ts +25 -0
  254. package/lib/modal/src/dialog/dialog-trigger.directive.d.ts +13 -0
  255. package/lib/modal/src/dialog/dialog.component.d.ts +33 -0
  256. package/lib/modal/src/modal-base.component.d.ts +33 -0
  257. package/lib/modal/src/modal-close-button.directive.d.ts +9 -0
  258. package/lib/modal/src/modal-trigger.directive.d.ts +24 -0
  259. package/lib/modal/src/modal.module.d.ts +30 -0
  260. package/lib/modal/src/modal.service.d.ts +26 -0
  261. package/lib/modal/src/panel/inline-panel.component.d.ts +6 -0
  262. package/lib/modal/src/panel/panel-back-button.directive.d.ts +5 -0
  263. package/lib/modal/src/panel/panel-close-button.directive.d.ts +6 -0
  264. package/lib/modal/src/panel/panel-content.component.d.ts +14 -0
  265. package/lib/modal/src/panel/panel-footer.component.d.ts +21 -0
  266. package/lib/modal/src/panel/panel-header.component.d.ts +26 -0
  267. package/lib/modal/src/panel/panel-trigger.directive.d.ts +13 -0
  268. package/lib/modal/src/panel/panel.component.d.ts +18 -0
  269. package/lib/notification-badge/public_api.d.ts +2 -0
  270. package/lib/notification-badge/src/notification-badge.component.d.ts +10 -0
  271. package/lib/notification-badge/src/notification-badge.module.d.ts +8 -0
  272. package/lib/pagination/public_api.d.ts +2 -0
  273. package/lib/pagination/src/pagination.component.d.ts +32 -0
  274. package/lib/pagination/src/pagination.module.d.ts +12 -0
  275. package/lib/popover/public_api.d.ts +5 -0
  276. package/lib/popover/src/popover-close-button.directive.d.ts +13 -0
  277. package/lib/popover/src/popover-title.directive.d.ts +11 -0
  278. package/lib/popover/src/popover-trigger.directive.d.ts +86 -0
  279. package/lib/popover/src/popover.component.d.ts +32 -0
  280. package/lib/popover/src/popover.module.d.ts +12 -0
  281. package/lib/radio/public_api.d.ts +3 -0
  282. package/lib/radio/src/radio-group.component.d.ts +65 -0
  283. package/lib/radio/src/radio.component.d.ts +99 -0
  284. package/lib/radio/src/radio.module.d.ts +12 -0
  285. package/lib/segmented-tabs/public_api.d.ts +5 -0
  286. package/lib/segmented-tabs/src/segmented-tab-content.directive.d.ts +6 -0
  287. package/lib/segmented-tabs/src/segmented-tab-label.directive.d.ts +6 -0
  288. package/lib/segmented-tabs/src/segmented-tab.component.d.ts +27 -0
  289. package/lib/segmented-tabs/src/segmented-tabs.component.d.ts +48 -0
  290. package/lib/segmented-tabs/src/segmented-tabs.module.d.ts +13 -0
  291. package/lib/select/public_api.d.ts +5 -0
  292. package/lib/select/src/basic-select/basic-select.component.d.ts +50 -0
  293. package/lib/select/src/common/hidden-select.component.d.ts +19 -0
  294. package/lib/select/src/common/select-component-base.d.ts +109 -0
  295. package/lib/select/src/common/select-value-holder.d.ts +54 -0
  296. package/lib/select/src/select/searchable-select.directive.d.ts +40 -0
  297. package/lib/select/src/select/select.component.d.ts +80 -0
  298. package/lib/select/src/select/select.module.d.ts +26 -0
  299. package/lib/select/src/select/selection-text.directive.d.ts +11 -0
  300. package/lib/skeleton/public_api.d.ts +5 -0
  301. package/lib/skeleton/src/skeleton-block.directive.d.ts +5 -0
  302. package/lib/skeleton/src/skeleton-circle.directive.d.ts +5 -0
  303. package/lib/skeleton/src/skeleton-text.directive.d.ts +13 -0
  304. package/lib/skeleton/src/skeleton.component.d.ts +13 -0
  305. package/lib/skeleton/src/skeleton.module.d.ts +11 -0
  306. package/lib/skeleton/src/util.d.ts +1 -0
  307. package/lib/surface/public_api.d.ts +2 -0
  308. package/lib/surface/src/surface.component.d.ts +11 -0
  309. package/lib/surface/src/surface.module.d.ts +7 -0
  310. package/lib/switch/public_api.d.ts +3 -0
  311. package/lib/switch/src/switch-required-validator.d.ts +10 -0
  312. package/lib/switch/src/switch.component.d.ts +91 -0
  313. package/lib/switch/src/switch.module.d.ts +9 -0
  314. package/lib/table/public_api.d.ts +10 -0
  315. package/lib/table/src/table-body.directive.d.ts +7 -0
  316. package/lib/table/src/table-cell.directive.d.ts +30 -0
  317. package/lib/table/src/table-head-cell.component.d.ts +19 -0
  318. package/lib/table/src/table-head.directive.d.ts +10 -0
  319. package/lib/table/src/table-row.directive.d.ts +16 -0
  320. package/lib/table/src/table-sort-header.directive.d.ts +11 -0
  321. package/lib/table/src/table-sort.directive.d.ts +13 -0
  322. package/lib/table/src/table.component.d.ts +37 -0
  323. package/lib/table/src/table.directive.d.ts +7 -0
  324. package/lib/table/src/table.module.d.ts +19 -0
  325. package/lib/text-field/public_api.d.ts +7 -0
  326. package/lib/text-field/src/text-field-affix.directive.d.ts +10 -0
  327. package/lib/text-field/src/text-field-input.directive.d.ts +16 -0
  328. package/lib/text-field/src/text-field-postfix.directive.d.ts +5 -0
  329. package/lib/text-field/src/text-field-prefix.directive.d.ts +5 -0
  330. package/lib/text-field/src/text-field-textarea-autosize.directive.d.ts +20 -0
  331. package/lib/text-field/src/text-field.component.d.ts +23 -0
  332. package/lib/text-field/src/text-field.module.d.ts +17 -0
  333. package/lib/theme/public_api.d.ts +24 -0
  334. package/lib/theme/src/sapphire-overlay-container.service.d.ts +14 -0
  335. package/lib/theme/src/theme-base.directive.d.ts +14 -0
  336. package/lib/theme/src/theme-check.directive.d.ts +14 -0
  337. package/lib/theme/src/theme-root.directive.d.ts +13 -0
  338. package/lib/theme/src/theme.module.d.ts +14 -0
  339. package/lib/theme/src/themes.d.ts +16 -0
  340. package/lib/theme/src/top-level-theme-ref.service.d.ts +13 -0
  341. package/lib/tooltip/public_api.d.ts +4 -0
  342. package/lib/tooltip/src/tooltip.component.d.ts +10 -0
  343. package/lib/tooltip/src/tooltip.directive.d.ts +39 -0
  344. package/lib/tooltip/src/tooltip.module.d.ts +11 -0
  345. package/lib/tooltip/src/truncated-with-tooltip.directive.d.ts +26 -0
  346. package/lib/typography/public_api.d.ts +3 -0
  347. package/lib/typography/src/heading.component.d.ts +17 -0
  348. package/lib/typography/src/paragraph.component.d.ts +8 -0
  349. package/lib/typography/src/typography.module.d.ts +9 -0
  350. package/package.json +45 -0
  351. package/public-api.d.ts +26 -0
  352. package/src/lib/listbox/src/README.md +67 -0
  353. package/theme-assets/default-dark.css +1 -0
  354. package/theme-assets/default.css +1 -0
@@ -0,0 +1,33 @@
1
+ import { Component } from '@angular/core';
2
+ import { isMobile } from '../../../common/platform';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./select-component-base";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "../../../common/visually-hidden.directive";
8
+ import * as i5 from "../../../common/sapphire-view-encapsulation";
9
+ /**
10
+ * Hidden native select to be rendered in sapphire select components. It does two things:
11
+ * - Takes care of form accessibility and autofilling by rendering native select/input
12
+ * - Opens the native select dropdown instead of the custom dropdown, when possible.
13
+ *
14
+ * The latter proved to be a questionable, and we may rethink it at some point.
15
+ *
16
+ * @internal
17
+ */
18
+ export class HiddenSelectComponent {
19
+ constructor(_select) {
20
+ this._select = _select;
21
+ this._isMobile = isMobile();
22
+ }
23
+ _onNativeSelectChange(e) {
24
+ this._select.listboxValue = [e.target.value];
25
+ }
26
+ }
27
+ HiddenSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: HiddenSelectComponent, deps: [{ token: i1.SelectComponentBase }], target: i0.ɵɵFactoryTarget.Component });
28
+ HiddenSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: HiddenSelectComponent, selector: "sp-hidden-select", ngImport: i0, template: "<ng-container *ngIf=\"_select._initialized\">\n <select\n *ngIf=\"_isMobile && !_select.multiple\"\n class=\"sapphire-select__native-select\"\n _spUseComponentStyles\n [disabled]=\"_select.disabled\"\n [attr.name]=\"_select.name\"\n (change)=\"_onNativeSelectChange($event)\"\n >\n <option\n *ngFor=\"let option of _select.options\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n <div\n *ngIf=\"!_isMobile || _select.multiple\"\n aria-hidden=\"true\"\n spVisuallyHidden\n >\n <input\n type=\"text\"\n style=\"font-size: 16px\"\n [disabled]=\"_select.disabled\"\n [tabIndex]=\"_select.isFocused() || _select.isOpen() ? -1 : 0\"\n (focus)=\"_select.focus('keyboard')\"\n />\n <label>\n {{ _select.getLabelText() }}\n <select\n [attr.size]=\"_select.multiple ? _select.options.length : null\"\n [disabled]=\"_select.disabled\"\n tabindex=\"-1\"\n [multiple]=\"_select.multiple\"\n (change)=\"_onNativeSelectChange($event)\"\n [attr.name]=\"_select.name\"\n >\n <option\n *ngFor=\"let option of _select.options\"\n [value]=\"option.value\"\n [selected]=\"_select.listboxValue.includes(option.value)\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n </label>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.VisuallyHiddenDirective, selector: "[spVisuallyHidden]", inputs: ["spVisuallyHidden"] }, { kind: "directive", type: i5.UseComponentStyles, selector: "[_spUseComponentStyles]" }] });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: HiddenSelectComponent, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: 'sp-hidden-select', template: "<ng-container *ngIf=\"_select._initialized\">\n <select\n *ngIf=\"_isMobile && !_select.multiple\"\n class=\"sapphire-select__native-select\"\n _spUseComponentStyles\n [disabled]=\"_select.disabled\"\n [attr.name]=\"_select.name\"\n (change)=\"_onNativeSelectChange($event)\"\n >\n <option\n *ngFor=\"let option of _select.options\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n <div\n *ngIf=\"!_isMobile || _select.multiple\"\n aria-hidden=\"true\"\n spVisuallyHidden\n >\n <input\n type=\"text\"\n style=\"font-size: 16px\"\n [disabled]=\"_select.disabled\"\n [tabIndex]=\"_select.isFocused() || _select.isOpen() ? -1 : 0\"\n (focus)=\"_select.focus('keyboard')\"\n />\n <label>\n {{ _select.getLabelText() }}\n <select\n [attr.size]=\"_select.multiple ? _select.options.length : null\"\n [disabled]=\"_select.disabled\"\n tabindex=\"-1\"\n [multiple]=\"_select.multiple\"\n (change)=\"_onNativeSelectChange($event)\"\n [attr.name]=\"_select.name\"\n >\n <option\n *ngFor=\"let option of _select.options\"\n [value]=\"option.value\"\n [selected]=\"_select.listboxValue.includes(option.value)\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n </label>\n </div>\n</ng-container>\n" }]
32
+ }], ctorParameters: function () { return [{ type: i1.SelectComponentBase }]; } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlkZGVuLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlbGVjdC9zcmMvY29tbW9uL2hpZGRlbi1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWxlY3Qvc3JjL2NvbW1vbi9oaWRkZW4tc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7O0FBR3BEOzs7Ozs7OztHQVFHO0FBS0gsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUFtQixPQUE0QjtRQUE1QixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUYvQyxjQUFTLEdBQUcsUUFBUSxFQUFFLENBQUM7SUFFMkIsQ0FBQztJQUVuRCxxQkFBcUIsQ0FBQyxDQUFNO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDOztrSEFQVSxxQkFBcUI7c0dBQXJCLHFCQUFxQix3RENqQmxDLHMrQ0FtREE7MkZEbENhLHFCQUFxQjtrQkFKakMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3BsYXRmb3JtJztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudEJhc2UgfSBmcm9tICcuL3NlbGVjdC1jb21wb25lbnQtYmFzZSc7XG5cbi8qKlxuICogSGlkZGVuIG5hdGl2ZSBzZWxlY3QgdG8gYmUgcmVuZGVyZWQgaW4gc2FwcGhpcmUgc2VsZWN0IGNvbXBvbmVudHMuIEl0IGRvZXMgdHdvIHRoaW5nczpcbiAqIC0gVGFrZXMgY2FyZSBvZiBmb3JtIGFjY2Vzc2liaWxpdHkgYW5kIGF1dG9maWxsaW5nIGJ5IHJlbmRlcmluZyBuYXRpdmUgc2VsZWN0L2lucHV0XG4gKiAtIE9wZW5zIHRoZSBuYXRpdmUgc2VsZWN0IGRyb3Bkb3duIGluc3RlYWQgb2YgdGhlIGN1c3RvbSBkcm9wZG93biwgd2hlbiBwb3NzaWJsZS5cbiAqXG4gKiBUaGUgbGF0dGVyIHByb3ZlZCB0byBiZSBhIHF1ZXN0aW9uYWJsZSwgYW5kIHdlIG1heSByZXRoaW5rIGl0IGF0IHNvbWUgcG9pbnQuXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwLWhpZGRlbi1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vaGlkZGVuLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEhpZGRlblNlbGVjdENvbXBvbmVudCB7XG4gIF9pc01vYmlsZSA9IGlzTW9iaWxlKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIF9zZWxlY3Q6IFNlbGVjdENvbXBvbmVudEJhc2UpIHt9XG5cbiAgX29uTmF0aXZlU2VsZWN0Q2hhbmdlKGU6IGFueSkge1xuICAgIHRoaXMuX3NlbGVjdC5saXN0Ym94VmFsdWUgPSBbZS50YXJnZXQudmFsdWVdO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiX3NlbGVjdC5faW5pdGlhbGl6ZWRcIj5cbiAgPHNlbGVjdFxuICAgICpuZ0lmPVwiX2lzTW9iaWxlICYmICFfc2VsZWN0Lm11bHRpcGxlXCJcbiAgICBjbGFzcz1cInNhcHBoaXJlLXNlbGVjdF9fbmF0aXZlLXNlbGVjdFwiXG4gICAgX3NwVXNlQ29tcG9uZW50U3R5bGVzXG4gICAgW2Rpc2FibGVkXT1cIl9zZWxlY3QuZGlzYWJsZWRcIlxuICAgIFthdHRyLm5hbWVdPVwiX3NlbGVjdC5uYW1lXCJcbiAgICAoY2hhbmdlKT1cIl9vbk5hdGl2ZVNlbGVjdENoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxvcHRpb25cbiAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgX3NlbGVjdC5vcHRpb25zXCJcbiAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgPlxuICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgPC9vcHRpb24+XG4gIDwvc2VsZWN0PlxuICA8ZGl2XG4gICAgKm5nSWY9XCIhX2lzTW9iaWxlIHx8IF9zZWxlY3QubXVsdGlwbGVcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgc3BWaXN1YWxseUhpZGRlblxuICA+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTZweFwiXG4gICAgICBbZGlzYWJsZWRdPVwiX3NlbGVjdC5kaXNhYmxlZFwiXG4gICAgICBbdGFiSW5kZXhdPVwiX3NlbGVjdC5pc0ZvY3VzZWQoKSB8fCBfc2VsZWN0LmlzT3BlbigpID8gLTEgOiAwXCJcbiAgICAgIChmb2N1cyk9XCJfc2VsZWN0LmZvY3VzKCdrZXlib2FyZCcpXCJcbiAgICAvPlxuICAgIDxsYWJlbD5cbiAgICAgIHt7IF9zZWxlY3QuZ2V0TGFiZWxUZXh0KCkgfX1cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgW2F0dHIuc2l6ZV09XCJfc2VsZWN0Lm11bHRpcGxlID8gX3NlbGVjdC5vcHRpb25zLmxlbmd0aCA6IG51bGxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiX3NlbGVjdC5kaXNhYmxlZFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbbXVsdGlwbGVdPVwiX3NlbGVjdC5tdWx0aXBsZVwiXG4gICAgICAgIChjaGFuZ2UpPVwiX29uTmF0aXZlU2VsZWN0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIl9zZWxlY3QubmFtZVwiXG4gICAgICA+XG4gICAgICAgIDxvcHRpb25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIF9zZWxlY3Qub3B0aW9uc1wiXG4gICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgW3NlbGVjdGVkXT1cIl9zZWxlY3QubGlzdGJveFZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,267 @@
1
+ import { __decorate } from "tslib";
2
+ import { CoerceBoolean } from '../../../common/coerce-boolean.decorator';
3
+ import { ListboxChild, OptionComponent, } from '../../../listbox/public_api';
4
+ import { ChangeDetectorRef, ContentChild, ContentChildren, Directive, EventEmitter, inject, Input, Output, QueryList, } from '@angular/core';
5
+ import { AutoId } from '../../../common/auto-id.decorator';
6
+ import { ListKeyManager, } from '@angular/cdk/a11y';
7
+ import { MultiSelectDirectiveBase, } from './select-value-holder';
8
+ import { SelectionTextDirective } from '../select/selection-text.directive';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "./select-value-holder";
11
+ export class SelectComponentBase {
12
+ set listboxValue(value) {
13
+ this.valueHolder.setFromListboxValue(value);
14
+ this.controlValueAccessorChangeFn(this.valueHolder.value);
15
+ }
16
+ get listboxValue() {
17
+ return this.valueHolder.getListboxValue();
18
+ }
19
+ get selectedOptions() {
20
+ return this.options?.filter((option) => this.listboxValue.includes(option.value));
21
+ }
22
+ constructor(valueHolder) {
23
+ this.valueHolder = valueHolder;
24
+ /** A unique id for the select. If none is supplied, it will be auto-generated. */
25
+ this.id = '';
26
+ /**
27
+ * Emitted when the popover is opened
28
+ */
29
+ this.opened = new EventEmitter();
30
+ /**
31
+ * Emitted when the popover is closed
32
+ */
33
+ this.closed = new EventEmitter();
34
+ this.options = new QueryList();
35
+ this.listboxChildren = new QueryList();
36
+ /**
37
+ * Emits whenever the dropdown is closed as a result of an option (already
38
+ * selected or not) being selected.
39
+ */
40
+ this.selected = new EventEmitter();
41
+ this.ariaLabel = null;
42
+ this.ariaLabelledby = null;
43
+ /**
44
+ * Used to work around ExpressionChangedAfterItHasBeenCheckedError error thrown from HiddenSelect,
45
+ * when the select component is rendered from a template (e.g. with *ngIf). It's set to true
46
+ * asynchronously after content is initialized, to delay rendering of things that depend on
47
+ * options. It's not clear why the issue happens, and it only happens when select is used with
48
+ * *ngIf, or generally in a template.
49
+ */
50
+ this._initialized = false;
51
+ this.changeDetectorRef = inject(ChangeDetectorRef);
52
+ this.controlValueAccessorChangeFn = () => { };
53
+ this.onTouched = () => { };
54
+ }
55
+ handleKeyDown($event) {
56
+ if ($event.target !== this.triggerElementRef?.nativeElement) {
57
+ return;
58
+ }
59
+ switch ($event.key) {
60
+ case 'ArrowDown':
61
+ this.triggerRef?.open();
62
+ break;
63
+ case 'ArrowUp':
64
+ this.triggerRef?.open();
65
+ // we need to delay it a little, since the listbox will autofocus
66
+ // the first item.
67
+ setTimeout(() => {
68
+ if (this.options?.last && this.listboxValue.length === 0) {
69
+ this.listbox?.setActiveOption(this.options?.last.value);
70
+ }
71
+ });
72
+ break;
73
+ case 'ArrowRight':
74
+ case 'ArrowLeft':
75
+ if (this.multiple) {
76
+ this.triggerRef?.open();
77
+ }
78
+ else {
79
+ const option = this.getNextEnabledOptionValue($event.key === 'ArrowLeft' ? 'left' : 'right');
80
+ if (option) {
81
+ this.listboxValue = [option];
82
+ }
83
+ }
84
+ break;
85
+ default:
86
+ this.keyManager?.onKeydown($event);
87
+ }
88
+ }
89
+ getSelectionText() {
90
+ const selectedOptions = this.selectedOptions;
91
+ if (selectedOptions.length === 0) {
92
+ return '';
93
+ }
94
+ if (selectedOptions.length === 1) {
95
+ return selectedOptions[0]?.label;
96
+ }
97
+ return `${selectedOptions.length === this.options.length
98
+ ? 'All'
99
+ : selectedOptions.length} selected`;
100
+ }
101
+ /**
102
+ * Whether multiple selection is allowed.
103
+ */
104
+ get multiple() {
105
+ return this.valueHolder instanceof MultiSelectDirectiveBase;
106
+ }
107
+ ngAfterContentInit() {
108
+ this.initKeyManager();
109
+ this.options.changes.subscribe(() => {
110
+ this.initKeyManager();
111
+ });
112
+ Promise.resolve().then(() => {
113
+ this._initialized = true;
114
+ });
115
+ }
116
+ ngAfterViewInit() {
117
+ /**
118
+ * This is to avoid an NG0100 ExpressionChangedAfter... error when there is an initial value
119
+ * The issue is probably due to the fact that options are defined withing the **content**
120
+ * (sp-option elements), so the listbox value can change after the view of select is checked,
121
+ * if there is a default value. And that leads to the error, since we have bindings in the
122
+ * template, such as `getSelectionText()`, that depend on the listbox value.
123
+ */
124
+ if (this.listboxValue.length > 0) {
125
+ this.changeDetectorRef.detectChanges();
126
+ }
127
+ }
128
+ ngOnDestroy() {
129
+ this.keyManager?.destroy();
130
+ }
131
+ /**
132
+ * Called when an item in the listbox is selected.
133
+ */
134
+ _handleSelected() {
135
+ if (!this.multiple) {
136
+ this.triggerRef?.close();
137
+ }
138
+ this.selected.emit();
139
+ }
140
+ isOpen() {
141
+ return this.triggerRef?.isOpen() ?? false;
142
+ }
143
+ open() {
144
+ this.triggerRef?.open();
145
+ }
146
+ close() {
147
+ this.triggerRef?.close();
148
+ }
149
+ toggle() {
150
+ this.triggerRef?.open();
151
+ }
152
+ getLabelText() {
153
+ return (this.getFieldLabel?.() ?? this.ariaLabel)?.trim();
154
+ }
155
+ _onOpen() {
156
+ this.opened.emit();
157
+ }
158
+ _onClose() {
159
+ this.closed.emit();
160
+ this.onTouched();
161
+ }
162
+ /**
163
+ * Implemented as part of ControlValueAccessor.
164
+ */
165
+ registerOnChange(fn) {
166
+ this.controlValueAccessorChangeFn = fn;
167
+ }
168
+ /**
169
+ * Implemented as part of ControlValueAccessor.
170
+ */
171
+ registerOnTouched(fn) {
172
+ this.onTouched = fn;
173
+ }
174
+ /**
175
+ * Implemented as part of ControlValueAccessor.
176
+ */
177
+ setDisabledState(isDisabled) {
178
+ this.disabled = isDisabled;
179
+ }
180
+ /**
181
+ * Implemented as part of ControlValueAccessor.
182
+ */
183
+ writeValue(value) {
184
+ this.valueHolder.value = value;
185
+ }
186
+ getNextEnabledOptionValue(direction = 'right') {
187
+ const optionsArray = this.options?.toArray() || [];
188
+ let nextNonDisabledOption;
189
+ const selectedOption = this.selectedOptions[0];
190
+ const currentOptionIndex = (selectedOption && optionsArray.indexOf(selectedOption)) ?? -1;
191
+ const notDisabled = (o) => !o.disabled;
192
+ if (currentOptionIndex === -1) {
193
+ nextNonDisabledOption = optionsArray.find(notDisabled);
194
+ }
195
+ else if (direction === 'left') {
196
+ nextNonDisabledOption = optionsArray
197
+ .slice(0, currentOptionIndex)
198
+ .reverse()
199
+ .find(notDisabled);
200
+ }
201
+ else {
202
+ nextNonDisabledOption = optionsArray
203
+ .slice(currentOptionIndex + 1, optionsArray.length)
204
+ .find(notDisabled);
205
+ }
206
+ const nextNonDisabledOptionIndex = nextNonDisabledOption
207
+ ? optionsArray.indexOf(nextNonDisabledOption)
208
+ : currentOptionIndex;
209
+ return this.options?.get(nextNonDisabledOptionIndex)?.value;
210
+ }
211
+ initKeyManager() {
212
+ // destroy any existing key manager
213
+ this.keyManager?.destroy();
214
+ this.keyManager = new ListKeyManager(this.options.map((option) => ({
215
+ value: option.value,
216
+ getLabel: () => option.label,
217
+ disabled: !!option.disabled,
218
+ }))).withTypeAhead();
219
+ this.keyManager.change.subscribe(() => {
220
+ const selectedOption = this.options?.find((option) => this.keyManager?.activeItem?.value === option.value);
221
+ if (selectedOption) {
222
+ this.listboxValue = [selectedOption.value];
223
+ }
224
+ });
225
+ }
226
+ }
227
+ SelectComponentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SelectComponentBase, deps: [{ token: i1.SelectValueHolder }], target: i0.ɵɵFactoryTarget.Directive });
228
+ SelectComponentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: SelectComponentBase, inputs: { disabled: "disabled", id: "id", name: "name", placeholder: "placeholder", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"] }, outputs: { opened: "opened", closed: "closed", selected: "selected" }, queries: [{ propertyName: "selectionText", first: true, predicate: SelectionTextDirective, descendants: true }, { propertyName: "options", predicate: OptionComponent, descendants: true }, { propertyName: "listboxChildren", predicate: ListboxChild }], ngImport: i0 });
229
+ __decorate([
230
+ CoerceBoolean
231
+ ], SelectComponentBase.prototype, "disabled", void 0);
232
+ __decorate([
233
+ AutoId()
234
+ ], SelectComponentBase.prototype, "id", void 0);
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SelectComponentBase, decorators: [{
236
+ type: Directive
237
+ }], ctorParameters: function () { return [{ type: i1.SelectValueHolder }]; }, propDecorators: { disabled: [{
238
+ type: Input
239
+ }], id: [{
240
+ type: Input
241
+ }], name: [{
242
+ type: Input
243
+ }], placeholder: [{
244
+ type: Input
245
+ }], opened: [{
246
+ type: Output
247
+ }], closed: [{
248
+ type: Output
249
+ }], options: [{
250
+ type: ContentChildren,
251
+ args: [OptionComponent, { descendants: true }]
252
+ }], listboxChildren: [{
253
+ type: ContentChildren,
254
+ args: [ListboxChild]
255
+ }], selected: [{
256
+ type: Output
257
+ }], ariaLabel: [{
258
+ type: Input,
259
+ args: ['aria-label']
260
+ }], ariaLabelledby: [{
261
+ type: Input,
262
+ args: ['aria-labelledby']
263
+ }], selectionText: [{
264
+ type: ContentChild,
265
+ args: [SelectionTextDirective]
266
+ }] } });
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWNvbXBvbmVudC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWxlY3Qvc3JjL2NvbW1vbi9zZWxlY3QtY29tcG9uZW50LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsWUFBWSxFQUVaLGVBQWUsR0FDaEIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNELE9BQU8sRUFFTCxjQUFjLEdBRWYsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQ0wsd0JBQXdCLEdBRXpCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQUc1RSxNQUFNLE9BQWdCLG1CQUFtQjtJQXlFdkMsSUFBSSxZQUFZLENBQUMsS0FBd0I7UUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ3JD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QUs7dUJBQUMsaUJBQWlCO2dCQUl4QixhQUFhO3NCQURaLFlBQVk7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29lcmNlQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb2VyY2UtYm9vbGVhbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIExpc3Rib3hDaGlsZCxcbiAgTGlzdGJveENvbXBvbmVudCxcbiAgT3B0aW9uQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi9saXN0Ym94L3B1YmxpY19hcGknO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dG9JZCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9hdXRvLWlkLmRlY29yYXRvcic7XG5pbXBvcnQge1xuICBGb2N1c09yaWdpbixcbiAgTGlzdEtleU1hbmFnZXIsXG4gIExpc3RLZXlNYW5hZ2VyT3B0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3BvcG92ZXIvc3JjL3BvcG92ZXItdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgTXVsdGlTZWxlY3REaXJlY3RpdmVCYXNlLFxuICBTZWxlY3RWYWx1ZUhvbGRlcixcbn0gZnJvbSAnLi9zZWxlY3QtdmFsdWUtaG9sZGVyJztcbmltcG9ydCB7IFNlbGVjdGlvblRleHREaXJlY3RpdmUgfSBmcm9tICcuLi9zZWxlY3Qvc2VsZWN0aW9uLXRleHQuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSgpIC8vIFRoaXMgaXMgbmVlZGVkIGZvciBkZWNvcmF0b3JzIGxpa2UgSW5wdXQgdG8gd29ya1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlbGVjdENvbXBvbmVudEJhc2VcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBAQ29lcmNlQm9vbGVhblxuICBkaXNhYmxlZDogQm9vbGVhbklucHV0O1xuXG4gIC8qKiBBIHVuaXF1ZSBpZCBmb3IgdGhlIHNlbGVjdC4gSWYgbm9uZSBpcyBzdXBwbGllZCwgaXQgd2lsbCBiZSBhdXRvLWdlbmVyYXRlZC4gKi9cbiAgQElucHV0KClcbiAgQEF1dG9JZCgpXG4gIGlkID0gJyc7XG5cbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBpbnB1dCwgdXNlZCB3aGVuIHN1Ym1pdHRpbmcgYW4gSFRNTCBmb3JtLiAqL1xuICBASW5wdXQoKVxuICBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0byBiZSBzaG93biBpZiBubyB2YWx1ZSBoYXMgYmVlbiBzZWxlY3RlZC5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHBvcG92ZXIgaXMgb3BlbmVkXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgb3BlbmVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBpcyBjbG9zZWRcbiAgICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBjbG9zZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAQ29udGVudENoaWxkcmVuKE9wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgb3B0aW9uczogUXVlcnlMaXN0PE9wdGlvbkNvbXBvbmVudD4gPSBuZXcgUXVlcnlMaXN0PE9wdGlvbkNvbXBvbmVudD4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKExpc3Rib3hDaGlsZClcbiAgcHVibGljIGxpc3Rib3hDaGlsZHJlbjogUXVlcnlMaXN0PExpc3Rib3hDaGlsZD4gPSBuZXcgUXVlcnlMaXN0PExpc3Rib3hDaGlsZD4oKTtcblxuICAvKipcbiAgICogTWFuYWdlcyBrZXlib2FyZCBldmVudHMgZm9yIG9wdGlvbnMgaW4gdGhlIHBhbmVsLlxuICAgKi9cbiAgcHJvdGVjdGVkIGtleU1hbmFnZXI6XG4gICAgfCBMaXN0S2V5TWFuYWdlcjx7IHZhbHVlOiBzdHJpbmcgfSAmIExpc3RLZXlNYW5hZ2VyT3B0aW9uPlxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuZXZlciB0aGUgZHJvcGRvd24gaXMgY2xvc2VkIGFzIGEgcmVzdWx0IG9mIGFuIG9wdGlvbiAoYWxyZWFkeVxuICAgKiBzZWxlY3RlZCBvciBub3QpIGJlaW5nIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgnYXJpYS1sYWJlbCcpXG4gIGFyaWFMYWJlbDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgnYXJpYS1sYWJlbGxlZGJ5JylcbiAgYXJpYUxhYmVsbGVkYnk/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBAQ29udGVudENoaWxkKFNlbGVjdGlvblRleHREaXJlY3RpdmUpXG4gIHNlbGVjdGlvblRleHQ/OiBTZWxlY3Rpb25UZXh0RGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHdvcmsgYXJvdW5kIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IgZXJyb3IgdGhyb3duIGZyb20gSGlkZGVuU2VsZWN0LFxuICAgKiB3aGVuIHRoZSBzZWxlY3QgY29tcG9uZW50IGlzIHJlbmRlcmVkIGZyb20gYSB0ZW1wbGF0ZSAoZS5nLiB3aXRoICpuZ0lmKS4gSXQncyBzZXQgdG8gdHJ1ZVxuICAgKiBhc3luY2hyb25vdXNseSBhZnRlciBjb250ZW50IGlzIGluaXRpYWxpemVkLCB0byBkZWxheSByZW5kZXJpbmcgb2YgdGhpbmdzIHRoYXQgZGVwZW5kIG9uXG4gICAqIG9wdGlvbnMuIEl0J3Mgbm90IGNsZWFyIHdoeSB0aGUgaXNzdWUgaGFwcGVucywgYW5kIGl0IG9ubHkgaGFwcGVucyB3aGVuIHNlbGVjdCBpcyB1c2VkIHdpdGhcbiAgICogKm5nSWYsIG9yIGdlbmVyYWxseSBpbiBhIHRlbXBsYXRlLlxuICAgKi9cbiAgX2luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgc2V0IGxpc3Rib3hWYWx1ZSh2YWx1ZTogcmVhZG9ubHkgc3RyaW5nW10pIHtcbiAgICB0aGlzLnZhbHVlSG9sZGVyLnNldEZyb21MaXN0Ym94VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbih0aGlzLnZhbHVlSG9sZGVyLnZhbHVlKTtcbiAgfVxuICBnZXQgbGlzdGJveFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlSG9sZGVyLmdldExpc3Rib3hWYWx1ZSgpO1xuICB9XG4gIGdldCBzZWxlY3RlZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKChvcHRpb24pID0+XG4gICAgICB0aGlzLmxpc3Rib3hWYWx1ZS5pbmNsdWRlcyhvcHRpb24udmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB2YWx1ZUhvbGRlcjogU2VsZWN0VmFsdWVIb2xkZXIpIHt9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHRyaWdnZXJSZWY6IFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdHJpZ2dlckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgbGlzdGJveDogTGlzdGJveENvbXBvbmVudCB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGFic3RyYWN0IGZvY3VzKGZvY3VzT3JpZ2luOiBGb2N1c09yaWdpbik6IHZvaWQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBpc0ZvY3VzZWQoKTogYm9vbGVhbjtcblxuICBoYW5kbGVLZXlEb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICgkZXZlbnQudGFyZ2V0ICE9PSB0aGlzLnRyaWdnZXJFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoJGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy50cmlnZ2VyUmVmPy5vcGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMudHJpZ2dlclJlZj8ub3BlbigpO1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIGRlbGF5IGl0IGEgbGl0dGxlLCBzaW5jZSB0aGUgbGlzdGJveCB3aWxsIGF1dG9mb2N1c1xuICAgICAgICAvLyB0aGUgZmlyc3QgaXRlbS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucz8ubGFzdCAmJiB0aGlzLmxpc3Rib3hWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGJveD8uc2V0QWN0aXZlT3B0aW9uKHRoaXMub3B0aW9ucz8ubGFzdC52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyUmVmPy5vcGVuKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5nZXROZXh0RW5hYmxlZE9wdGlvblZhbHVlKFxuICAgICAgICAgICAgJGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcgPyAnbGVmdCcgOiAncmlnaHQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3Rib3hWYWx1ZSA9IFtvcHRpb25dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMua2V5TWFuYWdlcj8ub25LZXlkb3duKCRldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U2VsZWN0aW9uVGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zO1xuICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25zWzBdPy5sYWJlbDtcbiAgICB9XG4gICAgcmV0dXJuIGAke1xuICAgICAgc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aFxuICAgICAgICA/ICdBbGwnXG4gICAgICAgIDogc2VsZWN0ZWRPcHRpb25zLmxlbmd0aFxuICAgIH0gc2VsZWN0ZWRgO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0aW9uIGlzIGFsbG93ZWQuXG4gICAqL1xuICBnZXQgbXVsdGlwbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVIb2xkZXIgaW5zdGFuY2VvZiBNdWx0aVNlbGVjdERpcmVjdGl2ZUJhc2U7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0S2V5TWFuYWdlcigpO1xuXG4gICAgdGhpcy5vcHRpb25zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuaW5pdEtleU1hbmFnZXIoKTtcbiAgICB9KTtcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHRvIGF2b2lkIGFuIE5HMDEwMCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVyLi4uIGVycm9yIHdoZW4gdGhlcmUgaXMgYW4gaW5pdGlhbCB2YWx1ZVxuICAgICAqIFRoZSBpc3N1ZSBpcyBwcm9iYWJseSBkdWUgdG8gdGhlIGZhY3QgdGhhdCBvcHRpb25zIGFyZSBkZWZpbmVkIHdpdGhpbmcgdGhlICoqY29udGVudCoqXG4gICAgICogKHNwLW9wdGlvbiBlbGVtZW50cyksIHNvIHRoZSBsaXN0Ym94IHZhbHVlIGNhbiBjaGFuZ2UgYWZ0ZXIgdGhlIHZpZXcgb2Ygc2VsZWN0IGlzIGNoZWNrZWQsXG4gICAgICogaWYgdGhlcmUgaXMgYSBkZWZhdWx0IHZhbHVlLiBBbmQgdGhhdCBsZWFkcyB0byB0aGUgZXJyb3IsIHNpbmNlIHdlIGhhdmUgYmluZGluZ3MgaW4gdGhlXG4gICAgICogdGVtcGxhdGUsIHN1Y2ggYXMgYGdldFNlbGVjdGlvblRleHQoKWAsIHRoYXQgZGVwZW5kIG9uIHRoZSBsaXN0Ym94IHZhbHVlLlxuICAgICAqL1xuICAgIGlmICh0aGlzLmxpc3Rib3hWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmtleU1hbmFnZXI/LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhbiBpdGVtIGluIHRoZSBsaXN0Ym94IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgX2hhbmRsZVNlbGVjdGVkKCkge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy50cmlnZ2VyUmVmPy5jbG9zZSgpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkLmVtaXQoKTtcbiAgfVxuXG4gIGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyUmVmPy5pc09wZW4oKSA/PyBmYWxzZTtcbiAgfVxuXG4gIG9wZW4oKSB7XG4gICAgdGhpcy50cmlnZ2VyUmVmPy5vcGVuKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLnRyaWdnZXJSZWY/LmNsb3NlKCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy50cmlnZ2VyUmVmPy5vcGVuKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmllbGRMYWJlbD8oKTogc3RyaW5nO1xuXG4gIGdldExhYmVsVGV4dCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAodGhpcy5nZXRGaWVsZExhYmVsPy4oKSA/PyB0aGlzLmFyaWFMYWJlbCk/LnRyaW0oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwdWJsaWMgb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7fTtcblxuICBwdWJsaWMgX29uT3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgX29uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlSG9sZGVyLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TmV4dEVuYWJsZWRPcHRpb25WYWx1ZShkaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnKSB7XG4gICAgY29uc3Qgb3B0aW9uc0FycmF5ID0gdGhpcy5vcHRpb25zPy50b0FycmF5KCkgfHwgW107XG4gICAgbGV0IG5leHROb25EaXNhYmxlZE9wdGlvbjtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zWzBdO1xuXG4gICAgY29uc3QgY3VycmVudE9wdGlvbkluZGV4ID1cbiAgICAgIChzZWxlY3RlZE9wdGlvbiAmJiBvcHRpb25zQXJyYXkuaW5kZXhPZihzZWxlY3RlZE9wdGlvbikpID8/IC0xO1xuICAgIGNvbnN0IG5vdERpc2FibGVkID0gKG86IE9wdGlvbkNvbXBvbmVudCkgPT4gIW8uZGlzYWJsZWQ7XG5cbiAgICBpZiAoY3VycmVudE9wdGlvbkluZGV4ID09PSAtMSkge1xuICAgICAgbmV4dE5vbkRpc2FibGVkT3B0aW9uID0gb3B0aW9uc0FycmF5LmZpbmQobm90RGlzYWJsZWQpO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIG5leHROb25EaXNhYmxlZE9wdGlvbiA9IG9wdGlvbnNBcnJheVxuICAgICAgICAuc2xpY2UoMCwgY3VycmVudE9wdGlvbkluZGV4KVxuICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgIC5maW5kKG5vdERpc2FibGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dE5vbkRpc2FibGVkT3B0aW9uID0gb3B0aW9uc0FycmF5XG4gICAgICAgIC5zbGljZShjdXJyZW50T3B0aW9uSW5kZXggKyAxLCBvcHRpb25zQXJyYXkubGVuZ3RoKVxuICAgICAgICAuZmluZChub3REaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dE5vbkRpc2FibGVkT3B0aW9uSW5kZXggPSBuZXh0Tm9uRGlzYWJsZWRPcHRpb25cbiAgICAgID8gb3B0aW9uc0FycmF5LmluZGV4T2YobmV4dE5vbkRpc2FibGVkT3B0aW9uKVxuICAgICAgOiBjdXJyZW50T3B0aW9uSW5kZXg7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uZ2V0KG5leHROb25EaXNhYmxlZE9wdGlvbkluZGV4KT8udmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdEtleU1hbmFnZXIoKTogdm9pZCB7XG4gICAgLy8gZGVzdHJveSBhbnkgZXhpc3Rpbmcga2V5IG1hbmFnZXJcbiAgICB0aGlzLmtleU1hbmFnZXI/LmRlc3Ryb3koKTtcblxuICAgIHRoaXMua2V5TWFuYWdlciA9IG5ldyBMaXN0S2V5TWFuYWdlcjxcbiAgICAgIHsgdmFsdWU6IHN0cmluZyB9ICYgTGlzdEtleU1hbmFnZXJPcHRpb25cbiAgICA+KFxuICAgICAgdGhpcy5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoe1xuICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICBnZXRMYWJlbDogKCkgPT4gb3B0aW9uLmxhYmVsLFxuICAgICAgICBkaXNhYmxlZDogISFvcHRpb24uZGlzYWJsZWQsXG4gICAgICB9KSlcbiAgICApLndpdGhUeXBlQWhlYWQoKTtcblxuICAgIHRoaXMua2V5TWFuYWdlci5jaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gdGhpcy5vcHRpb25zPy5maW5kKFxuICAgICAgICAob3B0aW9uKSA9PiB0aGlzLmtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0/LnZhbHVlID09PSBvcHRpb24udmFsdWVcbiAgICAgICk7XG5cbiAgICAgIGlmIChzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICB0aGlzLmxpc3Rib3hWYWx1ZSA9IFtzZWxlY3RlZE9wdGlvbi52YWx1ZV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,86 @@
1
+ import { Directive, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * A common base class to handle value for single and multiple selection.
5
+ * {@link MultiSelectDirectiveBase} and {@link SingleSelectDirectiveBase} implement and
6
+ * provide this interface. Note that the main purpose for such design is **not**
7
+ * to abstract out selection behavior. But to have accurate `value` and `valueChange`
8
+ * type for single and multiple selection mode. It would be possible to fully abstract out
9
+ * the selection behavior, and have Select component not know anything about selection being
10
+ * multiple or not, but it doesn't seem such a clear abstraction, and also not worth the additional
11
+ * complexity.
12
+ *
13
+ * At least one directive has to be defined for each select component to provide SelectValueHolder,
14
+ * extending either {@link MultiSelectDirectiveBase} or {@link SingleSelectDirectiveBase}
15
+ */
16
+ export class SelectValueHolder {
17
+ }
18
+ /**
19
+ * Enables multiple selection. When present, `value` will be of type `string[]`, and `valueChange`
20
+ * will emit `string[]`.
21
+ *
22
+ * Each select component can define a directive with the right selector (usually based on
23
+ * the presence of `multiple` attribute) to enable multiple selection.
24
+ */
25
+ export class MultiSelectDirectiveBase extends SelectValueHolder {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.value = [];
29
+ this.valueChange = new EventEmitter();
30
+ }
31
+ setFromListboxValue(value) {
32
+ this.value = value;
33
+ this.valueChange.emit(this.value);
34
+ }
35
+ getListboxValue() {
36
+ return this.value || [];
37
+ }
38
+ }
39
+ MultiSelectDirectiveBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MultiSelectDirectiveBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
40
+ MultiSelectDirectiveBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: MultiSelectDirectiveBase, inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0 });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MultiSelectDirectiveBase, decorators: [{
42
+ type: Directive
43
+ }], propDecorators: { value: [{
44
+ type: Input
45
+ }], valueChange: [{
46
+ type: Output
47
+ }] } });
48
+ /**
49
+ * Enables single selection, the default behavior of select.
50
+ * When present, `value` will be of type `string`, and `valueChange` will emit `string`.
51
+ *
52
+ * Each select component has to define a directive with the right selector (usually based on
53
+ * the absence of `multiple` attribute) to enable single selection.
54
+ */
55
+ export class SingleSelectDirectiveBase extends SelectValueHolder {
56
+ constructor() {
57
+ super(...arguments);
58
+ this._value = '';
59
+ this.values = [];
60
+ this.valueChange = new EventEmitter();
61
+ }
62
+ get value() {
63
+ return this._value;
64
+ }
65
+ set value(value) {
66
+ this._value = value;
67
+ this.values = value ? [value] : [];
68
+ }
69
+ setFromListboxValue(value) {
70
+ this.value = value[0];
71
+ this.valueChange.emit(this._value);
72
+ }
73
+ getListboxValue() {
74
+ return this.values;
75
+ }
76
+ }
77
+ SingleSelectDirectiveBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SingleSelectDirectiveBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
78
+ SingleSelectDirectiveBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: SingleSelectDirectiveBase, inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0 });
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SingleSelectDirectiveBase, decorators: [{
80
+ type: Directive
81
+ }], propDecorators: { value: [{
82
+ type: Input
83
+ }], valueChange: [{
84
+ type: Output
85
+ }] } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXZhbHVlLWhvbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VsZWN0L3NyYy9jb21tb24vc2VsZWN0LXZhbHVlLWhvbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV2RTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLE9BQWdCLGlCQUFpQjtDQU90QztBQUVEOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxpQkFBMkI7SUFEekU7O1FBR0UsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUdyQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7S0FTNUM7SUFQQyxtQkFBbUIsQ0FBQyxLQUFlO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7cUhBYlUsd0JBQXdCO3lHQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsU0FBUzs4QkFHUixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixNQUFNOztBQVlUOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxpQkFBeUI7SUFEeEU7O1FBVVUsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUVwQixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRzlCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQVUxQztJQXZCQyxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBUUQsbUJBQW1CLENBQUMsS0FBZTtRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQzs7c0hBdkJVLHlCQUF5QjswR0FBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBRHJDLFNBQVM7OEJBR0osS0FBSztzQkFEUixLQUFLO2dCQWFOLFdBQVc7c0JBRFYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBjb21tb24gYmFzZSBjbGFzcyB0byBoYW5kbGUgdmFsdWUgZm9yIHNpbmdsZSBhbmQgbXVsdGlwbGUgc2VsZWN0aW9uLlxuICoge0BsaW5rIE11bHRpU2VsZWN0RGlyZWN0aXZlQmFzZX0gYW5kIHtAbGluayBTaW5nbGVTZWxlY3REaXJlY3RpdmVCYXNlfSBpbXBsZW1lbnQgYW5kXG4gKiBwcm92aWRlIHRoaXMgaW50ZXJmYWNlLiBOb3RlIHRoYXQgdGhlIG1haW4gcHVycG9zZSBmb3Igc3VjaCBkZXNpZ24gaXMgKipub3QqKlxuICogdG8gYWJzdHJhY3Qgb3V0IHNlbGVjdGlvbiBiZWhhdmlvci4gQnV0IHRvIGhhdmUgYWNjdXJhdGUgYHZhbHVlYCBhbmQgYHZhbHVlQ2hhbmdlYFxuICogdHlwZSBmb3Igc2luZ2xlIGFuZCBtdWx0aXBsZSBzZWxlY3Rpb24gbW9kZS4gSXQgd291bGQgYmUgcG9zc2libGUgdG8gZnVsbHkgYWJzdHJhY3Qgb3V0XG4gKiB0aGUgc2VsZWN0aW9uIGJlaGF2aW9yLCBhbmQgaGF2ZSBTZWxlY3QgY29tcG9uZW50IG5vdCBrbm93IGFueXRoaW5nIGFib3V0IHNlbGVjdGlvbiBiZWluZ1xuICogbXVsdGlwbGUgb3Igbm90LCBidXQgaXQgZG9lc24ndCBzZWVtIHN1Y2ggYSBjbGVhciBhYnN0cmFjdGlvbiwgYW5kIGFsc28gbm90IHdvcnRoIHRoZSBhZGRpdGlvbmFsXG4gKiBjb21wbGV4aXR5LlxuICpcbiAqIEF0IGxlYXN0IG9uZSBkaXJlY3RpdmUgaGFzIHRvIGJlIGRlZmluZWQgZm9yIGVhY2ggc2VsZWN0IGNvbXBvbmVudCB0byBwcm92aWRlIFNlbGVjdFZhbHVlSG9sZGVyLFxuICogZXh0ZW5kaW5nIGVpdGhlciB7QGxpbmsgTXVsdGlTZWxlY3REaXJlY3RpdmVCYXNlfSBvciB7QGxpbmsgU2luZ2xlU2VsZWN0RGlyZWN0aXZlQmFzZX1cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlbGVjdFZhbHVlSG9sZGVyPFQgPSB1bmtub3duPiB7XG4gIGFic3RyYWN0IHZhbHVlOiBUO1xuICBhYnN0cmFjdCB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPFQ+O1xuXG4gIGFic3RyYWN0IHNldEZyb21MaXN0Ym94VmFsdWUodmFsdWU6IHJlYWRvbmx5IHN0cmluZ1tdKTogdm9pZDtcblxuICBhYnN0cmFjdCBnZXRMaXN0Ym94VmFsdWUoKTogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogRW5hYmxlcyBtdWx0aXBsZSBzZWxlY3Rpb24uIFdoZW4gcHJlc2VudCwgYHZhbHVlYCB3aWxsIGJlIG9mIHR5cGUgYHN0cmluZ1tdYCwgYW5kIGB2YWx1ZUNoYW5nZWBcbiAqIHdpbGwgZW1pdCBgc3RyaW5nW11gLlxuICpcbiAqIEVhY2ggc2VsZWN0IGNvbXBvbmVudCBjYW4gZGVmaW5lIGEgZGlyZWN0aXZlIHdpdGggdGhlIHJpZ2h0IHNlbGVjdG9yICh1c3VhbGx5IGJhc2VkIG9uXG4gKiB0aGUgcHJlc2VuY2Ugb2YgYG11bHRpcGxlYCBhdHRyaWJ1dGUpIHRvIGVuYWJsZSBtdWx0aXBsZSBzZWxlY3Rpb24uXG4gKi9cbkBEaXJlY3RpdmUoKSAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgZGVjb3JhdG9ycyBsaWtlIElucHV0IHRvIHdvcmtcbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdERpcmVjdGl2ZUJhc2UgZXh0ZW5kcyBTZWxlY3RWYWx1ZUhvbGRlcjxzdHJpbmdbXT4ge1xuICBASW5wdXQoKVxuICB2YWx1ZTogc3RyaW5nW10gPSBbXTtcblxuICBAT3V0cHV0KClcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIHNldEZyb21MaXN0Ym94VmFsdWUodmFsdWU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuICBnZXRMaXN0Ym94VmFsdWUoKTogcmVhZG9ubHkgc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlIHx8IFtdO1xuICB9XG59XG5cbi8qKlxuICogRW5hYmxlcyBzaW5nbGUgc2VsZWN0aW9uLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBzZWxlY3QuXG4gKiBXaGVuIHByZXNlbnQsIGB2YWx1ZWAgd2lsbCBiZSBvZiB0eXBlIGBzdHJpbmdgLCBhbmQgYHZhbHVlQ2hhbmdlYCB3aWxsIGVtaXQgYHN0cmluZ2AuXG4gKlxuICogRWFjaCBzZWxlY3QgY29tcG9uZW50IGhhcyB0byBkZWZpbmUgYSBkaXJlY3RpdmUgd2l0aCB0aGUgcmlnaHQgc2VsZWN0b3IgKHVzdWFsbHkgYmFzZWQgb25cbiAqIHRoZSBhYnNlbmNlIG9mIGBtdWx0aXBsZWAgYXR0cmlidXRlKSB0byBlbmFibGUgc2luZ2xlIHNlbGVjdGlvbi5cbiAqL1xuQERpcmVjdGl2ZSgpIC8vIFRoaXMgaXMgbmVlZGVkIGZvciBkZWNvcmF0b3JzIGxpa2UgSW5wdXQgdG8gd29ya1xuZXhwb3J0IGNsYXNzIFNpbmdsZVNlbGVjdERpcmVjdGl2ZUJhc2UgZXh0ZW5kcyBTZWxlY3RWYWx1ZUhvbGRlcjxzdHJpbmc+IHtcbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbHVlcyA9IHZhbHVlID8gW3ZhbHVlXSA6IFtdO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgPSAnJztcblxuICBwcml2YXRlIHZhbHVlczogc3RyaW5nW10gPSBbXTtcblxuICBAT3V0cHV0KClcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBzZXRGcm9tTGlzdGJveFZhbHVlKHZhbHVlOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZVswXTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICB9XG5cbiAgZ2V0TGlzdGJveFZhbHVlKCk6IHJlYWRvbmx5IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,90 @@
1
+ import { __decorate } from "tslib";
2
+ import { Directive, EventEmitter, Input, Output } from '@angular/core';
3
+ import { CoerceBoolean } from '../../../common/coerce-boolean.decorator';
4
+ import { OptionComponent } from '../../../listbox/src/option.component';
5
+ import { section, SectionDirective, } from '../../../listbox/src/section.directive';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Marks sp-select as searchable. When used, a search input is rendered inside select trigger
9
+ * which allows filtering options, in a more convenient way than the default typeahead search.
10
+ * By default, rendered `sp-option`s are filtered based on the search value, but `searchValue`
11
+ * and `searchValueChange` can be used to control the search value and filter the `sp-options`
12
+ * upfront.
13
+ */
14
+ export class SearchableSelectDirective {
15
+ constructor() {
16
+ /**
17
+ * Filtering function to be applied on each item. The default filter function
18
+ * does a case-insensitive search on optionComponent.label.
19
+ * The built-in filtering can be disabled by passing `null`. That's useful
20
+ * when filtering is fully controlled by filtering input sp-options based on
21
+ * {@property searchValue}.
22
+ */
23
+ this.filter = (optionComponent, searchQuery) => optionComponent.label.toLowerCase().includes(searchQuery?.toLowerCase());
24
+ this.searchValueChange = new EventEmitter();
25
+ }
26
+ get searchValue() {
27
+ return this._searchValue ?? '';
28
+ }
29
+ set searchValue(value) {
30
+ this._searchValue = value;
31
+ }
32
+ filterListboxItems(items, filter) {
33
+ const filteredOutOptions = [];
34
+ const filteredChildren = Array.from(items)
35
+ ?.map((item) => {
36
+ if (item instanceof OptionComponent) {
37
+ const isMatch = filter(item);
38
+ if (!isMatch) {
39
+ filteredOutOptions.push(item);
40
+ }
41
+ return isMatch ? item : null;
42
+ }
43
+ if (item instanceof SectionDirective) {
44
+ const { filteredChildren: sectionFilteredChildren, filteredOutOptions: sectionFilteredOutOptions, } = this.filterListboxItems(item.children, filter);
45
+ filteredOutOptions.push(...sectionFilteredOutOptions);
46
+ if (sectionFilteredChildren.length > 0) {
47
+ return section(sectionFilteredChildren.filter((item) => item instanceof OptionComponent), item.ariaLabel);
48
+ }
49
+ return null;
50
+ }
51
+ return null;
52
+ })
53
+ .filter(notNull);
54
+ return { filteredChildren, filteredOutOptions };
55
+ }
56
+ /**
57
+ * Used when search value is updated via UI, and searchValueChange output should be emitted.
58
+ * @internal
59
+ */
60
+ setSearchValue(searchValue) {
61
+ this._searchValue = searchValue;
62
+ this.searchValueChange.emit(searchValue);
63
+ }
64
+ defaultFilter(optionComponent, searchQuery) {
65
+ return optionComponent.label
66
+ .toLowerCase()
67
+ .includes(searchQuery?.toLowerCase());
68
+ }
69
+ }
70
+ SearchableSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SearchableSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
71
+ SearchableSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: SearchableSelectDirective, selector: "sp-select[searchable]", inputs: { searchValue: "searchValue", filter: "filter", selectTextOnOpen: "selectTextOnOpen" }, outputs: { searchValueChange: "searchValueChange" }, ngImport: i0 });
72
+ __decorate([
73
+ CoerceBoolean
74
+ ], SearchableSelectDirective.prototype, "selectTextOnOpen", void 0);
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SearchableSelectDirective, decorators: [{
76
+ type: Directive,
77
+ args: [{
78
+ selector: 'sp-select[searchable]',
79
+ }]
80
+ }], propDecorators: { searchValue: [{
81
+ type: Input
82
+ }], filter: [{
83
+ type: Input
84
+ }], selectTextOnOpen: [{
85
+ type: Input
86
+ }], searchValueChange: [{
87
+ type: Output
88
+ }] } });
89
+ export const notNull = (item) => item != null;
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1zZWxlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWxlY3Qvc3JjL3NlbGVjdC9zZWFyY2hhYmxlLXNlbGVjdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBR3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsT0FBTyxFQUNQLGdCQUFnQixHQUNqQixNQUFNLHdDQUF3QyxDQUFDOztBQUVoRDs7Ozs7O0dBTUc7QUFJSCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBYUU7Ozs7OztXQU1HO1FBRUgsV0FBTSxHQUVxRSxDQUN6RSxlQUFnQyxFQUNoQyxXQUFtQixFQUNuQixFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFPOUUsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQXdEaEQ7SUFyRkMsSUFDSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsS0FBeUI7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQXlCRCxrQkFBa0IsQ0FDaEIsS0FBNkIsRUFDN0IsTUFBNEM7UUFLNUMsTUFBTSxrQkFBa0IsR0FBc0IsRUFBRSxDQUFDO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDeEMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQXVCLEVBQUU7WUFDbEMsSUFBSSxJQUFJLFlBQVksZUFBZSxFQUFFO2dCQUNuQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ1osa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMvQjtnQkFDRCxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDOUI7WUFDRCxJQUFJLElBQUksWUFBWSxnQkFBZ0IsRUFBRTtnQkFDcEMsTUFBTSxFQUNKLGdCQUFnQixFQUFFLHVCQUF1QixFQUN6QyxrQkFBa0IsRUFBRSx5QkFBeUIsR0FDOUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDbkQsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcseUJBQXlCLENBQUMsQ0FBQztnQkFDdEQsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUN0QyxPQUFPLE9BQU8sQ0FDWix1QkFBdUIsQ0FBQyxNQUFNLENBQzVCLENBQUMsSUFBSSxFQUEyQixFQUFFLENBQ2hDLElBQUksWUFBWSxlQUFlLENBQ2xDLEVBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FDZixDQUFDO2lCQUNIO2dCQUNELE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQzthQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLFdBQW1CO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGFBQWEsQ0FBQyxlQUFnQyxFQUFFLFdBQW1CO1FBQ2pFLE9BQU8sZUFBZSxDQUFDLEtBQUs7YUFDekIsV0FBVyxFQUFFO2FBQ2IsUUFBUSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7O3NIQXJGVSx5QkFBeUI7MEdBQXpCLHlCQUF5QjtBQTJCcEM7SUFEQyxhQUFhO21FQUNrQjsyRkEzQnJCLHlCQUF5QjtrQkFIckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2lCQUNsQzs4QkFHSyxXQUFXO3NCQURkLEtBQUs7Z0JBaUJOLE1BQU07c0JBREwsS0FBSztnQkFVTixnQkFBZ0I7c0JBRmYsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLE1BQU07O0FBMkRULE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUNyQixJQUEwQixFQUNGLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvZXJjZUJvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29lcmNlLWJvb2xlYW4uZGVjb3JhdG9yJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBMaXN0Ym94Q2hpbGQgfSBmcm9tICcuLi8uLi8uLi9saXN0Ym94L3NyYy9saXN0Ym94LWNoaWxkJztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2xpc3Rib3gvc3JjL29wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgc2VjdGlvbixcbiAgU2VjdGlvbkRpcmVjdGl2ZSxcbn0gZnJvbSAnLi4vLi4vLi4vbGlzdGJveC9zcmMvc2VjdGlvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIE1hcmtzIHNwLXNlbGVjdCBhcyBzZWFyY2hhYmxlLiBXaGVuIHVzZWQsIGEgc2VhcmNoIGlucHV0IGlzIHJlbmRlcmVkIGluc2lkZSBzZWxlY3QgdHJpZ2dlclxuICogd2hpY2ggYWxsb3dzIGZpbHRlcmluZyBvcHRpb25zLCBpbiBhIG1vcmUgY29udmVuaWVudCB3YXkgdGhhbiB0aGUgZGVmYXVsdCB0eXBlYWhlYWQgc2VhcmNoLlxuICogQnkgZGVmYXVsdCwgcmVuZGVyZWQgYHNwLW9wdGlvbmBzIGFyZSBmaWx0ZXJlZCBiYXNlZCBvbiB0aGUgc2VhcmNoIHZhbHVlLCBidXQgYHNlYXJjaFZhbHVlYFxuICogYW5kIGBzZWFyY2hWYWx1ZUNoYW5nZWAgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgc2VhcmNoIHZhbHVlIGFuZCBmaWx0ZXIgdGhlIGBzcC1vcHRpb25zYFxuICogdXBmcm9udC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnc3Atc2VsZWN0W3NlYXJjaGFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZVNlbGVjdERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpXG4gIGdldCBzZWFyY2hWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoVmFsdWUgPz8gJyc7XG4gIH1cbiAgc2V0IHNlYXJjaFZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9zZWFyY2hWYWx1ZSA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX3NlYXJjaFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEZpbHRlcmluZyBmdW5jdGlvbiB0byBiZSBhcHBsaWVkIG9uIGVhY2ggaXRlbS4gVGhlIGRlZmF1bHQgZmlsdGVyIGZ1bmN0aW9uXG4gICAqIGRvZXMgYSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaCBvbiBvcHRpb25Db21wb25lbnQubGFiZWwuXG4gICAqIFRoZSBidWlsdC1pbiBmaWx0ZXJpbmcgY2FuIGJlIGRpc2FibGVkIGJ5IHBhc3NpbmcgYG51bGxgLiBUaGF0J3MgdXNlZnVsXG4gICAqIHdoZW4gZmlsdGVyaW5nIGlzIGZ1bGx5IGNvbnRyb2xsZWQgYnkgZmlsdGVyaW5nIGlucHV0IHNwLW9wdGlvbnMgYmFzZWQgb25cbiAgICoge0Bwcm9wZXJ0eSBzZWFyY2hWYWx1ZX0uXG4gICAqL1xuICBASW5wdXQoKVxuICBmaWx0ZXI/OlxuICAgIHwgbnVsbFxuICAgIHwgKChvcHRpb25Db21wb25lbnQ6IE9wdGlvbkNvbXBvbmVudCwgc2VhcmNoUXVlcnk6IHN0cmluZykgPT4gYm9vbGVhbikgPSAoXG4gICAgb3B0aW9uQ29tcG9uZW50OiBPcHRpb25Db21wb25lbnQsXG4gICAgc2VhcmNoUXVlcnk6IHN0cmluZ1xuICApID0+IG9wdGlvbkNvbXBvbmVudC5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFF1ZXJ5Py50b0xvd2VyQ2FzZSgpKTtcblxuICBASW5wdXQoKVxuICBAQ29lcmNlQm9vbGVhblxuICBzZWxlY3RUZXh0T25PcGVuPzogQm9vbGVhbklucHV0O1xuXG4gIEBPdXRwdXQoKVxuICBzZWFyY2hWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGZpbHRlckxpc3Rib3hJdGVtcyhcbiAgICBpdGVtczogSXRlcmFibGU8TGlzdGJveENoaWxkPixcbiAgICBmaWx0ZXI6IChvcHRpb246IE9wdGlvbkNvbXBvbmVudCkgPT4gYm9vbGVhblxuICApOiB7XG4gICAgZmlsdGVyZWRDaGlsZHJlbjogTGlzdGJveENoaWxkW107XG4gICAgZmlsdGVyZWRPdXRPcHRpb25zOiBPcHRpb25Db21wb25lbnRbXTtcbiAgfSB7XG4gICAgY29uc3QgZmlsdGVyZWRPdXRPcHRpb25zOiBPcHRpb25Db21wb25lbnRbXSA9IFtdO1xuICAgIGNvbnN0IGZpbHRlcmVkQ2hpbGRyZW4gPSBBcnJheS5mcm9tKGl0ZW1zKVxuICAgICAgPy5tYXAoKGl0ZW0pOiBMaXN0Ym94Q2hpbGQgfCBudWxsID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBPcHRpb25Db21wb25lbnQpIHtcbiAgICAgICAgICBjb25zdCBpc01hdGNoID0gZmlsdGVyKGl0ZW0pO1xuICAgICAgICAgIGlmICghaXNNYXRjaCkge1xuICAgICAgICAgICAgZmlsdGVyZWRPdXRPcHRpb25zLnB1c2goaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpc01hdGNoID8gaXRlbSA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBTZWN0aW9uRGlyZWN0aXZlKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZmlsdGVyZWRDaGlsZHJlbjogc2VjdGlvbkZpbHRlcmVkQ2hpbGRyZW4sXG4gICAgICAgICAgICBmaWx0ZXJlZE91dE9wdGlvbnM6IHNlY3Rpb25GaWx0ZXJlZE91dE9wdGlvbnMsXG4gICAgICAgICAgfSA9IHRoaXMuZmlsdGVyTGlzdGJveEl0ZW1zKGl0ZW0uY2hpbGRyZW4sIGZpbHRlcik7XG4gICAgICAgICAgZmlsdGVyZWRPdXRPcHRpb25zLnB1c2goLi4uc2VjdGlvbkZpbHRlcmVkT3V0T3B0aW9ucyk7XG4gICAgICAgICAgaWYgKHNlY3Rpb25GaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBzZWN0aW9uKFxuICAgICAgICAgICAgICBzZWN0aW9uRmlsdGVyZWRDaGlsZHJlbi5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGl0ZW0pOiBpdGVtIGlzIE9wdGlvbkNvbXBvbmVudCA9PlxuICAgICAgICAgICAgICAgICAgaXRlbSBpbnN0YW5jZW9mIE9wdGlvbkNvbXBvbmVudFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBpdGVtLmFyaWFMYWJlbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihub3ROdWxsKTtcbiAgICByZXR1cm4geyBmaWx0ZXJlZENoaWxkcmVuLCBmaWx0ZXJlZE91dE9wdGlvbnMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHdoZW4gc2VhcmNoIHZhbHVlIGlzIHVwZGF0ZWQgdmlhIFVJLCBhbmQgc2VhcmNoVmFsdWVDaGFuZ2Ugb3V0cHV0IHNob3VsZCBiZSBlbWl0dGVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHNldFNlYXJjaFZhbHVlKHNlYXJjaFZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZWFyY2hWYWx1ZSA9IHNlYXJjaFZhbHVlO1xuICAgIHRoaXMuc2VhcmNoVmFsdWVDaGFuZ2UuZW1pdChzZWFyY2hWYWx1ZSk7XG4gIH1cblxuICBkZWZhdWx0RmlsdGVyKG9wdGlvbkNvbXBvbmVudDogT3B0aW9uQ29tcG9uZW50LCBzZWFyY2hRdWVyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG9wdGlvbkNvbXBvbmVudC5sYWJlbFxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5pbmNsdWRlcyhzZWFyY2hRdWVyeT8udG9Mb3dlckNhc2UoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG5vdE51bGwgPSA8VD4oXG4gIGl0ZW06IFQgfCB1bmRlZmluZWQgfCBudWxsXG4pOiBpdGVtIGlzIE5vbk51bGxhYmxlPFQ+ID0+IGl0ZW0gIT0gbnVsbDtcbiJdfQ==