@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,273 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, ContentChildren, EventEmitter, forwardRef, Input, Output, QueryList, ViewChild, ViewChildren, } from '@angular/core';
3
+ import { CdkListbox, CdkOption, } from '@angular/cdk/listbox';
4
+ import { OptionComponent } from './option.component';
5
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
+ import { CoerceBoolean } from '../../common/coerce-boolean.decorator';
7
+ import { ListboxChild } from './listbox-child';
8
+ import { SectionDirective } from './section.directive';
9
+ import { ViewEncapsulationProvider } from '../../common/sapphire-view-encapsulation';
10
+ import { ICON_SIZE_PROVIDER, } from '../../icon/src/icon-size-provider';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/common";
13
+ import * as i2 from "@angular/cdk/listbox";
14
+ import * as i3 from "./cdk-option-scroll-issue-patch";
15
+ import * as i4 from "./listbox-item.component";
16
+ export class ListboxComponent {
17
+ /**
18
+ * List of spOption or spSection components either collected from the content
19
+ * or passed as input.
20
+ */
21
+ get options() {
22
+ return this._itemsInput || this.itemsInContent;
23
+ }
24
+ constructor(changeDetectorRef) {
25
+ this.changeDetectorRef = changeDetectorRef;
26
+ /**
27
+ * The list of selected values (`value`s of selected sp-options).
28
+ * It's always an array, regardless of {@property multiple} being true or not.
29
+ */
30
+ this.selectedValues = [];
31
+ /**
32
+ * Emitted when the selection is changed. Emits selected values.
33
+ */
34
+ this.selectedValuesChange = new EventEmitter();
35
+ this.size = 'large';
36
+ /**
37
+ * Emits whenever an option is selected, regardless of if it's already selected.
38
+ */
39
+ this.selected = new EventEmitter();
40
+ this.itemsInContent = new QueryList();
41
+ this.onTouched = () => ({});
42
+ this.onChange = () => { };
43
+ /**
44
+ * CdkListbox throws if there is a selected value that doesn't match any of the cdkOptions
45
+ * It's probably an artificial check, and maybe they could remove it, but that's how it is now,
46
+ * and selected value can be none of the currently visible options if options are searchable.
47
+ * Since the check seems unnecessary, we do the filtering right in the listbox component instead
48
+ * of in searchable select.
49
+ * @private
50
+ */
51
+ this._validSelectedValues = [];
52
+ /**
53
+ * Our expected behavior (matching the React impl) is to navigate to the last option, when
54
+ * ArrowDown is pressed and no option is currently focused, but to not have focus wrapping.
55
+ * disabling focus wrapping on cdkListbox is implemented differently, and doesn't allow for
56
+ * that, so we enable it regardless of `navigationWrapDisabled` input, if there is no active
57
+ * option.
58
+ */
59
+ this._forceEnableNavigationWrap = false;
60
+ }
61
+ /**
62
+ * Connects the listbox to an input, for combobox-like use cases.
63
+ * Returns a keydown event handler to be used on the connected input.
64
+ * Connecting an input to the listbox also causes listbox to use virtual focus
65
+ * since the actual focus will be in the input.
66
+ * @param inputDirective
67
+ *
68
+ * @internal
69
+ */
70
+ connectToInput(inputDirective) {
71
+ this.connectedInput = inputDirective;
72
+ // need to run change detection because _connectedInput is used to set the value of
73
+ // cdkListboxUseActiveDescendant, and it's set after change detection for this component is done
74
+ // and when ListboxInputDirective input is set
75
+ this.changeDetectorRef.detectChanges();
76
+ return {
77
+ onKeydown: (event) => {
78
+ if (
79
+ // Only forwarding certain keystrokes, not to trigger typeahead while input is focused
80
+ [
81
+ 'ArrowUp',
82
+ 'ArrowDown',
83
+ 'Home',
84
+ 'End',
85
+ 'PageUp',
86
+ 'PageDown',
87
+ 'Enter',
88
+ ].includes(event.key)) {
89
+ // @ts-expect-error(access): _handleKeydown is protected
90
+ this.cdkListbox?._handleKeydown?.(event);
91
+ }
92
+ if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
93
+ this.setActiveOption(null);
94
+ }
95
+ },
96
+ // cdkListbox keeps track of focus state, and sets the active item to the selected item if
97
+ // the listbox is not focused when selection changes. That causes issues especially in
98
+ // multi-select, where the dropdown keeps open when selection changes.
99
+ onFocus: () => {
100
+ if (this.cdkListbox) {
101
+ // @ts-expect-error(access): _hasFocus is private
102
+ this.cdkListbox._hasFocus = true;
103
+ }
104
+ },
105
+ onBlur: () => {
106
+ if (this.cdkListbox) {
107
+ // @ts-expect-error(access): _hasFocus is private
108
+ this.cdkListbox._hasFocus = false;
109
+ }
110
+ },
111
+ };
112
+ }
113
+ isSelected(option) {
114
+ return this.selectedValues?.includes(option.value);
115
+ }
116
+ ngAfterViewInit() {
117
+ this.cdkListbox?.registerOnChange(this.onChange);
118
+ this.cdkListbox?.registerOnTouched(this.onTouched);
119
+ }
120
+ ngDoCheck() {
121
+ /**
122
+ * Properties set here are used in the template, but depend on the state of child directives,
123
+ * which can change after view is checked on this component. By setting them in ngDoCheck
124
+ * instead of directly referencing them in the template, we avoid NG0100: ExpressionChanged...
125
+ * errors
126
+ */
127
+ this._forceEnableNavigationWrap = !Boolean(this.getActiveOption());
128
+ }
129
+ ngAfterViewChecked() {
130
+ const validValues = this.selectedValues?.filter((value) => this.cdkOptions?.find((cdkOption) => cdkOption.value === value)) || [];
131
+ if (validValues.length !== this._validSelectedValues.length ||
132
+ this._validSelectedValues.some((value, index) => value !== validValues[index])) {
133
+ this._validSelectedValues = validValues;
134
+ this.changeDetectorRef.detectChanges();
135
+ }
136
+ }
137
+ /**
138
+ * Sets active (focused) option. Passing null removes active state if any.
139
+ * @param value option value
140
+ */
141
+ setActiveOption(value) {
142
+ const option = value && this.cdkOptions?.find((option) => option.value === value);
143
+ if (option || option === null) {
144
+ // @ts-expect-error: null is actually accepted and resets active item, but the type doesn't allow it by mistake
145
+ this.cdkListbox?._setActiveOption(option);
146
+ }
147
+ }
148
+ /**
149
+ * @returns currently active (focused) option.
150
+ */
151
+ getActiveOption() {
152
+ // There is currently no public method on CdkListbox to get the active item or select it directly.
153
+ return (this.cdkOptions?.find((option) => Boolean(this.cdkListbox?.isActive(option)))?.value ?? null);
154
+ }
155
+ //// ControlValueAccessor ////
156
+ registerOnChange(fn) {
157
+ this.onChange = fn;
158
+ }
159
+ registerOnTouched(fn) {
160
+ this.onTouched = fn;
161
+ }
162
+ setDisabledState(isDisabled) {
163
+ this.disabled = isDisabled;
164
+ }
165
+ writeValue(obj) {
166
+ this.selectedValues = obj;
167
+ }
168
+ ///////////////////////////////
169
+ /**
170
+ * @private
171
+ */
172
+ _handleSelectionChange({ value }) {
173
+ this.selectedValues = value;
174
+ this.selectedValuesChange.emit(value);
175
+ }
176
+ /**
177
+ * @private
178
+ */
179
+ _isOption(item) {
180
+ return item instanceof OptionComponent;
181
+ }
182
+ /**
183
+ * @private
184
+ */
185
+ _isSection(item) {
186
+ return item instanceof SectionDirective;
187
+ }
188
+ /**
189
+ * @private
190
+ */
191
+ _shouldUseVirtualFocus() {
192
+ return Boolean(this.connectedInput);
193
+ }
194
+ /**
195
+ * @private
196
+ */
197
+ _isConnectedToInput() {
198
+ return Boolean(this.connectedInput);
199
+ }
200
+ }
201
+ ListboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ListboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
202
+ ListboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: ListboxComponent, selector: "sp-listbox", inputs: { selectedValues: "selectedValues", _itemsInput: ["spListboxItems", "_itemsInput"], disabled: "disabled", multiple: "multiple", navigationWrapDisabled: "navigationWrapDisabled", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], size: "size" }, outputs: { selectedValuesChange: "selectedValuesChange", selected: "selected" }, host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null" } }, providers: [
203
+ {
204
+ provide: NG_VALUE_ACCESSOR,
205
+ useExisting: forwardRef(() => ListboxComponent),
206
+ multi: true,
207
+ },
208
+ {
209
+ provide: ICON_SIZE_PROVIDER,
210
+ useExisting: forwardRef(() => ListboxComponent),
211
+ },
212
+ ViewEncapsulationProvider,
213
+ ], queries: [{ propertyName: "itemsInContent", predicate: ListboxChild }], viewQueries: [{ propertyName: "cdkListbox", first: true, predicate: CdkListbox, descendants: true }, { propertyName: "cdkOptions", predicate: CdkOption, descendants: true }], exportAs: ["spListbox"], ngImport: i0, template: "<ul\n class=\"sapphire-listbox\"\n cdkListbox\n [cdkListboxCompareWith]=\"\"\n [cdkListboxMultiple]=\"!!multiple\"\n [cdkListboxDisabled]=\"!!disabled\"\n [cdkListboxNavigationWrapDisabled]=\"\n navigationWrapDisabled && !_forceEnableNavigationWrap\n \"\n [cdkListboxValue]=\"_validSelectedValues\"\n [cdkListboxUseActiveDescendant]=\"_shouldUseVirtualFocus()\"\n (cdkListboxValueChange)=\"_handleSelectionChange($event)\"\n (keydown.enter)=\"selected.emit($event)\"\n (keydown.space)=\"selected.emit($event)\"\n (mousedown)=\"_isConnectedToInput() && $event.preventDefault()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [class.sapphire-listbox--medium]=\"size === 'medium'\"\n [class.sapphire-listbox--small]=\"size === 'small'\"\n>\n <ng-container *ngFor=\"let item of options; let last = last\">\n <ng-container *ngIf=\"_isSection(item)\">\n <li role=\"presentation\">\n <ul\n role=\"group\"\n class=\"sapphire-listbox__section\"\n [attr.aria-label]=\"item.ariaLabel\"\n >\n <li\n *ngFor=\"let option of item.children\"\n [cdkOption]=\"option.value\"\n [cdkOptionDisabled]=\"!!option.disabled\"\n [cdkOptionTypeaheadLabel]=\"option.label\"\n #cdkOption=\"cdkOption\"\n sp-listbox-item\n [option]=\"option\"\n [selected]=\"isSelected(option)\"\n [focused]=\"cdkOption.isActive()\"\n (click)=\"!(disabled || option.disabled) && selected.emit($event)\"\n [size]=\"size\"\n ></li>\n </ul>\n </li>\n <li\n *ngIf=\"!last\"\n role=\"separator\"\n class=\"sapphire-listbox__separator\"\n ></li>\n </ng-container>\n <li\n *ngIf=\"_isOption(item)\"\n [cdkOption]=\"item.value\"\n [cdkOptionDisabled]=\"!!item.disabled\"\n [cdkOptionTypeaheadLabel]=\"item.label\"\n #cdkOption=\"cdkOption\"\n sp-listbox-item\n [option]=\"item\"\n [selected]=\"isSelected(item)\"\n [focused]=\"cdkOption.isActive()\"\n (click)=\"!(disabled || item.disabled) && selected.emit($event)\"\n [size]=\"size\"\n ></li>\n </ng-container>\n</ul>\n", styles: [".sapphire-listbox{box-sizing:border-box;display:flex;justify-content:stretch;flex-direction:column;min-width:var(--sapphire-listbox-size-width-min);margin:0;padding:0;position:relative;list-style:none;outline:none;padding-top:calc(var(--sapphire-listbox-size-spacing-outer-horizontal) - var(--sapphire-listbox-size-spacing-outer-vertical));padding-bottom:calc(var(--sapphire-listbox-size-spacing-outer-horizontal) - var(--sapphire-listbox-size-spacing-outer-vertical));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-listbox__item{display:flex;justify-content:space-between;align-items:center;padding:var(--sapphire-listbox-size-spacing-outer-vertical) var(--sapphire-listbox-size-spacing-outer-horizontal);color:var(--sapphire-listbox-color-content-normal-primary-default);outline:none;cursor:pointer}.sapphire-listbox__item--danger{color:var(--sapphire-listbox-color-content-danger-default)}.sapphire-listbox__item--selected{color:var(--sapphire-listbox-color-content-selected-default)}.sapphire-listbox__item--selected .sapphire-listbox__content{background-color:var(--sapphire-listbox-color-background-selected-default)}.sapphire-listbox__content{width:100%;display:grid;grid-auto-flow:column;align-items:center;gap:var(--sapphire-listbox-size-spacing-inner-horizontal-l);grid-template-columns:auto 1fr var(--sapphire-listbox-size-width-icon-l);padding:calc(var(--sapphire-listbox-size-spacing-inner-vertical-l) - var(--sapphire-listbox-size-spacing-outer-vertical)) var(--sapphire-listbox-size-spacing-inner-horizontal-l);border-radius:var(--sapphire-listbox-size-radius-item);transition-property:opacity,background-color,color;transition-duration:var(--sapphire-listbox-time-transition);transition-timing-function:ease-in-out;min-height:var(--sapphire-listbox-size-height-min-height)}.sapphire-listbox--medium .sapphire-listbox__content{gap:var(--sapphire-listbox-size-spacing-inner-horizontal-m);grid-template-columns:auto 1fr var(--sapphire-listbox-size-width-icon-m);padding:calc(var(--sapphire-listbox-size-spacing-inner-vertical-m) - var(--sapphire-listbox-size-spacing-outer-vertical)) var(--sapphire-listbox-size-spacing-inner-horizontal-m)}.sapphire-listbox--small .sapphire-listbox__content{gap:var(--sapphire-listbox-size-spacing-inner-horizontal-s);grid-template-columns:auto 1fr var(--sapphire-listbox-size-width-icon-s);padding:calc(var(--sapphire-listbox-size-spacing-inner-vertical-s) - var(--sapphire-listbox-size-spacing-outer-vertical)) var(--sapphire-listbox-size-spacing-inner-horizontal-s)}.sapphire-listbox__icon{line-height:0}.sapphire-listbox__text-container{font-family:var(--sapphire-listbox-font-name);line-height:var(--sapphire-listbox-size-line-height)}.sapphire-listbox__text-container:first-child{grid-column:span 2}.sapphire-listbox__primary-text{font-weight:var(--sapphire-listbox-font-weight-primary);font-size:var(--sapphire-listbox-size-font-primary-l)}.sapphire-listbox__secondary-text{font-weight:var(--sapphire-listbox-font-weight-secondary);font-size:var(--sapphire-listbox-size-font-secondary-l)}.sapphire-listbox--medium .sapphire-listbox__primary-text{font-size:var(--sapphire-listbox-size-font-primary-m)}.sapphire-listbox--small .sapphire-listbox__primary-text{font-size:var(--sapphire-listbox-size-font-primary-s)}.sapphire-listbox--medium .sapphire-listbox__secondary-text{font-size:var(--sapphire-listbox-size-font-secondary-m)}.sapphire-listbox--small .sapphire-listbox__secondary-text{font-size:var(--sapphire-listbox-size-font-secondary-s)}.sapphire-listbox__item:not(.sapphire-listbox__item--danger):not(.sapphire-listbox__item--selected) .sapphire-listbox__secondary-text{color:var(--sapphire-listbox-color-content-normal-secondary-default)}.sapphire-listbox__item.is-disabled{opacity:var(--sapphire-listbox-opacity-disabled);cursor:not-allowed}.sapphire-listbox__section{padding:0;list-style:none}.sapphire-listbox__separator{height:var(--sapphire-listbox-size-height-separator);width:100%;background:var(--sapphire-listbox-color-separator);margin-top:calc(var(--sapphire-listbox-size-spacing-outer-horizontal) - var(--sapphire-listbox-size-spacing-outer-vertical));margin-bottom:calc(var(--sapphire-listbox-size-spacing-outer-horizontal) - var(--sapphire-listbox-size-spacing-outer-vertical))}.sapphire-listbox__item:not(.is-disabled).is-focus .sapphire-listbox__content,.sapphire-listbox__item:not(.is-disabled):not(.js-focus):focus-visible .sapphire-listbox__content{box-shadow:0 0 0 var(--sapphire-listbox-size-focus-ring) var(--sapphire-listbox-color-focus-ring)}.sapphire-listbox__item:not(.is-disabled).is-hover:not(.is-active) .sapphire-listbox__content,.sapphire-listbox__item:not(.is-disabled):not(.js-hover):not(.is-active):hover .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-normal-primary-hover);background-color:var(--sapphire-listbox-color-background-normal-hover)}.sapphire-listbox__item--danger:not(.is-disabled):not(.is-active).is-hover .sapphire-listbox__content,.sapphire-listbox__item--danger:not(.is-disabled):not(.js-hover):not(.is-active):hover .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-danger-hover);background-color:var(--sapphire-listbox-color-background-danger-hover)}.sapphire-listbox__item--selected:not(.is-disabled):not(.is-active).is-hover .sapphire-listbox__content,.sapphire-listbox__item--selected:not(.is-disabled):not(.is-active):not(.js-hover):hover .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-selected-hover);background-color:var(--sapphire-listbox-color-background-selected-hover)}.sapphire-listbox__item:not(.is-disabled).is-active .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-normal-primary-active);background-color:var(--sapphire-listbox-color-background-normal-active)}.sapphire-listbox__item--danger:not(.is-disabled).is-active .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-danger-active);background-color:var(--sapphire-listbox-color-background-danger-active)}.sapphire-listbox__item--selected:not(.is-disabled).is-active .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-selected-active);background-color:var(--sapphire-listbox-color-background-selected-active)}:host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "directive", type: i2.CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }, { kind: "directive", type: i3.CdkOptionScrollIssuePatch, selector: "[cdkOption]" }, { kind: "component", type: i4.ListboxItemComponent, selector: "li[sp-listbox-item]", inputs: ["selected", "focused", "option", "size"] }] });
214
+ __decorate([
215
+ CoerceBoolean
216
+ ], ListboxComponent.prototype, "disabled", void 0);
217
+ __decorate([
218
+ CoerceBoolean
219
+ ], ListboxComponent.prototype, "multiple", void 0);
220
+ __decorate([
221
+ CoerceBoolean
222
+ ], ListboxComponent.prototype, "navigationWrapDisabled", void 0);
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ListboxComponent, decorators: [{
224
+ type: Component,
225
+ args: [{ selector: 'sp-listbox', providers: [
226
+ {
227
+ provide: NG_VALUE_ACCESSOR,
228
+ useExisting: forwardRef(() => ListboxComponent),
229
+ multi: true,
230
+ },
231
+ {
232
+ provide: ICON_SIZE_PROVIDER,
233
+ useExisting: forwardRef(() => ListboxComponent),
234
+ },
235
+ ViewEncapsulationProvider,
236
+ ], host: {
237
+ '[attr.aria-label]': 'null',
238
+ '[attr.aria-labelledby]': 'null',
239
+ }, exportAs: 'spListbox', template: "<ul\n class=\"sapphire-listbox\"\n cdkListbox\n [cdkListboxCompareWith]=\"\"\n [cdkListboxMultiple]=\"!!multiple\"\n [cdkListboxDisabled]=\"!!disabled\"\n [cdkListboxNavigationWrapDisabled]=\"\n navigationWrapDisabled && !_forceEnableNavigationWrap\n \"\n [cdkListboxValue]=\"_validSelectedValues\"\n [cdkListboxUseActiveDescendant]=\"_shouldUseVirtualFocus()\"\n (cdkListboxValueChange)=\"_handleSelectionChange($event)\"\n (keydown.enter)=\"selected.emit($event)\"\n (keydown.space)=\"selected.emit($event)\"\n (mousedown)=\"_isConnectedToInput() && $event.preventDefault()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [class.sapphire-listbox--medium]=\"size === 'medium'\"\n [class.sapphire-listbox--small]=\"size === 'small'\"\n>\n <ng-container *ngFor=\"let item of options; let last = last\">\n <ng-container *ngIf=\"_isSection(item)\">\n <li role=\"presentation\">\n <ul\n role=\"group\"\n class=\"sapphire-listbox__section\"\n [attr.aria-label]=\"item.ariaLabel\"\n >\n <li\n *ngFor=\"let option of item.children\"\n [cdkOption]=\"option.value\"\n [cdkOptionDisabled]=\"!!option.disabled\"\n [cdkOptionTypeaheadLabel]=\"option.label\"\n #cdkOption=\"cdkOption\"\n sp-listbox-item\n [option]=\"option\"\n [selected]=\"isSelected(option)\"\n [focused]=\"cdkOption.isActive()\"\n (click)=\"!(disabled || option.disabled) && selected.emit($event)\"\n [size]=\"size\"\n ></li>\n </ul>\n </li>\n <li\n *ngIf=\"!last\"\n role=\"separator\"\n class=\"sapphire-listbox__separator\"\n ></li>\n </ng-container>\n <li\n *ngIf=\"_isOption(item)\"\n [cdkOption]=\"item.value\"\n [cdkOptionDisabled]=\"!!item.disabled\"\n [cdkOptionTypeaheadLabel]=\"item.label\"\n #cdkOption=\"cdkOption\"\n sp-listbox-item\n [option]=\"item\"\n [selected]=\"isSelected(item)\"\n [focused]=\"cdkOption.isActive()\"\n (click)=\"!(disabled || item.disabled) && selected.emit($event)\"\n [size]=\"size\"\n ></li>\n </ng-container>\n</ul>\n", styles: [".sapphire-listbox{box-sizing:border-box;display:flex;justify-content:stretch;flex-direction:column;min-width:var(--sapphire-listbox-size-width-min);margin:0;padding:0;position:relative;list-style:none;outline:none;padding-top:calc(var(--sapphire-listbox-size-spacing-outer-horizontal) - var(--sapphire-listbox-size-spacing-outer-vertical));padding-bottom:calc(var(--sapphire-listbox-size-spacing-outer-horizontal) - var(--sapphire-listbox-size-spacing-outer-vertical));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-listbox__item{display:flex;justify-content:space-between;align-items:center;padding:var(--sapphire-listbox-size-spacing-outer-vertical) var(--sapphire-listbox-size-spacing-outer-horizontal);color:var(--sapphire-listbox-color-content-normal-primary-default);outline:none;cursor:pointer}.sapphire-listbox__item--danger{color:var(--sapphire-listbox-color-content-danger-default)}.sapphire-listbox__item--selected{color:var(--sapphire-listbox-color-content-selected-default)}.sapphire-listbox__item--selected .sapphire-listbox__content{background-color:var(--sapphire-listbox-color-background-selected-default)}.sapphire-listbox__content{width:100%;display:grid;grid-auto-flow:column;align-items:center;gap:var(--sapphire-listbox-size-spacing-inner-horizontal-l);grid-template-columns:auto 1fr var(--sapphire-listbox-size-width-icon-l);padding:calc(var(--sapphire-listbox-size-spacing-inner-vertical-l) - var(--sapphire-listbox-size-spacing-outer-vertical)) var(--sapphire-listbox-size-spacing-inner-horizontal-l);border-radius:var(--sapphire-listbox-size-radius-item);transition-property:opacity,background-color,color;transition-duration:var(--sapphire-listbox-time-transition);transition-timing-function:ease-in-out;min-height:var(--sapphire-listbox-size-height-min-height)}.sapphire-listbox--medium .sapphire-listbox__content{gap:var(--sapphire-listbox-size-spacing-inner-horizontal-m);grid-template-columns:auto 1fr var(--sapphire-listbox-size-width-icon-m);padding:calc(var(--sapphire-listbox-size-spacing-inner-vertical-m) - var(--sapphire-listbox-size-spacing-outer-vertical)) var(--sapphire-listbox-size-spacing-inner-horizontal-m)}.sapphire-listbox--small .sapphire-listbox__content{gap:var(--sapphire-listbox-size-spacing-inner-horizontal-s);grid-template-columns:auto 1fr var(--sapphire-listbox-size-width-icon-s);padding:calc(var(--sapphire-listbox-size-spacing-inner-vertical-s) - var(--sapphire-listbox-size-spacing-outer-vertical)) var(--sapphire-listbox-size-spacing-inner-horizontal-s)}.sapphire-listbox__icon{line-height:0}.sapphire-listbox__text-container{font-family:var(--sapphire-listbox-font-name);line-height:var(--sapphire-listbox-size-line-height)}.sapphire-listbox__text-container:first-child{grid-column:span 2}.sapphire-listbox__primary-text{font-weight:var(--sapphire-listbox-font-weight-primary);font-size:var(--sapphire-listbox-size-font-primary-l)}.sapphire-listbox__secondary-text{font-weight:var(--sapphire-listbox-font-weight-secondary);font-size:var(--sapphire-listbox-size-font-secondary-l)}.sapphire-listbox--medium .sapphire-listbox__primary-text{font-size:var(--sapphire-listbox-size-font-primary-m)}.sapphire-listbox--small .sapphire-listbox__primary-text{font-size:var(--sapphire-listbox-size-font-primary-s)}.sapphire-listbox--medium .sapphire-listbox__secondary-text{font-size:var(--sapphire-listbox-size-font-secondary-m)}.sapphire-listbox--small .sapphire-listbox__secondary-text{font-size:var(--sapphire-listbox-size-font-secondary-s)}.sapphire-listbox__item:not(.sapphire-listbox__item--danger):not(.sapphire-listbox__item--selected) .sapphire-listbox__secondary-text{color:var(--sapphire-listbox-color-content-normal-secondary-default)}.sapphire-listbox__item.is-disabled{opacity:var(--sapphire-listbox-opacity-disabled);cursor:not-allowed}.sapphire-listbox__section{padding:0;list-style:none}.sapphire-listbox__separator{height:var(--sapphire-listbox-size-height-separator);width:100%;background:var(--sapphire-listbox-color-separator);margin-top:calc(var(--sapphire-listbox-size-spacing-outer-horizontal) - var(--sapphire-listbox-size-spacing-outer-vertical));margin-bottom:calc(var(--sapphire-listbox-size-spacing-outer-horizontal) - var(--sapphire-listbox-size-spacing-outer-vertical))}.sapphire-listbox__item:not(.is-disabled).is-focus .sapphire-listbox__content,.sapphire-listbox__item:not(.is-disabled):not(.js-focus):focus-visible .sapphire-listbox__content{box-shadow:0 0 0 var(--sapphire-listbox-size-focus-ring) var(--sapphire-listbox-color-focus-ring)}.sapphire-listbox__item:not(.is-disabled).is-hover:not(.is-active) .sapphire-listbox__content,.sapphire-listbox__item:not(.is-disabled):not(.js-hover):not(.is-active):hover .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-normal-primary-hover);background-color:var(--sapphire-listbox-color-background-normal-hover)}.sapphire-listbox__item--danger:not(.is-disabled):not(.is-active).is-hover .sapphire-listbox__content,.sapphire-listbox__item--danger:not(.is-disabled):not(.js-hover):not(.is-active):hover .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-danger-hover);background-color:var(--sapphire-listbox-color-background-danger-hover)}.sapphire-listbox__item--selected:not(.is-disabled):not(.is-active).is-hover .sapphire-listbox__content,.sapphire-listbox__item--selected:not(.is-disabled):not(.is-active):not(.js-hover):hover .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-selected-hover);background-color:var(--sapphire-listbox-color-background-selected-hover)}.sapphire-listbox__item:not(.is-disabled).is-active .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-normal-primary-active);background-color:var(--sapphire-listbox-color-background-normal-active)}.sapphire-listbox__item--danger:not(.is-disabled).is-active .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-danger-active);background-color:var(--sapphire-listbox-color-background-danger-active)}.sapphire-listbox__item--selected:not(.is-disabled).is-active .sapphire-listbox__content{color:var(--sapphire-listbox-color-content-selected-active);background-color:var(--sapphire-listbox-color-background-selected-active)}:host{display:block}\n"] }]
240
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { selectedValues: [{
241
+ type: Input
242
+ }], selectedValuesChange: [{
243
+ type: Output
244
+ }], _itemsInput: [{
245
+ type: Input,
246
+ args: ['spListboxItems']
247
+ }], disabled: [{
248
+ type: Input
249
+ }], multiple: [{
250
+ type: Input
251
+ }], navigationWrapDisabled: [{
252
+ type: Input
253
+ }], ariaLabel: [{
254
+ type: Input,
255
+ args: ['aria-label']
256
+ }], ariaLabelledBy: [{
257
+ type: Input,
258
+ args: ['aria-labelledby']
259
+ }], size: [{
260
+ type: Input
261
+ }], selected: [{
262
+ type: Output
263
+ }], itemsInContent: [{
264
+ type: ContentChildren,
265
+ args: [ListboxChild]
266
+ }], cdkListbox: [{
267
+ type: ViewChild,
268
+ args: [CdkListbox]
269
+ }], cdkOptions: [{
270
+ type: ViewChildren,
271
+ args: [CdkOption]
272
+ }] } });
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2xpc3Rib3gvc3JjL2xpc3Rib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9saXN0Ym94L3NyYy9saXN0Ym94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUwsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEdBRVYsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUNMLGtCQUFrQixHQUVuQixNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7QUF3QjNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFxRTNCOzs7T0FHRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ2pELENBQUM7SUE0QkQsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUEvRnhEOzs7V0FHRztRQUVILG1CQUFjLEdBQXNCLEVB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RUFnRUE7QURzQkU7SUFEQyxhQUFhO2tEQUNVO0FBT3hCO0lBREMsYUFBYTtrREFDVTtBQVF4QjtJQURDLGFBQWE7Z0VBQ3VCOzJGQTlDMUIsZ0JBQWdCO2tCQXRCNUIsU0FBUzsrQkFDRSxZQUFZLGFBR1g7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUM7NEJBQy9DLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDO3lCQUNoRDt3QkFDRCx5QkFBeUI7cUJBQzFCLFFBQ0s7d0JBQ0osbUJBQW1CLEVBQUUsTUFBTTt3QkFDM0Isd0JBQXdCLEVBQUUsTUFBTTtxQkFDakMsWUFDUyxXQUFXO3dHQWVyQixjQUFjO3NCQURiLEtBQUs7Z0JBT04sb0JBQW9CO3NCQURuQixNQUFNO2dCQVNQLFdBQVc7c0JBRFYsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBS3ZCLFFBQVE7c0JBRlAsS0FBSztnQkFTTixRQUFRO3NCQUZQLEtBQUs7Z0JBVU4sc0JBQXNCO3NCQUZyQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSzt1QkFBQyxZQUFZO2dCQUluQixjQUFjO3NCQURiLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUl4QixJQUFJO3NCQURILEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxNQUFNO2dCQUlDLGNBQWM7c0JBRHJCLGVBQWU7dUJBQUMsWUFBWTtnQkFlckIsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxVQUFVO2dCQUliLFVBQVU7c0JBRGpCLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRG9DaGVjayxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENka0xpc3Rib3gsXG4gIENka09wdGlvbixcbiAgTGlzdGJveFZhbHVlQ2hhbmdlRXZlbnQsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9saXN0Ym94JztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb2VyY2VCb29sZWFuIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvZXJjZS1ib29sZWFuLmRlY29yYXRvcic7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgTGlzdGJveENoaWxkIH0gZnJvbSAnLi9saXN0Ym94LWNoaWxkJztcbmltcG9ydCB7IFNlY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuL3NlY3Rpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IExpc3Rib3hJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4vbGlzdGJveC1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVmlld0VuY2Fwc3VsYXRpb25Qcm92aWRlciB9IGZyb20gJy4uLy4uL2NvbW1vbi9zYXBwaGlyZS12aWV3LWVuY2Fwc3VsYXRpb24nO1xuaW1wb3J0IHtcbiAgSUNPTl9TSVpFX1BST1ZJREVSLFxuICBJY29uU2l6ZVByb3ZpZGVyLFxufSBmcm9tICcuLi8uLi9pY29uL3NyYy9pY29uLXNpemUtcHJvdmlkZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcC1saXN0Ym94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3Rib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0Ym94LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTGlzdGJveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IElDT05fU0laRV9QUk9WSURFUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpc3Rib3hDb21wb25lbnQpLFxuICAgIH0sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25Qcm92aWRlcixcbiAgXSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSc6ICdudWxsJyxcbiAgfSxcbiAgZXhwb3J0QXM6ICdzcExpc3Rib3gnLFxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Ym94Q29tcG9uZW50XG4gIGltcGxlbWVudHNcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgRG9DaGVjayxcbiAgICBJY29uU2l6ZVByb3ZpZGVyXG57XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBzZWxlY3RlZCB2YWx1ZXMgKGB2YWx1ZWBzIG9mIHNlbGVjdGVkIHNwLW9wdGlvbnMpLlxuICAgKiBJdCdzIGFsd2F5cyBhbiBhcnJheSwgcmVnYXJkbGVzcyBvZiB7QHByb3BlcnR5IG11bHRpcGxlfSBiZWluZyB0cnVlIG9yIG5vdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkVmFsdWVzOiByZWFkb25seSBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBjaGFuZ2VkLiBFbWl0cyBzZWxlY3RlZCB2YWx1ZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRWYWx1ZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHJlYWRvbmx5IHN0cmluZ1tdPigpO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIHBhc3NpbmcgdGhlIGxpc3Qgb2YgbGlzdGJveCBpdGVtcyBpbnN0ZWFkIG9mIGhhdmluZyB0aGVtIGNvbGxlY3RlZFxuICAgKiBmcm9tIGNoaWxkcmVuLiBVc2VmdWwgd2hlbiBhIGNvbXBvbmVudCB3YW50cyB0byByZW5kZXIgYSBsaXN0Ym94IHdpdGhpbiBpdHMgdmlld1xuICAgKiBidXQgd2FudHMgdG8gY29sbGVjdCBsaXN0Ym94IGl0ZW1zIGZyb20gaXRzIG93biBjb250ZW50LlxuICAgKi9cbiAgQElucHV0KCdzcExpc3Rib3hJdGVtcycpXG4gIF9pdGVtc0lucHV0PzogSXRlcmFibGU8TGlzdGJveENoaWxkPjtcblxuICBASW5wdXQoKVxuICBAQ29lcmNlQm9vbGVhblxuICBkaXNhYmxlZD86IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogV2hldGhlciBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgYWxsb3dlZFxuICAgKi9cbiAgQElucHV0KClcbiAgQENvZXJjZUJvb2xlYW5cbiAgbXVsdGlwbGU/OiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHByZXNzaW5nIEFycm93VXAvQXJyb3dEb3duIG9uIHRoZSBmaXJzdC9sYXN0IGl0ZW0gd2lsbCBub3QgbW92ZVxuICAgKiBmb2N1cyB0byB0aGUgbGFzdC9maXJzdCBpdGVtLlxuICAgKi9cbiAgQElucHV0KClcbiAgQENvZXJjZUJvb2xlYW5cbiAgbmF2aWdhdGlvbldyYXBEaXNhYmxlZDogQm9vbGVhbklucHV0O1xuXG4gIEBJbnB1dCgnYXJpYS1sYWJlbCcpXG4gIGFyaWFMYWJlbCE6IHN0cmluZztcblxuICBASW5wdXQoJ2FyaWEtbGFiZWxsZWRieScpXG4gIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU/OiAnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnID0gJ2xhcmdlJztcblxuICAvKipcbiAgICogRW1pdHMgd2hlbmV2ZXIgYW4gb3B0aW9uIGlzIHNlbGVjdGVkLCByZWdhcmRsZXNzIG9mIGlmIGl0J3MgYWxyZWFkeSBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAQ29udGVudENoaWxkcmVuKExpc3Rib3hDaGlsZClcbiAgcHJpdmF0ZSBpdGVtc0luQ29udGVudDogUXVlcnlMaXN0PExpc3Rib3hDaGlsZD4gPSBuZXcgUXVlcnlMaXN0PExpc3Rib3hDaGlsZD4oKTtcblxuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4ge30gPSAoKSA9PiAoe30pO1xuICBwcml2YXRlIG9uQ2hhbmdlID0gKCkgPT4ge307XG5cbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3BPcHRpb24gb3Igc3BTZWN0aW9uIGNvbXBvbmVudHMgZWl0aGVyIGNvbGxlY3RlZCBmcm9tIHRoZSBjb250ZW50XG4gICAqIG9yIHBhc3NlZCBhcyBpbnB1dC5cbiAgICovXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc0lucHV0IHx8IHRoaXMuaXRlbXNJbkNvbnRlbnQ7XG4gIH1cblxuICBAVmlld0NoaWxkKENka0xpc3Rib3gpXG4gIHByaXZhdGUgY2RrTGlzdGJveD86IENka0xpc3Rib3g7XG5cbiAgQFZpZXdDaGlsZHJlbihDZGtPcHRpb24pXG4gIHByaXZhdGUgY2RrT3B0aW9ucz86IFF1ZXJ5TGlzdDxDZGtPcHRpb24+O1xuXG4gIHByaXZhdGUgY29ubmVjdGVkSW5wdXQ/OiBMaXN0Ym94SW5wdXREaXJlY3RpdmU7XG5cbiAgLyoqXG4gICAqIENka0xpc3Rib3ggdGhyb3dzIGlmIHRoZXJlIGlzIGEgc2VsZWN0ZWQgdmFsdWUgdGhhdCBkb2Vzbid0IG1hdGNoIGFueSBvZiB0aGUgY2RrT3B0aW9uc1xuICAgKiBJdCdzIHByb2JhYmx5IGFuIGFydGlmaWNpYWwgY2hlY2ssIGFuZCBtYXliZSB0aGV5IGNvdWxkIHJlbW92ZSBpdCwgYnV0IHRoYXQncyBob3cgaXQgaXMgbm93LFxuICAgKiBhbmQgc2VsZWN0ZWQgdmFsdWUgY2FuIGJlIG5vbmUgb2YgdGhlIGN1cnJlbnRseSB2aXNpYmxlIG9wdGlvbnMgaWYgb3B0aW9ucyBhcmUgc2VhcmNoYWJsZS5cbiAgICogU2luY2UgdGhlIGNoZWNrIHNlZW1zIHVubmVjZXNzYXJ5LCB3ZSBkbyB0aGUgZmlsdGVyaW5nIHJpZ2h0IGluIHRoZSBsaXN0Ym94IGNvbXBvbmVudCBpbnN0ZWFkXG4gICAqIG9mIGluIHNlYXJjaGFibGUgc2VsZWN0LlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3ZhbGlkU2VsZWN0ZWRWYWx1ZXM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW107XG4gIC8qKlxuICAgKiBPdXIgZXhwZWN0ZWQgYmVoYXZpb3IgKG1hdGNoaW5nIHRoZSBSZWFjdCBpbXBsKSBpcyB0byBuYXZpZ2F0ZSB0byB0aGUgbGFzdCBvcHRpb24sIHdoZW5cbiAgICogQXJyb3dEb3duIGlzIHByZXNzZWQgYW5kIG5vIG9wdGlvbiBpcyBjdXJyZW50bHkgZm9jdXNlZCwgYnV0IHRvIG5vdCBoYXZlIGZvY3VzIHdyYXBwaW5nLlxuICAgKiBkaXNhYmxpbmcgZm9jdXMgd3JhcHBpbmcgb24gY2RrTGlzdGJveCBpcyBpbXBsZW1lbnRlZCBkaWZmZXJlbnRseSwgYW5kIGRvZXNuJ3QgYWxsb3cgZm9yXG4gICAqIHRoYXQsIHNvIHdlIGVuYWJsZSBpdCByZWdhcmRsZXNzIG9mIGBuYXZpZ2F0aW9uV3JhcERpc2FibGVkYCBpbnB1dCwgaWYgdGhlcmUgaXMgbm8gYWN0aXZlXG4gICAqIG9wdGlvbi5cbiAgICovXG4gIF9mb3JjZUVuYWJsZU5hdmlnYXRpb25XcmFwID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBsaXN0Ym94IHRvIGFuIGlucHV0LCBmb3IgY29tYm9ib3gtbGlrZSB1c2UgY2FzZXMuXG4gICAqIFJldHVybnMgYSBrZXlkb3duIGV2ZW50IGhhbmRsZXIgdG8gYmUgdXNlZCBvbiB0aGUgY29ubmVjdGVkIGlucHV0LlxuICAgKiBDb25uZWN0aW5nIGFuIGlucHV0IHRvIHRoZSBsaXN0Ym94IGFsc28gY2F1c2VzIGxpc3Rib3ggdG8gdXNlIHZpcnR1YWwgZm9jdXNcbiAgICogc2luY2UgdGhlIGFjdHVhbCBmb2N1cyB3aWxsIGJlIGluIHRoZSBpbnB1dC5cbiAgICogQHBhcmFtIGlucHV0RGlyZWN0aXZlXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29ubmVjdFRvSW5wdXQoaW5wdXREaXJlY3RpdmU6IExpc3Rib3hJbnB1dERpcmVjdGl2ZSkge1xuICAgIHRoaXMuY29ubmVjdGVkSW5wdXQgPSBpbnB1dERpcmVjdGl2ZTtcbiAgICAvLyBuZWVkIHRvIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGJlY2F1c2UgX2Nvbm5lY3RlZElucHV0IGlzIHVzZWQgdG8gc2V0IHRoZSB2YWx1ZSBvZlxuICAgIC8vIGNka0xpc3Rib3hVc2VBY3RpdmVEZXNjZW5kYW50LCBhbmQgaXQncyBzZXQgYWZ0ZXIgY2hhbmdlIGRldGVjdGlvbiBmb3IgdGhpcyBjb21wb25lbnQgaXMgZG9uZVxuICAgIC8vIGFuZCB3aGVuIExpc3Rib3hJbnB1dERpcmVjdGl2ZSBpbnB1dCBpcyBzZXRcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgb25LZXlkb3duOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIC8vIE9ubHkgZm9yd2FyZGluZyBjZXJ0YWluIGtleXN0cm9rZXMsIG5vdCB0byB0cmlnZ2VyIHR5cGVhaGVhZCB3aGlsZSBpbnB1dCBpcyBmb2N1c2VkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgJ0Fycm93VXAnLFxuICAgICAgICAgICAgJ0Fycm93RG93bicsXG4gICAgICAgICAgICAnSG9tZScsXG4gICAgICAgICAgICAnRW5kJyxcbiAgICAgICAgICAgICdQYWdlVXAnLFxuICAgICAgICAgICAgJ1BhZ2VEb3duJyxcbiAgICAgICAgICAgICdFbnRlcicsXG4gICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IoYWNjZXNzKTogX2hhbmRsZUtleWRvd24gaXMgcHJvdGVjdGVkXG4gICAgICAgICAgdGhpcy5jZGtMaXN0Ym94Py5faGFuZGxlS2V5ZG93bj8uKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyB8fCBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIHRoaXMuc2V0QWN0aXZlT3B0aW9uKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gY2RrTGlzdGJveCBrZWVwcyB0cmFjayBvZiBmb2N1cyBzdGF0ZSwgYW5kIHNldHMgdGhlIGFjdGl2ZSBpdGVtIHRvIHRoZSBzZWxlY3RlZCBpdGVtIGlmXG4gICAgICAvLyB0aGUgbGlzdGJveCBpcyBub3QgZm9jdXNlZCB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzLiBUaGF0IGNhdXNlcyBpc3N1ZXMgZXNwZWNpYWxseSBpblxuICAgICAgLy8gbXVsdGktc2VsZWN0LCB3aGVyZSB0aGUgZHJvcGRvd24ga2VlcHMgb3BlbiB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgICAgb25Gb2N1czogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jZGtMaXN0Ym94KSB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcihhY2Nlc3MpOiBfaGFzRm9jdXMgaXMgcHJpdmF0ZVxuICAgICAgICAgIHRoaXMuY2RrTGlzdGJveC5faGFzRm9jdXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNka0xpc3Rib3gpIHtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yKGFjY2Vzcyk6IF9oYXNGb2N1cyBpcyBwcml2YXRlXG4gICAgICAgICAgdGhpcy5jZGtMaXN0Ym94Ll9oYXNGb2N1cyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpc1NlbGVjdGVkKG9wdGlvbjogT3B0aW9uQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXM/LmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jZGtMaXN0Ym94Py5yZWdpc3Rlck9uQ2hhbmdlKHRoaXMub25DaGFuZ2UpO1xuICAgIHRoaXMuY2RrTGlzdGJveD8ucmVnaXN0ZXJPblRvdWNoZWQodGhpcy5vblRvdWNoZWQpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIC8qKlxuICAgICAqIFByb3BlcnRpZXMgc2V0IGhlcmUgYXJlIHVzZWQgaW4gdGhlIHRlbXBsYXRlLCBidXQgZGVwZW5kIG9uIHRoZSBzdGF0ZSBvZiBjaGlsZCBkaXJlY3RpdmVzLFxuICAgICAqIHdoaWNoIGNhbiBjaGFuZ2UgYWZ0ZXIgdmlldyBpcyBjaGVja2VkIG9uIHRoaXMgY29tcG9uZW50LiBCeSBzZXR0aW5nIHRoZW0gaW4gbmdEb0NoZWNrXG4gICAgICogaW5zdGVhZCBvZiBkaXJlY3RseSByZWZlcmVuY2luZyB0aGVtIGluIHRoZSB0ZW1wbGF0ZSwgd2UgYXZvaWQgTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZC4uLlxuICAgICAqIGVycm9yc1xuICAgICAqL1xuICAgIHRoaXMuX2ZvcmNlRW5hYmxlTmF2aWdhdGlvbldyYXAgPSAhQm9vbGVhbih0aGlzLmdldEFjdGl2ZU9wdGlvbigpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICBjb25zdCB2YWxpZFZhbHVlcyA9XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzPy5maWx0ZXIoKHZhbHVlKSA9PlxuICAgICAgICB0aGlzLmNka09wdGlvbnM/LmZpbmQoKGNka09wdGlvbikgPT4gY2RrT3B0aW9uLnZhbHVlID09PSB2YWx1ZSlcbiAgICAgICkgfHwgW107XG4gICAgaWYgKFxuICAgICAgdmFsaWRWYWx1ZXMubGVuZ3RoICE9PSB0aGlzLl92YWxpZFNlbGVjdGVkVmFsdWVzLmxlbmd0aCB8fFxuICAgICAgdGhpcy5fdmFsaWRTZWxlY3RlZFZhbHVlcy5zb21lKFxuICAgICAgICAodmFsdWUsIGluZGV4KSA9PiB2YWx1ZSAhPT0gdmFsaWRWYWx1ZXNbaW5kZXhdXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLl92YWxpZFNlbGVjdGVkVmFsdWVzID0gdmFsaWRWYWx1ZXM7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhY3RpdmUgKGZvY3VzZWQpIG9wdGlvbi4gUGFzc2luZyBudWxsIHJlbW92ZXMgYWN0aXZlIHN0YXRlIGlmIGFueS5cbiAgICogQHBhcmFtIHZhbHVlIG9wdGlvbiB2YWx1ZVxuICAgKi9cbiAgc2V0QWN0aXZlT3B0aW9uKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgY29uc3Qgb3B0aW9uID1cbiAgICAgIHZhbHVlICYmIHRoaXMuY2RrT3B0aW9ucz8uZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlKTtcbiAgICBpZiAob3B0aW9uIHx8IG9wdGlvbiA9PT0gbnVsbCkge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbnVsbCBpcyBhY3R1YWxseSBhY2NlcHRlZCBhbmQgcmVzZXRzIGFjdGl2ZSBpdGVtLCBidXQgdGhlIHR5cGUgZG9lc24ndCBhbGxvdyBpdCBieSBtaXN0YWtlXG4gICAgICB0aGlzLmNka0xpc3Rib3g/Ll9zZXRBY3RpdmVPcHRpb24ob3B0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgY3VycmVudGx5IGFjdGl2ZSAoZm9jdXNlZCkgb3B0aW9uLlxuICAgKi9cbiAgZ2V0QWN0aXZlT3B0aW9uKCk6IHN0cmluZyB8IG51bGwge1xuICAgIC8vIFRoZXJlIGlzIGN1cnJlbnRseSBubyBwdWJsaWMgbWV0aG9kIG9uIENka0xpc3Rib3ggdG8gZ2V0IHRoZSBhY3RpdmUgaXRlbSBvciBzZWxlY3QgaXQgZGlyZWN0bHkuXG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmNka09wdGlvbnM/LmZpbmQoKG9wdGlvbikgPT5cbiAgICAgICAgQm9vbGVhbih0aGlzLmNka0xpc3Rib3g/LmlzQWN0aXZlKG9wdGlvbikpXG4gICAgICApPy52YWx1ZSBhcyBzdHJpbmcpID8/IG51bGxcbiAgICApO1xuICB9XG5cbiAgLy8vLyBDb250cm9sVmFsdWVBY2Nlc3NvciAvLy8vXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IG9iajtcbiAgfVxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHsgdmFsdWUgfTogTGlzdGJveFZhbHVlQ2hhbmdlRXZlbnQ8c3RyaW5nPikge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSB2YWx1ZTtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaXNPcHRpb24oaXRlbTogTGlzdGJveENoaWxkKTogaXRlbSBpcyBPcHRpb25Db21wb25lbnQge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgT3B0aW9uQ29tcG9uZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaXNTZWN0aW9uKGl0ZW06IExpc3Rib3hDaGlsZCk6IGl0ZW0gaXMgU2VjdGlvbkRpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBTZWN0aW9uRGlyZWN0aXZlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfc2hvdWxkVXNlVmlydHVhbEZvY3VzKCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuY29ubmVjdGVkSW5wdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaXNDb25uZWN0ZWRUb0lucHV0KCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuY29ubmVjdGVkSW5wdXQpO1xuICB9XG59XG4iLCI8dWxcbiAgY2xhc3M9XCJzYXBwaGlyZS1saXN0Ym94XCJcbiAgY2RrTGlzdGJveFxuICBbY2RrTGlzdGJveENvbXBhcmVXaXRoXT1cIlwiXG4gIFtjZGtMaXN0Ym94TXVsdGlwbGVdPVwiISFtdWx0aXBsZVwiXG4gIFtjZGtMaXN0Ym94RGlzYWJsZWRdPVwiISFkaXNhYmxlZFwiXG4gIFtjZGtMaXN0Ym94TmF2aWdhdGlvbldyYXBEaXNhYmxlZF09XCJcbiAgICBuYXZpZ2F0aW9uV3JhcERpc2FibGVkICYmICFfZm9yY2VFbmFibGVOYXZpZ2F0aW9uV3JhcFxuICBcIlxuICBbY2RrTGlzdGJveFZhbHVlXT1cIl92YWxpZFNlbGVjdGVkVmFsdWVzXCJcbiAgW2Nka0xpc3Rib3hVc2VBY3RpdmVEZXNjZW5kYW50XT1cIl9zaG91bGRVc2VWaXJ0dWFsRm9jdXMoKVwiXG4gIChjZGtMaXN0Ym94VmFsdWVDaGFuZ2UpPVwiX2hhbmRsZVNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgKGtleWRvd24uZW50ZXIpPVwic2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcbiAgKGtleWRvd24uc3BhY2UpPVwic2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcbiAgKG1vdXNlZG93bik9XCJfaXNDb25uZWN0ZWRUb0lucHV0KCkgJiYgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gIFtjbGFzcy5zYXBwaGlyZS1saXN0Ym94LS1tZWRpdW1dPVwic2l6ZSA9PT0gJ21lZGl1bSdcIlxuICBbY2xhc3Muc2FwcGhpcmUtbGlzdGJveC0tc21hbGxdPVwic2l6ZSA9PT0gJ3NtYWxsJ1wiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uczsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9pc1NlY3Rpb24oaXRlbSlcIj5cbiAgICAgIDxsaSByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgIDx1bFxuICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgY2xhc3M9XCJzYXBwaGlyZS1saXN0Ym94X19zZWN0aW9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0uYXJpYUxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBpdGVtLmNoaWxkcmVuXCJcbiAgICAgICAgICAgIFtjZGtPcHRpb25dPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIFtjZGtPcHRpb25EaXNhYmxlZF09XCIhIW9wdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbY2RrT3B0aW9uVHlwZWFoZWFkTGFiZWxdPVwib3B0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgICNjZGtPcHRpb249XCJjZGtPcHRpb25cIlxuICAgICAgICAgICAgc3AtbGlzdGJveC1pdGVtXG4gICAgICAgICAgICBbb3B0aW9uXT1cIm9wdGlvblwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICAgIFtmb2N1c2VkXT1cImNka09wdGlvbi5pc0FjdGl2ZSgpXCJcbiAgICAgICAgICAgIChjbGljayk9XCIhKGRpc2FibGVkIHx8IG9wdGlvbi5kaXNhYmxlZCkgJiYgc2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtzaXplXT1cInNpemVcIlxuICAgICAgICAgID48L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9saT5cbiAgICAgIDxsaVxuICAgICAgICAqbmdJZj1cIiFsYXN0XCJcbiAgICAgICAgcm9sZT1cInNlcGFyYXRvclwiXG4gICAgICAgIGNsYXNzPVwic2FwcGhpcmUtbGlzdGJveF9fc2VwYXJhdG9yXCJcbiAgICAgID48L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxsaVxuICAgICAgKm5nSWY9XCJfaXNPcHRpb24oaXRlbSlcIlxuICAgICAgW2Nka09wdGlvbl09XCJpdGVtLnZhbHVlXCJcbiAgICAgIFtjZGtPcHRpb25EaXNhYmxlZF09XCIhIWl0ZW0uZGlzYWJsZWRcIlxuICAgICAgW2Nka09wdGlvblR5cGVhaGVhZExhYmVsXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgI2Nka09wdGlvbj1cImNka09wdGlvblwiXG4gICAgICBzcC1saXN0Ym94LWl0ZW1cbiAgICAgIFtvcHRpb25dPVwiaXRlbVwiXG4gICAgICBbc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICBbZm9jdXNlZF09XCJjZGtPcHRpb24uaXNBY3RpdmUoKVwiXG4gICAgICAoY2xpY2spPVwiIShkaXNhYmxlZCB8fCBpdGVtLmRpc2FibGVkKSAmJiBzZWxlY3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgW3NpemVdPVwic2l6ZVwiXG4gICAgPjwvbGk+XG4gIDwvbmctY29udGFpbmVyPlxuPC91bD5cbiJdfQ==
@@ -0,0 +1,81 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { CdkListboxModule } from '@angular/cdk/listbox';
4
+ import { SapphireIconModule } from '../../icon/public_api';
5
+ import { OptionIconDirective } from './option-icon.directive';
6
+ import { OptionSecondaryTextDirective } from './option-secondary-text.directive';
7
+ import { OptionPrimaryTextDirective } from './option-primary-text.directive';
8
+ import { ListboxComponent } from './listbox.component';
9
+ import { PortalModule } from '@angular/cdk/portal';
10
+ import { OptionComponent } from './option.component';
11
+ import { SectionDirective } from './section.directive';
12
+ import { PressedDirective } from '../../common/pressed.directive';
13
+ import { ListboxInputDirective } from './listbox-input.directive';
14
+ import { FocusedDirective } from '../../common/focused.directive';
15
+ import { ListboxItemComponent } from './listbox-item.component';
16
+ import { UseComponentStyles } from '../../common/sapphire-view-encapsulation';
17
+ import { CdkOptionScrollIssuePatch } from './cdk-option-scroll-issue-patch';
18
+ import * as i0 from "@angular/core";
19
+ export class SapphireListboxModule {
20
+ }
21
+ SapphireListboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireListboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
22
+ SapphireListboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: SapphireListboxModule, declarations: [SectionDirective,
23
+ OptionComponent,
24
+ OptionIconDirective,
25
+ OptionSecondaryTextDirective,
26
+ OptionPrimaryTextDirective,
27
+ ListboxComponent,
28
+ ListboxInputDirective,
29
+ ListboxItemComponent], imports: [CommonModule,
30
+ SapphireIconModule,
31
+ CdkListboxModule,
32
+ PortalModule,
33
+ PressedDirective,
34
+ FocusedDirective,
35
+ UseComponentStyles,
36
+ CdkOptionScrollIssuePatch], exports: [ListboxComponent,
37
+ OptionComponent,
38
+ OptionIconDirective,
39
+ OptionSecondaryTextDirective,
40
+ OptionPrimaryTextDirective,
41
+ SectionDirective,
42
+ ListboxInputDirective] });
43
+ SapphireListboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireListboxModule, imports: [CommonModule,
44
+ SapphireIconModule,
45
+ CdkListboxModule,
46
+ PortalModule] });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireListboxModule, decorators: [{
48
+ type: NgModule,
49
+ args: [{
50
+ declarations: [
51
+ SectionDirective,
52
+ OptionComponent,
53
+ OptionIconDirective,
54
+ OptionSecondaryTextDirective,
55
+ OptionPrimaryTextDirective,
56
+ ListboxComponent,
57
+ ListboxInputDirective,
58
+ ListboxItemComponent,
59
+ ],
60
+ imports: [
61
+ CommonModule,
62
+ SapphireIconModule,
63
+ CdkListboxModule,
64
+ PortalModule,
65
+ PressedDirective,
66
+ FocusedDirective,
67
+ UseComponentStyles,
68
+ CdkOptionScrollIssuePatch,
69
+ ],
70
+ exports: [
71
+ ListboxComponent,
72
+ OptionComponent,
73
+ OptionIconDirective,
74
+ OptionSecondaryTextDirective,
75
+ OptionPrimaryTextDirective,
76
+ SectionDirective,
77
+ ListboxInputDirective,
78
+ ],
79
+ }]
80
+ }] });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2xpc3Rib3gvc3JjL2xpc3Rib3gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBaUM1RSxNQUFNLE9BQU8scUJBQXFCOztrSEFBckIscUJBQXFCO21IQUFyQixxQkFBcUIsaUJBN0I5QixnQkFBZ0I7UUFDaEIsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQiw0QkFBNEI7UUFDNUIsMEJBQTBCO1FBQzFCLGdCQUFnQjtRQUNoQixxQkFBcUI7UUFDckIsb0JBQW9CLGFBR3BCLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQix5QkFBeUIsYUFHekIsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixtQkFBbUI7UUFDbkIsNEJBQTRCO1FBQzVCLDBCQUEwQjtRQUMxQixnQkFBZ0I7UUFDaEIscUJBQXFCO21IQUdaLHFCQUFxQixZQW5COUIsWUFBWTtRQUNaLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsWUFBWTsyRkFnQkgscUJBQXFCO2tCQS9CakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsNEJBQTRCO3dCQUM1QiwwQkFBMEI7d0JBQzFCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLDRCQUE0Qjt3QkFDNUIsMEJBQTBCO3dCQUMxQixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjtxQkFDdEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENka0xpc3Rib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvbGlzdGJveCc7XG5pbXBvcnQgeyBTYXBwaGlyZUljb25Nb2R1bGUgfSBmcm9tICcuLi8uLi9pY29uL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgT3B0aW9uSWNvbkRpcmVjdGl2ZSB9IGZyb20gJy4vb3B0aW9uLWljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IE9wdGlvblNlY29uZGFyeVRleHREaXJlY3RpdmUgfSBmcm9tICcuL29wdGlvbi1zZWNvbmRhcnktdGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3B0aW9uUHJpbWFyeVRleHREaXJlY3RpdmUgfSBmcm9tICcuL29wdGlvbi1wcmltYXJ5LXRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IExpc3Rib3hDb21wb25lbnQgfSBmcm9tICcuL2xpc3Rib3guY29tcG9uZW50JztcbmltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNlY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuL3NlY3Rpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IFByZXNzZWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9jb21tb24vcHJlc3NlZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTGlzdGJveElucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9saXN0Ym94LWlucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGb2N1c2VkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2ZvY3VzZWQuZGlyZWN0aXZlJztcbmltcG9ydCB7IExpc3Rib3hJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0Ym94LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFVzZUNvbXBvbmVudFN0eWxlcyB9IGZyb20gJy4uLy4uL2NvbW1vbi9zYXBwaGlyZS12aWV3LWVuY2Fwc3VsYXRpb24nO1xuaW1wb3J0IHsgQ2RrT3B0aW9uU2Nyb2xsSXNzdWVQYXRjaCB9IGZyb20gJy4vY2RrLW9wdGlvbi1zY3JvbGwtaXNzdWUtcGF0Y2gnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTZWN0aW9uRGlyZWN0aXZlLFxuICAgIE9wdGlvbkNvbXBvbmVudCxcbiAgICBPcHRpb25JY29uRGlyZWN0aXZlLFxuICAgIE9wdGlvblNlY29uZGFyeVRleHREaXJlY3RpdmUsXG4gICAgT3B0aW9uUHJpbWFyeVRleHREaXJlY3RpdmUsXG4gICAgTGlzdGJveENvbXBvbmVudCxcbiAgICBMaXN0Ym94SW5wdXREaXJlY3RpdmUsXG4gICAgTGlzdGJveEl0ZW1Db21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2FwcGhpcmVJY29uTW9kdWxlLFxuICAgIENka0xpc3Rib3hNb2R1bGUsXG4gICAgUG9ydGFsTW9kdWxlLFxuICAgIFByZXNzZWREaXJlY3RpdmUsXG4gICAgRm9jdXNlZERpcmVjdGl2ZSxcbiAgICBVc2VDb21wb25lbnRTdHlsZXMsXG4gICAgQ2RrT3B0aW9uU2Nyb2xsSXNzdWVQYXRjaCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIExpc3Rib3hDb21wb25lbnQsXG4gICAgT3B0aW9uQ29tcG9uZW50LFxuICAgIE9wdGlvbkljb25EaXJlY3RpdmUsXG4gICAgT3B0aW9uU2Vjb25kYXJ5VGV4dERpcmVjdGl2ZSxcbiAgICBPcHRpb25QcmltYXJ5VGV4dERpcmVjdGl2ZSxcbiAgICBTZWN0aW9uRGlyZWN0aXZlLFxuICAgIExpc3Rib3hJbnB1dERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2FwcGhpcmVMaXN0Ym94TW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { CdkPortal } from '@angular/cdk/portal';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/cdk/portal";
5
+ /**
6
+ * Icon part of the listbox option layout, rendered on the left side.
7
+ */
8
+ export class OptionIconDirective {
9
+ }
10
+ OptionIconDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: OptionIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ OptionIconDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: OptionIconDirective, selector: "sp-option-icon", viewQueries: [{ propertyName: "contentPortal", first: true, predicate: CdkPortal, descendants: true }], ngImport: i0, template: '<ng-template cdkPortal><ng-content></ng-content></ng-template>', isInline: true, dependencies: [{ kind: "directive", type: i1.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: OptionIconDirective, decorators: [{
13
+ type: Component,
14
+ args: [{
15
+ selector: 'sp-option-icon',
16
+ template: '<ng-template cdkPortal><ng-content></ng-content></ng-template>',
17
+ }]
18
+ }], propDecorators: { contentPortal: [{
19
+ type: ViewChild,
20
+ args: [CdkPortal]
21
+ }] } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWljb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9saXN0Ym94L3NyYy9vcHRpb24taWNvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFaEQ7O0dBRUc7QUFLSCxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO29HQUFuQixtQkFBbUIscUdBQ25CLFNBQVMsZ0RBSFYsZ0VBQWdFOzJGQUUvRCxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLGdFQUFnRTtpQkFDM0U7OEJBR0MsYUFBYTtzQkFEWixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbi8qKlxuICogSWNvbiBwYXJ0IG9mIHRoZSBsaXN0Ym94IG9wdGlvbiBsYXlvdXQsIHJlbmRlcmVkIG9uIHRoZSBsZWZ0IHNpZGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwLW9wdGlvbi1pY29uJyxcbiAgdGVtcGxhdGU6ICc8bmctdGVtcGxhdGUgY2RrUG9ydGFsPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPicsXG59KVxuZXhwb3J0IGNsYXNzIE9wdGlvbkljb25EaXJlY3RpdmUge1xuICBAVmlld0NoaWxkKENka1BvcnRhbClcbiAgY29udGVudFBvcnRhbD86IENka1BvcnRhbDtcbn1cbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { DomPortal } from '@angular/cdk/portal';
2
+ import { Component, ElementRef, ViewChild } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Primary text of a listbox option. Useful when the option contains other parts
6
+ * like secondary text or icon.
7
+ */
8
+ export class OptionPrimaryTextDirective {
9
+ ngAfterViewInit() {
10
+ this.contentPortal = new DomPortal(this.content?.nativeElement);
11
+ }
12
+ }
13
+ OptionPrimaryTextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: OptionPrimaryTextDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ OptionPrimaryTextDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: OptionPrimaryTextDirective, selector: "sp-option-primary-text", viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef }], ngImport: i0, template: '<span #content><ng-content></ng-content></span>', isInline: true });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: OptionPrimaryTextDirective, decorators: [{
16
+ type: Component,
17
+ args: [{
18
+ selector: 'sp-option-primary-text',
19
+ template: '<span #content><ng-content></ng-content></span>',
20
+ }]
21
+ }], propDecorators: { content: [{
22
+ type: ViewChild,
23
+ args: ['content', { read: ElementRef }]
24
+ }] } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLXByaW1hcnktdGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2xpc3Rib3gvc3JjL29wdGlvbi1wcmltYXJ5LXRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVoRjs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sMEJBQTBCO0lBTXJDLGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYyxDQUFDLENBQUM7SUFDbkUsQ0FBQzs7dUhBUlUsMEJBQTBCOzJHQUExQiwwQkFBMEIsNklBR1AsVUFBVSw2QkFMOUIsaURBQWlEOzJGQUVoRCwwQkFBMEI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsUUFBUSxFQUFFLGlEQUFpRDtpQkFDNUQ7OEJBS1MsT0FBTztzQkFEZCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEb21Qb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogUHJpbWFyeSB0ZXh0IG9mIGEgbGlzdGJveCBvcHRpb24uIFVzZWZ1bCB3aGVuIHRoZSBvcHRpb24gY29udGFpbnMgb3RoZXIgcGFydHNcbiAqIGxpa2Ugc2Vjb25kYXJ5IHRleHQgb3IgaWNvbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Atb3B0aW9uLXByaW1hcnktdGV4dCcsXG4gIHRlbXBsYXRlOiAnPHNwYW4gI2NvbnRlbnQ+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj4nLFxufSlcbmV4cG9ydCBjbGFzcyBPcHRpb25QcmltYXJ5VGV4dERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBjb250ZW50UG9ydGFsPzogRG9tUG9ydGFsPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCdjb250ZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgY29udGVudD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRlbnRQb3J0YWwgPSBuZXcgRG9tUG9ydGFsKHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudCEpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { CdkPortal } from '@angular/cdk/portal';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/cdk/portal";
5
+ /**
6
+ * Secondary text of a listbox option.
7
+ */
8
+ export class OptionSecondaryTextDirective {
9
+ }
10
+ OptionSecondaryTextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: OptionSecondaryTextDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ OptionSecondaryTextDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: OptionSecondaryTextDirective, selector: "sp-option-secondary-text", viewQueries: [{ propertyName: "contentPortal", first: true, predicate: CdkPortal, descendants: true }], ngImport: i0, template: '<ng-template cdkPortal><ng-content></ng-content></ng-template>', isInline: true, dependencies: [{ kind: "directive", type: i1.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: OptionSecondaryTextDirective, decorators: [{
13
+ type: Component,
14
+ args: [{
15
+ selector: 'sp-option-secondary-text',
16
+ template: '<ng-template cdkPortal><ng-content></ng-content></ng-template>',
17
+ }]
18
+ }], propDecorators: { contentPortal: [{
19
+ type: ViewChild,
20
+ args: [CdkPortal]
21
+ }] } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLXNlY29uZGFyeS10ZXh0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbGlzdGJveC9zcmMvb3B0aW9uLXNlY29uZGFyeS10ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUVoRDs7R0FFRztBQUtILE1BQU0sT0FBTyw0QkFBNEI7O3lIQUE1Qiw0QkFBNEI7NkdBQTVCLDRCQUE0QiwrR0FDNUIsU0FBUyxnREFIVixnRUFBZ0U7MkZBRS9ELDRCQUE0QjtrQkFKeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUUsZ0VBQWdFO2lCQUMzRTs4QkFHQyxhQUFhO3NCQURaLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuLyoqXG4gKiBTZWNvbmRhcnkgdGV4dCBvZiBhIGxpc3Rib3ggb3B0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcC1vcHRpb24tc2Vjb25kYXJ5LXRleHQnLFxuICB0ZW1wbGF0ZTogJzxuZy10ZW1wbGF0ZSBjZGtQb3J0YWw+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvbmctdGVtcGxhdGU+Jyxcbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uU2Vjb25kYXJ5VGV4dERpcmVjdGl2ZSB7XG4gIEBWaWV3Q2hpbGQoQ2RrUG9ydGFsKVxuICBjb250ZW50UG9ydGFsPzogQ2RrUG9ydGFsO1xufVxuIl19
@@ -0,0 +1,58 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, ContentChild, ElementRef, forwardRef, Input, ViewChild, } from '@angular/core';
3
+ import { OptionPrimaryTextDirective } from './option-primary-text.directive';
4
+ import { DomPortal } from '@angular/cdk/portal';
5
+ import { OptionSecondaryTextDirective } from './option-secondary-text.directive';
6
+ import { OptionIconDirective } from './option-icon.directive';
7
+ import { CoerceBoolean } from '../../common/coerce-boolean.decorator';
8
+ import { ListboxChild } from './listbox-child';
9
+ import * as i0 from "@angular/core";
10
+ export class OptionComponent extends ListboxChild {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.value = '';
14
+ }
15
+ get primaryText() {
16
+ return this._primaryText?.contentPortal || this.domPortal;
17
+ }
18
+ get label() {
19
+ return ((this._primaryText?.contentPortal?.element || this.content?.nativeElement)?.textContent?.trim() || '');
20
+ }
21
+ ngAfterViewInit() {
22
+ this.domPortal = new DomPortal(this.content?.nativeElement);
23
+ }
24
+ }
25
+ OptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: OptionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
26
+ OptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: OptionComponent, selector: "sp-option", inputs: { value: "value", disabled: "disabled" }, providers: [
27
+ { provide: ListboxChild, useExisting: forwardRef(() => OptionComponent) },
28
+ ], queries: [{ propertyName: "_primaryText", first: true, predicate: OptionPrimaryTextDirective, descendants: true }, { propertyName: "secondaryText", first: true, predicate: OptionSecondaryTextDirective, descendants: true }, { propertyName: "icon", first: true, predicate: OptionIconDirective, descendants: true }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `<span #content><ng-content></ng-content></span>`, isInline: true });
29
+ __decorate([
30
+ CoerceBoolean
31
+ ], OptionComponent.prototype, "disabled", void 0);
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: OptionComponent, decorators: [{
33
+ type: Component,
34
+ args: [{
35
+ template: `<span #content><ng-content></ng-content></span>`,
36
+ providers: [
37
+ { provide: ListboxChild, useExisting: forwardRef(() => OptionComponent) },
38
+ ],
39
+ selector: 'sp-option',
40
+ }]
41
+ }], propDecorators: { value: [{
42
+ type: Input
43
+ }], _primaryText: [{
44
+ type: ContentChild,
45
+ args: [OptionPrimaryTextDirective]
46
+ }], disabled: [{
47
+ type: Input
48
+ }], content: [{
49
+ type: ViewChild,
50
+ args: ['content', { read: ElementRef }]
51
+ }], secondaryText: [{
52
+ type: ContentChild,
53
+ args: [OptionSecondaryTextDirective]
54
+ }], icon: [{
55
+ type: ContentChild,
56
+ args: [OptionIconDirective]
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbGlzdGJveC9zcmMvb3B0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVMvQyxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxZQUFZO0lBUGpEOztRQVNFLFVBQUssR0FBVyxFQUFFLENBQUM7S0FrQ3BCO0lBeEJDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM1RCxDQUFDO0lBV0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxDQUNMLENBQ0UsSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUN6RSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQzdCLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFjLENBQUMsQ0FBQztJQUMvRCxDQUFDOzs0R0FuQ1UsZUFBZTtnR0FBZixlQUFlLHNGQUxmO1FBQ1QsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUU7S0FDMUUsb0VBT2EsMEJBQTBCLGdGQWUxQiw0QkFBNEIsdUVBRzVCLG1CQUFtQiwrSEFOSCxVQUFVLG9EQXRCOUIsaURBQWlEO0FBZ0IzRDtJQURDLGFBQWE7aURBQ1M7MkZBVlosZUFBZTtrQkFQM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaURBQWlEO29CQUMzRCxTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEVBQUU7cUJBQzFFO29CQUNELFFBQVEsRUFBRSxXQUFXO2lCQUN0Qjs4QkFHQyxLQUFLO3NCQURKLEtBQUs7Z0JBSUUsWUFBWTtzQkFEbkIsWUFBWTt1QkFBQywwQkFBMEI7Z0JBTXhDLFFBQVE7c0JBRlAsS0FBSztnQkFTTixPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJMUMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLDRCQUE0QjtnQkFJMUMsSUFBSTtzQkFESCxZQUFZO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9wdGlvblByaW1hcnlUZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi9vcHRpb24tcHJpbWFyeS10ZXh0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEb21Qb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IE9wdGlvblNlY29uZGFyeVRleHREaXJlY3RpdmUgfSBmcm9tICcuL29wdGlvbi1zZWNvbmRhcnktdGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3B0aW9uSWNvbkRpcmVjdGl2ZSB9IGZyb20gJy4vb3B0aW9uLWljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDb2VyY2VCb29sZWFuIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvZXJjZS1ib29sZWFuLmRlY29yYXRvcic7XG5pbXBvcnQgeyBMaXN0Ym94Q2hpbGQgfSBmcm9tICcuL2xpc3Rib3gtY2hpbGQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGA8c3BhbiAjY29udGVudD48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPmAsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTGlzdGJveENoaWxkLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcHRpb25Db21wb25lbnQpIH0sXG4gIF0sXG4gIHNlbGVjdG9yOiAnc3Atb3B0aW9uJyxcbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uQ29tcG9uZW50IGV4dGVuZHMgTGlzdGJveENoaWxkIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpXG4gIHZhbHVlOiBzdHJpbmcgPSAnJztcblxuICBAQ29udGVudENoaWxkKE9wdGlvblByaW1hcnlUZXh0RGlyZWN0aXZlKVxuICBwcml2YXRlIF9wcmltYXJ5VGV4dD86IE9wdGlvblByaW1hcnlUZXh0RGlyZWN0aXZlO1xuICBwcml2YXRlIGRvbVBvcnRhbD86IERvbVBvcnRhbDxIVE1MRWxlbWVudD47XG5cbiAgQElucHV0KClcbiAgQENvZXJjZUJvb2xlYW5cbiAgZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcblxuICBnZXQgcHJpbWFyeVRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaW1hcnlUZXh0Py5jb250ZW50UG9ydGFsIHx8IHRoaXMuZG9tUG9ydGFsO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBjb250ZW50PzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChPcHRpb25TZWNvbmRhcnlUZXh0RGlyZWN0aXZlKVxuICBzZWNvbmRhcnlUZXh0PzogT3B0aW9uU2Vjb25kYXJ5VGV4dERpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkKE9wdGlvbkljb25EaXJlY3RpdmUpXG4gIGljb24/OiBPcHRpb25JY29uRGlyZWN0aXZlO1xuXG4gIGdldCBsYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICAoXG4gICAgICAgIHRoaXMuX3ByaW1hcnlUZXh0Py5jb250ZW50UG9ydGFsPy5lbGVtZW50IHx8IHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudFxuICAgICAgKT8udGV4dENvbnRlbnQ/LnRyaW0oKSB8fCAnJ1xuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kb21Qb3J0YWwgPSBuZXcgRG9tUG9ydGFsKHRoaXMuY29udGVudD8ubmF0aXZlRWxlbWVudCEpO1xuICB9XG59XG4iXX0=