@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,264 @@
1
+ import { __decorate } from "tslib";
2
+ import { Attribute, ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostBinding, Input, Output, ViewChild, } from '@angular/core';
3
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
+ import { mixinTabIndex } from '../../common/tabindex';
6
+ import { mixinDisabled } from '../../common/disabled';
7
+ import { ThemeCheckDirective } from '../../theme/src/theme-check.directive';
8
+ import { CoerceBoolean } from '../../common/coerce-boolean.decorator';
9
+ import { AutoId } from '../../common/auto-id.decorator';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../../theme/src/theme-check.directive";
12
+ import * as i2 from "@angular/common";
13
+ /** Change event object emitted by checkbox. */
14
+ export class CheckboxChange {
15
+ constructor(
16
+ /** The new `selected` value of the checkbox. */
17
+ selected,
18
+ /** The source checkbox of the event. */
19
+ source) {
20
+ this.selected = selected;
21
+ this.source = source;
22
+ }
23
+ }
24
+ const _CheckboxMixinBase = mixinTabIndex(mixinDisabled(class {
25
+ constructor(_elementRef) {
26
+ this._elementRef = _elementRef;
27
+ }
28
+ }));
29
+ export class CheckboxComponent extends _CheckboxMixinBase {
30
+ /** Returns the unique id for the visual hidden input. */
31
+ get _inputId() {
32
+ return `${this.id}-input`;
33
+ }
34
+ constructor(elementRef, changeDetectorRef, tabIndex) {
35
+ super(elementRef);
36
+ this.changeDetectorRef = changeDetectorRef;
37
+ /**
38
+ * Attached to the aria-label attribute of the host element. In most cases,
39
+ * aria-labelledby will take precedence so this may be omitted.
40
+ */
41
+ this.ariaLabel = '';
42
+ /**
43
+ * Users can specify the `aria-labelledby` attribute which will be forwarded
44
+ * to the input element
45
+ */
46
+ this.ariaLabelledby = null;
47
+ /** The 'aria-describedby' attribute is read after the element's label and field type. */
48
+ this.ariaDescribedby = '';
49
+ /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */
50
+ this.id = '';
51
+ /** Whether the checkbox is required. */
52
+ this.required = false;
53
+ /**
54
+ * Whether the checkbox is readonly.
55
+ */
56
+ this.readonly = false;
57
+ /** Name value will be applied to the input element if present */
58
+ this.name = null;
59
+ this.size = 'large';
60
+ /** Event emitted when the checkbox's `selected` value changes. */
61
+ this.change = new EventEmitter();
62
+ /**
63
+ * Called when the checkbox is blurred. Needed to properly implement
64
+ * ControlValueAccessor.
65
+ * @docs-private
66
+ */
67
+ this.onTouched = () => { };
68
+ this.controlValueAccessorChangeFn = () => { };
69
+ this._selected = false;
70
+ this._disabled = false;
71
+ this._indeterminate = false;
72
+ this.tabIndex = parseInt(tabIndex) || 0;
73
+ }
74
+ ngAfterViewInit() {
75
+ this.syncIndeterminate(this._indeterminate);
76
+ }
77
+ /** Whether the checkbox is selected. */
78
+ get selected() {
79
+ return this._selected;
80
+ }
81
+ set selected(value) {
82
+ const selected = coerceBooleanProperty(value);
83
+ if (selected != this.selected) {
84
+ this._selected = selected;
85
+ this.changeDetectorRef.markForCheck();
86
+ }
87
+ }
88
+ /**
89
+ * Whether the checkbox is disabled. This fully overrides the implementation
90
+ * provided by mixinDisabled, but the mixin is still required because
91
+ * mixinTabIndex requires it.
92
+ */
93
+ get disabled() {
94
+ return this._disabled;
95
+ }
96
+ set disabled(value) {
97
+ const newValue = coerceBooleanProperty(value);
98
+ if (newValue !== this.disabled) {
99
+ this._disabled = newValue;
100
+ this.changeDetectorRef.markForCheck();
101
+ }
102
+ }
103
+ /**
104
+ * Whether the checkbox is indeterminate. This is also known as "mixed" mode
105
+ * and can be used to represent a checkbox with three states, e.g. a checkbox
106
+ * that represents a nested list of checkable items.
107
+ */
108
+ get indeterminate() {
109
+ return this._indeterminate;
110
+ }
111
+ set indeterminate(value) {
112
+ this._indeterminate = coerceBooleanProperty(value);
113
+ this.syncIndeterminate(this._indeterminate);
114
+ }
115
+ // Implemented as part of ControlValueAccessor.
116
+ writeValue(value) {
117
+ this.selected = !!value;
118
+ }
119
+ // Implemented as part of ControlValueAccessor.
120
+ registerOnChange(fn) {
121
+ this.controlValueAccessorChangeFn = fn;
122
+ }
123
+ // Implemented as part of ControlValueAccessor.
124
+ registerOnTouched(fn) {
125
+ this.onTouched = fn;
126
+ }
127
+ // Implemented as part of ControlValueAccessor.
128
+ setDisabledState(disabled) {
129
+ this.disabled = disabled;
130
+ }
131
+ /** Toggles the `selected` state of the checkbox. */
132
+ toggle() {
133
+ this.selected = !this.selected;
134
+ this.controlValueAccessorChangeFn(this.selected);
135
+ }
136
+ focus() {
137
+ this._inputElement.nativeElement.focus();
138
+ }
139
+ _getAriaChecked() {
140
+ if (this.selected) {
141
+ return 'true';
142
+ }
143
+ return this.indeterminate ? 'mixed' : 'false';
144
+ }
145
+ _onInputClick($event) {
146
+ $event.stopPropagation();
147
+ if (!this.disabled && !this.readonly && !this.indeterminate) {
148
+ this._selected = !this._selected;
149
+ // Emit our custom change event if the native input emitted one.
150
+ // It is important to only emit it, if the native input triggered one, because
151
+ // we don't want to trigger a change event, when the `checked` variable changes for example.
152
+ this.emitChangeEvent();
153
+ }
154
+ }
155
+ _onInteractionEvent(event) {
156
+ // We always have to stop propagation on the change event.
157
+ // Otherwise, the change event, from the input element, will bubble up and
158
+ // emit its event object to the `change` output.
159
+ event.stopPropagation();
160
+ }
161
+ _onBlur() {
162
+ // When a focused element becomes disabled, the browser *immediately* fires a blur event.
163
+ // Angular does not expect events to be raised during change detection, so any state change
164
+ // (such as a form control's 'ng-touched') will cause a changed-after-checked error.
165
+ // See https://github.com/angular/angular/issues/17793. To work around this, we defer
166
+ // telling the form control it has been touched until the next tick.
167
+ Promise.resolve().then(() => {
168
+ this.onTouched();
169
+ this.changeDetectorRef.markForCheck();
170
+ });
171
+ }
172
+ emitChangeEvent() {
173
+ this.controlValueAccessorChangeFn(this.selected);
174
+ this.change.emit(new CheckboxChange(this.selected, this));
175
+ // Assigning the value again here is redundant, but we have to do it in case it was
176
+ // changed inside the `change` listener which will cause the input to be out of sync.
177
+ if (this._inputElement) {
178
+ this._inputElement.nativeElement.checked = this.selected;
179
+ }
180
+ }
181
+ /**
182
+ * Syncs the indeterminate value with the checkbox DOM node.
183
+ *
184
+ * We sync `indeterminate` directly on the DOM node, because in Ivy the check
185
+ * for whether a property is supported on an element boils down to `if
186
+ * (propName in element)`. Domino's HTMLInputElement doesn't have an
187
+ * `indeterminate` property so Ivy will warn during server-side rendering.
188
+ */
189
+ syncIndeterminate(value) {
190
+ const nativeCheckbox = this._inputElement;
191
+ if (nativeCheckbox) {
192
+ nativeCheckbox.nativeElement.indeterminate = value;
193
+ }
194
+ }
195
+ }
196
+ CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: CheckboxComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component });
197
+ CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: CheckboxComponent, selector: "sp-checkbox", inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], id: "id", required: "required", readonly: "readonly", name: "name", size: "size", value: "value", selected: "selected", disabled: "disabled", indeterminate: "indeterminate" }, outputs: { change: "change" }, host: { properties: { "attr.tabindex": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "id": "this.id" } }, providers: [
198
+ {
199
+ provide: NG_VALUE_ACCESSOR,
200
+ useExisting: forwardRef(() => CheckboxComponent),
201
+ multi: true,
202
+ },
203
+ ], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["spCheckbox"], usesInheritance: true, hostDirectives: [{ directive: i1.ThemeCheckDirective }], ngImport: i0, template: "<label\n [for]=\"_inputId\"\n class=\"sapphire-checkbox\"\n [class.sapphire-checkbox--checked]=\"selected\"\n [class.sapphire-checkbox--indeterminate]=\"indeterminate\"\n [class.sapphire-checkbox--medium]=\"size === 'medium'\"\n>\n <input\n #input\n type=\"checkbox\"\n class=\"sapphire-checkbox__input\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"selected\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [id]=\"_inputId\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (blur)=\"_onBlur()\"\n (click)=\"_onInputClick($event)\"\n (change)=\"_onInteractionEvent($event)\"\n />\n <span class=\"sapphire-checkbox__box\">\n <svg\n *ngIf=\"indeterminate\"\n class=\"sapphire-checkbox__box-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"square\"\n d=\"M7 12h10\"\n />\n <path fill=\"currentColor\" fill-rule=\"nonzero\" d=\"M18 11v2H6v-2z\" />\n </g>\n </svg>\n <svg\n *ngIf=\"selected && !indeterminate\"\n class=\"sapphire-checkbox__box-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M17.782 6.918l.753.659a.5.5 0 01.047.705L10.9 17.061a.5.5 0 01-.73.024l-4.232-4.231a.5.5 0 010-.708l.707-.707a.5.5 0 01.708 0l3.097 3.097 6.626-7.57a.5.5 0 01.705-.048z\"\n fill=\"currentColor\"\n fill-rule=\"nonzero\"\n />\n </svg>\n </span>\n <span class=\"sapphire-checkbox__label\"><ng-content></ng-content></span>\n</label>\n", styles: [".sapphire-checkbox{font-family:var(--sapphire-checkbox-font-label-name);display:inline-flex;position:relative;max-width:100%}.sapphire-checkbox__input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-checkbox__label{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-left:var(--sapphire-checkbox-size-spacing-label);font-size:var(--sapphire-checkbox-size-font-content-l);color:var(--sapphire-checkbox-color-label);line-height:var(--sapphire-checkbox-size-height-label-l)}.sapphire-checkbox__label:empty{margin-left:0}.sapphire-checkbox--medium .sapphire-checkbox__label{font-size:var(--sapphire-checkbox-size-font-content-m);line-height:var(--sapphire-checkbox-size-height-label-m)}.sapphire-checkbox__error-text{display:block;font-family:var(--sapphire-checkbox-font-error-text-name);font-weight:var(--sapphire-checkbox-font-error-text-weight);font-size:var(--sapphire-checkbox-size-font-error-text-l);line-height:var(--sapphire-checkbox-size-line-height-error-text-l);color:var(--sapphire-checkbox-color-error-text);margin-top:var(--sapphire-checkbox-size-spacing-error-text-vertical);margin-left:calc(var(--sapphire-checkbox-size-spacing-label) + var(--sapphire-checkbox-size-width-box-l))}.sapphire-checkbox__error-text--medium{font-size:var(--sapphire-checkbox-size-font-error-text-m);line-height:var(--sapphire-checkbox-size-line-height-error-text-m);margin-left:calc(var(--sapphire-checkbox-size-spacing-label) + var(--sapphire-checkbox-size-width-box-m))}.sapphire-checkbox__box{box-sizing:border-box;position:relative;width:var(--sapphire-checkbox-size-width-box-l);height:var(--sapphire-checkbox-size-height-box-l);border-radius:var(--sapphire-checkbox-size-radius);border:var(--sapphire-checkbox-size-width-border-unchecked) solid var(--sapphire-checkbox-color-border-unchecked-default);background-color:var(--sapphire-checkbox-color-background-unchecked);transition:all var(--sapphire-checkbox-time-transition);flex-shrink:0;display:inline-flex;justify-content:center;align-items:center}.sapphire-checkbox__box:has(~ .sapphire-checkbox__label:not(:empty)){margin-top:var(--sapphire-checkbox-size-spacing-box)}.sapphire-checkbox--medium .sapphire-checkbox__box{width:var(--sapphire-checkbox-size-width-box-m);height:var(--sapphire-checkbox-size-height-box-m)}.sapphire-checkbox__box-icon{display:inherit;line-height:0;color:var(--sapphire-checkbox-color-icon);margin:calc(var(--sapphire-checkbox-size-width-border-unchecked) * -1);height:var(--sapphire-checkbox-size-height-box-l);width:var(--sapphire-checkbox-size-width-box-l)}.sapphire-checkbox--medium .sapphire-checkbox__box-icon{height:var(--sapphire-checkbox-size-height-box-m);width:var(--sapphire-checkbox-size-width-box-m)}.sapphire-checkbox--error .sapphire-checkbox__box{border-color:var(--sapphire-checkbox-color-border-unchecked-error-default)}.sapphire-checkbox--checked .sapphire-checkbox__box,.sapphire-checkbox--indeterminate .sapphire-checkbox__box{border-width:var(--sapphire-checkbox-size-width-border-checked);background-color:var(--sapphire-checkbox-color-background-checked-default)}.sapphire-checkbox--checked.sapphire-checkbox--error .sapphire-checkbox__box,.sapphire-checkbox--indeterminate.sapphire-checkbox--error .sapphire-checkbox__box{background-color:var(--sapphire-checkbox-color-background-checked-error-default)}.sapphire-checkbox:not(:active):not(.is-active):not(.sapphire-checkbox--checked).is-hover .sapphire-checkbox__box,.sapphire-checkbox:not(:active):not(.is-active):not(.sapphire-checkbox--checked):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box{border-color:var(--sapphire-checkbox-color-border-unchecked-hover)}.sapphire-checkbox--error:not(:active):not(.is-active):not(.sapphire-checkbox--checked).is-hover .sapphire-checkbox__box,.sapphire-checkbox--error:not(:active):not(.is-active):not(.sapphire-checkbox--checked):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box{border-color:var(--sapphire-checkbox-color-border-unchecked-error-hover)}.sapphire-checkbox--checked:not(:active):not(.is-active).is-hover .sapphire-checkbox__box,.sapphire-checkbox--checked:not(:active):not(.is-active):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box,.sapphire-checkbox--indeterminate:not(:active):not(.is-active).is-hover .sapphire-checkbox__box,.sapphire-checkbox--indeterminate:not(:active):not(.is-active):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box{background-color:var(--sapphire-checkbox-color-background-checked-hover)}.sapphire-checkbox--checked.sapphire-checkbox--error:not(:active):not(.is-active).is-hover .sapphire-checkbox__box,.sapphire-checkbox--checked.sapphire-checkbox--error:not(:active):not(.is-active):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box,.sapphire-checkbox--indeterminate.sapphire-checkbox--error:not(:active):not(.is-active).is-hover .sapphire-checkbox__box,.sapphire-checkbox--indeterminate.sapphire-checkbox--error:not(:active):not(.is-active):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box{background-color:var(--sapphire-checkbox-color-background-checked-error-hover)}.sapphire-checkbox.is-focus .sapphire-checkbox__box,.sapphire-checkbox:not(.js-focus) .sapphire-checkbox__input:focus-visible~.sapphire-checkbox__box{outline:var(--sapphire-checkbox-size-focus-ring-border) solid var(--sapphire-checkbox-color-focus-ring);outline-offset:var(--sapphire-checkbox-size-focus-ring-offset)}.sapphire-checkbox__input:disabled{cursor:not-allowed}.sapphire-checkbox:not(.sapphire-checkbox--no-disabled) .sapphire-checkbox__input:disabled~.sapphire-checkbox__box,.sapphire-checkbox:not(.sapphire-checkbox--no-disabled) .sapphire-checkbox__input:disabled~.sapphire-checkbox__label{opacity:var(--sapphire-checkbox-opacity-disabled)}:host{display:inline-flex}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
204
+ __decorate([
205
+ AutoId()
206
+ ], CheckboxComponent.prototype, "id", void 0);
207
+ __decorate([
208
+ CoerceBoolean
209
+ ], CheckboxComponent.prototype, "required", void 0);
210
+ __decorate([
211
+ CoerceBoolean
212
+ ], CheckboxComponent.prototype, "readonly", void 0);
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: CheckboxComponent, decorators: [{
214
+ type: Component,
215
+ args: [{ selector: 'sp-checkbox', exportAs: 'spCheckbox', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
216
+ {
217
+ provide: NG_VALUE_ACCESSOR,
218
+ useExisting: forwardRef(() => CheckboxComponent),
219
+ multi: true,
220
+ },
221
+ ], host: {
222
+ '[attr.tabindex]': 'null',
223
+ '[attr.aria-label]': 'null',
224
+ '[attr.aria-labelledby]': 'null',
225
+ }, hostDirectives: [ThemeCheckDirective], template: "<label\n [for]=\"_inputId\"\n class=\"sapphire-checkbox\"\n [class.sapphire-checkbox--checked]=\"selected\"\n [class.sapphire-checkbox--indeterminate]=\"indeterminate\"\n [class.sapphire-checkbox--medium]=\"size === 'medium'\"\n>\n <input\n #input\n type=\"checkbox\"\n class=\"sapphire-checkbox__input\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"selected\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [id]=\"_inputId\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (blur)=\"_onBlur()\"\n (click)=\"_onInputClick($event)\"\n (change)=\"_onInteractionEvent($event)\"\n />\n <span class=\"sapphire-checkbox__box\">\n <svg\n *ngIf=\"indeterminate\"\n class=\"sapphire-checkbox__box-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"square\"\n d=\"M7 12h10\"\n />\n <path fill=\"currentColor\" fill-rule=\"nonzero\" d=\"M18 11v2H6v-2z\" />\n </g>\n </svg>\n <svg\n *ngIf=\"selected && !indeterminate\"\n class=\"sapphire-checkbox__box-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M17.782 6.918l.753.659a.5.5 0 01.047.705L10.9 17.061a.5.5 0 01-.73.024l-4.232-4.231a.5.5 0 010-.708l.707-.707a.5.5 0 01.708 0l3.097 3.097 6.626-7.57a.5.5 0 01.705-.048z\"\n fill=\"currentColor\"\n fill-rule=\"nonzero\"\n />\n </svg>\n </span>\n <span class=\"sapphire-checkbox__label\"><ng-content></ng-content></span>\n</label>\n", styles: [".sapphire-checkbox{font-family:var(--sapphire-checkbox-font-label-name);display:inline-flex;position:relative;max-width:100%}.sapphire-checkbox__input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-checkbox__label{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-left:var(--sapphire-checkbox-size-spacing-label);font-size:var(--sapphire-checkbox-size-font-content-l);color:var(--sapphire-checkbox-color-label);line-height:var(--sapphire-checkbox-size-height-label-l)}.sapphire-checkbox__label:empty{margin-left:0}.sapphire-checkbox--medium .sapphire-checkbox__label{font-size:var(--sapphire-checkbox-size-font-content-m);line-height:var(--sapphire-checkbox-size-height-label-m)}.sapphire-checkbox__error-text{display:block;font-family:var(--sapphire-checkbox-font-error-text-name);font-weight:var(--sapphire-checkbox-font-error-text-weight);font-size:var(--sapphire-checkbox-size-font-error-text-l);line-height:var(--sapphire-checkbox-size-line-height-error-text-l);color:var(--sapphire-checkbox-color-error-text);margin-top:var(--sapphire-checkbox-size-spacing-error-text-vertical);margin-left:calc(var(--sapphire-checkbox-size-spacing-label) + var(--sapphire-checkbox-size-width-box-l))}.sapphire-checkbox__error-text--medium{font-size:var(--sapphire-checkbox-size-font-error-text-m);line-height:var(--sapphire-checkbox-size-line-height-error-text-m);margin-left:calc(var(--sapphire-checkbox-size-spacing-label) + var(--sapphire-checkbox-size-width-box-m))}.sapphire-checkbox__box{box-sizing:border-box;position:relative;width:var(--sapphire-checkbox-size-width-box-l);height:var(--sapphire-checkbox-size-height-box-l);border-radius:var(--sapphire-checkbox-size-radius);border:var(--sapphire-checkbox-size-width-border-unchecked) solid var(--sapphire-checkbox-color-border-unchecked-default);background-color:var(--sapphire-checkbox-color-background-unchecked);transition:all var(--sapphire-checkbox-time-transition);flex-shrink:0;display:inline-flex;justify-content:center;align-items:center}.sapphire-checkbox__box:has(~ .sapphire-checkbox__label:not(:empty)){margin-top:var(--sapphire-checkbox-size-spacing-box)}.sapphire-checkbox--medium .sapphire-checkbox__box{width:var(--sapphire-checkbox-size-width-box-m);height:var(--sapphire-checkbox-size-height-box-m)}.sapphire-checkbox__box-icon{display:inherit;line-height:0;color:var(--sapphire-checkbox-color-icon);margin:calc(var(--sapphire-checkbox-size-width-border-unchecked) * -1);height:var(--sapphire-checkbox-size-height-box-l);width:var(--sapphire-checkbox-size-width-box-l)}.sapphire-checkbox--medium .sapphire-checkbox__box-icon{height:var(--sapphire-checkbox-size-height-box-m);width:var(--sapphire-checkbox-size-width-box-m)}.sapphire-checkbox--error .sapphire-checkbox__box{border-color:var(--sapphire-checkbox-color-border-unchecked-error-default)}.sapphire-checkbox--checked .sapphire-checkbox__box,.sapphire-checkbox--indeterminate .sapphire-checkbox__box{border-width:var(--sapphire-checkbox-size-width-border-checked);background-color:var(--sapphire-checkbox-color-background-checked-default)}.sapphire-checkbox--checked.sapphire-checkbox--error .sapphire-checkbox__box,.sapphire-checkbox--indeterminate.sapphire-checkbox--error .sapphire-checkbox__box{background-color:var(--sapphire-checkbox-color-background-checked-error-default)}.sapphire-checkbox:not(:active):not(.is-active):not(.sapphire-checkbox--checked).is-hover .sapphire-checkbox__box,.sapphire-checkbox:not(:active):not(.is-active):not(.sapphire-checkbox--checked):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box{border-color:var(--sapphire-checkbox-color-border-unchecked-hover)}.sapphire-checkbox--error:not(:active):not(.is-active):not(.sapphire-checkbox--checked).is-hover .sapphire-checkbox__box,.sapphire-checkbox--error:not(:active):not(.is-active):not(.sapphire-checkbox--checked):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box{border-color:var(--sapphire-checkbox-color-border-unchecked-error-hover)}.sapphire-checkbox--checked:not(:active):not(.is-active).is-hover .sapphire-checkbox__box,.sapphire-checkbox--checked:not(:active):not(.is-active):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box,.sapphire-checkbox--indeterminate:not(:active):not(.is-active).is-hover .sapphire-checkbox__box,.sapphire-checkbox--indeterminate:not(:active):not(.is-active):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box{background-color:var(--sapphire-checkbox-color-background-checked-hover)}.sapphire-checkbox--checked.sapphire-checkbox--error:not(:active):not(.is-active).is-hover .sapphire-checkbox__box,.sapphire-checkbox--checked.sapphire-checkbox--error:not(:active):not(.is-active):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box,.sapphire-checkbox--indeterminate.sapphire-checkbox--error:not(:active):not(.is-active).is-hover .sapphire-checkbox__box,.sapphire-checkbox--indeterminate.sapphire-checkbox--error:not(:active):not(.is-active):not(.js-hover):hover .sapphire-checkbox__input:not(:disabled)~.sapphire-checkbox__box{background-color:var(--sapphire-checkbox-color-background-checked-error-hover)}.sapphire-checkbox.is-focus .sapphire-checkbox__box,.sapphire-checkbox:not(.js-focus) .sapphire-checkbox__input:focus-visible~.sapphire-checkbox__box{outline:var(--sapphire-checkbox-size-focus-ring-border) solid var(--sapphire-checkbox-color-focus-ring);outline-offset:var(--sapphire-checkbox-size-focus-ring-offset)}.sapphire-checkbox__input:disabled{cursor:not-allowed}.sapphire-checkbox:not(.sapphire-checkbox--no-disabled) .sapphire-checkbox__input:disabled~.sapphire-checkbox__box,.sapphire-checkbox:not(.sapphire-checkbox--no-disabled) .sapphire-checkbox__input:disabled~.sapphire-checkbox__label{opacity:var(--sapphire-checkbox-opacity-disabled)}:host{display:inline-flex}\n"] }]
226
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
227
+ type: Attribute,
228
+ args: ['tabindex']
229
+ }] }]; }, propDecorators: { ariaLabel: [{
230
+ type: Input,
231
+ args: ['aria-label']
232
+ }], ariaLabelledby: [{
233
+ type: Input,
234
+ args: ['aria-labelledby']
235
+ }], ariaDescribedby: [{
236
+ type: Input,
237
+ args: ['aria-describedby']
238
+ }], id: [{
239
+ type: HostBinding
240
+ }, {
241
+ type: Input
242
+ }], required: [{
243
+ type: Input
244
+ }], readonly: [{
245
+ type: Input
246
+ }], name: [{
247
+ type: Input
248
+ }], size: [{
249
+ type: Input
250
+ }], change: [{
251
+ type: Output
252
+ }], value: [{
253
+ type: Input
254
+ }], _inputElement: [{
255
+ type: ViewChild,
256
+ args: ['input']
257
+ }], selected: [{
258
+ type: Input
259
+ }], disabled: [{
260
+ type: Input
261
+ }], indeterminate: [{
262
+ type: Input
263
+ }] } });
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jaGVja2JveC9zcmMvY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jaGVja2JveC9zcmMvY2hlY2tib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBZSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQUV4RCwrQ0FBK0M7QUFDL0MsTUFBTSxPQUFPLGNBQWM7SUFDekI7SUFDRSxnREFBZ0Q7SUFDaEMsUUFBaUI7SUFDakMsd0NBQXdDO0lBQ3hCLE1BQXlCO1FBRnpCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFFakIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7SUFDeEMsQ0FBQztDQUNMO0FBRUQsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQ3RDLGFBQWEsQ0FDWDtJQUNFLFlBQW1CLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO0lB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LElBQUk7U0FDWjtLQUNGLDRPQ3RESCw2N0RBNkRBO0FEOEJFO0lBREMsTUFBTSxFQUFFOzZDQUNEO0FBVVI7SUFEQyxhQUFhO21EQUNpQjtBQU8vQjtJQURDLGFBQWE7bURBQ2lCOzJGQTlDcEIsaUJBQWlCO2tCQXBCN0IsU0FBUzsrQkFDRSxhQUFhLFlBR2IsWUFBWSxtQkFDTCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDOzRCQUNoRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixRQUNLO3dCQUNKLGlCQUFpQixFQUFFLE1BQU07d0JBQ3pCLG1CQUFtQixFQUFFLE1BQU07d0JBQzNCLHdCQUF3QixFQUFFLE1BQU07cUJBQ2pDLGtCQUNlLENBQUMsbUJBQW1CLENBQUM7OzBCQTRFbEMsU0FBUzsyQkFBQyxVQUFVOzRDQTdERixTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBTU8sY0FBYztzQkFBdkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBR0csZUFBZTtzQkFBekMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBT3pCLEVBQUU7c0JBSEQsV0FBVzs7c0JBQ1gsS0FBSztnQkFZTixRQUFRO3NCQUZQLEtBQUs7Z0JBU04sUUFBUTtzQkFGUCxLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR2EsTUFBTTtzQkFBeEIsTUFBTTtnQkFJRSxLQUFLO3NCQUFiLEtBQUs7Z0JBR2MsYUFBYTtzQkFBaEMsU0FBUzt1QkFBQyxPQUFPO2dCQXdCZCxRQUFRO3NCQURYLEtBQUs7Z0JBb0JPLFFBQVE7c0JBRHBCLEtBQUs7Z0JBb0JGLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBBdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBIYXNUYWJJbmRleCwgbWl4aW5UYWJJbmRleCB9IGZyb20gJy4uLy4uL2NvbW1vbi90YWJpbmRleCc7XG5pbXBvcnQgeyBDYW5EaXNhYmxlLCBtaXhpbkRpc2FibGVkIH0gZnJvbSAnLi4vLi4vY29tbW9uL2Rpc2FibGVkJztcbmltcG9ydCB7IFRoZW1lQ2hlY2tEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90aGVtZS9zcmMvdGhlbWUtY2hlY2suZGlyZWN0aXZlJztcbmltcG9ydCB7IENvZXJjZUJvb2xlYW4gfSBmcm9tICcuLi8uLi9jb21tb24vY29lcmNlLWJvb2xlYW4uZGVjb3JhdG9yJztcbmltcG9ydCB7IEF1dG9JZCB9IGZyb20gJy4uLy4uL2NvbW1vbi9hdXRvLWlkLmRlY29yYXRvcic7XG5cbi8qKiBDaGFuZ2UgZXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgY2hlY2tib3guICovXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDaGFuZ2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogVGhlIG5ldyBgc2VsZWN0ZWRgIHZhbHVlIG9mIHRoZSBjaGVja2JveC4gKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gICAgLyoqIFRoZSBzb3VyY2UgY2hlY2tib3ggb2YgdGhlIGV2ZW50LiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzb3VyY2U6IENoZWNrYm94Q29tcG9uZW50XG4gICkge31cbn1cblxuY29uc3QgX0NoZWNrYm94TWl4aW5CYXNlID0gbWl4aW5UYWJJbmRleChcbiAgbWl4aW5EaXNhYmxlZChcbiAgICBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcihwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG4gICAgfVxuICApXG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcC1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnc3BDaGVja2JveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ251bGwnLFxuICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSc6ICdudWxsJyxcbiAgfSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtUaGVtZUNoZWNrRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnRcbiAgZXh0ZW5kcyBfQ2hlY2tib3hNaXhpbkJhc2VcbiAgaW1wbGVtZW50c1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgQ2FuRGlzYWJsZSxcbiAgICBIYXNUYWJJbmRleCxcbiAgICBGb2N1c2FibGVPcHRpb25cbntcbiAgLyoqXG4gICAqIEF0dGFjaGVkIHRvIHRoZSBhcmlhLWxhYmVsIGF0dHJpYnV0ZSBvZiB0aGUgaG9zdCBlbGVtZW50LiBJbiBtb3N0IGNhc2VzLFxuICAgKiBhcmlhLWxhYmVsbGVkYnkgd2lsbCB0YWtlIHByZWNlZGVuY2Ugc28gdGhpcyBtYXkgYmUgb21pdHRlZC5cbiAgICovXG4gIEBJbnB1dCgnYXJpYS1sYWJlbCcpIGFyaWFMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFVzZXJzIGNhbiBzcGVjaWZ5IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgd2hpY2ggd2lsbCBiZSBmb3J3YXJkZWRcbiAgICogdG8gdGhlIGlucHV0IGVsZW1lbnRcbiAgICovXG4gIEBJbnB1dCgnYXJpYS1sYWJlbGxlZGJ5JykgYXJpYUxhYmVsbGVkYnk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGUgJ2FyaWEtZGVzY3JpYmVkYnknIGF0dHJpYnV0ZSBpcyByZWFkIGFmdGVyIHRoZSBlbGVtZW50J3MgbGFiZWwgYW5kIGZpZWxkIHR5cGUuICovXG4gIEBJbnB1dCgnYXJpYS1kZXNjcmliZWRieScpIGFyaWFEZXNjcmliZWRieTogc3RyaW5nID0gJyc7XG5cbiAgLyoqIEEgdW5pcXVlIGlkIGZvciB0aGUgY2hlY2tib3ggaW5wdXQuIElmIG5vbmUgaXMgc3VwcGxpZWQsIGl0IHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuICovXG5cbiAgQEhvc3RCaW5kaW5nKClcbiAgQElucHV0KClcbiAgQEF1dG9JZCgpXG4gIGlkID0gJyc7XG5cbiAgLyoqIFJldHVybnMgdGhlIHVuaXF1ZSBpZCBmb3IgdGhlIHZpc3VhbCBoaWRkZW4gaW5wdXQuICovXG4gIGdldCBfaW5wdXRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmlkfS1pbnB1dGA7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgcmVxdWlyZWQuICovXG4gIEBJbnB1dCgpXG4gIEBDb2VyY2VCb29sZWFuXG4gIHJlcXVpcmVkOiBCb29sZWFuSW5wdXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgcmVhZG9ubHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBAQ29lcmNlQm9vbGVhblxuICByZWFkb25seTogQm9vbGVhbklucHV0ID0gZmFsc2U7XG5cbiAgLyoqIE5hbWUgdmFsdWUgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBpbnB1dCBlbGVtZW50IGlmIHByZXNlbnQgKi9cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KCkgc2l6ZT86ICdsYXJnZScgfCAnbWVkaXVtJyA9ICdsYXJnZSc7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2hlY2tib3gncyBgc2VsZWN0ZWRgIHZhbHVlIGNoYW5nZXMuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDaGVja2JveENoYW5nZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8Q2hlY2tib3hDaGFuZ2U+KCk7XG5cbiAgLyoqIFRoZSB2YWx1ZSBhdHRyaWJ1dGUgb2YgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50ICovXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFRoZSBuYXRpdmUgYDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj5gIGVsZW1lbnQgKi9cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBfaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGNoZWNrYm94IGlzIGJsdXJyZWQuIE5lZWRlZCB0byBwcm9wZXJseSBpbXBsZW1lbnRcbiAgICogQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBjb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBBdHRyaWJ1dGUoJ3RhYmluZGV4JykgdGFiSW5kZXg6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmKTtcbiAgICB0aGlzLnRhYkluZGV4ID0gcGFyc2VJbnQodGFiSW5kZXgpIHx8IDA7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc3luY0luZGV0ZXJtaW5hdGUodGhpcy5faW5kZXRlcm1pbmF0ZSk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgc2VsZWN0ZWQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gIH1cbiAgc2V0IHNlbGVjdGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICBpZiAoc2VsZWN0ZWQgIT0gdGhpcy5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGRpc2FibGVkLiBUaGlzIGZ1bGx5IG92ZXJyaWRlcyB0aGUgaW1wbGVtZW50YXRpb25cbiAgICogcHJvdmlkZWQgYnkgbWl4aW5EaXNhYmxlZCwgYnV0IHRoZSBtaXhpbiBpcyBzdGlsbCByZXF1aXJlZCBiZWNhdXNlXG4gICAqIG1peGluVGFiSW5kZXggcmVxdWlyZXMgaXQuXG4gICAqL1xuICBASW5wdXQoKVxuICBvdmVycmlkZSBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIG92ZXJyaWRlIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgaW5kZXRlcm1pbmF0ZS4gVGhpcyBpcyBhbHNvIGtub3duIGFzIFwibWl4ZWRcIiBtb2RlXG4gICAqIGFuZCBjYW4gYmUgdXNlZCB0byByZXByZXNlbnQgYSBjaGVja2JveCB3aXRoIHRocmVlIHN0YXRlcywgZS5nLiBhIGNoZWNrYm94XG4gICAqIHRoYXQgcmVwcmVzZW50cyBhIG5lc3RlZCBsaXN0IG9mIGNoZWNrYWJsZSBpdGVtcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbmRldGVybWluYXRlO1xuICB9XG4gIHNldCBpbmRldGVybWluYXRlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9pbmRldGVybWluYXRlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLnN5bmNJbmRldGVybWluYXRlKHRoaXMuX2luZGV0ZXJtaW5hdGUpO1xuICB9XG4gIHByaXZhdGUgX2luZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gISF2YWx1ZTtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuID0gZm47XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICAvKiogVG9nZ2xlcyB0aGUgYHNlbGVjdGVkYCBzdGF0ZSBvZiB0aGUgY2hlY2tib3guICovXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gIXRoaXMuc2VsZWN0ZWQ7XG4gICAgdGhpcy5jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKHRoaXMuc2VsZWN0ZWQpO1xuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIF9nZXRBcmlhQ2hlY2tlZCgpOiAndHJ1ZScgfCAnZmFsc2UnIHwgJ21peGVkJyB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybiAndHJ1ZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW5kZXRlcm1pbmF0ZSA/ICdtaXhlZCcgOiAnZmFsc2UnO1xuICB9XG5cbiAgX29uSW5wdXRDbGljaygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSAmJiAhdGhpcy5pbmRldGVybWluYXRlKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9ICF0aGlzLl9zZWxlY3RlZDtcbiAgICAgIC8vIEVtaXQgb3VyIGN1c3RvbSBjaGFuZ2UgZXZlbnQgaWYgdGhlIG5hdGl2ZSBpbnB1dCBlbWl0dGVkIG9uZS5cbiAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBvbmx5IGVtaXQgaXQsIGlmIHRoZSBuYXRpdmUgaW5wdXQgdHJpZ2dlcmVkIG9uZSwgYmVjYXVzZVxuICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIGEgY2hhbmdlIGV2ZW50LCB3aGVuIHRoZSBgY2hlY2tlZGAgdmFyaWFibGUgY2hhbmdlcyBmb3IgZXhhbXBsZS5cbiAgICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KCk7XG4gICAgfVxuICB9XG5cbiAgX29uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICAvLyBXZSBhbHdheXMgaGF2ZSB0byBzdG9wIHByb3BhZ2F0aW9uIG9uIHRoZSBjaGFuZ2UgZXZlbnQuXG4gICAgLy8gT3RoZXJ3aXNlLCB0aGUgY2hhbmdlIGV2ZW50LCBmcm9tIHRoZSBpbnB1dCBlbGVtZW50LCB3aWxsIGJ1YmJsZSB1cCBhbmRcbiAgICAvLyBlbWl0IGl0cyBldmVudCBvYmplY3QgdG8gdGhlIGBjaGFuZ2VgIG91dHB1dC5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIF9vbkJsdXIoKSB7XG4gICAgLy8gV2hlbiBhIGZvY3VzZWQgZWxlbWVudCBiZWNvbWVzIGRpc2FibGVkLCB0aGUgYnJvd3NlciAqaW1tZWRpYXRlbHkqIGZpcmVzIGEgYmx1ciBldmVudC5cbiAgICAvLyBBbmd1bGFyIGRvZXMgbm90IGV4cGVjdCBldmVudHMgdG8gYmUgcmFpc2VkIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLCBzbyBhbnkgc3RhdGUgY2hhbmdlXG4gICAgLy8gKHN1Y2ggYXMgYSBmb3JtIGNvbnRyb2wncyAnbmctdG91Y2hlZCcpIHdpbGwgY2F1c2UgYSBjaGFuZ2VkLWFmdGVyLWNoZWNrZWQgZXJyb3IuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE3NzkzLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBkZWZlclxuICAgIC8vIHRlbGxpbmcgdGhlIGZvcm0gY29udHJvbCBpdCBoYXMgYmVlbiB0b3VjaGVkIHVudGlsIHRoZSBuZXh0IHRpY2suXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGVtaXRDaGFuZ2VFdmVudCgpIHtcbiAgICB0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5zZWxlY3RlZCk7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdChuZXcgQ2hlY2tib3hDaGFuZ2UodGhpcy5zZWxlY3RlZCwgdGhpcykpO1xuXG4gICAgLy8gQXNzaWduaW5nIHRoZSB2YWx1ZSBhZ2FpbiBoZXJlIGlzIHJlZHVuZGFudCwgYnV0IHdlIGhhdmUgdG8gZG8gaXQgaW4gY2FzZSBpdCB3YXNcbiAgICAvLyBjaGFuZ2VkIGluc2lkZSB0aGUgYGNoYW5nZWAgbGlzdGVuZXIgd2hpY2ggd2lsbCBjYXVzZSB0aGUgaW5wdXQgdG8gYmUgb3V0IG9mIHN5bmMuXG4gICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN5bmNzIHRoZSBpbmRldGVybWluYXRlIHZhbHVlIHdpdGggdGhlIGNoZWNrYm94IERPTSBub2RlLlxuICAgKlxuICAgKiBXZSBzeW5jIGBpbmRldGVybWluYXRlYCBkaXJlY3RseSBvbiB0aGUgRE9NIG5vZGUsIGJlY2F1c2UgaW4gSXZ5IHRoZSBjaGVja1xuICAgKiBmb3Igd2hldGhlciBhIHByb3BlcnR5IGlzIHN1cHBvcnRlZCBvbiBhbiBlbGVtZW50IGJvaWxzIGRvd24gdG8gYGlmXG4gICAqIChwcm9wTmFtZSBpbiBlbGVtZW50KWAuIERvbWlubydzIEhUTUxJbnB1dEVsZW1lbnQgZG9lc24ndCBoYXZlIGFuXG4gICAqIGBpbmRldGVybWluYXRlYCBwcm9wZXJ0eSBzbyBJdnkgd2lsbCB3YXJuIGR1cmluZyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXG4gICAqL1xuICBwcml2YXRlIHN5bmNJbmRldGVybWluYXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgbmF0aXZlQ2hlY2tib3ggPSB0aGlzLl9pbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAobmF0aXZlQ2hlY2tib3gpIHtcbiAgICAgIG5hdGl2ZUNoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxufVxuIiwiPGxhYmVsXG4gIFtmb3JdPVwiX2lucHV0SWRcIlxuICBjbGFzcz1cInNhcHBoaXJlLWNoZWNrYm94XCJcbiAgW2NsYXNzLnNhcHBoaXJlLWNoZWNrYm94LS1jaGVja2VkXT1cInNlbGVjdGVkXCJcbiAgW2NsYXNzLnNhcHBoaXJlLWNoZWNrYm94LS1pbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxuICBbY2xhc3Muc2FwcGhpcmUtY2hlY2tib3gtLW1lZGl1bV09XCJzaXplID09PSAnbWVkaXVtJ1wiXG4+XG4gIDxpbnB1dFxuICAgICNpbnB1dFxuICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgY2xhc3M9XCJzYXBwaGlyZS1jaGVja2JveF9faW5wdXRcIlxuICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJfZ2V0QXJpYUNoZWNrZWQoKVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5XCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieVwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG4gICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbaWRdPVwiX2lucHV0SWRcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW3RhYkluZGV4XT1cInRhYkluZGV4XCJcbiAgICAoYmx1cik9XCJfb25CbHVyKClcIlxuICAgIChjbGljayk9XCJfb25JbnB1dENsaWNrKCRldmVudClcIlxuICAgIChjaGFuZ2UpPVwiX29uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgLz5cbiAgPHNwYW4gY2xhc3M9XCJzYXBwaGlyZS1jaGVja2JveF9fYm94XCI+XG4gICAgPHN2Z1xuICAgICAgKm5nSWY9XCJpbmRldGVybWluYXRlXCJcbiAgICAgIGNsYXNzPVwic2FwcGhpcmUtY2hlY2tib3hfX2JveC1pY29uXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxnIGZpbGw9XCJub25lXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJzcXVhcmVcIlxuICAgICAgICAgIGQ9XCJNNyAxMmgxMFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmaWxsLXJ1bGU9XCJub256ZXJvXCIgZD1cIk0xOCAxMXYySDZ2LTJ6XCIgLz5cbiAgICAgIDwvZz5cbiAgICA8L3N2Zz5cbiAgICA8c3ZnXG4gICAgICAqbmdJZj1cInNlbGVjdGVkICYmICFpbmRldGVybWluYXRlXCJcbiAgICAgIGNsYXNzPVwic2FwcGhpcmUtY2hlY2tib3hfX2JveC1pY29uXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTcuNzgyIDYuOTE4bC43NTMuNjU5YS41LjUgMCAwMS4wNDcuNzA1TDEwLjkgMTcuMDYxYS41LjUgMCAwMS0uNzMuMDI0bC00LjIzMi00LjIzMWEuNS41IDAgMDEwLS43MDhsLjcwNy0uNzA3YS41LjUgMCAwMS43MDggMGwzLjA5NyAzLjA5NyA2LjYyNi03LjU3YS41LjUgMCAwMS43MDUtLjA0OHpcIlxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgZmlsbC1ydWxlPVwibm9uemVyb1wiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwic2FwcGhpcmUtY2hlY2tib3hfX2xhYmVsXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbjwvbGFiZWw+XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { CheckboxComponent } from './checkbox.component';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { A11yModule } from '@angular/cdk/a11y';
6
+ import { SapphireCheckboxRequiredValidator } from './checkbox-required-validator';
7
+ import * as i0 from "@angular/core";
8
+ export class SapphireCheckboxModule {
9
+ }
10
+ SapphireCheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ SapphireCheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: SapphireCheckboxModule, declarations: [CheckboxComponent, SapphireCheckboxRequiredValidator], imports: [CommonModule, FormsModule, A11yModule], exports: [CheckboxComponent, SapphireCheckboxRequiredValidator] });
12
+ SapphireCheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireCheckboxModule, imports: [CommonModule, FormsModule, A11yModule] });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireCheckboxModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ declarations: [CheckboxComponent, SapphireCheckboxRequiredValidator],
17
+ imports: [CommonModule, FormsModule, A11yModule],
18
+ exports: [CheckboxComponent, SapphireCheckboxRequiredValidator],
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jaGVja2JveC9zcmMvY2hlY2tib3gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBT2xGLE1BQU0sT0FBTyxzQkFBc0I7O21IQUF0QixzQkFBc0I7b0hBQXRCLHNCQUFzQixpQkFKbEIsaUJBQWlCLEVBQUUsaUNBQWlDLGFBQ3pELFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxhQUNyQyxpQkFBaUIsRUFBRSxpQ0FBaUM7b0hBRW5ELHNCQUFzQixZQUh2QixZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVU7MkZBR3BDLHNCQUFzQjtrQkFMbEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxpQ0FBaUMsQ0FBQztvQkFDcEUsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7b0JBQ2hELE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLGlDQUFpQyxDQUFDO2lCQUNoRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBTYXBwaGlyZUNoZWNrYm94UmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tICcuL2NoZWNrYm94LXJlcXVpcmVkLXZhbGlkYXRvcic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NoZWNrYm94Q29tcG9uZW50LCBTYXBwaGlyZUNoZWNrYm94UmVxdWlyZWRWYWxpZGF0b3JdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQTExeU1vZHVsZV0sXG4gIGV4cG9ydHM6IFtDaGVja2JveENvbXBvbmVudCwgU2FwcGhpcmVDaGVja2JveFJlcXVpcmVkVmFsaWRhdG9yXSxcbn0pXG5leHBvcnQgY2xhc3MgU2FwcGhpcmVDaGVja2JveE1vZHVsZSB7fVxuIl19
@@ -0,0 +1,24 @@
1
+ let nextUniqueId = 0;
2
+ /**
3
+ * To be used on id props that require an auto-generated value, if none provided
4
+ * by the user.
5
+ */
6
+ export const AutoId = ({ prefix = 'generated' } = {}) => {
7
+ return function AutoId(clazz, propName, descriptor) {
8
+ const getter = function () {
9
+ let id = descriptor?.get() || this[`__${propName}`];
10
+ if (!id) {
11
+ id = this[`__${propName}`] = `${prefix}-id-${nextUniqueId++}-${Math.floor(Math.random() * 10000000)}`;
12
+ }
13
+ return id;
14
+ };
15
+ return Object.assign({}, {
16
+ set: descriptor?.set ||
17
+ function (value) {
18
+ this[`__${propName}`] = value;
19
+ },
20
+ get: getter,
21
+ });
22
+ };
23
+ };
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1pZC5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbW1vbi9hdXRvLWlkLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFckI7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsV0FBVyxLQUEwQixFQUFFLEVBQUUsRUFBRTtJQUMzRSxPQUFPLFNBQVMsTUFBTSxDQUFDLEtBQVUsRUFBRSxRQUFnQixFQUFFLFVBQWdCO1FBQ25FLE1BQU0sTUFBTSxHQUFHO1lBQ2IsSUFBSSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDUCxFQUFFLEdBQUcsSUFBSSxDQUNQLEtBQUssUUFBUSxFQUFFLENBQ2hCLEdBQUcsR0FBRyxNQUFNLE9BQU8sWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FDOUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FDekIsRUFBRSxDQUFDO2FBQ0w7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGO1lBQ0UsR0FBRyxFQUNELFVBQVUsRUFBRSxHQUFHO2dCQUNmLFVBQXFCLEtBQVU7b0JBQzdCLElBQUksQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNoQyxDQUFDO1lBQ0gsR0FBRyxFQUFFLE1BQU07U0FDWixDQUNGLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuLyoqXG4gKiBUbyBiZSB1c2VkIG9uIGlkIHByb3BzIHRoYXQgcmVxdWlyZSBhbiBhdXRvLWdlbmVyYXRlZCB2YWx1ZSwgaWYgbm9uZSBwcm92aWRlZFxuICogYnkgdGhlIHVzZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBBdXRvSWQgPSAoeyBwcmVmaXggPSAnZ2VuZXJhdGVkJyB9OiB7IHByZWZpeD86IHN0cmluZyB9ID0ge30pID0+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEF1dG9JZChjbGF6ejogYW55LCBwcm9wTmFtZTogc3RyaW5nLCBkZXNjcmlwdG9yPzogYW55KTogYW55IHtcbiAgICBjb25zdCBnZXR0ZXIgPSBmdW5jdGlvbiAodGhpczogYW55KSB7XG4gICAgICBsZXQgaWQgPSBkZXNjcmlwdG9yPy5nZXQoKSB8fCB0aGlzW2BfXyR7cHJvcE5hbWV9YF07XG4gICAgICBpZiAoIWlkKSB7XG4gICAgICAgIGlkID0gdGhpc1tcbiAgICAgICAgICBgX18ke3Byb3BOYW1lfWBcbiAgICAgICAgXSA9IGAke3ByZWZpeH0taWQtJHtuZXh0VW5pcXVlSWQrK30tJHtNYXRoLmZsb29yKFxuICAgICAgICAgIE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMFxuICAgICAgICApfWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBzZXQ6XG4gICAgICAgICAgZGVzY3JpcHRvcj8uc2V0IHx8XG4gICAgICAgICAgZnVuY3Rpb24gKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgICAgICAgdGhpc1tgX18ke3Byb3BOYW1lfWBdID0gdmFsdWU7XG4gICAgICAgICAgfSxcbiAgICAgICAgZ2V0OiBnZXR0ZXIsXG4gICAgICB9XG4gICAgKTtcbiAgfTtcbn07XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ /**
3
+ * To be used on input props of type boolean, to allow value-less shorthand
4
+ * usage. A caveat is that the type will need to be BooleanInput, since TS
5
+ * doesn't support type mutations through decorators, at the moment:
6
+ * https://github.com/Microsoft/TypeScript/issues/4881
7
+ */
8
+ export function CoerceBoolean(clazz, propName, descriptor) {
9
+ if (arguments.length === 0) {
10
+ // support usage of the form @CoerceBoolean()
11
+ return CoerceBoolean;
12
+ }
13
+ if (descriptor) {
14
+ const originalSetter = descriptor.set;
15
+ return Object.assign({}, descriptor, {
16
+ set: function (value) {
17
+ originalSetter.call(this, coerceBooleanProperty(value));
18
+ },
19
+ });
20
+ }
21
+ else {
22
+ return Object.assign({}, {
23
+ set: function (value) {
24
+ this[`__${propName}`] = coerceBooleanProperty(value);
25
+ },
26
+ get: function () {
27
+ return this[`__${propName}`] || false;
28
+ },
29
+ });
30
+ }
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlLWJvb2xlYW4uZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21tb24vY29lcmNlLWJvb2xlYW4uZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBVSxFQUFFLFFBQWdCLEVBQUUsVUFBZ0I7SUFDMUUsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUMxQiw2Q0FBNkM7UUFDN0MsT0FBTyxhQUFhLENBQUM7S0FDdEI7SUFDRCxJQUFJLFVBQVUsRUFBRTtRQUNkLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDdEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUU7WUFDbkMsR0FBRyxFQUFFLFVBQVUsS0FBVTtnQkFDdkIsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7U0FBTTtRQUNMLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsRUFBRSxFQUNGO1lBQ0UsR0FBRyxFQUFFLFVBQXFCLEtBQW1CO2dCQUMzQyxJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQztZQUN4QyxDQUFDO1NBQ0YsQ0FDRixDQUFDO0tBQ0g7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG4vKipcbiAqIFRvIGJlIHVzZWQgb24gaW5wdXQgcHJvcHMgb2YgdHlwZSBib29sZWFuLCB0byBhbGxvdyB2YWx1ZS1sZXNzIHNob3J0aGFuZFxuICogdXNhZ2UuIEEgY2F2ZWF0IGlzIHRoYXQgdGhlIHR5cGUgd2lsbCBuZWVkIHRvIGJlIEJvb2xlYW5JbnB1dCwgc2luY2UgVFNcbiAqIGRvZXNuJ3Qgc3VwcG9ydCB0eXBlIG11dGF0aW9ucyB0aHJvdWdoIGRlY29yYXRvcnMsIGF0IHRoZSBtb21lbnQ6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzQ4ODFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvZXJjZUJvb2xlYW4oY2xheno6IGFueSwgcHJvcE5hbWU6IHN0cmluZywgZGVzY3JpcHRvcj86IGFueSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIHN1cHBvcnQgdXNhZ2Ugb2YgdGhlIGZvcm0gQENvZXJjZUJvb2xlYW4oKVxuICAgIHJldHVybiBDb2VyY2VCb29sZWFuO1xuICB9XG4gIGlmIChkZXNjcmlwdG9yKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxTZXR0ZXIgPSBkZXNjcmlwdG9yLnNldDtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZGVzY3JpcHRvciwge1xuICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWU6IGFueSkge1xuICAgICAgICBvcmlnaW5hbFNldHRlci5jYWxsKHRoaXMsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh0aGlzOiBhbnksIHZhbHVlOiBCb29sZWFuSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgICB0aGlzW2BfXyR7cHJvcE5hbWV9YF0gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICh0aGlzOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgICByZXR1cm4gdGhpc1tgX18ke3Byb3BOYW1lfWBdIHx8IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbW1vbi9jb25zdHJ1Y3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQ29uc3RydWN0b3I8VD4gPSBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUO1xuXG5leHBvcnQgdHlwZSBBYnN0cmFjdENvbnN0cnVjdG9yPFQgPSBvYmplY3Q+ID0gYWJzdHJhY3QgbmV3IChcbiAgLi4uYXJnczogYW55W11cbikgPT4gVDtcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ export function mixinDisabled(base) {
3
+ return class extends base {
4
+ get disabled() {
5
+ return this._disabled;
6
+ }
7
+ set disabled(value) {
8
+ this._disabled = coerceBooleanProperty(value);
9
+ }
10
+ constructor(...args) {
11
+ super(...args);
12
+ this._disabled = false;
13
+ }
14
+ };
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbW1vbi9kaXNhYmxlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWdCOUQsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsSUFBTztJQUVQLE9BQU8sS0FBTSxTQUFRLElBQUk7UUFHdkIsSUFBSSxRQUFRO1lBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFVO1lBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELFlBQVksR0FBRyxJQUFXO1lBQ3hCLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBVlQsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVduQyxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQWJzdHJhY3RDb25zdHJ1Y3RvciwgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBDYW5EaXNhYmxlIHtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC4gKi9cbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbnR5cGUgQ2FuRGlzYWJsZUNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I8Q2FuRGlzYWJsZT4gJlxuICBBYnN0cmFjdENvbnN0cnVjdG9yPENhbkRpc2FibGU+O1xuXG4vKiogTWl4aW4gdG8gYXVnbWVudCBhIGRpcmVjdGl2ZSB3aXRoIGEgYGRpc2FibGVkYCBwcm9wZXJ0eS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaXhpbkRpc2FibGVkPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPHt9Pj4oXG4gIGJhc2U6IFRcbik6IENhbkRpc2FibGVDb25zdHJ1Y3RvciAmIFQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBtaXhpbkRpc2FibGVkPFQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcjx7fT4+KFxuICBiYXNlOiBUXG4pOiBDYW5EaXNhYmxlQ29uc3RydWN0b3IgJiBUIHtcbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgYmFzZSB7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBhbnkpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgc3VwZXIoLi4uYXJncyk7XG4gICAgfVxuICB9O1xufVxuIl19
@@ -0,0 +1,64 @@
1
+ import { Directive, HostBinding, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/cdk/a11y";
4
+ /**
5
+ * JS-based :focus-visible state. Based on the convention in Sapphire styles, it:
6
+ * - adds js-focus class to the host element
7
+ * - adds is-focus class when `spFocused` is true, and focus should be visible.
8
+ * is-focus class can be customized via `spFocusedClass` input
9
+
10
+ */
11
+ export class FocusedDirective {
12
+ get className() {
13
+ return this.isFocused() && this.isFocusVisible()
14
+ ? `${this.focusedClass} js-focus`
15
+ : 'js-focus';
16
+ }
17
+ onFocusIn() {
18
+ this.hostFocused = true;
19
+ }
20
+ onFocusOut() {
21
+ this.hostFocused = false;
22
+ }
23
+ isFocused() {
24
+ return this.focusedInput ?? this.hostFocused;
25
+ }
26
+ isFocusVisible() {
27
+ return (this.isFocused() &&
28
+ this.inputModalityDetector.mostRecentModality === 'keyboard');
29
+ }
30
+ constructor(inputModalityDetector) {
31
+ this.inputModalityDetector = inputModalityDetector;
32
+ /**
33
+ * CSS class to be applied when the element is focused, and focus should be visible.
34
+ */
35
+ this.focusedClass = 'is-focus';
36
+ this.hostFocused = false;
37
+ }
38
+ }
39
+ FocusedDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: FocusedDirective, deps: [{ token: i1.InputModalityDetector }], target: i0.ɵɵFactoryTarget.Directive });
40
+ FocusedDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: FocusedDirective, isStandalone: true, selector: "[spFocused]", inputs: { focusedClass: ["spFocusedClass", "focusedClass"], focusedInput: ["spFocused", "focusedInput"] }, host: { listeners: { "focusin": "onFocusIn()", "focusout": "onFocusOut()" }, properties: { "class": "this.className" } }, exportAs: ["spFocused"], ngImport: i0 });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: FocusedDirective, decorators: [{
42
+ type: Directive,
43
+ args: [{
44
+ standalone: true,
45
+ selector: '[spFocused]',
46
+ exportAs: 'spFocused',
47
+ }]
48
+ }], ctorParameters: function () { return [{ type: i1.InputModalityDetector }]; }, propDecorators: { focusedClass: [{
49
+ type: Input,
50
+ args: ['spFocusedClass']
51
+ }], focusedInput: [{
52
+ type: Input,
53
+ args: ['spFocused']
54
+ }], className: [{
55
+ type: HostBinding,
56
+ args: ['class']
57
+ }], onFocusIn: [{
58
+ type: HostListener,
59
+ args: ['focusin']
60
+ }], onFocusOut: [{
61
+ type: HostListener,
62
+ args: ['focusout']
63
+ }] } });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNlZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbW1vbi9mb2N1c2VkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFNUU7Ozs7OztHQU1HO0FBTUgsTUFBTSxPQUFPLGdCQUFnQjtJQWdCM0IsSUFDWSxTQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDOUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksV0FBVztZQUNqQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ2pCLENBQUM7SUFHTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sQ0FDTCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsS0FBSyxVQUFVLENBQzdELENBQUM7SUFDSixDQUFDO0lBRUQsWUFBb0IscUJBQTRDO1FBQTVDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUExQ2hFOztXQUVHO1FBRUgsaUJBQVksR0FBVyxVQUFVLENBQUM7UUFTMUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUE2QjhCLENBQUM7OzZHQTNDekQsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxXQUFXO2lCQUN0Qjs0R0FNQyxZQUFZO3NCQURYLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQVF2QixZQUFZO3NCQURYLEtBQUs7dUJBQUMsV0FBVztnQkFNTixTQUFTO3NCQURwQixXQUFXO3VCQUFDLE9BQU87Z0JBUVosU0FBUztzQkFEaEIsWUFBWTt1QkFBQyxTQUFTO2dCQUtmLFVBQVU7c0JBRGpCLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBKUy1iYXNlZCA6Zm9jdXMtdmlzaWJsZSBzdGF0ZS4gQmFzZWQgb24gdGhlIGNvbnZlbnRpb24gaW4gU2FwcGhpcmUgc3R5bGVzLCBpdDpcbiAqIC0gYWRkcyBqcy1mb2N1cyBjbGFzcyB0byB0aGUgaG9zdCBlbGVtZW50XG4gKiAtIGFkZHMgaXMtZm9jdXMgY2xhc3Mgd2hlbiBgc3BGb2N1c2VkYCBpcyB0cnVlLCBhbmQgZm9jdXMgc2hvdWxkIGJlIHZpc2libGUuXG4gKiBpcy1mb2N1cyBjbGFzcyBjYW4gYmUgY3VzdG9taXplZCB2aWEgYHNwRm9jdXNlZENsYXNzYCBpbnB1dFxuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tzcEZvY3VzZWRdJyxcbiAgZXhwb3J0QXM6ICdzcEZvY3VzZWQnLFxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2VkRGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIENTUyBjbGFzcyB0byBiZSBhcHBsaWVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgZm9jdXNlZCwgYW5kIGZvY3VzIHNob3VsZCBiZSB2aXNpYmxlLlxuICAgKi9cbiAgQElucHV0KCdzcEZvY3VzZWRDbGFzcycpXG4gIGZvY3VzZWRDbGFzczogc3RyaW5nID0gJ2lzLWZvY3VzJztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZWxlbWVudCBpcyAodmlydHVhbGx5KSBmb2N1c2VkLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBhY3R1YWwgZm9jdXNcbiAgICogc3RhdGUgb2YgdGhlIGhvc3QgZWxlbWVudCB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBmb2N1cyBzdGF0ZS5cbiAgICovXG4gIEBJbnB1dCgnc3BGb2N1c2VkJylcbiAgZm9jdXNlZElucHV0PzogYm9vbGVhbjtcblxuICBwcml2YXRlIGhvc3RGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByaXZhdGUgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0ZvY3VzZWQoKSAmJiB0aGlzLmlzRm9jdXNWaXNpYmxlKClcbiAgICAgID8gYCR7dGhpcy5mb2N1c2VkQ2xhc3N9IGpzLWZvY3VzYFxuICAgICAgOiAnanMtZm9jdXMnO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNpbicpXG4gIHByaXZhdGUgb25Gb2N1c0luKCkge1xuICAgIHRoaXMuaG9zdEZvY3VzZWQgPSB0cnVlO1xuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgcHJpdmF0ZSBvbkZvY3VzT3V0KCkge1xuICAgIHRoaXMuaG9zdEZvY3VzZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGlzRm9jdXNlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkSW5wdXQgPz8gdGhpcy5ob3N0Rm9jdXNlZDtcbiAgfVxuXG4gIGlzRm9jdXNWaXNpYmxlKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzRm9jdXNlZCgpICYmXG4gICAgICB0aGlzLmlucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCdcbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbnB1dE1vZGFsaXR5RGV0ZWN0b3I6IElucHV0TW9kYWxpdHlEZXRlY3Rvcikge31cbn1cbiJdfQ==
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Converts our `Placement` input (which is aligned with react implementation), to Angular CDK
3
+ * `ConnectedPosition`
4
+ * @param placement
5
+ */
6
+ export function toConnectedPosition(placement) {
7
+ const [first, second = 'center'] = placement.split(' ');
8
+ switch (first) {
9
+ case 'top':
10
+ return {
11
+ originY: 'top',
12
+ overlayY: 'bottom',
13
+ originX: second,
14
+ overlayX: second,
15
+ offsetY: -6,
16
+ };
17
+ case 'bottom':
18
+ return {
19
+ originY: 'bottom',
20
+ overlayY: 'top',
21
+ originX: second,
22
+ overlayX: second,
23
+ offsetY: 6,
24
+ };
25
+ case 'start':
26
+ return {
27
+ overlayX: 'end',
28
+ originX: 'start',
29
+ originY: second,
30
+ overlayY: second,
31
+ offsetX: -6,
32
+ };
33
+ case 'end':
34
+ return {
35
+ overlayX: 'start',
36
+ originX: 'end',
37
+ originY: second,
38
+ overlayY: second,
39
+ offsetX: 6,
40
+ };
41
+ }
42
+ }
43
+ const PLACEMENT_FLIP_MAP = {
44
+ top: 'bottom',
45
+ bottom: 'top',
46
+ start: 'end',
47
+ end: 'start',
48
+ };
49
+ export function flip(placement) {
50
+ return placement
51
+ .split(' ')
52
+ .map((part, index) => {
53
+ if (index === 0) {
54
+ return PLACEMENT_FLIP_MAP[part];
55
+ }
56
+ return part;
57
+ })
58
+ .join(' ');
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21tb24vcGxhY2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsU0FBb0I7SUFDdEQsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBR3JELENBQUM7SUFFRixRQUFRLEtBQUssRUFBRTtRQUNiLEtBQUssS0FBSztZQUNSLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLE9BQU8sRUFBRSxNQUF3QztnQkFDakQsUUFBUSxFQUFFLE1BQXdDO2dCQUNsRCxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQ1osQ0FBQztRQUNKLEtBQUssUUFBUTtZQUNYLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLE9BQU8sRUFBRSxNQUF3QztnQkFDakQsUUFBUSxFQUFFLE1BQXdDO2dCQUNsRCxPQUFPLEVBQUUsQ0FBQzthQUNYLENBQUM7UUFDSixLQUFLLE9BQU87WUFDVixPQUFPO2dCQUNMLFFBQVEsRUFBRSxLQUFLO2dCQUNmLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUUsTUFBc0M7Z0JBQy9DLFFBQVEsRUFBRSxNQUFzQztnQkFDaEQsT0FBTyxFQUFFLENBQUMsQ0FBQzthQUNaLENBQUM7UUFDSixLQUFLLEtBQUs7WUFDUixPQUFPO2dCQUNMLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUUsTUFBc0M7Z0JBQy9DLFFBQVEsRUFBRSxNQUFzQztnQkFDaEQsT0FBTyxFQUFFLENBQUM7YUFDWCxDQUFDO0tBQ0w7QUFDSCxDQUFDO0FBRUQsTUFBTSxrQkFBa0IsR0FBeUM7SUFDL0QsR0FBRyxFQUFFLFFBQVE7SUFDYixNQUFNLEVBQUUsS0FBSztJQUNiLEtBQUssRUFBRSxLQUFLO0lBQ1osR0FBRyxFQUFFLE9BQU87Q0FDYixDQUFDO0FBRUYsTUFBTSxVQUFVLElBQUksQ0FBQyxTQUFvQjtJQUN2QyxPQUFPLFNBQVM7U0FDYixLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ1YsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ25CLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNmLE9BQU8sa0JBQWtCLENBQUMsSUFBcUIsQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsR0FBRyxDQUFjLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5leHBvcnQgdHlwZSBIb3Jpem9udGFsUGxhY2VtZW50ID0gJ3N0YXJ0JyB8ICdlbmQnO1xuZXhwb3J0IHR5cGUgVmVydGljYWxQbGFjZW1lbnQgPSAndG9wJyB8ICdib3R0b20nO1xuZXhwb3J0IHR5cGUgUGxhY2VtZW50ID1cbiAgfCBIb3Jpem9udGFsUGxhY2VtZW50XG4gIHwgVmVydGljYWxQbGFjZW1lbnRcbiAgfCBgJHtIb3Jpem9udGFsUGxhY2VtZW50fSAke1ZlcnRpY2FsUGxhY2VtZW50fWBcbiAgfCBgJHtWZXJ0aWNhbFBsYWNlbWVudH0gJHtIb3Jpem9udGFsUGxhY2VtZW50fWA7XG5cbnR5cGUgUGxhY2VtZW50UGFydCA9IEhvcml6b250YWxQbGFjZW1lbnQgfCBWZXJ0aWNhbFBsYWNlbWVudDtcblxuLyoqXG4gKiBDb252ZXJ0cyBvdXIgYFBsYWNlbWVudGAgaW5wdXQgKHdoaWNoIGlzIGFsaWduZWQgd2l0aCByZWFjdCBpbXBsZW1lbnRhdGlvbiksIHRvIEFuZ3VsYXIgQ0RLXG4gKiBgQ29ubmVjdGVkUG9zaXRpb25gXG4gKiBAcGFyYW0gcGxhY2VtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Nvbm5lY3RlZFBvc2l0aW9uKHBsYWNlbWVudDogUGxhY2VtZW50KTogQ29ubmVjdGVkUG9zaXRpb24ge1xuICBjb25zdCBbZmlyc3QsIHNlY29uZCA9ICdjZW50ZXInXSA9IHBsYWNlbWVudC5zcGxpdCgnICcpIGFzIFtcbiAgICBQbGFjZW1lbnRQYXJ0LFxuICAgIFBsYWNlbWVudFBhcnQgfCB1bmRlZmluZWRcbiAgXTtcblxuICBzd2l0Y2ggKGZpcnN0KSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgIG9yaWdpblg6IHNlY29uZCBhcyAnY2VudGVyJyB8IEhvcml6b250YWxQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJsYXlYOiBzZWNvbmQgYXMgJ2NlbnRlcicgfCBIb3Jpem9udGFsUGxhY2VtZW50LFxuICAgICAgICBvZmZzZXRZOiAtNixcbiAgICAgIH07XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIG9yaWdpblg6IHNlY29uZCBhcyAnY2VudGVyJyB8IEhvcml6b250YWxQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJsYXlYOiBzZWNvbmQgYXMgJ2NlbnRlcicgfCBIb3Jpem9udGFsUGxhY2VtZW50LFxuICAgICAgICBvZmZzZXRZOiA2LFxuICAgICAgfTtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6IHNlY29uZCBhcyAnY2VudGVyJyB8IFZlcnRpY2FsUGxhY2VtZW50LFxuICAgICAgICBvdmVybGF5WTogc2Vjb25kIGFzICdjZW50ZXInIHwgVmVydGljYWxQbGFjZW1lbnQsXG4gICAgICAgIG9mZnNldFg6IC02LFxuICAgICAgfTtcbiAgICBjYXNlICdlbmQnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICBvcmlnaW5ZOiBzZWNvbmQgYXMgJ2NlbnRlcicgfCBWZXJ0aWNhbFBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmxheVk6IHNlY29uZCBhcyAnY2VudGVyJyB8IFZlcnRpY2FsUGxhY2VtZW50LFxuICAgICAgICBvZmZzZXRYOiA2LFxuICAgICAgfTtcbiAgfVxufVxuXG5jb25zdCBQTEFDRU1FTlRfRkxJUF9NQVA6IFJlY29yZDxQbGFjZW1lbnRQYXJ0LCBQbGFjZW1lbnRQYXJ0PiA9IHtcbiAgdG9wOiAnYm90dG9tJyxcbiAgYm90dG9tOiAndG9wJyxcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCcsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZmxpcChwbGFjZW1lbnQ6IFBsYWNlbWVudCk6IFBsYWNlbWVudCB7XG4gIHJldHVybiBwbGFjZW1lbnRcbiAgICAuc3BsaXQoJyAnKVxuICAgIC5tYXAoKHBhcnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFBMQUNFTUVOVF9GTElQX01BUFtwYXJ0IGFzIFBsYWNlbWVudFBhcnRdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfSlcbiAgICAuam9pbignICcpIGFzIFBsYWNlbWVudDtcbn1cbiJdfQ==