@sumaris-net/ngx-components 2.8.1-alpha3 → 2.8.1-beta2

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 (250) hide show
  1. package/doc/changelog.md +1 -0
  2. package/esm2022/src/app/admin/admin-routing.module.mjs +4 -4
  3. package/esm2022/src/app/admin/admin.module.mjs +4 -4
  4. package/esm2022/src/app/admin/services/person.service.mjs +3 -3
  5. package/esm2022/src/app/admin/services/validator/person.validator.mjs +3 -3
  6. package/esm2022/src/app/admin/users/users.mjs +4 -4
  7. package/esm2022/src/app/admin/users/users.module.mjs +4 -4
  8. package/esm2022/src/app/core/about/about.modal.mjs +3 -3
  9. package/esm2022/src/app/core/about/about.module.mjs +4 -4
  10. package/esm2022/src/app/core/account/account.module.mjs +4 -4
  11. package/esm2022/src/app/core/account/account.page.mjs +3 -3
  12. package/esm2022/src/app/core/account/new-token.modal.mjs +3 -3
  13. package/esm2022/src/app/core/account/token.table.mjs +3 -3
  14. package/esm2022/src/app/core/auth/auth.form.mjs +3 -3
  15. package/esm2022/src/app/core/auth/auth.modal.mjs +3 -3
  16. package/esm2022/src/app/core/auth/auth.module.mjs +4 -4
  17. package/esm2022/src/app/core/core.module.mjs +4 -4
  18. package/esm2022/src/app/core/core.testing.module.mjs +4 -4
  19. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +3 -3
  20. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +4 -4
  21. package/esm2022/src/app/core/form/entity/editor.class.mjs +3 -3
  22. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +3 -3
  23. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +3 -3
  24. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +3 -3
  25. package/esm2022/src/app/core/form/entity/entity.module.mjs +4 -4
  26. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +3 -3
  27. package/esm2022/src/app/core/form/form-container.class.mjs +3 -3
  28. package/esm2022/src/app/core/form/form.class.mjs +3 -3
  29. package/esm2022/src/app/core/form/form.module.mjs +4 -4
  30. package/esm2022/src/app/core/form/list/list.form.mjs +3 -3
  31. package/esm2022/src/app/core/form/list/list.module.mjs +4 -4
  32. package/esm2022/src/app/core/form/properties/properties.form.mjs +3 -3
  33. package/esm2022/src/app/core/form/properties/properties.module.mjs +4 -4
  34. package/esm2022/src/app/core/form/properties/properties.table.mjs +6 -6
  35. package/esm2022/src/app/core/form/properties/property.validator.mjs +3 -3
  36. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +3 -3
  37. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +4 -4
  38. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +3 -3
  39. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +4 -4
  40. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +3 -3
  41. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +4 -4
  42. package/esm2022/src/app/core/graphql/graphql.module.mjs +4 -4
  43. package/esm2022/src/app/core/graphql/graphql.service.mjs +3 -3
  44. package/esm2022/src/app/core/home/home.mjs +3 -3
  45. package/esm2022/src/app/core/home/home.module.mjs +4 -4
  46. package/esm2022/src/app/core/icon/icon.component.mjs +3 -3
  47. package/esm2022/src/app/core/icon/icon.module.mjs +4 -4
  48. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +3 -3
  49. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +4 -4
  50. package/esm2022/src/app/core/menu/menu.component.mjs +3 -3
  51. package/esm2022/src/app/core/menu/menu.module.mjs +4 -4
  52. package/esm2022/src/app/core/menu/menu.service.mjs +3 -3
  53. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +3 -3
  54. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +3 -3
  55. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +3 -3
  56. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +4 -4
  57. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +3 -3
  58. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +4 -4
  59. package/esm2022/src/app/core/peer/select-peer.modal.mjs +3 -3
  60. package/esm2022/src/app/core/peer/select-peer.module.mjs +4 -4
  61. package/esm2022/src/app/core/register/register-confirm.page.mjs +3 -3
  62. package/esm2022/src/app/core/register/register.form.mjs +3 -3
  63. package/esm2022/src/app/core/register/register.modal.mjs +3 -3
  64. package/esm2022/src/app/core/register/register.module.mjs +4 -4
  65. package/esm2022/src/app/core/services/account.service.mjs +3 -3
  66. package/esm2022/src/app/core/services/auth-guard.service.mjs +3 -3
  67. package/esm2022/src/app/core/services/base-entity-service.class.mjs +3 -3
  68. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +3 -3
  69. package/esm2022/src/app/core/services/config.service.mjs +3 -3
  70. package/esm2022/src/app/core/services/crypto.service.mjs +3 -3
  71. package/esm2022/src/app/core/services/local-settings.service.mjs +3 -3
  72. package/esm2022/src/app/core/services/model/referential.model.mjs +6 -6
  73. package/esm2022/src/app/core/services/network.service.mjs +3 -3
  74. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +8 -8
  75. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +4 -4
  76. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +4 -4
  77. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +4 -4
  78. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +3 -3
  79. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +8 -8
  80. package/esm2022/src/app/core/services/platform.service.mjs +3 -3
  81. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +3 -3
  82. package/esm2022/src/app/core/services/testing/referential.validator.mjs +3 -3
  83. package/esm2022/src/app/core/services/validator/account.validator.mjs +3 -3
  84. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +3 -3
  85. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +3 -3
  86. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +3 -3
  87. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +3 -3
  88. package/esm2022/src/app/core/settings/settings.module.mjs +4 -4
  89. package/esm2022/src/app/core/settings/settings.page.mjs +3 -3
  90. package/esm2022/src/app/core/table/actions-column.component.mjs +3 -3
  91. package/esm2022/src/app/core/table/async-table.class.mjs +3 -3
  92. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +3 -3
  93. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +3 -3
  94. package/esm2022/src/app/core/table/memory-table.class.mjs +3 -3
  95. package/esm2022/src/app/core/table/table-select-columns.component.mjs +3 -3
  96. package/esm2022/src/app/core/table/table.class.mjs +5 -5
  97. package/esm2022/src/app/core/table/table.module.mjs +4 -4
  98. package/esm2022/src/app/core/table/table.pipes.mjs +9 -9
  99. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +3 -3
  100. package/esm2022/src/app/core/table/testing/table.testing.mjs +4 -4
  101. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +4 -4
  102. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +3 -3
  103. package/esm2022/src/app/core/table/testing/table2.testing.mjs +4 -4
  104. package/esm2022/src/app/shared/audio/audio.mjs +3 -3
  105. package/esm2022/src/app/shared/audio/audio.testing.mjs +3 -3
  106. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +4 -4
  107. package/esm2022/src/app/shared/capacitor/keyboard.mjs +3 -3
  108. package/esm2022/src/app/shared/debug/debug.component.mjs +3 -3
  109. package/esm2022/src/app/shared/debug/debug.module.mjs +4 -4
  110. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +3 -3
  111. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +3 -3
  112. package/esm2022/src/app/shared/directives/directives.module.mjs +4 -4
  113. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +3 -3
  114. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +3 -3
  115. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +3 -3
  116. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +3 -3
  117. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +4 -4
  118. package/esm2022/src/app/shared/file/file.service.mjs +3 -3
  119. package/esm2022/src/app/shared/form/field.component.mjs +3 -3
  120. package/esm2022/src/app/shared/form/loading-spinner.mjs +3 -3
  121. package/esm2022/src/app/shared/functions.mjs +10 -3
  122. package/esm2022/src/app/shared/gesture/gesture-config.mjs +3 -3
  123. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +3 -3
  124. package/esm2022/src/app/shared/help/help.modal.mjs +3 -3
  125. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +3 -3
  126. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +3 -3
  127. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +4 -4
  128. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +3 -3
  129. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +4 -4
  130. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +3 -3
  131. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +3 -3
  132. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +4 -4
  133. package/esm2022/src/app/shared/image/image.module.mjs +4 -4
  134. package/esm2022/src/app/shared/image/image.service.mjs +3 -3
  135. package/esm2022/src/app/shared/logging/logging-service.class.mjs +3 -3
  136. package/esm2022/src/app/shared/logging/logging-service.module.mjs +4 -4
  137. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +3 -3
  138. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +4 -4
  139. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
  140. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +3 -3
  141. package/esm2022/src/app/shared/material/badge/badge.module.mjs +4 -4
  142. package/esm2022/src/app/shared/material/badge/badge.test.mjs +3 -3
  143. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +4 -4
  144. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +3 -3
  145. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +3 -3
  146. package/esm2022/src/app/shared/material/chips/chips.module.mjs +4 -4
  147. package/esm2022/src/app/shared/material/chips/material.chips.mjs +3 -3
  148. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +3 -3
  149. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +4 -4
  150. package/esm2022/src/app/shared/material/datetime/material.date.mjs +3 -3
  151. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +3 -3
  152. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +3 -3
  153. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +3 -3
  154. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +3 -3
  155. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +3 -3
  156. package/esm2022/src/app/shared/material/duration/duration.module.mjs +4 -4
  157. package/esm2022/src/app/shared/material/duration/material.duration.mjs +3 -3
  158. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +3 -3
  159. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +3 -3
  160. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +4 -4
  161. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +3 -3
  162. package/esm2022/src/app/shared/material/material.module.mjs +4 -4
  163. package/esm2022/src/app/shared/material/material.testing.module.mjs +4 -4
  164. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +3 -3
  165. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +3 -3
  166. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +3 -3
  167. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +4 -4
  168. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +3 -3
  169. package/esm2022/src/app/shared/material/testing/common.test.mjs +3 -3
  170. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +3 -3
  171. package/esm2022/src/app/shared/material/text/text-form.component.mjs +3 -3
  172. package/esm2022/src/app/shared/material/text/text-form.module.mjs +4 -4
  173. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +3 -3
  174. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +4 -4
  175. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +3 -3
  176. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +24 -24
  177. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +3 -3
  178. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +3 -3
  179. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +4 -4
  180. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +6 -6
  181. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +4 -4
  182. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +4 -4
  183. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +3 -3
  184. package/esm2022/src/app/shared/pipes/form.pipes.mjs +18 -18
  185. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +4 -4
  186. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +9 -9
  187. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +12 -12
  188. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +3 -3
  189. package/esm2022/src/app/shared/pipes/math.pipes.mjs +12 -12
  190. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +3 -3
  191. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +4 -4
  192. package/esm2022/src/app/shared/pipes/pipes.module.mjs +4 -4
  193. package/esm2022/src/app/shared/pipes/property.pipes.mjs +7 -7
  194. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +21 -21
  195. package/esm2022/src/app/shared/pipes/string.pipes.mjs +30 -30
  196. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +8 -8
  197. package/esm2022/src/app/shared/pipes/types.pipes.mjs +12 -12
  198. package/esm2022/src/app/shared/rx-state.module.mjs +4 -4
  199. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +3 -3
  200. package/esm2022/src/app/shared/services/progress-bar.service.mjs +3 -3
  201. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +3 -3
  202. package/esm2022/src/app/shared/services/startable-service.class.mjs +3 -3
  203. package/esm2022/src/app/shared/services/translate-context.service.mjs +3 -3
  204. package/esm2022/src/app/shared/shared-routing.module.mjs +7 -7
  205. package/esm2022/src/app/shared/shared.module.mjs +4 -4
  206. package/esm2022/src/app/shared/shared.testing.module.mjs +4 -4
  207. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +3 -3
  208. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +4 -4
  209. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +4 -4
  210. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +4 -4
  211. package/esm2022/src/app/shared/storage/storage.service.mjs +3 -3
  212. package/esm2022/src/app/shared/testing/observable.test.mjs +3 -3
  213. package/esm2022/src/app/shared/testing/tests.page.mjs +3 -3
  214. package/esm2022/src/app/shared/toast/toast.testing.mjs +3 -3
  215. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +4 -4
  216. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +3 -3
  217. package/esm2022/src/app/shared/toolbar/toolbar.mjs +3 -3
  218. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +4 -4
  219. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +3 -3
  220. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +4 -4
  221. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +3 -3
  222. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +3 -3
  223. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +3 -3
  224. package/esm2022/src/app/social/job/job.module.mjs +4 -4
  225. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +3 -3
  226. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +3 -3
  227. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +3 -3
  228. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +3 -3
  229. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +3 -3
  230. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +3 -3
  231. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +4 -4
  232. package/esm2022/src/app/social/message/message.form.mjs +3 -3
  233. package/esm2022/src/app/social/message/message.modal.mjs +3 -3
  234. package/esm2022/src/app/social/message/message.module.mjs +4 -4
  235. package/esm2022/src/app/social/message/message.service.mjs +3 -3
  236. package/esm2022/src/app/social/social.module.mjs +4 -4
  237. package/esm2022/src/app/social/social.testing.module.mjs +4 -4
  238. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +3 -3
  239. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +3 -3
  240. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +3 -3
  241. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +4 -4
  242. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +3 -3
  243. package/esm2022/src/app/social/user-event/user-event.module.mjs +4 -4
  244. package/esm2022/src/app/social/user-event/user-event.service.mjs +3 -3
  245. package/esm2022/src/environments/environment.loader.mjs +3 -3
  246. package/fesm2022/sumaris-net.ngx-components.mjs +966 -959
  247. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  248. package/package.json +1 -1
  249. package/src/app/shared/functions.d.ts +8 -1
  250. package/src/assets/manifest.json +1 -1
@@ -385,10 +385,10 @@ export class MatDate {
385
385
  this.markForCheck();
386
386
  }
387
387
  }
388
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatDate, deps: [{ token: i1.MomentDateAdapter }, { token: i2.TranslateService }, { token: i3.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i3.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
389
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: MatDate, selector: "mat-date-field", inputs: { mobile: "mobile", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", required: "required", compact: "compact", autofocus: "autofocus", startDate: "startDate", clearable: "clearable", timezone: "timezone", datePickerFilter: "datePickerFilter", readonly: "readonly", tabindex: "tabindex" }, providers: [DEFAULT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "_matInput", first: true, predicate: ["matInput"], descendants: true }], ngImport: i0, template: "<!-- readonly -->\n@if (readonly) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value | dateFormat: { pattern: datePattern } }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n} @else {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n [appearance]=\"appearance\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_onBlur()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n <mat-datepicker #datePicker [touchUi]=\"mobile\" [disabled]=\"disabled\" [startAt]=\"startDate\">\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n <!-- mat hint -->\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\">\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n}\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n [appearance]=\"appearance\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_onBlur()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n\n <mat-datepicker #datePicker [touchUi]=\"mobile\" [disabled]=\"disabled\" [startAt]=\"startDate\">\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\">\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{display:inline-block;width:100%;position:relative}mat-form-field input[readonly]{-webkit-user-select:none!important;user-select:none!important}mat-form-field .datetime-md{padding:0!important}mat-form-field button[hidden]{display:none}\n"], dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i5.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i5.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.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: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "directive", type: i10.MatDatepickerCancel, selector: "[matDatepickerCancel], [matDateRangePickerCancel]" }, { kind: "directive", type: i10.MatDatepickerApply, selector: "[matDatepickerApply], [matDateRangePickerApply]" }, { kind: "directive", type: i11.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i12.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i13.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i14.ArrayFirstPipe, name: "arrayFirst" }, { kind: "pipe", type: i15.MapKeysPipe, name: "mapKeys" }, { kind: "pipe", type: i16.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
388
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatDate, deps: [{ token: i1.MomentDateAdapter }, { token: i2.TranslateService }, { token: i3.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i3.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
389
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: MatDate, selector: "mat-date-field", inputs: { mobile: "mobile", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", required: "required", compact: "compact", autofocus: "autofocus", startDate: "startDate", clearable: "clearable", timezone: "timezone", datePickerFilter: "datePickerFilter", readonly: "readonly", tabindex: "tabindex" }, providers: [DEFAULT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "_matInput", first: true, predicate: ["matInput"], descendants: true }], ngImport: i0, template: "<!-- readonly -->\n@if (readonly) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value | dateFormat: { pattern: datePattern } }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n} @else {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n [appearance]=\"appearance\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_onBlur()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n <mat-datepicker #datePicker [touchUi]=\"mobile\" [disabled]=\"disabled\" [startAt]=\"startDate\">\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n <!-- mat hint -->\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\">\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n}\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n [appearance]=\"appearance\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_onBlur()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n\n <mat-datepicker #datePicker [touchUi]=\"mobile\" [disabled]=\"disabled\" [startAt]=\"startDate\">\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\">\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{display:inline-block;width:100%;position:relative}mat-form-field input[readonly]{-webkit-user-select:none!important;user-select:none!important}mat-form-field .datetime-md{padding:0!important}mat-form-field button[hidden]{display:none}\n"], dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i5.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i5.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.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: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "directive", type: i10.MatDatepickerCancel, selector: "[matDatepickerCancel], [matDateRangePickerCancel]" }, { kind: "directive", type: i10.MatDatepickerApply, selector: "[matDatepickerApply], [matDateRangePickerApply]" }, { kind: "directive", type: i11.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i12.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i13.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i14.ArrayFirstPipe, name: "arrayFirst" }, { kind: "pipe", type: i15.MapKeysPipe, name: "mapKeys" }, { kind: "pipe", type: i16.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
390
390
  }
391
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatDate, decorators: [{
391
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatDate, decorators: [{
392
392
  type: Component,
393
393
  args: [{ selector: 'mat-date-field', providers: [DEFAULT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- readonly -->\n@if (readonly) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value | dateFormat: { pattern: datePattern } }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n} @else {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n [appearance]=\"appearance\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_onBlur()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n <mat-datepicker #datePicker [touchUi]=\"mobile\" [disabled]=\"disabled\" [startAt]=\"startDate\">\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n <!-- mat hint -->\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\">\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n}\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n [appearance]=\"appearance\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_onBlur()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n\n <mat-datepicker #datePicker [touchUi]=\"mobile\" [disabled]=\"disabled\" [startAt]=\"startDate\">\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\">\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{display:inline-block;width:100%;position:relative}mat-form-field input[readonly]{-webkit-user-select:none!important;user-select:none!important}mat-form-field .datetime-md{padding:0!important}mat-form-field button[hidden]{display:none}\n"] }]
394
394
  }], ctorParameters: () => [{ type: i1.MomentDateAdapter }, { type: i2.TranslateService }, { type: i3.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }, { type: i3.FormGroupDirective, decorators: [{
@@ -379,10 +379,10 @@ export class MatDateShort {
379
379
  this.markForCheck();
380
380
  }
381
381
  }
382
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatDateShort, deps: [{ token: i1.MomentDateAdapter }, { token: i2.TranslateService }, { token: i3.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i3.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
383
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: MatDateShort, selector: "mat-date-short-field", inputs: { mobile: "mobile", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", required: "required", compact: "compact", autofocus: "autofocus", startDate: "startDate", clearable: "clearable", datePickerFilter: "datePickerFilter", readonly: "readonly", tabindex: "tabindex" }, providers: [DEFAULT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "_matInput", first: true, predicate: ["matInput"], descendants: true }], ngImport: i0, template: "<!-- readonly -->\n@if (readonly) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <input matInput hidden type=\"text\" readonly [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value | dateFormat: { pattern: datePattern } }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n} @else {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_checkIfTouched()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n <mat-datepicker\n #datePicker\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"disabled\"\n (yearSelected)=\"_closeDatePicker($event)\"\n panelClass=\"mat-date-short-panel\"\n [startAt]=\"startDate\"\n >\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </mat-form-field>\n}\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_checkIfTouched()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n\n <mat-datepicker\n #datePicker\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"disabled\"\n (yearSelected)=\"_closeDatePicker($event)\"\n panelClass=\"mat-date-short-panel\"\n [startAt]=\"startDate\"\n >\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </mat-form-field>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{display:inline-block;width:100%;position:relative}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field input[readonly]{-webkit-user-select:none!important;user-select:none!important}mat-form-field .datetime-md{padding:0!important}mat-form-field button[hidden]{display:none}\n"], dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i5.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i5.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.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: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "directive", type: i10.MatDatepickerCancel, selector: "[matDatepickerCancel], [matDateRangePickerCancel]" }, { kind: "directive", type: i10.MatDatepickerApply, selector: "[matDatepickerApply], [matDateRangePickerApply]" }, { kind: "directive", type: i11.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i12.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i13.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i14.ArrayFirstPipe, name: "arrayFirst" }, { kind: "pipe", type: i15.MapKeysPipe, name: "mapKeys" }, { kind: "pipe", type: i16.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
382
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatDateShort, deps: [{ token: i1.MomentDateAdapter }, { token: i2.TranslateService }, { token: i3.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i3.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
383
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: MatDateShort, selector: "mat-date-short-field", inputs: { mobile: "mobile", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", required: "required", compact: "compact", autofocus: "autofocus", startDate: "startDate", clearable: "clearable", datePickerFilter: "datePickerFilter", readonly: "readonly", tabindex: "tabindex" }, providers: [DEFAULT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "_matInput", first: true, predicate: ["matInput"], descendants: true }], ngImport: i0, template: "<!-- readonly -->\n@if (readonly) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <input matInput hidden type=\"text\" readonly [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value | dateFormat: { pattern: datePattern } }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n} @else {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_checkIfTouched()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n <mat-datepicker\n #datePicker\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"disabled\"\n (yearSelected)=\"_closeDatePicker($event)\"\n panelClass=\"mat-date-short-panel\"\n [startAt]=\"startDate\"\n >\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </mat-form-field>\n}\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_checkIfTouched()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n\n <mat-datepicker\n #datePicker\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"disabled\"\n (yearSelected)=\"_closeDatePicker($event)\"\n panelClass=\"mat-date-short-panel\"\n [startAt]=\"startDate\"\n >\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </mat-form-field>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{display:inline-block;width:100%;position:relative}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field input[readonly]{-webkit-user-select:none!important;user-select:none!important}mat-form-field .datetime-md{padding:0!important}mat-form-field button[hidden]{display:none}\n"], dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i5.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i5.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.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: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "directive", type: i10.MatDatepickerCancel, selector: "[matDatepickerCancel], [matDateRangePickerCancel]" }, { kind: "directive", type: i10.MatDatepickerApply, selector: "[matDatepickerApply], [matDateRangePickerApply]" }, { kind: "directive", type: i11.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i12.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i13.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i14.ArrayFirstPipe, name: "arrayFirst" }, { kind: "pipe", type: i15.MapKeysPipe, name: "mapKeys" }, { kind: "pipe", type: i16.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
384
384
  }
385
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatDateShort, decorators: [{
385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatDateShort, decorators: [{
386
386
  type: Component,
387
387
  args: [{ selector: 'mat-date-short-field', providers: [DEFAULT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- readonly -->\n@if (readonly) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <input matInput hidden type=\"text\" readonly [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value | dateFormat: { pattern: datePattern } }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n} @else {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_checkIfTouched()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n <mat-datepicker\n #datePicker\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"disabled\"\n (yearSelected)=\"_closeDatePicker($event)\"\n panelClass=\"mat-date-short-panel\"\n [startAt]=\"startDate\"\n >\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </mat-form-field>\n}\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n (click)=\"_openDatePickerIfMobile($event)\"\n >\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Desktop -->\n @if (!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n [maskito]=\"maskitoOptions\"\n [formControl]=\"textControl\"\n (blur)=\"_checkIfTouched()\"\n (keyup.arrowDown)=\"openDatePicker()\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n }\n @if (!mobile) {\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <!-- Mobile -->\n @if (mobile) {\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"textControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n }\n @if (mobile) {\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\" (click)=\"openDatePicker()\" [disabled]=\"disabled\">\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n\n <mat-datepicker\n #datePicker\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"disabled\"\n (yearSelected)=\"_closeDatePicker($event)\"\n panelClass=\"mat-date-short-panel\"\n [startAt]=\"startDate\"\n >\n <!-- Date picker buttons -->\n @if (mobile) {\n <mat-datepicker-actions>\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <!-- errors -->\n @if (formControl.touched && formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error\n >\n @switch (errorKey) {\n @case ('required') {\n <span translate>ERROR.FIELD_REQUIRED</span>\n }\n @case ('validDate') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE</span>\n }\n @case ('dateIsAfter') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </span>\n }\n @case ('dateIsBefore') {\n <span>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </span>\n }\n @case ('dateRange') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n }\n @case ('dateMaxDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n }\n @case ('dateMinDuration') {\n <span translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n }\n @case ('msg') {\n <span>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </span>\n }\n }\n </mat-error>\n }\n <ng-content select=\"mat-error\"></ng-content>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </mat-form-field>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{display:inline-block;width:100%;position:relative}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field input[readonly]{-webkit-user-select:none!important;user-select:none!important}mat-form-field .datetime-md{padding:0!important}mat-form-field button[hidden]{display:none}\n"] }]
388
388
  }], ctorParameters: () => [{ type: i1.MomentDateAdapter }, { type: i2.TranslateService }, { type: i3.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }, { type: i3.FormGroupDirective, decorators: [{
@@ -588,10 +588,10 @@ export class MatDateTime {
588
588
  this.markForCheck();
589
589
  }
590
590
  }
591
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatDateTime, deps: [{ token: i1.MomentDateAdapter }, { token: i2.TranslateService }, { token: i3.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i3.FormGroupDirective, optional: true }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
592
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: MatDateTime, selector: "mat-date-time-field", inputs: { placeholder: "placeholder", floatLabel: "floatLabel", mobile: "mobile", compact: "compact", autofocus: "autofocus", startDate: "startDate", clearable: "clearable", datePickerFilter: "datePickerFilter", appearance: "appearance", subscriptSizing: "subscriptSizing", formControl: "formControl", formControlName: "formControlName", required: "required", readonly: "readonly", tabindex: "tabindex" }, providers: [DEFAULT_VALUE_ACCESSOR], queries: [{ propertyName: "matError", first: true, predicate: MatError, descendants: true }], viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "timePicker", first: true, predicate: ["timePicker"], descendants: true }, { propertyName: "matInputs", predicate: ["matInput"], descendants: true }], ngImport: i0, template: "<!-- readonly -->\n@if(readonly) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if(floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input matInput hidden type=\"text\" readonly [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value | dateFormat: { pattern: displayPattern } }}</ion-text>\n </mat-form-field>\n\n} @else {\n <!-- writable + time -->\n <ion-grid class=\"ion-no-padding {{appearance}}\">\n <ion-row class=\"ion-no-padding no-wrap\">\n <!-- day -->\n <ion-col class=\"day ion-no-padding\" [style.--button-count]=\"clearable ? 2 : 1\">\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"'dynamic'\"\n [class.mdc-text-field--invalid]=\"formControl.touched && (dateControl.invalid || formControl.invalid)\"\n (click)=\"_openDatePickerIfMobile($event, datePicker)\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n >\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <!-- Desktop -->\n @if(!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-input-element\"\n [maskito]=\"maskitoDateOptions\"\n [formControl]=\"dateControl\"\n [placeholder]=\"datePlaceholder | translate\"\n (blur)=\"_onBlur()\"\n (keyup.arrowDown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n\n } @else {\n\n <!-- Mobile -->\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"dateControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <button\n type=\"button\"\n mat-icon-button\n tabindex=\"-1\"\n matSuffix\n (click)=\"openDatePicker($event, datePicker)\"\n [disabled]=\"formControl.disabled\"\n >\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n\n <!-- The date picker -->\n <mat-datepicker #datePicker [touchUi]=\"mobile\" [disabled]=\"disabled\" [startAt]=\"startDate\">\n <!-- Date picker buttons -->\n @if(mobile) {\n <mat-datepicker-actions>\n <!-- Cancel button -->\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <!-- Apply button -->\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label>{{ timeControl.value || ('COMMON.TIME' | translate) }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward\"></ion-icon>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\" [style.--button-count]=\"!compact ? 1 : 0\">\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"'dynamic'\"\n [class.mdc-text-field--invalid]=\"formControl.touched && (timeControl.invalid || formControl.invalid)\"\n >\n @if(floatLabel !== 'never' && !!placeholder) {\n <mat-label translate>COMMON.TIME</mat-label>\n }\n\n @if(!mobile) {\n <input\n matInput\n #matInput\n type=\"text\"\n [formControl]=\"timeControl\"\n [maskito]=\"maskitoTimeOptions\"\n class=\"mat-input-element\"\n autocomplete=\"off\"\n [placeholder]=\"timePlaceholder | translate\"\n [required]=\"required\"\n (keyup.arrowDown)=\"openTimePicker($event)\"\n (keyup.escape)=\"_preventEvent($event)\"\n (blur)=\"_onBlur()\"\n [tabindex]=\"tabindex !== undefined ? tabindex + 1 : undefined\"\n />\n } @else {\n <input\n #matInput\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"timeControl\"\n (click)=\"_openTimePickerIfMobile($event)\"\n readonly\n />\n }\n\n <!-- Hide the final (hidden) input -->\n <input\n matInput\n [formControl]=\"timeControl\"\n hidden\n [required]=\"required\"\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\"\n readonly\n />\n\n @if(!compact && !mobile) {\n <button\n matSuffix\n type=\"button\"\n mat-icon-button\n tabindex=\"-1\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\"\n >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n } @else if(!compact && mobile) {\n <button\n matSuffix\n type=\"button\"\n mat-icon-button\n tabindex=\"-1\"\n [disabled]=\"formControl.disabled\"\n (click)=\"_openTimePickerIfMobile($event)\"\n >\n <mat-icon>access_time</mat-icon>\n </button>\n }\n\n <ngx-material-timepicker\n #timePicker\n [@.disabled]=\"true\"\n (timeSet)=\"_onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\"\n >\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Do the same as MatFromField since angular 15 (see component source)-->\n <div\n class=\"mat-mdc-form-field-subscript-wrapper\"\n [class.mat-mdc-form-field-bottom-align]=\"subscriptSizing === 'fixed'\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n >\n @if(formControl.touched && formControl.invalid) {\n <!-- errors -->\n <div class=\"mat-mdc-form-field-error-wrapper\">\n @if(formControl.errors | mapKeys | arrayFirst; as errorKey) {\n @switch(errorKey) {\n @case('required') {\n <mat-error translate>ERROR.FIELD_REQUIRED</mat-error>\n }\n @case('validDate') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n }\n @case('dateIsAfter') {\n <mat-error>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </mat-error>\n }\n @case('dateIsBefore') {\n <mat-error>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </mat-error>\n }\n @case('dateRange') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n }\n @case('dateMaxDuration') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n }\n @case('dateMinDuration') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n }\n @case('msg') {\n <mat-error>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </mat-error>\n }\n @default {\n <ng-content select=\"mat-error\"></ng-content>\n }\n }\n } @else {\n <ng-content select=\"mat-error\"></ng-content>\n }\n </div>\n } @else {\n <!-- hints -->\n <div class=\"mat-mdc-form-field-hint-wrapper\">\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n }\n </div>\n}\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<!-- cancel button -->\n<ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n</ng-template>\n\n<!-- confirm button -->\n<ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n</ng-template>\n", styles: [":host{display:inline-block;width:100%;position:relative;--ion-grid-column-padding: 0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field input[readonly]{-webkit-user-select:none!important;user-select:none!important}mat-form-field .datetime-md{padding:0!important}mat-form-field button[hidden]{display:none}ion-row.no-wrap{flex-wrap:nowrap}ion-grid ion-col{--button-width: calc(var(--button-count, 0px) * 24px)}ion-grid.fill ion-col.day{--min-width: calc(100px + var(--button-width, 0px));min-width:var(--min-width)}ion-grid.fill ion-col.hour{--min-width: calc(55px + var(--button-width, 0px));--max-width: calc(65px + var(--button-width, 0px));min-width:var(--min-width);max-width:var(--max-width)}ion-grid.fill ion-col.hour mat-form-field{width:100%}ion-grid.fill ion-col.hour mat-form-field mat-label,ion-grid.fill ion-col.hour mat-form-field input[type=text]{text-align:left;min-width:52px}ion-grid.outline ion-col.day{min-width:calc(110px + var(--button-width))}ion-grid.outline ion-col.hour{--min-width: calc(65px + var(--button-width));--max-width: calc(75px + var(--button-width))}mat-form-field.mat-form-field-disabled ion-col.day{min-width:150px}.hour mat-form-field.mat-mdc-form-field-should-float .mat-mdc-form-field-placeholder{max-width:inherit}\n"], dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i5.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: i5.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i5.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i5.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i5.IonRow, selector: "ion-row" }, { kind: "component", type: i5.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.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: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "directive", type: i10.MatDatepickerCancel, selector: "[matDatepickerCancel], [matDateRangePickerCancel]" }, { kind: "directive", type: i10.MatDatepickerApply, selector: "[matDatepickerApply], [matDateRangePickerApply]" }, { kind: "directive", type: i11.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i12.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "ESC", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "hoursOnly", "defaultTime", "timepickerClass", "theme", "min", "max", "ngxMaterialTimepickerTheme", "format", "minutesGap"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i12.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "min", "max", "ngxTimepicker", "value", "disabled", "disableClick"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i13.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i14.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i15.ArrayFirstPipe, name: "arrayFirst" }, { kind: "pipe", type: i16.MapKeysPipe, name: "mapKeys" }, { kind: "pipe", type: i17.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
591
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatDateTime, deps: [{ token: i1.MomentDateAdapter }, { token: i2.TranslateService }, { token: i3.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i3.FormGroupDirective, optional: true }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
592
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: MatDateTime, selector: "mat-date-time-field", inputs: { placeholder: "placeholder", floatLabel: "floatLabel", mobile: "mobile", compact: "compact", autofocus: "autofocus", startDate: "startDate", clearable: "clearable", datePickerFilter: "datePickerFilter", appearance: "appearance", subscriptSizing: "subscriptSizing", formControl: "formControl", formControlName: "formControlName", required: "required", readonly: "readonly", tabindex: "tabindex" }, providers: [DEFAULT_VALUE_ACCESSOR], queries: [{ propertyName: "matError", first: true, predicate: MatError, descendants: true }], viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "timePicker", first: true, predicate: ["timePicker"], descendants: true }, { propertyName: "matInputs", predicate: ["matInput"], descendants: true }], ngImport: i0, template: "<!-- readonly -->\n@if(readonly) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if(floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input matInput hidden type=\"text\" readonly [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value | dateFormat: { pattern: displayPattern } }}</ion-text>\n </mat-form-field>\n\n} @else {\n <!-- writable + time -->\n <ion-grid class=\"ion-no-padding {{appearance}}\">\n <ion-row class=\"ion-no-padding no-wrap\">\n <!-- day -->\n <ion-col class=\"day ion-no-padding\" [style.--button-count]=\"clearable ? 2 : 1\">\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"'dynamic'\"\n [class.mdc-text-field--invalid]=\"formControl.touched && (dateControl.invalid || formControl.invalid)\"\n (click)=\"_openDatePickerIfMobile($event, datePicker)\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n >\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <!-- Desktop -->\n @if(!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-input-element\"\n [maskito]=\"maskitoDateOptions\"\n [formControl]=\"dateControl\"\n [placeholder]=\"datePlaceholder | translate\"\n (blur)=\"_onBlur()\"\n (keyup.arrowDown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n\n } @else {\n\n <!-- Mobile -->\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"dateControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <button\n type=\"button\"\n mat-icon-button\n tabindex=\"-1\"\n matSuffix\n (click)=\"openDatePicker($event, datePicker)\"\n [disabled]=\"formControl.disabled\"\n >\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n\n <!-- The date picker -->\n <mat-datepicker #datePicker [touchUi]=\"mobile\" [disabled]=\"disabled\" [startAt]=\"startDate\">\n <!-- Date picker buttons -->\n @if(mobile) {\n <mat-datepicker-actions>\n <!-- Cancel button -->\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <!-- Apply button -->\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label>{{ timeControl.value || ('COMMON.TIME' | translate) }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward\"></ion-icon>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\" [style.--button-count]=\"!compact ? 1 : 0\">\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"'dynamic'\"\n [class.mdc-text-field--invalid]=\"formControl.touched && (timeControl.invalid || formControl.invalid)\"\n >\n @if(floatLabel !== 'never' && !!placeholder) {\n <mat-label translate>COMMON.TIME</mat-label>\n }\n\n @if(!mobile) {\n <input\n matInput\n #matInput\n type=\"text\"\n [formControl]=\"timeControl\"\n [maskito]=\"maskitoTimeOptions\"\n class=\"mat-input-element\"\n autocomplete=\"off\"\n [placeholder]=\"timePlaceholder | translate\"\n [required]=\"required\"\n (keyup.arrowDown)=\"openTimePicker($event)\"\n (keyup.escape)=\"_preventEvent($event)\"\n (blur)=\"_onBlur()\"\n [tabindex]=\"tabindex !== undefined ? tabindex + 1 : undefined\"\n />\n } @else {\n <input\n #matInput\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"timeControl\"\n (click)=\"_openTimePickerIfMobile($event)\"\n readonly\n />\n }\n\n <!-- Hide the final (hidden) input -->\n <input\n matInput\n [formControl]=\"timeControl\"\n hidden\n [required]=\"required\"\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\"\n readonly\n />\n\n @if(!compact && !mobile) {\n <button\n matSuffix\n type=\"button\"\n mat-icon-button\n tabindex=\"-1\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\"\n >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n } @else if(!compact && mobile) {\n <button\n matSuffix\n type=\"button\"\n mat-icon-button\n tabindex=\"-1\"\n [disabled]=\"formControl.disabled\"\n (click)=\"_openTimePickerIfMobile($event)\"\n >\n <mat-icon>access_time</mat-icon>\n </button>\n }\n\n <ngx-material-timepicker\n #timePicker\n [@.disabled]=\"true\"\n (timeSet)=\"_onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\"\n >\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Do the same as MatFromField since angular 15 (see component source)-->\n <div\n class=\"mat-mdc-form-field-subscript-wrapper\"\n [class.mat-mdc-form-field-bottom-align]=\"subscriptSizing === 'fixed'\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n >\n @if(formControl.touched && formControl.invalid) {\n <!-- errors -->\n <div class=\"mat-mdc-form-field-error-wrapper\">\n @if(formControl.errors | mapKeys | arrayFirst; as errorKey) {\n @switch(errorKey) {\n @case('required') {\n <mat-error translate>ERROR.FIELD_REQUIRED</mat-error>\n }\n @case('validDate') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n }\n @case('dateIsAfter') {\n <mat-error>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </mat-error>\n }\n @case('dateIsBefore') {\n <mat-error>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </mat-error>\n }\n @case('dateRange') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n }\n @case('dateMaxDuration') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n }\n @case('dateMinDuration') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n }\n @case('msg') {\n <mat-error>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </mat-error>\n }\n @default {\n <ng-content select=\"mat-error\"></ng-content>\n }\n }\n } @else {\n <ng-content select=\"mat-error\"></ng-content>\n }\n </div>\n } @else {\n <!-- hints -->\n <div class=\"mat-mdc-form-field-hint-wrapper\">\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n }\n </div>\n}\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<!-- cancel button -->\n<ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n</ng-template>\n\n<!-- confirm button -->\n<ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n</ng-template>\n", styles: [":host{display:inline-block;width:100%;position:relative;--ion-grid-column-padding: 0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field input[readonly]{-webkit-user-select:none!important;user-select:none!important}mat-form-field .datetime-md{padding:0!important}mat-form-field button[hidden]{display:none}ion-row.no-wrap{flex-wrap:nowrap}ion-grid ion-col{--button-width: calc(var(--button-count, 0px) * 24px)}ion-grid.fill ion-col.day{--min-width: calc(100px + var(--button-width, 0px));min-width:var(--min-width)}ion-grid.fill ion-col.hour{--min-width: calc(55px + var(--button-width, 0px));--max-width: calc(65px + var(--button-width, 0px));min-width:var(--min-width);max-width:var(--max-width)}ion-grid.fill ion-col.hour mat-form-field{width:100%}ion-grid.fill ion-col.hour mat-form-field mat-label,ion-grid.fill ion-col.hour mat-form-field input[type=text]{text-align:left;min-width:52px}ion-grid.outline ion-col.day{min-width:calc(110px + var(--button-width))}ion-grid.outline ion-col.hour{--min-width: calc(65px + var(--button-width));--max-width: calc(75px + var(--button-width))}mat-form-field.mat-form-field-disabled ion-col.day{min-width:150px}.hour mat-form-field.mat-mdc-form-field-should-float .mat-mdc-form-field-placeholder{max-width:inherit}\n"], dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i5.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: i5.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i5.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i5.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i5.IonRow, selector: "ion-row" }, { kind: "component", type: i5.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.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: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { 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: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "directive", type: i10.MatDatepickerCancel, selector: "[matDatepickerCancel], [matDateRangePickerCancel]" }, { kind: "directive", type: i10.MatDatepickerApply, selector: "[matDatepickerApply], [matDateRangePickerApply]" }, { kind: "directive", type: i11.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i12.NgxMaterialTimepickerComponent, selector: "ngx-material-timepicker", inputs: ["cancelBtnTmpl", "editableHintTmpl", "confirmBtnTmpl", "ESC", "enableKeyboardInput", "preventOverlayClick", "disableAnimation", "appendToInput", "hoursOnly", "defaultTime", "timepickerClass", "theme", "min", "max", "ngxMaterialTimepickerTheme", "format", "minutesGap"], outputs: ["timeSet", "opened", "closed", "hourSelected", "timeChanged"] }, { kind: "directive", type: i12.TimepickerDirective, selector: "[ngxTimepicker]", inputs: ["format", "min", "max", "ngxTimepicker", "value", "disabled", "disableClick"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i13.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i14.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i15.ArrayFirstPipe, name: "arrayFirst" }, { kind: "pipe", type: i16.MapKeysPipe, name: "mapKeys" }, { kind: "pipe", type: i17.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
593
593
  }
594
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatDateTime, decorators: [{
594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatDateTime, decorators: [{
595
595
  type: Component,
596
596
  args: [{ selector: 'mat-date-time-field', providers: [DEFAULT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- readonly -->\n@if(readonly) {\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if(floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input matInput hidden type=\"text\" readonly [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value | dateFormat: { pattern: displayPattern } }}</ion-text>\n </mat-form-field>\n\n} @else {\n <!-- writable + time -->\n <ion-grid class=\"ion-no-padding {{appearance}}\">\n <ion-row class=\"ion-no-padding no-wrap\">\n <!-- day -->\n <ion-col class=\"day ion-no-padding\" [style.--button-count]=\"clearable ? 2 : 1\">\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"'dynamic'\"\n [class.mdc-text-field--invalid]=\"formControl.touched && (dateControl.invalid || formControl.invalid)\"\n (click)=\"_openDatePickerIfMobile($event, datePicker)\"\n (focus)=\"_openDatePickerIfMobile($event)\"\n >\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if (floatLabel !== 'never' && !!placeholder) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <!-- Desktop -->\n @if(!mobile) {\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-input-element\"\n [maskito]=\"maskitoDateOptions\"\n [formControl]=\"dateControl\"\n [placeholder]=\"datePlaceholder | translate\"\n (blur)=\"_onBlur()\"\n (keyup.arrowDown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"_preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\"\n />\n <input\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n\n } @else {\n\n <!-- Mobile -->\n <input\n #matInput\n autocomplete=\"off\"\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"dateControl\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly\n />\n <input\n matInput\n type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"_onDatePickerChange($event)\"\n readonly\n />\n }\n\n <button\n type=\"button\"\n mat-icon-button\n tabindex=\"-1\"\n matSuffix\n (click)=\"openDatePicker($event, datePicker)\"\n [disabled]=\"formControl.disabled\"\n >\n <mat-icon>{{ mobile ? 'date_range' : 'keyboard_arrow_down' }}</mat-icon>\n </button>\n @if (clearable) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clear($event)\"\n [hidden]=\"formControl.disabled || !formControl.value\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n\n <!-- The date picker -->\n <mat-datepicker #datePicker [touchUi]=\"mobile\" [disabled]=\"disabled\" [startAt]=\"startDate\">\n <!-- Date picker buttons -->\n @if(mobile) {\n <mat-datepicker-actions>\n <!-- Cancel button -->\n <ion-button fill=\"clear\" color=\"dark\" matDatepickerCancel>\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <!-- Apply button -->\n <ion-button fill=\"solid\" color=\"tertiary\" matDatepickerApply>\n <ion-label>{{ timeControl.value || ('COMMON.TIME' | translate) }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward\"></ion-icon>\n </ion-button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\" [style.--button-count]=\"!compact ? 1 : 0\">\n <mat-form-field\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"'dynamic'\"\n [class.mdc-text-field--invalid]=\"formControl.touched && (timeControl.invalid || formControl.invalid)\"\n >\n @if(floatLabel !== 'never' && !!placeholder) {\n <mat-label translate>COMMON.TIME</mat-label>\n }\n\n @if(!mobile) {\n <input\n matInput\n #matInput\n type=\"text\"\n [formControl]=\"timeControl\"\n [maskito]=\"maskitoTimeOptions\"\n class=\"mat-input-element\"\n autocomplete=\"off\"\n [placeholder]=\"timePlaceholder | translate\"\n [required]=\"required\"\n (keyup.arrowDown)=\"openTimePicker($event)\"\n (keyup.escape)=\"_preventEvent($event)\"\n (blur)=\"_onBlur()\"\n [tabindex]=\"tabindex !== undefined ? tabindex + 1 : undefined\"\n />\n } @else {\n <input\n #matInput\n type=\"text\"\n class=\"mat-mdc-form-field-input-control mdc-text-field__input\"\n [formControl]=\"timeControl\"\n (click)=\"_openTimePickerIfMobile($event)\"\n readonly\n />\n }\n\n <!-- Hide the final (hidden) input -->\n <input\n matInput\n [formControl]=\"timeControl\"\n hidden\n [required]=\"required\"\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\"\n readonly\n />\n\n @if(!compact && !mobile) {\n <button\n matSuffix\n type=\"button\"\n mat-icon-button\n tabindex=\"-1\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\"\n >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n } @else if(!compact && mobile) {\n <button\n matSuffix\n type=\"button\"\n mat-icon-button\n tabindex=\"-1\"\n [disabled]=\"formControl.disabled\"\n (click)=\"_openTimePickerIfMobile($event)\"\n >\n <mat-icon>access_time</mat-icon>\n </button>\n }\n\n <ngx-material-timepicker\n #timePicker\n [@.disabled]=\"true\"\n (timeSet)=\"_onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\"\n >\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Do the same as MatFromField since angular 15 (see component source)-->\n <div\n class=\"mat-mdc-form-field-subscript-wrapper\"\n [class.mat-mdc-form-field-bottom-align]=\"subscriptSizing === 'fixed'\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n >\n @if(formControl.touched && formControl.invalid) {\n <!-- errors -->\n <div class=\"mat-mdc-form-field-error-wrapper\">\n @if(formControl.errors | mapKeys | arrayFirst; as errorKey) {\n @switch(errorKey) {\n @case('required') {\n <mat-error translate>ERROR.FIELD_REQUIRED</mat-error>\n }\n @case('validDate') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n }\n @case('dateIsAfter') {\n <mat-error>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}\n </mat-error>\n }\n @case('dateIsBefore') {\n <mat-error>\n {{ 'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}\n </mat-error>\n }\n @case('dateRange') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n }\n @case('dateMaxDuration') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n }\n @case('dateMinDuration') {\n <mat-error translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n }\n @case('msg') {\n <mat-error>\n {{ formControl.errors.msg?.key || formControl.errors.msg | translate: formControl.errors.msg?.params }}\n </mat-error>\n }\n @default {\n <ng-content select=\"mat-error\"></ng-content>\n }\n }\n } @else {\n <ng-content select=\"mat-error\"></ng-content>\n }\n </div>\n } @else {\n <!-- hints -->\n <div class=\"mat-mdc-form-field-hint-wrapper\">\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n }\n </div>\n}\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<!-- cancel button -->\n<ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n</ng-template>\n\n<!-- confirm button -->\n<ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n</ng-template>\n", styles: [":host{display:inline-block;width:100%;position:relative;--ion-grid-column-padding: 0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field input[readonly]{-webkit-user-select:none!important;user-select:none!important}mat-form-field .datetime-md{padding:0!important}mat-form-field button[hidden]{display:none}ion-row.no-wrap{flex-wrap:nowrap}ion-grid ion-col{--button-width: calc(var(--button-count, 0px) * 24px)}ion-grid.fill ion-col.day{--min-width: calc(100px + var(--button-width, 0px));min-width:var(--min-width)}ion-grid.fill ion-col.hour{--min-width: calc(55px + var(--button-width, 0px));--max-width: calc(65px + var(--button-width, 0px));min-width:var(--min-width);max-width:var(--max-width)}ion-grid.fill ion-col.hour mat-form-field{width:100%}ion-grid.fill ion-col.hour mat-form-field mat-label,ion-grid.fill ion-col.hour mat-form-field input[type=text]{text-align:left;min-width:52px}ion-grid.outline ion-col.day{min-width:calc(110px + var(--button-width))}ion-grid.outline ion-col.hour{--min-width: calc(65px + var(--button-width));--max-width: calc(75px + var(--button-width))}mat-form-field.mat-form-field-disabled ion-col.day{min-width:150px}.hour mat-form-field.mat-mdc-form-field-should-float .mat-mdc-form-field-placeholder{max-width:inherit}\n"] }]
597
597
  }], ctorParameters: () => [{ type: i1.MomentDateAdapter }, { type: i2.TranslateService }, { type: i3.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }, { type: i3.FormGroupDirective, decorators: [{