@sumaris-net/ngx-components 3.0.0-rc1 → 4.0.0-rc10

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 (677) hide show
  1. package/esm2022/public_api.mjs +340 -0
  2. package/{esm2020 → esm2022}/src/app/admin/admin-routing.module.mjs +8 -8
  3. package/{esm2020 → esm2022}/src/app/admin/admin.module.mjs +12 -12
  4. package/esm2022/src/app/admin/services/filter/person.filter.mjs +69 -0
  5. package/esm2022/src/app/admin/services/person.service.mjs +174 -0
  6. package/esm2022/src/app/admin/services/validator/person.validator.mjs +72 -0
  7. package/esm2022/src/app/admin/users/users.mjs +264 -0
  8. package/esm2022/src/app/admin/users/users.module.mjs +58 -0
  9. package/esm2022/src/app/core/about/about.modal.mjs +84 -0
  10. package/{esm2020 → esm2022}/src/app/core/about/about.module.mjs +9 -9
  11. package/{esm2020 → esm2022}/src/app/core/account/account.module.mjs +22 -22
  12. package/esm2022/src/app/core/account/account.page.mjs +337 -0
  13. package/esm2022/src/app/core/account/new-token.modal.mjs +130 -0
  14. package/esm2022/src/app/core/account/token.table.mjs +146 -0
  15. package/esm2022/src/app/core/auth/auth.form.mjs +140 -0
  16. package/esm2022/src/app/core/auth/auth.modal.mjs +76 -0
  17. package/{esm2020 → esm2022}/src/app/core/auth/auth.module.mjs +16 -16
  18. package/{esm2020 → esm2022}/src/app/core/core.module.mjs +87 -87
  19. package/{esm2020 → esm2022}/src/app/core/core.testing.module.mjs +23 -23
  20. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +109 -0
  21. package/{esm2020 → esm2022}/src/app/core/form/buttons/form-buttons-bar.module.mjs +10 -10
  22. package/esm2022/src/app/core/form/entity/editor.class.mjs +718 -0
  23. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +436 -0
  24. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +730 -0
  25. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +24 -0
  26. package/{esm2020 → esm2022}/src/app/core/form/entity/entity.module.mjs +11 -11
  27. package/esm2022/src/app/core/form/form.class.mjs +353 -0
  28. package/{esm2020 → esm2022}/src/app/core/form/form.module.mjs +30 -30
  29. package/{esm2020 → esm2022}/src/app/core/form/form.utils.mjs +69 -60
  30. package/esm2022/src/app/core/form/list/list.form.mjs +233 -0
  31. package/{esm2020 → esm2022}/src/app/core/form/list/list.module.mjs +10 -10
  32. package/esm2022/src/app/core/form/properties/properties.form.mjs +143 -0
  33. package/{esm2020 → esm2022}/src/app/core/form/properties/properties.module.mjs +13 -13
  34. package/esm2022/src/app/core/form/properties/properties.table.mjs +269 -0
  35. package/esm2022/src/app/core/form/properties/property.validator.mjs +24 -0
  36. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +95 -0
  37. package/{esm2020 → esm2022}/src/app/core/form/properties/testing/properties-form.testing.module.mjs +11 -11
  38. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +73 -0
  39. package/{esm2020 → esm2022}/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +10 -10
  40. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +152 -0
  41. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +35 -0
  42. package/{esm2020 → esm2022}/src/app/core/graphql/graphql.module.mjs +6 -6
  43. package/esm2022/src/app/core/graphql/graphql.service.mjs +788 -0
  44. package/{esm2020 → esm2022}/src/app/core/graphql/graphql.utils.mjs +2 -1
  45. package/esm2022/src/app/core/home/home.mjs +282 -0
  46. package/esm2022/src/app/core/home/home.module.mjs +51 -0
  47. package/esm2022/src/app/core/icon/icon.component.mjs +40 -0
  48. package/{esm2020 → esm2022}/src/app/core/icon/icon.module.mjs +7 -7
  49. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +358 -0
  50. package/{esm2020 → esm2022}/src/app/core/install/install-upgrade-card.module.mjs +10 -10
  51. package/esm2022/src/app/core/menu/menu.component.mjs +264 -0
  52. package/esm2022/src/app/core/menu/menu.model.mjs +269 -0
  53. package/esm2022/src/app/core/menu/menu.module.mjs +52 -0
  54. package/esm2022/src/app/core/menu/menu.service.mjs +671 -0
  55. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +109 -0
  56. package/{esm2020 → esm2022}/src/app/core/menu/testing/menu-other.testing.mjs +5 -5
  57. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +122 -0
  58. package/{esm2020 → esm2022}/src/app/core/menu/testing/menu.testing.module.mjs +12 -12
  59. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +29 -0
  60. package/{esm2020 → esm2022}/src/app/core/offline/update-offline-mode-card.module.mjs +10 -10
  61. package/esm2022/src/app/core/peer/select-peer.modal.mjs +193 -0
  62. package/{esm2020 → esm2022}/src/app/core/peer/select-peer.module.mjs +13 -13
  63. package/esm2022/src/app/core/register/register-confirm.page.mjs +88 -0
  64. package/esm2022/src/app/core/register/register.form.mjs +194 -0
  65. package/esm2022/src/app/core/register/register.modal.mjs +55 -0
  66. package/{esm2020 → esm2022}/src/app/core/register/register.module.mjs +13 -13
  67. package/esm2022/src/app/core/services/account.service.mjs +1243 -0
  68. package/esm2022/src/app/core/services/auth-guard.service.mjs +76 -0
  69. package/esm2022/src/app/core/services/base-entity-service.class.mjs +482 -0
  70. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +224 -0
  71. package/esm2022/src/app/core/services/base58.mjs +79 -0
  72. package/{esm2020 → esm2022}/src/app/core/services/config/core.config.mjs +7 -7
  73. package/esm2022/src/app/core/services/config.service.mjs +367 -0
  74. package/esm2022/src/app/core/services/crypto.service.mjs +107 -0
  75. package/esm2022/src/app/core/services/local-settings.service.mjs +468 -0
  76. package/esm2022/src/app/core/services/model/account.model.mjs +155 -0
  77. package/esm2022/src/app/core/services/model/config.model.mjs +107 -0
  78. package/esm2022/src/app/core/services/model/department.model.mjs +34 -0
  79. package/esm2022/src/app/core/services/model/entity.decorators.mjs +97 -0
  80. package/esm2022/src/app/core/services/model/entity.model.mjs +228 -0
  81. package/esm2022/src/app/core/services/model/peer.model.mjs +83 -0
  82. package/esm2022/src/app/core/services/model/person.model.mjs +110 -0
  83. package/esm2022/src/app/core/services/model/referential.model.mjs +189 -0
  84. package/esm2022/src/app/core/services/model/token.model.mjs +57 -0
  85. package/esm2022/src/app/core/services/network.service.mjs +626 -0
  86. package/{esm2020 → esm2022}/src/app/core/services/network.types.mjs +1 -1
  87. package/{esm2020 → esm2022}/src/app/core/services/pipes/account.pipes.mjs +9 -9
  88. package/{esm2020 → esm2022}/src/app/core/services/pipes/department-to-string.pipe.mjs +5 -5
  89. package/{esm2020 → esm2022}/src/app/core/services/pipes/person-to-string.pipe.mjs +5 -5
  90. package/{esm2020 → esm2022}/src/app/core/services/pipes/usage-mode.pipes.mjs +9 -9
  91. package/esm2022/src/app/core/services/platform.service.mjs +557 -0
  92. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +434 -0
  93. package/esm2022/src/app/core/services/storage/entity-store.class.mjs +458 -0
  94. package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +25 -0
  95. package/esm2022/src/app/core/services/testing/referential.validator.mjs +46 -0
  96. package/esm2022/src/app/core/services/validator/account.validator.mjs +45 -0
  97. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +49 -0
  98. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +67 -0
  99. package/{esm2020 → esm2022}/src/app/core/services/validator/user-settings.validator.mjs +5 -5
  100. package/{esm2020 → esm2022}/src/app/core/services/validator/user-token.validator.mjs +5 -5
  101. package/{esm2020 → esm2022}/src/app/core/settings/settings.module.mjs +9 -9
  102. package/esm2022/src/app/core/settings/settings.page.mjs +328 -0
  103. package/esm2022/src/app/core/table/actions-column.component.mjs +115 -0
  104. package/esm2022/src/app/core/table/async-table.class.mjs +1735 -0
  105. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +386 -0
  106. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +401 -0
  107. package/esm2022/src/app/core/table/memory-table.class.mjs +57 -0
  108. package/esm2022/src/app/core/table/table-select-columns.component.mjs +46 -0
  109. package/esm2022/src/app/core/table/table.class.mjs +1775 -0
  110. package/esm2022/src/app/core/table/table.model.mjs +16 -0
  111. package/{esm2020 → esm2022}/src/app/core/table/table.module.mjs +12 -12
  112. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +28 -0
  113. package/esm2022/src/app/core/table/testing/table.testing.mjs +291 -0
  114. package/{esm2020 → esm2022}/src/app/core/table/testing/table.testing.module.mjs +16 -16
  115. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +25 -0
  116. package/esm2022/src/app/core/table/testing/table2.testing.mjs +250 -0
  117. package/esm2022/src/app/shared/audio/audio.mjs +251 -0
  118. package/esm2022/src/app/shared/audio/audio.testing.mjs +32 -0
  119. package/{esm2020 → esm2022}/src/app/shared/audio/audio.testing.module.mjs +10 -10
  120. package/esm2022/src/app/shared/capacitor/keyboard.mjs +42 -0
  121. package/esm2022/src/app/shared/capacitor/plugins.mjs +9 -0
  122. package/esm2022/src/app/shared/dates.mjs +149 -0
  123. package/esm2022/src/app/shared/debug/debug.component.mjs +40 -0
  124. package/{esm2020 → esm2022}/src/app/shared/debug/debug.module.mjs +14 -14
  125. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +98 -0
  126. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +32 -0
  127. package/{esm2020 → esm2022}/src/app/shared/directives/directives.module.mjs +13 -13
  128. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +52 -0
  129. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +33 -0
  130. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +62 -0
  131. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +45 -0
  132. package/{esm2020 → esm2022}/src/app/shared/directives/resizable/resizable.module.mjs +5 -5
  133. package/esm2022/src/app/shared/file/file.service.mjs +122 -0
  134. package/{esm2020 → esm2022}/src/app/shared/file/file.utils.mjs +2 -2
  135. package/esm2022/src/app/shared/form/field.component.mjs +353 -0
  136. package/esm2022/src/app/shared/form/loading-spinner.mjs +35 -0
  137. package/{esm2020 → esm2022}/src/app/shared/functions.mjs +2 -2
  138. package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +82 -0
  139. package/esm2022/src/app/shared/gesture/gesture-config.mjs +46 -0
  140. package/esm2022/src/app/shared/graph/graph-colors.mjs +219 -0
  141. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +59 -0
  142. package/esm2022/src/app/shared/help/help.modal.mjs +63 -0
  143. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +23 -0
  144. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +85 -0
  145. package/{esm2020 → esm2022}/src/app/shared/hotkeys/shared-hotkeys.module.mjs +12 -12
  146. package/esm2022/src/app/shared/http/http.utils.mjs +56 -0
  147. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +388 -0
  148. package/{esm2020 → esm2022}/src/app/shared/image/gallery/image-gallery.module.mjs +22 -22
  149. package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +26 -0
  150. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +90 -0
  151. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +41 -0
  152. package/{esm2020 → esm2022}/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +16 -16
  153. package/{esm2020 → esm2022}/src/app/shared/image/image.module.mjs +11 -11
  154. package/esm2022/src/app/shared/image/image.service.mjs +104 -0
  155. package/esm2022/src/app/shared/inputs.mjs +231 -0
  156. package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +28 -0
  157. package/esm2022/src/app/shared/logging/logging-service.class.mjs +128 -0
  158. package/{esm2020 → esm2022}/src/app/shared/logging/logging-service.module.mjs +8 -8
  159. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +49 -0
  160. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +961 -0
  161. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +82 -0
  162. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +217 -0
  163. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +209 -0
  164. package/{esm2020 → esm2022}/src/app/shared/material/badge/badge.module.mjs +9 -9
  165. package/esm2022/src/app/shared/material/badge/badge.test.mjs +42 -0
  166. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +72 -0
  167. package/esm2022/src/app/shared/material/boolean/material-boolean2.mjs +266 -0
  168. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +271 -0
  169. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +54 -0
  170. package/{esm2020 → esm2022}/src/app/shared/material/chips/chips.module.mjs +30 -30
  171. package/esm2022/src/app/shared/material/chips/material.chips.mjs +719 -0
  172. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +148 -0
  173. package/{esm2020 → esm2022}/src/app/shared/material/datetime/datetime.module.mjs +38 -38
  174. package/esm2022/src/app/shared/material/datetime/material.date.mjs +396 -0
  175. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +406 -0
  176. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +549 -0
  177. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +132 -0
  178. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +123 -0
  179. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +115 -0
  180. package/esm2022/src/app/shared/material/duration/duration.module.mjs +70 -0
  181. package/{esm2020 → esm2022}/src/app/shared/material/duration/duration.utils.mjs +2 -2
  182. package/esm2022/src/app/shared/material/duration/material.duration.mjs +273 -0
  183. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +79 -0
  184. package/{esm2020 → esm2022}/src/app/shared/material/latlong/latlong.utils.mjs +3 -3
  185. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +440 -0
  186. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +72 -0
  187. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +113 -0
  188. package/esm2022/src/app/shared/material/material.module.mjs +229 -0
  189. package/esm2022/src/app/shared/material/material.testing.module.mjs +221 -0
  190. package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +104 -0
  191. package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +83 -0
  192. package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +203 -0
  193. package/esm2022/src/app/shared/material/numpad/numpad.content.mjs +19 -0
  194. package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +168 -0
  195. package/esm2022/src/app/shared/material/numpad/numpad.dom-service.mjs +36 -0
  196. package/esm2022/src/app/shared/material/numpad/numpad.model.mjs +16 -0
  197. package/{esm2020 → esm2022}/src/app/shared/material/numpad/numpad.module.mjs +20 -20
  198. package/esm2022/src/app/shared/material/numpad/testing/numpad.test.mjs +48 -0
  199. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +48 -0
  200. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +23 -0
  201. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +368 -0
  202. package/{esm2020 → esm2022}/src/app/shared/material/swipe/swipe.module.mjs +19 -19
  203. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +67 -0
  204. package/esm2022/src/app/shared/material/testing/common.test.mjs +105 -0
  205. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +31 -0
  206. package/esm2022/src/app/shared/material/text/text-form.component.mjs +97 -0
  207. package/esm2022/src/app/shared/material/text/text-form.module.mjs +63 -0
  208. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +236 -0
  209. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +49 -0
  210. package/{esm2020 → esm2022}/src/app/shared/named-filter/named-filter.module.mjs +5 -5
  211. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +69 -0
  212. package/{esm2020 → esm2022}/src/app/shared/pipes/arrays.pipe.mjs +25 -25
  213. package/{esm2020 → esm2022}/src/app/shared/pipes/colors.pipe.mjs +4 -4
  214. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +51 -0
  215. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +72 -0
  216. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +28 -0
  217. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +36 -0
  218. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +60 -0
  219. package/esm2022/src/app/shared/pipes/form.pipes.mjs +194 -0
  220. package/{esm2020 → esm2022}/src/app/shared/pipes/highlight.pipe.mjs +5 -5
  221. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +42 -0
  222. package/{esm2020 → esm2022}/src/app/shared/pipes/maps.pipe.mjs +13 -13
  223. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +118 -0
  224. package/{esm2020 → esm2022}/src/app/shared/pipes/math.pipes.mjs +13 -13
  225. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +19 -0
  226. package/{esm2020 → esm2022}/src/app/shared/pipes/number-format.pipe.mjs +5 -5
  227. package/esm2022/src/app/shared/pipes/pipes.module.mjs +256 -0
  228. package/esm2022/src/app/shared/pipes/property.pipes.mjs +97 -0
  229. package/{esm2020 → esm2022}/src/app/shared/pipes/string.pipes.mjs +31 -31
  230. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +44 -0
  231. package/{esm2020 → esm2022}/src/app/shared/pipes/types.pipes.mjs +14 -14
  232. package/esm2022/src/app/shared/rx-state.module.mjs +23 -0
  233. package/esm2022/src/app/shared/services/entity-service.class.mjs +7 -0
  234. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +347 -0
  235. package/esm2022/src/app/shared/services/progress-bar.service.mjs +31 -0
  236. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +121 -0
  237. package/esm2022/src/app/shared/services/startable-service.class.mjs +113 -0
  238. package/esm2022/src/app/shared/services/translate-context.service.mjs +104 -0
  239. package/esm2022/src/app/shared/services.mjs +62 -0
  240. package/{esm2020 → esm2022}/src/app/shared/shared-routing.module.mjs +12 -12
  241. package/esm2022/src/app/shared/shared.module.mjs +231 -0
  242. package/{esm2020 → esm2022}/src/app/shared/shared.testing.module.mjs +40 -40
  243. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +286 -0
  244. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +46 -0
  245. package/{esm2020 → esm2022}/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +7 -7
  246. package/{esm2020 → esm2022}/src/app/shared/storage/storage-explorer.testing.module.mjs +6 -6
  247. package/esm2022/src/app/shared/storage/storage.service.mjs +134 -0
  248. package/{esm2020 → esm2022}/src/app/shared/storage/storage.utils.mjs +1 -1
  249. package/esm2022/src/app/shared/testing/observable.test.mjs +96 -0
  250. package/esm2022/src/app/shared/testing/tests.page.mjs +37 -0
  251. package/esm2022/src/app/shared/toast/toast.testing.mjs +52 -0
  252. package/{esm2020 → esm2022}/src/app/shared/toast/toast.testing.module.mjs +10 -10
  253. package/esm2022/src/app/shared/toast/toasts.mjs +144 -0
  254. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +60 -0
  255. package/esm2022/src/app/shared/toolbar/toolbar.mjs +264 -0
  256. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +57 -0
  257. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +59 -0
  258. package/{esm2020 → esm2022}/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +10 -10
  259. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +107 -0
  260. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +211 -0
  261. package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +27 -0
  262. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +106 -0
  263. package/esm2022/src/app/shared/validator/validators.mjs +580 -0
  264. package/esm2022/src/app/shared/version/versions.mjs +81 -0
  265. package/{esm2020 → esm2022}/src/app/social/job/job.module.mjs +12 -12
  266. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +35 -0
  267. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +232 -0
  268. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +50 -0
  269. package/esm2022/src/app/social/job/progression/job-progression.model.mjs +29 -0
  270. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +73 -0
  271. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +43 -0
  272. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +53 -0
  273. package/{esm2020 → esm2022}/src/app/social/job/testing/job.testing.module.mjs +9 -9
  274. package/esm2022/src/app/social/message/message.form.mjs +140 -0
  275. package/esm2022/src/app/social/message/message.modal.mjs +110 -0
  276. package/esm2022/src/app/social/message/message.model.mjs +75 -0
  277. package/esm2022/src/app/social/message/message.module.mjs +22 -0
  278. package/esm2022/src/app/social/message/message.service.mjs +110 -0
  279. package/{esm2020 → esm2022}/src/app/social/social.module.mjs +19 -19
  280. package/{esm2020 → esm2022}/src/app/social/social.testing.module.mjs +10 -10
  281. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +123 -0
  282. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +263 -0
  283. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +233 -0
  284. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +129 -0
  285. package/{esm2020 → esm2022}/src/app/social/user-event/testing/user-event.testing.module.mjs +9 -9
  286. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +116 -0
  287. package/esm2022/src/app/social/user-event/user-event.module.mjs +43 -0
  288. package/esm2022/src/app/social/user-event/user-event.service.mjs +512 -0
  289. package/esm2022/src/environments/environment.class.mjs +50 -0
  290. package/esm2022/src/environments/environment.loader.mjs +83 -0
  291. package/esm2022/src/environments/environment.mjs +97 -0
  292. package/{fesm2020 → fesm2022}/sumaris-net.ngx-components.mjs +11115 -9134
  293. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -0
  294. package/package.json +38 -19
  295. package/public_api.d.ts +5 -1
  296. package/src/app/admin/users/users.d.ts +1 -1
  297. package/src/app/admin/users/users.module.d.ts +2 -1
  298. package/src/app/core/account/account.page.d.ts +3 -2
  299. package/src/app/core/account/new-token.modal.d.ts +2 -4
  300. package/src/app/core/account/token.table.d.ts +6 -4
  301. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +2 -2
  302. package/src/app/core/form/entity/editor.class.d.ts +2 -2
  303. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +1 -1
  304. package/src/app/core/form/entity/entity-editor.class.d.ts +10 -6
  305. package/src/app/core/form/entity/entity-metadata.component.d.ts +1 -1
  306. package/src/app/core/form/form.class.d.ts +1 -1
  307. package/src/app/core/form/list/list.form.d.ts +1 -1
  308. package/src/app/core/form/properties/properties.form.d.ts +1 -1
  309. package/src/app/core/form/properties/properties.table.d.ts +1 -1
  310. package/src/app/core/form/text-popover/text-popover.component.d.ts +2 -2
  311. package/src/app/core/form/text-popover/text-popover.module.d.ts +4 -5
  312. package/src/app/core/graphql/graphql.service.d.ts +2 -4
  313. package/src/app/core/graphql/graphql.utils.d.ts +1 -1
  314. package/src/app/core/home/home.module.d.ts +4 -3
  315. package/src/app/core/icon/icon.component.d.ts +1 -1
  316. package/src/app/core/install/install-upgrade-card.component.d.ts +1 -1
  317. package/src/app/core/menu/menu.component.d.ts +7 -3
  318. package/src/app/core/menu/menu.module.d.ts +3 -5
  319. package/src/app/core/menu/menu.service.d.ts +3 -1
  320. package/src/app/core/menu/sub-menu-tab.directive.d.ts +1 -1
  321. package/src/app/core/offline/update-offline-mode-card.component.d.ts +1 -1
  322. package/src/app/core/peer/select-peer.modal.d.ts +1 -1
  323. package/src/app/core/services/account.service.d.ts +4 -0
  324. package/src/app/core/services/base-entity-service.class.d.ts +1 -1
  325. package/src/app/core/services/config/core.config.d.ts +2 -2
  326. package/src/app/core/services/model/person.model.d.ts +1 -1
  327. package/src/app/core/services/model/referential.model.d.ts +2 -1
  328. package/src/app/core/services/model/settings.model.d.ts +1 -1
  329. package/src/app/core/services/model/token.model.d.ts +1 -0
  330. package/src/app/core/services/network.service.d.ts +11 -7
  331. package/src/app/core/services/network.types.d.ts +2 -2
  332. package/src/app/core/services/storage/entity-store.class.d.ts +1 -1
  333. package/src/app/core/table/actions-column.component.d.ts +1 -1
  334. package/src/app/core/table/async-table.class.d.ts +1 -1
  335. package/src/app/core/table/memory-table.class.d.ts +1 -1
  336. package/src/app/core/table/table-select-columns.component.d.ts +1 -1
  337. package/src/app/core/table/table.class.d.ts +2 -1
  338. package/src/app/core/table/table.model.d.ts +1 -1
  339. package/src/app/core/table/testing/table.testing.d.ts +1 -1
  340. package/src/app/shared/audio/audio.d.ts +1 -1
  341. package/src/app/shared/debug/debug.component.d.ts +1 -1
  342. package/src/app/shared/directives/autofocus.directive.d.ts +1 -1
  343. package/src/app/shared/directives/ng-var.directive.d.ts +1 -1
  344. package/src/app/shared/directives/resizable/resizable.component.d.ts +1 -1
  345. package/src/app/shared/events.d.ts +1 -1
  346. package/src/app/shared/form/field.component.d.ts +1 -1
  347. package/src/app/shared/form/loading-spinner.d.ts +1 -1
  348. package/src/app/shared/help/help.modal.d.ts +1 -1
  349. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +2 -4
  350. package/src/app/shared/http/http.utils.d.ts +1 -0
  351. package/src/app/shared/image/gallery/image-gallery.component.d.ts +1 -1
  352. package/src/app/shared/inputs.d.ts +1 -1
  353. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +2 -2
  354. package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +10 -9
  355. package/src/app/shared/material/badge/badge.directive.d.ts +1 -1
  356. package/src/app/shared/material/boolean/boolean.module.d.ts +4 -5
  357. package/src/app/shared/material/boolean/material-boolean2.d.ts +1 -1
  358. package/src/app/shared/material/boolean/material.boolean.d.ts +1 -1
  359. package/src/app/shared/material/chips/material.chips.d.ts +1 -1
  360. package/src/app/shared/material/datetime/datetime.module.d.ts +2 -2
  361. package/src/app/shared/material/datetime/material.date.d.ts +2 -2
  362. package/src/app/shared/material/datetime/material.dateshort.d.ts +3 -3
  363. package/src/app/shared/material/datetime/material.datetime.d.ts +14 -7
  364. package/src/app/shared/material/duration/duration.module.d.ts +6 -5
  365. package/src/app/shared/material/duration/material.duration.d.ts +2 -2
  366. package/src/app/shared/material/latlong/material.latlong.d.ts +14 -8
  367. package/src/app/shared/material/latlong/material.latlong.module.d.ts +9 -8
  368. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +2 -0
  369. package/src/app/shared/material/material.module.d.ts +2 -1
  370. package/src/app/shared/material/material.testing.module.d.ts +14 -13
  371. package/src/app/shared/material/numpad/numpad.append-to-input.directive.d.ts +1 -1
  372. package/src/app/shared/material/numpad/numpad.component.d.ts +1 -1
  373. package/src/app/shared/material/numpad/numpad.content.d.ts +1 -1
  374. package/src/app/shared/material/numpad/numpad.directive.d.ts +1 -1
  375. package/src/app/shared/material/swipe/material.swipe.d.ts +1 -1
  376. package/src/app/shared/material/testing/common.test.d.ts +4 -2
  377. package/src/app/shared/material/text/testing/text-form.testing.d.ts +13 -0
  378. package/src/app/{core/form/text-popover → shared/material/text}/text-form.component.d.ts +2 -2
  379. package/src/app/shared/material/text/text-form.module.d.ts +16 -0
  380. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +9 -3
  381. package/src/app/shared/pipes/maskito.pipe.d.ts +16 -0
  382. package/src/app/shared/pipes/pipes.module.d.ts +5 -4
  383. package/src/app/shared/pipes/types.pipes.d.ts +3 -3
  384. package/src/app/shared/rx-state.module.d.ts +1 -1
  385. package/src/app/shared/services/entity-service.class.d.ts +1 -1
  386. package/src/app/shared/services/job.utils.d.ts +1 -1
  387. package/src/app/shared/services/memory-entity-service.class.d.ts +7 -3
  388. package/src/app/shared/services.d.ts +1 -0
  389. package/src/app/shared/shared.module.d.ts +16 -15
  390. package/src/app/shared/storage/storage-explorer.component.d.ts +1 -1
  391. package/src/app/shared/storage/storage-explorer.module.d.ts +3 -3
  392. package/src/app/shared/storage/storage.service.d.ts +1 -1
  393. package/src/app/shared/storage/storage.utils.d.ts +1 -1
  394. package/src/app/shared/toolbar/modal-toolbar.d.ts +1 -1
  395. package/src/app/shared/toolbar/toolbar.d.ts +1 -1
  396. package/src/app/shared/toolbar/toolbar.module.d.ts +4 -3
  397. package/src/app/shared/upload-file/upload-file-popover.component.d.ts +1 -1
  398. package/src/app/shared/upload-file/upload-file.component.d.ts +1 -1
  399. package/src/app/shared/upload-file/upload-file.model.d.ts +2 -2
  400. package/src/app/social/job/progression/job-progression.component.d.ts +1 -1
  401. package/src/app/social/job/progression/job-progression.icon.d.ts +1 -1
  402. package/src/app/social/job/progression/job-progression.list.d.ts +1 -1
  403. package/src/app/social/message/message.form.d.ts +8 -2
  404. package/src/app/social/message/message.modal.d.ts +5 -1
  405. package/src/app/social/message/message.model.d.ts +2 -0
  406. package/src/app/social/message/message.module.d.ts +2 -1
  407. package/src/app/social/message/message.service.d.ts +8 -3
  408. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +4 -3
  409. package/src/app/social/user-event/notification/user-event-notification.list.d.ts +1 -1
  410. package/src/app/social/user-event/user-event.model.d.ts +2 -2
  411. package/src/app/social/user-event/user-event.module.d.ts +3 -2
  412. package/src/app/social/user-event/user-event.service.d.ts +5 -0
  413. package/src/assets/environments/environment-test.json +6 -0
  414. package/src/assets/i18n/en-US.json +25 -23
  415. package/src/assets/i18n/en.json +25 -23
  416. package/src/assets/i18n/fr.json +10 -7
  417. package/src/assets/manifest.json +1 -1
  418. package/src/environments/environment.class.d.ts +2 -0
  419. package/src/environments/environment.loader.d.ts +26 -0
  420. package/src/theme/_material.globals.scss +2 -2
  421. package/src/theme/_material.scss +34 -5
  422. package/src/theme/_mixins.scss +2 -2
  423. package/src/theme/_ngx-components.globals.scss +2 -2
  424. package/src/theme/_ngx-components.scss +8 -9
  425. package/src/theme/_ngx-components.table.scss +20 -8
  426. package/esm2020/public_api.mjs +0 -336
  427. package/esm2020/src/app/admin/services/filter/person.filter.mjs +0 -59
  428. package/esm2020/src/app/admin/services/person.service.mjs +0 -170
  429. package/esm2020/src/app/admin/services/validator/person.validator.mjs +0 -71
  430. package/esm2020/src/app/admin/users/users.mjs +0 -259
  431. package/esm2020/src/app/admin/users/users.module.mjs +0 -54
  432. package/esm2020/src/app/core/about/about.modal.mjs +0 -71
  433. package/esm2020/src/app/core/account/account.page.mjs +0 -317
  434. package/esm2020/src/app/core/account/new-token.modal.mjs +0 -115
  435. package/esm2020/src/app/core/account/token.table.mjs +0 -137
  436. package/esm2020/src/app/core/auth/auth.form.mjs +0 -132
  437. package/esm2020/src/app/core/auth/auth.modal.mjs +0 -72
  438. package/esm2020/src/app/core/form/buttons/form-buttons-bar.component.mjs +0 -107
  439. package/esm2020/src/app/core/form/entity/editor.class.mjs +0 -679
  440. package/esm2020/src/app/core/form/entity/entity-editor-modal.class.mjs +0 -422
  441. package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +0 -690
  442. package/esm2020/src/app/core/form/entity/entity-metadata.component.mjs +0 -25
  443. package/esm2020/src/app/core/form/form.class.mjs +0 -345
  444. package/esm2020/src/app/core/form/list/list.form.mjs +0 -222
  445. package/esm2020/src/app/core/form/properties/properties.form.mjs +0 -132
  446. package/esm2020/src/app/core/form/properties/properties.table.mjs +0 -265
  447. package/esm2020/src/app/core/form/properties/property.validator.mjs +0 -23
  448. package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +0 -90
  449. package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.mjs +0 -70
  450. package/esm2020/src/app/core/form/text-popover/text-form.component.mjs +0 -89
  451. package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +0 -146
  452. package/esm2020/src/app/core/form/text-popover/text-popover.module.mjs +0 -40
  453. package/esm2020/src/app/core/graphql/graphql.service.mjs +0 -774
  454. package/esm2020/src/app/core/home/home.mjs +0 -258
  455. package/esm2020/src/app/core/home/home.module.mjs +0 -48
  456. package/esm2020/src/app/core/icon/icon.component.mjs +0 -41
  457. package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +0 -344
  458. package/esm2020/src/app/core/menu/menu.component.mjs +0 -239
  459. package/esm2020/src/app/core/menu/menu.model.mjs +0 -247
  460. package/esm2020/src/app/core/menu/menu.module.mjs +0 -57
  461. package/esm2020/src/app/core/menu/menu.service.mjs +0 -654
  462. package/esm2020/src/app/core/menu/sub-menu-tab.directive.mjs +0 -98
  463. package/esm2020/src/app/core/menu/testing/menu.testing.mjs +0 -121
  464. package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +0 -27
  465. package/esm2020/src/app/core/peer/select-peer.modal.mjs +0 -183
  466. package/esm2020/src/app/core/register/register-confirm.page.mjs +0 -81
  467. package/esm2020/src/app/core/register/register.form.mjs +0 -183
  468. package/esm2020/src/app/core/register/register.modal.mjs +0 -52
  469. package/esm2020/src/app/core/services/account.service.mjs +0 -1206
  470. package/esm2020/src/app/core/services/auth-guard.service.mjs +0 -71
  471. package/esm2020/src/app/core/services/base-entity-service.class.mjs +0 -468
  472. package/esm2020/src/app/core/services/base-graphql-service.class.mjs +0 -221
  473. package/esm2020/src/app/core/services/base58.mjs +0 -78
  474. package/esm2020/src/app/core/services/config.service.mjs +0 -355
  475. package/esm2020/src/app/core/services/crypto.service.mjs +0 -107
  476. package/esm2020/src/app/core/services/local-settings.service.mjs +0 -460
  477. package/esm2020/src/app/core/services/model/account.model.mjs +0 -147
  478. package/esm2020/src/app/core/services/model/config.model.mjs +0 -92
  479. package/esm2020/src/app/core/services/model/department.model.mjs +0 -30
  480. package/esm2020/src/app/core/services/model/entity.decorators.mjs +0 -97
  481. package/esm2020/src/app/core/services/model/entity.model.mjs +0 -225
  482. package/esm2020/src/app/core/services/model/peer.model.mjs +0 -68
  483. package/esm2020/src/app/core/services/model/person.model.mjs +0 -97
  484. package/esm2020/src/app/core/services/model/referential.model.mjs +0 -164
  485. package/esm2020/src/app/core/services/model/token.model.mjs +0 -48
  486. package/esm2020/src/app/core/services/network.service.mjs +0 -590
  487. package/esm2020/src/app/core/services/platform.service.mjs +0 -524
  488. package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +0 -428
  489. package/esm2020/src/app/core/services/storage/entity-store.class.mjs +0 -449
  490. package/esm2020/src/app/core/services/testing/referential-filter.model.mjs +0 -23
  491. package/esm2020/src/app/core/services/testing/referential.validator.mjs +0 -45
  492. package/esm2020/src/app/core/services/validator/account.validator.mjs +0 -41
  493. package/esm2020/src/app/core/services/validator/base.validator.class.mjs +0 -47
  494. package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +0 -66
  495. package/esm2020/src/app/core/settings/settings.page.mjs +0 -312
  496. package/esm2020/src/app/core/table/actions-column.component.mjs +0 -102
  497. package/esm2020/src/app/core/table/async-table.class.mjs +0 -1698
  498. package/esm2020/src/app/core/table/entities-async-table-datasource.class.mjs +0 -384
  499. package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +0 -399
  500. package/esm2020/src/app/core/table/memory-table.class.mjs +0 -53
  501. package/esm2020/src/app/core/table/table-select-columns.component.mjs +0 -43
  502. package/esm2020/src/app/core/table/table.class.mjs +0 -1733
  503. package/esm2020/src/app/core/table/table.model.mjs +0 -12
  504. package/esm2020/src/app/core/table/testing/table-validator.service.mjs +0 -27
  505. package/esm2020/src/app/core/table/testing/table.testing.mjs +0 -281
  506. package/esm2020/src/app/core/table/testing/table2-validator.service.mjs +0 -24
  507. package/esm2020/src/app/core/table/testing/table2.testing.mjs +0 -242
  508. package/esm2020/src/app/shared/audio/audio.mjs +0 -248
  509. package/esm2020/src/app/shared/audio/audio.testing.mjs +0 -31
  510. package/esm2020/src/app/shared/capacitor/keyboard.mjs +0 -40
  511. package/esm2020/src/app/shared/capacitor/plugins.mjs +0 -9
  512. package/esm2020/src/app/shared/dates.mjs +0 -149
  513. package/esm2020/src/app/shared/debug/debug.component.mjs +0 -39
  514. package/esm2020/src/app/shared/directives/autofocus.directive.mjs +0 -93
  515. package/esm2020/src/app/shared/directives/autotitle.directive.mjs +0 -30
  516. package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +0 -53
  517. package/esm2020/src/app/shared/directives/ng-var.directive.mjs +0 -31
  518. package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +0 -60
  519. package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +0 -40
  520. package/esm2020/src/app/shared/file/file.service.mjs +0 -117
  521. package/esm2020/src/app/shared/form/field.component.mjs +0 -334
  522. package/esm2020/src/app/shared/form/loading-spinner.mjs +0 -36
  523. package/esm2020/src/app/shared/geolocation/geolocation.utils.mjs +0 -80
  524. package/esm2020/src/app/shared/gesture/gesture-config.mjs +0 -49
  525. package/esm2020/src/app/shared/graph/graph-colors.mjs +0 -212
  526. package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +0 -57
  527. package/esm2020/src/app/shared/help/help.modal.mjs +0 -53
  528. package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +0 -23
  529. package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +0 -81
  530. package/esm2020/src/app/shared/http/http.utils.mjs +0 -52
  531. package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +0 -368
  532. package/esm2020/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +0 -27
  533. package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +0 -90
  534. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +0 -39
  535. package/esm2020/src/app/shared/image/image.service.mjs +0 -98
  536. package/esm2020/src/app/shared/inputs.mjs +0 -231
  537. package/esm2020/src/app/shared/interceptors/progess.interceptor.mjs +0 -27
  538. package/esm2020/src/app/shared/logging/logging-service.class.mjs +0 -121
  539. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +0 -47
  540. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +0 -925
  541. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +0 -78
  542. package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +0 -209
  543. package/esm2020/src/app/shared/material/badge/badge.directive.mjs +0 -199
  544. package/esm2020/src/app/shared/material/badge/badge.test.mjs +0 -41
  545. package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +0 -76
  546. package/esm2020/src/app/shared/material/boolean/material-boolean2.mjs +0 -248
  547. package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +0 -254
  548. package/esm2020/src/app/shared/material/boolean/testing/boolean.test.page.mjs +0 -51
  549. package/esm2020/src/app/shared/material/chips/material.chips.mjs +0 -688
  550. package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +0 -143
  551. package/esm2020/src/app/shared/material/datetime/material.date.mjs +0 -378
  552. package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +0 -387
  553. package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +0 -501
  554. package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +0 -120
  555. package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +0 -118
  556. package/esm2020/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +0 -111
  557. package/esm2020/src/app/shared/material/duration/duration.module.mjs +0 -67
  558. package/esm2020/src/app/shared/material/duration/material.duration.mjs +0 -258
  559. package/esm2020/src/app/shared/material/duration/testing/mat-duration.test.mjs +0 -76
  560. package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +0 -383
  561. package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +0 -67
  562. package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +0 -102
  563. package/esm2020/src/app/shared/material/material.module.mjs +0 -224
  564. package/esm2020/src/app/shared/material/material.testing.module.mjs +0 -210
  565. package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +0 -98
  566. package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +0 -80
  567. package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +0 -190
  568. package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +0 -17
  569. package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +0 -162
  570. package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +0 -32
  571. package/esm2020/src/app/shared/material/numpad/numpad.model.mjs +0 -15
  572. package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +0 -46
  573. package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +0 -46
  574. package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +0 -22
  575. package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +0 -345
  576. package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +0 -64
  577. package/esm2020/src/app/shared/material/testing/common.test.mjs +0 -95
  578. package/esm2020/src/app/shared/named-filter/named-filter-selector.component.mjs +0 -202
  579. package/esm2020/src/app/shared/named-filter/named-filter.model.mjs +0 -45
  580. package/esm2020/src/app/shared/named-filter/named-filter.service.mjs +0 -63
  581. package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +0 -48
  582. package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +0 -66
  583. package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +0 -27
  584. package/esm2020/src/app/shared/pipes/duration.pipe.mjs +0 -34
  585. package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +0 -62
  586. package/esm2020/src/app/shared/pipes/form.pipes.mjs +0 -187
  587. package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +0 -46
  588. package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +0 -21
  589. package/esm2020/src/app/shared/pipes/pipes.module.mjs +0 -247
  590. package/esm2020/src/app/shared/pipes/property.pipes.mjs +0 -93
  591. package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +0 -43
  592. package/esm2020/src/app/shared/rx-state.module.mjs +0 -23
  593. package/esm2020/src/app/shared/services/entity-service.class.mjs +0 -7
  594. package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +0 -339
  595. package/esm2020/src/app/shared/services/progress-bar.service.mjs +0 -33
  596. package/esm2020/src/app/shared/services/startable-observable-service.class.mjs +0 -121
  597. package/esm2020/src/app/shared/services/startable-service.class.mjs +0 -113
  598. package/esm2020/src/app/shared/services/translate-context.service.mjs +0 -103
  599. package/esm2020/src/app/shared/services.mjs +0 -62
  600. package/esm2020/src/app/shared/shared.module.mjs +0 -224
  601. package/esm2020/src/app/shared/storage/storage-explorer.component.mjs +0 -268
  602. package/esm2020/src/app/shared/storage/storage-explorer.module.mjs +0 -47
  603. package/esm2020/src/app/shared/storage/storage.service.mjs +0 -132
  604. package/esm2020/src/app/shared/testing/observable.test.mjs +0 -95
  605. package/esm2020/src/app/shared/testing/tests.page.mjs +0 -33
  606. package/esm2020/src/app/shared/toast/toast.testing.mjs +0 -51
  607. package/esm2020/src/app/shared/toast/toasts.mjs +0 -144
  608. package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +0 -58
  609. package/esm2020/src/app/shared/toolbar/toolbar.mjs +0 -251
  610. package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +0 -53
  611. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +0 -58
  612. package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +0 -97
  613. package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +0 -204
  614. package/esm2020/src/app/shared/upload-file/upload-file.model.mjs +0 -20
  615. package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +0 -104
  616. package/esm2020/src/app/shared/validator/validators.mjs +0 -580
  617. package/esm2020/src/app/shared/version/versions.mjs +0 -81
  618. package/esm2020/src/app/social/job/progression/job-progression.component.mjs +0 -34
  619. package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +0 -223
  620. package/esm2020/src/app/social/job/progression/job-progression.list.mjs +0 -46
  621. package/esm2020/src/app/social/job/progression/job-progression.model.mjs +0 -23
  622. package/esm2020/src/app/social/job/progression/job-progression.service.mjs +0 -71
  623. package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +0 -41
  624. package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +0 -55
  625. package/esm2020/src/app/social/message/message.form.mjs +0 -84
  626. package/esm2020/src/app/social/message/message.modal.mjs +0 -93
  627. package/esm2020/src/app/social/message/message.model.mjs +0 -64
  628. package/esm2020/src/app/social/message/message.module.mjs +0 -35
  629. package/esm2020/src/app/social/message/message.service.mjs +0 -84
  630. package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +0 -114
  631. package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +0 -246
  632. package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +0 -227
  633. package/esm2020/src/app/social/user-event/testing/user-event.testing.model.mjs +0 -112
  634. package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +0 -111
  635. package/esm2020/src/app/social/user-event/user-event.module.mjs +0 -39
  636. package/esm2020/src/app/social/user-event/user-event.service.mjs +0 -488
  637. package/esm2020/src/environments/environment.class.mjs +0 -5
  638. package/esm2020/src/environments/environment.mjs +0 -94
  639. package/fesm2015/sumaris-net.ngx-components.mjs +0 -41541
  640. package/fesm2015/sumaris-net.ngx-components.mjs.map +0 -1
  641. package/fesm2020/sumaris-net.ngx-components.mjs.map +0 -1
  642. /package/{esm2020 → esm2022}/src/app/core/services/errors.mjs +0 -0
  643. /package/{esm2020 → esm2022}/src/app/core/services/model/filter.model.mjs +0 -0
  644. /package/{esm2020 → esm2022}/src/app/core/services/model/history.model.mjs +0 -0
  645. /package/{esm2020 → esm2022}/src/app/core/services/model/model.enum.mjs +0 -0
  646. /package/{esm2020 → esm2022}/src/app/core/services/model/settings.model.mjs +0 -0
  647. /package/{esm2020 → esm2022}/src/app/core/services/model/tree-item-entity.model.mjs +0 -0
  648. /package/{esm2020 → esm2022}/src/app/core/services/network.utils.mjs +0 -0
  649. /package/{esm2020 → esm2022}/src/app/core/table/table.utils.mjs +0 -0
  650. /package/{esm2020 → esm2022}/src/app/shared/alerts.mjs +0 -0
  651. /package/{esm2020 → esm2022}/src/app/shared/constants.mjs +0 -0
  652. /package/{esm2020 → esm2022}/src/app/shared/debug/debug-service.class.mjs +0 -0
  653. /package/{esm2020 → esm2022}/src/app/shared/events.mjs +0 -0
  654. /package/{esm2020 → esm2022}/src/app/shared/file/csv.utils.mjs +0 -0
  655. /package/{esm2020 → esm2022}/src/app/shared/file/images.utils.mjs +0 -0
  656. /package/{esm2020 → esm2022}/src/app/shared/file/json.utils.mjs +0 -0
  657. /package/{esm2020 → esm2022}/src/app/shared/file/uri.utils.mjs +0 -0
  658. /package/{esm2020 → esm2022}/src/app/shared/focusable.mjs +0 -0
  659. /package/{esm2020 → esm2022}/src/app/shared/form/field.model.mjs +0 -0
  660. /package/{esm2020 → esm2022}/src/app/shared/forms.mjs +0 -0
  661. /package/{esm2020 → esm2022}/src/app/shared/gesture/hammer.utils.mjs +0 -0
  662. /package/{esm2020 → esm2022}/src/app/shared/graph/colors.utils.mjs +0 -0
  663. /package/{esm2020 → esm2022}/src/app/shared/image/image.model.mjs +0 -0
  664. /package/{esm2020 → esm2022}/src/app/shared/logging/log-level.model.mjs +0 -0
  665. /package/{esm2020 → esm2022}/src/app/shared/logging/logger.model.mjs +0 -0
  666. /package/{esm2020 → esm2022}/src/app/shared/logging/logging-service.config.mjs +0 -0
  667. /package/{esm2020 → esm2022}/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +0 -0
  668. /package/{esm2020 → esm2022}/src/app/shared/material/material.animations.mjs +0 -0
  669. /package/{esm2020 → esm2022}/src/app/shared/modules.mjs +0 -0
  670. /package/{esm2020 → esm2022}/src/app/shared/observables.mjs +0 -0
  671. /package/{esm2020 → esm2022}/src/app/shared/platforms.mjs +0 -0
  672. /package/{esm2020 → esm2022}/src/app/shared/services/job.utils.mjs +0 -0
  673. /package/{esm2020 → esm2022}/src/app/shared/services/validator-service.class.mjs +0 -0
  674. /package/{esm2020 → esm2022}/src/app/shared/types.mjs +0 -0
  675. /package/{esm2020 → esm2022}/src/app/social/social.errors.mjs +0 -0
  676. /package/{esm2020 → esm2022}/src/app/social/user-event/user-event.model.mjs +0 -0
  677. /package/{esm2020 → esm2022}/sumaris-net.ngx-components.mjs +0 -0
@@ -1,258 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, forwardRef, Input, Optional, ViewChildren } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
3
- import { DEFAULT_PLACEHOLDER_CHAR } from '../../constants';
4
- import { isBlankString, isNil, isNotNilBoolean } from '../../functions';
5
- import { moveInputCaretToSeparator, setTabIndex } from '../../inputs';
6
- import { isFocusableElement } from '../../focusable';
7
- import { DEFAULT_MAX_DECIMALS, formatDuration, parseDuration } from './duration.utils';
8
- import { BehaviorSubject, Subscription } from 'rxjs';
9
- import { filter } from 'rxjs/operators';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@ionic/angular";
12
- import * as i2 from "@angular/material/core";
13
- import * as i3 from "@ngx-translate/core";
14
- import * as i4 from "@angular/forms";
15
- import * as i5 from "@angular/common";
16
- import * as i6 from "@angular/material/form-field";
17
- import * as i7 from "@angular/material/input";
18
- import * as i8 from "angular2-text-mask";
19
- import * as i9 from "../../pipes/duration.pipe";
20
- import * as i10 from "../../pipes/types.pipes";
21
- const DEFAULT_VALUE_ACCESSOR = {
22
- provide: NG_VALUE_ACCESSOR,
23
- useExisting: forwardRef(() => MatDuration),
24
- multi: true
25
- };
26
- const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
27
- const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
28
- const noop = () => {
29
- };
30
- export class MatDuration {
31
- constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
32
- this.dateAdapter = dateAdapter;
33
- this.translate = translate;
34
- this.formBuilder = formBuilder;
35
- this.cd = cd;
36
- this.formGroupDir = formGroupDir;
37
- this._subscription = new Subscription();
38
- this._onChangeCallback = noop;
39
- this._onTouchedCallback = noop;
40
- this.writing = true;
41
- this.disabling = false;
42
- this.hourMask = HOUR_MASK;
43
- this.disabled = false;
44
- this.floatLabel = 'auto';
45
- this.readonly = false;
46
- this.compact = false;
47
- this.maxDecimals = DEFAULT_MAX_DECIMALS;
48
- this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
49
- this.clearable = false;
50
- }
51
- set tabindex(value) {
52
- if (this._tabindex !== value) {
53
- this._tabindex = value;
54
- setTimeout(() => this.updateTabIndex());
55
- }
56
- }
57
- get tabindex() {
58
- return this._tabindex;
59
- }
60
- get value() {
61
- return this._value;
62
- }
63
- ngOnInit() {
64
- if (this.maxDecimals) {
65
- if (this.maxDecimals < 0) {
66
- console.error('Invalid attribute \'maxDecimals\'. Must a positive value.');
67
- this.maxDecimals = DEFAULT_MAX_DECIMALS;
68
- }
69
- else if (this.maxDecimals < DEFAULT_MAX_DECIMALS) {
70
- console.warn(`Invalid attribute 'maxDecimals' - Value should be more than ${DEFAULT_MAX_DECIMALS}, otherwise the round trip conversion will lose minutes.`);
71
- this.maxDecimals = DEFAULT_MAX_DECIMALS;
72
- }
73
- }
74
- this.formControl = this.formControl || this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName);
75
- if (!this.formControl)
76
- throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-duration-field>.');
77
- this.required = isNotNilBoolean(this.required) ? this.required : (this.formControl.validator === Validators.required || isBlankString(this.required));
78
- // Redirect errors from main control, into day sub control
79
- const $error = new BehaviorSubject(null);
80
- this.textControl = this.formBuilder.control(null, null);
81
- this.textControl.setValidators(this.required ? [Validators.required, () => $error.getValue(), Validators.pattern(HOUR_TIME_PATTERN)] :
82
- [() => $error.getValue(), Validators.pattern(HOUR_TIME_PATTERN)]);
83
- this._subscription.add(this.textControl.valueChanges
84
- .subscribe((value) => this.onFormChange(value)));
85
- // Listen status changes outside the component (e.g. when setErrors() is calling on the formControl)
86
- this._subscription.add(this.formControl.statusChanges
87
- .pipe(filter(() => !this.readonly && !this.writing && !this.disabling)) // Skip
88
- .subscribe((status) => {
89
- if (status === 'INVALID') {
90
- $error.next(this.formControl.errors);
91
- }
92
- else if (status === 'VALID') {
93
- $error.next(null);
94
- }
95
- this.textControl.updateValueAndValidity({ onlySelf: true, emitEvent: false });
96
- this.markForCheck();
97
- }));
98
- this.updateTabIndex();
99
- this.writing = false;
100
- }
101
- ngOnDestroy() {
102
- this._subscription.unsubscribe();
103
- }
104
- writeValue(obj) {
105
- if (this.writing)
106
- return;
107
- // console.debug('[mat-duration] writeValue:', obj);
108
- if (isNil(obj)) {
109
- this.writing = true;
110
- this.textControl.patchValue(null, { emitEvent: false });
111
- this._value = undefined;
112
- if (this.formControl.value) {
113
- this.formControl.patchValue(null, { emitEvent: false });
114
- this._onChangeCallback(null);
115
- }
116
- this.writing = false;
117
- this.markForCheck();
118
- return;
119
- }
120
- this._value = obj;
121
- if (isNaN(this._value)) { // invalid value
122
- return;
123
- }
124
- this.writing = true;
125
- console.debug(`[mat-duration] Formatted hour: ${this._value} to ${formatDuration(this._value)}`);
126
- // Set form value
127
- this.textControl.patchValue(formatDuration(this._value), { emitEvent: false });
128
- this.writing = false;
129
- this.markForCheck();
130
- }
131
- registerOnChange(fn) {
132
- this._onChangeCallback = fn;
133
- }
134
- registerOnTouched(fn) {
135
- this._onTouchedCallback = fn;
136
- }
137
- setDisabledState(isDisabled) {
138
- if (this.disabling)
139
- return;
140
- this.disabling = true;
141
- this.disabled = isDisabled;
142
- if (isDisabled) {
143
- this.textControl.disable({ onlySelf: true, emitEvent: false });
144
- }
145
- else {
146
- this.textControl.enable({ onlySelf: true, emitEvent: false });
147
- }
148
- this.disabling = false;
149
- this.markForCheck();
150
- }
151
- onFormChange(value) {
152
- if (this.writing)
153
- return; // Skip if call by self
154
- this.writing = true;
155
- console.debug('[mat-duration] onFormChange:', value);
156
- if (this.textControl.hasError('pattern') || this.textControl.hasError('required')) {
157
- this.formControl.markAsPending();
158
- this.formControl.setErrors({
159
- pattern: this.textControl.errors.pattern,
160
- required: this.textControl.errors.required
161
- });
162
- this.writing = false;
163
- return;
164
- }
165
- this._value = parseDuration(value || '', this.maxDecimals, this.placeholderChar);
166
- console.debug('[mat-duration] Setting duration: ', this._value);
167
- this.formControl.patchValue(this._value, { emitEvent: false });
168
- //this.formControl.updateValueAndValidity();
169
- this.writing = false;
170
- this.markForCheck();
171
- this._onChangeCallback(this._value);
172
- }
173
- checkIfTouched() {
174
- if (this.textControl.touched) {
175
- this.markForCheck();
176
- this._onTouchedCallback();
177
- }
178
- }
179
- preventEvent(event) {
180
- if (!event)
181
- return;
182
- event.preventDefault();
183
- if (event.stopPropagation)
184
- event.stopPropagation();
185
- event.returnValue = false;
186
- }
187
- focus() {
188
- if (!this.matInputs.length)
189
- return;
190
- setTimeout(() => {
191
- const elementRef = this.matInputs[0]; // get the first element
192
- if (isFocusableElement(elementRef)) {
193
- elementRef.focus();
194
- }
195
- });
196
- }
197
- moveCaretToSeparator(event, forward) {
198
- // Move to the next separator
199
- return moveInputCaretToSeparator(event, ':', forward);
200
- }
201
- /* -- protected method -- */
202
- updateTabIndex() {
203
- if (isNil(this._tabindex) || this._tabindex === -1)
204
- return; // skip
205
- // Focus to first input
206
- setTimeout(() => {
207
- this.matInputs.forEach((elementRef, index) => {
208
- setTabIndex(elementRef, this._tabindex + index);
209
- });
210
- this.markForCheck();
211
- });
212
- }
213
- markForCheck() {
214
- this.cd.markForCheck();
215
- }
216
- }
217
- MatDuration.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MatDuration, deps: [{ token: i1.Platform }, { token: i2.DateAdapter }, { token: i3.TranslateService }, { token: i4.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i4.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
218
- MatDuration.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MatDuration, selector: "mat-duration-field", inputs: { disabled: "disabled", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", readonly: "readonly", required: "required", compact: "compact", maxDecimals: "maxDecimals", placeholderChar: "placeholderChar", tabindex: "tabindex", clearable: "clearable" }, providers: [
219
- DEFAULT_VALUE_ACCESSOR,
220
- ], viewQueries: [{ propertyName: "matInputs", predicate: ["matInput"], descendants: true }], ngImport: i0, template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\">\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{ formControl.value|duration }}</ion-text>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [class.mat-form-field-disabled]=\"formControl.disabled\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\" translate>COMMON.TIME</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput type=\"text\"\n autocomplete=\"off\"\n [formControl]=\"textControl\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.DURATION_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keydown.tab)=\"moveCaretToSeparator($event, true)\"\n (keydown.shift.tab)=\"moveCaretToSeparator($event, false)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n\n <!-- errors -->\n <mat-error *ngIf=\"!formControl.hasError('required') && textControl.hasError('pattern')\" translate>ERROR.FIELD_NOT_VALID_PATTERN</mat-error>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors.min }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors.max }}</mat-error>\n\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n</ng-template>\n\n", styles: [":host{display:inline-block;width:100%;min-width:140px;position:relative;--ion-grid-column-padding: 0}mat-form-field{width:100%}mat-form-field .mat-form-field-subscript-wrapper{overflow:visible;top:100%}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}mat-error{text-align:right;width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i8.MaskedInputDirective, selector: "[textMask]", inputs: ["textMask"], exportAs: ["textMask"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i9.DurationPipe, name: "duration" }, { kind: "pipe", type: i10.AsFloatLabelType, name: "asFloatLabelType" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
221
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MatDuration, decorators: [{
222
- type: Component,
223
- args: [{ selector: 'mat-duration-field', providers: [
224
- DEFAULT_VALUE_ACCESSOR,
225
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\">\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{ formControl.value|duration }}</ion-text>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [class.mat-form-field-disabled]=\"formControl.disabled\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\" translate>COMMON.TIME</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput type=\"text\"\n autocomplete=\"off\"\n [formControl]=\"textControl\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.DURATION_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keydown.tab)=\"moveCaretToSeparator($event, true)\"\n (keydown.shift.tab)=\"moveCaretToSeparator($event, false)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n\n <!-- errors -->\n <mat-error *ngIf=\"!formControl.hasError('required') && textControl.hasError('pattern')\" translate>ERROR.FIELD_NOT_VALID_PATTERN</mat-error>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors.min }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors.max }}</mat-error>\n\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n</ng-template>\n\n", styles: [":host{display:inline-block;width:100%;min-width:140px;position:relative;--ion-grid-column-padding: 0}mat-form-field{width:100%}mat-form-field .mat-form-field-subscript-wrapper{overflow:visible;top:100%}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}mat-error{text-align:right;width:100%}\n"] }]
226
- }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i2.DateAdapter }, { type: i3.TranslateService }, { type: i4.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }, { type: i4.FormGroupDirective, decorators: [{
227
- type: Optional
228
- }] }]; }, propDecorators: { disabled: [{
229
- type: Input
230
- }], formControl: [{
231
- type: Input
232
- }], formControlName: [{
233
- type: Input
234
- }], placeholder: [{
235
- type: Input
236
- }], floatLabel: [{
237
- type: Input
238
- }], appearance: [{
239
- type: Input
240
- }], readonly: [{
241
- type: Input
242
- }], required: [{
243
- type: Input
244
- }], compact: [{
245
- type: Input
246
- }], maxDecimals: [{
247
- type: Input
248
- }], placeholderChar: [{
249
- type: Input
250
- }], tabindex: [{
251
- type: Input
252
- }], clearable: [{
253
- type: Input
254
- }], matInputs: [{
255
- type: ViewChildren,
256
- args: ['matInput']
257
- }] } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuZHVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kdXJhdGlvbi9tYXRlcmlhbC5kdXJhdGlvbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2R1cmF0aW9uL21hdGVyaWFsLmR1cmF0aW9uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsVUFBVSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUF1QixZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHbkwsT0FBTyxFQUEyQyxpQkFBaUIsRUFBNEQsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHakssT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFlLHlCQUF5QixFQUFFLFdBQVcsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNsRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JGLE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBSXRDLE1BQU0sc0JBQXNCLEdBQWE7SUFDdkMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUMxQyxLQUFLLEVBQUUsSUFBSTtDQUNa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QUFDO1lBQUUsT0FBTyxDQUFDLE9BQU87UUFFbkUsdUJBQXVCO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDM0MsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOzt5R0EzT1UsV0FBVzs2RkFBWCxXQUFXLDZZQUxYO1FBQ1Qsc0JBQXNCO0tBQ3ZCLG9IQ2xDSCx5ekVBNkNBOzRGRFJhLFdBQVc7a0JBVHZCLFNBQVM7K0JBQ0Usb0JBQW9CLGFBR25CO3dCQUNULHNCQUFzQjtxQkFDdkIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQW1ENUMsUUFBUTs0Q0FyQ0YsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRU8sUUFBUTtzQkFBcEIsS0FBSztnQkFXRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVvQixTQUFTO3NCQUFsQyxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBQcm92aWRlciwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtEYXRlQWRhcHRlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TW9tZW50fSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtERUZBVUxUX1BMQUNFSE9MREVSX0NIQVJ9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge2lzQmxhbmtTdHJpbmcsIGlzTmlsLCBpc05vdE5pbEJvb2xlYW59IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0lucHV0RWxlbWVudCwgbW92ZUlucHV0Q2FyZXRUb1NlcGFyYXRvciwgc2V0VGFiSW5kZXh9IGZyb20gJy4uLy4uL2lucHV0cyc7XG5pbXBvcnQge2lzRm9jdXNhYmxlRWxlbWVudH0gZnJvbSAnLi4vLi4vZm9jdXNhYmxlJztcbmltcG9ydCB7REVGQVVMVF9NQVhfREVDSU1BTFMsIGZvcm1hdER1cmF0aW9uLCBwYXJzZUR1cmF0aW9ufSBmcm9tICcuL2R1cmF0aW9uLnV0aWxzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkQXBwZWFyYW5jZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge0FwcEZsb2F0TGFiZWxUeXBlfSBmcm9tICcuLi8uLi9mb3JtL2ZpZWxkLm1vZGVsJztcblxuY29uc3QgREVGQVVMVF9WQUxVRV9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXREdXJhdGlvbiksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5jb25zdCBIT1VSX1RJTUVfUEFUVEVSTiA9IC9bMC05XVxcZFxcZDpbMC01XVxcZC87XG5jb25zdCBIT1VSX01BU0sgPSBbL1xcZC8sIC9cXGQvLCAvXFxkLywgJzonLCAvWzAtNV0vLCAvXFxkL107XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtZHVyYXRpb24tZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwuZHVyYXRpb24uaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hdGVyaWFsLmR1cmF0aW9uLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgREVGQVVMVF9WQUxVRV9BQ0NFU1NPUixcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTWF0RHVyYXRpb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIElucHV0RWxlbWVudCB7XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX29uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSB3cml0aW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBkaXNhYmxpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdGFiaW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdmFsdWU6IG51bWJlcjtcblxuICB0ZXh0Q29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBob3VyTWFzayA9IEhPVVJfTUFTSztcblxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogQXBwRmxvYXRMYWJlbFR5cGUgPSAnYXV0byc7XG4gIEBJbnB1dCgpIGFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2U7XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuICBASW5wdXQoKSBjb21wYWN0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heERlY2ltYWxzOiBudW1iZXIgPSBERUZBVUxUX01BWF9ERUNJTUFMUztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXJDaGFyOiBzdHJpbmcgPSBERUZBVUxUX1BMQUNFSE9MREVSX0NIQVI7XG5cbiAgQElucHV0KCkgc2V0IHRhYmluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fdGFiaW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IHZhbHVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVRhYkluZGV4KCkpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0YWJpbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90YWJpbmRleDtcbiAgfVxuXG4gIEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ21hdElucHV0JykgbWF0SW5wdXRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHByaXZhdGUgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPE1vbWVudD4sXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwRGlyOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICBpZiAodGhpcy5tYXhEZWNpbWFscykge1xuICAgICAgaWYgKHRoaXMubWF4RGVjaW1hbHMgPCAwKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIFxcJ21heERlY2ltYWxzXFwnLiBNdXN0IGEgcG9zaXRpdmUgdmFsdWUuJyk7XG4gICAgICAgIHRoaXMubWF4RGVjaW1hbHMgPSBERUZBVUxUX01BWF9ERUNJTUFMUztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMubWF4RGVjaW1hbHMgPCBERUZBVUxUX01BWF9ERUNJTUFMUykge1xuICAgICAgICBjb25zb2xlLndhcm4oYEludmFsaWQgYXR0cmlidXRlICdtYXhEZWNpbWFscycgLSBWYWx1ZSBzaG91bGQgYmUgbW9yZSB0aGFuICR7REVGQVVMVF9NQVhfREVDSU1BTFN9LCBvdGhlcndpc2UgdGhlIHJvdW5kIHRyaXAgY29udmVyc2lvbiB3aWxsIGxvc2UgbWludXRlcy5gKTtcbiAgICAgICAgdGhpcy5tYXhEZWNpbWFscyA9IERFRkFVTFRfTUFYX0RFQ0lNQUxTO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sIHx8IHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIHRoaXMuZm9ybUdyb3VwRGlyICYmIHRoaXMuZm9ybUdyb3VwRGlyLmZvcm0uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSBcXCdmb3JtQ29udHJvbFxcJyBvciBcXCdmb3JtQ29udHJvbE5hbWVcXCcgaW4gPG1hdC1kdXJhdGlvbi1maWVsZD4uJyk7XG5cbiAgICB0aGlzLnJlcXVpcmVkID0gaXNOb3ROaWxCb29sZWFuKHRoaXMucmVxdWlyZWQpID8gdGhpcy5yZXF1aXJlZCA6ICh0aGlzLmZvcm1Db250cm9sLnZhbGlkYXRvciA9PT0gVmFsaWRhdG9ycy5yZXF1aXJlZCB8fCBpc0JsYW5rU3RyaW5nKHRoaXMucmVxdWlyZWQpKTtcblxuICAgIC8vIFJlZGlyZWN0IGVycm9ycyBmcm9tIG1haW4gY29udHJvbCwgaW50byBkYXkgc3ViIGNvbnRyb2xcbiAgICBjb25zdCAkZXJyb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFZhbGlkYXRpb25FcnJvcnM+KG51bGwpO1xuICAgIHRoaXMudGV4dENvbnRyb2wgPSB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgbnVsbCk7XG4gICAgdGhpcy50ZXh0Q29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMucmVxdWlyZWQgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgKCkgPT4gJGVycm9yLmdldFZhbHVlKCksIFZhbGlkYXRvcnMucGF0dGVybihIT1VSX1RJTUVfUEFUVEVSTildIDpcbiAgICAgIFsoKSA9PiAkZXJyb3IuZ2V0VmFsdWUoKSwgVmFsaWRhdG9ycy5wYXR0ZXJuKEhPVVJfVElNRV9QQVRURVJOKV0pO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMudGV4dENvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLm9uRm9ybUNoYW5nZSh2YWx1ZSkpXG4gICAgKTtcblxuICAgIC8vIExpc3RlbiBzdGF0dXMgY2hhbmdlcyBvdXRzaWRlIHRoZSBjb21wb25lbnQgKGUuZy4gd2hlbiBzZXRFcnJvcnMoKSBpcyBjYWxsaW5nIG9uIHRoZSBmb3JtQ29udHJvbClcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzXG4gICAgICAgIC5waXBlKGZpbHRlcigoKSA9PiAhdGhpcy5yZWFkb25seSAmJiAhdGhpcy53cml0aW5nICYmICF0aGlzLmRpc2FibGluZykpIC8vIFNraXBcbiAgICAgICAgLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ0lOVkFMSUQnKSB7XG4gICAgICAgICAgICAkZXJyb3IubmV4dCh0aGlzLmZvcm1Db250cm9sLmVycm9ycyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PT0gJ1ZBTElEJykge1xuICAgICAgICAgICAgJGVycm9yLm5leHQobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudGV4dENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KSk7XG5cbiAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XG5cbiAgICB0aGlzLndyaXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLndyaXRpbmcpIHJldHVybjtcblxuICAgIC8vIGNvbnNvbGUuZGVidWcoJ1ttYXQtZHVyYXRpb25dIHdyaXRlVmFsdWU6Jywgb2JqKTtcblxuICAgIGlmIChpc05pbChvYmopKSB7XG4gICAgICB0aGlzLndyaXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy50ZXh0Q29udHJvbC5wYXRjaFZhbHVlKG51bGwsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLl92YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShudWxsLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy53cml0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gb2JqO1xuICAgIGlmIChpc05hTih0aGlzLl92YWx1ZSkpIHsgLy8gaW52YWxpZCB2YWx1ZVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMud3JpdGluZyA9IHRydWU7XG5cbiAgICBjb25zb2xlLmRlYnVnKGBbbWF0LWR1cmF0aW9uXSBGb3JtYXR0ZWQgaG91cjogJHt0aGlzLl92YWx1ZX0gdG8gJHtmb3JtYXREdXJhdGlvbih0aGlzLl92YWx1ZSl9YCk7XG5cbiAgICAvLyBTZXQgZm9ybSB2YWx1ZVxuICAgIHRoaXMudGV4dENvbnRyb2wucGF0Y2hWYWx1ZShmb3JtYXREdXJhdGlvbih0aGlzLl92YWx1ZSksIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgdGhpcy53cml0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsaW5nKSByZXR1cm47XG5cbiAgICB0aGlzLmRpc2FibGluZyA9IHRydWU7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudGV4dENvbnRyb2wuZGlzYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZXh0Q29udHJvbC5lbmFibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsaW5nID0gZmFsc2U7XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZvcm1DaGFuZ2UodmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53cml0aW5nKSByZXR1cm47IC8vIFNraXAgaWYgY2FsbCBieSBzZWxmXG4gICAgdGhpcy53cml0aW5nID0gdHJ1ZTtcblxuICAgIGNvbnNvbGUuZGVidWcoJ1ttYXQtZHVyYXRpb25dIG9uRm9ybUNoYW5nZTonLCB2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy50ZXh0Q29udHJvbC5oYXNFcnJvcigncGF0dGVybicpIHx8IHRoaXMudGV4dENvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzUGVuZGluZygpO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICBwYXR0ZXJuOiB0aGlzLnRleHRDb250cm9sLmVycm9ycy5wYXR0ZXJuLFxuICAgICAgICByZXF1aXJlZDogdGhpcy50ZXh0Q29udHJvbC5lcnJvcnMucmVxdWlyZWRcbiAgICAgIH0pO1xuICAgICAgdGhpcy53cml0aW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSBwYXJzZUR1cmF0aW9uKHZhbHVlIHx8ICcnLCB0aGlzLm1heERlY2ltYWxzLCB0aGlzLnBsYWNlaG9sZGVyQ2hhcik7XG5cbiAgICBjb25zb2xlLmRlYnVnKCdbbWF0LWR1cmF0aW9uXSBTZXR0aW5nIGR1cmF0aW9uOiAnLCB0aGlzLl92YWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKHRoaXMuX3ZhbHVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIC8vdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy53cml0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodGhpcy5fdmFsdWUpO1xuICB9XG5cbiAgY2hlY2tJZlRvdWNoZWQoKSB7XG4gICAgaWYgKHRoaXMudGV4dENvbnRyb2wudG91Y2hlZCkge1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJldmVudEV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICBpZiAoIXRoaXMubWF0SW5wdXRzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50UmVmID0gdGhpcy5tYXRJbnB1dHNbMF07IC8vIGdldCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgaWYgKGlzRm9jdXNhYmxlRWxlbWVudChlbGVtZW50UmVmKSkge1xuICAgICAgICBlbGVtZW50UmVmLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBtb3ZlQ2FyZXRUb1NlcGFyYXRvcihldmVudDogYW55LCBmb3J3YXJkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgLy8gTW92ZSB0byB0aGUgbmV4dCBzZXBhcmF0b3JcbiAgICByZXR1cm4gbW92ZUlucHV0Q2FyZXRUb1NlcGFyYXRvcihldmVudCwgJzonLCBmb3J3YXJkKTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2QgLS0gKi9cblxuICBwcm90ZWN0ZWQgdXBkYXRlVGFiSW5kZXgoKSB7XG4gICAgaWYgKGlzTmlsKHRoaXMuX3RhYmluZGV4KSB8fCB0aGlzLl90YWJpbmRleCA9PT0gLTEpIHJldHVybjsgLy8gc2tpcFxuXG4gICAgLy8gRm9jdXMgdG8gZmlyc3QgaW5wdXRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubWF0SW5wdXRzLmZvckVhY2goKGVsZW1lbnRSZWYsIGluZGV4KSA9PiB7XG4gICAgICAgIHNldFRhYkluZGV4KGVsZW1lbnRSZWYsIHRoaXMuX3RhYmluZGV4ICsgaW5kZXgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG5cbiIsIjwhLS0gcmVhZG9ubHkgLS0+XG48bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJyZWFkb25seSBlbHNlIHdyaXRhYmxlXCJcbiAgICAgICAgICAgICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1kaXNhYmxlZFwiPlxuICA8bWF0LWxhYmVsICpuZ0lmPVwicGxhY2Vob2xkZXIgJiYgZmxvYXRMYWJlbCAhPT0gJ25ldmVyJ1wiIHRyYW5zbGF0ZT5DT01NT04uVElNRTwvbWF0LWxhYmVsPlxuICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHk9XCJ0cnVlXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCI+XG4gIDxpb24tdGV4dD57eyBmb3JtQ29udHJvbC52YWx1ZXxkdXJhdGlvbiB9fTwvaW9uLXRleHQ+XG48L21hdC1mb3JtLWZpZWxkPlxuXG48IS0tIHdyaXRhYmxlIC0tPlxuPG5nLXRlbXBsYXRlICN3cml0YWJsZT5cbiAgPG1hdC1mb3JtLWZpZWxkIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCJcbiAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkXT1cImZvcm1Db250cm9sLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtZm9ybS1maWVsZC1pbnZhbGlkXT1cImZvcm1Db250cm9sLnRvdWNoZWQgJiYgZm9ybUNvbnRyb2wuaW52YWxpZFwiPlxuICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJwbGFjZWhvbGRlciAmJiBmbG9hdExhYmVsICE9PSAnbmV2ZXInXCIgdHJhbnNsYXRlPkNPTU1PTi5USU1FPC9tYXQtbGFiZWw+XG5cbiAgICA8ZGl2IG1hdFByZWZpeD48bmctY29udGVudCBzZWxlY3Q9XCJbbWF0UHJlZml4XVwiPjwvbmctY29udGVudD48L2Rpdj5cblxuICAgIDxpbnB1dCBtYXRJbnB1dCAjbWF0SW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwidGV4dENvbnRyb2xcIlxuICAgICAgICAgICBbdGV4dE1hc2tdPVwie21hc2s6IGhvdXJNYXNrLCBrZWVwQ2hhclBvc2l0aW9uczogdHJ1ZSwgcGxhY2Vob2xkZXJDaGFyOiBwbGFjZWhvbGRlckNoYXIsIGd1aWRlOiB0cnVlfVwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQ09NTU9OLkRVUkFUSU9OX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAoa2V5ZG93bi50YWIpPVwibW92ZUNhcmV0VG9TZXBhcmF0b3IoJGV2ZW50LCB0cnVlKVwiXG4gICAgICAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJtb3ZlQ2FyZXRUb1NlcGFyYXRvcigkZXZlbnQsIGZhbHNlKVwiXG4gICAgICAgICAgIChrZXl1cC5lc2NhcGUpPVwicHJldmVudEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAoYmx1cik9XCJjaGVja0lmVG91Y2hlZCgpXCJcbiAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4ICE9PSB1bmRlZmluZWQgPyB0YWJpbmRleCsxIDogdW5kZWZpbmVkXCI+XG5cblxuICAgIDwhLS0gZXJyb3JzIC0tPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgdGV4dENvbnRyb2wuaGFzRXJyb3IoJ3BhdHRlcm4nKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9OT1RfVkFMSURfUEFUVEVSTjwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWluJylcIj5cbiAgICAgIHt7KGNvbXBhY3QgPyAnRVJST1IuRklFTERfTUlOX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01JTicpIHwgdHJhbnNsYXRlOmZvcm1Db250cm9sLmVycm9ycy5taW4gfX08L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ21heCcpXCI+XG4gICAgICB7eyhjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01BWF9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NQVgnKSB8IHRyYW5zbGF0ZTpmb3JtQ29udHJvbC5lcnJvcnMubWF4IH19PC9tYXQtZXJyb3I+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtZXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
@@ -1,76 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { debounceTime } from 'rxjs/operators';
4
- import { AppFormUtils } from '../../../../core/form/form.utils';
5
- import 'moment-timezone';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@ionic/angular";
10
- import * as i4 from "@angular/material/form-field";
11
- import * as i5 from "@angular/material/checkbox";
12
- import * as i6 from "@angular/material/tabs";
13
- import * as i7 from "../material.duration";
14
- export class DurationTestPage {
15
- constructor(formBuilder, cd) {
16
- this.formBuilder = formBuilder;
17
- this.cd = cd;
18
- this.mode = 'desktop';
19
- this.stringify = JSON.stringify;
20
- this.form = formBuilder.group({
21
- empty: [null],
22
- enable: [null, Validators.required],
23
- disable: [null, Validators.required],
24
- readonly: [null]
25
- });
26
- const disableControl = this.form.get('disable');
27
- disableControl.disable();
28
- // Copy the 'enable' value, into the disable control
29
- this.form.get('enable').valueChanges.subscribe(value => disableControl.setValue(value));
30
- }
31
- ngOnInit() {
32
- setTimeout(() => this.loadData(), 250);
33
- }
34
- toggleMode(value) {
35
- if (this.mode !== value) {
36
- this.mode = value;
37
- }
38
- }
39
- // Load the form with data
40
- async loadData() {
41
- const data = {
42
- empty: null,
43
- enable: 1.50,
44
- disable: 3.25,
45
- readonly: 5
46
- };
47
- this.form.setValue(data);
48
- this.log('[test-page] Data loaded: ' + JSON.stringify(data));
49
- this.form.get('empty').valueChanges
50
- .pipe(debounceTime(300))
51
- .subscribe(value => this.log('[test-page] Value n°1: ' + JSON.stringify(value)));
52
- this.form.get('enable').valueChanges
53
- .pipe(debounceTime(300))
54
- .subscribe(value => this.log('[test-page] Value n°2: ' + JSON.stringify(value)));
55
- }
56
- doSubmit(event) {
57
- this.form.markAllAsTouched();
58
- this.log('[test-page] Form content: ' + JSON.stringify(this.form.value));
59
- this.log('[test-page] Form status: ' + this.form.status);
60
- if (this.form.invalid) {
61
- this.log('[test-page] Form errors: ' + JSON.stringify(this.form.errors));
62
- // DEBUG
63
- AppFormUtils.logFormErrors(this.form);
64
- }
65
- }
66
- log(message) {
67
- console.debug(message);
68
- }
69
- }
70
- DurationTestPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DurationTestPage, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
71
- DurationTestPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DurationTestPage, selector: "app-duration-test", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Duration field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <!-- Tab nav - desktop mode -->\n <nav mat-tab-nav-bar>\n <a mat-tab-link [active]=\"mode==='desktop'\"\n (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link\n [active]=\"mode==='temp'\"\n (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid *ngIf=\"mode==='desktop'\">\n <!-- Desktop mode -->\n <ion-row><ion-col><ion-text><h4>Desktop mode</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>\n {{stringify(form.controls.empty.value)}}\n </pre><br/>\n <pre>\n formControl.valid? {{form.controls.empty?.valid}}\n textControl.valid? {{desktopEmptyField.textControl?.valid}}\n </pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-duration-field formControlName=\"empty\" #desktopEmptyField\n placeholder=\"Duration\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"hourglass\"></ion-icon>\n </mat-duration-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n With value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.enable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-duration-field formControlName=\"enable\"\n placeholder=\"Duration\"\n [required]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"hourglass\"></ion-icon>\n </mat-duration-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.disable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-duration-field formControlName=\"disable\"\n placeholder=\"Duration\"\n [required]=\"true\">\n <ion-icon matPrefix name=\"hourglass\"></ion-icon>\n </mat-duration-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Readonly -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly toggle\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.readonly.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox (change)=\"desktopReadonlyField.readonly=$event.checked\" [checked]=\"desktopReadonlyField.readonly\">\n </mat-checkbox>\n\n <mat-duration-field #desktopReadonlyField formControlName=\"readonly\"\n placeholder=\"Duration\"\n [readonly]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"hourglass\"></ion-icon>\n </mat-duration-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n </ion-grid>\n\n </form>\n</ion-content>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i3.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i3.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i3.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonRow, selector: "ion-row" }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i3.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i6.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["disabled", "disableRipple", "tabIndex", "active", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i7.MatDuration, selector: "mat-duration-field", inputs: ["disabled", "formControl", "formControlName", "placeholder", "floatLabel", "appearance", "readonly", "required", "compact", "maxDecimals", "placeholderChar", "tabindex", "clearable"] }] });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DurationTestPage, decorators: [{
73
- type: Component,
74
- args: [{ selector: 'app-duration-test', template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Duration field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <!-- Tab nav - desktop mode -->\n <nav mat-tab-nav-bar>\n <a mat-tab-link [active]=\"mode==='desktop'\"\n (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link\n [active]=\"mode==='temp'\"\n (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid *ngIf=\"mode==='desktop'\">\n <!-- Desktop mode -->\n <ion-row><ion-col><ion-text><h4>Desktop mode</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n\n <!-- Empty value -->\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>\n {{stringify(form.controls.empty.value)}}\n </pre><br/>\n <pre>\n formControl.valid? {{form.controls.empty?.valid}}\n textControl.valid? {{desktopEmptyField.textControl?.valid}}\n </pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-duration-field formControlName=\"empty\" #desktopEmptyField\n placeholder=\"Duration\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"hourglass\"></ion-icon>\n </mat-duration-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Enable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n With value\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.enable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-duration-field formControlName=\"enable\"\n placeholder=\"Duration\"\n [required]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"hourglass\"></ion-icon>\n </mat-duration-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.disable.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-duration-field formControlName=\"disable\"\n placeholder=\"Duration\"\n [required]=\"true\">\n <ion-icon matPrefix name=\"hourglass\"></ion-icon>\n </mat-duration-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- Readonly -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly toggle\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(form.controls.readonly.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox (change)=\"desktopReadonlyField.readonly=$event.checked\" [checked]=\"desktopReadonlyField.readonly\">\n </mat-checkbox>\n\n <mat-duration-field #desktopReadonlyField formControlName=\"readonly\"\n placeholder=\"Duration\"\n [readonly]=\"true\"\n [clearable]=\"true\">\n <ion-icon matPrefix name=\"hourglass\"></ion-icon>\n </mat-duration-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n </ion-grid>\n\n </form>\n</ion-content>\n" }]
75
- }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }]; } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LWR1cmF0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9kdXJhdGlvbi90ZXN0aW5nL21hdC1kdXJhdGlvbi50ZXN0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvZHVyYXRpb24vdGVzdGluZy9tYXQtZHVyYXRpb24udGVzdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBdUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLGlCQUFpQixDQUFDOzs7Ozs7Ozs7QUFNekIsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUNZLFdBQStCLEVBQy9CLEVBQXFCO1FBRHJCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUpqQyxTQUFJLEdBQXFCLFNBQVMsQ0FBQztRQXVFbkMsY0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFqRXpCLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDYixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNwQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7U0FDakIsQ0FBRyxDQUFDO1FBRUwsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFD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bSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXBwRm9ybVV0aWxzfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2Zvcm0vZm9ybS51dGlscyc7XG5pbXBvcnQgJ21vbWVudC10aW1lem9uZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kdXJhdGlvbi10ZXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdC1kdXJhdGlvbi50ZXN0Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIER1cmF0aW9uVGVzdFBhZ2UgaW1wbGVtZW50cyBPbkluaXQge1xuICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBtb2RlOiAnZGVza3RvcCd8J3RlbXAnID0gJ2Rlc2t0b3AnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZW1wdHk6IFtudWxsXSxcbiAgICAgIGVuYWJsZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZGlzYWJsZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcmVhZG9ubHk6IFtudWxsXVxuICAgIH0sICk7XG5cbiAgICBjb25zdCBkaXNhYmxlQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoJ2Rpc2FibGUnKTtcbiAgICBkaXNhYmxlQ29udHJvbC5kaXNhYmxlKCk7XG5cbiAgICAvLyBDb3B5IHRoZSAnZW5hYmxlJyB2YWx1ZSwgaW50byB0aGUgZGlzYWJsZSBjb250cm9sXG4gICAgdGhpcy5mb3JtLmdldCgnZW5hYmxlJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiBkaXNhYmxlQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSkpO1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubG9hZERhdGEoKSwgMjUwKTtcbiAgfVxuXG4gIHRvZ2dsZU1vZGUodmFsdWUpIHtcbiAgICBpZiAodGhpcy5tb2RlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5tb2RlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLy8gTG9hZCB0aGUgZm9ybSB3aXRoIGRhdGFcbiAgYXN5bmMgbG9hZERhdGEoKSB7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgZW1wdHk6IG51bGwsIC8vIHRvRGF0ZUlTT1N0cmluZyhub3cuY2xvbmUoKS5hZGQoMiwgJ2hvdXJzJykpLFxuICAgICAgZW5hYmxlOiAxLjUwLFxuICAgICAgZGlzYWJsZTogMy4yNSxcbiAgICAgIHJlYWRvbmx5OiA1XG4gICAgfTtcblxuICAgIHRoaXMuZm9ybS5zZXRWYWx1ZShkYXRhKTtcblxuICAgIHRoaXMubG9nKCdbdGVzdC1wYWdlXSBEYXRhIGxvYWRlZDogJyArIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcblxuICAgIHRoaXMuZm9ybS5nZXQoJ2VtcHR5JykudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5sb2coJ1t0ZXN0LXBhZ2VdIFZhbHVlIG7CsDE6ICcgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpKTtcblxuICAgIHRoaXMuZm9ybS5nZXQoJ2VuYWJsZScpLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMubG9nKCdbdGVzdC1wYWdlXSBWYWx1ZSBuwrAyOiAnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpKSk7XG5cbiAgfVxuXG4gIGRvU3VibWl0KGV2ZW50KSB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmxvZygnW3Rlc3QtcGFnZV0gRm9ybSBjb250ZW50OiAnICsgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLnZhbHVlKSk7XG4gICAgdGhpcy5sb2coJ1t0ZXN0LXBhZ2VdIEZvcm0gc3RhdHVzOiAnICsgdGhpcy5mb3JtLnN0YXR1cyk7XG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmxvZygnW3Rlc3QtcGFnZV0gRm9ybSBlcnJvcnM6ICcgKyBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0uZXJyb3JzKSk7XG5cbiAgICAgIC8vIERFQlVHXG4gICAgICBBcHBGb3JtVXRpbHMubG9nRm9ybUVycm9ycyh0aGlzLmZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmRlYnVnKG1lc3NhZ2UpO1xuXG4gIH1cbiAgc3RyaW5naWZ5ID0gSlNPTi5zdHJpbmdpZnk7XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuXG59XG5cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCI+XG5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPkR1cmF0aW9uIGZpZWxkIHRlc3QgcGFnZTwvaW9uLXRpdGxlPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuXG4gIDwhLS0gVGFiIG5hdiAtIGRlc2t0b3AgbW9kZSAtLT5cbiAgPG5hdiBtYXQtdGFiLW5hdi1iYXI+XG4gICAgPGEgbWF0LXRhYi1saW5rIFthY3RpdmVdPVwibW9kZT09PSdkZXNrdG9wJ1wiXG4gICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vZGUoJ2Rlc2t0b3AnKVwiPlxuICAgICAgPG1hdC1sYWJlbD5EZXNrdG9wPC9tYXQtbGFiZWw+XG4gICAgPC9hPlxuICAgIDxhIG1hdC10YWItbGlua1xuICAgICAgIFthY3RpdmVdPVwibW9kZT09PSd0ZW1wJ1wiXG4gICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vZGUoJ3RlbXAnKVwiPlxuICAgICAgPG1hdC1sYWJlbD5UZW1wb3Jhcnk8L21hdC1sYWJlbD5cbiAgICA8L2E+XG4gIDwvbmF2PlxuXG4gIDxmb3JtIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwiZG9TdWJtaXQoJGV2ZW50KVwiPlxuXG4gICAgPGlvbi1ncmlkICpuZ0lmPVwibW9kZT09PSdkZXNrdG9wJ1wiPlxuICAgICAgPCEtLSBEZXNrdG9wIG1vZGUgLS0+XG4gICAgICA8aW9uLXJvdz48aW9uLWNvbD48aW9uLXRleHQ+PGg0PkRlc2t0b3AgbW9kZTwvaDQ+PC9pb24tdGV4dD48L2lvbi1jb2w+PC9pb24tcm93PlxuICAgICAgPGlvbi1yb3c+XG4gICAgICAgIDxpb24tY29sPlxuXG4gICAgICAgICAgPCEtLSBFbXB0eSB2YWx1ZSAtLT5cbiAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgIEVtcHR5IHZhbHVlXG4gICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHByZT5cbiAgICAgICAgICAgICAgICAgICAgICB7e3N0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmVtcHR5LnZhbHVlKX19XG4gICAgICAgICAgICAgICAgICAgIDwvcHJlPjxici8+XG4gICAgICAgICAgICAgICAgICAgIDxwcmU+XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2wudmFsaWQ/IHt7Zm9ybS5jb250cm9scy5lbXB0eT8udmFsaWR9fVxuICAgICAgICAgICAgICAgICAgICAgIHRleHRDb250cm9sLnZhbGlkPyB7e2Rlc2t0b3BFbXB0eUZpZWxkLnRleHRDb250cm9sPy52YWxpZH19XG4gICAgICAgICAgICAgICAgICAgIDwvcHJlPlxuICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPG1hdC1kdXJhdGlvbi1maWVsZCBmb3JtQ29udHJvbE5hbWU9XCJlbXB0eVwiICNkZXNrdG9wRW1wdHlGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRHVyYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBtYXRQcmVmaXggbmFtZT1cImhvdXJnbGFzc1wiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDwvbWF0LWR1cmF0aW9uLWZpZWxkPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICA8IS0tIEVuYWJsZSAgLS0+XG4gICAgICAgIDxpb24tY29sPlxuICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgV2l0aCB2YWx1ZVxuICAgICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+PHByZT57e3N0cmluZ2lmeShmb3JtLmNvbnRyb2xzLmVuYWJsZS52YWx1ZSl9fTwvcHJlPjwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxtYXQtZHVyYXRpb24tZmllbGQgZm9ybUNvbnRyb2xOYW1lPVwiZW5hYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJEdXJhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG1hdFByZWZpeCBuYW1lPVwiaG91cmdsYXNzXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPC9tYXQtZHVyYXRpb24tZmllbGQ+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgIDwhLS0gRGlzYWJsZSAtLT5cbiAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICBEaXNhYmxlXG4gICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD48cHJlPnt7c3RyaW5naWZ5KGZvcm0uY29udHJvbHMuZGlzYWJsZS52YWx1ZSl9fTwvcHJlPjwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxtYXQtZHVyYXRpb24tZmllbGQgZm9ybUNvbnRyb2xOYW1lPVwiZGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRHVyYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBtYXRQcmVmaXggbmFtZT1cImhvdXJnbGFzc1wiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDwvbWF0LWR1cmF0aW9uLWZpZWxkPlxuXG4gICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgIDwhLS0gUmVhZG9ubHkgIC0tPlxuICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgIFJlYWRvbmx5IHRvZ2dsZVxuICAgICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+PHByZT57e3N0cmluZ2lmeShmb3JtLmNvbnRyb2xzLnJlYWRvbmx5LnZhbHVlKX19PC9wcmU+PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cImRlc2t0b3BSZWFkb25seUZpZWxkLnJlYWRvbmx5PSRldmVudC5jaGVja2VkXCIgW2NoZWNrZWRdPVwiZGVza3RvcFJlYWRvbmx5RmllbGQucmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG5cbiAgICAgICAgICAgICAgPG1hdC1kdXJhdGlvbi1maWVsZCAjZGVza3RvcFJlYWRvbmx5RmllbGQgZm9ybUNvbnRyb2xOYW1lPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkR1cmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbWF0UHJlZml4IG5hbWU9XCJob3VyZ2xhc3NcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1kdXJhdGlvbi1maWVsZD5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgIDwvaW9uLXJvdz5cbiAgICA8L2lvbi1ncmlkPlxuXG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=