@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,20 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** Content will be displayed as label within the tab button */
4
+ export class SegmentedTabLabelDirective {
5
+ constructor() { }
6
+ }
7
+ SegmentedTabLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
8
+ SegmentedTabLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedTabLabelDirective, selector: "sp-segmented-tab-label", host: { properties: { "style.display": "\"flex\"", "style.align-items": "\"center\"" } }, ngImport: i0 });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabLabelDirective, decorators: [{
10
+ type: Directive,
11
+ args: [{
12
+ selector: 'sp-segmented-tab-label',
13
+ host: {
14
+ // Angular specific styles that are needed due to extra dom elements added by angular
15
+ '[style.display]': '"flex"',
16
+ '[style.align-items]': '"center"',
17
+ },
18
+ }]
19
+ }], ctorParameters: function () { return []; } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLXRhYi1sYWJlbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnRlZC10YWJzL3NyYy9zZWdtZW50ZWQtdGFiLWxhYmVsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVUxQywrREFBK0Q7QUFDL0QsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxnQkFBZSxDQUFDOzt1SEFETCwwQkFBMEI7MkdBQTFCLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQVR0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLElBQUksRUFBRTt3QkFDSixxRkFBcUY7d0JBQ3JGLGlCQUFpQixFQUFFLFFBQVE7d0JBQzNCLHFCQUFxQixFQUFFLFVBQVU7cUJBQ2xDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3NwLXNlZ21lbnRlZC10YWItbGFiZWwnLFxuICBob3N0OiB7XG4gICAgLy8gQW5ndWxhciBzcGVjaWZpYyBzdHlsZXMgdGhhdCBhcmUgbmVlZGVkIGR1ZSB0byBleHRyYSBkb20gZWxlbWVudHMgYWRkZWQgYnkgYW5ndWxhclxuICAgICdbc3R5bGUuZGlzcGxheV0nOiAnXCJmbGV4XCInLFxuICAgICdbc3R5bGUuYWxpZ24taXRlbXNdJzogJ1wiY2VudGVyXCInLFxuICB9LFxufSlcbi8qKiBDb250ZW50IHdpbGwgYmUgZGlzcGxheWVkIGFzIGxhYmVsIHdpdGhpbiB0aGUgdGFiIGJ1dHRvbiAqL1xuZXhwb3J0IGNsYXNzIFNlZ21lbnRlZFRhYkxhYmVsRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19
@@ -0,0 +1,69 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, forwardRef, Inject, Input, TemplateRef, ViewChild, } from '@angular/core';
3
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
+ import { AutoId } from '../../common/auto-id.decorator';
5
+ import { SegmentedTabsComponent } from './segmented-tabs.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../common/sapphire-view-encapsulation";
8
+ import * as i2 from "./segmented-tabs.component";
9
+ export class SegmentedTabComponent {
10
+ /** Whether the tab should be disabled */
11
+ get disabled() {
12
+ return Boolean(this.tabs.disabled) || this._disabled;
13
+ }
14
+ set disabled(value) {
15
+ this._disabled = coerceBooleanProperty(value);
16
+ }
17
+ constructor(tabs) {
18
+ this.tabs = tabs;
19
+ this._disabled = false;
20
+ /**
21
+ * auto generated id applied on the tab element
22
+ */
23
+ this.id = '';
24
+ this._contentTemplate = null;
25
+ }
26
+ select() {
27
+ if (this.disabled)
28
+ return;
29
+ this.tabs.selectTab(this);
30
+ }
31
+ /**
32
+ * Whether this tab is currently selected
33
+ */
34
+ isSelected() {
35
+ return this.tabs?.isSelected(this);
36
+ }
37
+ getTabIndex() {
38
+ return this.tabs.getFocusedTab() === this && !this.tabs.disabled
39
+ ? '0'
40
+ : '-1';
41
+ }
42
+ }
43
+ SegmentedTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabComponent, deps: [{ token: forwardRef(() => SegmentedTabsComponent) }], target: i0.ɵɵFactoryTarget.Component });
44
+ SegmentedTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedTabComponent, selector: "sp-segmented-tab", inputs: { disabled: "disabled", label: "label" }, host: { properties: { "style.flex": "'1 1 auto'", "style.display": "'inline-flex'" } }, viewQueries: [{ propertyName: "_contentTemplate", first: true, predicate: TemplateRef, descendants: true }, { propertyName: "_button", first: true, predicate: ["button"], descendants: true }], ngImport: i0, template: "<button\n #button\n class=\"sapphire-segmented-control__button\"\n _spUseComponentStyles\n [class.sapphire-segmented-control__button--disabled]=\"disabled\"\n [class.sapphire-segmented-control__button--active]=\"isSelected()\"\n role=\"tab\"\n (click)=\"select()\"\n [id]=\"id\"\n [tabIndex]=\"getTabIndex()\"\n [attr.aria-disabled]=\"disabled\"\n>\n {{ label }}\n <ng-content select=\"sp-segmented-tab-label\"></ng-content>\n</button>\n<ng-template>\n <div\n class=\"sapphire-tab-panel\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [id]=\"id + '-panel'\"\n [attr.aria-labelledby]=\"id\"\n >\n <ng-content select=\"sp-segmented-tab-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sapphire-tabs-scroll-container{-ms-overflow-style:none;scrollbar-width:none;overflow-x:scroll;overflow-y:hidden;white-space:nowrap;position:relative;scroll-padding:0 calc(2 * var(--sapphire-tabs-size-spacing-arrows-horizontal) + 1px);min-width:0;flex:1;overscroll-behavior-x:contain}.sapphire-tabs-scroll-container::-webkit-scrollbar{display:none}.sapphire-tabs-overflow-arrows{display:flex;align-items:center;min-width:0;flex:1;position:relative}.sapphire-tabs-overflow-arrows--inline{display:inline-flex}.sapphire-tabs-overflow-arrows__arrow{position:absolute;z-index:10;pointer-events:none}.sapphire-tabs-overflow-arrows__arrow--left{left:0;padding-right:var(--sapphire-tabs-size-spacing-arrows-horizontal);background:linear-gradient(90deg,var(--sapphire-tabs-color-gradient-opaque) 0%,var(--sapphire-tabs-color-gradient-opaque) 40%,var(--sapphire-tabs-color-gradient-transparent) 100%)}.sapphire-tabs-overflow-arrows__arrow--right{right:0;padding-left:var(--sapphire-tabs-size-spacing-arrows-horizontal);background:linear-gradient(90deg,var(--sapphire-tabs-color-gradient-transparent) 0%,var(--sapphire-tabs-color-gradient-opaque) 60%,var(--sapphire-tabs-color-gradient-opaque) 100%)}.sapphire-tabs{display:inline-flex;box-sizing:border-box;height:var(--sapphire-tabs-size-height-m);gap:var(--sapphire-tabs-size-gap-m);overflow:hidden;position:relative;min-width:100%;flex:1;padding:0 var(--sapphire-tabs-size-focus-ring-offset)}.sapphire-tabs:after{content:\"\";display:block;position:absolute;bottom:0;width:100%;height:var(--sapphire-tabs-size-border);background-color:var(--sapphire-tabs-color-border-default);border-radius:var(--sapphire-tabs-size-border)}.sapphire-tabs--no-border:after{display:none}.sapphire-tabs__tab{display:flex;align-items:center;position:relative;font-family:var(--sapphire-tabs-font-name);font-weight:var(--sapphire-tabs-font-weight);font-size:var(--sapphire-tabs-size-font-m);text-decoration:none;background:none;color:var(--sapphire-tabs-color-content-inactive-default);box-sizing:border-box;white-space:nowrap;border-width:0;padding:0;margin:var(--sapphire-tabs-size-focus-ring-offset) 0 var(--sapphire-tabs-size-focus-ring-offset) 0;cursor:pointer;outline:none;border-radius:var(--sapphire-tabs-size-focus-ring-radius);z-index:1}.sapphire-tabs__tab:not(:disabled):not(.is-disabled):not(:active):not(.is-active):not(.js-hover):hover,.sapphire-tabs__tab:not(:disabled):not(.is-disabled):not(:active):not(.is-active).is-hover{color:var(--sapphire-tabs-color-content-inactive-hover)}.sapphire-tabs__tab.js-focus.is-focus,.sapphire-tabs__tab:not(.js-focus):focus-visible{outline:var(--sapphire-tabs-size-focus-ring-border) solid var(--sapphire-tabs-color-focus-ring)}.sapphire-tabs__tab:disabled,.sapphire-tabs__tab.is-disabled{cursor:not-allowed}.sapphire-tabs__tab:disabled .sapphire-tabs__label,.sapphire-tabs__tab.is-disabled .sapphire-tabs__label{opacity:var(--sapphire-tabs-opacity-disabled)}.sapphire-tabs__label{padding:0 1px}.sapphire-tabs__tab--active{color:var(--sapphire-tabs-color-content-active-default)}.sapphire-tabs__tab--active.js-focus:not(.is-focus):after,.sapphire-tabs__tab--active:not(.js-focus):not(:focus-visible):after{content:\"\";display:block;position:absolute;bottom:calc(-1 * var(--sapphire-tabs-size-focus-ring-offset));width:100%;height:var(--sapphire-tabs-size-border);background-color:var(--sapphire-tabs-color-border-active);border-radius:var(--sapphire-tabs-size-border)}.sapphire-tabs--small{height:var(--sapphire-tabs-size-height-s);gap:var(--sapphire-tabs-size-gap-s)}.sapphire-tabs--small .sapphire-tabs__tab{font-size:var(--sapphire-tabs-size-font-s)}.sapphire-tabs--large{height:var(--sapphire-tabs-size-height-l);gap:var(--sapphire-tabs-size-gap-l)}.sapphire-tabs--large .sapphire-tabs__tab{font-size:var(--sapphire-tabs-size-font-l)}.sapphire-tab-panel{min-height:0;flex-grow:1}.sapphire-tab-panel.js-focus.is-focus,.sapphire-tab-panel:not(.js-focus):focus-visible{outline:var(--sapphire-tabs-size-focus-ring-border) solid var(--sapphire-tabs-color-focus-ring);outline-offset:var(--sapphire-tabs-size-focus-ring-offset)}\n"], dependencies: [{ kind: "directive", type: i1.UseComponentStyles, selector: "[_spUseComponentStyles]" }] });
45
+ __decorate([
46
+ AutoId()
47
+ ], SegmentedTabComponent.prototype, "id", void 0);
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabComponent, decorators: [{
49
+ type: Component,
50
+ args: [{ selector: 'sp-segmented-tab', host: {
51
+ // Angular specific styles that are needed due to extra dom elements added by angular
52
+ '[style.flex]': "'1 1 auto'",
53
+ '[style.display]': "'inline-flex'",
54
+ }, template: "<button\n #button\n class=\"sapphire-segmented-control__button\"\n _spUseComponentStyles\n [class.sapphire-segmented-control__button--disabled]=\"disabled\"\n [class.sapphire-segmented-control__button--active]=\"isSelected()\"\n role=\"tab\"\n (click)=\"select()\"\n [id]=\"id\"\n [tabIndex]=\"getTabIndex()\"\n [attr.aria-disabled]=\"disabled\"\n>\n {{ label }}\n <ng-content select=\"sp-segmented-tab-label\"></ng-content>\n</button>\n<ng-template>\n <div\n class=\"sapphire-tab-panel\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [id]=\"id + '-panel'\"\n [attr.aria-labelledby]=\"id\"\n >\n <ng-content select=\"sp-segmented-tab-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sapphire-tabs-scroll-container{-ms-overflow-style:none;scrollbar-width:none;overflow-x:scroll;overflow-y:hidden;white-space:nowrap;position:relative;scroll-padding:0 calc(2 * var(--sapphire-tabs-size-spacing-arrows-horizontal) + 1px);min-width:0;flex:1;overscroll-behavior-x:contain}.sapphire-tabs-scroll-container::-webkit-scrollbar{display:none}.sapphire-tabs-overflow-arrows{display:flex;align-items:center;min-width:0;flex:1;position:relative}.sapphire-tabs-overflow-arrows--inline{display:inline-flex}.sapphire-tabs-overflow-arrows__arrow{position:absolute;z-index:10;pointer-events:none}.sapphire-tabs-overflow-arrows__arrow--left{left:0;padding-right:var(--sapphire-tabs-size-spacing-arrows-horizontal);background:linear-gradient(90deg,var(--sapphire-tabs-color-gradient-opaque) 0%,var(--sapphire-tabs-color-gradient-opaque) 40%,var(--sapphire-tabs-color-gradient-transparent) 100%)}.sapphire-tabs-overflow-arrows__arrow--right{right:0;padding-left:var(--sapphire-tabs-size-spacing-arrows-horizontal);background:linear-gradient(90deg,var(--sapphire-tabs-color-gradient-transparent) 0%,var(--sapphire-tabs-color-gradient-opaque) 60%,var(--sapphire-tabs-color-gradient-opaque) 100%)}.sapphire-tabs{display:inline-flex;box-sizing:border-box;height:var(--sapphire-tabs-size-height-m);gap:var(--sapphire-tabs-size-gap-m);overflow:hidden;position:relative;min-width:100%;flex:1;padding:0 var(--sapphire-tabs-size-focus-ring-offset)}.sapphire-tabs:after{content:\"\";display:block;position:absolute;bottom:0;width:100%;height:var(--sapphire-tabs-size-border);background-color:var(--sapphire-tabs-color-border-default);border-radius:var(--sapphire-tabs-size-border)}.sapphire-tabs--no-border:after{display:none}.sapphire-tabs__tab{display:flex;align-items:center;position:relative;font-family:var(--sapphire-tabs-font-name);font-weight:var(--sapphire-tabs-font-weight);font-size:var(--sapphire-tabs-size-font-m);text-decoration:none;background:none;color:var(--sapphire-tabs-color-content-inactive-default);box-sizing:border-box;white-space:nowrap;border-width:0;padding:0;margin:var(--sapphire-tabs-size-focus-ring-offset) 0 var(--sapphire-tabs-size-focus-ring-offset) 0;cursor:pointer;outline:none;border-radius:var(--sapphire-tabs-size-focus-ring-radius);z-index:1}.sapphire-tabs__tab:not(:disabled):not(.is-disabled):not(:active):not(.is-active):not(.js-hover):hover,.sapphire-tabs__tab:not(:disabled):not(.is-disabled):not(:active):not(.is-active).is-hover{color:var(--sapphire-tabs-color-content-inactive-hover)}.sapphire-tabs__tab.js-focus.is-focus,.sapphire-tabs__tab:not(.js-focus):focus-visible{outline:var(--sapphire-tabs-size-focus-ring-border) solid var(--sapphire-tabs-color-focus-ring)}.sapphire-tabs__tab:disabled,.sapphire-tabs__tab.is-disabled{cursor:not-allowed}.sapphire-tabs__tab:disabled .sapphire-tabs__label,.sapphire-tabs__tab.is-disabled .sapphire-tabs__label{opacity:var(--sapphire-tabs-opacity-disabled)}.sapphire-tabs__label{padding:0 1px}.sapphire-tabs__tab--active{color:var(--sapphire-tabs-color-content-active-default)}.sapphire-tabs__tab--active.js-focus:not(.is-focus):after,.sapphire-tabs__tab--active:not(.js-focus):not(:focus-visible):after{content:\"\";display:block;position:absolute;bottom:calc(-1 * var(--sapphire-tabs-size-focus-ring-offset));width:100%;height:var(--sapphire-tabs-size-border);background-color:var(--sapphire-tabs-color-border-active);border-radius:var(--sapphire-tabs-size-border)}.sapphire-tabs--small{height:var(--sapphire-tabs-size-height-s);gap:var(--sapphire-tabs-size-gap-s)}.sapphire-tabs--small .sapphire-tabs__tab{font-size:var(--sapphire-tabs-size-font-s)}.sapphire-tabs--large{height:var(--sapphire-tabs-size-height-l);gap:var(--sapphire-tabs-size-gap-l)}.sapphire-tabs--large .sapphire-tabs__tab{font-size:var(--sapphire-tabs-size-font-l)}.sapphire-tab-panel{min-height:0;flex-grow:1}.sapphire-tab-panel.js-focus.is-focus,.sapphire-tab-panel:not(.js-focus):focus-visible{outline:var(--sapphire-tabs-size-focus-ring-border) solid var(--sapphire-tabs-color-focus-ring);outline-offset:var(--sapphire-tabs-size-focus-ring-offset)}\n"] }]
55
+ }], ctorParameters: function () { return [{ type: i2.SegmentedTabsComponent, decorators: [{
56
+ type: Inject,
57
+ args: [forwardRef(() => SegmentedTabsComponent)]
58
+ }] }]; }, propDecorators: { disabled: [{
59
+ type: Input
60
+ }], label: [{
61
+ type: Input
62
+ }], id: [], _contentTemplate: [{
63
+ type: ViewChild,
64
+ args: [TemplateRef]
65
+ }], _button: [{
66
+ type: ViewChild,
67
+ args: ['button']
68
+ }] } });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnRlZC10YWJzL3NyYy9zZWdtZW50ZWQtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VnbWVudGVkLXRhYnMvc3JjL3NlZ21lbnRlZC10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBWXBFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMseUNBQXlDO0lBQ3pDLElBQ0ksUUFBUTtRQUNWLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBbUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBa0JELFlBRVMsSUFBNEI7UUFBNUIsU0FBSSxHQUFKLElBQUksQ0FBd0I7UUFuQjdCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFLMUI7O1dBRUc7UUFFSCxPQUFFLEdBQUcsRUFBRSxDQUFDO1FBR1IscUJBQWdCLEdBQTRCLElBQUksQ0FBQztJQVE5QyxDQUFDO0lBRUosTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUM5RCxDQUFDLENBQUMsR0FBRztZQUNMLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDOztrSEEvQ1UscUJBQXFCLGtCQTJCdEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO3NHQTNCdkMscUJBQXFCLG9QQW9CckIsV0FBVyxvSUM1Q3hCLHdzQkEwQkE7QURnQkU7SUFEQyxNQUFNLEVBQUU7aURBQ0Q7MkZBbEJHLHFCQUFxQjtrQkFWakMsU0FBUzsrQkFDRSxrQkFBa0IsUUFHdEI7d0JBQ0oscUZBQXFGO3dCQUNyRixjQUFjLEVBQUUsWUFBWTt3QkFDNUIsaUJBQWlCLEVBQUUsZUFBZTtxQkFDbkM7OzBCQTZCRSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzs0Q0F4QjlDLFFBQVE7c0JBRFgsS0FBSztnQkFVTixLQUFLO3NCQURKLEtBQUs7Z0JBT04sRUFBRSxNQUdGLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLFdBQVc7Z0JBSXRCLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHsgQXV0b0lkIH0gZnJvbSAnLi4vLi4vY29tbW9uL2F1dG8taWQuZGVjb3JhdG9yJztcbmltcG9ydCB7IFNlZ21lbnRlZFRhYnNDb21wb25lbnQgfSBmcm9tICcuL3NlZ21lbnRlZC10YWJzLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwLXNlZ21lbnRlZC10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VnbWVudGVkLXRhYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlZ21lbnRlZC10YWIuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgIC8vIEFuZ3VsYXIgc3BlY2lmaWMgc3R5bGVzIHRoYXQgYXJlIG5lZWRlZCBkdWUgdG8gZXh0cmEgZG9tIGVsZW1lbnRzIGFkZGVkIGJ5IGFuZ3VsYXJcbiAgICAnW3N0eWxlLmZsZXhdJzogXCInMSAxIGF1dG8nXCIsXG4gICAgJ1tzdHlsZS5kaXNwbGF5XSc6IFwiJ2lubGluZS1mbGV4J1wiLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTZWdtZW50ZWRUYWJDb21wb25lbnQge1xuICAvKiogV2hldGhlciB0aGUgdGFiIHNob3VsZCBiZSBkaXNhYmxlZCAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy50YWJzLmRpc2FibGVkKSB8fCB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBhdXRvIGdlbmVyYXRlZCBpZCBhcHBsaWVkIG9uIHRoZSB0YWIgZWxlbWVudFxuICAgKi9cbiAgQEF1dG9JZCgpXG4gIGlkID0gJyc7XG5cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZilcbiAgX2NvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbicpXG4gIF9idXR0b24/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gU2VnbWVudGVkVGFic0NvbXBvbmVudCkpXG4gICAgcHVibGljIHRhYnM6IFNlZ21lbnRlZFRhYnNDb21wb25lbnRcbiAgKSB7fVxuXG4gIHNlbGVjdCgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMudGFicy5zZWxlY3RUYWIodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHRhYiBpcyBjdXJyZW50bHkgc2VsZWN0ZWRcbiAgICovXG4gIGlzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFicz8uaXNTZWxlY3RlZCh0aGlzKTtcbiAgfVxuXG4gIGdldFRhYkluZGV4KCkge1xuICAgIHJldHVybiB0aGlzLnRhYnMuZ2V0Rm9jdXNlZFRhYigpID09PSB0aGlzICYmICF0aGlzLnRhYnMuZGlzYWJsZWRcbiAgICAgID8gJzAnXG4gICAgICA6ICctMSc7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgI2J1dHRvblxuICBjbGFzcz1cInNhcHBoaXJlLXNlZ21lbnRlZC1jb250cm9sX19idXR0b25cIlxuICBfc3BVc2VDb21wb25lbnRTdHlsZXNcbiAgW2NsYXNzLnNhcHBoaXJlLXNlZ21lbnRlZC1jb250cm9sX19idXR0b24tLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLnNhcHBoaXJlLXNlZ21lbnRlZC1jb250cm9sX19idXR0b24tLWFjdGl2ZV09XCJpc1NlbGVjdGVkKClcIlxuICByb2xlPVwidGFiXCJcbiAgKGNsaWNrKT1cInNlbGVjdCgpXCJcbiAgW2lkXT1cImlkXCJcbiAgW3RhYkluZGV4XT1cImdldFRhYkluZGV4KClcIlxuICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbj5cbiAge3sgbGFiZWwgfX1cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic3Atc2VnbWVudGVkLXRhYi1sYWJlbFwiPjwvbmctY29udGVudD5cbjwvYnV0dG9uPlxuPG5nLXRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzYXBwaGlyZS10YWItcGFuZWxcIlxuICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBbaWRdPVwiaWQgKyAnLXBhbmVsJ1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNwLXNlZ21lbnRlZC10YWItY29udGVudFwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,215 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, ContentChildren, EventEmitter, forwardRef, Input, Output, QueryList, } from '@angular/core';
3
+ import { coerceNumberProperty, } from '@angular/cdk/coercion';
4
+ import { CoerceBoolean } from '../../common/coerce-boolean.decorator';
5
+ import { SegmentedTabComponent } from './segmented-tab.component';
6
+ import { ViewEncapsulationProvider } from '../../common/sapphire-view-encapsulation';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@angular/cdk/a11y";
10
+ export class SegmentedTabsComponent {
11
+ /** Index of the selected tab */
12
+ get selectedIndex() {
13
+ return this._selectedIndex || 0;
14
+ }
15
+ set selectedIndex(value) {
16
+ this._selectedIndex = coerceNumberProperty(value);
17
+ this._focusedIndex = this._selectedIndex;
18
+ }
19
+ constructor(host, zone, changeDetector) {
20
+ this.host = host;
21
+ this.zone = zone;
22
+ this.changeDetector = changeDetector;
23
+ /** Size of tabs */
24
+ this.size = 'medium';
25
+ /** Whether tabs are activated automatically on focus or manually. */
26
+ this.keyboardActivation = 'automatic';
27
+ this._focusedIndex = 0;
28
+ this.selectedIndexChange = new EventEmitter();
29
+ this.tabs = new QueryList();
30
+ this._tabIds = [];
31
+ this._activeTabPosition = { left: '0px', width: '0px' };
32
+ this._animationEnabled = false;
33
+ this._focusVisible = false;
34
+ this.skipAnimationFrame();
35
+ }
36
+ ngOnInit() {
37
+ this.resizeObserver = new ResizeObserver(() => {
38
+ // zonejs doesn't monkey-patch resize observer (yet)
39
+ this.zone.run(() => {
40
+ this.setActiveTabPosition();
41
+ });
42
+ });
43
+ this.resizeObserver.observe(this.host.nativeElement);
44
+ this.selectedIndexChange.subscribe(() => {
45
+ this.setActiveTabPosition();
46
+ });
47
+ }
48
+ ngAfterContentInit() {
49
+ this._tabIds = this.tabs.map((tab) => tab.id);
50
+ this.tabs.changes.subscribe(() => {
51
+ this.onTabsChange();
52
+ });
53
+ if (this._selectedIndex === undefined) {
54
+ this.selectedIndex = this.findFocusableIndex(0, 'right') || 0;
55
+ this.selectedIndexChange.emit(this.selectedIndex);
56
+ }
57
+ }
58
+ ngAfterViewInit() {
59
+ // The value of "_getTabContentTemplate", which is bound in the
60
+ // template, changes after the view has been checked. This
61
+ // "detectChanges()" avoids the "NG0100: Expression has
62
+ // changed after it was checked" angular error.
63
+ //
64
+ // https://angular.io/errors/NG0100
65
+ this.setActiveTabPosition();
66
+ this.changeDetector.detectChanges();
67
+ }
68
+ ngOnDestroy() {
69
+ this.resizeObserver?.unobserve(this.host.nativeElement);
70
+ this.selectedIndexChange.unsubscribe();
71
+ }
72
+ getFocusedTab() {
73
+ return this.tabs.toArray()[this._focusedIndex];
74
+ }
75
+ selectTab(selectedTab) {
76
+ this.selectedIndex = this.tabs
77
+ .toArray()
78
+ .findIndex((tab) => tab === selectedTab);
79
+ this.selectedIndexChange.emit(this.selectedIndex);
80
+ }
81
+ isSelected(tab) {
82
+ return this.tabs?.toArray().indexOf(tab) === this.selectedIndex;
83
+ }
84
+ _getTabContentTemplate() {
85
+ return this.tabs.toArray()[this.selectedIndex]?._contentTemplate || null;
86
+ }
87
+ _onFocusChange(origin) {
88
+ this._focusVisible = origin === 'keyboard';
89
+ if (!origin) {
90
+ this._focusedIndex = this.selectedIndex;
91
+ }
92
+ }
93
+ _onKeyDown(event) {
94
+ const focusNextValidTab = (targetIndex, direction) => {
95
+ if (this.tabs.toArray().every((tab) => tab.disabled))
96
+ return;
97
+ const index = this.findFocusableIndex(targetIndex, direction);
98
+ if (index === null)
99
+ return;
100
+ const button = this.tabs.toArray()[index]._button?.nativeElement;
101
+ if (!button)
102
+ return;
103
+ button.focus();
104
+ if (this.keyboardActivation === 'automatic') {
105
+ this.selectedIndex = index;
106
+ this.selectedIndexChange.emit(this.selectedIndex);
107
+ }
108
+ else {
109
+ this._focusedIndex = index;
110
+ }
111
+ };
112
+ switch (event.key) {
113
+ case 'ArrowLeft': {
114
+ event.stopPropagation();
115
+ focusNextValidTab(this._focusedIndex - 1, 'left');
116
+ break;
117
+ }
118
+ case 'ArrowRight': {
119
+ event.stopPropagation();
120
+ focusNextValidTab(this._focusedIndex + 1, 'right');
121
+ break;
122
+ }
123
+ case 'Home': {
124
+ event.stopPropagation();
125
+ event.preventDefault();
126
+ focusNextValidTab(0, 'right');
127
+ break;
128
+ }
129
+ case 'End': {
130
+ event.stopPropagation();
131
+ event.preventDefault();
132
+ focusNextValidTab(this.tabs.length - 1, 'left');
133
+ break;
134
+ }
135
+ default:
136
+ return;
137
+ }
138
+ }
139
+ setActiveTabPosition() {
140
+ const tab = this.tabs.toArray()[this.selectedIndex]?._button?.nativeElement;
141
+ this._activeTabPosition = {
142
+ left: `${tab?.offsetLeft || 0}px`,
143
+ width: `${tab?.clientWidth || 0}px`,
144
+ };
145
+ }
146
+ onTabsChange() {
147
+ // Ensure the current tab doesn't change if tabs change
148
+ // and tab with currently selected id still exists
149
+ const previousTabId = this._tabIds[this.selectedIndex];
150
+ this._tabIds = this.tabs.map((tab) => tab.id);
151
+ if (this._tabIds.includes(previousTabId)) {
152
+ this.selectedIndex = this._tabIds.findIndex((tabId) => tabId === previousTabId);
153
+ }
154
+ else {
155
+ const maxIndex = this.tabs.length - 1;
156
+ if (this.selectedIndex > maxIndex) {
157
+ this.selectedIndex = maxIndex;
158
+ this.selectedIndexChange.emit(this.selectedIndex);
159
+ }
160
+ }
161
+ this.skipAnimationFrame();
162
+ }
163
+ skipAnimationFrame() {
164
+ // We want to avoid animation on first render and whenever tab content changes
165
+ this._animationEnabled = false;
166
+ requestAnimationFrame(() => {
167
+ this._animationEnabled = true;
168
+ });
169
+ }
170
+ findFocusableIndex(index, direction) {
171
+ if (this.tabs.toArray().every((tab) => tab.disabled))
172
+ return null;
173
+ const constrainIndex = (index) => {
174
+ if (index >= this.tabs.length) {
175
+ return 0;
176
+ }
177
+ else if (index < 0) {
178
+ return this.tabs.length - 1;
179
+ }
180
+ else {
181
+ return index;
182
+ }
183
+ };
184
+ const constrainedIndex = constrainIndex(index);
185
+ if (this.tabs.toArray()[constrainedIndex].disabled) {
186
+ return this.findFocusableIndex(constrainedIndex + (direction === 'left' ? -1 : 1), direction);
187
+ }
188
+ else {
189
+ return constrainedIndex;
190
+ }
191
+ }
192
+ }
193
+ SegmentedTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabsComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
194
+ SegmentedTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedTabsComponent, selector: "sp-segmented-tabs", inputs: { size: "size", keyboardActivation: "keyboardActivation", disabled: "disabled", selectedIndex: "selectedIndex" }, outputs: { selectedIndexChange: "selectedIndexChange" }, providers: [ViewEncapsulationProvider], queries: [{ propertyName: "tabs", predicate: i0.forwardRef(function () { return SegmentedTabComponent; }) }], exportAs: ["spSegmentedTabs"], ngImport: i0, template: "<div\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--large]=\"size === 'large'\"\n [class.sapphire-segmented-control--small]=\"size === 'small'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_activeTabPosition.left\"\n [style.width]=\"_activeTabPosition.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{background-color:var(--sapphire-segmented-control-color-tray);border-radius:var(--sapphire-segmented-control-size-radius);padding:var(--sapphire-segmented-control-size-spacing-tray);display:inline-block;height:var(--sapphire-segmented-control-size-height-m);box-sizing:border-box}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;width:100%}.sapphire-segmented-control__glider{position:absolute;top:0;left:0;height:100%;display:block;background-color:var(--sapphire-segmented-control-color-glider);box-shadow:var(--sapphire-segmented-control-shadow-glider);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-segmented-control-time-transition) ease-in-out,left var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-segmented-control-font-name);font-weight:var(--sapphire-segmented-control-font-weight);font-size:var(--sapphire-segmented-control-size-font-m);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-segmented-control-size-min-width-tab);padding:0 var(--sapphire-segmented-control-size-spacing-tab-horizontal);background-color:transparent;color:var(--sapphire-segmented-control-color-content-inactive);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-segmented-control-color-content-active)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-segmented-control-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring);border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--large{height:var(--sapphire-segmented-control-size-height-l)}.sapphire-segmented-control--large .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-l)}.sapphire-segmented-control--small{height:var(--sapphire-segmented-control-size-height-s)}.sapphire-segmented-control--small .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-s)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}.sapphire-segmented-control{width:inherit;display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }] });
195
+ __decorate([
196
+ CoerceBoolean
197
+ ], SegmentedTabsComponent.prototype, "disabled", void 0);
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabsComponent, decorators: [{
199
+ type: Component,
200
+ args: [{ selector: 'sp-segmented-tabs', providers: [ViewEncapsulationProvider], exportAs: 'spSegmentedTabs', template: "<div\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--large]=\"size === 'large'\"\n [class.sapphire-segmented-control--small]=\"size === 'small'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_activeTabPosition.left\"\n [style.width]=\"_activeTabPosition.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{background-color:var(--sapphire-segmented-control-color-tray);border-radius:var(--sapphire-segmented-control-size-radius);padding:var(--sapphire-segmented-control-size-spacing-tray);display:inline-block;height:var(--sapphire-segmented-control-size-height-m);box-sizing:border-box}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;width:100%}.sapphire-segmented-control__glider{position:absolute;top:0;left:0;height:100%;display:block;background-color:var(--sapphire-segmented-control-color-glider);box-shadow:var(--sapphire-segmented-control-shadow-glider);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-segmented-control-time-transition) ease-in-out,left var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-segmented-control-font-name);font-weight:var(--sapphire-segmented-control-font-weight);font-size:var(--sapphire-segmented-control-size-font-m);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-segmented-control-size-min-width-tab);padding:0 var(--sapphire-segmented-control-size-spacing-tab-horizontal);background-color:transparent;color:var(--sapphire-segmented-control-color-content-inactive);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-segmented-control-time-transition) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-segmented-control-color-content-active)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-segmented-control-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-segmented-control-size-focus-ring) solid var(--sapphire-segmented-control-color-focus-ring);border-radius:var(--sapphire-segmented-control-size-radius)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--large{height:var(--sapphire-segmented-control-size-height-l)}.sapphire-segmented-control--large .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-l)}.sapphire-segmented-control--small{height:var(--sapphire-segmented-control-size-height-s)}.sapphire-segmented-control--small .sapphire-segmented-control__button{font-size:var(--sapphire-segmented-control-size-font-s)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}.sapphire-segmented-control{width:inherit;display:inline-block}\n"] }]
201
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { size: [{
202
+ type: Input
203
+ }], keyboardActivation: [{
204
+ type: Input
205
+ }], disabled: [{
206
+ type: Input
207
+ }], selectedIndex: [{
208
+ type: Input
209
+ }], selectedIndexChange: [{
210
+ type: Output
211
+ }], tabs: [{
212
+ type: ContentChildren,
213
+ args: [forwardRef(() => SegmentedTabComponent)]
214
+ }] } });
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50ZWQtdGFicy9zcmMvc2VnbWVudGVkLXRhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50ZWQtdGFicy9zcmMvc2VnbWVudGVkLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLG9CQUFvQixHQUVyQixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQVNyRixNQUFNLE9BQU8sc0JBQXNCO0lBZ0JqQyxnQ0FBZ0M7SUFDaEMsSUFDSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxhQUFhLENBQUMsS0FBa0I7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDM0MsQ0FBQztJQWdCRCxZQUNVLElBQWdCLEVBQ2hCLElBQVksRUFDWixjQUFpQztRQUZqQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUF4QzNDLG1CQUFt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UGxDLFNBQVM7K0JBQ0UsbUJBQW1CLGFBR2xCLENBQUMseUJBQXlCLENBQUMsWUFDNUIsaUJBQWlCO3NKQU8zQixJQUFJO3NCQURILEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQU1OLFFBQVE7c0JBRlAsS0FBSztnQkFNRixhQUFhO3NCQURoQixLQUFLO2dCQVdhLG1CQUFtQjtzQkFBckMsTUFBTTtnQkFJRSxJQUFJO3NCQURaLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCb29sZWFuSW5wdXQsXG4gIGNvZXJjZU51bWJlclByb3BlcnR5LFxuICBOdW1iZXJJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuXG5pbXBvcnQgeyBDb2VyY2VCb29sZWFuIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvZXJjZS1ib29sZWFuLmRlY29yYXRvcic7XG5pbXBvcnQgeyBTZWdtZW50ZWRUYWJDb21wb25lbnQgfSBmcm9tICcuL3NlZ21lbnRlZC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdFbmNhcHN1bGF0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9jb21tb24vc2FwcGhpcmUtdmlldy1lbmNhcHN1bGF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Atc2VnbWVudGVkLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VnbWVudGVkLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWdtZW50ZWQtdGFicy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtWaWV3RW5jYXBzdWxhdGlvblByb3ZpZGVyXSxcbiAgZXhwb3J0QXM6ICdzcFNlZ21lbnRlZFRhYnMnLFxufSlcbmV4cG9ydCBjbGFzcyBTZWdtZW50ZWRUYWJzQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqIFNpemUgb2YgdGFicyAqL1xuICBASW5wdXQoKVxuICBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnID0gJ21lZGl1bSc7XG5cbiAgLyoqIFdoZXRoZXIgdGFicyBhcmUgYWN0aXZhdGVkIGF1dG9tYXRpY2FsbHkgb24gZm9jdXMgb3IgbWFudWFsbHkuICovXG4gIEBJbnB1dCgpXG4gIGtleWJvYXJkQWN0aXZhdGlvbj86ICdtYW51YWwnIHwgJ2F1dG9tYXRpYycgPSAnYXV0b21hdGljJztcblxuICAvKiogV2hldGhlciB0aGUgZW50aXJlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQgKi9cbiAgQElucHV0KClcbiAgQENvZXJjZUJvb2xlYW5cbiAgZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcblxuICAvKiogSW5kZXggb2YgdGhlIHNlbGVjdGVkIHRhYiAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4IHx8IDA7XG4gIH1cbiAgc2V0IHNlbGVjdGVkSW5kZXgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICB9XG4gIHByaXZhdGUgX3NlbGVjdGVkSW5kZXg/OiBudW1iZXI7XG4gIHByaXZhdGUgX2ZvY3VzZWRJbmRleDogbnVtYmVyID0gMDtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBTZWdtZW50ZWRUYWJDb21wb25lbnQpKVxuICByZWFkb25seSB0YWJzOiBRdWVyeUxpc3Q8U2VnbWVudGVkVGFiQ29tcG9uZW50PiA9IG5ldyBRdWVyeUxpc3QoKTtcbiAgcHJpdmF0ZSBfdGFiSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgdW5kZWZpbmVkO1xuICBfYWN0aXZlVGFiUG9zaXRpb24gPSB7IGxlZnQ6ICcwcHgnLCB3aWR0aDogJzBweCcgfTtcbiAgX2FuaW1hdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgX2ZvY3VzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnNraXBBbmltYXRpb25GcmFtZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAvLyB6b25lanMgZG9lc24ndCBtb25rZXktcGF0Y2ggcmVzaXplIG9ic2VydmVyICh5ZXQpXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVUYWJQb3NpdGlvbigpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRBY3RpdmVUYWJQb3NpdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3RhYklkcyA9IHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmlkKTtcbiAgICB0aGlzLnRhYnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vblRhYnNDaGFuZ2UoKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmZpbmRGb2N1c2FibGVJbmRleCgwLCAncmlnaHQnKSB8fCAwO1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gVGhlIHZhbHVlIG9mIFwiX2dldFRhYkNvbnRlbnRUZW1wbGF0ZVwiLCB3aGljaCBpcyBib3VuZCBpbiB0aGVcbiAgICAvLyB0ZW1wbGF0ZSwgY2hhbmdlcyBhZnRlciB0aGUgdmlldyBoYXMgYmVlbiBjaGVja2VkLiBUaGlzXG4gICAgLy8gXCJkZXRlY3RDaGFuZ2VzKClcIiBhdm9pZHMgdGhlIFwiTkcwMTAwOiBFeHByZXNzaW9uIGhhc1xuICAgIC8vIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWRcIiBhbmd1bGFyIGVycm9yLlxuICAgIC8vXG4gICAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2Vycm9ycy9ORzAxMDBcbiAgICB0aGlzLnNldEFjdGl2ZVRhYlBvc2l0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy51bm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0Rm9jdXNlZFRhYigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLnRvQXJyYXkoKVt0aGlzLl9mb2N1c2VkSW5kZXhdO1xuICB9XG5cbiAgc2VsZWN0VGFiKHNlbGVjdGVkVGFiOiBTZWdtZW50ZWRUYWJDb21wb25lbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLnRhYnNcbiAgICAgIC50b0FycmF5KClcbiAgICAgIC5maW5kSW5kZXgoKHRhYikgPT4gdGFiID09PSBzZWxlY3RlZFRhYik7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQodGFiOiBTZWdtZW50ZWRUYWJDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJzPy50b0FycmF5KCkuaW5kZXhPZih0YWIpID09PSB0aGlzLnNlbGVjdGVkSW5kZXg7XG4gIH1cblxuICBfZ2V0VGFiQ29udGVudFRlbXBsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnRhYnMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF0/Ll9jb250ZW50VGVtcGxhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIF9vbkZvY3VzQ2hhbmdlKG9yaWdpbjogRm9jdXNPcmlnaW4pIHtcbiAgICB0aGlzLl9mb2N1c1Zpc2libGUgPSBvcmlnaW4gPT09ICdrZXlib2FyZCc7XG4gICAgaWYgKCFvcmlnaW4pIHtcbiAgICAgIHRoaXMuX2ZvY3VzZWRJbmRleCA9IHRoaXMuc2VsZWN0ZWRJbmRleDtcbiAgICB9XG4gIH1cblxuICBfb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgZm9jdXNOZXh0VmFsaWRUYWIgPSAoXG4gICAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgICAgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnXG4gICAgKSA9PiB7XG4gICAgICBpZiAodGhpcy50YWJzLnRvQXJyYXkoKS5ldmVyeSgodGFiKSA9PiB0YWIuZGlzYWJsZWQpKSByZXR1cm47XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZEZvY3VzYWJsZUluZGV4KHRhcmdldEluZGV4LCBkaXJlY3Rpb24pO1xuICAgICAgaWYgKGluZGV4ID09PSBudWxsKSByZXR1cm47XG4gICAgICBjb25zdCBidXR0b24gPSB0aGlzLnRhYnMudG9BcnJheSgpW2luZGV4XS5fYnV0dG9uPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKCFidXR0b24pIHJldHVybjtcbiAgICAgIGJ1dHRvbi5mb2N1cygpO1xuICAgICAgaWYgKHRoaXMua2V5Ym9hcmRBY3RpdmF0aW9uID09PSAnYXV0b21hdGljJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRJbmRleCA9IGluZGV4O1xuICAgICAgfVxuICAgIH07XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGZvY3VzTmV4dFZhbGlkVGFiKHRoaXMuX2ZvY3VzZWRJbmRleCAtIDEsICdsZWZ0Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGZvY3VzTmV4dFZhbGlkVGFiKHRoaXMuX2ZvY3VzZWRJbmRleCArIDEsICdyaWdodCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0hvbWUnOiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBmb2N1c05leHRWYWxpZFRhYigwLCAncmlnaHQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdFbmQnOiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBmb2N1c05leHRWYWxpZFRhYih0aGlzLnRhYnMubGVuZ3RoIC0gMSwgJ2xlZnQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVUYWJQb3NpdGlvbigpIHtcbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF0/Ll9idXR0b24/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fYWN0aXZlVGFiUG9zaXRpb24gPSB7XG4gICAgICBsZWZ0OiBgJHt0YWI/Lm9mZnNldExlZnQgfHwgMH1weGAsXG4gICAgICB3aWR0aDogYCR7dGFiPy5jbGllbnRXaWR0aCB8fCAwfXB4YCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvblRhYnNDaGFuZ2UoKSB7XG4gICAgLy8gRW5zdXJlIHRoZSBjdXJyZW50IHRhYiBkb2Vzbid0IGNoYW5nZSBpZiB0YWJzIGNoYW5nZVxuICAgIC8vIGFuZCB0YWIgd2l0aCBjdXJyZW50bHkgc2VsZWN0ZWQgaWQgc3RpbGwgZXhpc3RzXG4gICAgY29uc3QgcHJldmlvdXNUYWJJZCA9IHRoaXMuX3RhYklkc1t0aGlzLnNlbGVjdGVkSW5kZXhdO1xuICAgIHRoaXMuX3RhYklkcyA9IHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmlkKTtcbiAgICBpZiAodGhpcy5fdGFiSWRzLmluY2x1ZGVzKHByZXZpb3VzVGFiSWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLl90YWJJZHMuZmluZEluZGV4KFxuICAgICAgICAodGFiSWQpID0+IHRhYklkID09PSBwcmV2aW91c1RhYklkXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXhJbmRleCA9IHRoaXMudGFicy5sZW5ndGggLSAxO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+IG1heEluZGV4KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IG1heEluZGV4O1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNraXBBbmltYXRpb25GcmFtZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBza2lwQW5pbWF0aW9uRnJhbWUoKSB7XG4gICAgLy8gV2Ugd2FudCB0byBhdm9pZCBhbmltYXRpb24gb24gZmlyc3QgcmVuZGVyIGFuZCB3aGVuZXZlciB0YWIgY29udGVudCBjaGFuZ2VzXG4gICAgdGhpcy5fYW5pbWF0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLl9hbmltYXRpb25FbmFibGVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEZvY3VzYWJsZUluZGV4KFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLnRhYnMudG9BcnJheSgpLmV2ZXJ5KCh0YWIpID0+IHRhYi5kaXNhYmxlZCkpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGNvbnN0cmFpbkluZGV4ID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChpbmRleCA+PSB0aGlzLnRhYnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgY29uc3RyYWluZWRJbmRleCA9IGNvbnN0cmFpbkluZGV4KGluZGV4KTtcbiAgICBpZiAodGhpcy50YWJzLnRvQXJyYXkoKVtjb25zdHJhaW5lZEluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZEZvY3VzYWJsZUluZGV4KFxuICAgICAgICBjb25zdHJhaW5lZEluZGV4ICsgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnID8gLTEgOiAxKSxcbiAgICAgICAgZGlyZWN0aW9uXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29uc3RyYWluZWRJbmRleDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzYXBwaGlyZS1zZWdtZW50ZWQtY29udHJvbFwiXG4gIFtjbGFzcy5zYXBwaGlyZS1zZWdtZW50ZWQtY29udHJvbC0tbGFyZ2VdPVwic2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gIFtjbGFzcy5zYXBwaGlyZS1zZWdtZW50ZWQtY29udHJvbC0tc21hbGxdPVwic2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gIFtjbGFzcy5mb2N1cy12aXNpYmxlXT1cIl9mb2N1c1Zpc2libGVcIlxuICBbY2xhc3Muc2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2wtLW1hbnVhbC1rZXlib2FyZC1hY3RpdmF0aW9uXT1cIlxuICAgIGtleWJvYXJkQWN0aXZhdGlvbiA9PT0gJ21hbnVhbCdcbiAgXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2xfX2J1dHRvbi1jb250YWluZXJcIlxuICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICBhcmlhLW9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgY2RrTW9uaXRvclN1YnRyZWVGb2N1c1xuICAgIChjZGtGb2N1c0NoYW5nZSk9XCJfb25Gb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJfb25LZXlEb3duKCRldmVudClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic3Atc2VnbWVudGVkLXRhYlwiPjwvbmctY29udGVudD5cbiAgICA8c3BhblxuICAgICAgW3N0eWxlLmxlZnRdPVwiX2FjdGl2ZVRhYlBvc2l0aW9uLmxlZnRcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cIl9hY3RpdmVUYWJQb3NpdGlvbi53aWR0aFwiXG4gICAgICBbY2xhc3Muc2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2xfX2dsaWRlci0td2l0aC10cmFuc2l0aW9uXT1cIlxuICAgICAgICBfYW5pbWF0aW9uRW5hYmxlZFxuICAgICAgXCJcbiAgICAgIGNsYXNzPVwic2FwcGhpcmUtc2VnbWVudGVkLWNvbnRyb2xfX2dsaWRlclwiXG4gICAgICByb2xlPVwibm9uZVwiXG4gICAgPjwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfZ2V0VGFiQ29udGVudFRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { SegmentedTabsComponent } from './segmented-tabs.component';
4
+ import { SegmentedTabComponent } from './segmented-tab.component';
5
+ import { SegmentedTabLabelDirective } from './segmented-tab-label.directive';
6
+ import { SegmentedTabContentDirective } from './segmented-tab-content.directive';
7
+ import { A11yModule } from '@angular/cdk/a11y';
8
+ import { UseComponentStyles } from '../../common/sapphire-view-encapsulation';
9
+ import * as i0 from "@angular/core";
10
+ export class SapphireSegmentedTabsModule {
11
+ }
12
+ SapphireSegmentedTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireSegmentedTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ SapphireSegmentedTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: SapphireSegmentedTabsModule, declarations: [SegmentedTabsComponent,
14
+ SegmentedTabComponent,
15
+ SegmentedTabLabelDirective,
16
+ SegmentedTabContentDirective], imports: [CommonModule, A11yModule, UseComponentStyles], exports: [SegmentedTabsComponent,
17
+ SegmentedTabComponent,
18
+ SegmentedTabLabelDirective,
19
+ SegmentedTabContentDirective] });
20
+ SapphireSegmentedTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireSegmentedTabsModule, imports: [CommonModule, A11yModule] });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireSegmentedTabsModule, decorators: [{
22
+ type: NgModule,
23
+ args: [{
24
+ declarations: [
25
+ SegmentedTabsComponent,
26
+ SegmentedTabComponent,
27
+ SegmentedTabLabelDirective,
28
+ SegmentedTabContentDirective,
29
+ ],
30
+ imports: [CommonModule, A11yModule, UseComponentStyles],
31
+ exports: [
32
+ SegmentedTabsComponent,
33
+ SegmentedTabComponent,
34
+ SegmentedTabLabelDirective,
35
+ SegmentedTabContentDirective,
36
+ ],
37
+ }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLXRhYnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50ZWQtdGFicy9zcmMvc2VnbWVudGVkLXRhYnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFpQjlFLE1BQU0sT0FBTywyQkFBMkI7O3dIQUEzQiwyQkFBMkI7eUhBQTNCLDJCQUEyQixpQkFicEMsc0JBQXNCO1FBQ3RCLHFCQUFxQjtRQUNyQiwwQkFBMEI7UUFDMUIsNEJBQTRCLGFBRXBCLFlBQVksRUFBRSxVQUFVLEVBQUUsa0JBQWtCLGFBRXBELHNCQUFzQjtRQUN0QixxQkFBcUI7UUFDckIsMEJBQTBCO1FBQzFCLDRCQUE0Qjt5SEFHbkIsMkJBQTJCLFlBUjVCLFlBQVksRUFBRSxVQUFVOzJGQVF2QiwyQkFBMkI7a0JBZnZDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHNCQUFzQjt3QkFDdEIscUJBQXFCO3dCQUNyQiwwQkFBMEI7d0JBQzFCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQztvQkFDdkQsT0FBTyxFQUFFO3dCQUNQLHNCQUFzQjt3QkFDdEIscUJBQXFCO3dCQUNyQiwwQkFBMEI7d0JBQzFCLDRCQUE0QjtxQkFDN0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNlZ21lbnRlZFRhYnNDb21wb25lbnQgfSBmcm9tICcuL3NlZ21lbnRlZC10YWJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWdtZW50ZWRUYWJDb21wb25lbnQgfSBmcm9tICcuL3NlZ21lbnRlZC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNlZ21lbnRlZFRhYkxhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi9zZWdtZW50ZWQtdGFiLWxhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTZWdtZW50ZWRUYWJDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9zZWdtZW50ZWQtdGFiLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBVc2VDb21wb25lbnRTdHlsZXMgfSBmcm9tICcuLi8uLi9jb21tb24vc2FwcGhpcmUtdmlldy1lbmNhcHN1bGF0aW9uJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2VnbWVudGVkVGFic0NvbXBvbmVudCxcbiAgICBTZWdtZW50ZWRUYWJDb21wb25lbnQsXG4gICAgU2VnbWVudGVkVGFiTGFiZWxEaXJlY3RpdmUsXG4gICAgU2VnbWVudGVkVGFiQ29udGVudERpcmVjdGl2ZSxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQTExeU1vZHVsZSwgVXNlQ29tcG9uZW50U3R5bGVzXSxcbiAgZXhwb3J0czogW1xuICAgIFNlZ21lbnRlZFRhYnNDb21wb25lbnQsXG4gICAgU2VnbWVudGVkVGFiQ29tcG9uZW50LFxuICAgIFNlZ21lbnRlZFRhYkxhYmVsRGlyZWN0aXZlLFxuICAgIFNlZ21lbnRlZFRhYkNvbnRlbnREaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNhcHBoaXJlU2VnbWVudGVkVGFic01vZHVsZSB7fVxuIl19
@@ -0,0 +1,10 @@
1
+ // We have separate public_api.ts file for each angular module, to have them
2
+ // exposed as separate entry points. The build is still not emitting separate
3
+ // entry points, which will be addressed in this task:
4
+ // WCCJ-838
5
+ export { SelectComponent, MultiSelectDirective, SingleSelectDirective, } from './src/select/select.component';
6
+ export { SapphireSelectModule } from './src/select/select.module';
7
+ export { SelectionTextDirective } from './src/select/selection-text.directive';
8
+ export { SearchableSelectDirective } from './src/select/searchable-select.directive';
9
+ export { BasicSelectComponent, BasicSingleSelectDirective, } from './src/basic-select/basic-select.component';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VsZWN0L3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBQzVFLDZFQUE2RTtBQUM3RSxzREFBc0Q7QUFDdEQsV0FBVztBQUNYLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JGLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsMEJBQTBCLEdBQzNCLE1BQU0sMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXZSBoYXZlIHNlcGFyYXRlIHB1YmxpY19hcGkudHMgZmlsZSBmb3IgZWFjaCBhbmd1bGFyIG1vZHVsZSwgdG8gaGF2ZSB0aGVtXG4vLyBleHBvc2VkIGFzIHNlcGFyYXRlIGVudHJ5IHBvaW50cy4gVGhlIGJ1aWxkIGlzIHN0aWxsIG5vdCBlbWl0dGluZyBzZXBhcmF0ZVxuLy8gZW50cnkgcG9pbnRzLCB3aGljaCB3aWxsIGJlIGFkZHJlc3NlZCBpbiB0aGlzIHRhc2s6XG4vLyBXQ0NKLTgzOFxuZXhwb3J0IHtcbiAgU2VsZWN0Q29tcG9uZW50LFxuICBNdWx0aVNlbGVjdERpcmVjdGl2ZSxcbiAgU2luZ2xlU2VsZWN0RGlyZWN0aXZlLFxufSBmcm9tICcuL3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBTYXBwaGlyZVNlbGVjdE1vZHVsZSB9IGZyb20gJy4vc3JjL3NlbGVjdC9zZWxlY3QubW9kdWxlJztcbmV4cG9ydCB7IFNlbGVjdGlvblRleHREaXJlY3RpdmUgfSBmcm9tICcuL3NyYy9zZWxlY3Qvc2VsZWN0aW9uLXRleHQuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFNlYXJjaGFibGVTZWxlY3REaXJlY3RpdmUgfSBmcm9tICcuL3NyYy9zZWxlY3Qvc2VhcmNoYWJsZS1zZWxlY3QuZGlyZWN0aXZlJztcbmV4cG9ydCB7XG4gIEJhc2ljU2VsZWN0Q29tcG9uZW50LFxuICBCYXNpY1NpbmdsZVNlbGVjdERpcmVjdGl2ZSxcbn0gZnJvbSAnLi9zcmMvYmFzaWMtc2VsZWN0L2Jhc2ljLXNlbGVjdC5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,127 @@
1
+ import { Component, Directive, ElementRef, forwardRef, Input, ViewChild, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { ListboxComponent } from '../../../listbox/src/listbox.component';
4
+ import { SelectComponentBase } from '../common/select-component-base';
5
+ import { SelectValueHolder, SingleSelectDirectiveBase, } from '../common/select-value-holder';
6
+ import { ViewEncapsulationProvider } from '../../../common/sapphire-view-encapsulation';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../common/select-value-holder";
9
+ import * as i2 from "@angular/cdk/a11y";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "../../../icon/src/icon.component";
12
+ import * as i5 from "../../../listbox/src/listbox.component";
13
+ import * as i6 from "../../../popover/src/popover.component";
14
+ import * as i7 from "../../../popover/src/popover-trigger.directive";
15
+ import * as i8 from "../../../button/src/button.component";
16
+ import * as i9 from "../../../button/src/button-icon.directive";
17
+ import * as i10 from "../common/hidden-select.component";
18
+ /**
19
+ * NOTE: Support for multiple selection in basic select is removed, based on
20
+ * a UX decision. See commit message for more details.
21
+ */
22
+ export class BasicSingleSelectDirective extends SingleSelectDirectiveBase {
23
+ }
24
+ BasicSingleSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: BasicSingleSelectDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
25
+ BasicSingleSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: BasicSingleSelectDirective, selector: "sp-basic-select:not([multiple])", providers: [
26
+ {
27
+ provide: SelectValueHolder,
28
+ useExisting: forwardRef(() => BasicSingleSelectDirective),
29
+ },
30
+ ], usesInheritance: true, ngImport: i0 });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: BasicSingleSelectDirective, decorators: [{
32
+ type: Directive,
33
+ args: [{
34
+ selector: 'sp-basic-select:not([multiple])',
35
+ providers: [
36
+ {
37
+ provide: SelectValueHolder,
38
+ useExisting: forwardRef(() => BasicSingleSelectDirective),
39
+ },
40
+ ],
41
+ }]
42
+ }] });
43
+ /**
44
+ * Allows user to select a single option from a list, similar to native select
45
+ * component.
46
+ *
47
+ * Example:
48
+ * ```tsx
49
+ * <sp-basic-select
50
+ * placeholder="Select an option"
51
+ * size="small"
52
+ * variant="contained"
53
+ * >
54
+ * <sp-option value="option1">First Option</sp-option>
55
+ * <sp-option value="option2">Second Option</sp-option>
56
+ * <sp-option value="option3">Third Option</sp-option>
57
+ * </sp-basic-select>
58
+ * ```
59
+ */
60
+ export class BasicSelectComponent extends SelectComponentBase {
61
+ constructor(valueHolder, focusMonitor) {
62
+ super(valueHolder);
63
+ this.focusMonitor = focusMonitor;
64
+ /**
65
+ * Size of the button
66
+ */
67
+ this.size = 'medium';
68
+ this.variant = 'uncontained';
69
+ this.focused = false;
70
+ }
71
+ focus(focusOrigin = 'program') {
72
+ if (this.triggerElementRef) {
73
+ this.focusMonitor.focusVia(this.triggerElementRef.nativeElement, focusOrigin);
74
+ }
75
+ }
76
+ isFocused() {
77
+ return this.focused;
78
+ }
79
+ _onFocusChange(focusOrigin) {
80
+ this.focused = Boolean(focusOrigin);
81
+ }
82
+ }
83
+ BasicSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: BasicSelectComponent, deps: [{ token: i1.SelectValueHolder }, { token: i2.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
84
+ BasicSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: BasicSelectComponent, selector: "sp-basic-select", inputs: { size: "size", variant: "variant" }, host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null" } }, providers: [
85
+ {
86
+ provide: NG_VALUE_ACCESSOR,
87
+ useExisting: forwardRef(() => BasicSelectComponent),
88
+ multi: true,
89
+ },
90
+ {
91
+ provide: SelectComponentBase,
92
+ useExisting: forwardRef(() => BasicSelectComponent),
93
+ },
94
+ ViewEncapsulationProvider,
95
+ ], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerRef"], descendants: true }, { propertyName: "triggerElementRef", first: true, predicate: ["triggerElementRef"], descendants: true, read: ElementRef }, { propertyName: "listbox", first: true, predicate: ListboxComponent, descendants: true }], exportAs: ["spBasicSelect"], usesInheritance: true, ngImport: i0, template: "<div style=\"position: relative\">\n <sp-hidden-select></sp-hidden-select>\n <button\n sp-button\n [variant]=\"variant === 'primary' ? 'primary' : 'secondary'\"\n [appearance]=\"variant === 'uncontained' ? 'ghost' : 'fill'\"\n [size]=\"size\"\n iconAlign=\"right\"\n [spPopoverTriggerFor]=\"popover\"\n spPopoverPlacement=\"bottom start\"\n #triggerElementRef\n #triggerRef=\"spPopoverTrigger\"\n (keydown)=\"handleKeyDown($event)\"\n (spPopoverTriggerOpened)=\"_onOpen()\"\n (spPopoverTriggerClosed)=\"_onClose()\"\n cdkMonitorElementFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n aria-haspopup=\"listbox\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [disabled]=\"disabled\"\n >\n <span *ngIf=\"selectedOptions.length === 0\">\n {{ placeholder }}\n </span>\n <ng-container *ngIf=\"selectedOptions.length > 0\">\n <ng-container *ngIf=\"!selectionText\">{{\n getSelectionText()\n }}</ng-container>\n <ng-content select=\"sp-selection-text\"></ng-content>\n </ng-container>\n <sp-icon spButtonIcon name=\"chevronDown\"></sp-icon>\n </button>\n <ng-template #popover>\n <sp-popover noPadding>\n <sp-listbox\n [spListboxItems]=\"listboxChildren\"\n navigationWrapDisabled\n [multiple]=\"multiple\"\n [(selectedValues)]=\"listboxValue\"\n (selected)=\"_handleSelected()\"\n [size]=\"size\"\n >\n </sp-listbox>\n </sp-popover>\n </ng-template>\n</div>\n", styles: [".sapphire-select{position:relative;display:inline-block;color:var(--sapphire-select-color-content);width:var(--sapphire-select-size-width-control);font-family:var(--sapphire-select-font-name);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-select__button{display:flex;align-items:center;height:var(--sapphire-select-size-height-field-l);box-sizing:border-box;cursor:pointer;padding:0 var(--sapphire-select-size-spacing-control-horizontal-l);border:none;background-color:var(--sapphire-select-color-background-field);width:100%;outline:0;text-align:left;color:inherit;font-family:inherit;box-shadow:inset 0 0 0 1px var(--sapphire-select-color-border-field-default);border-radius:var(--sapphire-select-size-radius-field)}.sapphire-select--medium .sapphire-select__button{height:var(--sapphire-select-size-height-field-m);padding:0 var(--sapphire-select-size-spacing-control-horizontal-m)}.sapphire-select__value{flex:1 0 0;min-width:0;font-size:var(--sapphire-select-size-font-content-l);width:100%;font-weight:var(--sapphire-select-size-font-weight-item);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sapphire-select--medium .sapphire-select__value{font-size:var(--sapphire-select-size-font-content-m)}.sapphire-select__placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sapphire-select-color-placeholder)}.sapphire-select__icon-container{line-height:0;width:var(--sapphire-select-size-width-icon-l);height:var(--sapphire-select-size-height-icon-l)}.sapphire-select--medium .sapphire-select__icon-container{width:var(--sapphire-select-size-width-icon-m);height:var(--sapphire-select-size-height-icon-m)}.sapphire-select__search-input:not([data-hidden=true]){all:inherit}.sapphire-select__search-input::placeholder{color:var(--sapphire-select-color-placeholder)}.sapphire-select__native-select{position:absolute;inset:0;opacity:.01;width:100%;z-index:1}.sapphire-select--error:not(.is-disabled) .sapphire-select__button{box-shadow:inset 0 0 0 1px var(--sapphire-select-color-border-field-error)}.sapphire-select:not(.is-disabled).is-focus .sapphire-select__button{box-shadow:inset 0 0 0 var(--sapphire-select-size-focus-ring) var(--sapphire-select-color-focus-ring)}.sapphire-select--error:not(.is-disabled).is-focus .sapphire-select__button{box-shadow:inset 0 0 0 var(--sapphire-select-size-focus-ring) var(--sapphire-select-color-border-field-error)}.sapphire-select.is-disabled .sapphire-select__button{cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IconComponent, selector: "sp-icon", inputs: ["name", "size"] }, { kind: "component", type: i5.ListboxComponent, selector: "sp-listbox", inputs: ["selectedValues", "spListboxItems", "disabled", "multiple", "navigationWrapDisabled", "aria-label", "aria-labelledby", "size"], outputs: ["selectedValuesChange", "selected"], exportAs: ["spListbox"] }, { kind: "component", type: i6.PopoverComponent, selector: "sp-popover", inputs: ["noPadding", "noMaxWidth"] }, { kind: "directive", type: i7.PopoverTriggerDirective, selector: "[spPopoverTriggerFor]", inputs: ["spPopoverPlacement", "spPopoverTriggerFor", "spPopoverNonModal", "spPopoverTriggerOpenOnPressStart", "spPopoverTriggerCloseOnScroll", "spPopoverTriggerDisabled"], outputs: ["spPopoverTriggerOpened", "spPopoverTriggerClosed"], exportAs: ["spPopoverTrigger"] }, { kind: "directive", type: i2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "component", type: i8.ButtonComponent, selector: "button[sp-button], a[sp-button]", inputs: ["variant", "appearance", "surface", "size", "disabled", "iconAlign", "type"] }, { kind: "directive", type: i9.ButtonIconDirective, selector: "[spButtonIcon]" }, { kind: "component", type: i10.HiddenSelectComponent, selector: "sp-hidden-select" }] });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: BasicSelectComponent, decorators: [{
97
+ type: Component,
98
+ args: [{ selector: 'sp-basic-select', exportAs: 'spBasicSelect', providers: [
99
+ {
100
+ provide: NG_VALUE_ACCESSOR,
101
+ useExisting: forwardRef(() => BasicSelectComponent),
102
+ multi: true,
103
+ },
104
+ {
105
+ provide: SelectComponentBase,
106
+ useExisting: forwardRef(() => BasicSelectComponent),
107
+ },
108
+ ViewEncapsulationProvider,
109
+ ], host: {
110
+ '[attr.aria-label]': 'null',
111
+ '[attr.aria-labelledby]': 'null',
112
+ }, template: "<div style=\"position: relative\">\n <sp-hidden-select></sp-hidden-select>\n <button\n sp-button\n [variant]=\"variant === 'primary' ? 'primary' : 'secondary'\"\n [appearance]=\"variant === 'uncontained' ? 'ghost' : 'fill'\"\n [size]=\"size\"\n iconAlign=\"right\"\n [spPopoverTriggerFor]=\"popover\"\n spPopoverPlacement=\"bottom start\"\n #triggerElementRef\n #triggerRef=\"spPopoverTrigger\"\n (keydown)=\"handleKeyDown($event)\"\n (spPopoverTriggerOpened)=\"_onOpen()\"\n (spPopoverTriggerClosed)=\"_onClose()\"\n cdkMonitorElementFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n aria-haspopup=\"listbox\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [disabled]=\"disabled\"\n >\n <span *ngIf=\"selectedOptions.length === 0\">\n {{ placeholder }}\n </span>\n <ng-container *ngIf=\"selectedOptions.length > 0\">\n <ng-container *ngIf=\"!selectionText\">{{\n getSelectionText()\n }}</ng-container>\n <ng-content select=\"sp-selection-text\"></ng-content>\n </ng-container>\n <sp-icon spButtonIcon name=\"chevronDown\"></sp-icon>\n </button>\n <ng-template #popover>\n <sp-popover noPadding>\n <sp-listbox\n [spListboxItems]=\"listboxChildren\"\n navigationWrapDisabled\n [multiple]=\"multiple\"\n [(selectedValues)]=\"listboxValue\"\n (selected)=\"_handleSelected()\"\n [size]=\"size\"\n >\n </sp-listbox>\n </sp-popover>\n </ng-template>\n</div>\n", styles: [".sapphire-select{position:relative;display:inline-block;color:var(--sapphire-select-color-content);width:var(--sapphire-select-size-width-control);font-family:var(--sapphire-select-font-name);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-select__button{display:flex;align-items:center;height:var(--sapphire-select-size-height-field-l);box-sizing:border-box;cursor:pointer;padding:0 var(--sapphire-select-size-spacing-control-horizontal-l);border:none;background-color:var(--sapphire-select-color-background-field);width:100%;outline:0;text-align:left;color:inherit;font-family:inherit;box-shadow:inset 0 0 0 1px var(--sapphire-select-color-border-field-default);border-radius:var(--sapphire-select-size-radius-field)}.sapphire-select--medium .sapphire-select__button{height:var(--sapphire-select-size-height-field-m);padding:0 var(--sapphire-select-size-spacing-control-horizontal-m)}.sapphire-select__value{flex:1 0 0;min-width:0;font-size:var(--sapphire-select-size-font-content-l);width:100%;font-weight:var(--sapphire-select-size-font-weight-item);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sapphire-select--medium .sapphire-select__value{font-size:var(--sapphire-select-size-font-content-m)}.sapphire-select__placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sapphire-select-color-placeholder)}.sapphire-select__icon-container{line-height:0;width:var(--sapphire-select-size-width-icon-l);height:var(--sapphire-select-size-height-icon-l)}.sapphire-select--medium .sapphire-select__icon-container{width:var(--sapphire-select-size-width-icon-m);height:var(--sapphire-select-size-height-icon-m)}.sapphire-select__search-input:not([data-hidden=true]){all:inherit}.sapphire-select__search-input::placeholder{color:var(--sapphire-select-color-placeholder)}.sapphire-select__native-select{position:absolute;inset:0;opacity:.01;width:100%;z-index:1}.sapphire-select--error:not(.is-disabled) .sapphire-select__button{box-shadow:inset 0 0 0 1px var(--sapphire-select-color-border-field-error)}.sapphire-select:not(.is-disabled).is-focus .sapphire-select__button{box-shadow:inset 0 0 0 var(--sapphire-select-size-focus-ring) var(--sapphire-select-color-focus-ring)}.sapphire-select--error:not(.is-disabled).is-focus .sapphire-select__button{box-shadow:inset 0 0 0 var(--sapphire-select-size-focus-ring) var(--sapphire-select-color-border-field-error)}.sapphire-select.is-disabled .sapphire-select__button{cursor:not-allowed}\n"] }]
113
+ }], ctorParameters: function () { return [{ type: i1.SelectValueHolder }, { type: i2.FocusMonitor }]; }, propDecorators: { size: [{
114
+ type: Input
115
+ }], variant: [{
116
+ type: Input
117
+ }], triggerRef: [{
118
+ type: ViewChild,
119
+ args: ['triggerRef']
120
+ }], triggerElementRef: [{
121
+ type: ViewChild,
122
+ args: ['triggerElementRef', { read: ElementRef }]
123
+ }], listbox: [{
124
+ type: ViewChild,
125
+ args: [ListboxComponent]
126
+ }] } });
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VsZWN0L3NyYy9iYXNpYy1zZWxlY3QvYmFzaWMtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VsZWN0L3NyYy9iYXNpYy1zZWxlY3QvYmFzaWMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHlCQUF5QixHQUMxQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7Ozs7QUFFeEY7OztHQUdHO0FBVUgsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHlCQUF5Qjs7dUhBQTVELDBCQUEwQjsyR0FBMUIsMEJBQTBCLDBEQVAxQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO1NBQzFEO0tBQ0Y7MkZBRVUsMEJBQTBCO2tCQVR0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQ0FBaUM7b0JBQzNDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzt5QkFDMUQ7cUJBQ0Y7aUJBQ0Y7O0FBR0Q7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUF1QkgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQXFCM0QsWUFDRSxXQUE4QixFQUN0QixZQUEwQjtRQUVsQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFGWCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXRCcEM7O1dBRUc7UUFFSCxTQUFJLEdBQWlDLFFBQVEsQ0FBQztRQUc5QyxZQUFPLEdBQTRDLGFBQWEsQ0FBQztRQVd6RCxZQUFPLEdBQUcsS0FBSyxDQUFDO0lBT3hCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBMkIsU0FBUztRQUN4QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFDcEMsV0FBVyxDQUNaLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBd0I7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7aUhBM0NVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDZLQWpCcEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUNuRCxLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7U0FDcEQ7UUFDRCx5QkFBeUI7S0FDMUIsd05BbUJ1QyxVQUFVLHVEQUd2QyxnQkFBZ0Isb0dDekY3QixxaERBK0NBOzJGRDBCYSxvQkFBb0I7a0JBdEJoQyxTQUFTOytCQUNFLGlCQUFpQixZQUdqQixlQUFlLGFBQ2Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO3lCQUNwRDt3QkFDRCx5QkFBeUI7cUJBQzFCLFFBQ0s7d0JBQ0osbUJBQW1CLEVBQUUsTUFBTTt3QkFDM0Isd0JBQXdCLEVBQUUsTUFBTTtxQkFDakM7bUlBT0QsSUFBSTtzQkFESCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJSSxVQUFVO3NCQURuQixTQUFTO3VCQUFDLFlBQVk7Z0JBSWIsaUJBQWlCO3NCQUQxQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJMUMsT0FBTztzQkFEaEIsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vcG9wb3Zlci9zcmMvcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMaXN0Ym94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vbGlzdGJveC9zcmMvbGlzdGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9jb21tb24vc2VsZWN0LWNvbXBvbmVudC1iYXNlJztcbmltcG9ydCB7XG4gIFNlbGVjdFZhbHVlSG9sZGVyLFxuICBTaW5nbGVTZWxlY3REaXJlY3RpdmVCYXNlLFxufSBmcm9tICcuLi9jb21tb24vc2VsZWN0LXZhbHVlLWhvbGRlcic7XG5pbXBvcnQgeyBWaWV3RW5jYXBzdWxhdGlvblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3NhcHBoaXJlLXZpZXctZW5jYXBzdWxhdGlvbic7XG5cbi8qKlxuICogTk9URTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgc2VsZWN0aW9uIGluIGJhc2ljIHNlbGVjdCBpcyByZW1vdmVkLCBiYXNlZCBvblxuICogYSBVWCBkZWNpc2lvbi4gU2VlIGNvbW1pdCBtZXNzYWdlIGZvciBtb3JlIGRldGFpbHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3NwLWJhc2ljLXNlbGVjdDpub3QoW211bHRpcGxlXSknLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTZWxlY3RWYWx1ZUhvbGRlcixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJhc2ljU2luZ2xlU2VsZWN0RGlyZWN0aXZlKSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNpY1NpbmdsZVNlbGVjdERpcmVjdGl2ZSBleHRlbmRzIFNpbmdsZVNlbGVjdERpcmVjdGl2ZUJhc2Uge31cblxuLyoqXG4gKiBBbGxvd3MgdXNlciB0byBzZWxlY3QgYSBzaW5nbGUgb3B0aW9uIGZyb20gYSBsaXN0LCBzaW1pbGFyIHRvIG5hdGl2ZSBzZWxlY3RcbiAqIGNvbXBvbmVudC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHN4XG4gKiA8c3AtYmFzaWMtc2VsZWN0XG4gKiAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhbiBvcHRpb25cIlxuICogICAgc2l6ZT1cInNtYWxsXCJcbiAqICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICogPlxuICogICA8c3Atb3B0aW9uIHZhbHVlPVwib3B0aW9uMVwiPkZpcnN0IE9wdGlvbjwvc3Atb3B0aW9uPlxuICogICA8c3Atb3B0aW9uIHZhbHVlPVwib3B0aW9uMlwiPlNlY29uZCBPcHRpb248L3NwLW9wdGlvbj5cbiAqICAgPHNwLW9wdGlvbiB2YWx1ZT1cIm9wdGlvbjNcIj5UaGlyZCBPcHRpb248L3NwLW9wdGlvbj5cbiAqIDwvc3AtYmFzaWMtc2VsZWN0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwLWJhc2ljLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNpYy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYXNpYy1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdzcEJhc2ljU2VsZWN0JyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCYXNpY1NlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNlbGVjdENvbXBvbmVudEJhc2UsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCYXNpY1NlbGVjdENvbXBvbmVudCksXG4gICAgfSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblByb3ZpZGVyLFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ251bGwnLFxuICAgICdbYXR0ci5hcmlhLWxhYmVsbGVkYnldJzogJ251bGwnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBCYXNpY1NlbGVjdENvbXBvbmVudCBleHRlbmRzIFNlbGVjdENvbXBvbmVudEJhc2Uge1xuICAvKipcbiAgICogU2l6ZSBvZiB0aGUgYnV0dG9uXG4gICAqL1xuICBASW5wdXQoKVxuICBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnID0gJ21lZGl1bSc7XG5cbiAgQElucHV0KClcbiAgdmFyaWFudDogJ3ByaW1hcnknIHwgJ2NvbnRhaW5lZCcgfCAndW5jb250YWluZWQnID0gJ3VuY29udGFpbmVkJztcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyUmVmJylcbiAgcHJvdGVjdGVkIHRyaWdnZXJSZWY6IFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJFbGVtZW50UmVmJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByb3RlY3RlZCB0cmlnZ2VyRWxlbWVudFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKExpc3Rib3hDb21wb25lbnQpXG4gIHByb3RlY3RlZCBsaXN0Ym94OiBMaXN0Ym94Q29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgZm9jdXNlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHZhbHVlSG9sZGVyOiBTZWxlY3RWYWx1ZUhvbGRlcixcbiAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yXG4gICkge1xuICAgIHN1cGVyKHZhbHVlSG9sZGVyKTtcbiAgfVxuXG4gIGZvY3VzKGZvY3VzT3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJykge1xuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50UmVmKSB7XG4gICAgICB0aGlzLmZvY3VzTW9uaXRvci5mb2N1c1ZpYShcbiAgICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICBmb2N1c09yaWdpblxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpc0ZvY3VzZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZDtcbiAgfVxuXG4gIF9vbkZvY3VzQ2hhbmdlKGZvY3VzT3JpZ2luOiBGb2N1c09yaWdpbikge1xuICAgIHRoaXMuZm9jdXNlZCA9IEJvb2xlYW4oZm9jdXNPcmlnaW4pO1xuICB9XG59XG4iLCI8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XG4gIDxzcC1oaWRkZW4tc2VsZWN0Pjwvc3AtaGlkZGVuLXNlbGVjdD5cbiAgPGJ1dHRvblxuICAgIHNwLWJ1dHRvblxuICAgIFt2YXJpYW50XT1cInZhcmlhbnQgPT09ICdwcmltYXJ5JyA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCJcbiAgICBbYXBwZWFyYW5jZV09XCJ2YXJpYW50ID09PSAndW5jb250YWluZWQnID8gJ2dob3N0JyA6ICdmaWxsJ1wiXG4gICAgW3NpemVdPVwic2l6ZVwiXG4gICAgaWNvbkFsaWduPVwicmlnaHRcIlxuICAgIFtzcFBvcG92ZXJUcmlnZ2VyRm9yXT1cInBvcG92ZXJcIlxuICAgIHNwUG9wb3ZlclBsYWNlbWVudD1cImJvdHRvbSBzdGFydFwiXG4gICAgI3RyaWdnZXJFbGVtZW50UmVmXG4gICAgI3RyaWdnZXJSZWY9XCJzcFBvcG92ZXJUcmlnZ2VyXCJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICAgIChzcFBvcG92ZXJUcmlnZ2VyT3BlbmVkKT1cIl9vbk9wZW4oKVwiXG4gICAgKHNwUG9wb3ZlclRyaWdnZXJDbG9zZWQpPVwiX29uQ2xvc2UoKVwiXG4gICAgY2RrTW9uaXRvckVsZW1lbnRGb2N1c1xuICAgIChjZGtGb2N1c0NoYW5nZSk9XCJfb25Gb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgPlxuICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMFwiPlxuICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICA8L3NwYW4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGlvblRleHRcIj57e1xuICAgICAgICBnZXRTZWxlY3Rpb25UZXh0KClcbiAgICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzcC1zZWxlY3Rpb24tdGV4dFwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8c3AtaWNvbiBzcEJ1dHRvbkljb24gbmFtZT1cImNoZXZyb25Eb3duXCI+PC9zcC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPG5nLXRlbXBsYXRlICNwb3BvdmVyPlxuICAgIDxzcC1wb3BvdmVyIG5vUGFkZGluZz5cbiAgICAgIDxzcC1saXN0Ym94XG4gICAgICAgIFtzcExpc3Rib3hJdGVtc109XCJsaXN0Ym94Q2hpbGRyZW5cIlxuICAgICAgICBuYXZpZ2F0aW9uV3JhcERpc2FibGVkXG4gICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgIFsoc2VsZWN0ZWRWYWx1ZXMpXT1cImxpc3Rib3hWYWx1ZVwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJfaGFuZGxlU2VsZWN0ZWQoKVwiXG4gICAgICAgIFtzaXplXT1cInNpemVcIlxuICAgICAgPlxuICAgICAgPC9zcC1saXN0Ym94PlxuICAgIDwvc3AtcG9wb3Zlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19