@sumaris-net/ngx-components 18.4.4 → 18.5.0-alpha1

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 (272) hide show
  1. package/esm2022/src/app/admin/admin-routing.module.mjs +4 -4
  2. package/esm2022/src/app/admin/admin.module.mjs +4 -4
  3. package/esm2022/src/app/admin/services/person.service.mjs +3 -3
  4. package/esm2022/src/app/admin/services/validator/person.validator.mjs +3 -3
  5. package/esm2022/src/app/admin/users/users.mjs +3 -3
  6. package/esm2022/src/app/admin/users/users.module.mjs +4 -4
  7. package/esm2022/src/app/core/about/about.modal.mjs +3 -3
  8. package/esm2022/src/app/core/about/about.module.mjs +4 -4
  9. package/esm2022/src/app/core/account/account.module.mjs +4 -4
  10. package/esm2022/src/app/core/account/account.page.mjs +3 -3
  11. package/esm2022/src/app/core/account/new-token.form.mjs +3 -3
  12. package/esm2022/src/app/core/account/new-token.modal.mjs +3 -3
  13. package/esm2022/src/app/core/account/password/change-password.form.mjs +3 -3
  14. package/esm2022/src/app/core/account/password/change-password.module.mjs +4 -4
  15. package/esm2022/src/app/core/account/password/change-password.page.mjs +3 -3
  16. package/esm2022/src/app/core/account/token.table.mjs +3 -3
  17. package/esm2022/src/app/core/auth/auth.form.mjs +3 -3
  18. package/esm2022/src/app/core/auth/auth.modal.mjs +3 -3
  19. package/esm2022/src/app/core/auth/auth.module.mjs +4 -4
  20. package/esm2022/src/app/core/auth/reset-password.modal.mjs +3 -3
  21. package/esm2022/src/app/core/core.module.mjs +4 -4
  22. package/esm2022/src/app/core/core.testing.module.mjs +4 -4
  23. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +4 -4
  24. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +3 -3
  25. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +3 -3
  26. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +4 -4
  27. package/esm2022/src/app/core/form/entity/editor.class.mjs +3 -3
  28. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +3 -3
  29. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +3 -3
  30. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +3 -3
  31. package/esm2022/src/app/core/form/entity/entity.module.mjs +4 -4
  32. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +3 -3
  33. package/esm2022/src/app/core/form/form-container.class.mjs +3 -3
  34. package/esm2022/src/app/core/form/form.class.mjs +3 -3
  35. package/esm2022/src/app/core/form/form.module.mjs +4 -4
  36. package/esm2022/src/app/core/form/list/list.form.mjs +3 -3
  37. package/esm2022/src/app/core/form/list/list.module.mjs +4 -4
  38. package/esm2022/src/app/core/form/properties/properties.form.mjs +3 -3
  39. package/esm2022/src/app/core/form/properties/properties.module.mjs +4 -4
  40. package/esm2022/src/app/core/form/properties/properties.table.mjs +6 -6
  41. package/esm2022/src/app/core/form/properties/property.validator.mjs +3 -3
  42. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +3 -3
  43. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +4 -4
  44. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +3 -3
  45. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +4 -4
  46. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +3 -3
  47. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +4 -4
  48. package/esm2022/src/app/core/form/username/username.form.mjs +3 -3
  49. package/esm2022/src/app/core/form/username/username.module.mjs +4 -4
  50. package/esm2022/src/app/core/graphql/graphql.module.mjs +4 -4
  51. package/esm2022/src/app/core/graphql/graphql.service.mjs +3 -3
  52. package/esm2022/src/app/core/home/home.mjs +3 -3
  53. package/esm2022/src/app/core/home/home.module.mjs +4 -4
  54. package/esm2022/src/app/core/icon/icon.component.mjs +3 -3
  55. package/esm2022/src/app/core/icon/icon.module.mjs +4 -4
  56. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +9 -12
  57. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +4 -4
  58. package/esm2022/src/app/core/menu/menu.component.mjs +3 -3
  59. package/esm2022/src/app/core/menu/menu.module.mjs +4 -4
  60. package/esm2022/src/app/core/menu/menu.service.mjs +3 -3
  61. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +3 -3
  62. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +3 -3
  63. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +3 -3
  64. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +4 -4
  65. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +3 -3
  66. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +4 -4
  67. package/esm2022/src/app/core/peer/select-peer.modal.mjs +3 -3
  68. package/esm2022/src/app/core/peer/select-peer.module.mjs +4 -4
  69. package/esm2022/src/app/core/register/register-confirm.page.mjs +3 -3
  70. package/esm2022/src/app/core/register/register.form.mjs +3 -3
  71. package/esm2022/src/app/core/register/register.modal.mjs +3 -3
  72. package/esm2022/src/app/core/register/register.module.mjs +4 -4
  73. package/esm2022/src/app/core/services/account.service.mjs +3 -3
  74. package/esm2022/src/app/core/services/auth-guard.service.mjs +3 -3
  75. package/esm2022/src/app/core/services/base-entity-service.class.mjs +3 -3
  76. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +3 -3
  77. package/esm2022/src/app/core/services/config.service.mjs +3 -3
  78. package/esm2022/src/app/core/services/crypto.service.mjs +3 -3
  79. package/esm2022/src/app/core/services/local-settings.service.mjs +3 -3
  80. package/esm2022/src/app/core/services/network.service.mjs +26 -26
  81. package/esm2022/src/app/core/services/network.types.mjs +2 -20
  82. package/esm2022/src/app/core/services/network.utils.mjs +23 -1
  83. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +8 -8
  84. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +4 -4
  85. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +4 -4
  86. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +4 -4
  87. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +3 -3
  88. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +8 -8
  89. package/esm2022/src/app/core/services/platform.service.mjs +3 -3
  90. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +3 -3
  91. package/esm2022/src/app/core/services/testing/referential.validator.mjs +3 -3
  92. package/esm2022/src/app/core/services/validator/account.validator.mjs +3 -3
  93. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +3 -3
  94. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +3 -3
  95. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +3 -3
  96. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +3 -3
  97. package/esm2022/src/app/core/settings/settings.module.mjs +4 -4
  98. package/esm2022/src/app/core/settings/settings.page.mjs +3 -3
  99. package/esm2022/src/app/core/table/async-table.class.mjs +3 -3
  100. package/esm2022/src/app/core/table/column/actions-column.component.mjs +3 -3
  101. package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +3 -3
  102. package/esm2022/src/app/core/table/column/row-field.component.mjs +3 -3
  103. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +3 -3
  104. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +3 -3
  105. package/esm2022/src/app/core/table/memory-table.class.mjs +3 -3
  106. package/esm2022/src/app/core/table/table-select-columns.component.mjs +3 -3
  107. package/esm2022/src/app/core/table/table.class.mjs +3 -3
  108. package/esm2022/src/app/core/table/table.module.mjs +4 -4
  109. package/esm2022/src/app/core/table/table.pipes.mjs +9 -9
  110. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +3 -3
  111. package/esm2022/src/app/core/table/testing/table.testing.mjs +3 -3
  112. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +4 -4
  113. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +3 -3
  114. package/esm2022/src/app/core/table/testing/table2.testing.mjs +3 -3
  115. package/esm2022/src/app/shared/audio/audio.mjs +3 -3
  116. package/esm2022/src/app/shared/audio/audio.testing.mjs +3 -3
  117. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +4 -4
  118. package/esm2022/src/app/shared/capacitor/keyboard.mjs +3 -3
  119. package/esm2022/src/app/shared/debug/debug.component.mjs +3 -3
  120. package/esm2022/src/app/shared/debug/debug.module.mjs +4 -4
  121. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +3 -3
  122. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +3 -3
  123. package/esm2022/src/app/shared/directives/directives.module.mjs +4 -4
  124. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +3 -3
  125. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +3 -3
  126. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +3 -3
  127. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +3 -3
  128. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +4 -4
  129. package/esm2022/src/app/shared/directives/throttled-click.directive.mjs +3 -3
  130. package/esm2022/src/app/shared/file/file.service.mjs +3 -3
  131. package/esm2022/src/app/shared/form/field.component.mjs +3 -3
  132. package/esm2022/src/app/shared/form/loading-spinner.mjs +3 -3
  133. package/esm2022/src/app/shared/gesture/gesture-config.mjs +3 -3
  134. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +3 -3
  135. package/esm2022/src/app/shared/help/help.modal.mjs +3 -3
  136. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +3 -3
  137. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +3 -3
  138. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +4 -4
  139. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +3 -3
  140. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +4 -4
  141. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +3 -3
  142. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +3 -3
  143. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +4 -4
  144. package/esm2022/src/app/shared/image/image.module.mjs +4 -4
  145. package/esm2022/src/app/shared/image/image.service.mjs +3 -3
  146. package/esm2022/src/app/shared/logging/logging-service.class.mjs +3 -3
  147. package/esm2022/src/app/shared/logging/logging-service.module.mjs +4 -4
  148. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +3 -3
  149. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +4 -4
  150. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
  151. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +3 -3
  152. package/esm2022/src/app/shared/material/badge/badge.module.mjs +4 -4
  153. package/esm2022/src/app/shared/material/badge/badge.test.mjs +3 -3
  154. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +4 -4
  155. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +3 -3
  156. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +3 -3
  157. package/esm2022/src/app/shared/material/chips/chips.module.mjs +4 -4
  158. package/esm2022/src/app/shared/material/chips/material.chips.mjs +3 -3
  159. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +3 -3
  160. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +4 -4
  161. package/esm2022/src/app/shared/material/datetime/material.date.mjs +3 -3
  162. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +3 -3
  163. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +3 -3
  164. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +3 -3
  165. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +3 -3
  166. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +3 -3
  167. package/esm2022/src/app/shared/material/duration/duration.module.mjs +4 -4
  168. package/esm2022/src/app/shared/material/duration/material.duration.mjs +3 -3
  169. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +3 -3
  170. package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +3 -3
  171. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +3 -3
  172. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +4 -4
  173. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +3 -3
  174. package/esm2022/src/app/shared/material/material.module.mjs +4 -4
  175. package/esm2022/src/app/shared/material/material.testing.module.mjs +4 -4
  176. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +3 -3
  177. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +3 -3
  178. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +3 -3
  179. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +4 -4
  180. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +3 -3
  181. package/esm2022/src/app/shared/material/test/test-component.mjs +6 -6
  182. package/esm2022/src/app/shared/material/testing/common.test.mjs +3 -3
  183. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +3 -3
  184. package/esm2022/src/app/shared/material/text/text-form.component.mjs +3 -3
  185. package/esm2022/src/app/shared/material/text/text-form.module.mjs +4 -4
  186. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +3 -3
  187. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +4 -4
  188. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +3 -3
  189. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +3 -3
  190. package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +4 -4
  191. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +27 -27
  192. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +3 -3
  193. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +3 -3
  194. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +4 -4
  195. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +6 -6
  196. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +4 -4
  197. package/esm2022/src/app/shared/pipes/dates.pipe.mjs +3 -3
  198. package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +4 -4
  199. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +4 -4
  200. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +3 -3
  201. package/esm2022/src/app/shared/pipes/form.pipes.mjs +21 -21
  202. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +4 -4
  203. package/esm2022/src/app/shared/pipes/html.pipes.mjs +6 -6
  204. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +9 -9
  205. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +12 -12
  206. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +3 -3
  207. package/esm2022/src/app/shared/pipes/math.pipes.mjs +12 -12
  208. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +3 -3
  209. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +4 -4
  210. package/esm2022/src/app/shared/pipes/pipes.module.mjs +4 -4
  211. package/esm2022/src/app/shared/pipes/property.pipes.mjs +14 -14
  212. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +21 -21
  213. package/esm2022/src/app/shared/pipes/string.pipes.mjs +30 -30
  214. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +8 -8
  215. package/esm2022/src/app/shared/pipes/types.pipes.mjs +15 -15
  216. package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +4 -4
  217. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +3 -3
  218. package/esm2022/src/app/shared/services/progress-bar.service.mjs +3 -3
  219. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +3 -3
  220. package/esm2022/src/app/shared/services/startable-service.class.mjs +3 -3
  221. package/esm2022/src/app/shared/services/translate-context.service.mjs +3 -3
  222. package/esm2022/src/app/shared/shared-routing.module.mjs +7 -7
  223. package/esm2022/src/app/shared/shared.module.mjs +4 -4
  224. package/esm2022/src/app/shared/shared.testing.module.mjs +4 -4
  225. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +3 -3
  226. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +4 -4
  227. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +4 -4
  228. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +4 -4
  229. package/esm2022/src/app/shared/storage/storage.service.mjs +3 -3
  230. package/esm2022/src/app/shared/testing/maskito.test.mjs +3 -3
  231. package/esm2022/src/app/shared/testing/observable.test.mjs +3 -3
  232. package/esm2022/src/app/shared/testing/tests.page.mjs +3 -3
  233. package/esm2022/src/app/shared/toast/toast.testing.mjs +3 -3
  234. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +4 -4
  235. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +3 -3
  236. package/esm2022/src/app/shared/toolbar/toolbar.mjs +3 -3
  237. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +4 -4
  238. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +3 -3
  239. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +4 -4
  240. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +3 -3
  241. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +3 -3
  242. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +3 -3
  243. package/esm2022/src/app/social/job/job.module.mjs +4 -4
  244. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +3 -3
  245. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +3 -3
  246. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +3 -3
  247. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +3 -3
  248. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +3 -3
  249. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +3 -3
  250. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +4 -4
  251. package/esm2022/src/app/social/message/message.form.mjs +3 -3
  252. package/esm2022/src/app/social/message/message.modal.mjs +3 -3
  253. package/esm2022/src/app/social/message/message.module.mjs +4 -4
  254. package/esm2022/src/app/social/message/message.service.mjs +3 -3
  255. package/esm2022/src/app/social/social.module.mjs +4 -4
  256. package/esm2022/src/app/social/social.testing.module.mjs +4 -4
  257. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +3 -3
  258. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +3 -3
  259. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +3 -3
  260. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +4 -4
  261. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +3 -3
  262. package/esm2022/src/app/social/user-event/user-event.module.mjs +4 -4
  263. package/esm2022/src/app/social/user-event/user-event.service.mjs +3 -3
  264. package/esm2022/src/environments/environment.loader.mjs +3 -3
  265. package/esm2022/src/environments/environment.mjs +2 -2
  266. package/fesm2022/sumaris-net.ngx-components.mjs +1083 -1086
  267. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  268. package/package.json +20 -21
  269. package/src/app/core/install/install-upgrade-card.component.d.ts +2 -4
  270. package/src/app/core/services/network.service.d.ts +6 -6
  271. package/src/app/core/services/network.types.d.ts +1 -3
  272. package/src/app/core/services/network.utils.d.ts +5 -0
@@ -102,10 +102,10 @@ export class FileService {
102
102
  }
103
103
  this._started = true;
104
104
  }
105
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FileService, deps: [{ token: i1.Platform }, { token: i2.HttpClient }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
106
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FileService, providedIn: 'root' });
105
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileService, deps: [{ token: i1.Platform }, { token: i2.HttpClient }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
106
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileService, providedIn: 'root' });
107
107
  }
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: FileService, decorators: [{
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileService, decorators: [{
109
109
  type: Injectable,
110
110
  args: [{
111
111
  providedIn: 'root',
@@ -306,8 +306,8 @@ export class AppFormField {
306
306
  }, timeout || 0);
307
307
  }
308
308
  }
309
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppFormField, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i2.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
310
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: AppFormField, selector: "app-form-field", inputs: { definition: "definition", readonly: ["readonly", "readonly", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", compact: ["compact", "compact", booleanAttribute], required: ["required", "required", booleanAttribute], hideRequiredMarker: ["hideRequiredMarker", "hideRequiredMarker", booleanAttribute], floatLabel: "floatLabel", label: "label", appearance: "appearance", subscriptSizing: "subscriptSizing", tabindex: ["tabindex", "tabindex", numberAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], clearable: ["clearable", "clearable", booleanAttribute], chipColor: "chipColor", classList: ["class", "classList"], debug: ["debug", "debug", booleanAttribute] }, outputs: { onKeyupEnter: "keyup.enter" }, providers: [
309
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppFormField, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i2.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
310
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppFormField, selector: "app-form-field", inputs: { definition: "definition", readonly: ["readonly", "readonly", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", compact: ["compact", "compact", booleanAttribute], required: ["required", "required", booleanAttribute], hideRequiredMarker: ["hideRequiredMarker", "hideRequiredMarker", booleanAttribute], floatLabel: "floatLabel", label: "label", appearance: "appearance", subscriptSizing: "subscriptSizing", tabindex: ["tabindex", "tabindex", numberAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], clearable: ["clearable", "clearable", booleanAttribute], chipColor: "chipColor", classList: ["class", "classList"], debug: ["debug", "debug", booleanAttribute] }, outputs: { onKeyupEnter: "keyup.enter" }, providers: [
311
311
  {
312
312
  provide: NG_VALUE_ACCESSOR,
313
313
  useExisting: forwardRef(() => AppFormField),
@@ -315,7 +315,7 @@ export class AppFormField {
315
315
  },
316
316
  ], viewQueries: [{ propertyName: "matInput", first: true, predicate: ["matInput"], descendants: true }, { propertyName: "autocompleteField", first: true, predicate: ["autocompleteField"], descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- integer -->\n <mat-form-field\n *ngSwitchCase=\"'integer'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input\n matInput\n #matInput\n type=\"number\"\n autocomplete=\"off\"\n [readonly]=\"readonly\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n pattern=\"-?[0-9]*\"\n step=\"1\"\n [appAutofocus]=\"autofocus\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, false)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContentFromEvent($event)\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate: formControl.errors['min'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{ (compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate: formControl.errors['max'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('pattern')\">\n {{ 'ERROR.FIELD_NOT_VALID_INTEGER' | translate }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('integer')\">\n {{ 'ERROR.FIELD_NOT_VALID_INTEGER' | translate }}\n </mat-error>\n\n <button\n matSuffix\n *ngIf=\"clearable\"\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl | formGetValue | isNilOrBlank)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- double -->\n <mat-form-field\n *ngSwitchCase=\"'double'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input\n matInput\n #matInput\n type=\"number\"\n decimal=\"true\"\n autocomplete=\"off\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n [appAutofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [step]=\"numberInputStep\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, true)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContentFromEvent($event)\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('decimal')\" translate>ERROR.FIELD_NOT_VALID_DECIMAL</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate: formControl.errors['min'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{ (compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate: formControl.errors['max'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('maxDecimals')\">\n {{\n (compact ? 'ERROR.FIELD_MAXIMUM_DECIMALS_COMPACT' : 'ERROR.FIELD_MAXIMUM_DECIMALS')\n | translate: { maxDecimals: definition.maximumNumberDecimals }\n }}\n </mat-error>\n\n <button\n matSuffix\n *ngIf=\"clearable\"\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl | formGetValue | isNilOrBlank)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- boolean -->\n <mat-boolean-field\n *ngSwitchCase=\"'boolean'\"\n #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [required]=\"required\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [readonly]=\"readonly\"\n >\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-boolean-field>\n\n <!-- date -->\n <mat-date-field\n *ngSwitchCase=\"'date'\"\n #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_PLACEHOLDER' | translate) : placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\"\n >\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-field>\n\n <!-- date time -->\n <mat-date-time-field\n *ngSwitchCase=\"'dateTime'\"\n #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_TIME_PLACEHOLDER' | translate) : placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\"\n >\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-time-field>\n\n <!-- enum -->\n <mat-form-field\n *ngSwitchCase=\"'enum'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"readonly\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n @if (readonly) {\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value }}</ion-text>\n } @else {\n <mat-select\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n >\n <mat-option *ngFor=\"let item of _values\" [value]=\"item.key\">{{ item.value | translate }}</mat-option>\n </mat-select>\n }\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- multi enum -->\n <mat-chips-field\n *ngSwitchCase=\"'enums'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [formControl]=\"formControl\"\n [clearable]=\"clearable\"\n [items]=\"_values\"\n [displayAttributes]=\"definition.autocomplete?.attributes || ['key', 'value']\"\n [config]=\"definition.autocomplete\"\n [showAllOnFocus]=\"true\"\n [required]=\"required\"\n [chipColor]=\"chipColor | matColor\"\n >\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- color -->\n <mat-form-field\n *ngSwitchCase=\"'color'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n <ion-icon margin-right name=\"color-fill\" matPrefix></ion-icon>\n\n <input\n matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [style.color]=\"getColorContrast(formControl.value)\"\n [style.background]=\"formControl.value\"\n [colorPicker]=\"formControl.value\"\n (colorPickerChange)=\"writeValue($event)\"\n [cpSaveClickOutside]=\"true\"\n cpPosition=\"top\"\n cpOutputFormat=\"hex\"\n [cpOKButton]=\"false\"\n [required]=\"required\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- string -->\n <mat-form-field\n *ngSwitchCase=\"'string'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContentFromEvent($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterAlphanumericalInput($event)\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <button\n matSuffix\n *ngIf=\"clearable\"\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl | formGetValue | isNilOrBlank)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- auto-complete -->\n <mat-autocomplete-field\n *ngSwitchCase=\"'entity'\"\n #autocompleteField\n [class]=\"classList\"\n [autofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [hideRequiredMarker]=\"hideRequiredMarker\"\n [tabindex]=\"tabindex\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n [displayWith]=\"getDisplayValueFn(definition)\"\n >\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-autocomplete-field>\n\n <!-- multi auto-complete -->\n <mat-chips-field\n *ngSwitchCase=\"'entities'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [chipColor]=\"chipColor | matColor\"\n [clearable]=\"clearable\"\n [displayWith]=\"getDisplayValueFn(definition)\"\n [readonly]=\"readonly\"\n >\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- other -->\n <div *ngSwitchDefault>\n <mat-error *ngIf=\"type\">\n Unknown type {{ type }} for option {{ definition.key }}. Please report this error.\n </mat-error>\n <mat-error *ngIf=\"!type\">Error on option field. Please check console log for details.</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:inline-block;position:relative}button[hidden]{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i5.ColorPickerDirective, selector: "[colorPicker]", inputs: ["colorPicker", "cpWidth", "cpHeight", "cpToggle", "cpDisabled", "cpIgnoredElements", "cpFallbackColor", "cpColorMode", "cpCmykEnabled", "cpOutputFormat", "cpAlphaChannel", "cpDisableInput", "cpDialogDisplay", "cpSaveClickOutside", "cpCloseClickOutside", "cpUseRootViewContainer", "cpPosition", "cpPositionOffset", "cpPositionRelativeToArrow", "cpOKButton", "cpOKButtonText", "cpOKButtonClass", "cpCancelButton", "cpCancelButtonText", "cpCancelButtonClass", "cpEyeDropper", "cpPresetLabel", "cpPresetColors", "cpPresetColorsClass", "cpMaxPresetColorsLength", "cpPresetEmptyMessage", "cpPresetEmptyMessageClass", "cpAddColorButton", "cpAddColorButtonText", "cpAddColorButtonClass", "cpRemoveColorButtonClass", "cpArrowPosition", "cpExtraTemplate"], outputs: ["cpInputChange", "cpToggleChange", "cpSliderChange", "cpSliderDragEnd", "cpSliderDragStart", "colorPickerOpen", "colorPickerClose", "colorPickerCancel", "colorPickerSelect", "colorPickerChange", "cpCmykColorChange", "cpPresetColorsChange"], exportAs: ["ngxColorPicker"] }, { 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.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i12.MatAutocompleteField, selector: "mat-autocomplete-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "label", "appearance", "subscriptSizing", "placeholder", "suggestFn", "required", "hideRequiredMarker", "mobile", "clearable", "debounceTime", "displaySeparator", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "reloadItemsOnFocus", "clearInvalidValueOnBlur", "autofocus", "config", "i18nPrefix", "noResultMessage", "panelClass", "panelWidth", "disableRipple", "matAutocompletePosition", "multiple", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "debug", "showSearchBar", "stickySearchBar", "applyImplicitValue", "dropButtonTitle", "clearButtonTitle", "trimSearchText", "splitSearchText", "selectInputContentOnFocus", "selectInputContentOnFocusDelay", "previewImplicitValue", "class", "filter", "readonly", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keydown.backspace", "keyup.enter", "selectionChange"] }, { kind: "component", type: i13.MatDate, selector: "mat-date-field", inputs: ["formControl", "formControlName", "placeholder", "floatLabel", "mobile", "compact", "autofocus", "clearable", "required", "startDate", "timezone", "datePickerFilter", "appearance", "subscriptSizing", "readonly", "tabindex"] }, { kind: "component", type: i14.MatDateTime, selector: "mat-date-time-field", inputs: ["placeholder", "floatLabel", "mobile", "compact", "autofocus", "clearable", "startDate", "datePickerFilter", "allowNoTime", "appearance", "subscriptSizing", "formControl", "formControlName", "required", "readonly", "tabindex"] }, { kind: "component", type: i15.MatBooleanField, selector: "mat-boolean-field", inputs: ["disabled", "formControl", "formControlName", "placeholder", "floatLabel", "appearance", "subscriptSizing", "readonly", "required", "compact", "style", "buttonsColCount", "class", "yesLabel", "noLabel", "showButtonIcons", "yesIcon", "noIcon", "clearable", "labelPosition", "tabindex", "showRadio", "value"], outputs: ["keyup.enter", "focus", "blur"] }, { kind: "component", type: i16.MatChipsField, selector: "mat-chips-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "appearance", "subscriptSizing", "placeholder", "suggestFn", "required", "mobile", "readonly", "clearable", "debounceTime", "displaySeparator", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "autofocus", "config", "i18nPrefix", "noResultMessage", "panelClass", "panelWidth", "disableRipple", "matAutocompletePosition", "itemSize", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "chipColor", "debug", "applyImplicitValue", "dropButtonTitle", "clearButtonTitle", "trimSearchText", "class", "filter", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keyup.enter"] }, { kind: "directive", type: i17.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i18.IsNilOrBlankPipe, name: "isNilOrBlank" }, { kind: "pipe", type: i19.FormGetValuePipe, name: "formGetValue" }, { kind: "pipe", type: i20.MatColorPipe, name: "matColor" }, { kind: "pipe", type: i21.AsFloatLabelTypePipe, name: "asFloatLabelType" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
317
317
  }
318
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppFormField, decorators: [{
318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppFormField, decorators: [{
319
319
  type: Component,
320
320
  args: [{ selector: 'app-form-field', providers: [
321
321
  {
@@ -6,15 +6,15 @@ export class AppLoadingSpinner {
6
6
  loading = false;
7
7
  color = 'secondary';
8
8
  name;
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: AppLoadingSpinner, selector: "app-loading-spinner", inputs: { loading: "loading", color: "color", name: "name" }, ngImport: i0, template: `
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AppLoadingSpinner, selector: "app-loading-spinner", inputs: { loading: "loading", color: "color", name: "name" }, ngImport: i0, template: `
11
11
  <ion-spinner *ngIf="loading; else content" [color]="color" [name]="name"></ion-spinner>
12
12
  <ng-template #content>
13
13
  <ng-content></ng-content>
14
14
  </ng-template>
15
15
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }] });
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppLoadingSpinner, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppLoadingSpinner, decorators: [{
18
18
  type: Component,
19
19
  args: [{
20
20
  selector: 'app-loading-spinner',
@@ -36,10 +36,10 @@ export class AppGestureConfig extends HammerGestureConfig {
36
36
  }
37
37
  return mc;
38
38
  }
39
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppGestureConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
40
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppGestureConfig, providedIn: 'root' });
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppGestureConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
40
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppGestureConfig, providedIn: 'root' });
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppGestureConfig, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppGestureConfig, decorators: [{
43
43
  type: Injectable,
44
44
  args: [{ providedIn: 'root' }]
45
45
  }] });
@@ -50,10 +50,10 @@ export class ComponentDirtyGuard {
50
50
  // Cancel deactivate
51
51
  return false;
52
52
  }
53
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ComponentDirtyGuard, deps: [{ token: i1.TranslateService }, { token: i2.AlertController }], target: i0.ɵɵFactoryTarget.Injectable });
54
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ComponentDirtyGuard });
53
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComponentDirtyGuard, deps: [{ token: i1.TranslateService }, { token: i2.AlertController }], target: i0.ɵɵFactoryTarget.Injectable });
54
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComponentDirtyGuard });
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ComponentDirtyGuard, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComponentDirtyGuard, decorators: [{
57
57
  type: Injectable
58
58
  }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.AlertController }] });
59
59
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWRpcnR5Lmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3VhcmQvY29tcG9uZW50LWRpcnR5Lmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQUluQyxNQUFNLE9BQU8sbUJBQW1CO0lBSWxCO0lBQ0E7SUFKSixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFlBQ1ksU0FBMkIsRUFDM0IsU0FBMEI7UUFEMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFDbkMsQ0FBQztJQUVKLEtBQUssQ0FBQyxhQUFhLENBQ2pCLFNBQW1CLEVBQ25CLFlBQW9DLEVBQ3BDLFlBQWlDLEVBQ2pDLFNBQStCO1FBRS9CLE1BQU0sS0FBSyxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLEtBQUssQ0FBQztRQUMvQixJQUFJLEdBQUcsR0FBRztZQUNSLFNBQVMsRUFBRSxDQUFDLEtBQUs7WUFDakIsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLG1CQUFtQjtZQUNuQixHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNiLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLElBQUksSUFBSSxDQUFDLEtBQUs7d0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO29CQUM5RSxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLEtBQUs7b0JBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFFRCxtQkFBbUI7WUFDbkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsb0JBQW9CO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt3R0FuRFUsbUJBQW1COzRHQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5EZWFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFsZXJ0cyB9IGZyb20gJy4uL2FsZXJ0cyc7XG5pbXBvcnQgeyBDYW5MZWF2ZSB9IGZyb20gJy4uLy4uL2NvcmUvZm9ybS9mb3JtLnV0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudERpcnR5R3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPENhbkxlYXZlPiB7XG4gIHByaXZhdGUgZGVidWcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlclxuICApIHt9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZShcbiAgICBjb21wb25lbnQ6IENhbkxlYXZlLFxuICAgIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBjdXJyZW50U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXG4gICAgbmV4dFN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgY29uc3QgZGlydHkgPSBjb21wb25lbnQ/LmRpcnR5O1xuICAgIGNvbnN0IHZhbGlkID0gY29tcG9uZW50Py52YWxpZDtcbiAgICBsZXQgY2FuID0ge1xuICAgICAgY29uZmlybWVkOiAhZGlydHksXG4gICAgICBzYXZlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtkaXJ0eS1ndWFyZF0gY2FuRGVhY3RpdmF0ZSBjb21wb25lbnQgZGlydHk6ICR7ZGlydHl9LCB2YWxpZDogJHt2YWxpZH1gKTtcbiAgICB9XG5cbiAgICBpZiAoZGlydHkpIHtcbiAgICAgIC8vIEFzayBjb25maXJtYXRpb25cbiAgICAgIGNhbiA9IGF3YWl0IEFsZXJ0cy5hc2tTYXZlQmVmb3JlQWN0aW9uKHRoaXMuYWxlcnRDdHJsLCB0aGlzLnRyYW5zbGF0ZSwgeyB2YWxpZCB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBjb25maXJtOiAke2Nhbi5jb25maXJtZWR9YCk7XG5cbiAgICBpZiAoY2FuLmNvbmZpcm1lZCkge1xuICAgICAgaWYgKGNhbi5zYXZlKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZGlydHktZ3VhcmRdIGRvIHNhdmVgKTtcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBjb21wb25lbnQuc2F2ZSgpO1xuICAgICAgICBpZiAoIXNhdmVkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYFtkaXJ0eS1ndWFyZF0gc2F2ZSBmYWlsZWQsIGNhbmNlbCBkZWFjdGl2YXRlYCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBkbyBjYW5jZWxgKTtcbiAgICAgICAgaWYgKGRpcnR5KSBjb21wb25lbnQuY2FuY2VsKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFsbG93IGRlYWN0aXZhdGVcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIENhbmNlbCBkZWFjdGl2YXRlXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -45,10 +45,10 @@ export class AppHelpModal {
45
45
  this.loading = false;
46
46
  this.cd.markForCheck();
47
47
  }
48
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppHelpModal, deps: [{ token: i0.Injector }, { token: i1.ModalController }, { token: i2.PlatformService }, { token: i3.LocalSettingsService }, { token: i4.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
49
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: AppHelpModal, selector: "app-help-modal", inputs: { title: "title", showError: "showError", markdownContent: "markdownContent", markdownUrl: "markdownUrl" }, ngImport: i0, template: "<app-modal-toolbar\n color=\"light\"\n [title]=\"title | translate\"\n (cancel)=\"close($event)\"\n [showSpinner]=\"loading\"\n></app-modal-toolbar>\n\n<ion-content class=\"ion-padding\">\n <!-- error -->\n <ion-item *ngIf=\"error && showError\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n\n <markdown *ngIf=\"markdownContent; else useDocUrl\" [data]=\"markdownContent\" (ready)=\"markAsLoaded()\" emoji></markdown>\n\n <ng-template #useDocUrl>\n <markdown\n *ngIf=\"markdownUrl\"\n [src]=\"markdownUrl\"\n (load)=\"markAsLoaded()\"\n (error)=\"onLoadError($event)\"\n emoji\n ></markdown>\n </ng-template>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.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: i1.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: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i6.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i7.ModalToolbarComponent, selector: "app-modal-toolbar", inputs: ["modalName", "title", "color", "showSpinner", "canValidate", "validateIcon"], outputs: ["cancel", "validate"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
48
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppHelpModal, deps: [{ token: i0.Injector }, { token: i1.ModalController }, { token: i2.PlatformService }, { token: i3.LocalSettingsService }, { token: i4.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AppHelpModal, selector: "app-help-modal", inputs: { title: "title", showError: "showError", markdownContent: "markdownContent", markdownUrl: "markdownUrl" }, ngImport: i0, template: "<app-modal-toolbar\n color=\"light\"\n [title]=\"title | translate\"\n (cancel)=\"close($event)\"\n [showSpinner]=\"loading\"\n></app-modal-toolbar>\n\n<ion-content class=\"ion-padding\">\n <!-- error -->\n <ion-item *ngIf=\"error && showError\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n\n <markdown *ngIf=\"markdownContent; else useDocUrl\" [data]=\"markdownContent\" (ready)=\"markAsLoaded()\" emoji></markdown>\n\n <ng-template #useDocUrl>\n <markdown\n *ngIf=\"markdownUrl\"\n [src]=\"markdownUrl\"\n (load)=\"markAsLoaded()\"\n (error)=\"onLoadError($event)\"\n emoji\n ></markdown>\n </ng-template>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.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: i1.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: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i6.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i7.ModalToolbarComponent, selector: "app-modal-toolbar", inputs: ["modalName", "title", "color", "showSpinner", "canValidate", "validateIcon"], outputs: ["cancel", "validate"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppHelpModal, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppHelpModal, decorators: [{
52
52
  type: Component,
53
53
  args: [{ selector: 'app-help-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-modal-toolbar\n color=\"light\"\n [title]=\"title | translate\"\n (cancel)=\"close($event)\"\n [showSpinner]=\"loading\"\n></app-modal-toolbar>\n\n<ion-content class=\"ion-padding\">\n <!-- error -->\n <ion-item *ngIf=\"error && showError\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n\n <markdown *ngIf=\"markdownContent; else useDocUrl\" [data]=\"markdownContent\" (ready)=\"markAsLoaded()\" emoji></markdown>\n\n <ng-template #useDocUrl>\n <markdown\n *ngIf=\"markdownUrl\"\n [src]=\"markdownUrl\"\n (load)=\"markAsLoaded()\"\n (error)=\"onLoadError($event)\"\n emoji\n ></markdown>\n </ng-template>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n" }]
54
54
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.ModalController }, { type: i2.PlatformService }, { type: i3.LocalSettingsService }, { type: i4.TranslateService }, { type: i0.ChangeDetectorRef }], propDecorators: { title: [{
@@ -10,10 +10,10 @@ export class HotkeysDialogComponent {
10
10
  this.data = data;
11
11
  this.hotkeys = Array.from(this.data);
12
12
  }
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: HotkeysDialogComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: HotkeysDialogComponent, selector: "ng-component", ngImport: i0, template: "<table class=\"ion-padding\">\n <tbody>\n <tr *ngFor=\"let keys of hotkeys\">\n <td>{{ keys[1] | translate }}</td>\n\n <td class=\"text-right\">\n <kbd>{{ keys[0] }}</kbd>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host table{border-collapse:collapse;width:100%;color:#212529}:host th{font-weight:500;text-align:left;vertical-align:bottom;padding:.75rem;border-top:1px solid #dee2e6;border-bottom:2px solid #dee2e6}:host td{vertical-align:top;border-top:1px solid #dee2e6;padding:.75rem}:host kbd{margin-right:6px;background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px #c6cbd1;color:#444d56;display:inline-block;font-size:12px;line-height:10px;padding:3px 5px;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HotkeysDialogComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HotkeysDialogComponent, selector: "ng-component", ngImport: i0, template: "<table class=\"ion-padding\">\n <tbody>\n <tr *ngFor=\"let keys of hotkeys\">\n <td>{{ keys[1] | translate }}</td>\n\n <td class=\"text-right\">\n <kbd>{{ keys[0] }}</kbd>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host table{border-collapse:collapse;width:100%;color:#212529}:host th{font-weight:500;text-align:left;vertical-align:bottom;padding:.75rem;border-top:1px solid #dee2e6;border-bottom:2px solid #dee2e6}:host td{vertical-align:top;border-top:1px solid #dee2e6;padding:.75rem}:host kbd{margin-right:6px;background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px #c6cbd1;color:#444d56;display:inline-block;font-size:12px;line-height:10px;padding:3px 5px;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: HotkeysDialogComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HotkeysDialogComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ template: "<table class=\"ion-padding\">\n <tbody>\n <tr *ngFor=\"let keys of hotkeys\">\n <td>{{ keys[1] | translate }}</td>\n\n <td class=\"text-right\">\n <kbd>{{ keys[0] }}</kbd>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host table{border-collapse:collapse;width:100%;color:#212529}:host th{font-weight:500;text-align:left;vertical-align:bottom;padding:.75rem;border-top:1px solid #dee2e6;border-bottom:2px solid #dee2e6}:host td{vertical-align:top;border-top:1px solid #dee2e6;padding:.75rem}:host kbd{margin-right:6px;background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px #c6cbd1;color:#444d56;display:inline-block;font-size:12px;line-height:10px;padding:3px 5px;vertical-align:middle}\n"] }]
19
19
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -129,10 +129,10 @@ export class Hotkeys {
129
129
  closeHelpModal() {
130
130
  this._dialogRef?.close(true);
131
131
  }
132
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: Hotkeys, deps: [{ token: i1.Platform }, { token: i2.EventManager }, { token: i3.MatDialog }, { token: i1.ModalController }, { token: i1.PopoverController }, { token: APP_HOTKEYS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
133
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: Hotkeys, providedIn: 'root' });
132
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Hotkeys, deps: [{ token: i1.Platform }, { token: i2.EventManager }, { token: i3.MatDialog }, { token: i1.ModalController }, { token: i1.PopoverController }, { token: APP_HOTKEYS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
133
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Hotkeys, providedIn: 'root' });
134
134
  }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: Hotkeys, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Hotkeys, decorators: [{
136
136
  type: Injectable,
137
137
  args: [{
138
138
  providedIn: 'root',
@@ -8,11 +8,11 @@ import { MatDialogModule } from '@angular/material/dialog';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@ngx-translate/core";
10
10
  export class SharedHotkeysModule {
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: SharedHotkeysModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: SharedHotkeysModule, declarations: [HotkeysDialogComponent], imports: [CommonModule, MatCommonModule, MatDialogModule, i1.TranslateModule], exports: [HotkeysDialogComponent] });
13
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: SharedHotkeysModule, providers: [Hotkeys], imports: [CommonModule, MatCommonModule, MatDialogModule, TranslateModule.forChild()] });
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedHotkeysModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SharedHotkeysModule, declarations: [HotkeysDialogComponent], imports: [CommonModule, MatCommonModule, MatDialogModule, i1.TranslateModule], exports: [HotkeysDialogComponent] });
13
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedHotkeysModule, providers: [Hotkeys], imports: [CommonModule, MatCommonModule, MatDialogModule, TranslateModule.forChild()] });
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: SharedHotkeysModule, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedHotkeysModule, decorators: [{
16
16
  type: NgModule,
17
17
  args: [{
18
18
  imports: [CommonModule, MatCommonModule, MatDialogModule, TranslateModule.forChild()],
@@ -332,10 +332,10 @@ export class AppImageGalleryComponent {
332
332
  markForCheck() {
333
333
  this.cd.markForCheck();
334
334
  }
335
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppImageGalleryComponent, deps: [{ token: i1.ImageService }, { token: i2.Platform }, { token: i2.AlertController }, { token: i3.TranslateService }, { token: i0.ChangeDetectorRef }, { token: ENVIRONMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
336
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: AppImageGalleryComponent, selector: "app-image-gallery", inputs: { cardColor: "cardColor", debug: "debug", disabled: "disabled", readOnly: "readOnly", mobile: "mobile", mode: "mode", confirmBeforeDelete: "confirmBeforeDelete", showToolbar: "showToolbar", showFabButton: "showFabButton", showTitle: "showTitle", showAddCardButton: "showAddCardButton", addButtonColor: "addButtonColor", dataSource: "dataSource" }, outputs: { onBeforeDeleteRows: "onBeforeDeleteRows", onAfterAddRows: "onAfterAddRows", onAfterEditRow: "onAfterEditRow" }, viewQueries: [{ propertyName: "zoomModal", first: true, predicate: ["zoomModal"], descendants: true }, { propertyName: "titlePopover", first: true, predicate: ["titlePopover"], descendants: true }, { propertyName: "swiperRef", first: true, predicate: ["modalSwiper"], descendants: true }], ngImport: i0, template: "<ion-toolbar color=\"light\" *ngIf=\"showToolbar\">\n <!-- Add -->\n <button\n mat-icon-button\n *ngIf=\"!readOnly && !mobile && enabled\"\n [title]=\"'COMMON.BTN_ADD' | translate\"\n (click)=\"add()\"\n >\n <mat-icon>add</mat-icon>\n </button>\n\n <ion-buttons slot=\"end\">\n <!-- Toggle view mode -->\n <ion-segment (ionChange)=\"toggleViewMode($event)\" color=\"accent\" [value]=\"_colSize\">\n <ion-segment-button [value]=\"4\">\n <mat-icon>view_module</mat-icon>\n </ion-segment-button>\n <ion-segment-button [value]=\"12\">\n <mat-icon>view_list</mat-icon>\n </ion-segment-button>\n </ion-segment>\n </ion-buttons>\n</ion-toolbar>\n\n<div class=\"gallery-container ion-padding-bottom {{ this.mode }}\">\n <div *ngIf=\"mobile && zoomActive\" class=\"backdrop\" [style.opacity]=\"zoomScale\"></div>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col *rxFor=\"let row of _data$; index as index; trackBy: trackByFn\" [size]=\"_colSize\">\n @let image = row | propertyGet: 'currentData';\n <ion-card\n #card\n class=\"image-card\"\n [class.zoom-hover]=\"!mobile\"\n [color]=\"cardColor\"\n (click)=\"clickRow(row, index)\"\n tappable\n @fadeInAnimation\n >\n <figure class=\"card-thumbnail\">\n <ion-img [src]=\"image.url || image.dataUrl\" />\n </figure>\n\n <!-- toolbar for title (when not hover) -->\n <ion-toolbar color=\"transparent\" class=\"title\" *ngIf=\"image.title\">\n <ion-label class=\"card-title\">{{ image.title }}</ion-label>\n </ion-toolbar>\n\n <!-- action toolbar (desktop only) shown when hover image -->\n <ion-toolbar #cardToolbar *ngIf=\"!mobile && !readOnly\" color=\"light\" class=\"buttons\">\n <!-- edit title button -->\n <button\n mat-button\n *ngIf=\"showTitle\"\n slot=\"start\"\n [disabled]=\"disabled\"\n (click)=\"editTitle($event, row, cardToolbar)\"\n (focusin)=\"showCardToolbar(cardToolbar)\"\n >\n <mat-icon>edit</mat-icon>\n <mat-label>\n <span *ngIf=\"row.currentData.title | isNotNilOrBlank; else editLabel\" translate>\n IMAGE.GALLERY.BTN_EDIT_TITLE\n </span>\n <ng-template #editLabel>\n <span translate>IMAGE.GALLERY.BTN_ADD_TITLE</span>\n </ng-template>\n </mat-label>\n </button>\n\n <div class=\"flex-spacer\"></div>\n\n <!-- delete button -->\n <button\n mat-icon-button\n slot=\"end\"\n class=\"ion-float-end\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n [disabled]=\"disabled\"\n (click)=\"delete($event, row)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </ion-toolbar>\n </ion-card>\n </ion-col>\n\n <ion-col *ngIf=\"showAddCardButton && !readOnly\" [size]=\"_colSize\" @fadeInAnimation>\n <ion-card class=\"image-card-button\" color=\"light\" (click)=\"add($event)\" [disabled]=\"disabled\" tappable>\n <ion-card-content>\n <div class=\"icon-container\">\n <ion-icon name=\"camera\" [color]=\"addButtonColor\"></ion-icon>\n <ion-icon name=\"add\" [color]=\"addButtonColor\" class=\"icon-secondary\"></ion-icon>\n </div>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n</div>\n\n<!-- FAB button: add -->\n<ion-fab\n slot=\"fixed\"\n vertical=\"bottom\"\n horizontal=\"end\"\n *ngIf=\"showFabButton && !readOnly\"\n [class.cdk-visually-hidden]=\"disabled\"\n @fadeInOutAnimation\n>\n <ion-fab-button color=\"tertiary\" (click)=\"add($event)\">\n <ion-icon name=\"camera\"></ion-icon>\n <ion-icon name=\"add\" class=\"icon-secondary\" style=\"left: 33px; top: 9px; font-size: 20px\"></ion-icon>\n </ion-fab-button>\n</ion-fab>\n\n<!-- Zoom modal -->\n<ion-modal #zoomModal class=\"stack-modal zoom-modal\" [class.modal-fullscreen]=\"mobile\" [class.modal-large]=\"!mobile\">\n <ng-template>\n <ion-content class=\"ion-no-padding ion-no-margin\">\n @let count = rows?.length || 0;\n <!-- Counter -->\n <div class=\"top-left\">\n <ion-label color=\"light\">{{ activeSlideIndex + 1 }} / {{ count }}</ion-label>\n </div>\n\n <!-- zoom button -->\n <div class=\"top-right\">\n @if (!mobile) {\n <ion-button (click)=\"zoom(modalSwiper, true)\" color=\"light\">\n <ion-icon slot=\"icon-only\" name=\"add\"></ion-icon>\n </ion-button>\n <ion-button (click)=\"zoom(modalSwiper, false)\" color=\"light\">\n <ion-icon name=\"remove\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n </div>\n\n <!-- navigation side buttons next/back -->\n <ng-container *ngIf=\"!mobile && (rows | isArrayLength: { greaterThan: 1 })\">\n <div class=\"side-buttons prev\" (click)=\"slidePrev(modalSwiper)\">\n <ion-icon name=\"chevron-back\"></ion-icon>\n </div>\n <div class=\"side-buttons next\" (click)=\"slideNext(modalSwiper)\">\n <ion-icon name=\"chevron-forward\"></ion-icon>\n </div>\n </ng-container>\n\n <!-- image slides -->\n <swiper-container #modalSwiper [modules]=\"swiperModules\" [zoom]=\"true\">\n <swiper-slide *ngFor=\"let row of rows; last as last\">\n <div\n class=\"swiper-zoom-container\"\n *ngIf=\"row | propertyGet: 'currentData'; let image\"\n (ngInit)=\"last && initModalSlides(modalSwiper)\"\n >\n <ion-img [src]=\"image.url || image.dataUrl\" />\n </div>\n </swiper-slide>\n </swiper-container>\n </ion-content>\n\n <ion-footer>\n <ion-toolbar color=\"light\">\n <ion-row>\n <ion-col size=\"4\" class=\"ion-text-start\">\n <ion-button\n *ngIf=\"!readOnly\"\n (click)=\"deleteFromModal($event, modalSwiper)\"\n [disabled]=\"disabled\"\n fill=\"clear\"\n color=\"danger\"\n >\n <mat-icon slot=\"start\">delete</mat-icon>\n {{ 'COMMON.BTN_DELETE' | translate }}\n </ion-button>\n </ion-col>\n <ion-col size=\"4\"></ion-col>\n <ion-col size=\"4\" class=\"ion-text-end\">\n <ion-button (click)=\"zoomModal.dismiss()\" color=\"tertiary\" fill=\"clear\" *ngIf=\"mobile; else desktop\">\n <ion-icon slot=\"start\" name=\"close\"></ion-icon>\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n <ng-template #desktop>\n <ion-button (click)=\"zoomModal.dismiss()\" color=\"tertiary\">\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n </ng-template>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n </ion-footer>\n </ng-template>\n</ion-modal>\n\n<ion-popover #titlePopover>\n <ng-template>\n <ion-content class=\"ion-padding\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <form [formGroup]=\"_titleForm\">\n <mat-form-field floatLabel=\"auto\">\n <mat-label translate>IMAGE.GALLERY.TITLE</mat-label>\n <input\n matInput\n formControlName=\"title\"\n [readonly]=\"disabled\"\n [appAutofocus]=\"_titleAutofocus\"\n (keydown.control.enter)=\"titlePopover.dismiss(_titleForm.controls.title.value)\"\n />\n </mat-form-field>\n </form>\n </ion-content>\n\n <ion-footer>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"titlePopover.dismiss(null, 'CANCEL')\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button\n [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"titlePopover.dismiss(_titleForm.controls.title.value)\"\n (keyup.enter)=\"titlePopover.dismiss(_titleForm.controls.title.value)\"\n color=\"tertiary\"\n [disabled]=\"disabled\"\n [title]=\"'COMMON.BTN_VALIDATE_WITH_SHORTCUT_HELP' | translate\"\n >\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n </ion-footer>\n </ng-template>\n</ion-popover>\n", styles: [":host{--image-margin-inline: 10px}mat-toolbar,.mat-toolbar-single-row{padding:0;height:42px}ion-card{margin-left:unset;margin-right:unset;margin-inline:var(--image-margin-inline, 10px)}.image-slide{overflow:visible}.image-card{height:calc(100% - 23px);background-color:var(--ion-color-base);z-index:9;--img-scale: 1}.image-card .card-thumbnail{position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:100%;height:100%}.image-card .card-thumbnail>ion-img{min-height:100%;transition:scale .2s ease-in-out;scale:var(--img-scale);max-height:var(--img-max-height)}.image-card.zoom-hover:hover{--img-scale: 1.2}.image-card ion-toolbar{--top-offset: calc(-1 * var(--ion-toolbar-height));position:absolute}.image-card ion-toolbar.title{--padding-start: 16px;--padding-end: 16px;--ion-color-base: rgba(0, 0, 0, .45) !important;position:absolute;top:calc(100% + var(--top-offset));transition:opacity .2s ease-in-out}.image-card ion-toolbar.title ion-label{color:#fff}.image-card ion-toolbar.buttons{--padding-start: 4px;--padding-end: 4px;--ion-color-base: var(--ion-color-light) !important;position:absolute;top:100%;transition:transform .2s ease-in-out}.image-card:hover ion-toolbar.buttons,.image-card ion-toolbar.buttons.focused{transform:translateY(var(--top-offset))}.image-card-button{height:calc(100% - var(--image-margin-inline, 0px) * 2 - 3px);transition:.2s ease-in-out;max-width:250px}.image-card-button ion-card-content{height:100%}.image-card-button .icon-container{height:auto;position:relative;top:calc(50% - 75px);display:flex;align-items:center;justify-content:center}.image-card-button ion-icon:first-of-type{font-size:150px;height:150px;position:relative;top:0}.image-card-button ion-icon.icon-secondary{font-size:50px;position:absolute;top:0;left:max(min(50% + 25px,100% - 50px),0px)}.image-card-button ion-button{float:right}.image-card-button:hover{--ion-color-base: var(--ion-color-shade) !important}.image-card-button:hover ion-icon{--ion-color-base: var(--ion-color-shade) !important}.backdrop{height:100vh;width:100vw;background:#000;position:absolute;z-index:10}.zoom-modal{-webkit-user-select:none;user-select:none}.zoom-modal .top-left{z-index:14;position:absolute;display:inline-grid;left:var(--ion-padding-start, 8px);top:var(--ion-padding-start, 8px)}.zoom-modal .top-right{z-index:14;position:absolute;display:inline-grid;right:var(--ion-padding-start, 8px);top:var(--ion-padding-start, 8px)}.zoom-modal .side-buttons{--side-buttons-width: 120px;--side-buttons-margin: calc(var(--side-buttons-width) / 3);z-index:13;position:absolute;top:0;bottom:0;width:var(--side-buttons-width)}.zoom-modal .side-buttons ion-icon{top:50%;color:#fff;font-size:2.5rem;position:absolute;opacity:0;transition-duration:.15s;transition-timing-function:ease-in}.zoom-modal .side-buttons:hover{cursor:pointer}.zoom-modal .side-buttons:hover ion-icon{opacity:1}.zoom-modal .side-buttons.prev{left:0}.zoom-modal .side-buttons.prev ion-icon{left:var(--side-buttons-margin)}.zoom-modal .side-buttons.next{right:0}.zoom-modal .side-buttons.next ion-icon{right:var(--side-buttons-margin)}.zoom-modal ion-slides{height:100%;background:#000}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.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: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.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: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFab, selector: "ion-fab", inputs: ["activated", "edge", "horizontal", "vertical"] }, { kind: "component", type: i2.IonFabButton, selector: "ion-fab-button", inputs: ["activated", "closeIcon", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "show", "size", "target", "translucent", "type"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: i2.IonSegmentButton, selector: "ion-segment-button", inputs: ["disabled", "layout", "mode", "type", "value"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "component", type: i2.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i2.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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: 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.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i10.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i11.NgInitDirective, selector: "[ngInit]", outputs: ["ngInit"] }, { kind: "directive", type: i12.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "directive", type: i13.RxFor, selector: "[rxFor][rxForOf]", inputs: ["rxForOf", "rxForTemplate", "rxForStrategy", "rxForParent", "rxForPatchZone", "rxForTrackBy", "rxForRenderCallback"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: i14.PropertyGetPipe, name: "propertyGet" }, { kind: "pipe", type: i15.ArrayLengthPipe, name: "isArrayLength" }, { kind: "pipe", type: i16.IsNotNilOrBlankPipe, name: "isNotNilOrBlank" }], animations: [fadeInAnimation, fadeInOutAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush });
335
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppImageGalleryComponent, deps: [{ token: i1.ImageService }, { token: i2.Platform }, { token: i2.AlertController }, { token: i3.TranslateService }, { token: i0.ChangeDetectorRef }, { token: ENVIRONMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
336
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppImageGalleryComponent, selector: "app-image-gallery", inputs: { cardColor: "cardColor", debug: "debug", disabled: "disabled", readOnly: "readOnly", mobile: "mobile", mode: "mode", confirmBeforeDelete: "confirmBeforeDelete", showToolbar: "showToolbar", showFabButton: "showFabButton", showTitle: "showTitle", showAddCardButton: "showAddCardButton", addButtonColor: "addButtonColor", dataSource: "dataSource" }, outputs: { onBeforeDeleteRows: "onBeforeDeleteRows", onAfterAddRows: "onAfterAddRows", onAfterEditRow: "onAfterEditRow" }, viewQueries: [{ propertyName: "zoomModal", first: true, predicate: ["zoomModal"], descendants: true }, { propertyName: "titlePopover", first: true, predicate: ["titlePopover"], descendants: true }, { propertyName: "swiperRef", first: true, predicate: ["modalSwiper"], descendants: true }], ngImport: i0, template: "<ion-toolbar color=\"light\" *ngIf=\"showToolbar\">\n <!-- Add -->\n <button\n mat-icon-button\n *ngIf=\"!readOnly && !mobile && enabled\"\n [title]=\"'COMMON.BTN_ADD' | translate\"\n (click)=\"add()\"\n >\n <mat-icon>add</mat-icon>\n </button>\n\n <ion-buttons slot=\"end\">\n <!-- Toggle view mode -->\n <ion-segment (ionChange)=\"toggleViewMode($event)\" color=\"accent\" [value]=\"_colSize\">\n <ion-segment-button [value]=\"4\">\n <mat-icon>view_module</mat-icon>\n </ion-segment-button>\n <ion-segment-button [value]=\"12\">\n <mat-icon>view_list</mat-icon>\n </ion-segment-button>\n </ion-segment>\n </ion-buttons>\n</ion-toolbar>\n\n<div class=\"gallery-container ion-padding-bottom {{ this.mode }}\">\n <div *ngIf=\"mobile && zoomActive\" class=\"backdrop\" [style.opacity]=\"zoomScale\"></div>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col *rxFor=\"let row of _data$; index as index; trackBy: trackByFn\" [size]=\"_colSize\">\n @let image = row | propertyGet: 'currentData';\n <ion-card\n #card\n class=\"image-card\"\n [class.zoom-hover]=\"!mobile\"\n [color]=\"cardColor\"\n (click)=\"clickRow(row, index)\"\n tappable\n @fadeInAnimation\n >\n <figure class=\"card-thumbnail\">\n <ion-img [src]=\"image.url || image.dataUrl\" />\n </figure>\n\n <!-- toolbar for title (when not hover) -->\n <ion-toolbar color=\"transparent\" class=\"title\" *ngIf=\"image.title\">\n <ion-label class=\"card-title\">{{ image.title }}</ion-label>\n </ion-toolbar>\n\n <!-- action toolbar (desktop only) shown when hover image -->\n <ion-toolbar #cardToolbar *ngIf=\"!mobile && !readOnly\" color=\"light\" class=\"buttons\">\n <!-- edit title button -->\n <button\n mat-button\n *ngIf=\"showTitle\"\n slot=\"start\"\n [disabled]=\"disabled\"\n (click)=\"editTitle($event, row, cardToolbar)\"\n (focusin)=\"showCardToolbar(cardToolbar)\"\n >\n <mat-icon>edit</mat-icon>\n <mat-label>\n <span *ngIf=\"row.currentData.title | isNotNilOrBlank; else editLabel\" translate>\n IMAGE.GALLERY.BTN_EDIT_TITLE\n </span>\n <ng-template #editLabel>\n <span translate>IMAGE.GALLERY.BTN_ADD_TITLE</span>\n </ng-template>\n </mat-label>\n </button>\n\n <div class=\"flex-spacer\"></div>\n\n <!-- delete button -->\n <button\n mat-icon-button\n slot=\"end\"\n class=\"ion-float-end\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n [disabled]=\"disabled\"\n (click)=\"delete($event, row)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </ion-toolbar>\n </ion-card>\n </ion-col>\n\n <ion-col *ngIf=\"showAddCardButton && !readOnly\" [size]=\"_colSize\" @fadeInAnimation>\n <ion-card class=\"image-card-button\" color=\"light\" (click)=\"add($event)\" [disabled]=\"disabled\" tappable>\n <ion-card-content>\n <div class=\"icon-container\">\n <ion-icon name=\"camera\" [color]=\"addButtonColor\"></ion-icon>\n <ion-icon name=\"add\" [color]=\"addButtonColor\" class=\"icon-secondary\"></ion-icon>\n </div>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n</div>\n\n<!-- FAB button: add -->\n<ion-fab\n slot=\"fixed\"\n vertical=\"bottom\"\n horizontal=\"end\"\n *ngIf=\"showFabButton && !readOnly\"\n [class.cdk-visually-hidden]=\"disabled\"\n @fadeInOutAnimation\n>\n <ion-fab-button color=\"tertiary\" (click)=\"add($event)\">\n <ion-icon name=\"camera\"></ion-icon>\n <ion-icon name=\"add\" class=\"icon-secondary\" style=\"left: 33px; top: 9px; font-size: 20px\"></ion-icon>\n </ion-fab-button>\n</ion-fab>\n\n<!-- Zoom modal -->\n<ion-modal #zoomModal class=\"stack-modal zoom-modal\" [class.modal-fullscreen]=\"mobile\" [class.modal-large]=\"!mobile\">\n <ng-template>\n <ion-content class=\"ion-no-padding ion-no-margin\">\n @let count = rows?.length || 0;\n <!-- Counter -->\n <div class=\"top-left\">\n <ion-label color=\"light\">{{ activeSlideIndex + 1 }} / {{ count }}</ion-label>\n </div>\n\n <!-- zoom button -->\n <div class=\"top-right\">\n @if (!mobile) {\n <ion-button (click)=\"zoom(modalSwiper, true)\" color=\"light\">\n <ion-icon slot=\"icon-only\" name=\"add\"></ion-icon>\n </ion-button>\n <ion-button (click)=\"zoom(modalSwiper, false)\" color=\"light\">\n <ion-icon name=\"remove\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n </div>\n\n <!-- navigation side buttons next/back -->\n <ng-container *ngIf=\"!mobile && (rows | isArrayLength: { greaterThan: 1 })\">\n <div class=\"side-buttons prev\" (click)=\"slidePrev(modalSwiper)\">\n <ion-icon name=\"chevron-back\"></ion-icon>\n </div>\n <div class=\"side-buttons next\" (click)=\"slideNext(modalSwiper)\">\n <ion-icon name=\"chevron-forward\"></ion-icon>\n </div>\n </ng-container>\n\n <!-- image slides -->\n <swiper-container #modalSwiper [modules]=\"swiperModules\" [zoom]=\"true\">\n <swiper-slide *ngFor=\"let row of rows; last as last\">\n <div\n class=\"swiper-zoom-container\"\n *ngIf=\"row | propertyGet: 'currentData'; let image\"\n (ngInit)=\"last && initModalSlides(modalSwiper)\"\n >\n <ion-img [src]=\"image.url || image.dataUrl\" />\n </div>\n </swiper-slide>\n </swiper-container>\n </ion-content>\n\n <ion-footer>\n <ion-toolbar color=\"light\">\n <ion-row>\n <ion-col size=\"4\" class=\"ion-text-start\">\n <ion-button\n *ngIf=\"!readOnly\"\n (click)=\"deleteFromModal($event, modalSwiper)\"\n [disabled]=\"disabled\"\n fill=\"clear\"\n color=\"danger\"\n >\n <mat-icon slot=\"start\">delete</mat-icon>\n {{ 'COMMON.BTN_DELETE' | translate }}\n </ion-button>\n </ion-col>\n <ion-col size=\"4\"></ion-col>\n <ion-col size=\"4\" class=\"ion-text-end\">\n <ion-button (click)=\"zoomModal.dismiss()\" color=\"tertiary\" fill=\"clear\" *ngIf=\"mobile; else desktop\">\n <ion-icon slot=\"start\" name=\"close\"></ion-icon>\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n <ng-template #desktop>\n <ion-button (click)=\"zoomModal.dismiss()\" color=\"tertiary\">\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n </ng-template>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n </ion-footer>\n </ng-template>\n</ion-modal>\n\n<ion-popover #titlePopover>\n <ng-template>\n <ion-content class=\"ion-padding\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <form [formGroup]=\"_titleForm\">\n <mat-form-field floatLabel=\"auto\">\n <mat-label translate>IMAGE.GALLERY.TITLE</mat-label>\n <input\n matInput\n formControlName=\"title\"\n [readonly]=\"disabled\"\n [appAutofocus]=\"_titleAutofocus\"\n (keydown.control.enter)=\"titlePopover.dismiss(_titleForm.controls.title.value)\"\n />\n </mat-form-field>\n </form>\n </ion-content>\n\n <ion-footer>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"titlePopover.dismiss(null, 'CANCEL')\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button\n [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"titlePopover.dismiss(_titleForm.controls.title.value)\"\n (keyup.enter)=\"titlePopover.dismiss(_titleForm.controls.title.value)\"\n color=\"tertiary\"\n [disabled]=\"disabled\"\n [title]=\"'COMMON.BTN_VALIDATE_WITH_SHORTCUT_HELP' | translate\"\n >\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n </ion-footer>\n </ng-template>\n</ion-popover>\n", styles: [":host{--image-margin-inline: 10px}mat-toolbar,.mat-toolbar-single-row{padding:0;height:42px}ion-card{margin-left:unset;margin-right:unset;margin-inline:var(--image-margin-inline, 10px)}.image-slide{overflow:visible}.image-card{height:calc(100% - 23px);background-color:var(--ion-color-base);z-index:9;--img-scale: 1}.image-card .card-thumbnail{position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:100%;height:100%}.image-card .card-thumbnail>ion-img{min-height:100%;transition:scale .2s ease-in-out;scale:var(--img-scale);max-height:var(--img-max-height)}.image-card.zoom-hover:hover{--img-scale: 1.2}.image-card ion-toolbar{--top-offset: calc(-1 * var(--ion-toolbar-height));position:absolute}.image-card ion-toolbar.title{--padding-start: 16px;--padding-end: 16px;--ion-color-base: rgba(0, 0, 0, .45) !important;position:absolute;top:calc(100% + var(--top-offset));transition:opacity .2s ease-in-out}.image-card ion-toolbar.title ion-label{color:#fff}.image-card ion-toolbar.buttons{--padding-start: 4px;--padding-end: 4px;--ion-color-base: var(--ion-color-light) !important;position:absolute;top:100%;transition:transform .2s ease-in-out}.image-card:hover ion-toolbar.buttons,.image-card ion-toolbar.buttons.focused{transform:translateY(var(--top-offset))}.image-card-button{height:calc(100% - var(--image-margin-inline, 0px) * 2 - 3px);transition:.2s ease-in-out;max-width:250px}.image-card-button ion-card-content{height:100%}.image-card-button .icon-container{height:auto;position:relative;top:calc(50% - 75px);display:flex;align-items:center;justify-content:center}.image-card-button ion-icon:first-of-type{font-size:150px;height:150px;position:relative;top:0}.image-card-button ion-icon.icon-secondary{font-size:50px;position:absolute;top:0;left:max(min(50% + 25px,100% - 50px),0px)}.image-card-button ion-button{float:right}.image-card-button:hover{--ion-color-base: var(--ion-color-shade) !important}.image-card-button:hover ion-icon{--ion-color-base: var(--ion-color-shade) !important}.backdrop{height:100vh;width:100vw;background:#000;position:absolute;z-index:10}.zoom-modal{-webkit-user-select:none;user-select:none}.zoom-modal .top-left{z-index:14;position:absolute;display:inline-grid;left:var(--ion-padding-start, 8px);top:var(--ion-padding-start, 8px)}.zoom-modal .top-right{z-index:14;position:absolute;display:inline-grid;right:var(--ion-padding-start, 8px);top:var(--ion-padding-start, 8px)}.zoom-modal .side-buttons{--side-buttons-width: 120px;--side-buttons-margin: calc(var(--side-buttons-width) / 3);z-index:13;position:absolute;top:0;bottom:0;width:var(--side-buttons-width)}.zoom-modal .side-buttons ion-icon{top:50%;color:#fff;font-size:2.5rem;position:absolute;opacity:0;transition-duration:.15s;transition-timing-function:ease-in}.zoom-modal .side-buttons:hover{cursor:pointer}.zoom-modal .side-buttons:hover ion-icon{opacity:1}.zoom-modal .side-buttons.prev{left:0}.zoom-modal .side-buttons.prev ion-icon{left:var(--side-buttons-margin)}.zoom-modal .side-buttons.next{right:0}.zoom-modal .side-buttons.next ion-icon{right:var(--side-buttons-margin)}.zoom-modal ion-slides{height:100%;background:#000}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.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: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.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: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFab, selector: "ion-fab", inputs: ["activated", "edge", "horizontal", "vertical"] }, { kind: "component", type: i2.IonFabButton, selector: "ion-fab-button", inputs: ["activated", "closeIcon", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "show", "size", "target", "translucent", "type"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: i2.IonSegmentButton, selector: "ion-segment-button", inputs: ["disabled", "layout", "mode", "type", "value"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "component", type: i2.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i2.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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: 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.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i10.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i11.NgInitDirective, selector: "[ngInit]", outputs: ["ngInit"] }, { kind: "directive", type: i12.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "directive", type: i13.RxFor, selector: "[rxFor][rxForOf]", inputs: ["rxForOf", "rxForTemplate", "rxForStrategy", "rxForParent", "rxForPatchZone", "rxForTrackBy", "rxForRenderCallback"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: i14.PropertyGetPipe, name: "propertyGet" }, { kind: "pipe", type: i15.ArrayLengthPipe, name: "isArrayLength" }, { kind: "pipe", type: i16.IsNotNilOrBlankPipe, name: "isNotNilOrBlank" }], animations: [fadeInAnimation, fadeInOutAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush });
337
337
  }
338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AppImageGalleryComponent, decorators: [{
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppImageGalleryComponent, decorators: [{
339
339
  type: Component,
340
340
  args: [{ selector: 'app-image-gallery', animations: [fadeInAnimation, fadeInOutAnimation], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-toolbar color=\"light\" *ngIf=\"showToolbar\">\n <!-- Add -->\n <button\n mat-icon-button\n *ngIf=\"!readOnly && !mobile && enabled\"\n [title]=\"'COMMON.BTN_ADD' | translate\"\n (click)=\"add()\"\n >\n <mat-icon>add</mat-icon>\n </button>\n\n <ion-buttons slot=\"end\">\n <!-- Toggle view mode -->\n <ion-segment (ionChange)=\"toggleViewMode($event)\" color=\"accent\" [value]=\"_colSize\">\n <ion-segment-button [value]=\"4\">\n <mat-icon>view_module</mat-icon>\n </ion-segment-button>\n <ion-segment-button [value]=\"12\">\n <mat-icon>view_list</mat-icon>\n </ion-segment-button>\n </ion-segment>\n </ion-buttons>\n</ion-toolbar>\n\n<div class=\"gallery-container ion-padding-bottom {{ this.mode }}\">\n <div *ngIf=\"mobile && zoomActive\" class=\"backdrop\" [style.opacity]=\"zoomScale\"></div>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col *rxFor=\"let row of _data$; index as index; trackBy: trackByFn\" [size]=\"_colSize\">\n @let image = row | propertyGet: 'currentData';\n <ion-card\n #card\n class=\"image-card\"\n [class.zoom-hover]=\"!mobile\"\n [color]=\"cardColor\"\n (click)=\"clickRow(row, index)\"\n tappable\n @fadeInAnimation\n >\n <figure class=\"card-thumbnail\">\n <ion-img [src]=\"image.url || image.dataUrl\" />\n </figure>\n\n <!-- toolbar for title (when not hover) -->\n <ion-toolbar color=\"transparent\" class=\"title\" *ngIf=\"image.title\">\n <ion-label class=\"card-title\">{{ image.title }}</ion-label>\n </ion-toolbar>\n\n <!-- action toolbar (desktop only) shown when hover image -->\n <ion-toolbar #cardToolbar *ngIf=\"!mobile && !readOnly\" color=\"light\" class=\"buttons\">\n <!-- edit title button -->\n <button\n mat-button\n *ngIf=\"showTitle\"\n slot=\"start\"\n [disabled]=\"disabled\"\n (click)=\"editTitle($event, row, cardToolbar)\"\n (focusin)=\"showCardToolbar(cardToolbar)\"\n >\n <mat-icon>edit</mat-icon>\n <mat-label>\n <span *ngIf=\"row.currentData.title | isNotNilOrBlank; else editLabel\" translate>\n IMAGE.GALLERY.BTN_EDIT_TITLE\n </span>\n <ng-template #editLabel>\n <span translate>IMAGE.GALLERY.BTN_ADD_TITLE</span>\n </ng-template>\n </mat-label>\n </button>\n\n <div class=\"flex-spacer\"></div>\n\n <!-- delete button -->\n <button\n mat-icon-button\n slot=\"end\"\n class=\"ion-float-end\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n [disabled]=\"disabled\"\n (click)=\"delete($event, row)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </ion-toolbar>\n </ion-card>\n </ion-col>\n\n <ion-col *ngIf=\"showAddCardButton && !readOnly\" [size]=\"_colSize\" @fadeInAnimation>\n <ion-card class=\"image-card-button\" color=\"light\" (click)=\"add($event)\" [disabled]=\"disabled\" tappable>\n <ion-card-content>\n <div class=\"icon-container\">\n <ion-icon name=\"camera\" [color]=\"addButtonColor\"></ion-icon>\n <ion-icon name=\"add\" [color]=\"addButtonColor\" class=\"icon-secondary\"></ion-icon>\n </div>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n</div>\n\n<!-- FAB button: add -->\n<ion-fab\n slot=\"fixed\"\n vertical=\"bottom\"\n horizontal=\"end\"\n *ngIf=\"showFabButton && !readOnly\"\n [class.cdk-visually-hidden]=\"disabled\"\n @fadeInOutAnimation\n>\n <ion-fab-button color=\"tertiary\" (click)=\"add($event)\">\n <ion-icon name=\"camera\"></ion-icon>\n <ion-icon name=\"add\" class=\"icon-secondary\" style=\"left: 33px; top: 9px; font-size: 20px\"></ion-icon>\n </ion-fab-button>\n</ion-fab>\n\n<!-- Zoom modal -->\n<ion-modal #zoomModal class=\"stack-modal zoom-modal\" [class.modal-fullscreen]=\"mobile\" [class.modal-large]=\"!mobile\">\n <ng-template>\n <ion-content class=\"ion-no-padding ion-no-margin\">\n @let count = rows?.length || 0;\n <!-- Counter -->\n <div class=\"top-left\">\n <ion-label color=\"light\">{{ activeSlideIndex + 1 }} / {{ count }}</ion-label>\n </div>\n\n <!-- zoom button -->\n <div class=\"top-right\">\n @if (!mobile) {\n <ion-button (click)=\"zoom(modalSwiper, true)\" color=\"light\">\n <ion-icon slot=\"icon-only\" name=\"add\"></ion-icon>\n </ion-button>\n <ion-button (click)=\"zoom(modalSwiper, false)\" color=\"light\">\n <ion-icon name=\"remove\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n </div>\n\n <!-- navigation side buttons next/back -->\n <ng-container *ngIf=\"!mobile && (rows | isArrayLength: { greaterThan: 1 })\">\n <div class=\"side-buttons prev\" (click)=\"slidePrev(modalSwiper)\">\n <ion-icon name=\"chevron-back\"></ion-icon>\n </div>\n <div class=\"side-buttons next\" (click)=\"slideNext(modalSwiper)\">\n <ion-icon name=\"chevron-forward\"></ion-icon>\n </div>\n </ng-container>\n\n <!-- image slides -->\n <swiper-container #modalSwiper [modules]=\"swiperModules\" [zoom]=\"true\">\n <swiper-slide *ngFor=\"let row of rows; last as last\">\n <div\n class=\"swiper-zoom-container\"\n *ngIf=\"row | propertyGet: 'currentData'; let image\"\n (ngInit)=\"last && initModalSlides(modalSwiper)\"\n >\n <ion-img [src]=\"image.url || image.dataUrl\" />\n </div>\n </swiper-slide>\n </swiper-container>\n </ion-content>\n\n <ion-footer>\n <ion-toolbar color=\"light\">\n <ion-row>\n <ion-col size=\"4\" class=\"ion-text-start\">\n <ion-button\n *ngIf=\"!readOnly\"\n (click)=\"deleteFromModal($event, modalSwiper)\"\n [disabled]=\"disabled\"\n fill=\"clear\"\n color=\"danger\"\n >\n <mat-icon slot=\"start\">delete</mat-icon>\n {{ 'COMMON.BTN_DELETE' | translate }}\n </ion-button>\n </ion-col>\n <ion-col size=\"4\"></ion-col>\n <ion-col size=\"4\" class=\"ion-text-end\">\n <ion-button (click)=\"zoomModal.dismiss()\" color=\"tertiary\" fill=\"clear\" *ngIf=\"mobile; else desktop\">\n <ion-icon slot=\"start\" name=\"close\"></ion-icon>\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n <ng-template #desktop>\n <ion-button (click)=\"zoomModal.dismiss()\" color=\"tertiary\">\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n </ng-template>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n </ion-footer>\n </ng-template>\n</ion-modal>\n\n<ion-popover #titlePopover>\n <ng-template>\n <ion-content class=\"ion-padding\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <form [formGroup]=\"_titleForm\">\n <mat-form-field floatLabel=\"auto\">\n <mat-label translate>IMAGE.GALLERY.TITLE</mat-label>\n <input\n matInput\n formControlName=\"title\"\n [readonly]=\"disabled\"\n [appAutofocus]=\"_titleAutofocus\"\n (keydown.control.enter)=\"titlePopover.dismiss(_titleForm.controls.title.value)\"\n />\n </mat-form-field>\n </form>\n </ion-content>\n\n <ion-footer>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"titlePopover.dismiss(null, 'CANCEL')\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button\n [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"titlePopover.dismiss(_titleForm.controls.title.value)\"\n (keyup.enter)=\"titlePopover.dismiss(_titleForm.controls.title.value)\"\n color=\"tertiary\"\n [disabled]=\"disabled\"\n [title]=\"'COMMON.BTN_VALIDATE_WITH_SHORTCUT_HELP' | translate\"\n >\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n </ion-footer>\n </ng-template>\n</ion-popover>\n", styles: [":host{--image-margin-inline: 10px}mat-toolbar,.mat-toolbar-single-row{padding:0;height:42px}ion-card{margin-left:unset;margin-right:unset;margin-inline:var(--image-margin-inline, 10px)}.image-slide{overflow:visible}.image-card{height:calc(100% - 23px);background-color:var(--ion-color-base);z-index:9;--img-scale: 1}.image-card .card-thumbnail{position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:100%;height:100%}.image-card .card-thumbnail>ion-img{min-height:100%;transition:scale .2s ease-in-out;scale:var(--img-scale);max-height:var(--img-max-height)}.image-card.zoom-hover:hover{--img-scale: 1.2}.image-card ion-toolbar{--top-offset: calc(-1 * var(--ion-toolbar-height));position:absolute}.image-card ion-toolbar.title{--padding-start: 16px;--padding-end: 16px;--ion-color-base: rgba(0, 0, 0, .45) !important;position:absolute;top:calc(100% + var(--top-offset));transition:opacity .2s ease-in-out}.image-card ion-toolbar.title ion-label{color:#fff}.image-card ion-toolbar.buttons{--padding-start: 4px;--padding-end: 4px;--ion-color-base: var(--ion-color-light) !important;position:absolute;top:100%;transition:transform .2s ease-in-out}.image-card:hover ion-toolbar.buttons,.image-card ion-toolbar.buttons.focused{transform:translateY(var(--top-offset))}.image-card-button{height:calc(100% - var(--image-margin-inline, 0px) * 2 - 3px);transition:.2s ease-in-out;max-width:250px}.image-card-button ion-card-content{height:100%}.image-card-button .icon-container{height:auto;position:relative;top:calc(50% - 75px);display:flex;align-items:center;justify-content:center}.image-card-button ion-icon:first-of-type{font-size:150px;height:150px;position:relative;top:0}.image-card-button ion-icon.icon-secondary{font-size:50px;position:absolute;top:0;left:max(min(50% + 25px,100% - 50px),0px)}.image-card-button ion-button{float:right}.image-card-button:hover{--ion-color-base: var(--ion-color-shade) !important}.image-card-button:hover ion-icon{--ion-color-base: var(--ion-color-shade) !important}.backdrop{height:100vh;width:100vw;background:#000;position:absolute;z-index:10}.zoom-modal{-webkit-user-select:none;user-select:none}.zoom-modal .top-left{z-index:14;position:absolute;display:inline-grid;left:var(--ion-padding-start, 8px);top:var(--ion-padding-start, 8px)}.zoom-modal .top-right{z-index:14;position:absolute;display:inline-grid;right:var(--ion-padding-start, 8px);top:var(--ion-padding-start, 8px)}.zoom-modal .side-buttons{--side-buttons-width: 120px;--side-buttons-margin: calc(var(--side-buttons-width) / 3);z-index:13;position:absolute;top:0;bottom:0;width:var(--side-buttons-width)}.zoom-modal .side-buttons ion-icon{top:50%;color:#fff;font-size:2.5rem;position:absolute;opacity:0;transition-duration:.15s;transition-timing-function:ease-in}.zoom-modal .side-buttons:hover{cursor:pointer}.zoom-modal .side-buttons:hover ion-icon{opacity:1}.zoom-modal .side-buttons.prev{left:0}.zoom-modal .side-buttons.prev ion-icon{left:var(--side-buttons-margin)}.zoom-modal .side-buttons.next{right:0}.zoom-modal .side-buttons.next ion-icon{right:var(--side-buttons-margin)}.zoom-modal ion-slides{height:100%;background:#000}\n"] }]
341
341
  }], ctorParameters: () => [{ type: i1.ImageService }, { type: i2.Platform }, { type: i2.AlertController }, { type: i3.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i17.Environment, decorators: [{
@@ -11,8 +11,8 @@ import { RxStateModule } from '../../rx-state/rx-state.module';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@ngx-translate/core";
13
13
  export class ImageGalleryModule {
14
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageGalleryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: ImageGalleryModule, declarations: [
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageGalleryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ImageGalleryModule, declarations: [
16
16
  // Components
17
17
  AppImageGalleryComponent], imports: [CommonModule,
18
18
  IonicModule,
@@ -23,7 +23,7 @@ export class ImageGalleryModule {
23
23
  TranslateModule,
24
24
  // Components
25
25
  AppImageGalleryComponent] });
26
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageGalleryModule, imports: [CommonModule,
26
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageGalleryModule, imports: [CommonModule,
27
27
  IonicModule,
28
28
  ReactiveFormsModule,
29
29
  SharedMaterialModule,
@@ -33,7 +33,7 @@ export class ImageGalleryModule {
33
33
  RxStateModule, IonicModule,
34
34
  TranslateModule] });
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageGalleryModule, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageGalleryModule, decorators: [{
37
37
  type: NgModule,
38
38
  args: [{
39
39
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
@@ -78,10 +78,10 @@ export class ImageAttachmentService extends StartableService {
78
78
  asFilter(filter) {
79
79
  return ImageAttachmentFilter.fromObject(filter);
80
80
  }
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageAttachmentService, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });
82
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageAttachmentService });
81
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageAttachmentService, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });
82
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageAttachmentService });
83
83
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageAttachmentService, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageAttachmentService, decorators: [{
85
85
  type: Injectable
86
86
  }], ctorParameters: () => [{ type: i1.Platform }] });
87
87
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5zZXJ2aWNlLnRlc3RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9pbWFnZS9nYWxsZXJ5L3Rlc3RpbmcvZ2FsbGVyeS5zZXJ2aWNlLnRlc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHN0UsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUVoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOENBQThDLENBQUM7OztBQUU1RSxXQUFXO0FBRUosSUFBTSxlQUFlLEdBQXJCLE1BQU0sZUFBZ0IsU0FBUSxNQUF1QjtJQUMxRCxNQUFNLENBQUMsVUFBVSxDQUErQztJQUVoRSxPQUFPLEdBQVcsSUFBSSxDQUFDO0lBQ3ZCLEdBQUcsR0FBVyxJQUFJLENBQUM7SUFDbkIsS0FBSyxHQUFXLElBQUksQ0FBQztJQUVyQixVQUFVLENBQUMsTUFBVyxFQUFFLElBQVU7UUFDaEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztDQUNGLENBQUE7QUFiWSxlQUFlO0lBRDNCLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0dBQ2xDLGVBQWUsQ0FhM0I7O0FBRUQsV0FBVztBQUVKLElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXNCLFNBQVEsWUFBb0Q7SUFDN0YsTUFBTSxDQUFDLFVBQVUsQ0FBcUQ7Q0FDdkUsQ0FBQTtBQUZZLHFCQUFxQjtJQURqQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztHQUN4QyxxQkFBcUIsQ0FFakM7O0FBR0QsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGdCQUFnQjtJQU1wQztJQUx0QixPQUFPLEdBQUcsSUFBSSxlQUFlLENBQTZCO1FBQ3hELGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxrREFBa0QsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDL0csZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGtEQUFrRCxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztLQUNoSCxDQUFDLENBQUM7SUFFSCxZQUFzQixRQUFrQjtRQUN0QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFESSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRXRDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRVMsU0FBUztRQUNqQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVEsQ0FDTixNQUFjLEVBQ2QsSUFBWSxFQUNaLE1BQWUsRUFDZixhQUE2QixFQUM3QixNQUE4QixFQUM5QixJQUFvRDtRQUVwRCxPQUFPLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDYixJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTFELElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFckQsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsSUFBSSxDQUFDLE1BQU0sWUFBWSxDQUFDLENBQUM7WUFFM0UsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUEyQjtRQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXpCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzFDLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekYsUUFBUTthQUNMLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNoQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxHQUFHLGNBQWMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBMkI7UUFDekMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBVztRQUNsQixPQUFPLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO3dHQTNEVSxzQkFBc0I7NEdBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdGFydGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLCBJRW50aXRpZXNTZXJ2aWNlLCBMb2FkUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBpc05pbCwgaXNOb3ROaWwsIHJlbW92ZUR1cGxpY2F0ZXNGcm9tQXJyYXkgfSBmcm9tICcuLi8uLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEVudGl0eUNsYXNzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkuZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gJy4uLy4uL2ltYWdlLm1vZGVsJztcbmltcG9ydCB7IEVudGl0eUZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZmlsdGVyLm1vZGVsJztcblxuLy8gQGR5bmFtaWNcbkBFbnRpdHlDbGFzcyh7IHR5cGVuYW1lOiAnSW1hZ2VBdHRhY2htZW50Vk8nIH0pXG5leHBvcnQgY2xhc3MgSW1hZ2VBdHRhY2htZW50IGV4dGVuZHMgRW50aXR5PEltYWdlQXR0YWNobWVudD4gaW1wbGVtZW50cyBJbWFnZSB7XG4gIHN0YXRpYyBmcm9tT2JqZWN0OiAoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpID0+IEltYWdlQXR0YWNobWVudDtcblxuICBkYXRhVXJsOiBzdHJpbmcgPSBudWxsO1xuICB1cmw6IHN0cmluZyA9IG51bGw7XG4gIHRpdGxlOiBzdHJpbmcgPSBudWxsO1xuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpIHtcbiAgICBzdXBlci5mcm9tT2JqZWN0KHNvdXJjZSwgb3B0cyk7XG4gICAgdGhpcy51cmwgPSBzb3VyY2UudXJsO1xuICAgIHRoaXMuZGF0YVVybCA9IHNvdXJjZS5kYXRhVXJsO1xuICAgIHRoaXMudGl0bGUgPSBzb3VyY2UudGl0bGU7XG4gIH1cbn1cblxuLy8gQGR5bmFtaWNcbkBFbnRpdHlDbGFzcyh7IHR5cGVuYW1lOiAnSW1hZ2VBdHRhY2htZW50RmlsdGVyVk8nIH0pXG5leHBvcnQgY2xhc3MgSW1hZ2VBdHRhY2htZW50RmlsdGVyIGV4dGVuZHMgRW50aXR5RmlsdGVyPEltYWdlQXR0YWNobWVudEZpbHRlciwgSW1hZ2VBdHRhY2htZW50PiB7XG4gIHN0YXRpYyBmcm9tT2JqZWN0OiAoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpID0+IEltYWdlQXR0YWNobWVudEZpbHRlcjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEltYWdlQXR0YWNobWVudFNlcnZpY2UgZXh0ZW5kcyBTdGFydGFibGVTZXJ2aWNlIGltcGxlbWVudHMgSUVudGl0aWVzU2VydmljZTxJbWFnZUF0dGFjaG1lbnQsIEltYWdlQXR0YWNobWVudEZpbHRlcj4ge1xuICAkaW1hZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJ0aWFsPEltYWdlQXR0YWNobWVudD5bXT4oW1xuICAgIEltYWdlQXR0YWNobWVudC5mcm9tT2JqZWN0KHsgaWQ6IDAsIHVybDogJ2h0dHBzOi8vdGVzdC5zdW1hcmlzLm5ldC9hc3NldHMvaW1nL2JnL3JheS0xLmpwZycsIHRpdGxlOiAncmF5ICMxJyB9KSxcbiAgICBJbWFnZUF0dGFjaG1lbnQuZnJvbU9iamVjdCh7IGlkOiAxLCB1cmw6ICdodHRwczovL3Rlc3Quc3VtYXJpcy5uZXQvYXNzZXRzL2ltZy9iZy9yYXktMi5qcGcnLCB0aXRsZTogJ3JheSAjMicgfSksXG4gIF0pO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm0pIHtcbiAgICBzdXBlcihwbGF0Zm9ybSk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2dhbGxlcnktdGVzdGluZy1zZXJ2aWNlXSBDcmVhdGUgc2VydmljZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nT25TdGFydCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHdhdGNoQWxsKFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIHNpemU6IG51bWJlcixcbiAgICBzb3J0Qnk/OiBzdHJpbmcsXG4gICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgZmlsdGVyPzogSW1hZ2VBdHRhY2htZW50RmlsdGVyLFxuICAgIG9wdHM/OiBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMgJiB7IHF1ZXJ5PzogYW55IH1cbiAgKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PEltYWdlQXR0YWNobWVudD4+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbZ2FsbGVyeS10ZXN0aW5nLXNlcnZpY2VdIFdhdGNoaW5nIGltYWdlcy4uLicpO1xuICAgIHJldHVybiB0aGlzLiRpbWFnZXMucGlwZShcbiAgICAgIG1hcCgoaW1hZ2VzKSA9PiB7XG4gICAgICAgIGxldCBkYXRhID0gKGltYWdlcyB8fCBbXSkubWFwKEltYWdlQXR0YWNobWVudC5mcm9tT2JqZWN0KTtcblxuICAgICAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFtnYWxsZXJ5LXRlc3Rpbmctc2VydmljZV0gTG9hZGVkICR7ZGF0YS5sZW5ndGh9IGltYWdlcy4uLmApO1xuXG4gICAgICAgIHJldHVybiB7IGRhdGEsIHRvdGFsOiBkYXRhLmxlbmd0aCB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUFsbChlbnRpdGllczogSW1hZ2VBdHRhY2htZW50W10pOiBQcm9taXNlPGFueVtdPiB7XG4gICAgY29uc29sZS5kZWJ1ZygnW2dhbGxlcnktc2VydmljZS10ZXN0aW5nXSBTYXZpbmcgaW1hZ2VzLi4uJyArIEpTT04uc3RyaW5naWZ5KGVudGl0aWVzKSk7XG4gICAgaWYgKCFlbnRpdGllcykgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgZXhpc3RpbmdJbWFnZXMgPSB0aGlzLiRpbWFnZXMudmFsdWU7XG4gICAgbGV0IGN1cnJlbnRJZCA9IGV4aXN0aW5nSW1hZ2VzLnJlZHVjZSgocmVzLCBpbWFnZSkgPT4gTWF0aC5tYXgocmVzLCAraW1hZ2U/LmlkIHx8IDApLCAwKTtcbiAgICBlbnRpdGllc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXNOaWwoaXRlbS5pZCkpXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLmlkID0gKytjdXJyZW50SWQ7XG4gICAgICB9KTtcbiAgICB0aGlzLiRpbWFnZXMubmV4dChyZW1vdmVEdXBsaWNhdGVzRnJvbUFycmF5KFsuLi5leGlzdGluZ0ltYWdlcywgLi4uZW50aXRpZXNdLCAnaWQnKSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVBbGwoZW50aXRpZXM6IEltYWdlQXR0YWNobWVudFtdKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBkZWxldGVkSWRzID0gKGVudGl0aWVzIHx8IFtdKS5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQpLmZpbHRlcihpc05vdE5pbCk7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy4kaW1hZ2VzLnZhbHVlLmZpbHRlcigoaXRlbSkgPT4gIWRlbGV0ZWRJZHMuaW5jbHVkZXMoaXRlbS5pZCkpO1xuICAgIHRoaXMuJGltYWdlcy5uZXh0KGZpbHRlcmVkRGF0YSk7XG4gIH1cblxuICBhc0ZpbHRlcihmaWx0ZXI6IGFueSkge1xuICAgIHJldHVybiBJbWFnZUF0dGFjaG1lbnRGaWx0ZXIuZnJvbU9iamVjdChmaWx0ZXIpO1xuICB9XG59XG4iXX0=
@@ -27,10 +27,10 @@ export class GalleryTestPage {
27
27
  save() {
28
28
  this.dataSource.save();
29
29
  }
30
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: GalleryTestPage, deps: [{ token: i1.ImageAttachmentService }], target: i0.ɵɵFactoryTarget.Component });
31
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: GalleryTestPage, selector: "app-gallery-test-page", providers: [{ provide: ImageAttachmentService, useClass: ImageAttachmentService }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Image gallery</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <!-- DEBUG -->\n <app-debug title=\"Galley\">\n <ion-grid>\n <ion-row>\n <ion-col>gallery.count: {{ gallery.rows?.length }}</ion-col>\n </ion-row>\n </ion-grid>\n </app-debug>\n\n <app-image-gallery\n #gallery\n [dataSource]=\"dataSource\"\n (onAfterAddRows)=\"save()\"\n (onAfterEditRow)=\"save()\"\n ></app-image-gallery>\n</ion-content>\n", dependencies: [{ kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.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: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonBackButton, selector: "ion-back-button" }, { kind: "component", type: i3.AppImageGalleryComponent, selector: "app-image-gallery", inputs: ["cardColor", "debug", "disabled", "readOnly", "mobile", "mode", "confirmBeforeDelete", "showToolbar", "showFabButton", "showTitle", "showAddCardButton", "addButtonColor", "dataSource"], outputs: ["onBeforeDeleteRows", "onAfterAddRows", "onAfterEditRow"] }, { kind: "component", type: i4.DebugComponent, selector: "app-debug", inputs: ["titlePrefix", "title", "enable", "expanded"] }] });
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GalleryTestPage, deps: [{ token: i1.ImageAttachmentService }], target: i0.ɵɵFactoryTarget.Component });
31
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GalleryTestPage, selector: "app-gallery-test-page", providers: [{ provide: ImageAttachmentService, useClass: ImageAttachmentService }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Image gallery</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <!-- DEBUG -->\n <app-debug title=\"Galley\">\n <ion-grid>\n <ion-row>\n <ion-col>gallery.count: {{ gallery.rows?.length }}</ion-col>\n </ion-row>\n </ion-grid>\n </app-debug>\n\n <app-image-gallery\n #gallery\n [dataSource]=\"dataSource\"\n (onAfterAddRows)=\"save()\"\n (onAfterEditRow)=\"save()\"\n ></app-image-gallery>\n</ion-content>\n", dependencies: [{ kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.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: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonBackButton, selector: "ion-back-button" }, { kind: "component", type: i3.AppImageGalleryComponent, selector: "app-image-gallery", inputs: ["cardColor", "debug", "disabled", "readOnly", "mobile", "mode", "confirmBeforeDelete", "showToolbar", "showFabButton", "showTitle", "showAddCardButton", "addButtonColor", "dataSource"], outputs: ["onBeforeDeleteRows", "onAfterAddRows", "onAfterEditRow"] }, { kind: "component", type: i4.DebugComponent, selector: "app-debug", inputs: ["titlePrefix", "title", "enable", "expanded"] }] });
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: GalleryTestPage, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GalleryTestPage, decorators: [{
34
34
  type: Component,
35
35
  args: [{ selector: 'app-gallery-test-page', providers: [{ provide: ImageAttachmentService, useClass: ImageAttachmentService }], template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Image gallery</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <!-- DEBUG -->\n <app-debug title=\"Galley\">\n <ion-grid>\n <ion-row>\n <ion-col>gallery.count: {{ gallery.rows?.length }}</ion-col>\n </ion-row>\n </ion-grid>\n </app-debug>\n\n <app-image-gallery\n #gallery\n [dataSource]=\"dataSource\"\n (onAfterAddRows)=\"save()\"\n (onAfterEditRow)=\"save()\"\n ></app-image-gallery>\n</ion-content>\n" }]
36
36
  }], ctorParameters: () => [{ type: i1.ImageAttachmentService }] });
@@ -17,15 +17,15 @@ const routes = [
17
17
  },
18
18
  ];
19
19
  export class ImageGalleryTestingModule {
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageGalleryTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: ImageGalleryTestingModule, declarations: [
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageGalleryTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ImageGalleryTestingModule, declarations: [
22
22
  // Components
23
23
  GalleryTestPage], imports: [CommonModule,
24
24
  IonicModule,
25
25
  ImageGalleryModule, i1.TranslateModule, i2.RouterModule, i1.TranslateModule, SharedDebugModule], exports: [RouterModule,
26
26
  // Components
27
27
  GalleryTestPage] });
28
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageGalleryTestingModule, imports: [CommonModule,
28
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageGalleryTestingModule, imports: [CommonModule,
29
29
  IonicModule,
30
30
  ImageGalleryModule,
31
31
  TranslateModule.forChild(),
@@ -33,7 +33,7 @@ export class ImageGalleryTestingModule {
33
33
  TranslateModule.forChild(),
34
34
  SharedDebugModule, RouterModule] });
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageGalleryTestingModule, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageGalleryTestingModule, decorators: [{
37
37
  type: NgModule,
38
38
  args: [{
39
39
  imports: [
@@ -3,15 +3,15 @@ import { CommonModule } from '@angular/common';
3
3
  import { ImageGalleryModule } from './gallery/image-gallery.module';
4
4
  import * as i0 from "@angular/core";
5
5
  export class ImageModule {
6
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: ImageModule, imports: [CommonModule, ImageGalleryModule], exports: [
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ImageModule, imports: [CommonModule, ImageGalleryModule], exports: [
8
8
  // Sub module
9
9
  ImageGalleryModule] });
10
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageModule, imports: [CommonModule, ImageGalleryModule,
10
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageModule, imports: [CommonModule, ImageGalleryModule,
11
11
  // Sub module
12
12
  ImageGalleryModule] });
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImageModule, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageModule, decorators: [{
15
15
  type: NgModule,
16
16
  args: [{
17
17
  imports: [CommonModule, ImageGalleryModule],