desy-angular 2.0.1 → 5.0.0

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 (477) hide show
  1. package/README.md +22 -20
  2. package/bundles/desy-angular.umd.js +8742 -4678
  3. package/bundles/desy-angular.umd.js.map +1 -1
  4. package/bundles/desy-angular.umd.min.js +2 -2
  5. package/bundles/desy-angular.umd.min.js.map +1 -1
  6. package/desy-angular.d.ts +34 -21
  7. package/desy-angular.metadata.json +1 -1
  8. package/esm2015/desy-angular.js +35 -22
  9. package/esm2015/lib/desy-angular.module.js +38 -35
  10. package/esm2015/lib/desy-buttons/components/button/button.component.js +92 -103
  11. package/esm2015/lib/desy-buttons/components/button-loader/button-loader.component.js +50 -45
  12. package/esm2015/lib/desy-buttons/components/dropdown/dropdown.component.js +108 -49
  13. package/esm2015/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.js +26 -0
  14. package/esm2015/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.js +23 -0
  15. package/esm2015/lib/desy-buttons/components/listbox/listbox.component.js +275 -0
  16. package/esm2015/lib/desy-buttons/components/pill/pill.component.js +64 -66
  17. package/esm2015/lib/desy-buttons/desy-buttons.module.js +44 -33
  18. package/esm2015/lib/desy-buttons/interfaces/listbox-item-data.js +2 -0
  19. package/esm2015/lib/desy-buttons/interfaces/listbox-label-data.js +2 -0
  20. package/esm2015/lib/desy-commons/components/content/content.component.js +14 -0
  21. package/esm2015/lib/desy-commons/components/description/description.component.js +14 -0
  22. package/esm2015/lib/desy-commons/components/icon/icon.component.js +14 -0
  23. package/esm2015/lib/desy-commons/components/title/title.component.js +14 -0
  24. package/esm2015/lib/desy-commons/desy-commons.module.js +33 -0
  25. package/esm2015/lib/desy-commons/interfaces/content-data.js +2 -0
  26. package/esm2015/lib/desy-commons/interfaces/description-data.js +2 -0
  27. package/esm2015/lib/desy-commons/interfaces/icon-data.js +2 -0
  28. package/esm2015/lib/desy-commons/interfaces/index.js +5 -0
  29. package/esm2015/lib/desy-commons/interfaces/title-data.js +2 -0
  30. package/esm2015/lib/desy-forms/components/character-count/character-count.component.js +124 -124
  31. package/esm2015/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.js +190 -0
  32. package/esm2015/lib/desy-forms/components/checkboxes/checkboxes.component.js +235 -128
  33. package/esm2015/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.js +46 -0
  34. package/esm2015/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.js +19 -0
  35. package/esm2015/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.js +13 -0
  36. package/esm2015/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.js +46 -0
  37. package/esm2015/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.js +44 -0
  38. package/esm2015/lib/desy-forms/components/date-input/date-input.component.js +228 -123
  39. package/esm2015/lib/desy-forms/components/error-message/error-message.component.js +28 -16
  40. package/esm2015/lib/desy-forms/components/fieldset/fieldset.component.js +44 -21
  41. package/esm2015/lib/desy-forms/components/fieldset/legend/legend.component.js +16 -15
  42. package/esm2015/lib/desy-forms/components/file-upload/file-upload.component.js +59 -59
  43. package/esm2015/lib/desy-forms/components/form-field/form-field.component.js +103 -65
  44. package/esm2015/lib/desy-forms/components/hint/hint.component.js +27 -15
  45. package/esm2015/lib/desy-forms/components/input/input.component.js +58 -59
  46. package/esm2015/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.js +20 -0
  47. package/esm2015/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.js +46 -0
  48. package/esm2015/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.js +13 -0
  49. package/esm2015/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.js +42 -0
  50. package/esm2015/lib/desy-forms/components/input-group/input-group.component.js +190 -96
  51. package/esm2015/lib/desy-forms/components/label/label.component.js +30 -17
  52. package/esm2015/lib/desy-forms/components/radios/radio-item/radio-item.component.js +147 -0
  53. package/esm2015/lib/desy-forms/components/radios/radios.component.js +242 -56
  54. package/esm2015/lib/desy-forms/components/search-bar/search-bar.component.js +57 -47
  55. package/esm2015/lib/desy-forms/components/select/option/option.component.js +17 -0
  56. package/esm2015/lib/desy-forms/components/select/option-group/option-group.component.js +17 -0
  57. package/esm2015/lib/desy-forms/components/select/select-item/select-item.component.js +14 -0
  58. package/esm2015/lib/desy-forms/components/select/select.component.js +74 -59
  59. package/esm2015/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.js +12 -12
  60. package/esm2015/lib/desy-forms/components/textarea/textarea.component.js +67 -67
  61. package/esm2015/lib/desy-forms/desy-forms.module.js +116 -79
  62. package/esm2015/lib/desy-forms/directives/condition.directive.js +35 -35
  63. package/esm2015/lib/desy-forms/interfaces/accesibility-data.js +2 -2
  64. package/esm2015/lib/desy-forms/interfaces/error-message-data.js +2 -2
  65. package/esm2015/lib/desy-forms/interfaces/fieldset-data.js +2 -2
  66. package/esm2015/lib/desy-forms/interfaces/hint-data.js +2 -2
  67. package/esm2015/lib/desy-forms/interfaces/index.js +13 -13
  68. package/esm2015/lib/desy-forms/interfaces/item-checkbox-data.js +2 -2
  69. package/esm2015/lib/desy-forms/interfaces/item-date-input-data.js +2 -2
  70. package/esm2015/lib/desy-forms/interfaces/item-divider-date-input-data.js +2 -0
  71. package/esm2015/lib/desy-forms/interfaces/item-divider-input-group-data.js +2 -2
  72. package/esm2015/lib/desy-forms/interfaces/item-input-group-data.js +2 -2
  73. package/esm2015/lib/desy-forms/interfaces/item-radio-data.js +2 -2
  74. package/esm2015/lib/desy-forms/interfaces/item-radio-with-template-data.js +2 -2
  75. package/esm2015/lib/desy-forms/interfaces/label-data.js +2 -2
  76. package/esm2015/lib/desy-forms/interfaces/legend-data.js +2 -2
  77. package/esm2015/lib/desy-forms/interfaces/select-item-data.js +2 -2
  78. package/esm2015/lib/desy-modals/components/dialog/dialog.component.js +127 -127
  79. package/esm2015/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.js +19 -0
  80. package/esm2015/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.js +19 -0
  81. package/esm2015/lib/desy-modals/components/modal/modal.component.js +144 -59
  82. package/esm2015/lib/desy-modals/desy-modals.module.js +35 -29
  83. package/esm2015/lib/desy-modals/interfaces/dialog-options.js +2 -2
  84. package/esm2015/lib/desy-modals/interfaces/index.js +8 -8
  85. package/esm2015/lib/desy-modals/interfaces/modal-button-data.js +2 -2
  86. package/esm2015/lib/desy-modals/interfaces/modal-data.js +2 -2
  87. package/esm2015/lib/desy-modals/interfaces/modal-icon-data.js +2 -2
  88. package/esm2015/lib/desy-modals/interfaces/modal-options.js +2 -2
  89. package/esm2015/lib/desy-modals/interfaces/open-dialog-result.js +2 -2
  90. package/esm2015/lib/desy-modals/services/dialog.service.js +118 -118
  91. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.js +15 -0
  92. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.js +48 -46
  93. package/esm2015/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.js +15 -0
  94. package/esm2015/lib/desy-nav/components/error-summary/error-summary.component.js +52 -31
  95. package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.js +16 -0
  96. package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta.component.js +23 -0
  97. package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.js +16 -0
  98. package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.js +16 -0
  99. package/esm2015/lib/desy-nav/components/footer/footer.component.js +45 -22
  100. package/esm2015/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.js +34 -44
  101. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.js +19 -0
  102. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation.component.js +32 -25
  103. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.js +25 -0
  104. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.js +11 -0
  105. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.js +88 -26
  106. package/esm2015/lib/desy-nav/components/header/header-subnav/header-subnav.component.js +37 -47
  107. package/esm2015/lib/desy-nav/components/header/header.component.js +58 -27
  108. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.js +28 -0
  109. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.js +81 -61
  110. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.js +32 -0
  111. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.js +16 -0
  112. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.js +24 -0
  113. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical.component.js +95 -142
  114. package/esm2015/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.js +36 -0
  115. package/esm2015/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.js +14 -0
  116. package/esm2015/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.js +29 -0
  117. package/esm2015/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.js +23 -0
  118. package/esm2015/lib/desy-nav/components/menubar/directives/menubaritem.directive.js +37 -0
  119. package/esm2015/lib/desy-nav/components/menubar/menubar.component.js +656 -0
  120. package/esm2015/lib/desy-nav/components/nav/nav-item/nav-item.component.js +30 -0
  121. package/esm2015/lib/desy-nav/components/nav/nav.component.js +85 -63
  122. package/esm2015/lib/desy-nav/components/notification/notification-item/notification-item.component.js +18 -0
  123. package/esm2015/lib/desy-nav/components/notification/notification.component.js +110 -83
  124. package/esm2015/lib/desy-nav/components/skip-link/skip-link.component.js +42 -23
  125. package/esm2015/lib/desy-nav/desy-nav.module.js +123 -57
  126. package/esm2015/lib/desy-nav/interfaces/breadcrumbs.data.js +2 -2
  127. package/esm2015/lib/desy-nav/interfaces/error-summary-data.js +2 -2
  128. package/esm2015/lib/desy-nav/interfaces/footer-data.js +2 -2
  129. package/esm2015/lib/desy-nav/interfaces/header-dropdown-data.js +2 -2
  130. package/esm2015/lib/desy-nav/interfaces/header-navigation-data.js +2 -2
  131. package/esm2015/lib/desy-nav/interfaces/header-navigation-item-data.js +2 -2
  132. package/esm2015/lib/desy-nav/interfaces/header-offcanvas-data.js +2 -2
  133. package/esm2015/lib/desy-nav/interfaces/header-subnav-data.js +2 -2
  134. package/esm2015/lib/desy-nav/interfaces/index.js +17 -21
  135. package/esm2015/lib/desy-nav/interfaces/menu-horizontal-item-data.js +2 -2
  136. package/esm2015/lib/desy-nav/interfaces/menu-horizontal-item-event-data.js +2 -2
  137. package/esm2015/lib/desy-nav/interfaces/menu-vertical-items-data.js +2 -2
  138. package/esm2015/lib/desy-nav/interfaces/menu-vertical-sub-data.js +2 -2
  139. package/esm2015/lib/desy-nav/interfaces/menu-vertical-sub-items-data.js +2 -2
  140. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.js +2 -0
  141. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub-item.js +2 -0
  142. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub.js +2 -0
  143. package/esm2015/lib/desy-nav/interfaces/menubar-item.js +2 -0
  144. package/esm2015/lib/desy-nav/interfaces/nav-item-event.data.js +2 -2
  145. package/esm2015/lib/desy-nav/interfaces/nav-item.data.js +2 -2
  146. package/esm2015/lib/desy-nav/interfaces/notification-items-data.js +2 -2
  147. package/esm2015/lib/desy-nav/interfaces/notification-options.js +2 -2
  148. package/esm2015/lib/desy-pagination/components/pagination/pagination.component.js +104 -139
  149. package/esm2015/lib/desy-pagination/desy-pagination.module.js +25 -25
  150. package/esm2015/lib/desy-pagination/interfaces/index.js +2 -2
  151. package/esm2015/lib/desy-pagination/interfaces/pagination-item.data.js +2 -2
  152. package/esm2015/lib/desy-tables/components/table/components/table-caption.component.js +14 -0
  153. package/esm2015/lib/desy-tables/components/table/components/table-cell.component.js +17 -0
  154. package/esm2015/lib/desy-tables/components/table/components/table-header.component.js +14 -0
  155. package/esm2015/lib/desy-tables/components/table/components/table-row.component.js +14 -0
  156. package/esm2015/lib/desy-tables/components/table/table.component.js +67 -34
  157. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.js +20 -0
  158. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.js +14 -0
  159. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.js +17 -0
  160. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.js +20 -0
  161. package/esm2015/lib/desy-tables/components/table-advanced/table-advanced.component.js +288 -264
  162. package/esm2015/lib/desy-tables/desy-tables.module.js +61 -33
  163. package/esm2015/lib/desy-tables/directives/cell.directive.js +26 -0
  164. package/esm2015/lib/desy-tables/directives/focus-clicked-cell.directive.js +78 -74
  165. package/esm2015/lib/desy-tables/directives/row.directive.js +24 -0
  166. package/esm2015/lib/desy-tables/interfaces/cell-data.js +2 -2
  167. package/esm2015/lib/desy-tables/interfaces/head-cell-data.js +7 -7
  168. package/esm2015/lib/desy-tables/interfaces/index.js +5 -4
  169. package/esm2015/lib/desy-tables/interfaces/recalculate-table-params.js +2 -0
  170. package/esm2015/lib/desy-tables/interfaces/row-data.js +2 -2
  171. package/esm2015/lib/desy-tables/interfaces/wrapper-data.js +2 -0
  172. package/esm2015/lib/desy-views/components/accordion/accordion-header/accordion-header.component.js +14 -0
  173. package/esm2015/lib/desy-views/components/accordion/accordion-item/accordion-item.component.js +33 -0
  174. package/esm2015/lib/desy-views/components/accordion/accordion.component.js +136 -108
  175. package/esm2015/lib/desy-views/components/alert/alert.component.js +81 -76
  176. package/esm2015/lib/desy-views/components/collapsible/collapsible.component.js +62 -66
  177. package/esm2015/lib/desy-views/components/description-list/definition/definition.component.js +15 -0
  178. package/esm2015/lib/desy-views/components/description-list/description-item/description-item.component.js +26 -0
  179. package/esm2015/lib/desy-views/components/description-list/description-list.component.js +28 -38
  180. package/esm2015/lib/desy-views/components/description-list/term/term.component.js +15 -0
  181. package/esm2015/lib/desy-views/components/details/details.component.js +31 -31
  182. package/esm2015/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.js +14 -0
  183. package/esm2015/lib/desy-views/components/item/item-content-right/item-content-right.component.js +11 -0
  184. package/esm2015/lib/desy-views/components/item/item-item/item-item.component.js +11 -0
  185. package/esm2015/lib/desy-views/components/item/item.component.js +79 -46
  186. package/esm2015/lib/desy-views/components/media-object/media-object.component.js +29 -29
  187. package/esm2015/lib/desy-views/components/spinner/spinner.component.js +16 -16
  188. package/esm2015/lib/desy-views/components/status/status.component.js +35 -35
  189. package/esm2015/lib/desy-views/components/status-item/status-item.component.js +63 -50
  190. package/esm2015/lib/desy-views/components/tabs/panel/panel.component.js +15 -0
  191. package/esm2015/lib/desy-views/components/tabs/tab-item/tab-item.component.js +28 -0
  192. package/esm2015/lib/desy-views/components/tabs/tabs.component.js +131 -109
  193. package/esm2015/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.js +11 -0
  194. package/esm2015/lib/desy-views/components/tooltip/tooltip.component.js +132 -0
  195. package/esm2015/lib/desy-views/desy-views.module.js +93 -53
  196. package/esm2015/lib/desy-views/interfaces/accordion-header.data.js +2 -2
  197. package/esm2015/lib/desy-views/interfaces/accordion-item.data.js +2 -2
  198. package/esm2015/lib/desy-views/interfaces/alert-options.js +2 -2
  199. package/esm2015/lib/desy-views/interfaces/description-item.data.js +2 -0
  200. package/esm2015/lib/desy-views/interfaces/index.js +11 -11
  201. package/esm2015/lib/desy-views/interfaces/open-alert-result.js +2 -2
  202. package/esm2015/lib/desy-views/interfaces/status-data.js +2 -2
  203. package/esm2015/lib/desy-views/interfaces/status-icon-data.js +2 -2
  204. package/esm2015/lib/desy-views/interfaces/status-item-title-data.js +2 -2
  205. package/esm2015/lib/desy-views/interfaces/tabs-items-data.js +2 -2
  206. package/esm2015/lib/desy-views/interfaces/tabs-panel-data.js +2 -2
  207. package/esm2015/lib/desy-views/interfaces/term-definition.data.js +2 -0
  208. package/esm2015/lib/desy-views/services/alert.service.js +90 -90
  209. package/esm2015/lib/shared/components/accessibility/accessibility.component.js +29 -29
  210. package/esm2015/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.js +27 -0
  211. package/esm2015/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.js +26 -26
  212. package/esm2015/lib/shared/components/content-base/content-base.component.js +20 -0
  213. package/esm2015/lib/shared/components/index.js +6 -4
  214. package/esm2015/lib/shared/components/text-or-html-required/text-or-html-required.component.js +26 -26
  215. package/esm2015/lib/shared/decorators/desy-content-child.decorator.js +41 -0
  216. package/esm2015/lib/shared/decorators/desy-on-input-change.decorator.js +19 -0
  217. package/esm2015/lib/shared/directives/attribute-change.directive.js +43 -0
  218. package/esm2015/lib/shared/directives/click-outside.directive.js +35 -35
  219. package/esm2015/lib/shared/directives/content-change.directive.js +43 -0
  220. package/esm2015/lib/shared/directives/content-empty.directive.js +86 -0
  221. package/esm2015/lib/shared/directives/custom-inner-content.directive.js +62 -0
  222. package/esm2015/lib/shared/directives/inner-content.directive.js +34 -32
  223. package/esm2015/lib/shared/interfaces/accesibility-data.js +2 -2
  224. package/esm2015/lib/shared/pipes/external-href.pipe.js +28 -0
  225. package/esm2015/lib/shared/pipes/inner-html.pipe.js +19 -19
  226. package/esm2015/lib/shared/pipes/make-html-list.pipe.js +16 -16
  227. package/esm2015/lib/shared/shared.module.js +65 -46
  228. package/esm2015/lib/shared/utils/focus-utils.js +51 -51
  229. package/esm2015/lib/shared/utils/search-utils.js +57 -57
  230. package/esm2015/lib/shared/utils/string-utils.js +18 -0
  231. package/esm2015/public-api.js +189 -130
  232. package/fesm2015/desy-angular.js +7655 -3964
  233. package/fesm2015/desy-angular.js.map +1 -1
  234. package/lib/desy-angular.module.d.ts +2 -2
  235. package/lib/desy-buttons/components/button/button.component.d.ts +31 -32
  236. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +15 -14
  237. package/lib/desy-buttons/components/dropdown/dropdown.component.d.ts +24 -19
  238. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +12 -0
  239. package/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.d.ts +8 -0
  240. package/lib/desy-buttons/components/listbox/listbox.component.d.ts +54 -0
  241. package/lib/desy-buttons/components/pill/pill.component.d.ts +22 -22
  242. package/lib/desy-buttons/desy-buttons.module.d.ts +2 -2
  243. package/lib/desy-buttons/interfaces/listbox-item-data.d.ts +9 -0
  244. package/lib/{desy-nav/interfaces/notification-title-data.d.ts → desy-buttons/interfaces/listbox-label-data.d.ts} +5 -5
  245. package/lib/desy-commons/components/content/content.component.d.ts +5 -0
  246. package/lib/desy-commons/components/description/description.component.d.ts +5 -0
  247. package/lib/desy-commons/components/icon/icon.component.d.ts +5 -0
  248. package/lib/desy-commons/components/title/title.component.d.ts +5 -0
  249. package/lib/desy-commons/desy-commons.module.d.ts +2 -0
  250. package/lib/{desy-nav/interfaces/notification-content-data.d.ts → desy-commons/interfaces/content-data.d.ts} +5 -5
  251. package/lib/desy-commons/interfaces/description-data.d.ts +5 -0
  252. package/lib/desy-commons/interfaces/icon-data.d.ts +4 -0
  253. package/lib/desy-commons/interfaces/index.d.ts +4 -0
  254. package/lib/desy-commons/interfaces/title-data.d.ts +6 -0
  255. package/lib/desy-forms/components/character-count/character-count.component.d.ts +28 -28
  256. package/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.d.ts +47 -0
  257. package/lib/desy-forms/components/checkboxes/checkboxes.component.d.ts +75 -37
  258. package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +22 -0
  259. package/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.d.ts +7 -0
  260. package/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.d.ts +4 -0
  261. package/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.d.ts +22 -0
  262. package/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.d.ts +19 -0
  263. package/lib/desy-forms/components/date-input/date-input.component.d.ts +54 -37
  264. package/lib/desy-forms/components/error-message/error-message.component.d.ts +12 -6
  265. package/lib/desy-forms/components/fieldset/fieldset.component.d.ts +28 -20
  266. package/lib/desy-forms/components/fieldset/legend/legend.component.d.ts +6 -5
  267. package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +19 -19
  268. package/lib/desy-forms/components/form-field/form-field.component.d.ts +40 -51
  269. package/lib/desy-forms/components/hint/hint.component.d.ts +11 -5
  270. package/lib/desy-forms/components/input/input.component.d.ts +19 -19
  271. package/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.d.ts +8 -0
  272. package/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.d.ts +20 -0
  273. package/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.d.ts +4 -0
  274. package/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.d.ts +16 -0
  275. package/lib/desy-forms/components/input-group/input-group.component.d.ts +54 -36
  276. package/lib/desy-forms/components/label/label.component.d.ts +14 -7
  277. package/lib/desy-forms/components/radios/radio-item/radio-item.component.d.ts +43 -0
  278. package/lib/desy-forms/components/radios/radios.component.d.ts +75 -30
  279. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +17 -13
  280. package/lib/desy-forms/components/select/option/option.component.d.ts +7 -0
  281. package/lib/desy-forms/components/select/option-group/option-group.component.d.ts +7 -0
  282. package/lib/desy-forms/components/select/select-item/select-item.component.d.ts +4 -0
  283. package/lib/desy-forms/components/select/select.component.d.ts +21 -14
  284. package/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.d.ts +2 -2
  285. package/lib/desy-forms/components/textarea/textarea.component.d.ts +23 -23
  286. package/lib/desy-forms/desy-forms.module.d.ts +2 -2
  287. package/lib/desy-forms/directives/condition.directive.d.ts +15 -15
  288. package/lib/desy-forms/interfaces/accesibility-data.d.ts +15 -15
  289. package/lib/desy-forms/interfaces/error-message-data.d.ts +8 -8
  290. package/lib/desy-forms/interfaces/fieldset-data.d.ts +10 -9
  291. package/lib/desy-forms/interfaces/hint-data.d.ts +7 -7
  292. package/lib/desy-forms/interfaces/index.d.ts +12 -12
  293. package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +21 -20
  294. package/lib/desy-forms/interfaces/item-date-input-data.d.ts +17 -14
  295. package/lib/desy-forms/interfaces/item-divider-date-input-data.d.ts +5 -0
  296. package/lib/desy-forms/interfaces/item-divider-input-group-data.d.ts +5 -5
  297. package/lib/desy-forms/interfaces/item-input-group-data.d.ts +22 -23
  298. package/lib/desy-forms/interfaces/item-radio-data.d.ts +20 -17
  299. package/lib/desy-forms/interfaces/item-radio-with-template-data.d.ts +5 -5
  300. package/lib/desy-forms/interfaces/label-data.d.ts +9 -9
  301. package/lib/desy-forms/interfaces/legend-data.d.ts +6 -6
  302. package/lib/desy-forms/interfaces/select-item-data.d.ts +8 -7
  303. package/lib/desy-modals/components/dialog/dialog.component.d.ts +35 -35
  304. package/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.d.ts +7 -0
  305. package/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.d.ts +7 -0
  306. package/lib/desy-modals/components/modal/modal.component.d.ts +45 -20
  307. package/lib/desy-modals/desy-modals.module.d.ts +2 -2
  308. package/lib/desy-modals/interfaces/dialog-options.d.ts +9 -9
  309. package/lib/desy-modals/interfaces/index.d.ts +6 -6
  310. package/lib/desy-modals/interfaces/modal-button-data.d.ts +4 -4
  311. package/lib/desy-modals/interfaces/modal-data.d.ts +5 -5
  312. package/lib/desy-modals/interfaces/modal-icon-data.d.ts +4 -4
  313. package/lib/desy-modals/interfaces/modal-options.d.ts +16 -16
  314. package/lib/desy-modals/interfaces/open-dialog-result.d.ts +6 -6
  315. package/lib/desy-modals/services/dialog.service.d.ts +14 -14
  316. package/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.d.ts +6 -0
  317. package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +19 -16
  318. package/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.d.ts +6 -0
  319. package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +21 -13
  320. package/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.d.ts +7 -0
  321. package/lib/desy-nav/components/footer/footer-meta/footer-meta.component.d.ts +10 -0
  322. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.d.ts +7 -0
  323. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +8 -0
  324. package/lib/desy-nav/components/footer/footer.component.d.ts +22 -10
  325. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +11 -7
  326. package/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.d.ts +10 -0
  327. package/lib/desy-nav/components/header/header-navigation/header-navigation.component.d.ts +13 -9
  328. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.d.ts +6 -0
  329. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.d.ts +3 -0
  330. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +31 -10
  331. package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +12 -9
  332. package/lib/desy-nav/components/header/header.component.d.ts +29 -18
  333. package/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.d.ts +15 -0
  334. package/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.d.ts +18 -17
  335. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +18 -0
  336. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.d.ts +8 -0
  337. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +15 -0
  338. package/lib/desy-nav/components/menu-vertical/menu-vertical.component.d.ts +19 -24
  339. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +23 -0
  340. package/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.d.ts +4 -0
  341. package/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.d.ts +15 -0
  342. package/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.d.ts +10 -0
  343. package/lib/desy-nav/components/menubar/directives/menubaritem.directive.d.ts +16 -0
  344. package/lib/desy-nav/components/menubar/menubar.component.d.ts +88 -0
  345. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +17 -0
  346. package/lib/desy-nav/components/nav/nav.component.d.ts +18 -16
  347. package/lib/desy-nav/components/notification/notification-item/notification-item.component.d.ts +9 -0
  348. package/lib/desy-nav/components/notification/notification.component.d.ts +38 -24
  349. package/lib/desy-nav/components/skip-link/skip-link.component.d.ts +14 -7
  350. package/lib/desy-nav/desy-nav.module.d.ts +2 -2
  351. package/lib/desy-nav/interfaces/breadcrumbs.data.d.ts +7 -7
  352. package/lib/desy-nav/interfaces/error-summary-data.d.ts +7 -7
  353. package/lib/desy-nav/interfaces/footer-data.d.ts +24 -27
  354. package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +11 -7
  355. package/lib/desy-nav/interfaces/header-navigation-data.d.ts +5 -5
  356. package/lib/desy-nav/interfaces/header-navigation-item-data.d.ts +11 -11
  357. package/lib/desy-nav/interfaces/header-offcanvas-data.d.ts +8 -9
  358. package/lib/desy-nav/interfaces/header-subnav-data.d.ts +11 -6
  359. package/lib/desy-nav/interfaces/index.d.ts +16 -20
  360. package/lib/desy-nav/interfaces/menu-horizontal-item-data.d.ts +13 -13
  361. package/lib/desy-nav/interfaces/menu-horizontal-item-event-data.d.ts +5 -5
  362. package/lib/desy-nav/interfaces/menu-vertical-items-data.d.ts +19 -17
  363. package/lib/desy-nav/interfaces/menu-vertical-sub-data.d.ts +7 -8
  364. package/lib/desy-nav/interfaces/menu-vertical-sub-items-data.d.ts +16 -13
  365. package/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.d.ts +6 -0
  366. package/lib/desy-nav/interfaces/menubar-item-sub-item.d.ts +9 -0
  367. package/lib/desy-nav/interfaces/menubar-item-sub.d.ts +6 -0
  368. package/lib/desy-nav/interfaces/menubar-item.d.ts +18 -0
  369. package/lib/desy-nav/interfaces/nav-item-event.data.d.ts +5 -5
  370. package/lib/desy-nav/interfaces/nav-item.data.d.ts +15 -14
  371. package/lib/desy-nav/interfaces/notification-items-data.d.ts +10 -7
  372. package/lib/desy-nav/interfaces/notification-options.d.ts +15 -18
  373. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +33 -38
  374. package/lib/desy-pagination/desy-pagination.module.d.ts +2 -2
  375. package/lib/desy-pagination/interfaces/index.d.ts +1 -1
  376. package/lib/desy-pagination/interfaces/pagination-item.data.d.ts +4 -4
  377. package/lib/desy-tables/components/table/components/table-caption.component.d.ts +4 -0
  378. package/lib/desy-tables/components/table/components/table-cell.component.d.ts +8 -0
  379. package/lib/desy-tables/components/table/components/table-header.component.d.ts +5 -0
  380. package/lib/desy-tables/components/table/components/table-row.component.d.ts +5 -0
  381. package/lib/desy-tables/components/table/table.component.d.ts +25 -13
  382. package/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.d.ts +13 -0
  383. package/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.d.ts +5 -0
  384. package/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.d.ts +8 -0
  385. package/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.d.ts +8 -0
  386. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +115 -88
  387. package/lib/desy-tables/desy-tables.module.d.ts +2 -2
  388. package/lib/desy-tables/directives/cell.directive.d.ts +14 -0
  389. package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +10 -10
  390. package/lib/desy-tables/directives/row.directive.d.ts +16 -0
  391. package/lib/desy-tables/interfaces/cell-data.d.ts +9 -9
  392. package/lib/desy-tables/interfaces/head-cell-data.d.ts +15 -15
  393. package/lib/desy-tables/interfaces/index.d.ts +4 -3
  394. package/lib/desy-tables/interfaces/recalculate-table-params.d.ts +11 -0
  395. package/lib/desy-tables/interfaces/row-data.d.ts +6 -5
  396. package/lib/desy-tables/interfaces/wrapper-data.d.ts +4 -0
  397. package/lib/desy-views/components/accordion/accordion-header/accordion-header.component.d.ts +5 -0
  398. package/lib/desy-views/components/accordion/accordion-item/accordion-item.component.d.ts +13 -0
  399. package/lib/desy-views/components/accordion/accordion.component.d.ts +36 -27
  400. package/lib/desy-views/components/alert/alert.component.d.ts +29 -27
  401. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +15 -17
  402. package/lib/desy-views/components/description-list/definition/definition.component.d.ts +6 -0
  403. package/lib/desy-views/components/description-list/description-item/description-item.component.d.ts +9 -0
  404. package/lib/desy-views/components/description-list/description-list.component.d.ts +12 -9
  405. package/lib/desy-views/components/description-list/term/term.component.d.ts +6 -0
  406. package/lib/desy-views/components/details/details.component.d.ts +14 -14
  407. package/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.d.ts +5 -0
  408. package/lib/desy-views/components/item/item-content-right/item-content-right.component.d.ts +3 -0
  409. package/lib/desy-views/components/item/item-item/item-item.component.d.ts +3 -0
  410. package/lib/desy-views/components/item/item.component.d.ts +36 -17
  411. package/lib/desy-views/components/media-object/media-object.component.d.ts +14 -14
  412. package/lib/desy-views/components/spinner/spinner.component.d.ts +6 -6
  413. package/lib/desy-views/components/status/status.component.d.ts +11 -11
  414. package/lib/desy-views/components/status-item/status-item.component.d.ts +31 -20
  415. package/lib/desy-views/components/tabs/panel/panel.component.d.ts +6 -0
  416. package/lib/desy-views/components/tabs/tab-item/tab-item.component.d.ts +12 -0
  417. package/lib/desy-views/components/tabs/tabs.component.d.ts +35 -23
  418. package/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.d.ts +3 -0
  419. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +35 -0
  420. package/lib/desy-views/desy-views.module.d.ts +2 -2
  421. package/lib/desy-views/interfaces/accordion-header.data.d.ts +5 -5
  422. package/lib/desy-views/interfaces/accordion-item.data.d.ts +10 -10
  423. package/lib/desy-views/interfaces/alert-options.d.ts +8 -8
  424. package/lib/desy-views/interfaces/description-item.data.d.ts +8 -0
  425. package/lib/desy-views/interfaces/index.d.ts +10 -10
  426. package/lib/desy-views/interfaces/open-alert-result.d.ts +6 -6
  427. package/lib/desy-views/interfaces/status-data.d.ts +8 -8
  428. package/lib/desy-views/interfaces/status-icon-data.d.ts +4 -4
  429. package/lib/desy-views/interfaces/status-item-title-data.d.ts +5 -5
  430. package/lib/desy-views/interfaces/tabs-items-data.d.ts +9 -9
  431. package/lib/desy-views/interfaces/tabs-panel-data.d.ts +8 -8
  432. package/lib/desy-views/interfaces/term-definition.data.d.ts +7 -0
  433. package/lib/desy-views/services/alert.service.d.ts +14 -14
  434. package/lib/shared/components/accessibility/accessibility.component.d.ts +20 -20
  435. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +26 -0
  436. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +25 -25
  437. package/lib/shared/components/content-base/content-base.component.d.ts +9 -0
  438. package/lib/shared/components/index.d.ts +5 -3
  439. package/lib/shared/components/text-or-html-required/text-or-html-required.component.d.ts +16 -16
  440. package/lib/shared/decorators/desy-content-child.decorator.d.ts +15 -0
  441. package/lib/shared/decorators/desy-on-input-change.decorator.d.ts +5 -0
  442. package/lib/shared/directives/attribute-change.directive.d.ts +10 -0
  443. package/lib/shared/directives/click-outside.directive.d.ts +9 -9
  444. package/lib/shared/directives/content-change.directive.d.ts +19 -0
  445. package/lib/shared/directives/content-empty.directive.d.ts +26 -0
  446. package/lib/shared/directives/custom-inner-content.directive.d.ts +22 -0
  447. package/lib/shared/directives/inner-content.directive.d.ts +9 -8
  448. package/lib/shared/interfaces/accesibility-data.d.ts +16 -16
  449. package/lib/shared/pipes/external-href.pipe.d.ts +8 -0
  450. package/lib/shared/pipes/inner-html.pipe.d.ts +7 -7
  451. package/lib/shared/pipes/make-html-list.pipe.d.ts +4 -4
  452. package/lib/shared/shared.module.d.ts +2 -2
  453. package/lib/shared/utils/focus-utils.d.ts +4 -4
  454. package/lib/shared/utils/search-utils.d.ts +14 -14
  455. package/lib/shared/utils/string-utils.d.ts +10 -0
  456. package/package.json +16 -11
  457. package/public-api.d.ts +160 -110
  458. package/esm2015/lib/desy-forms/components/checkboxes/item-checkbox/item-checkbox.component.js +0 -100
  459. package/esm2015/lib/desy-forms/components/radios/item-radio/item-radio.component.js +0 -89
  460. package/esm2015/lib/desy-nav/components/header/header-offcanvas-button/header-offcanvas-button.component.js +0 -62
  461. package/esm2015/lib/desy-nav/interfaces/notification-content-data.js +0 -2
  462. package/esm2015/lib/desy-nav/interfaces/notification-description-data.js +0 -2
  463. package/esm2015/lib/desy-nav/interfaces/notification-icon-data.js +0 -2
  464. package/esm2015/lib/desy-nav/interfaces/notification-title-data.js +0 -2
  465. package/esm2015/lib/desy-views/interfaces/description.data.js +0 -2
  466. package/esm2015/lib/desy-views/interfaces/item-data.js +0 -2
  467. package/esm2015/lib/desy-views/interfaces/item-description.data.js +0 -2
  468. package/esm2015/lib/shared/utils/navigation-utils.js +0 -18
  469. package/lib/desy-forms/components/checkboxes/item-checkbox/item-checkbox.component.d.ts +0 -39
  470. package/lib/desy-forms/components/radios/item-radio/item-radio.component.d.ts +0 -36
  471. package/lib/desy-nav/components/header/header-offcanvas-button/header-offcanvas-button.component.d.ts +0 -19
  472. package/lib/desy-nav/interfaces/notification-description-data.d.ts +0 -5
  473. package/lib/desy-nav/interfaces/notification-icon-data.d.ts +0 -3
  474. package/lib/desy-views/interfaces/description.data.d.ts +0 -7
  475. package/lib/desy-views/interfaces/item-data.d.ts +0 -19
  476. package/lib/desy-views/interfaces/item-description.data.d.ts +0 -8
  477. package/lib/shared/utils/navigation-utils.d.ts +0 -3
@@ -1,124 +1,124 @@
1
- import { Component, forwardRef, Input, ViewChild } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { FormFieldComponent } from '../form-field/form-field.component';
4
- import { TextareaComponent } from '../textarea/textarea.component';
5
- export class CharacterCountComponent extends FormFieldComponent {
6
- ngAfterViewInit() {
7
- this.textareaElement = this.textarea.textareaElement.nativeElement;
8
- this.textarea.registerInputTransform(this.inputTransform.bind(this));
9
- this.registerOnChange(this.onChange);
10
- this.registerOnTouched(this.onTouch);
11
- this.textarea.setDisabledState(this.disabled);
12
- setTimeout(() => this.textarea.writeValue(this.value), 50);
13
- }
14
- ngOnChanges(changes) {
15
- this.checkRequired();
16
- if (this.textarea) {
17
- setTimeout(() => this.textarea.ngOnChanges(changes), 50);
18
- }
19
- }
20
- inputTransform(value) {
21
- if (value) {
22
- if (this.maxlength) {
23
- let length = this.calculateLenght(value);
24
- this.displayCountMessage = !this.threshold || length > (this.maxlength * this.threshold / 100);
25
- while (length > this.maxlength) {
26
- value = value.substring(0, value.length - 1);
27
- length = this.calculateLenght(value);
28
- }
29
- this.remaining = this.maxlength - length;
30
- }
31
- else {
32
- const words = value.match(/[\wáéíóúÁÉÍÓÚüÜñÑ]+/g) || [];
33
- this.displayCountMessage = !this.threshold || (words.length > this.maxwords * this.threshold / 100);
34
- while (words.length > this.maxwords) {
35
- value = value.substring(0, value.lastIndexOf(words.pop()));
36
- }
37
- this.remaining = this.maxwords - words.length;
38
- }
39
- }
40
- else {
41
- value = '';
42
- this.displayCountMessage = !this.threshold;
43
- this.remaining = this.maxlength ? this.maxlength : this.maxwords;
44
- }
45
- this.textareaElement.value = value;
46
- return value;
47
- }
48
- calculateLenght(value) {
49
- let length = value.length;
50
- if (this.countbbdd && value) {
51
- const specialChars = value.match(/[^A-z0-9_\s.,:;]/g);
52
- length += specialChars ? specialChars.length : 0;
53
- }
54
- return length;
55
- }
56
- checkRequired() {
57
- if (!this.id) {
58
- throw Error('id is required');
59
- }
60
- if (!this.name) {
61
- throw Error('name is required');
62
- }
63
- if (!this.maxlength && !this.maxwords) {
64
- throw Error('maxlength or maxwords are required');
65
- }
66
- if (!this.hasLabel()) {
67
- throw Error('label is required');
68
- }
69
- }
70
- registerOnChange(fn) {
71
- this.onChange = fn;
72
- if (this.textarea) {
73
- this.textarea.registerOnChange(fn);
74
- this.onChange = (_) => { };
75
- }
76
- }
77
- registerOnTouched(fn) {
78
- this.onTouch = fn;
79
- if (this.textarea) {
80
- this.textarea.registerOnTouched(fn);
81
- this.onTouch = () => { };
82
- }
83
- }
84
- setDisabledState(isDisabled) {
85
- this.disabled = isDisabled;
86
- if (this.textarea) {
87
- this.textarea.setDisabledState(isDisabled);
88
- }
89
- }
90
- writeValue(value) {
91
- this.value = value;
92
- if (this.textarea) {
93
- this.textarea.writeValue(value);
94
- }
95
- }
96
- }
97
- CharacterCountComponent.decorators = [
98
- { type: Component, args: [{
99
- selector: 'desy-character-count',
100
- template: "<div>\n <desy-textarea\n [id]=\"id\"\n [name]=\"name\"\n [describedBy]=\"id + '-info'\"\n [rows]=\"rows\"\n [placeholder]=\"placeholder\"\n formGroupClasses=\"mb-0\"\n [classes]=\"['js-character-count', hasErrorsMessage() ? 'border-alert-base ring-2 ring-alert-base' : null, classes] | makeHtmlList\"\n [labelRef]=\"labelRef\" [labelData]=\"labelData\" [labelText]=\"labelText\"\n [hintRef]=\"hintRef\" [hintData]=\"hintData\" [hintText]=\"hintText\"\n [errorMessageRef]=\"errorMessageRef\" [errorMessageData]=\"errorMessageData\" [errorMessageText]=\"errorMessageText\"\n [role]=\"role\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaHidden]=\"ariaHidden\"\n [ariaDisabled]=\"ariaDisabled\"\n [ariaControls]=\"ariaControls\"\n [ariaCurrent]=\"ariaCurrent\"\n [ariaLive]=\"ariaLive\"\n [ariaExpanded]=\"ariaExpanded\"\n [ariaErrorMessage]=\"ariaErrorMessage\"\n [ariaHasPopup]=\"ariaHasPopup\"\n [tabindex]=\"tabindex\"></desy-textarea>\n\n <desy-hint *ngIf=\"!!displayCountMessage\"\n [id]=\"id + '-info'\" [classes]=\"['mt-xs text-sm', countMessageClasses] | makeHtmlList\" ariaLive=\"polite\"\n [text]=\"'Puedes escribir hasta ' + remaining + (maxlength ? ' caracteres' : ' palabras')\"></desy-hint>\n</div>\n",
101
- providers: [
102
- {
103
- provide: NG_VALUE_ACCESSOR,
104
- useExisting: forwardRef(() => CharacterCountComponent),
105
- multi: true
106
- }
107
- ]
108
- },] }
109
- ];
110
- CharacterCountComponent.propDecorators = {
111
- textarea: [{ type: ViewChild, args: [TextareaComponent,] }],
112
- name: [{ type: Input }],
113
- type: [{ type: Input }],
114
- rows: [{ type: Input }],
115
- placeholder: [{ type: Input }],
116
- maxlength: [{ type: Input }],
117
- countbbdd: [{ type: Input }],
118
- maxwords: [{ type: Input }],
119
- threshold: [{ type: Input }],
120
- formGroupClasses: [{ type: Input }],
121
- countMessageClasses: [{ type: Input }],
122
- classes: [{ type: Input }]
123
- };
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmFjdGVyLWNvdW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9jaGFyYWN0ZXItY291bnQvY2hhcmFjdGVyLWNvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBYW5FLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxrQkFBMEI7SUFvQnJFLGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQXFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFF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LFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7OztZQS9IRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsOHlDQUErQztnQkFDL0MsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7d0JBQ3RELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2FBQ0Y7Ozt1QkFHRSxTQUFTLFNBQUMsaUJBQWlCO21CQUUzQixLQUFLO21CQUNMLEtBQUs7bUJBQ0wsS0FBSzswQkFDTCxLQUFLO3dCQUNMLEtBQUs7d0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7K0JBQ0wsS0FBSztrQ0FDTCxLQUFLO3NCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4uL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktY2hhcmFjdGVyLWNvdW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJhY3Rlci1jb3VudC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hhcmFjdGVyQ291bnRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hhcmFjdGVyQ291bnRDb21wb25lbnQgZXh0ZW5kcyBGb3JtRmllbGRDb21wb25lbnQ8c3RyaW5nPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG5cbiAgQFZpZXdDaGlsZChUZXh0YXJlYUNvbXBvbmVudCkgdGV4dGFyZWE7XG5cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJvd3M6IG51bWJlcjtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgbWF4bGVuZ3RoOiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvdW50YmJkZDogYm9vbGVhbjtcbiAgQElucHV0KCkgbWF4d29yZHM6IG51bWJlcjtcbiAgQElucHV0KCkgdGhyZXNob2xkOiBudW1iZXI7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cENsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgY291bnRNZXNzYWdlQ2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XG5cbiAgdGV4dGFyZWFFbGVtZW50OiBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICBkaXNwbGF5Q291bnRNZXNzYWdlOiBib29sZWFuO1xuICByZW1haW5pbmc6IG51bWJlcjtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy50ZXh0YXJlYUVsZW1lbnQgPSAodGhpcy50ZXh0YXJlYS50ZXh0YXJlYUVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KTtcbiAgICB0aGlzLnRleHRhcmVhLnJlZ2lzdGVySW5wdXRUcmFuc2Zvcm0odGhpcy5pbnB1dFRyYW5zZm9ybS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlZ2lzdGVyT25DaGFuZ2UodGhpcy5vbkNoYW5nZSk7XG4gICAgdGhpcy5yZWdpc3Rlck9uVG91Y2hlZCh0aGlzLm9uVG91Y2gpO1xuICAgIHRoaXMudGV4dGFyZWEuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmRpc2FibGVkKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGV4dGFyZWEud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKSwgNTApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tSZXF1aXJlZCgpO1xuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGV4dGFyZWEubmdPbkNoYW5nZXMoY2hhbmdlcyksIDUwKTtcbiAgICB9XG4gIH1cblxuICBpbnB1dFRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLm1heGxlbmd0aCkge1xuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5jYWxjdWxhdGVMZW5naHQodmFsdWUpO1xuICAgICAgICB0aGlzLmRpc3BsYXlDb3VudE1lc3NhZ2UgPSAhdGhpcy50aHJlc2hvbGQgfHwgbGVuZ3RoID4gKHRoaXMubWF4bGVuZ3RoICogdGhpcy50aHJlc2hvbGQgLyAxMDApO1xuICAgICAgICB3aGlsZSAobGVuZ3RoID4gdGhpcy5tYXhsZW5ndGgpIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCB2YWx1ZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICBsZW5ndGggPSB0aGlzLmNhbGN1bGF0ZUxlbmdodCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1haW5pbmcgPSB0aGlzLm1heGxlbmd0aCAtIGxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHdvcmRzID0gdmFsdWUubWF0Y2goL1tcXHfDocOpw63Ds8O6w4HDicONw5PDmsO8w5zDscORXSsvZykgfHwgW107XG4gICAgICAgIHRoaXMuZGlzcGxheUNvdW50TWVzc2FnZSA9ICF0aGlzLnRocmVzaG9sZCB8fCAod29yZHMubGVuZ3RoID4gdGhpcy5tYXh3b3JkcyAqIHRoaXMudGhyZXNob2xkIC8gMTAwKTtcbiAgICAgICAgd2hpbGUgKCB3b3Jkcy5sZW5ndGggPiB0aGlzLm1heHdvcmRzKSB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgdmFsdWUubGFzdEluZGV4T2Yod29yZHMucG9wKCkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbWFpbmluZyA9IHRoaXMubWF4d29yZHMgLSB3b3Jkcy5sZW5ndGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gJyc7XG4gICAgICB0aGlzLmRpc3BsYXlDb3VudE1lc3NhZ2UgPSAhdGhpcy50aHJlc2hvbGQ7XG4gICAgICB0aGlzLnJlbWFpbmluZyA9IHRoaXMubWF4bGVuZ3RoID8gdGhpcy5tYXhsZW5ndGggOiB0aGlzLm1heHdvcmRzO1xuICAgIH1cblxuICAgIHRoaXMudGV4dGFyZWFFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgY2FsY3VsYXRlTGVuZ2h0KHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgaWYgKHRoaXMuY291bnRiYmRkICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBzcGVjaWFsQ2hhcnMgPSB2YWx1ZS5tYXRjaCgvW15BLXowLTlfXFxzLiw6O10vZyk7XG4gICAgICBsZW5ndGggKz0gc3BlY2lhbENoYXJzID8gc3BlY2lhbENoYXJzLmxlbmd0aCA6IDA7XG4gICAgfVxuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cblxuICBjaGVja1JlcXVpcmVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pZCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ2lkIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICB0aHJvdyBFcnJvcignbmFtZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMubWF4bGVuZ3RoICYmICF0aGlzLm1heHdvcmRzKSB7XG4gICAgICB0aHJvdyBFcnJvcignbWF4bGVuZ3RoIG9yIG1heHdvcmRzIGFyZSByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaGFzTGFiZWwoKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ2xhYmVsIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XG4gICAgICB0aGlzLnRleHRhcmVhLnJlZ2lzdGVyT25DaGFuZ2UoZm4pO1xuICAgICAgdGhpcy5vbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xuICAgICAgdGhpcy50ZXh0YXJlYS5yZWdpc3Rlck9uVG91Y2hlZChmbik7XG4gICAgICB0aGlzLm9uVG91Y2ggPSAoKSA9PiB7IH07XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcbiAgICAgIHRoaXMudGV4dGFyZWEuc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcbiAgICAgIHRoaXMudGV4dGFyZWEud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
1
+ import { Component, forwardRef, Input, ViewChild } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { FormFieldComponent } from '../form-field/form-field.component';
4
+ import { TextareaComponent } from '../textarea/textarea.component';
5
+ export class CharacterCountComponent extends FormFieldComponent {
6
+ ngAfterViewInit() {
7
+ this.textareaElement = this.textarea.textareaElement.nativeElement;
8
+ this.textarea.registerInputTransform(this.inputTransform.bind(this));
9
+ this.registerOnChange(this.onChange);
10
+ this.registerOnTouched(this.onTouch);
11
+ this.textarea.setDisabledState(this.disabled);
12
+ setTimeout(() => this.textarea.writeValue(this.value), 50);
13
+ }
14
+ ngOnChanges(changes) {
15
+ this.checkRequired();
16
+ if (this.textarea) {
17
+ setTimeout(() => this.textarea.ngOnChanges(changes), 50);
18
+ }
19
+ }
20
+ inputTransform(value) {
21
+ if (value) {
22
+ if (this.maxlength) {
23
+ let length = this.calculateLenght(value);
24
+ this.displayCountMessage = !this.threshold || length > (this.maxlength * this.threshold / 100);
25
+ while (length > this.maxlength) {
26
+ value = value.substring(0, value.length - 1);
27
+ length = this.calculateLenght(value);
28
+ }
29
+ this.remaining = this.maxlength - length;
30
+ }
31
+ else {
32
+ const words = value.match(/[\wáéíóúÁÉÍÓÚüÜñÑ]+/g) || [];
33
+ this.displayCountMessage = !this.threshold || (words.length > this.maxwords * this.threshold / 100);
34
+ while (words.length > this.maxwords) {
35
+ value = value.substring(0, value.lastIndexOf(words.pop()));
36
+ }
37
+ this.remaining = this.maxwords - words.length;
38
+ }
39
+ }
40
+ else {
41
+ value = '';
42
+ this.displayCountMessage = !this.threshold;
43
+ this.remaining = this.maxlength ? this.maxlength : this.maxwords;
44
+ }
45
+ this.textareaElement.value = value;
46
+ return value;
47
+ }
48
+ calculateLenght(value) {
49
+ let length = value.length;
50
+ if (this.countbbdd && value) {
51
+ const specialChars = value.match(/[^A-z0-9_\s.,:;]/g);
52
+ length += specialChars ? specialChars.length : 0;
53
+ }
54
+ return length;
55
+ }
56
+ checkRequired() {
57
+ if (!this.id) {
58
+ throw Error('id is required');
59
+ }
60
+ if (!this.name) {
61
+ throw Error('name is required');
62
+ }
63
+ if (!this.maxlength && !this.maxwords) {
64
+ throw Error('maxlength or maxwords are required');
65
+ }
66
+ if (!this.hasLabel()) {
67
+ throw Error('label is required');
68
+ }
69
+ }
70
+ registerOnChange(fn) {
71
+ this.onChange = fn;
72
+ if (this.textarea) {
73
+ this.textarea.registerOnChange(fn);
74
+ this.onChange = (_) => { };
75
+ }
76
+ }
77
+ registerOnTouched(fn) {
78
+ this.onTouch = fn;
79
+ if (this.textarea) {
80
+ this.textarea.registerOnTouched(fn);
81
+ this.onTouch = () => { };
82
+ }
83
+ }
84
+ setDisabledState(isDisabled) {
85
+ this.disabled = isDisabled;
86
+ if (this.textarea) {
87
+ this.textarea.setDisabledState(isDisabled);
88
+ }
89
+ }
90
+ writeValue(value) {
91
+ this.value = value;
92
+ if (this.textarea) {
93
+ this.textarea.writeValue(value);
94
+ }
95
+ }
96
+ }
97
+ CharacterCountComponent.decorators = [
98
+ { type: Component, args: [{
99
+ selector: 'desy-character-count',
100
+ template: "<div>\r\n <desy-textarea\r\n [id]=\"id\"\r\n [name]=\"name\"\r\n [describedBy]=\"id + '-info'\"\r\n [rows]=\"rows\"\r\n [placeholder]=\"placeholder\"\r\n formGroupClasses= \"['' + (formGroupClasses ? formGroupClasses : 'mb-0')] | makeHtmlList\"\r\n [classes]=\"['js-character-count', hasErrorsMessage() ? 'border-alert-base ring-2 ring-alert-base' : null, classes] | makeHtmlList\"\r\n [labelRef]=\"labelRef\" [labelData]=\"labelData\" [labelText]=\"labelText\"\r\n [hintRef]=\"hintRef\" [hintData]=\"hintData\" [hintText]=\"hintText\"\r\n [errorMessageRef]=\"errorMessageRef\" [errorMessageData]=\"errorMessageData\" [errorMessageText]=\"errorMessageText\"\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\r\n [ariaLabelledBy]=\"ariaLabelledBy\"\r\n [ariaHidden]=\"ariaHidden\"\r\n [ariaDisabled]=\"ariaDisabled\"\r\n [ariaControls]=\"ariaControls\"\r\n [ariaCurrent]=\"ariaCurrent\"\r\n [ariaLive]=\"ariaLive\"\r\n [ariaExpanded]=\"ariaExpanded\"\r\n [ariaErrorMessage]=\"ariaErrorMessage\"\r\n [ariaHasPopup]=\"ariaHasPopup\"\r\n [tabindex]=\"tabindex\"></desy-textarea>\r\n\r\n <desy-hint *ngIf=\"!!displayCountMessage\"\r\n [id]=\"id + '-info'\" [classes]=\"['mt-xs text-sm', countMessageClasses] | makeHtmlList\" ariaLive=\"polite\"\r\n [text]=\"'Puedes escribir hasta ' + remaining + (maxlength ? ' caracteres' : ' palabras')\"></desy-hint>\r\n</div>\r\n",
101
+ providers: [
102
+ {
103
+ provide: NG_VALUE_ACCESSOR,
104
+ useExisting: forwardRef(() => CharacterCountComponent),
105
+ multi: true
106
+ }
107
+ ]
108
+ },] }
109
+ ];
110
+ CharacterCountComponent.propDecorators = {
111
+ textarea: [{ type: ViewChild, args: [TextareaComponent,] }],
112
+ name: [{ type: Input }],
113
+ type: [{ type: Input }],
114
+ rows: [{ type: Input }],
115
+ placeholder: [{ type: Input }],
116
+ maxlength: [{ type: Input }],
117
+ countbbdd: [{ type: Input }],
118
+ maxwords: [{ type: Input }],
119
+ threshold: [{ type: Input }],
120
+ formGroupClasses: [{ type: Input }],
121
+ countMessageClasses: [{ type: Input }],
122
+ classes: [{ type: Input }]
123
+ };
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmFjdGVyLWNvdW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9jaGFyYWN0ZXItY291bnQvY2hhcmFjdGVyLWNvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBYW5FLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxrQkFBMEI7SUFvQnJFLGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQXFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lB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QUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7OztZQS9IRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMseTZDQUErQztnQkFDL0MsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7d0JBQ3RELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2FBQ0Y7Ozt1QkFHRSxTQUFTLFNBQUMsaUJBQWlCO21CQUUzQixLQUFLO21CQUNMLEtBQUs7bUJBQ0wsS0FBSzswQkFDTCxLQUFLO3dCQUNMLEtBQUs7d0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7K0JBQ0wsS0FBSztrQ0FDTCxLQUFLO3NCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZXN5LWNoYXJhY3Rlci1jb3VudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJhY3Rlci1jb3VudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGFyYWN0ZXJDb3VudENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhcmFjdGVyQ291bnRDb21wb25lbnQgZXh0ZW5kcyBGb3JtRmllbGRDb21wb25lbnQ8c3RyaW5nPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVGV4dGFyZWFDb21wb25lbnQpIHRleHRhcmVhO1xyXG5cclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJvd3M6IG51bWJlcjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heGxlbmd0aDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNvdW50YmJkZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBtYXh3b3JkczogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHRocmVzaG9sZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cENsYXNzZXM6IHN0cmluZztcclxuICBASW5wdXQoKSBjb3VudE1lc3NhZ2VDbGFzc2VzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xyXG5cclxuICB0ZXh0YXJlYUVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQ7XHJcbiAgZGlzcGxheUNvdW50TWVzc2FnZTogYm9vbGVhbjtcclxuICByZW1haW5pbmc6IG51bWJlcjtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZXh0YXJlYUVsZW1lbnQgPSAodGhpcy50ZXh0YXJlYS50ZXh0YXJlYUVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KTtcclxuICAgIHRoaXMudGV4dGFyZWEucmVnaXN0ZXJJbnB1dFRyYW5zZm9ybSh0aGlzLmlucHV0VHJhbnNmb3JtLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy5yZWdpc3Rlck9uQ2hhbmdlKHRoaXMub25DaGFuZ2UpO1xyXG4gICAgdGhpcy5yZWdpc3Rlck9uVG91Y2hlZCh0aGlzLm9uVG91Y2gpO1xyXG4gICAgdGhpcy50ZXh0YXJlYS5zZXREaXNhYmxlZFN0YXRlKHRoaXMuZGlzYWJsZWQpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRleHRhcmVhLndyaXRlVmFsdWUodGhpcy52YWx1ZSksIDUwKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tSZXF1aXJlZCgpO1xyXG4gICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRleHRhcmVhLm5nT25DaGFuZ2VzKGNoYW5nZXMpLCA1MCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dFRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5tYXhsZW5ndGgpIHtcclxuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5jYWxjdWxhdGVMZW5naHQodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvdW50TWVzc2FnZSA9ICF0aGlzLnRocmVzaG9sZCB8fCBsZW5ndGggPiAodGhpcy5tYXhsZW5ndGggKiB0aGlzLnRocmVzaG9sZCAvIDEwMCk7XHJcbiAgICAgICAgd2hpbGUgKGxlbmd0aCA+IHRoaXMubWF4bGVuZ3RoKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCB2YWx1ZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgIGxlbmd0aCA9IHRoaXMuY2FsY3VsYXRlTGVuZ2h0KHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW1haW5pbmcgPSB0aGlzLm1heGxlbmd0aCAtIGxlbmd0aDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCB3b3JkcyA9IHZhbHVlLm1hdGNoKC9bXFx3w6HDqcOtw7PDusOBw4nDjcOTw5rDvMOcw7HDkV0rL2cpIHx8IFtdO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvdW50TWVzc2FnZSA9ICF0aGlzLnRocmVzaG9sZCB8fCAod29yZHMubGVuZ3RoID4gdGhpcy5tYXh3b3JkcyAqIHRoaXMudGhyZXNob2xkIC8gMTAwKTtcclxuICAgICAgICB3aGlsZSAoIHdvcmRzLmxlbmd0aCA+IHRoaXMubWF4d29yZHMpIHtcclxuICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHZhbHVlLmxhc3RJbmRleE9mKHdvcmRzLnBvcCgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVtYWluaW5nID0gdGhpcy5tYXh3b3JkcyAtIHdvcmRzLmxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5kaXNwbGF5Q291bnRNZXNzYWdlID0gIXRoaXMudGhyZXNob2xkO1xyXG4gICAgICB0aGlzLnJlbWFpbmluZyA9IHRoaXMubWF4bGVuZ3RoID8gdGhpcy5tYXhsZW5ndGggOiB0aGlzLm1heHdvcmRzO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGV4dGFyZWFFbGVtZW50LnZhbHVlID0gdmFsdWU7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVMZW5naHQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBsZXQgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xyXG4gICAgaWYgKHRoaXMuY291bnRiYmRkICYmIHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHNwZWNpYWxDaGFycyA9IHZhbHVlLm1hdGNoKC9bXkEtejAtOV9cXHMuLDo7XS9nKTtcclxuICAgICAgbGVuZ3RoICs9IHNwZWNpYWxDaGFycyA/IHNwZWNpYWxDaGFycy5sZW5ndGggOiAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNoZWNrUmVxdWlyZWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaWQpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ2lkIGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICB0aHJvdyBFcnJvcignbmFtZSBpcyByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm1heGxlbmd0aCAmJiAhdGhpcy5tYXh3b3Jkcykge1xyXG4gICAgICB0aHJvdyBFcnJvcignbWF4bGVuZ3RoIG9yIG1heHdvcmRzIGFyZSByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmhhc0xhYmVsKCkpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ2xhYmVsIGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XHJcbiAgICAgIHRoaXMudGV4dGFyZWEucmVnaXN0ZXJPbkNoYW5nZShmbik7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcclxuICAgICAgdGhpcy50ZXh0YXJlYS5yZWdpc3Rlck9uVG91Y2hlZChmbik7XHJcbiAgICAgIHRoaXMub25Ub3VjaCA9ICgpID0+IHsgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xyXG4gICAgICB0aGlzLnRleHRhcmVhLnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XHJcbiAgICAgIHRoaXMudGV4dGFyZWEud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,190 @@
1
+ import { __decorate } from "tslib";
2
+ import { ChangeDetectorRef, Component, ContentChildren, EventEmitter, Host, Input, Output, ViewChild } from '@angular/core';
3
+ import { ContentComponent } from '../../../../desy-commons/components/content/content.component';
4
+ import { animate, animateChild, query, state, style, transition, trigger } from '@angular/animations';
5
+ import { LabelComponent } from '../../label/label.component';
6
+ import { HintComponent } from '../../hint/hint.component';
7
+ import { CheckboxesComponent } from '../checkboxes.component';
8
+ import { AccessibilityComponent } from '../../../../shared/components';
9
+ import { DesyOnInputChange } from "../../../../shared/decorators/desy-on-input-change.decorator";
10
+ export class CheckboxItemComponent extends AccessibilityComponent {
11
+ constructor(checkboxes, changeDetectorRef) {
12
+ super();
13
+ this.checkboxes = checkboxes;
14
+ this.changeDetectorRef = changeDetectorRef;
15
+ this.checkedChange = new EventEmitter();
16
+ this.indeterminateChange = new EventEmitter();
17
+ if (!this.checkboxes) {
18
+ throw Error('Checkbox items must be inside of CheckboxesComponent');
19
+ }
20
+ }
21
+ ngOnInit() {
22
+ this.checkboxes.markForUpdateCheckboxIds();
23
+ }
24
+ ngOnDestroy() {
25
+ this.checkboxes.markForUpdateCheckboxIds();
26
+ }
27
+ ngOnChanges(changes) {
28
+ if (!this.value) {
29
+ throw Error('value is required for checkbox item');
30
+ }
31
+ if (this.checked !== this.lastChecked && this.isInit()) {
32
+ this.setChecked(this.checked);
33
+ this.checkboxes.updateValueFromCheckboxItems();
34
+ }
35
+ else if (this.lastValue !== undefined && this.lastValue !== this.value) {
36
+ this.checkboxes.updateValueFromCheckboxItems();
37
+ }
38
+ if (this.indeterminateChecked !== this.lastIndeterminate && this.isInit()) {
39
+ this.setIndeterminateChecked(this.indeterminateChecked);
40
+ this.checkboxes.updateValueFromCheckboxItems();
41
+ }
42
+ this.lastValue = this.value;
43
+ if (this.id !== this.checkboxId) {
44
+ this.checkboxes.markForUpdateCheckboxIds();
45
+ }
46
+ }
47
+ ngAfterViewInit() {
48
+ this.setChecked(this.checked);
49
+ this.setIndeterminateChecked(this.indeterminateChecked);
50
+ this.checkboxes.updateValueFromCheckboxItems();
51
+ }
52
+ getItemHintId() {
53
+ return this.hintComponentList && this.hintComponentList.length > 0 && this.checkboxId ? this.checkboxId + '-item-hint' : null;
54
+ }
55
+ hasChanged() {
56
+ // Se establece el cambio a visualizar en el input
57
+ const input = this.inputElement.nativeElement;
58
+ if (this.isIndeterminate) {
59
+ if (input.readOnly) {
60
+ input.checked = false;
61
+ input.readOnly = false;
62
+ }
63
+ else if (!input.checked) {
64
+ input.readOnly = true;
65
+ input.indeterminate = true;
66
+ }
67
+ }
68
+ this.setChecked(input.checked);
69
+ this.setIndeterminateChecked(input.indeterminate);
70
+ this.checkboxes.updateValueFromCheckboxItems();
71
+ }
72
+ setChecked(checked) {
73
+ this.checked = checked;
74
+ this.lastChecked = checked;
75
+ this.checkedChange.emit(checked);
76
+ this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado
77
+ }
78
+ setIndeterminateChecked(indeterminateChecked) {
79
+ this.indeterminateChecked = indeterminateChecked;
80
+ this.lastIndeterminate = indeterminateChecked;
81
+ this.indeterminateChange.emit(indeterminateChecked);
82
+ this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado
83
+ }
84
+ setIndeterminateStatus() {
85
+ var _a;
86
+ const input = (_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.nativeElement;
87
+ if (input) {
88
+ if (this.indeterminateChecked) {
89
+ input.readOnly = true;
90
+ input.indeterminate = true;
91
+ }
92
+ else if (input.readOnly) {
93
+ input.readOnly = false;
94
+ input.indeterminate = false;
95
+ }
96
+ }
97
+ }
98
+ isInit() {
99
+ return !!this.inputElement;
100
+ }
101
+ getValue() {
102
+ const input = this.inputElement.nativeElement;
103
+ return input.checked || input.indeterminate ? this.value : null;
104
+ }
105
+ updateCheckboxId(index) {
106
+ if (this.id) {
107
+ this.checkboxId = this.id;
108
+ }
109
+ else {
110
+ const idPrefix = this.checkboxes.idPrefix ? this.checkboxes.idPrefix : this.checkboxes.name;
111
+ if (index === 0) {
112
+ this.checkboxId = idPrefix;
113
+ }
114
+ else {
115
+ this.checkboxId = `${idPrefix}-${index}`;
116
+ }
117
+ }
118
+ if (this.labelComponentList && this.labelComponentList.length > 0) {
119
+ this.labelComponentList.first.for = this.checkboxId;
120
+ }
121
+ if (this.hintComponentList && this.hintComponentList.length > 0) {
122
+ this.hintComponentList.first.id = this.getItemHintId();
123
+ }
124
+ this.changeDetectorRef.detectChanges();
125
+ }
126
+ /*
127
+ * Funciones para aportar información desde el componente checkboxes que lo contiene
128
+ */
129
+ hasDividers() {
130
+ return this.checkboxes.hasDividers;
131
+ }
132
+ hasError() {
133
+ return this.checkboxes.hasErrorsMessage();
134
+ }
135
+ getNameCheckbox() {
136
+ return this.checkboxes.name;
137
+ }
138
+ getDescribedBy() {
139
+ return !this.checkboxes.hasFieldset() ? this.checkboxes.describedBy : null;
140
+ }
141
+ }
142
+ CheckboxItemComponent.decorators = [
143
+ { type: Component, args: [{
144
+ selector: 'desy-checkbox-item',
145
+ template: "<div [ngClass]=\"{'border-t border-b border-neutral-base -mb-px' : hasDividers()}\" [class]=\"classes\">\r\n <div class=\"relative flex items-start py-base\">\r\n <div class=\"flex items-center mx-sm\">\r\n <input #input class=\"w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base\"\r\n [checked]=\"checked\"\r\n [attr.id]=\"checkboxId\"\r\n [attr.name]=\"name ? name : getNameCheckbox()\"\r\n type=\"checkbox\"\r\n [value]=\"value\" (change)=\"hasChanged()\"\r\n [attr.disabled]=\"disabled ? true : null\"\r\n [attr.aria-controls]=\"conditionalContentList && conditionalContentList.length > 0 ? 'conditional-' + checkboxId : null\"\r\n [attr.aria-describedby]=\"[getDescribedBy(), getItemHintId()] | makeHtmlList:null\"\r\n [attr.aria-invalid]=\"hasError() ? true : null\"\r\n\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n </div>\r\n <div class=\"pt-0.5 leading-5\">\r\n <ng-container *ngIf=\"labelComponentList && labelComponentList.length > 0\">\r\n <ng-content select=\"desy-label\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!(labelComponentList && labelComponentList.length > 0)\">\r\n <desy-label [for]=\"checkboxId\">\r\n <ng-content></ng-content>\r\n </desy-label>\r\n </ng-container>\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"conditional && conditionalContentList && conditionalContentList.length > 0 && (input.checked || input.indeterminate)\" @displayConditional\r\n class=\"mb-base ml-5 py-sm pl-6 origin-top-left border-l-2 border-primary-base\"\r\n [attr.id]=\"'conditional-' + checkboxId\">\r\n <ng-container *desyCustomInnerContent=\"{ component: conditionalContentList.first }\"></ng-container>\r\n </div>\r\n</div>\r\n",
146
+ animations: [
147
+ trigger('displayConditional', [
148
+ state('void', style({
149
+ opacity: '0.0',
150
+ transform: 'scale(0.95)'
151
+ })),
152
+ state('*', style({
153
+ opacity: '1.0',
154
+ transform: 'scale(1.0)'
155
+ })),
156
+ transition(':enter', [
157
+ animate('100ms ease-out')
158
+ ]),
159
+ transition('* => *', [
160
+ query('@*', animateChild(), { optional: true })
161
+ ])
162
+ ])
163
+ ]
164
+ },] }
165
+ ];
166
+ CheckboxItemComponent.ctorParameters = () => [
167
+ { type: CheckboxesComponent, decorators: [{ type: Host }] },
168
+ { type: ChangeDetectorRef }
169
+ ];
170
+ CheckboxItemComponent.propDecorators = {
171
+ inputElement: [{ type: ViewChild, args: ['input',] }],
172
+ id: [{ type: Input }],
173
+ value: [{ type: Input }],
174
+ name: [{ type: Input }],
175
+ conditional: [{ type: Input }],
176
+ disabled: [{ type: Input }],
177
+ isIndeterminate: [{ type: Input }],
178
+ indeterminateChecked: [{ type: Input }],
179
+ classes: [{ type: Input }],
180
+ labelComponentList: [{ type: ContentChildren, args: [LabelComponent,] }],
181
+ hintComponentList: [{ type: ContentChildren, args: [HintComponent,] }],
182
+ conditionalContentList: [{ type: ContentChildren, args: [ContentComponent,] }],
183
+ checked: [{ type: Input }],
184
+ checkedChange: [{ type: Output }],
185
+ indeterminateChange: [{ type: Output }]
186
+ };
187
+ __decorate([
188
+ DesyOnInputChange('setIndeterminateStatus')
189
+ ], CheckboxItemComponent.prototype, "indeterminateChecked", void 0);
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2NvbXBvbmVudHMvY2hlY2tib3hlcy9jaGVja2JveC1pdGVtL2NoZWNrYm94LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ1UsaUJBQWlCLEVBQ2hDLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLElBQUksRUFDSixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMvRixPQUFPLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQXdCL0YsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHNCQUFzQjtJQTZCL0QsWUFBNEIsVUFBK0IsRUFBVSxpQkFBb0M7UUFDdkcsS0FBSyxFQUFFLENBQUM7UUFEa0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBUi9GLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0Qsd0JBQW1CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFTekUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsTUFBTSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztTQUNyRTtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixNQUFNLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUNoRDthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUNoRDtRQUVELElBQUcsSUFBSSxDQUFDLG9CQUFvQixLQUFLLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUM7WUFDdkUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUNoRDtRQUdELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUU1QixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hJLENBQUM7SUFFRCxVQUFVO1FBQ1Isa0RBQWtEO1FBQ2xELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzthQUN4QjtpQkFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDekIsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQzVCO1NBQ0Y7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLHVEQUF1RDtJQUNqRyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsb0JBQTZCO1FBQ25ELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUNqRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsb0JBQW9CLENBQUM7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLHVEQUF1RDtJQUNqRyxDQUFDO0lBRUQsc0JBQXNCOztRQUNwQixNQUFNLEtBQUssU0FBRyxJQUFJLENBQUMsWUFBWSwwQ0FBRSxhQUFhLENBQUM7UUFDL0MsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDN0IsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQzVCO2lCQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDekIsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFjO1FBQzdCLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUMzQjthQUFNO1lBQ0wsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUM1RixJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLFFBQVEsSUFBSSxLQUFLLEVBQUUsQ0FBQzthQUMxQztTQUNGO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUNyRDtRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4RDtRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFFSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdFLENBQUM7OztZQW5NRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsbzJGQUE2QztnQkFDN0MsVUFBVSxFQUFFO29CQUNWLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTt3QkFDNUIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7NEJBQ2xCLE9BQU8sRUFBRSxLQUFLOzRCQUNkLFNBQVMsRUFBRSxhQUFhO3lCQUN6QixDQUFDLENBQUM7d0JBQ0gsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7NEJBQ2YsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsU0FBUyxFQUFFLFlBQVk7eUJBQ3hCLENBQUMsQ0FBQzt3QkFDSCxVQUFVLENBQUMsUUFBUSxFQUFFOzRCQUNuQixPQUFPLENBQUMsZ0JBQWdCLENBQUM7eUJBQzFCLENBQUM7d0JBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTs0QkFDbkIsS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQzt5QkFDOUMsQ0FBQztxQkFDSCxDQUFDO2lCQUNIO2FBQ0Y7OztZQXpCTyxtQkFBbUIsdUJBdURaLElBQUk7WUF0RUYsaUJBQWlCOzs7MkJBMkMvQixTQUFTLFNBQUMsT0FBTztpQkFFakIsS0FBSztvQkFDTCxLQUFLO21CQUNMLEtBQUs7MEJBQ0wsS0FBSzt1QkFDTCxLQUFLOzhCQUNMLEtBQUs7bUNBR0wsS0FBSztzQkFDTCxLQUFLO2lDQUVMLGVBQWUsU0FBQyxjQUFjO2dDQUM5QixlQUFlLFNBQUMsYUFBYTtxQ0FDN0IsZUFBZSxTQUFDLGdCQUFnQjtzQkFFaEMsS0FBSzs0QkFFTCxNQUFNO2tDQUNOLE1BQU07O0FBVkU7SUFEUixpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQzttRUFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0LFxyXG4gIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LFxyXG4gIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0l0ZW1DaGVja2JveERhdGF9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQge0NvbnRlbnRDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL2Rlc3ktY29tbW9ucy9jb21wb25lbnRzL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQge2FuaW1hdGUsIGFuaW1hdGVDaGlsZCwgcXVlcnksIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7TGFiZWxDb21wb25lbnR9IGZyb20gJy4uLy4uL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7SGludENvbXBvbmVudH0gZnJvbSAnLi4vLi4vaGludC9oaW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Q2hlY2tib3hlc0NvbXBvbmVudH0gZnJvbSAnLi4vY2hlY2tib3hlcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0FjY2Vzc2liaWxpdHlDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuaW1wb3J0IHtEZXN5T25JbnB1dENoYW5nZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktb24taW5wdXQtY2hhbmdlLmRlY29yYXRvclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZXN5LWNoZWNrYm94LWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdkaXNwbGF5Q29uZGl0aW9uYWwnLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe1xyXG4gICAgICAgIG9wYWNpdHk6ICcwLjAnLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDAuOTUpJ1xyXG4gICAgICB9KSksXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoe1xyXG4gICAgICAgIG9wYWNpdHk6ICcxLjAnLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDEuMCknXHJcbiAgICAgIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzEwMG1zIGVhc2Utb3V0JylcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gKicsIFtcclxuICAgICAgICBxdWVyeSgnQConLCBhbmltYXRlQ2hpbGQoKSwge29wdGlvbmFsOiB0cnVlfSlcclxuICAgICAgXSlcclxuICAgIF0pXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hJdGVtQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEl0ZW1DaGVja2JveERhdGEge1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgaWQ6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWx1ZTogYW55O1xyXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBjb25kaXRpb25hbDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpc0luZGV0ZXJtaW5hdGU6IGJvb2xlYW47XHJcblxyXG4gIEBEZXN5T25JbnB1dENoYW5nZSgnc2V0SW5kZXRlcm1pbmF0ZVN0YXR1cycpXHJcbiAgQElucHV0KCkgaW5kZXRlcm1pbmF0ZUNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKExhYmVsQ29tcG9uZW50KSBsYWJlbENvbXBvbmVudExpc3Q6IFF1ZXJ5TGlzdDxMYWJlbENvbXBvbmVudD47XHJcbiAgQENvbnRlbnRDaGlsZHJlbihIaW50Q29tcG9uZW50KSBoaW50Q29tcG9uZW50TGlzdDogUXVlcnlMaXN0PEhpbnRDb21wb25lbnQ+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oQ29udGVudENvbXBvbmVudCkgY29uZGl0aW9uYWxDb250ZW50TGlzdDogUXVlcnlMaXN0PENvbnRlbnRDb21wb25lbnQ+O1xyXG5cclxuICBASW5wdXQoKSBjaGVja2VkOiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgaW5kZXRlcm1pbmF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgbGFzdENoZWNrZWQ7XHJcbiAgbGFzdEluZGV0ZXJtaW5hdGU7XHJcbiAgbGFzdFZhbHVlO1xyXG4gIGNoZWNrYm94SWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBIb3N0KCkgcHJpdmF0ZSBjaGVja2JveGVzOiBDaGVja2JveGVzQ29tcG9uZW50LCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGlmICghdGhpcy5jaGVja2JveGVzKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdDaGVja2JveCBpdGVtcyBtdXN0IGJlIGluc2lkZSBvZiBDaGVja2JveGVzQ29tcG9uZW50Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tib3hlcy5tYXJrRm9yVXBkYXRlQ2hlY2tib3hJZHMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja2JveGVzLm1hcmtGb3JVcGRhdGVDaGVja2JveElkcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCd2YWx1ZSBpcyByZXF1aXJlZCBmb3IgY2hlY2tib3ggaXRlbScpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNoZWNrZWQgIT09IHRoaXMubGFzdENoZWNrZWQgJiYgdGhpcy5pc0luaXQoKSkge1xyXG4gICAgICB0aGlzLnNldENoZWNrZWQodGhpcy5jaGVja2VkKTtcclxuICAgICAgdGhpcy5jaGVja2JveGVzLnVwZGF0ZVZhbHVlRnJvbUNoZWNrYm94SXRlbXMoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5sYXN0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmxhc3RWYWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xyXG4gICAgICB0aGlzLmNoZWNrYm94ZXMudXBkYXRlVmFsdWVGcm9tQ2hlY2tib3hJdGVtcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQgIT09IHRoaXMubGFzdEluZGV0ZXJtaW5hdGUgJiYgdGhpcy5pc0luaXQoKSl7XHJcbiAgICAgIHRoaXMuc2V0SW5kZXRlcm1pbmF0ZUNoZWNrZWQodGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZCk7XHJcbiAgICAgIHRoaXMuY2hlY2tib3hlcy51cGRhdGVWYWx1ZUZyb21DaGVja2JveEl0ZW1zKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMubGFzdFZhbHVlID0gdGhpcy52YWx1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5pZCAhPT0gdGhpcy5jaGVja2JveElkKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tib3hlcy5tYXJrRm9yVXBkYXRlQ2hlY2tib3hJZHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0Q2hlY2tlZCh0aGlzLmNoZWNrZWQpO1xyXG4gICAgdGhpcy5zZXRJbmRldGVybWluYXRlQ2hlY2tlZCh0aGlzLmluZGV0ZXJtaW5hdGVDaGVja2VkKTtcclxuICAgIHRoaXMuY2hlY2tib3hlcy51cGRhdGVWYWx1ZUZyb21DaGVja2JveEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBnZXRJdGVtSGludElkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5oaW50Q29tcG9uZW50TGlzdCAmJiB0aGlzLmhpbnRDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDAgJiYgdGhpcy5jaGVja2JveElkID8gdGhpcy5jaGVja2JveElkICsgJy1pdGVtLWhpbnQnIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGhhc0NoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAvLyBTZSBlc3RhYmxlY2UgZWwgY2FtYmlvIGEgdmlzdWFsaXphciBlbiBlbCBpbnB1dFxyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuaXNJbmRldGVybWluYXRlKSB7XHJcbiAgICAgIGlmIChpbnB1dC5yZWFkT25seSkge1xyXG4gICAgICAgIGlucHV0LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICBpbnB1dC5yZWFkT25seSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpbnB1dC5jaGVja2VkKSB7XHJcbiAgICAgICAgaW5wdXQucmVhZE9ubHkgPSB0cnVlO1xyXG4gICAgICAgIGlucHV0LmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldENoZWNrZWQoaW5wdXQuY2hlY2tlZCk7XHJcbiAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGVDaGVja2VkKGlucHV0LmluZGV0ZXJtaW5hdGUpO1xyXG4gICAgdGhpcy5jaGVja2JveGVzLnVwZGF0ZVZhbHVlRnJvbUNoZWNrYm94SXRlbXMoKTtcclxuICB9XHJcblxyXG4gIHNldENoZWNrZWQoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja2VkID0gY2hlY2tlZDtcclxuICAgIHRoaXMubGFzdENoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5jaGVja2VkQ2hhbmdlLmVtaXQoY2hlY2tlZCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTsgLy8gQXZpc2EgYWwgZWxlbWVudG8gaW5wdXQgcGFyYSBxdWUgYWN0dWFsaWNlIHN1IGVzdGFkb1xyXG4gIH1cclxuXHJcbiAgc2V0SW5kZXRlcm1pbmF0ZUNoZWNrZWQoaW5kZXRlcm1pbmF0ZUNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQgPSBpbmRldGVybWluYXRlQ2hlY2tlZDtcclxuICAgIHRoaXMubGFzdEluZGV0ZXJtaW5hdGUgPSBpbmRldGVybWluYXRlQ2hlY2tlZDtcclxuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KGluZGV0ZXJtaW5hdGVDaGVja2VkKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBBdmlzYSBhbCBlbGVtZW50byBpbnB1dCBwYXJhIHF1ZSBhY3R1YWxpY2Ugc3UgZXN0YWRvXHJcbiAgfVxyXG5cclxuICBzZXRJbmRldGVybWluYXRlU3RhdHVzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChpbnB1dCkge1xyXG4gICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZCkge1xyXG4gICAgICAgIGlucHV0LnJlYWRPbmx5ID0gdHJ1ZTtcclxuICAgICAgICBpbnB1dC5pbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChpbnB1dC5yZWFkT25seSkge1xyXG4gICAgICAgIGlucHV0LnJlYWRPbmx5ID0gZmFsc2U7XHJcbiAgICAgICAgaW5wdXQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0luaXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmlucHV0RWxlbWVudDtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCk6IGFueSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gaW5wdXQuY2hlY2tlZCB8fCBpbnB1dC5pbmRldGVybWluYXRlID8gdGhpcy52YWx1ZSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGVja2JveElkKGluZGV4PzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmNoZWNrYm94SWQgPSB0aGlzLmlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaWRQcmVmaXggPSB0aGlzLmNoZWNrYm94ZXMuaWRQcmVmaXggPyB0aGlzLmNoZWNrYm94ZXMuaWRQcmVmaXggOiB0aGlzLmNoZWNrYm94ZXMubmFtZTtcclxuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveElkID0gaWRQcmVmaXg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveElkID0gYCR7aWRQcmVmaXh9LSR7aW5kZXh9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmxhYmVsQ29tcG9uZW50TGlzdCAmJiB0aGlzLmxhYmVsQ29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubGFiZWxDb21wb25lbnRMaXN0LmZpcnN0LmZvciA9IHRoaXMuY2hlY2tib3hJZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oaW50Q29tcG9uZW50TGlzdCAmJiB0aGlzLmhpbnRDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5oaW50Q29tcG9uZW50TGlzdC5maXJzdC5pZCA9IHRoaXMuZ2V0SXRlbUhpbnRJZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBGdW5jaW9uZXMgcGFyYSBhcG9ydGFyIGluZm9ybWFjacOzbiBkZXNkZSBlbCBjb21wb25lbnRlIGNoZWNrYm94ZXMgcXVlIGxvIGNvbnRpZW5lXHJcbiAgICovXHJcblxyXG4gIGhhc0RpdmlkZXJzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tib3hlcy5oYXNEaXZpZGVycztcclxuICB9XHJcblxyXG4gIGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tib3hlcy5oYXNFcnJvcnNNZXNzYWdlKCk7XHJcbiAgfVxyXG5cclxuICBnZXROYW1lQ2hlY2tib3goKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrYm94ZXMubmFtZTtcclxuICB9XHJcblxyXG4gIGdldERlc2NyaWJlZEJ5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gIXRoaXMuY2hlY2tib3hlcy5oYXNGaWVsZHNldCgpID8gdGhpcy5jaGVja2JveGVzLmRlc2NyaWJlZEJ5IDogbnVsbDtcclxuICB9XHJcbn1cclxuIl19