tnx-shared 5.2.17 → 5.2.18

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 (452) hide show
  1. package/classes/base/component-base.d.ts +1 -1
  2. package/classes/base/data-form-base.d.ts +1 -1
  3. package/classes/base/data-list-base.d.ts +1 -1
  4. package/classes/base/list-base.d.ts +1 -1
  5. package/classes/base/tree-list-base.d.ts +1 -1
  6. package/classes/public-function.d.ts +3 -2
  7. package/components/access-denied-component/access-denied-v1/access-denied-v1.component.d.ts +1 -1
  8. package/components/access-denied-component/access-denied.component.d.ts +1 -1
  9. package/components/add-news/add-news.component.d.ts +1 -1
  10. package/components/address/address.component.d.ts +1 -1
  11. package/components/after-view-checked/after-view-checked.component.d.ts +1 -1
  12. package/components/autocomplete-datasource/autocomplete-datasource.component.d.ts +1 -1
  13. package/components/autocomplete-picker/autocomplete-picker.component.d.ts +1 -1
  14. package/components/avatar-uploader/avatar-uploader.component.d.ts +1 -1
  15. package/components/chat/chat-box/chat-box.component.d.ts +1 -1
  16. package/components/chat/chat-send-message-box/chat-send-message-box.component.d.ts +1 -1
  17. package/components/check-box-list/check-box-list.component.d.ts +1 -1
  18. package/components/cocautochuc/cocautochuc-picker/cocautochuc-picker.component.d.ts +1 -1
  19. package/components/cocautochuc/cocautochuc-picker-list/cocautochuc-picker-list.component.d.ts +1 -1
  20. package/components/common-app-component/app-root-menu/app-root-menu.component.d.ts +1 -1
  21. package/components/common-app-component/app-topbar-v1/app-topbar-v1.component.d.ts +1 -1
  22. package/components/common-app-component/app-topbar-v2/app-topbar-v2.component.d.ts +1 -1
  23. package/components/common-app-component/app.footer.component.d.ts +1 -1
  24. package/components/common-app-component/app.menu.component.d.ts +2 -2
  25. package/components/common-app-component/app.profile.component.d.ts +1 -1
  26. package/components/common-app-component/app.topbar.component.d.ts +1 -1
  27. package/components/common-app-component/common-app-component.d.ts +1 -1
  28. package/components/common-app-component/default-setting-form/default-data-settings.component.d.ts +1 -1
  29. package/components/common-dashboard/common-dashboard.component.d.ts +1 -1
  30. package/components/congviec-picker/congviec-picker.component.d.ts +1 -1
  31. package/components/crud/advance-search/advance-search.component.d.ts +1 -1
  32. package/components/crud/check-ready/check-ready.component.d.ts +1 -1
  33. package/components/crud/crud-form/crud-form.component.d.ts +1 -1
  34. package/components/crud/crud-list/crud-list.component.d.ts +1 -1
  35. package/components/crud/table-detail-form/table-detail-form.component.d.ts +1 -1
  36. package/components/crud/tn-table.component.d.ts +1 -1
  37. package/components/crud/tree-table/tree-table.component.d.ts +1 -1
  38. package/components/datetime-picker/datetime-picker.component.d.ts +1 -1
  39. package/components/datetime-picker-range/datetime-picker-range.component.d.ts +1 -1
  40. package/components/dropdown/dropdown.component.d.ts +1 -1
  41. package/components/dropdown/quick-add-form/quick-add-form.component.d.ts +1 -1
  42. package/components/entity-permission/entity-permission.component.d.ts +1 -1
  43. package/components/entity-picker/entity-picker-box/entity-picker-box.component.d.ts +1 -1
  44. package/components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component.d.ts +1 -1
  45. package/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.d.ts +1 -1
  46. package/components/entity-picker/entity-picker-dialog/entity-picker-dialog.component.d.ts +1 -1
  47. package/components/entity-picker/entity-picker.component.d.ts +1 -1
  48. package/components/equation-editor/equation-editor.component.d.ts +1 -1
  49. package/components/file-explorer/file-explorer.component.d.ts +1 -1
  50. package/components/file-explorer/file-form/file-form.component.d.ts +1 -1
  51. package/components/file-explorer/file-ky-so-sim/file-ky-so-sim.component.d.ts +1 -1
  52. package/components/file-explorer/file-manager/file-manager.component.d.ts +1 -1
  53. package/components/file-explorer/file-picker-dialog/file-picker-dialog.component.d.ts +1 -1
  54. package/components/file-explorer/file-tai-lieu/file-tai-lieu.component.d.ts +1 -1
  55. package/components/file-explorer/file-tai-lieu/khaithac-tailieu-dungchung/khaithac-tailieu-dungchung.component.d.ts +1 -1
  56. package/components/file-explorer/file-tai-lieu/tailieu-cuatoi/tailieu-cuatoi.component.d.ts +1 -1
  57. package/components/file-explorer/file-version-list/file-version-list.component.d.ts +1 -1
  58. package/components/file-explorer/file-viewer/file-viewer.component.d.ts +1 -1
  59. package/components/file-explorer/folder-form/folder-form.component.d.ts +1 -1
  60. package/components/file-explorer/ky-so-sim-danh-sach-chu-ky/ky-so-sim-danh-sach-chu-ky.component.d.ts +1 -1
  61. package/components/file-explorer/signature-detail/signature-detail.component.d.ts +1 -1
  62. package/components/file-upload/file-upload.component.d.ts +1 -1
  63. package/components/key-value/key-value.component.d.ts +1 -1
  64. package/components/mask/mask.component.d.ts +1 -1
  65. package/components/not-found/not-found.component.d.ts +1 -1
  66. package/components/number-picker-range/number-picker-range.component.d.ts +1 -1
  67. package/components/paging-next-back-only/paging-next-back-only.component.d.ts +1 -1
  68. package/components/permission-utils/permission-utils.component.d.ts +1 -1
  69. package/components/qr-code-generator/qr-code-generator.component.d.ts +1 -1
  70. package/components/query-builders/query-builder/query-builder.component.d.ts +1 -1
  71. package/components/query-builders/query-builder-group/query-builder-group.component.d.ts +1 -1
  72. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts +1 -1
  73. package/components/radio-button-list/radio-button-list.component.d.ts +1 -1
  74. package/components/report-queue/report-queue.component.d.ts +1 -1
  75. package/components/service-file-upload/service-file-upload.component.d.ts +1 -1
  76. package/components/settings/settings-row/settings-row.component.d.ts +1 -1
  77. package/components/settings/settings-workflow/settings-workflow-no1/settings-workflow-no1.component.d.ts +1 -1
  78. package/components/settings/settings-workflow/settings-workflow.component.d.ts +1 -1
  79. package/components/settings/settings.component.d.ts +1 -1
  80. package/components/share-link-by-permission/share-link-by-permission.component.d.ts +1 -1
  81. package/components/splash-component/splash-component-v1/splash-component-v1.component.d.ts +1 -1
  82. package/components/splash-component/splash-component-v2/splash-component-v2.component.d.ts +1 -1
  83. package/components/splash-component/splash-component.component.d.ts +1 -1
  84. package/components/statemachines/dynamic-node/dynamic-node.component.d.ts +1 -1
  85. package/components/statemachines/state/state.component.d.ts +1 -1
  86. package/components/statemachines/state-metadata/state-metadata.component.d.ts +1 -1
  87. package/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.d.ts +1 -1
  88. package/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.d.ts +1 -1
  89. package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.d.ts +1 -1
  90. package/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.d.ts +1 -1
  91. package/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.d.ts +1 -1
  92. package/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.d.ts +1 -1
  93. package/components/statemachines/statemachines-connection-receiver-user/statemachines-connection-receiver-user.component.d.ts +1 -1
  94. package/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.d.ts +1 -1
  95. package/components/statemachines/statemachines-designer/statemachines-designer.component.d.ts +1 -1
  96. package/components/tn-app-help/helper-current-page/helper-current-page.component.d.ts +1 -1
  97. package/components/tn-app-help/tn-app-help.component.d.ts +1 -1
  98. package/components/tn-app-notification/tn-app-notification-list/tn-app-notification-list.component.d.ts +1 -1
  99. package/components/tn-app-notification/tn-app-notification.component.d.ts +1 -1
  100. package/components/tn-checkbox/tn-checkbox.component.d.ts +1 -1
  101. package/components/tn-color-picker/tn-color-picker.component.d.ts +1 -1
  102. package/components/tn-custom-scrollbar/tn-custom-scrollbar.component.d.ts +1 -1
  103. package/components/tn-dialog/tn-dialog.component.d.ts +1 -1
  104. package/components/tn-tabview/tn-tabview.component.d.ts +1 -1
  105. package/components/tn-template/tn-template.component.d.ts +1 -1
  106. package/components/tn-tinymce/tn-tinymce.component.d.ts +1 -1
  107. package/components/universal-link-processor/universal-link-processor.component.d.ts +1 -1
  108. package/components/user-picker/user-picker-box/user-picker-box.component.d.ts +1 -1
  109. package/components/user-picker/user-picker-dialog/user-picker-dialog.component.d.ts +1 -1
  110. package/components/user-picker/user-picker.component.d.ts +1 -1
  111. package/components/vanban-picker/vanban-den-picker/vanban-den-picker.component.d.ts +1 -1
  112. package/components/vanban-picker/vanban-di-picker/vanban-di-picker.component.d.ts +1 -1
  113. package/components/vanban-picker/vanban-picker-dialog/vanban-picker-dialog.component.d.ts +1 -1
  114. package/components/vanban-picker/vanban-picker.component.d.ts +1 -1
  115. package/components/workflow/cho-y-kien-form/cho-y-kien-form.component.d.ts +1 -1
  116. package/components/workflow/permission-sharing/permission-sharing.component.d.ts +1 -1
  117. package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts +1 -1
  118. package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts +1 -1
  119. package/components/workflow/simple-workflow-form/simple-workflow-form.component.d.ts +1 -1
  120. package/components/workflow/start-workflow/start-workflow.component.d.ts +1 -1
  121. package/components/workflow/workflow-history/workflow-history.component.d.ts +1 -1
  122. package/components/workflow/workflow-history-dialog/workflow-history-dialog.component.d.ts +1 -1
  123. package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts +1 -1
  124. package/components/workflow/workflow-permission/workflow-permission.component.d.ts +1 -1
  125. package/components/workflow/workflow-permission-form/workflow-permission-form.component.d.ts +1 -1
  126. package/components/workflow/workflow-picker/workflow-picker.component.d.ts +1 -1
  127. package/components/workflow/workflow-setting/workflow-setting.component.d.ts +1 -1
  128. package/components/workflow/workflow-setting-dialog/workflow-setting-dialog.component.d.ts +1 -1
  129. package/components/workflow/workflow-setting-new/workflow-setting-new.component.d.ts +1 -1
  130. package/congviec/cauhinh-workflow/cauhinh-workflow-detail/cauhinh-workflow-detail.component.d.ts +1 -1
  131. package/congviec/cauhinh-workflow/cauhinh-workflow.component.d.ts +1 -1
  132. package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts +1 -1
  133. package/congviec/congviec/congviec-dinhkem-form/congviec-dinhkem-form.component.d.ts +1 -1
  134. package/congviec/congviec/congviec-form/congviec-form.component.d.ts +1 -1
  135. package/congviec/congviec/congviec-next-first-step/congviec-next-first-step.component.d.ts +1 -1
  136. package/congviec/congviec/congviec.component.d.ts +1 -1
  137. package/congviec/congviec-test/congviec.component.d.ts +1 -1
  138. package/congviec/dm-linhvuc-congviec/dm-linhvuc-congviec-form/dm-linhvuc-congviec-form.component.d.ts +1 -1
  139. package/congviec/dm-linhvuc-congviec/dm-linhvuc-congviec.component.d.ts +1 -1
  140. package/congviec/dm-loai-congviec/dm-loai-congviec-form/dm-loai-congviec-form.component.d.ts +1 -1
  141. package/congviec/dm-loai-congviec/dm-loai-congviec.component.d.ts +1 -1
  142. package/congviec/dm-priority/dm-priority-form/dm-priority-form.component.d.ts +1 -1
  143. package/congviec/dm-priority/dm-priority.component.d.ts +1 -1
  144. package/directives/authorize.directive.d.ts +1 -1
  145. package/directives/prevent-shift-tab.directive.d.ts +1 -1
  146. package/directives/primeng/tn-table.directive.d.ts +5 -5
  147. package/directives/tn-template.directive.d.ts +1 -1
  148. package/esm2020/app-context/application-context.service.mjs +3 -3
  149. package/esm2020/app-context/component-context.service.mjs +3 -3
  150. package/esm2020/classes/base/component-base.mjs +3 -3
  151. package/esm2020/classes/base/data-form-base.mjs +3 -3
  152. package/esm2020/classes/base/data-list-base.mjs +3 -3
  153. package/esm2020/classes/base/list-base.mjs +3 -3
  154. package/esm2020/classes/base/tree-list-base.mjs +3 -3
  155. package/esm2020/components/access-denied-component/access-denied-v1/access-denied-v1.component.mjs +3 -3
  156. package/esm2020/components/access-denied-component/access-denied.component.mjs +6 -6
  157. package/esm2020/components/add-news/add-news.component.mjs +6 -6
  158. package/esm2020/components/address/address.component.mjs +5 -5
  159. package/esm2020/components/address/services/address.service.mjs +3 -3
  160. package/esm2020/components/after-view-checked/after-view-checked.component.mjs +4 -4
  161. package/esm2020/components/autocomplete-datasource/autocomplete-datasource.component.mjs +7 -7
  162. package/esm2020/components/autocomplete-picker/autocomplete-picker.component.mjs +11 -11
  163. package/esm2020/components/avatar-uploader/avatar-uploader.component.mjs +6 -6
  164. package/esm2020/components/chat/chat-box/chat-box.component.mjs +7 -7
  165. package/esm2020/components/chat/chat-send-message-box/chat-send-message-box.component.mjs +10 -10
  166. package/esm2020/components/chat/services/chat.service.mjs +3 -3
  167. package/esm2020/components/chat/services/content.service.mjs +3 -3
  168. package/esm2020/components/chat/services/message-board.service.mjs +3 -3
  169. package/esm2020/components/chat/services/status.service.mjs +3 -3
  170. package/esm2020/components/check-box-list/check-box-list.component.mjs +8 -8
  171. package/esm2020/components/cocautochuc/cocautochuc-picker/cocautochuc-picker.component.mjs +7 -7
  172. package/esm2020/components/cocautochuc/cocautochuc-picker-list/cocautochuc-picker-list.component.mjs +6 -6
  173. package/esm2020/components/cocautochuc/services/cocautochuc.service.mjs +3 -3
  174. package/esm2020/components/common-app-component/app-root-menu/app-root-menu.component.mjs +4 -4
  175. package/esm2020/components/common-app-component/app-topbar-v1/app-topbar-v1.component.mjs +11 -11
  176. package/esm2020/components/common-app-component/app-topbar-v2/app-topbar-v2.component.mjs +9 -9
  177. package/esm2020/components/common-app-component/app.footer.component.mjs +3 -3
  178. package/esm2020/components/common-app-component/app.menu.component.mjs +11 -17
  179. package/esm2020/components/common-app-component/app.profile.component.mjs +5 -5
  180. package/esm2020/components/common-app-component/app.topbar.component.mjs +11 -11
  181. package/esm2020/components/common-app-component/common-app-component.mjs +15 -15
  182. package/esm2020/components/common-app-component/default-setting-form/default-data-settings.component.mjs +7 -7
  183. package/esm2020/components/common-dashboard/common-dashboard.component.mjs +3 -3
  184. package/esm2020/components/congviec-picker/congviec-picker.component.mjs +7 -7
  185. package/esm2020/components/congviec-picker/services/congviec.service.mjs +3 -3
  186. package/esm2020/components/congviec-picker/services/taskworkflowhistories.service.mjs +3 -3
  187. package/esm2020/components/crud/advance-search/advance-search.component.mjs +14 -14
  188. package/esm2020/components/crud/check-ready/check-ready.component.mjs +4 -4
  189. package/esm2020/components/crud/crud-form/crud-form.component.mjs +26 -26
  190. package/esm2020/components/crud/crud-list/crud-list.component.mjs +25 -25
  191. package/esm2020/components/crud/table-detail-form/table-detail-form.component.mjs +6 -6
  192. package/esm2020/components/crud/tn-table.component.mjs +3 -3
  193. package/esm2020/components/crud/tree-table/tree-table.component.mjs +23 -23
  194. package/esm2020/components/datetime-picker/datetime-picker.component.mjs +7 -7
  195. package/esm2020/components/datetime-picker-range/datetime-picker-range.component.mjs +6 -6
  196. package/esm2020/components/dropdown/dropdown.component.mjs +11 -11
  197. package/esm2020/components/dropdown/quick-add-form/quick-add-form.component.mjs +6 -6
  198. package/esm2020/components/dropdown/services/dropdown.service.mjs +3 -3
  199. package/esm2020/components/entity-permission/entity-permission.component.mjs +9 -9
  200. package/esm2020/components/entity-permission/services.cs/entity-permission.service.mjs +3 -3
  201. package/esm2020/components/entity-picker/entity-picker-box/entity-picker-box.component.mjs +7 -7
  202. package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component.mjs +7 -7
  203. package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.mjs +7 -7
  204. package/esm2020/components/entity-picker/entity-picker-dialog/entity-picker-dialog.component.mjs +7 -7
  205. package/esm2020/components/entity-picker/entity-picker.component.mjs +10 -10
  206. package/esm2020/components/equation-editor/equation-editor.component.mjs +6 -6
  207. package/esm2020/components/file-explorer/file-explorer.component.mjs +6 -6
  208. package/esm2020/components/file-explorer/file-form/file-form.component.mjs +7 -7
  209. package/esm2020/components/file-explorer/file-ky-so-sim/file-ky-so-sim.component.mjs +8 -8
  210. package/esm2020/components/file-explorer/file-manager/file-manager.component.mjs +22 -22
  211. package/esm2020/components/file-explorer/file-picker-dialog/file-picker-dialog.component.mjs +7 -7
  212. package/esm2020/components/file-explorer/file-tai-lieu/file-tai-lieu.component.mjs +9 -9
  213. package/esm2020/components/file-explorer/file-tai-lieu/khaithac-tailieu-dungchung/khaithac-tailieu-dungchung.component.mjs +4 -4
  214. package/esm2020/components/file-explorer/file-tai-lieu/tailieu-cuatoi/tailieu-cuatoi.component.mjs +4 -4
  215. package/esm2020/components/file-explorer/file-version-list/file-version-list.component.mjs +9 -9
  216. package/esm2020/components/file-explorer/file-viewer/file-viewer.component.mjs +9 -9
  217. package/esm2020/components/file-explorer/folder-form/folder-form.component.mjs +7 -7
  218. package/esm2020/components/file-explorer/ky-so-sim-danh-sach-chu-ky/ky-so-sim-danh-sach-chu-ky.component.mjs +6 -6
  219. package/esm2020/components/file-explorer/services/danhmuc-dungchung.service.mjs +3 -3
  220. package/esm2020/components/file-explorer/services/download-link.service.mjs +3 -3
  221. package/esm2020/components/file-explorer/services/file-data.service.mjs +3 -3
  222. package/esm2020/components/file-explorer/services/file-explorer-new.service.mjs +3 -3
  223. package/esm2020/components/file-explorer/services/file-explorer.service.mjs +3 -3
  224. package/esm2020/components/file-explorer/services/file-object.service.mjs +3 -3
  225. package/esm2020/components/file-explorer/services/file-version.service.mjs +3 -3
  226. package/esm2020/components/file-explorer/services/folder.service.mjs +3 -3
  227. package/esm2020/components/file-explorer/services/ky-so-sim-chu-ky-user.service.mjs +3 -3
  228. package/esm2020/components/file-explorer/services/ky-so-sim-signPDF.service.mjs +3 -3
  229. package/esm2020/components/file-explorer/services/my-drive.service.mjs +3 -3
  230. package/esm2020/components/file-explorer/signature-detail/signature-detail.component.mjs +3 -3
  231. package/esm2020/components/file-upload/file-upload.component.mjs +9 -9
  232. package/esm2020/components/key-value/key-value.component.mjs +3 -3
  233. package/esm2020/components/mask/mask.component.mjs +7 -7
  234. package/esm2020/components/not-found/not-found.component.mjs +3 -3
  235. package/esm2020/components/number-picker-range/number-picker-range.component.mjs +7 -7
  236. package/esm2020/components/paging-next-back-only/paging-next-back-only.component.mjs +8 -8
  237. package/esm2020/components/permission-utils/permission-utils.component.mjs +9 -9
  238. package/esm2020/components/qr-code-generator/qr-code-generator.component.mjs +4 -4
  239. package/esm2020/components/query-builders/query-builder/query-builder.component.mjs +8 -8
  240. package/esm2020/components/query-builders/query-builder-group/query-builder-group.component.mjs +10 -10
  241. package/esm2020/components/query-builders/query-builder-rule/query-builder-rule.component.mjs +18 -18
  242. package/esm2020/components/query-builders/services/dm-chucvu.service.mjs +3 -3
  243. package/esm2020/components/radio-button-list/radio-button-list.component.mjs +6 -6
  244. package/esm2020/components/report-queue/report-queue.component.mjs +8 -8
  245. package/esm2020/components/service-file-upload/service-file-upload.component.mjs +10 -10
  246. package/esm2020/components/settings/settings-row/settings-row.component.mjs +8 -8
  247. package/esm2020/components/settings/settings-workflow/settings-workflow-no1/settings-workflow-no1.component.mjs +4 -4
  248. package/esm2020/components/settings/settings-workflow/settings-workflow.component.mjs +9 -9
  249. package/esm2020/components/settings/settings.component.mjs +14 -14
  250. package/esm2020/components/share-link-by-permission/share-link-by-permission.component.mjs +7 -7
  251. package/esm2020/components/splash-component/splash-component-v1/splash-component-v1.component.mjs +7 -7
  252. package/esm2020/components/splash-component/splash-component-v2/splash-component-v2.component.mjs +7 -7
  253. package/esm2020/components/splash-component/splash-component.component.mjs +9 -9
  254. package/esm2020/components/statemachines/dynamic-node/dynamic-node.component.mjs +3 -3
  255. package/esm2020/components/statemachines/services/node.service.mjs +3 -3
  256. package/esm2020/components/statemachines/services/statemachines.service.mjs +3 -3
  257. package/esm2020/components/statemachines/state/state.component.mjs +4 -4
  258. package/esm2020/components/statemachines/state-metadata/state-metadata.component.mjs +7 -7
  259. package/esm2020/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.mjs +9 -9
  260. package/esm2020/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.mjs +7 -7
  261. package/esm2020/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.mjs +3 -3
  262. package/esm2020/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.mjs +3 -3
  263. package/esm2020/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.mjs +3 -3
  264. package/esm2020/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.mjs +3 -3
  265. package/esm2020/components/statemachines/statemachines-connection-receiver-user/statemachines-connection-receiver-user.component.mjs +3 -3
  266. package/esm2020/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.mjs +3 -3
  267. package/esm2020/components/statemachines/statemachines-designer/statemachines-designer.component.mjs +13 -13
  268. package/esm2020/components/tn-app-help/helper-current-page/helper-current-page.component.mjs +3 -3
  269. package/esm2020/components/tn-app-help/services/path-name.service.mjs +3 -3
  270. package/esm2020/components/tn-app-help/tn-app-help.component.mjs +7 -7
  271. package/esm2020/components/tn-app-notification/tn-app-notification-list/tn-app-notification-list.component.mjs +4 -4
  272. package/esm2020/components/tn-app-notification/tn-app-notification.component.mjs +5 -5
  273. package/esm2020/components/tn-checkbox/tn-checkbox.component.mjs +6 -6
  274. package/esm2020/components/tn-color-picker/tn-color-picker.component.mjs +7 -7
  275. package/esm2020/components/tn-custom-scrollbar/tn-custom-scrollbar.component.mjs +6 -6
  276. package/esm2020/components/tn-dialog/tn-dialog.component.mjs +8 -8
  277. package/esm2020/components/tn-tabview/tn-tabview.component.mjs +6 -6
  278. package/esm2020/components/tn-template/tn-template.component.mjs +4 -4
  279. package/esm2020/components/tn-tinymce/tn-tinymce.component.mjs +9 -9
  280. package/esm2020/components/universal-link-processor/universal-link-processor.component.mjs +4 -4
  281. package/esm2020/components/user-picker/user-picker-box/user-picker-box.component.mjs +9 -9
  282. package/esm2020/components/user-picker/user-picker-dialog/user-picker-dialog.component.mjs +4 -4
  283. package/esm2020/components/user-picker/user-picker.component.mjs +12 -12
  284. package/esm2020/components/vanban-picker/services/vanban-den.service.mjs +3 -3
  285. package/esm2020/components/vanban-picker/services/vanban-di.service.mjs +3 -3
  286. package/esm2020/components/vanban-picker/vanban-den-picker/vanban-den-picker.component.mjs +10 -10
  287. package/esm2020/components/vanban-picker/vanban-di-picker/vanban-di-picker.component.mjs +10 -10
  288. package/esm2020/components/vanban-picker/vanban-picker-dialog/vanban-picker-dialog.component.mjs +6 -6
  289. package/esm2020/components/vanban-picker/vanban-picker.component.mjs +10 -10
  290. package/esm2020/components/workflow/cho-y-kien-form/cho-y-kien-form.component.mjs +7 -7
  291. package/esm2020/components/workflow/permission-sharing/permission-sharing.component.mjs +7 -7
  292. package/esm2020/components/workflow/process-workflow-form/process-workflow-form.component.mjs +9 -9
  293. package/esm2020/components/workflow/process-workflow-target/process-workflow-target.component.mjs +4 -4
  294. package/esm2020/components/workflow/services/canbo-hoso.service.mjs +3 -3
  295. package/esm2020/components/workflow/services/dm-loai-congviec.service.mjs +3 -3
  296. package/esm2020/components/workflow/services/entity-workflow-history.service.mjs +3 -3
  297. package/esm2020/components/workflow/services/entity-workflow-setting.service.mjs +3 -3
  298. package/esm2020/components/workflow/services/workflow-history.service.mjs +3 -3
  299. package/esm2020/components/workflow/services/workflow-permission-detail.service.mjs +3 -3
  300. package/esm2020/components/workflow/services/workflow-permission.service.mjs +3 -3
  301. package/esm2020/components/workflow/services/workflow-settings.service.mjs +3 -3
  302. package/esm2020/components/workflow/simple-workflow-form/simple-workflow-form.component.mjs +7 -7
  303. package/esm2020/components/workflow/start-workflow/start-workflow.component.mjs +8 -8
  304. package/esm2020/components/workflow/workflow-history/workflow-history.component.mjs +6 -6
  305. package/esm2020/components/workflow/workflow-history-dialog/workflow-history-dialog.component.mjs +4 -4
  306. package/esm2020/components/workflow/workflow-history-new/workflow-history-new.component.mjs +10 -10
  307. package/esm2020/components/workflow/workflow-permission/workflow-permission.component.mjs +8 -8
  308. package/esm2020/components/workflow/workflow-permission-form/workflow-permission-form.component.mjs +7 -7
  309. package/esm2020/components/workflow/workflow-picker/workflow-picker.component.mjs +8 -8
  310. package/esm2020/components/workflow/workflow-setting/workflow-setting.component.mjs +5 -5
  311. package/esm2020/components/workflow/workflow-setting-dialog/workflow-setting-dialog.component.mjs +4 -4
  312. package/esm2020/components/workflow/workflow-setting-new/workflow-setting-new.component.mjs +7 -7
  313. package/esm2020/congviec/cauhinh-workflow/cauhinh-workflow-detail/cauhinh-workflow-detail.component.mjs +5 -5
  314. package/esm2020/congviec/cauhinh-workflow/cauhinh-workflow.component.mjs +3 -3
  315. package/esm2020/congviec/cauhinh-workflow/cauhinh-workflow.module.mjs +10 -12
  316. package/esm2020/congviec/cauhinh-workflow/services/cauhinh-workflow.service.mjs +3 -3
  317. package/esm2020/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.mjs +14 -14
  318. package/esm2020/congviec/congviec/congviec-dinhkem-form/congviec-dinhkem-form.component.mjs +4 -4
  319. package/esm2020/congviec/congviec/congviec-form/congviec-form.component.mjs +9 -9
  320. package/esm2020/congviec/congviec/congviec-next-first-step/congviec-next-first-step.component.mjs +9 -9
  321. package/esm2020/congviec/congviec/congviec.component.mjs +11 -11
  322. package/esm2020/congviec/congviec/services/congviec-dinhkem.service.mjs +3 -3
  323. package/esm2020/congviec/congviec/services/congviec.service.mjs +3 -3
  324. package/esm2020/congviec/congviec/services/congvieclienquan.service.mjs +3 -3
  325. package/esm2020/congviec/congviec-test/congviec.component.mjs +3 -3
  326. package/esm2020/congviec/dm-linhvuc-congviec/dm-linhvuc-congviec-form/dm-linhvuc-congviec-form.component.mjs +7 -7
  327. package/esm2020/congviec/dm-linhvuc-congviec/dm-linhvuc-congviec.component.mjs +6 -6
  328. package/esm2020/congviec/dm-linhvuc-congviec/services/dm-linhvuc-congviec.service.mjs +3 -3
  329. package/esm2020/congviec/dm-loai-congviec/dm-loai-congviec-form/dm-loai-congviec-form.component.mjs +7 -7
  330. package/esm2020/congviec/dm-loai-congviec/dm-loai-congviec.component.mjs +6 -6
  331. package/esm2020/congviec/dm-loai-congviec/services/dm-loai-congviec.service.mjs +3 -3
  332. package/esm2020/congviec/dm-priority/dm-priority-form/dm-priority-form.component.mjs +4 -4
  333. package/esm2020/congviec/dm-priority/dm-priority.component.mjs +5 -5
  334. package/esm2020/congviec/dm-priority/dm-priority.module.mjs +9 -9
  335. package/esm2020/congviec/dm-priority/services/dm-priority.service.mjs +3 -3
  336. package/esm2020/directives/authorize.directive.mjs +3 -3
  337. package/esm2020/directives/prevent-shift-tab.directive.mjs +3 -3
  338. package/esm2020/directives/primeng/tn-table.directive.mjs +17 -17
  339. package/esm2020/directives/tn-template.directive.mjs +3 -3
  340. package/esm2020/dynamic-components/dynamic-component.service.mjs +3 -3
  341. package/esm2020/intercepters/log.interceptor.mjs +3 -3
  342. package/esm2020/intercepters/permission-utils.interceptor.mjs +3 -3
  343. package/esm2020/intercepters/send-access-token.interceptor.mjs +3 -3
  344. package/esm2020/intercepters/trace.interceptor.mjs +3 -3
  345. package/esm2020/pipes/approval.pipe.mjs +3 -3
  346. package/esm2020/pipes/boolean-format.pipe.mjs +3 -3
  347. package/esm2020/pipes/convertMoneyToWord.pipe.mjs +3 -3
  348. package/esm2020/pipes/file-icon.pipe.mjs +3 -3
  349. package/esm2020/pipes/file-size.pipe.mjs +3 -3
  350. package/esm2020/pipes/highlight.pipe.mjs +3 -3
  351. package/esm2020/pipes/html-format.pipe.mjs +3 -3
  352. package/esm2020/pipes/masterData.pipe.mjs +3 -3
  353. package/esm2020/pipes/multiple-reference-data-format.pipe.mjs +3 -3
  354. package/esm2020/pipes/organization-format.pipe.mjs +3 -3
  355. package/esm2020/pipes/organization-name-format.pipe.mjs +3 -3
  356. package/esm2020/pipes/organizations-format.pipe.mjs +3 -3
  357. package/esm2020/pipes/reference-data-format.pipe.mjs +3 -3
  358. package/esm2020/pipes/safe-html.pipe.mjs +3 -3
  359. package/esm2020/pipes/safe-style.pipe.mjs +3 -3
  360. package/esm2020/pipes/safe-url.pipe.mjs +3 -3
  361. package/esm2020/pipes/secure.pipe.mjs +3 -3
  362. package/esm2020/pipes/string-format.pipe.mjs +3 -3
  363. package/esm2020/pipes/summary.pipe.mjs +3 -3
  364. package/esm2020/pipes/tn-date.pipe.mjs +3 -3
  365. package/esm2020/pipes/user-format.pipe.mjs +3 -3
  366. package/esm2020/pipes/users-format.pipe.mjs +3 -3
  367. package/esm2020/services/app-list.service.mjs +3 -3
  368. package/esm2020/services/article.service.mjs +3 -3
  369. package/esm2020/services/authen.service.mjs +3 -3
  370. package/esm2020/services/calculation-engine.service.mjs +3 -3
  371. package/esm2020/services/canbo-hoso.service.mjs +3 -3
  372. package/esm2020/services/check-control-visible.service.mjs +3 -3
  373. package/esm2020/services/common.service.mjs +3 -3
  374. package/esm2020/services/conditional-builder.service.mjs +3 -3
  375. package/esm2020/services/crud.service.mjs +3 -3
  376. package/esm2020/services/custom-router.service.mjs +3 -3
  377. package/esm2020/services/customize-ui.service.mjs +3 -3
  378. package/esm2020/services/danhmuc-api.service.mjs +3 -3
  379. package/esm2020/services/dhvinh-guard.service.mjs +3 -3
  380. package/esm2020/services/dm-chucvu.service.mjs +3 -3
  381. package/esm2020/services/dom.service.mjs +3 -3
  382. package/esm2020/services/eform.service.mjs +3 -3
  383. package/esm2020/services/entity-metadata.service.mjs +3 -3
  384. package/esm2020/services/entity-picker.service.mjs +3 -3
  385. package/esm2020/services/environment.service.mjs +3 -3
  386. package/esm2020/services/exception-handler.service.mjs +3 -3
  387. package/esm2020/services/export.service.mjs +3 -3
  388. package/esm2020/services/file-manager.service.mjs +3 -3
  389. package/esm2020/services/file-object-v4.service.mjs +3 -3
  390. package/esm2020/services/generic-guard-child.service.mjs +3 -3
  391. package/esm2020/services/generic-guard.service.mjs +3 -3
  392. package/esm2020/services/global.service.mjs +3 -3
  393. package/esm2020/services/guard-sv.service.mjs +3 -3
  394. package/esm2020/services/guard.service.mjs +3 -3
  395. package/esm2020/services/high-performance.service.mjs +3 -3
  396. package/esm2020/services/image.service.mjs +3 -3
  397. package/esm2020/services/list-helper.service.mjs +3 -3
  398. package/esm2020/services/localCache.service.mjs +3 -3
  399. package/esm2020/services/master-data.service.mjs +3 -3
  400. package/esm2020/services/menu.service.mjs +3 -3
  401. package/esm2020/services/newscategory.service.mjs +3 -3
  402. package/esm2020/services/notification.service.mjs +3 -3
  403. package/esm2020/services/notifier.service.mjs +3 -3
  404. package/esm2020/services/organization.service.mjs +3 -3
  405. package/esm2020/services/permission.service.mjs +3 -3
  406. package/esm2020/services/position.service.mjs +3 -3
  407. package/esm2020/services/print.service.mjs +3 -3
  408. package/esm2020/services/random-data.service.mjs +3 -3
  409. package/esm2020/services/role.service.mjs +3 -3
  410. package/esm2020/services/signalr.service.mjs +3 -3
  411. package/esm2020/services/storage-updated.service.mjs +3 -3
  412. package/esm2020/services/storage.service.mjs +3 -3
  413. package/esm2020/services/template-text-v4.service.mjs +3 -3
  414. package/esm2020/services/template-v4.service.mjs +3 -3
  415. package/esm2020/services/template.service.mjs +3 -3
  416. package/esm2020/services/templateinstance.service.mjs +3 -3
  417. package/esm2020/services/tn-client.service.mjs +3 -3
  418. package/esm2020/services/unique-number.service.mjs +3 -3
  419. package/esm2020/services/user-group-real.service.mjs +3 -3
  420. package/esm2020/services/user-group.service.mjs +3 -3
  421. package/esm2020/services/user-v5.service.mjs +3 -3
  422. package/esm2020/services/user.service.mjs +3 -3
  423. package/esm2020/services/virtual-base.service.mjs +3 -3
  424. package/esm2020/tnx-shared.module.mjs +6 -6
  425. package/fesm2015/tnx-shared.mjs +7269 -7277
  426. package/fesm2015/tnx-shared.mjs.map +1 -1
  427. package/fesm2020/tnx-shared.mjs +9215 -9223
  428. package/fesm2020/tnx-shared.mjs.map +1 -1
  429. package/{tnx-shared.d.ts → index.d.ts} +0 -0
  430. package/package.json +4 -4
  431. package/pipes/approval.pipe.d.ts +1 -1
  432. package/pipes/boolean-format.pipe.d.ts +1 -1
  433. package/pipes/convertMoneyToWord.pipe.d.ts +1 -1
  434. package/pipes/file-icon.pipe.d.ts +1 -1
  435. package/pipes/file-size.pipe.d.ts +1 -1
  436. package/pipes/highlight.pipe.d.ts +1 -1
  437. package/pipes/html-format.pipe.d.ts +1 -1
  438. package/pipes/masterData.pipe.d.ts +1 -1
  439. package/pipes/multiple-reference-data-format.pipe.d.ts +1 -1
  440. package/pipes/organization-format.pipe.d.ts +1 -1
  441. package/pipes/organization-name-format.pipe.d.ts +1 -1
  442. package/pipes/organizations-format.pipe.d.ts +1 -1
  443. package/pipes/reference-data-format.pipe.d.ts +1 -1
  444. package/pipes/safe-html.pipe.d.ts +1 -1
  445. package/pipes/safe-style.pipe.d.ts +1 -1
  446. package/pipes/safe-url.pipe.d.ts +1 -1
  447. package/pipes/secure.pipe.d.ts +1 -1
  448. package/pipes/string-format.pipe.d.ts +1 -1
  449. package/pipes/summary.pipe.d.ts +1 -1
  450. package/pipes/tn-date.pipe.d.ts +1 -1
  451. package/pipes/user-format.pipe.d.ts +1 -1
  452. package/pipes/users-format.pipe.d.ts +1 -1
@@ -10,10 +10,10 @@ import * as i0 from "@angular/core";
10
10
  import * as i1 from "@ngx-translate/core";
11
11
  import * as i2 from "../../../services/dom.service";
12
12
  import * as i3 from "../../../services/user.service";
13
- import * as i4 from "../../tn-dialog/tn-dialog.component";
14
- import * as i5 from "../../crud/crud-form/crud-form.component";
15
- import * as i6 from "@angular/common";
16
- import * as i7 from "tn-custom-primeng/button";
13
+ import * as i4 from "@angular/common";
14
+ import * as i5 from "tn-custom-primeng/button";
15
+ import * as i6 from "../../crud/crud-form/crud-form.component";
16
+ import * as i7 from "../../tn-dialog/tn-dialog.component";
17
17
  export class SettingsRowComponent extends ComponentBase {
18
18
  constructor(_injector, _translateService, _domService, _userService) {
19
19
  super(_injector);
@@ -129,11 +129,11 @@ export class SettingsRowComponent extends ComponentBase {
129
129
  return Object.keys(this.model).join(',');
130
130
  }
131
131
  }
132
- SettingsRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SettingsRowComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.DomService }, { token: i3.UserService }], target: i0.ɵɵFactoryTarget.Component });
133
- SettingsRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: SettingsRowComponent, selector: "settings-row", inputs: { parentModel: "parentModel", parentSetting: "parentSetting", entityMetadataService: "entityMetadataService" }, outputs: { onSave: "onSave", onCancel: "onCancel" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true, static: true }, { propertyName: "crudForm", first: true, predicate: CrudFormComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\"\r\n [header]=\"'C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB m\u00E0u' | translate\" [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\"\r\n (visibleChange)=\"visibleChangedDialog($event)\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""], components: [{ type: i4.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { type: i5.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }], pipes: { "translate": i1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.Default });
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SettingsRowComponent, decorators: [{
132
+ SettingsRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SettingsRowComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.DomService }, { token: i3.UserService }], target: i0.ɵɵFactoryTarget.Component });
133
+ SettingsRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: SettingsRowComponent, selector: "settings-row", inputs: { parentModel: "parentModel", parentSetting: "parentSetting", entityMetadataService: "entityMetadataService" }, outputs: { onSave: "onSave", onCancel: "onCancel" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true, static: true }, { propertyName: "crudForm", first: true, predicate: CrudFormComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\"\r\n [header]=\"'C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB m\u00E0u' | translate\" [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\"\r\n (visibleChange)=\"visibleChangedDialog($event)\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "component", type: i6.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }, { kind: "component", type: i7.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SettingsRowComponent, decorators: [{
135
135
  type: Component,
136
- args: [{ selector: 'settings-row', providers: [ComponentContextService], changeDetection: ChangeDetectionStrategy.Default, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\"\r\n [header]=\"'C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB m\u00E0u' | translate\" [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\"\r\n (visibleChange)=\"visibleChangedDialog($event)\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""] }]
136
+ args: [{ selector: 'settings-row', providers: [ComponentContextService], changeDetection: ChangeDetectionStrategy.Default, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\"\r\n [header]=\"'C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB m\u00E0u' | translate\" [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\"\r\n (visibleChange)=\"visibleChangedDialog($event)\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>" }]
137
137
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TranslateService }, { type: i2.DomService }, { type: i3.UserService }]; }, propDecorators: { dialog: [{
138
138
  type: ViewChild,
139
139
  args: ['dialog', { static: true }]
@@ -96,11 +96,11 @@ export class SettingsWorkflowNo1Component extends DataFormBase {
96
96
  this._setHiddenControl(`objectIsApi${index}`, objApprove != '3');
97
97
  }
98
98
  }
99
- SettingsWorkflowNo1Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SettingsWorkflowNo1Component, deps: [{ token: i0.Injector }, { token: i1.VirtualBaseService }], target: i0.ɵɵFactoryTarget.Component });
100
- SettingsWorkflowNo1Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: SettingsWorkflowNo1Component, selector: "settings-workflow-no1", inputs: { metadata: "metadata" }, providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\" >\r\n</crud-form>\r\n", styles: [""], components: [{ type: i2.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }] });
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SettingsWorkflowNo1Component, decorators: [{
99
+ SettingsWorkflowNo1Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SettingsWorkflowNo1Component, deps: [{ token: i0.Injector }, { token: i1.VirtualBaseService }], target: i0.ɵɵFactoryTarget.Component });
100
+ SettingsWorkflowNo1Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: SettingsWorkflowNo1Component, selector: "settings-workflow-no1", inputs: { metadata: "metadata" }, providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\" >\r\n</crud-form>\r\n", styles: [""], dependencies: [{ kind: "component", type: i2.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }] });
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SettingsWorkflowNo1Component, decorators: [{
102
102
  type: Component,
103
- args: [{ selector: 'settings-workflow-no1', providers: [ComponentContextService], template: "<crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\" >\r\n</crud-form>\r\n", styles: [""] }]
103
+ args: [{ selector: 'settings-workflow-no1', providers: [ComponentContextService], template: "<crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\" >\r\n</crud-form>\r\n" }]
104
104
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.VirtualBaseService }]; }, propDecorators: { metadata: [{
105
105
  type: Input
106
106
  }] } });
@@ -5,11 +5,11 @@ import { CrudFormData } from '../../crud/models/crud-base';
5
5
  import { CrudFormSetting } from '../../crud/models/crud-form-settings';
6
6
  import { DropdownControlSchema } from '../../dropdown/models/models';
7
7
  import * as i0 from "@angular/core";
8
- import * as i1 from "../../tn-dialog/tn-dialog.component";
9
- import * as i2 from "../../crud/crud-form/crud-form.component";
10
- import * as i3 from "./settings-workflow-no1/settings-workflow-no1.component";
11
- import * as i4 from "@angular/common";
12
- import * as i5 from "tn-custom-primeng/button";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "tn-custom-primeng/button";
10
+ import * as i3 from "../../crud/crud-form/crud-form.component";
11
+ import * as i4 from "./settings-workflow-no1/settings-workflow-no1.component";
12
+ import * as i5 from "../../tn-dialog/tn-dialog.component";
13
13
  import * as i6 from "@ngx-translate/core";
14
14
  export class SettingsWorkflowComponent extends ComponentBase {
15
15
  constructor(injector) {
@@ -69,11 +69,11 @@ export class SettingsWorkflowComponent extends ComponentBase {
69
69
  saveWorkflow() {
70
70
  }
71
71
  }
72
- SettingsWorkflowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SettingsWorkflowComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
73
- SettingsWorkflowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: SettingsWorkflowComponent, selector: "settings-workflow", inputs: { parentModel: "parentModel", parentSetting: "parentSetting" }, outputs: { onCancel: "onCancel", onSave: "onSave" }, providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"false\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (onCancel)=\"cancel()\"\r\n (visibleChange)=\"visibleChangedDialog($event)\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <ng-container [ngSwitch]=\"model.data.workflowtype\">\r\n <ng-container *ngSwitchCase=\"'1'\">\r\n <settings-workflow-no1 [metadata]=\"model.data\" #settingNo1></settings-workflow-no1>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span style=\"text-align:center;\">Vui l\u00F2ng ch\u1ECDn lo\u1EA1i quy tr\u00ECnh</span>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveWorkflow()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""], components: [{ type: i1.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { type: i2.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }, { type: i3.SettingsWorkflowNo1Component, selector: "settings-workflow-no1", inputs: ["metadata"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }], pipes: { "translate": i6.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.Default });
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SettingsWorkflowComponent, decorators: [{
72
+ SettingsWorkflowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SettingsWorkflowComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
73
+ SettingsWorkflowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: SettingsWorkflowComponent, selector: "settings-workflow", inputs: { parentModel: "parentModel", parentSetting: "parentSetting" }, outputs: { onCancel: "onCancel", onSave: "onSave" }, providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"false\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (onCancel)=\"cancel()\"\r\n (visibleChange)=\"visibleChangedDialog($event)\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <ng-container [ngSwitch]=\"model.data.workflowtype\">\r\n <ng-container *ngSwitchCase=\"'1'\">\r\n <settings-workflow-no1 [metadata]=\"model.data\" #settingNo1></settings-workflow-no1>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span style=\"text-align:center;\">Vui l\u00F2ng ch\u1ECDn lo\u1EA1i quy tr\u00ECnh</span>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveWorkflow()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "component", type: i3.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }, { kind: "component", type: i4.SettingsWorkflowNo1Component, selector: "settings-workflow-no1", inputs: ["metadata"] }, { kind: "component", type: i5.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SettingsWorkflowComponent, decorators: [{
75
75
  type: Component,
76
- args: [{ selector: 'settings-workflow', providers: [ComponentContextService], changeDetection: ChangeDetectionStrategy.Default, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"false\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (onCancel)=\"cancel()\"\r\n (visibleChange)=\"visibleChangedDialog($event)\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <ng-container [ngSwitch]=\"model.data.workflowtype\">\r\n <ng-container *ngSwitchCase=\"'1'\">\r\n <settings-workflow-no1 [metadata]=\"model.data\" #settingNo1></settings-workflow-no1>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span style=\"text-align:center;\">Vui l\u00F2ng ch\u1ECDn lo\u1EA1i quy tr\u00ECnh</span>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveWorkflow()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""] }]
76
+ args: [{ selector: 'settings-workflow', providers: [ComponentContextService], changeDetection: ChangeDetectionStrategy.Default, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"false\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (onCancel)=\"cancel()\"\r\n (visibleChange)=\"visibleChangedDialog($event)\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <ng-container [ngSwitch]=\"model.data.workflowtype\">\r\n <ng-container *ngSwitchCase=\"'1'\">\r\n <settings-workflow-no1 [metadata]=\"model.data\" #settingNo1></settings-workflow-no1>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span style=\"text-align:center;\">Vui l\u00F2ng ch\u1ECDn lo\u1EA1i quy tr\u00ECnh</span>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveWorkflow()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>" }]
77
77
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { onCancel: [{
78
78
  type: Output
79
79
  }], onSave: [{
@@ -11,16 +11,16 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "@ngx-translate/core";
12
12
  import * as i2 from "../../services/dom.service";
13
13
  import * as i3 from "../../services/user.service";
14
- import * as i4 from "../tn-dialog/tn-dialog.component";
15
- import * as i5 from "../crud/crud-form/crud-form.component";
16
- import * as i6 from "tn-custom-primeng/table";
17
- import * as i7 from "tn-custom-primeng/checkbox";
18
- import * as i8 from "tn-custom-primeng/dropdown";
19
- import * as i9 from "@angular/common";
20
- import * as i10 from "tn-custom-primeng/api";
21
- import * as i11 from "@angular/forms";
22
- import * as i12 from "tn-custom-primeng/inputtext";
23
- import * as i13 from "tn-custom-primeng/button";
14
+ import * as i4 from "tn-custom-primeng/api";
15
+ import * as i5 from "@angular/common";
16
+ import * as i6 from "tn-custom-primeng/button";
17
+ import * as i7 from "tn-custom-primeng/dropdown";
18
+ import * as i8 from "tn-custom-primeng/table";
19
+ import * as i9 from "@angular/forms";
20
+ import * as i10 from "tn-custom-primeng/checkbox";
21
+ import * as i11 from "tn-custom-primeng/inputtext";
22
+ import * as i12 from "../crud/crud-form/crud-form.component";
23
+ import * as i13 from "../tn-dialog/tn-dialog.component";
24
24
  export class SettingsComponent extends ComponentBase {
25
25
  constructor(_injector, _translateService, _domService, _userService) {
26
26
  super(_injector);
@@ -159,11 +159,11 @@ export class SettingsComponent extends ComponentBase {
159
159
  return Object.keys(this.model).join(',');
160
160
  }
161
161
  }
162
- SettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SettingsComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.DomService }, { token: i3.UserService }], target: i0.ɵɵFactoryTarget.Component });
163
- SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: SettingsComponent, selector: "settings", inputs: { parentModel: "parentModel", parentSetting: "parentSetting", entityMetadataService: "entityMetadataService" }, outputs: { onCancel: "onCancel", onSave: "onSave" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (visibleChange)=\"visibleChangedDialog($event)\"\r\n [styleClass]=\"'tn-form-dialog'\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <div style=\"padding: 0.5rem;\">\r\n <div class=\"p-col-12\" *ngIf=\"parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB</label>\r\n </div>\r\n <div class=\"p-col-12\" *ngIf=\"!parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">Ch\u01B0a c\u00F3 thi\u1EBFt l\u1EADp c\u1ED9t cho trang\r\n n\u00E0y</label>\r\n </div>\r\n <div class=\"p-col-12\">\r\n <p-table [value]=\"model.data.details\" [columns]=\"columnSchemas\" [responsive]=\"true\"\r\n [reorderableColumns]=\"true\">\r\n <ng-template pTemplate=\"header\" let-columns let-rowData>\r\n <tr>\r\n <th *ngFor=\"let col of columnSchemas\" [style.width]=\"col.width\" style=\"text-align: center;\">\r\n {{col.header}}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\"\r\n let-columns=\"pageSetting.columnSettings\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td class=\"stt\" style=\"text-align:center\">{{ri+1}}</td>\r\n <td style=\"text-align:left\">\r\n <span class=\"p-column-title\">{{columnSchemas[1].header}}</span>\r\n {{rowData.columnName}}\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[2].header}}</span>\r\n <p-checkbox [(ngModel)]=\"rowData.visible\" binary=\"true\">\r\n </p-checkbox>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[3].header}}</span>\r\n <p-dropdown appendTo=\"body\" [styleClass]=\"'full-width'\" [(ngModel)]=\"rowData.textAlign\"\r\n [options]=\"textAlignOptions\">\r\n </p-dropdown>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[4].header}}</span>\r\n <input [(ngModel)]=\"rowData.width\" pInputText style=\"width:100%\" autocomplete=\"off\"\r\n autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\r\n </td>\r\n <td style=\"text-align:center\">\r\n <i class=\"fas fa-arrows-alt\"\r\n style=\"width:50px; cursor:pointer; padding: 8px; color: #555;\"\r\n pReorderableRowHandle></i>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""], components: [{ type: i4.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { type: i5.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }, { type: i6.Table, selector: "p-table", inputs: ["pageLinks", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "contextMenuSelectionMode", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "filterDelay", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "virtualScrollDelay", "virtualRowHeight", "columnResizeMode", "loadingIcon", "showLoader", "stateStorage", "editMode", "totalRecords", "value", "columns", "first", "rows", "sortField", "sortOrder", "multiSortMeta", "selection", "contextMenuSelection", "frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "rowsPerPageOptions", "paginatorDropdownAppendTo", "showCurrentPageReport", "showJumpToPageDropdown", "selectionMode", "dataKey", "metaKeySelection", "globalFilterFields", "filterLocale", "scrollable", "scrollHeight", "virtualScroll", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "reorderableColumns", "loading", "rowHover", "customSort", "autoLayout", "exportFunction", "stateKey", "minBufferPx", "maxBufferPx"], outputs: ["selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { type: i7.Checkbox, selector: "p-checkbox", inputs: ["checkboxIcon", "disabled", "value", "name", "binary", "label", "ariaLabelledBy", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "readonly", "required"], outputs: ["onChange"] }, { type: i8.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "resetFilterOnHide", "dropdownIcon", "autoDisplayFirst", "emptyFilterMessage", "maxItemDisplay", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "autofocusFilter", "autofocusSelectedItem", "delayFilter", "disabled", "options", "filterValue", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "virtualScroll", "itemSize", "ariaFilterLabel", "ariaLabelledBy", "maxlength", "tooltipStyleClass", "modifyOptionsWhenFilter"], outputs: ["onChange", "onFocus", "onBlur", "onClick", "onShow", "onHide"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i12.InputText, selector: "[pInputText]" }, { type: i6.ReorderableRowHandle, selector: "[pReorderableRowHandle]", inputs: ["pReorderableRowHandle"] }, { type: i13.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }], pipes: { "translate": i1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.Default });
164
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SettingsComponent, decorators: [{
162
+ SettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SettingsComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.DomService }, { token: i3.UserService }], target: i0.ɵɵFactoryTarget.Component });
163
+ SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: SettingsComponent, selector: "settings", inputs: { parentModel: "parentModel", parentSetting: "parentSetting", entityMetadataService: "entityMetadataService" }, outputs: { onCancel: "onCancel", onSave: "onSave" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (visibleChange)=\"visibleChangedDialog($event)\"\r\n [styleClass]=\"'tn-form-dialog'\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <div style=\"padding: 0.5rem;\">\r\n <div class=\"p-col-12\" *ngIf=\"parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB</label>\r\n </div>\r\n <div class=\"p-col-12\" *ngIf=\"!parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">Ch\u01B0a c\u00F3 thi\u1EBFt l\u1EADp c\u1ED9t cho trang\r\n n\u00E0y</label>\r\n </div>\r\n <div class=\"p-col-12\">\r\n <p-table [value]=\"model.data.details\" [columns]=\"columnSchemas\" [responsive]=\"true\"\r\n [reorderableColumns]=\"true\">\r\n <ng-template pTemplate=\"header\" let-columns let-rowData>\r\n <tr>\r\n <th *ngFor=\"let col of columnSchemas\" [style.width]=\"col.width\" style=\"text-align: center;\">\r\n {{col.header}}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\"\r\n let-columns=\"pageSetting.columnSettings\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td class=\"stt\" style=\"text-align:center\">{{ri+1}}</td>\r\n <td style=\"text-align:left\">\r\n <span class=\"p-column-title\">{{columnSchemas[1].header}}</span>\r\n {{rowData.columnName}}\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[2].header}}</span>\r\n <p-checkbox [(ngModel)]=\"rowData.visible\" binary=\"true\">\r\n </p-checkbox>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[3].header}}</span>\r\n <p-dropdown appendTo=\"body\" [styleClass]=\"'full-width'\" [(ngModel)]=\"rowData.textAlign\"\r\n [options]=\"textAlignOptions\">\r\n </p-dropdown>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[4].header}}</span>\r\n <input [(ngModel)]=\"rowData.width\" pInputText style=\"width:100%\" autocomplete=\"off\"\r\n autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\r\n </td>\r\n <td style=\"text-align:center\">\r\n <i class=\"fas fa-arrows-alt\"\r\n style=\"width:50px; cursor:pointer; padding: 8px; color: #555;\"\r\n pReorderableRowHandle></i>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""], dependencies: [{ kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "resetFilterOnHide", "dropdownIcon", "autoDisplayFirst", "emptyFilterMessage", "maxItemDisplay", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "autofocusFilter", "autofocusSelectedItem", "delayFilter", "disabled", "options", "filterValue", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "virtualScroll", "itemSize", "ariaFilterLabel", "ariaLabelledBy", "maxlength", "tooltipStyleClass", "modifyOptionsWhenFilter"], outputs: ["onChange", "onFocus", "onBlur", "onClick", "onShow", "onHide"] }, { kind: "component", type: i8.Table, selector: "p-table", inputs: ["pageLinks", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "contextMenuSelectionMode", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "filterDelay", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "virtualScrollDelay", "virtualRowHeight", "columnResizeMode", "loadingIcon", "showLoader", "stateStorage", "editMode", "totalRecords", "value", "columns", "first", "rows", "sortField", "sortOrder", "multiSortMeta", "selection", "contextMenuSelection", "frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "rowsPerPageOptions", "paginatorDropdownAppendTo", "showCurrentPageReport", "showJumpToPageDropdown", "selectionMode", "dataKey", "metaKeySelection", "globalFilterFields", "filterLocale", "scrollable", "scrollHeight", "virtualScroll", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "reorderableColumns", "loading", "rowHover", "customSort", "autoLayout", "exportFunction", "stateKey", "minBufferPx", "maxBufferPx"], outputs: ["selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i8.ReorderableRowHandle, selector: "[pReorderableRowHandle]", inputs: ["pReorderableRowHandle"] }, { kind: "directive", type: i8.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i10.Checkbox, selector: "p-checkbox", inputs: ["checkboxIcon", "disabled", "value", "name", "binary", "label", "ariaLabelledBy", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "readonly", "required"], outputs: ["onChange"] }, { kind: "directive", type: i11.InputText, selector: "[pInputText]" }, { kind: "component", type: i12.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }, { kind: "component", type: i13.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SettingsComponent, decorators: [{
165
165
  type: Component,
166
- args: [{ selector: 'settings', providers: [ComponentContextService], changeDetection: ChangeDetectionStrategy.Default, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (visibleChange)=\"visibleChangedDialog($event)\"\r\n [styleClass]=\"'tn-form-dialog'\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <div style=\"padding: 0.5rem;\">\r\n <div class=\"p-col-12\" *ngIf=\"parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB</label>\r\n </div>\r\n <div class=\"p-col-12\" *ngIf=\"!parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">Ch\u01B0a c\u00F3 thi\u1EBFt l\u1EADp c\u1ED9t cho trang\r\n n\u00E0y</label>\r\n </div>\r\n <div class=\"p-col-12\">\r\n <p-table [value]=\"model.data.details\" [columns]=\"columnSchemas\" [responsive]=\"true\"\r\n [reorderableColumns]=\"true\">\r\n <ng-template pTemplate=\"header\" let-columns let-rowData>\r\n <tr>\r\n <th *ngFor=\"let col of columnSchemas\" [style.width]=\"col.width\" style=\"text-align: center;\">\r\n {{col.header}}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\"\r\n let-columns=\"pageSetting.columnSettings\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td class=\"stt\" style=\"text-align:center\">{{ri+1}}</td>\r\n <td style=\"text-align:left\">\r\n <span class=\"p-column-title\">{{columnSchemas[1].header}}</span>\r\n {{rowData.columnName}}\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[2].header}}</span>\r\n <p-checkbox [(ngModel)]=\"rowData.visible\" binary=\"true\">\r\n </p-checkbox>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[3].header}}</span>\r\n <p-dropdown appendTo=\"body\" [styleClass]=\"'full-width'\" [(ngModel)]=\"rowData.textAlign\"\r\n [options]=\"textAlignOptions\">\r\n </p-dropdown>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[4].header}}</span>\r\n <input [(ngModel)]=\"rowData.width\" pInputText style=\"width:100%\" autocomplete=\"off\"\r\n autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\r\n </td>\r\n <td style=\"text-align:center\">\r\n <i class=\"fas fa-arrows-alt\"\r\n style=\"width:50px; cursor:pointer; padding: 8px; color: #555;\"\r\n pReorderableRowHandle></i>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""] }]
166
+ args: [{ selector: 'settings', providers: [ComponentContextService], changeDetection: ChangeDetectionStrategy.Default, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (visibleChange)=\"visibleChangedDialog($event)\"\r\n [styleClass]=\"'tn-form-dialog'\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <div style=\"padding: 0.5rem;\">\r\n <div class=\"p-col-12\" *ngIf=\"parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB</label>\r\n </div>\r\n <div class=\"p-col-12\" *ngIf=\"!parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">Ch\u01B0a c\u00F3 thi\u1EBFt l\u1EADp c\u1ED9t cho trang\r\n n\u00E0y</label>\r\n </div>\r\n <div class=\"p-col-12\">\r\n <p-table [value]=\"model.data.details\" [columns]=\"columnSchemas\" [responsive]=\"true\"\r\n [reorderableColumns]=\"true\">\r\n <ng-template pTemplate=\"header\" let-columns let-rowData>\r\n <tr>\r\n <th *ngFor=\"let col of columnSchemas\" [style.width]=\"col.width\" style=\"text-align: center;\">\r\n {{col.header}}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\"\r\n let-columns=\"pageSetting.columnSettings\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td class=\"stt\" style=\"text-align:center\">{{ri+1}}</td>\r\n <td style=\"text-align:left\">\r\n <span class=\"p-column-title\">{{columnSchemas[1].header}}</span>\r\n {{rowData.columnName}}\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[2].header}}</span>\r\n <p-checkbox [(ngModel)]=\"rowData.visible\" binary=\"true\">\r\n </p-checkbox>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[3].header}}</span>\r\n <p-dropdown appendTo=\"body\" [styleClass]=\"'full-width'\" [(ngModel)]=\"rowData.textAlign\"\r\n [options]=\"textAlignOptions\">\r\n </p-dropdown>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[4].header}}</span>\r\n <input [(ngModel)]=\"rowData.width\" pInputText style=\"width:100%\" autocomplete=\"off\"\r\n autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\r\n </td>\r\n <td style=\"text-align:center\">\r\n <i class=\"fas fa-arrows-alt\"\r\n style=\"width:50px; cursor:pointer; padding: 8px; color: #555;\"\r\n pReorderableRowHandle></i>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #footer>\r\n <button *ngIf=\"!parentSetting.hiddenSaveSetting\" type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [label]=\"'L\u01B0u' | translate\" (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>" }]
167
167
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TranslateService }, { type: i2.DomService }, { type: i3.UserService }]; }, propDecorators: { dialog: [{
168
168
  type: ViewChild,
169
169
  args: ['dialog', { static: true }]
@@ -5,11 +5,11 @@ import { PermissionBase } from '../../enums/common';
5
5
  import { ModelShareLinkByPermission } from './models/share-link-by-permission';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "../../services/notifier.service";
8
- import * as i2 from "tn-custom-primeng/checkbox";
9
- import * as i3 from "@angular/common";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "tn-custom-primeng/button";
10
10
  import * as i4 from "@angular/forms";
11
- import * as i5 from "tn-custom-primeng/inputtextarea";
12
- import * as i6 from "tn-custom-primeng/button";
11
+ import * as i5 from "tn-custom-primeng/checkbox";
12
+ import * as i6 from "tn-custom-primeng/inputtextarea";
13
13
  export class ShareLinkByPermissionComponent extends ComponentBase {
14
14
  constructor(_injector, _notifierService) {
15
15
  super(_injector);
@@ -132,9 +132,9 @@ export class ShareLinkByPermissionComponent extends ComponentBase {
132
132
  }
133
133
  }
134
134
  }
135
- ShareLinkByPermissionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: ShareLinkByPermissionComponent, deps: [{ token: i0.Injector }, { token: i1.NotifierService }], target: i0.ɵɵFactoryTarget.Component });
136
- ShareLinkByPermissionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: ShareLinkByPermissionComponent, selector: "share-link-by-permission", inputs: { setting: "setting", lstItem: "lstItem" }, providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"loading\" class=\"loading-text\">\u0110ang ki\u1EC3m tra quy\u1EC1n c\u00F3 th\u1EC3 chia s\u1EBB</div>\r\n<div *ngIf=\"!loading\" class=\"container-share-link\">\r\n <div class=\"container-checkbox\">\r\n <span>\r\n <p-checkbox [binary]=\"true\" [disabled]=\"disableRead\" label=\"Xem\" class=\"link-or-action\"\r\n [(ngModel)]=\"allowRead\"></p-checkbox>\r\n </span>\r\n <span>\r\n <p-checkbox [binary]=\"true\" [disabled]=\"disableEdit\" label=\"S\u1EEDa\" class=\"link-or-action\"\r\n [(ngModel)]=\"allowEdit\"></p-checkbox>\r\n </span>\r\n <span>\r\n <p-checkbox [binary]=\"true\" [disabled]=\"disableDelete\" label=\"X\u00F3a\" class=\"link-or-action\"\r\n [(ngModel)]=\"allowDelete\"></p-checkbox>\r\n </span>\r\n <div>\r\n <textarea *ngIf=\"links\" pInputTextarea [(ngModel)]=\"links\"></textarea>\r\n </div>\r\n </div>\r\n <div class=\"container-button\">\r\n <button *ngIf=\"links\" type=\"button\" pButton class=\"p-button-text p-button-success\" icon=\"pi pi-copy\"\r\n label=\"Copy link v\u00E0o clipboard\" (click)=\"copyLinkToClipboard()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-link\" label=\"T\u1EA1o \u0111\u01B0\u1EDDng d\u1EABn chia s\u1EBB\"\r\n (click)=\"createShareLink()\"></button>\r\n </div>\r\n</div>", styles: [".container-share-link{display:flex;flex-direction:column;height:100%}.container-share-link .container-checkbox{text-align:center;padding:.5em;flex:1 1;height:100%}.container-share-link .container-checkbox>span{margin-right:.5em}.container-share-link .container-checkbox textarea{width:100%;height:155px;margin-top:.5em;resize:none}.container-share-link .container-button{padding:.5em .5em calc(.5em - 5px) .5em;border-top:1px solid #ced4da;text-align:right}.loading-text{text-align:center;font-weight:700;font-size:1.5rem;padding:1em}\n"], components: [{ type: i2.Checkbox, selector: "p-checkbox", inputs: ["checkboxIcon", "disabled", "value", "name", "binary", "label", "ariaLabelledBy", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "readonly", "required"], outputs: ["onChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }] });
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: ShareLinkByPermissionComponent, decorators: [{
135
+ ShareLinkByPermissionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ShareLinkByPermissionComponent, deps: [{ token: i0.Injector }, { token: i1.NotifierService }], target: i0.ɵɵFactoryTarget.Component });
136
+ ShareLinkByPermissionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ShareLinkByPermissionComponent, selector: "share-link-by-permission", inputs: { setting: "setting", lstItem: "lstItem" }, providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"loading\" class=\"loading-text\">\u0110ang ki\u1EC3m tra quy\u1EC1n c\u00F3 th\u1EC3 chia s\u1EBB</div>\r\n<div *ngIf=\"!loading\" class=\"container-share-link\">\r\n <div class=\"container-checkbox\">\r\n <span>\r\n <p-checkbox [binary]=\"true\" [disabled]=\"disableRead\" label=\"Xem\" class=\"link-or-action\"\r\n [(ngModel)]=\"allowRead\"></p-checkbox>\r\n </span>\r\n <span>\r\n <p-checkbox [binary]=\"true\" [disabled]=\"disableEdit\" label=\"S\u1EEDa\" class=\"link-or-action\"\r\n [(ngModel)]=\"allowEdit\"></p-checkbox>\r\n </span>\r\n <span>\r\n <p-checkbox [binary]=\"true\" [disabled]=\"disableDelete\" label=\"X\u00F3a\" class=\"link-or-action\"\r\n [(ngModel)]=\"allowDelete\"></p-checkbox>\r\n </span>\r\n <div>\r\n <textarea *ngIf=\"links\" pInputTextarea [(ngModel)]=\"links\"></textarea>\r\n </div>\r\n </div>\r\n <div class=\"container-button\">\r\n <button *ngIf=\"links\" type=\"button\" pButton class=\"p-button-text p-button-success\" icon=\"pi pi-copy\"\r\n label=\"Copy link v\u00E0o clipboard\" (click)=\"copyLinkToClipboard()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-link\" label=\"T\u1EA1o \u0111\u01B0\u1EDDng d\u1EABn chia s\u1EBB\"\r\n (click)=\"createShareLink()\"></button>\r\n </div>\r\n</div>", styles: [".container-share-link{display:flex;flex-direction:column;height:100%}.container-share-link .container-checkbox{text-align:center;padding:.5em;flex:1 1;height:100%}.container-share-link .container-checkbox>span{margin-right:.5em}.container-share-link .container-checkbox textarea{width:100%;height:155px;margin-top:.5em;resize:none}.container-share-link .container-button{padding:.5em .5em calc(.5em - 5px) .5em;border-top:1px solid #ced4da;text-align:right}.loading-text{text-align:center;font-weight:700;font-size:1.5rem;padding:1em}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.Checkbox, selector: "p-checkbox", inputs: ["checkboxIcon", "disabled", "value", "name", "binary", "label", "ariaLabelledBy", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "readonly", "required"], outputs: ["onChange"] }, { kind: "directive", type: i6.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }] });
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ShareLinkByPermissionComponent, decorators: [{
138
138
  type: Component,
139
139
  args: [{ selector: 'share-link-by-permission', providers: [ComponentContextService], template: "<div *ngIf=\"loading\" class=\"loading-text\">\u0110ang ki\u1EC3m tra quy\u1EC1n c\u00F3 th\u1EC3 chia s\u1EBB</div>\r\n<div *ngIf=\"!loading\" class=\"container-share-link\">\r\n <div class=\"container-checkbox\">\r\n <span>\r\n <p-checkbox [binary]=\"true\" [disabled]=\"disableRead\" label=\"Xem\" class=\"link-or-action\"\r\n [(ngModel)]=\"allowRead\"></p-checkbox>\r\n </span>\r\n <span>\r\n <p-checkbox [binary]=\"true\" [disabled]=\"disableEdit\" label=\"S\u1EEDa\" class=\"link-or-action\"\r\n [(ngModel)]=\"allowEdit\"></p-checkbox>\r\n </span>\r\n <span>\r\n <p-checkbox [binary]=\"true\" [disabled]=\"disableDelete\" label=\"X\u00F3a\" class=\"link-or-action\"\r\n [(ngModel)]=\"allowDelete\"></p-checkbox>\r\n </span>\r\n <div>\r\n <textarea *ngIf=\"links\" pInputTextarea [(ngModel)]=\"links\"></textarea>\r\n </div>\r\n </div>\r\n <div class=\"container-button\">\r\n <button *ngIf=\"links\" type=\"button\" pButton class=\"p-button-text p-button-success\" icon=\"pi pi-copy\"\r\n label=\"Copy link v\u00E0o clipboard\" (click)=\"copyLinkToClipboard()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-link\" label=\"T\u1EA1o \u0111\u01B0\u1EDDng d\u1EABn chia s\u1EBB\"\r\n (click)=\"createShareLink()\"></button>\r\n </div>\r\n</div>", styles: [".container-share-link{display:flex;flex-direction:column;height:100%}.container-share-link .container-checkbox{text-align:center;padding:.5em;flex:1 1;height:100%}.container-share-link .container-checkbox>span{margin-right:.5em}.container-share-link .container-checkbox textarea{width:100%;height:155px;margin-top:.5em;resize:none}.container-share-link .container-button{padding:.5em .5em calc(.5em - 5px) .5em;border-top:1px solid #ced4da;text-align:right}.loading-text{text-align:center;font-weight:700;font-size:1.5rem;padding:1em}\n"] }]
140
140
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.NotifierService }]; }, propDecorators: { setting: [{
@@ -10,9 +10,9 @@ import * as i4 from "../../../services/user.service";
10
10
  import * as i5 from "@angular/router";
11
11
  import * as i6 from "../../../services/authen.service";
12
12
  import * as i7 from "../../../services/global.service";
13
- import * as i8 from "../../tn-custom-scrollbar/tn-custom-scrollbar.component";
14
- import * as i9 from "@angular/common";
15
- import * as i10 from "ngx-img-fallback";
13
+ import * as i8 from "@angular/common";
14
+ import * as i9 from "ngx-img-fallback";
15
+ import * as i10 from "../../tn-custom-scrollbar/tn-custom-scrollbar.component";
16
16
  import * as i11 from "@ngx-translate/core";
17
17
  export class SplashComponentV1Component extends ComponentBase {
18
18
  constructor(injector, _environmentService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
@@ -175,10 +175,10 @@ export class SplashComponentV1Component extends ComponentBase {
175
175
  this.rootContext.fireEvent('LOGIN');
176
176
  }
177
177
  }
178
- SplashComponentV1Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SplashComponentV1Component, deps: [{ token: i0.Injector }, { token: i1.EnvironmentService }, { token: i2.PermissionService }, { token: i3.DeviceDetectorService }, { token: i4.UserService }, { token: i5.Router }, { token: i6.AuthenService }, { token: i7.GlobalService }], target: i0.ɵɵFactoryTarget.Component });
179
- SplashComponentV1Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: SplashComponentV1Component, selector: "splash-component-v1", providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v1\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n\r\n <div class=\"wrp-login\">\r\n <h2>Xin ch\u00E0o!</h2>\r\n <b>{{currentUser.fullName}}</b>\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a (click)=\"goToPersonal()\"><i class=\"far fa-folder-open\"></i>Trang c\u00E1 nh\u00E2n</a>\r\n <a style=\"background: #fabc01;\" (click)=\"logout()\"><i class=\"far fa-arrow-alt-circle-right\"></i>\u0110\u0103ng\r\n xu\u1EA5t</a>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\"><a style=\"background: #fabc01;\" (click)=\"login()\"><i\r\n class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng nh\u1EADp</a></div>\r\n </div>\r\n\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-icons\">\r\n <div class=\"img-title\">\r\n <img class=\"tn-custom-logo\" [src]=\"config.logo\" [alt]=\"config.owner\">\r\n <div class=\"title\">\r\n <h2>{{config.title}}</h2>\r\n <h1>{{config.owner}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\r\n <span>{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>", styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{position:absolute;display:inline-block;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{border:2px solid #bcdbf5;border-radius:50%;border-top:2px solid #3192e1;width:10px;height:10px;color:#607d8b;font-size:10px;animation:load4 1.3s linear infinite;display:block}.modules-v1{position:fixed;top:0;left:0;z-index:100;display:flex;justify-content:center;align-items:center;width:100vw;height:100vh;background-image:url(/assets/images/background-splash.png);background-repeat:no-repeat;background-position:center;background-size:cover}.modules-v1 div>span{display:inline-block;min-width:100px;height:120px;width:120px;margin:10px;box-shadow:1px 2px 9px 1px #dadada;border-radius:5px;white-space:normal}.modules-v1 div>span>a{height:100%;width:100%;display:inline-block;color:#fff;text-decoration:unset;text-align:center;position:relative;font-weight:700;cursor:pointer;border-radius:5px;display:flex;flex-direction:column;justify-content:space-evenly}.modules-v1 div>span>a>span{display:inline-block;color:#fff;text-decoration:unset;text-align:center;width:100%;line-height:1.2}.modules-v1 div>span>a>i{font-size:3.5em;width:100%}.modules-v1 .div1111-wrapper{overflow:auto;height:420px;margin:0 auto;max-width:700px}.modules-v1 .div1111-wrapper .div1111{white-space:nowrap;width:100%;display:flex;flex-wrap:wrap}.modules-v1 .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover{background:#fabc01;box-shadow:1px 2px 9px 1px #27175685}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.modules-v1 .module-icons{text-align:center;color:#666;width:65%;align-self:stretch;background-color:#f9f4f4eb;display:flex;flex-direction:column;justify-content:space-evenly}.modules-v1 .module-icons .img-title .tn-custom-logo{width:100px}.modules-v1 .module-icons h2{font-size:25px;color:#271756;margin-bottom:15px;margin-top:15px}.modules-v1 .module-icons h1{color:#2f70ac;font-size:35px;margin-top:0;margin-bottom:0}.modules-v1 .welcome-user{text-align:center;width:35%;align-self:stretch;background-color:#2f70aceb;display:flex;flex-direction:column}.modules-v1 .welcome-user .wrp-login{margin:20px auto auto;color:#fff;display:flex;flex-direction:column;align-items:center}.modules-v1 .welcome-user .wrp-login h2{font-size:20px;margin-top:0;margin-bottom:5px;font-weight:500}.modules-v1 .welcome-user .wrp-login b{font-size:25px;text-transform:uppercase;display:block}.modules-v1 .welcome-user .wrp-login .login{display:grid;grid-template-columns:repeat(2,150px);grid-gap:10px;margin-top:30px}.modules-v1 .welcome-user .wrp-login .login a{background:#fff;padding:6px;border-radius:5px;cursor:pointer;display:inline-block;color:#5d5d5d}.modules-v1 .welcome-user .wrp-login .login a i{margin-right:10px}.modules-v1 .welcome-user .profile-image{margin:auto auto 0}.modules-v1 .welcome-user .profile-image img{border-radius:50%;height:200px;width:200px;object-fit:contain;box-shadow:1px 1px 11px 6px #2a659b;background:#fff}.modules-v1 .welcome-user .clock-wrapper{color:#fff;text-align:center;margin-top:auto;margin-bottom:auto}.modules-v1 .welcome-user .clock-wrapper h4{font-size:18px;font-weight:500;margin-top:10px}.modules-v1 .welcome-user .clock-wrapper h1{margin-bottom:0;font-size:40px}.modules-v1 .underconstruction{text-transform:uppercase;color:red;font-weight:700;font-size:4em}@media (max-width: 1368px){.modules-v1 .clock{margin:0 20px;font-size:1.5em}.modules-v1 .data-time{margin:10px 0 20px;font-size:1em}}@media (max-width: 1100px){.modules-v1 .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr))}}@media (max-width: 991px){.modules-v1 .welcome-user .wrp-login .login{grid-template-columns:1fr}}@media (max-width: 768px){.modules-v1{flex-direction:column}.modules-v1 .welcome-user{width:100%;height:270px;flex-direction:row;align-items:center;padding-bottom:87px}.modules-v1 .welcome-user .profile-image{margin-bottom:auto}.modules-v1 .welcome-user .profile-image img{height:150px;width:150px}.modules-v1 .welcome-user .wrp-login{margin-top:auto}.modules-v1 .welcome-user .wrp-login .login{margin-top:20px}.modules-v1 .welcome-user .clock-wrapper{padding-right:15px}.modules-v1 .module-icons{width:100%;height:calc(100% - 270px)}.modules-v1 .module-icons .img-title{background-image:url(/assets/images/logo.png);background-repeat:no-repeat;background-position:center;z-index:9}.modules-v1 .module-icons .img-title img{display:none}.modules-v1 .module-icons .img-title .title{background:#ffffffe6;box-shadow:1px 4px 9px 2px #67a0d4;padding:20px 10px;position:absolute;width:calc(100% - 40px);left:20px;right:20px;top:200px}.modules-v1 .module-icons .img-title .title h2{font-size:30px}.modules-v1 .module-icons .img-title .title h1{font-size:34px}}@media (max-width: 640px){.modules-v1 .welcome-user{display:block;padding-top:20px}.modules-v1 .welcome-user .wrp-login{width:50%;padding:0 20px 0 0;float:right}.modules-v1 .welcome-user .wrp-login h2{margin-bottom:3px;font-size:14px}.modules-v1 .welcome-user .wrp-login b{font-size:14px}.modules-v1 .welcome-user .wrp-login .login{margin-top:10px;display:flex;flex-direction:column;padding:0 15px;text-align:left}.modules-v1 .welcome-user .wrp-login .login a{font-size:14px}.modules-v1 .welcome-user .profile-image{width:50%;float:left}.modules-v1 .welcome-user .profile-image img{height:130px;width:130px;margin-left:35px;display:block}.modules-v1 .welcome-user .clock-wrapper{clear:both;padding-top:10px;padding-right:0}.modules-v1 .welcome-user .clock-wrapper h4{font-size:14px;margin-top:5px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:1.3em}.modules-v1 .module-icons .img-title{background-size:80px 80px}.modules-v1 .module-icons .img-title .title{top:230px}.modules-v1 .module-icons .img-title .title h1{font-size:16px}.modules-v1 .module-icons .img-title .title h2{font-size:16px;margin-top:0}.modules-v1 .module-icons .div1111-wrapper{margin-top:0;height:360px}.modules-v1 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v1 .module-icons div>span{width:100px;height:100px}.modules-v1 .module-icons div>span>a>i{font-size:2.5em;top:10px}}@media (max-width: 425px){.modules-v1 .module-icons .img-title .title{top:225px}.modules-v1 .module-icons .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr))}}@media (max-width: 375px){.modules-v1 .module-icons{height:calc(100% - 250px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{padding:10px;top:220px}.modules-v1 .module-icons .img-title .title h2{margin-bottom:10px}.modules-v1 .module-icons .img-title .title h2,.modules-v1 .module-icons .img-title .title h1{font-size:14px}.modules-v1 .welcome-user{height:250px}}@media (max-width: 360px){.modules-v1 .module-icons{height:calc(100% - 240px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{top:205px;width:calc(100% - 20px);left:10px;right:10px}.modules-v1 .welcome-user{height:240px}.modules-v1 .welcome-user .clock-wrapper{padding-top:0}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em}12.5%{box-shadow:0 -3em,2em -2em 0 .2em,3em 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em,3em 0 0 .2em,2em 2em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0,2em 2em 0 .2em,0 3em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em,0 3em 0 .2em,-2em 2em,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em,-2em 2em 0 .2em,-3em 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em,-3em 0 0 .2em,-2em -2em}87.5%{box-shadow:0 -3em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em,-3em 0,-2em -2em 0 .2em}}\n"], components: [{ type: i8.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.ImgFallbackDirective, selector: "[src-fallback]", inputs: ["src-fallback"], outputs: ["loaded"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "date": i9.DatePipe, "translate": i11.TranslatePipe } });
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: SplashComponentV1Component, decorators: [{
178
+ SplashComponentV1Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SplashComponentV1Component, deps: [{ token: i0.Injector }, { token: i1.EnvironmentService }, { token: i2.PermissionService }, { token: i3.DeviceDetectorService }, { token: i4.UserService }, { token: i5.Router }, { token: i6.AuthenService }, { token: i7.GlobalService }], target: i0.ɵɵFactoryTarget.Component });
179
+ SplashComponentV1Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: SplashComponentV1Component, selector: "splash-component-v1", providers: [ComponentContextService], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v1\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n\r\n <div class=\"wrp-login\">\r\n <h2>Xin ch\u00E0o!</h2>\r\n <b>{{currentUser.fullName}}</b>\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a (click)=\"goToPersonal()\"><i class=\"far fa-folder-open\"></i>Trang c\u00E1 nh\u00E2n</a>\r\n <a style=\"background: #fabc01;\" (click)=\"logout()\"><i class=\"far fa-arrow-alt-circle-right\"></i>\u0110\u0103ng\r\n xu\u1EA5t</a>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\"><a style=\"background: #fabc01;\" (click)=\"login()\"><i\r\n class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng nh\u1EADp</a></div>\r\n </div>\r\n\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-icons\">\r\n <div class=\"img-title\">\r\n <img class=\"tn-custom-logo\" [src]=\"config.logo\" [alt]=\"config.owner\">\r\n <div class=\"title\">\r\n <h2>{{config.title}}</h2>\r\n <h1>{{config.owner}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\r\n <span>{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>", styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{position:absolute;display:inline-block;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{border:2px solid #bcdbf5;border-radius:50%;border-top:2px solid #3192e1;width:10px;height:10px;color:#607d8b;font-size:10px;animation:load4 1.3s linear infinite;display:block}.modules-v1{position:fixed;top:0;left:0;z-index:100;display:flex;justify-content:center;align-items:center;width:100vw;height:100vh;background-image:url(/assets/images/background-splash.png);background-repeat:no-repeat;background-position:center;background-size:cover}.modules-v1 div>span{display:inline-block;min-width:100px;height:120px;width:120px;margin:10px;box-shadow:1px 2px 9px 1px #dadada;border-radius:5px;white-space:normal}.modules-v1 div>span>a{height:100%;width:100%;display:inline-block;color:#fff;text-decoration:unset;text-align:center;position:relative;font-weight:700;cursor:pointer;border-radius:5px;display:flex;flex-direction:column;justify-content:space-evenly}.modules-v1 div>span>a>span{display:inline-block;color:#fff;text-decoration:unset;text-align:center;width:100%;line-height:1.2}.modules-v1 div>span>a>i{font-size:3.5em;width:100%}.modules-v1 .div1111-wrapper{overflow:auto;height:420px;margin:0 auto;max-width:700px}.modules-v1 .div1111-wrapper .div1111{white-space:nowrap;width:100%;display:flex;flex-wrap:wrap}.modules-v1 .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover{background:#fabc01;box-shadow:1px 2px 9px 1px #27175685}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.modules-v1 .module-icons{text-align:center;color:#666;width:65%;align-self:stretch;background-color:#f9f4f4eb;display:flex;flex-direction:column;justify-content:space-evenly}.modules-v1 .module-icons .img-title .tn-custom-logo{width:100px}.modules-v1 .module-icons h2{font-size:25px;color:#271756;margin-bottom:15px;margin-top:15px}.modules-v1 .module-icons h1{color:#2f70ac;font-size:35px;margin-top:0;margin-bottom:0}.modules-v1 .welcome-user{text-align:center;width:35%;align-self:stretch;background-color:#2f70aceb;display:flex;flex-direction:column}.modules-v1 .welcome-user .wrp-login{margin:20px auto auto;color:#fff;display:flex;flex-direction:column;align-items:center}.modules-v1 .welcome-user .wrp-login h2{font-size:20px;margin-top:0;margin-bottom:5px;font-weight:500}.modules-v1 .welcome-user .wrp-login b{font-size:25px;text-transform:uppercase;display:block}.modules-v1 .welcome-user .wrp-login .login{display:grid;grid-template-columns:repeat(2,150px);grid-gap:10px;margin-top:30px}.modules-v1 .welcome-user .wrp-login .login a{background:#fff;padding:6px;border-radius:5px;cursor:pointer;display:inline-block;color:#5d5d5d}.modules-v1 .welcome-user .wrp-login .login a i{margin-right:10px}.modules-v1 .welcome-user .profile-image{margin:auto auto 0}.modules-v1 .welcome-user .profile-image img{border-radius:50%;height:200px;width:200px;object-fit:contain;box-shadow:1px 1px 11px 6px #2a659b;background:#fff}.modules-v1 .welcome-user .clock-wrapper{color:#fff;text-align:center;margin-top:auto;margin-bottom:auto}.modules-v1 .welcome-user .clock-wrapper h4{font-size:18px;font-weight:500;margin-top:10px}.modules-v1 .welcome-user .clock-wrapper h1{margin-bottom:0;font-size:40px}.modules-v1 .underconstruction{text-transform:uppercase;color:red;font-weight:700;font-size:4em}@media (max-width: 1368px){.modules-v1 .clock{margin:0 20px;font-size:1.5em}.modules-v1 .data-time{margin:10px 0 20px;font-size:1em}}@media (max-width: 1100px){.modules-v1 .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr))}}@media (max-width: 991px){.modules-v1 .welcome-user .wrp-login .login{grid-template-columns:1fr}}@media (max-width: 768px){.modules-v1{flex-direction:column}.modules-v1 .welcome-user{width:100%;height:270px;flex-direction:row;align-items:center;padding-bottom:87px}.modules-v1 .welcome-user .profile-image{margin-bottom:auto}.modules-v1 .welcome-user .profile-image img{height:150px;width:150px}.modules-v1 .welcome-user .wrp-login{margin-top:auto}.modules-v1 .welcome-user .wrp-login .login{margin-top:20px}.modules-v1 .welcome-user .clock-wrapper{padding-right:15px}.modules-v1 .module-icons{width:100%;height:calc(100% - 270px)}.modules-v1 .module-icons .img-title{background-image:url(/assets/images/logo.png);background-repeat:no-repeat;background-position:center;z-index:9}.modules-v1 .module-icons .img-title img{display:none}.modules-v1 .module-icons .img-title .title{background:rgba(255,255,255,.9019607843);box-shadow:1px 4px 9px 2px #67a0d4;padding:20px 10px;position:absolute;width:calc(100% - 40px);left:20px;right:20px;top:200px}.modules-v1 .module-icons .img-title .title h2{font-size:30px}.modules-v1 .module-icons .img-title .title h1{font-size:34px}}@media (max-width: 640px){.modules-v1 .welcome-user{display:block;padding-top:20px}.modules-v1 .welcome-user .wrp-login{width:50%;padding:0 20px 0 0;float:right}.modules-v1 .welcome-user .wrp-login h2{margin-bottom:3px;font-size:14px}.modules-v1 .welcome-user .wrp-login b{font-size:14px}.modules-v1 .welcome-user .wrp-login .login{margin-top:10px;display:flex;flex-direction:column;padding:0 15px;text-align:left}.modules-v1 .welcome-user .wrp-login .login a{font-size:14px}.modules-v1 .welcome-user .profile-image{width:50%;float:left}.modules-v1 .welcome-user .profile-image img{height:130px;width:130px;margin-left:35px;display:block}.modules-v1 .welcome-user .clock-wrapper{clear:both;padding-top:10px;padding-right:0}.modules-v1 .welcome-user .clock-wrapper h4{font-size:14px;margin-top:5px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:1.3em}.modules-v1 .module-icons .img-title{background-size:80px 80px}.modules-v1 .module-icons .img-title .title{top:230px}.modules-v1 .module-icons .img-title .title h1{font-size:16px}.modules-v1 .module-icons .img-title .title h2{font-size:16px;margin-top:0}.modules-v1 .module-icons .div1111-wrapper{margin-top:0;height:360px}.modules-v1 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v1 .module-icons div>span{width:100px;height:100px}.modules-v1 .module-icons div>span>a>i{font-size:2.5em;top:10px}}@media (max-width: 425px){.modules-v1 .module-icons .img-title .title{top:225px}.modules-v1 .module-icons .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr))}}@media (max-width: 375px){.modules-v1 .module-icons{height:calc(100% - 250px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{padding:10px;top:220px}.modules-v1 .module-icons .img-title .title h2{margin-bottom:10px}.modules-v1 .module-icons .img-title .title h2,.modules-v1 .module-icons .img-title .title h1{font-size:14px}.modules-v1 .welcome-user{height:250px}}@media (max-width: 360px){.modules-v1 .module-icons{height:calc(100% - 240px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{top:205px;width:calc(100% - 20px);left:10px;right:10px}.modules-v1 .welcome-user{height:240px}.modules-v1 .welcome-user .clock-wrapper{padding-top:0}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em}12.5%{box-shadow:0 -3em,2em -2em 0 .2em,3em 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em,3em 0 0 .2em,2em 2em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0,2em 2em 0 .2em,0 3em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em,0 3em 0 .2em,-2em 2em,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em,-2em 2em 0 .2em,-3em 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em,-3em 0 0 .2em,-2em -2em}87.5%{box-shadow:0 -3em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em,-3em 0,-2em -2em 0 .2em}}\n"], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i9.ImgFallbackDirective, selector: "[src-fallback]", inputs: ["src-fallback"], outputs: ["loaded"] }, { kind: "component", type: i10.TnCustomScrollbarComponent, selector: "tn-custom-scrollbar", inputs: ["style", "useDefaultScrollBar", "autoMode", "class", "config", "whiteBackGround", "showScrollHorizontal"], outputs: ["scrollY", "scrollUp", "scrollDown", "scrollLeft", "scrollRight", "scrollYReachEnd", "scrollYReachStart", "scrollXReachEnd", "scrollXReachStart"] }, { kind: "pipe", type: i8.DatePipe, name: "date" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SplashComponentV1Component, decorators: [{
181
181
  type: Component,
182
- args: [{ selector: 'splash-component-v1', providers: [ComponentContextService], template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v1\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n\r\n <div class=\"wrp-login\">\r\n <h2>Xin ch\u00E0o!</h2>\r\n <b>{{currentUser.fullName}}</b>\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a (click)=\"goToPersonal()\"><i class=\"far fa-folder-open\"></i>Trang c\u00E1 nh\u00E2n</a>\r\n <a style=\"background: #fabc01;\" (click)=\"logout()\"><i class=\"far fa-arrow-alt-circle-right\"></i>\u0110\u0103ng\r\n xu\u1EA5t</a>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\"><a style=\"background: #fabc01;\" (click)=\"login()\"><i\r\n class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng nh\u1EADp</a></div>\r\n </div>\r\n\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-icons\">\r\n <div class=\"img-title\">\r\n <img class=\"tn-custom-logo\" [src]=\"config.logo\" [alt]=\"config.owner\">\r\n <div class=\"title\">\r\n <h2>{{config.title}}</h2>\r\n <h1>{{config.owner}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\r\n <span>{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>", styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{position:absolute;display:inline-block;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{border:2px solid #bcdbf5;border-radius:50%;border-top:2px solid #3192e1;width:10px;height:10px;color:#607d8b;font-size:10px;animation:load4 1.3s linear infinite;display:block}.modules-v1{position:fixed;top:0;left:0;z-index:100;display:flex;justify-content:center;align-items:center;width:100vw;height:100vh;background-image:url(/assets/images/background-splash.png);background-repeat:no-repeat;background-position:center;background-size:cover}.modules-v1 div>span{display:inline-block;min-width:100px;height:120px;width:120px;margin:10px;box-shadow:1px 2px 9px 1px #dadada;border-radius:5px;white-space:normal}.modules-v1 div>span>a{height:100%;width:100%;display:inline-block;color:#fff;text-decoration:unset;text-align:center;position:relative;font-weight:700;cursor:pointer;border-radius:5px;display:flex;flex-direction:column;justify-content:space-evenly}.modules-v1 div>span>a>span{display:inline-block;color:#fff;text-decoration:unset;text-align:center;width:100%;line-height:1.2}.modules-v1 div>span>a>i{font-size:3.5em;width:100%}.modules-v1 .div1111-wrapper{overflow:auto;height:420px;margin:0 auto;max-width:700px}.modules-v1 .div1111-wrapper .div1111{white-space:nowrap;width:100%;display:flex;flex-wrap:wrap}.modules-v1 .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover{background:#fabc01;box-shadow:1px 2px 9px 1px #27175685}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.modules-v1 .module-icons{text-align:center;color:#666;width:65%;align-self:stretch;background-color:#f9f4f4eb;display:flex;flex-direction:column;justify-content:space-evenly}.modules-v1 .module-icons .img-title .tn-custom-logo{width:100px}.modules-v1 .module-icons h2{font-size:25px;color:#271756;margin-bottom:15px;margin-top:15px}.modules-v1 .module-icons h1{color:#2f70ac;font-size:35px;margin-top:0;margin-bottom:0}.modules-v1 .welcome-user{text-align:center;width:35%;align-self:stretch;background-color:#2f70aceb;display:flex;flex-direction:column}.modules-v1 .welcome-user .wrp-login{margin:20px auto auto;color:#fff;display:flex;flex-direction:column;align-items:center}.modules-v1 .welcome-user .wrp-login h2{font-size:20px;margin-top:0;margin-bottom:5px;font-weight:500}.modules-v1 .welcome-user .wrp-login b{font-size:25px;text-transform:uppercase;display:block}.modules-v1 .welcome-user .wrp-login .login{display:grid;grid-template-columns:repeat(2,150px);grid-gap:10px;margin-top:30px}.modules-v1 .welcome-user .wrp-login .login a{background:#fff;padding:6px;border-radius:5px;cursor:pointer;display:inline-block;color:#5d5d5d}.modules-v1 .welcome-user .wrp-login .login a i{margin-right:10px}.modules-v1 .welcome-user .profile-image{margin:auto auto 0}.modules-v1 .welcome-user .profile-image img{border-radius:50%;height:200px;width:200px;object-fit:contain;box-shadow:1px 1px 11px 6px #2a659b;background:#fff}.modules-v1 .welcome-user .clock-wrapper{color:#fff;text-align:center;margin-top:auto;margin-bottom:auto}.modules-v1 .welcome-user .clock-wrapper h4{font-size:18px;font-weight:500;margin-top:10px}.modules-v1 .welcome-user .clock-wrapper h1{margin-bottom:0;font-size:40px}.modules-v1 .underconstruction{text-transform:uppercase;color:red;font-weight:700;font-size:4em}@media (max-width: 1368px){.modules-v1 .clock{margin:0 20px;font-size:1.5em}.modules-v1 .data-time{margin:10px 0 20px;font-size:1em}}@media (max-width: 1100px){.modules-v1 .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr))}}@media (max-width: 991px){.modules-v1 .welcome-user .wrp-login .login{grid-template-columns:1fr}}@media (max-width: 768px){.modules-v1{flex-direction:column}.modules-v1 .welcome-user{width:100%;height:270px;flex-direction:row;align-items:center;padding-bottom:87px}.modules-v1 .welcome-user .profile-image{margin-bottom:auto}.modules-v1 .welcome-user .profile-image img{height:150px;width:150px}.modules-v1 .welcome-user .wrp-login{margin-top:auto}.modules-v1 .welcome-user .wrp-login .login{margin-top:20px}.modules-v1 .welcome-user .clock-wrapper{padding-right:15px}.modules-v1 .module-icons{width:100%;height:calc(100% - 270px)}.modules-v1 .module-icons .img-title{background-image:url(/assets/images/logo.png);background-repeat:no-repeat;background-position:center;z-index:9}.modules-v1 .module-icons .img-title img{display:none}.modules-v1 .module-icons .img-title .title{background:#ffffffe6;box-shadow:1px 4px 9px 2px #67a0d4;padding:20px 10px;position:absolute;width:calc(100% - 40px);left:20px;right:20px;top:200px}.modules-v1 .module-icons .img-title .title h2{font-size:30px}.modules-v1 .module-icons .img-title .title h1{font-size:34px}}@media (max-width: 640px){.modules-v1 .welcome-user{display:block;padding-top:20px}.modules-v1 .welcome-user .wrp-login{width:50%;padding:0 20px 0 0;float:right}.modules-v1 .welcome-user .wrp-login h2{margin-bottom:3px;font-size:14px}.modules-v1 .welcome-user .wrp-login b{font-size:14px}.modules-v1 .welcome-user .wrp-login .login{margin-top:10px;display:flex;flex-direction:column;padding:0 15px;text-align:left}.modules-v1 .welcome-user .wrp-login .login a{font-size:14px}.modules-v1 .welcome-user .profile-image{width:50%;float:left}.modules-v1 .welcome-user .profile-image img{height:130px;width:130px;margin-left:35px;display:block}.modules-v1 .welcome-user .clock-wrapper{clear:both;padding-top:10px;padding-right:0}.modules-v1 .welcome-user .clock-wrapper h4{font-size:14px;margin-top:5px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:1.3em}.modules-v1 .module-icons .img-title{background-size:80px 80px}.modules-v1 .module-icons .img-title .title{top:230px}.modules-v1 .module-icons .img-title .title h1{font-size:16px}.modules-v1 .module-icons .img-title .title h2{font-size:16px;margin-top:0}.modules-v1 .module-icons .div1111-wrapper{margin-top:0;height:360px}.modules-v1 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v1 .module-icons div>span{width:100px;height:100px}.modules-v1 .module-icons div>span>a>i{font-size:2.5em;top:10px}}@media (max-width: 425px){.modules-v1 .module-icons .img-title .title{top:225px}.modules-v1 .module-icons .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr))}}@media (max-width: 375px){.modules-v1 .module-icons{height:calc(100% - 250px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{padding:10px;top:220px}.modules-v1 .module-icons .img-title .title h2{margin-bottom:10px}.modules-v1 .module-icons .img-title .title h2,.modules-v1 .module-icons .img-title .title h1{font-size:14px}.modules-v1 .welcome-user{height:250px}}@media (max-width: 360px){.modules-v1 .module-icons{height:calc(100% - 240px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{top:205px;width:calc(100% - 20px);left:10px;right:10px}.modules-v1 .welcome-user{height:240px}.modules-v1 .welcome-user .clock-wrapper{padding-top:0}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em}12.5%{box-shadow:0 -3em,2em -2em 0 .2em,3em 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em,3em 0 0 .2em,2em 2em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0,2em 2em 0 .2em,0 3em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em,0 3em 0 .2em,-2em 2em,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em,-2em 2em 0 .2em,-3em 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em,-3em 0 0 .2em,-2em -2em}87.5%{box-shadow:0 -3em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em,-3em 0,-2em -2em 0 .2em}}\n"] }]
182
+ args: [{ selector: 'splash-component-v1', providers: [ComponentContextService], template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v1\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n\r\n <div class=\"wrp-login\">\r\n <h2>Xin ch\u00E0o!</h2>\r\n <b>{{currentUser.fullName}}</b>\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a (click)=\"goToPersonal()\"><i class=\"far fa-folder-open\"></i>Trang c\u00E1 nh\u00E2n</a>\r\n <a style=\"background: #fabc01;\" (click)=\"logout()\"><i class=\"far fa-arrow-alt-circle-right\"></i>\u0110\u0103ng\r\n xu\u1EA5t</a>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\"><a style=\"background: #fabc01;\" (click)=\"login()\"><i\r\n class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng nh\u1EADp</a></div>\r\n </div>\r\n\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-icons\">\r\n <div class=\"img-title\">\r\n <img class=\"tn-custom-logo\" [src]=\"config.logo\" [alt]=\"config.owner\">\r\n <div class=\"title\">\r\n <h2>{{config.title}}</h2>\r\n <h1>{{config.owner}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\r\n <span>{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>", styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{position:absolute;display:inline-block;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{border:2px solid #bcdbf5;border-radius:50%;border-top:2px solid #3192e1;width:10px;height:10px;color:#607d8b;font-size:10px;animation:load4 1.3s linear infinite;display:block}.modules-v1{position:fixed;top:0;left:0;z-index:100;display:flex;justify-content:center;align-items:center;width:100vw;height:100vh;background-image:url(/assets/images/background-splash.png);background-repeat:no-repeat;background-position:center;background-size:cover}.modules-v1 div>span{display:inline-block;min-width:100px;height:120px;width:120px;margin:10px;box-shadow:1px 2px 9px 1px #dadada;border-radius:5px;white-space:normal}.modules-v1 div>span>a{height:100%;width:100%;display:inline-block;color:#fff;text-decoration:unset;text-align:center;position:relative;font-weight:700;cursor:pointer;border-radius:5px;display:flex;flex-direction:column;justify-content:space-evenly}.modules-v1 div>span>a>span{display:inline-block;color:#fff;text-decoration:unset;text-align:center;width:100%;line-height:1.2}.modules-v1 div>span>a>i{font-size:3.5em;width:100%}.modules-v1 .div1111-wrapper{overflow:auto;height:420px;margin:0 auto;max-width:700px}.modules-v1 .div1111-wrapper .div1111{white-space:nowrap;width:100%;display:flex;flex-wrap:wrap}.modules-v1 .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover{background:#fabc01;box-shadow:1px 2px 9px 1px #27175685}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.modules-v1 .module-icons{text-align:center;color:#666;width:65%;align-self:stretch;background-color:#f9f4f4eb;display:flex;flex-direction:column;justify-content:space-evenly}.modules-v1 .module-icons .img-title .tn-custom-logo{width:100px}.modules-v1 .module-icons h2{font-size:25px;color:#271756;margin-bottom:15px;margin-top:15px}.modules-v1 .module-icons h1{color:#2f70ac;font-size:35px;margin-top:0;margin-bottom:0}.modules-v1 .welcome-user{text-align:center;width:35%;align-self:stretch;background-color:#2f70aceb;display:flex;flex-direction:column}.modules-v1 .welcome-user .wrp-login{margin:20px auto auto;color:#fff;display:flex;flex-direction:column;align-items:center}.modules-v1 .welcome-user .wrp-login h2{font-size:20px;margin-top:0;margin-bottom:5px;font-weight:500}.modules-v1 .welcome-user .wrp-login b{font-size:25px;text-transform:uppercase;display:block}.modules-v1 .welcome-user .wrp-login .login{display:grid;grid-template-columns:repeat(2,150px);grid-gap:10px;margin-top:30px}.modules-v1 .welcome-user .wrp-login .login a{background:#fff;padding:6px;border-radius:5px;cursor:pointer;display:inline-block;color:#5d5d5d}.modules-v1 .welcome-user .wrp-login .login a i{margin-right:10px}.modules-v1 .welcome-user .profile-image{margin:auto auto 0}.modules-v1 .welcome-user .profile-image img{border-radius:50%;height:200px;width:200px;object-fit:contain;box-shadow:1px 1px 11px 6px #2a659b;background:#fff}.modules-v1 .welcome-user .clock-wrapper{color:#fff;text-align:center;margin-top:auto;margin-bottom:auto}.modules-v1 .welcome-user .clock-wrapper h4{font-size:18px;font-weight:500;margin-top:10px}.modules-v1 .welcome-user .clock-wrapper h1{margin-bottom:0;font-size:40px}.modules-v1 .underconstruction{text-transform:uppercase;color:red;font-weight:700;font-size:4em}@media (max-width: 1368px){.modules-v1 .clock{margin:0 20px;font-size:1.5em}.modules-v1 .data-time{margin:10px 0 20px;font-size:1em}}@media (max-width: 1100px){.modules-v1 .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr))}}@media (max-width: 991px){.modules-v1 .welcome-user .wrp-login .login{grid-template-columns:1fr}}@media (max-width: 768px){.modules-v1{flex-direction:column}.modules-v1 .welcome-user{width:100%;height:270px;flex-direction:row;align-items:center;padding-bottom:87px}.modules-v1 .welcome-user .profile-image{margin-bottom:auto}.modules-v1 .welcome-user .profile-image img{height:150px;width:150px}.modules-v1 .welcome-user .wrp-login{margin-top:auto}.modules-v1 .welcome-user .wrp-login .login{margin-top:20px}.modules-v1 .welcome-user .clock-wrapper{padding-right:15px}.modules-v1 .module-icons{width:100%;height:calc(100% - 270px)}.modules-v1 .module-icons .img-title{background-image:url(/assets/images/logo.png);background-repeat:no-repeat;background-position:center;z-index:9}.modules-v1 .module-icons .img-title img{display:none}.modules-v1 .module-icons .img-title .title{background:rgba(255,255,255,.9019607843);box-shadow:1px 4px 9px 2px #67a0d4;padding:20px 10px;position:absolute;width:calc(100% - 40px);left:20px;right:20px;top:200px}.modules-v1 .module-icons .img-title .title h2{font-size:30px}.modules-v1 .module-icons .img-title .title h1{font-size:34px}}@media (max-width: 640px){.modules-v1 .welcome-user{display:block;padding-top:20px}.modules-v1 .welcome-user .wrp-login{width:50%;padding:0 20px 0 0;float:right}.modules-v1 .welcome-user .wrp-login h2{margin-bottom:3px;font-size:14px}.modules-v1 .welcome-user .wrp-login b{font-size:14px}.modules-v1 .welcome-user .wrp-login .login{margin-top:10px;display:flex;flex-direction:column;padding:0 15px;text-align:left}.modules-v1 .welcome-user .wrp-login .login a{font-size:14px}.modules-v1 .welcome-user .profile-image{width:50%;float:left}.modules-v1 .welcome-user .profile-image img{height:130px;width:130px;margin-left:35px;display:block}.modules-v1 .welcome-user .clock-wrapper{clear:both;padding-top:10px;padding-right:0}.modules-v1 .welcome-user .clock-wrapper h4{font-size:14px;margin-top:5px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:1.3em}.modules-v1 .module-icons .img-title{background-size:80px 80px}.modules-v1 .module-icons .img-title .title{top:230px}.modules-v1 .module-icons .img-title .title h1{font-size:16px}.modules-v1 .module-icons .img-title .title h2{font-size:16px;margin-top:0}.modules-v1 .module-icons .div1111-wrapper{margin-top:0;height:360px}.modules-v1 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v1 .module-icons div>span{width:100px;height:100px}.modules-v1 .module-icons div>span>a>i{font-size:2.5em;top:10px}}@media (max-width: 425px){.modules-v1 .module-icons .img-title .title{top:225px}.modules-v1 .module-icons .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr))}}@media (max-width: 375px){.modules-v1 .module-icons{height:calc(100% - 250px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{padding:10px;top:220px}.modules-v1 .module-icons .img-title .title h2{margin-bottom:10px}.modules-v1 .module-icons .img-title .title h2,.modules-v1 .module-icons .img-title .title h1{font-size:14px}.modules-v1 .welcome-user{height:250px}}@media (max-width: 360px){.modules-v1 .module-icons{height:calc(100% - 240px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{top:205px;width:calc(100% - 20px);left:10px;right:10px}.modules-v1 .welcome-user{height:240px}.modules-v1 .welcome-user .clock-wrapper{padding-top:0}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em}12.5%{box-shadow:0 -3em,2em -2em 0 .2em,3em 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em,3em 0 0 .2em,2em 2em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0,2em 2em 0 .2em,0 3em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em,0 3em 0 .2em,-2em 2em,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em,-2em 2em 0 .2em,-3em 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em,-3em 0 0 .2em,-2em -2em}87.5%{box-shadow:0 -3em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em,-3em 0,-2em -2em 0 .2em}}\n"] }]
183
183
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.EnvironmentService }, { type: i2.PermissionService }, { type: i3.DeviceDetectorService }, { type: i4.UserService }, { type: i5.Router }, { type: i6.AuthenService }, { type: i7.GlobalService }]; } });
184
184
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsYXNoLWNvbXBvbmVudC12MS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3NwbGFzaC1jb21wb25lbnQvc3BsYXNoLWNvbXBvbmVudC12MS9zcGxhc2gtY29tcG9uZW50LXYxLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvc3BsYXNoLWNvbXBvbmVudC9zcGxhc2gtY29tcG9uZW50LXYxL3NwbGFzaC1jb21wb25lbnQtdjEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFHdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWE5RSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsYUFBYTtJQWF6RCxZQUNJLFFBQWtCLEVBQ1YsbUJBQXVDLEVBQ3ZDLGtCQUFxQyxFQUNyQyxzQkFBNkMsRUFDN0MsWUFBeUIsRUFDekIsT0FBZSxFQUNmLGNBQTZCLEVBQzdCLGNBQTZCO1FBRXJDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVJSLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixtQkFBYyxHQUFkLGNB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cEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDOzt1SEF6TFEsMEJBQTBCOzJHQUExQiwwQkFBMEIsOENBRnhCLENBQUMsdUJBQXVCLENBQUMsaURDaEJ4Qyx5aUZBMkRjOzJGRHpDRCwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0kscUJBQXFCLGFBR3BCLENBQUMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9jb21wb25lbnQtYmFzZSc7XHJcbmltcG9ydCB7IENvbUN0eENvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3MvY29tcG9uZW50LWNvbnRleHQuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBBdXRoZW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wZXJtaXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc3BsYXNoLWNvbXBvbmVudC12MScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3BsYXNoLWNvbXBvbmVudC12MS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zcGxhc2gtY29tcG9uZW50LXYxLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNwbGFzaENvbXBvbmVudFYxQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIGRlZmF1bHRBdmF0YXIgPSAnJztcclxuICAgIGNvbmZpZzogYW55ID0ge307XHJcbiAgICBhcHBTd2l0Y2hlckl0ZW1zID0gW107XHJcbiAgICBjdXJyZW50VXNlcjogYW55O1xyXG4gICAgbG9hZGVkID0gZmFsc2U7XHJcbiAgICBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBzaG93RGVmYXVsdFNldHRpbmcgPSBmYWxzZTtcclxuICAgIGZpbGVBcGkgPSAnJztcclxuICAgIGlzT25Nb2JpbGUgPSBmYWxzZTtcclxuXHJcbiAgICB1bmRlcmNvbnN0cnVjdGlvbjogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF9lbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9wZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgX2F1dGhlblNlcnZpY2U6IEF1dGhlblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZ2xvYmFsU2VydmljZTogR2xvYmFsU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuZmlyZUV2ZW50KCdNQUlOX0NPTlRFTlRfT05MWScsIHRydWUpO1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdEF2YXRhciA9IHRoaXMuX2Vudmlyb25tZW50U2VydmljZS5nZXREZWZhdWx0TWFsZUF2YXRhcigpO1xyXG4gICAgICAgIHRoaXMuY29uZmlnLnRpdGxlID0gdGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLmdldFRpdGxlKCk7XHJcbiAgICAgICAgdGhpcy5jb25maWcubG9nbyA9IHRoaXMuX2Vudmlyb25tZW50U2VydmljZS5nZXRMb2dvKCk7XHJcbiAgICAgICAgdGhpcy5jb25maWcub3duZXIgPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0T3duZXIoKTtcclxuICAgICAgICB0aGlzLmZpbGVBcGkgPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SHR0cFNlcnZpY2VFbmRwb2ludCgnZmlsZScpO1xyXG4gICAgICAgIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnJvb3RDb250ZXh0LmRhdGEuY3VycmVudEFwcE1ldGFkYXRhICYmIHRoaXMucm9vdENvbnRleHQuZGF0YS5jdXJyZW50QXBwTWV0YWRhdGEgJiYgdGhpcy5yb290Q29udGV4dC5kYXRhLmN1cnJlbnRBcHBNZXRhZGF0YS5zaG93RGVmYXVsdFNldHRpbmcgIT0gbnVsbCAmJiB0aGlzLnJvb3RDb250ZXh0LmRhdGEuY3VycmVudEFwcE1ldGFkYXRhLnNob3dEZWZhdWx0U2V0dGluZyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93RGVmYXVsdFNldHRpbmcgPSB0aGlzLnJvb3RDb250ZXh0LmRhdGEuY3VycmVudEFwcE1ldGFkYXRhLnNob3dEZWZhdWx0U2V0dGluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0RlZmF1bHRTZXR0aW5nID0gdGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLmdldFNob3dEZWZhdWx0U2V0dGluZygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ29uZmlnIGZvciBhdXRoZW50aWNhdGlvblxyXG4gICAgICAgIHRoaXMuX2dsb2JhbFNlcnZpY2Uuc2V0SGVhZGVyU3RhdGUoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuX2dsb2JhbFNlcnZpY2Uuc2V0TWVudVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgICAgICAgdGhpcy51bmRlcmNvbnN0cnVjdGlvbiA9IHRoaXMuX2Vudmlyb25tZW50U2VydmljZS5nZXRVbmRlcmNvbnN0cnVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9kZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNNb2JpbGUoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzT25Nb2JpbGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucm9vdENvbnRleHQuZGF0YS5jdXJyZW50VXNlcikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yb290Q29udGV4dC5kYXRhLmN1cnJlbnRVc2VyLmdlbmRlciA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRBdmF0YXIgPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RGVmYXVsdEZlbWFsZUF2YXRhcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0QXZhdGFyID0gdGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLmdldERlZmF1bHRNYWxlQXZhdGFyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQucmVwbGF5U3Vic2NyaWJlKENvbUN0eENvbnN0YW50cy5ST09ULlVTRVJfTE9BREVELCBycyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFVzZXIgPSB0aGlzLl91c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRBcHBNZXRhZGF0YSgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnJvb3RNb2RlbC5hbGxvd0Fub255bW91cykge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZEFwcE1ldGFkYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxvYWRBcHBNZXRhZGF0YSgpIHtcclxuICAgICAgICBjb25zdCBwcm1zQXBwU3dpY2hlckl0ZW0gPSBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IFtdO1xyXG4gICAgICAgICAgICBjb25zdCBsc3RBcHAgPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0TGlzdEFwcCgpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGluZCBpbiBsc3RBcHApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBsc3RBcHBbaW5kXTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yb290TW9kZWwuYWxsb3dBbm9ueW1vdXMgJiYgZWxlbWVudC5hbGxvd0Fub255bW91cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jdXJyZW50VXNlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQXV0aG9yaXplZCA9IGF3YWl0IHRoaXMuX3Blcm1pc3Npb25TZXJ2aWNlLmlzQXV0aG9yaXplZChlbGVtZW50LmNvZGUsIGAke2VsZW1lbnQuY29kZX0uTU9EVUxFLiR7ZWxlbWVudC5jb2RlfWAudG9VcHBlckNhc2UoKSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXV0aG9yaXplZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoYXJyKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcHJtc0FwcFN3aWNoZXJJdGVtLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFwcFN3aXRjaGVySXRlbXMubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgaWYgKHJzKSB7XHJcbiAgICAgICAgICAgICAgICAoPGFueT5ycykuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50VXNlcikgeyAvLyBhbGxvdyBhbm9ueW1vdXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwU3dpdGNoZXJJdGVtcy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFVzZXIubWFOZ3VvaUhvYyAmJiB0aGlzLmN1cnJlbnRVc2VyLmlzc3VwZXJ1c2VyLnRvTG93ZXJDYXNlKCkgIT0gJ3RydWUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZS50b0xvd2VyQ2FzZSgpID09ICdzdicgfHwgZWxlbWVudC5jb2RlLnRvTG93ZXJDYXNlKCkgPT0gJ3VzZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwU3dpdGNoZXJJdGVtcy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwU3dpdGNoZXJJdGVtcy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2hBcHAoaXRlbSkge1xyXG4gICAgICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGl0ZW0udGFyZ2V0ID09ICdfYmxhbmsnKSB7XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5kZWZhdWx0UmVkaXJlY3QpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uZGVmYXVsdFJlZGlyZWN0ID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIE5hbU5IIHRpcCB0cmljayBjaG8gbW90IHNvIG1heSBiaSBsb2kgaXRlbS51cmwgPSAnbWFpbicgLT4gcmVkaXJlY3Qgc2FpIGtoaSBjbGljayB2YW8gY2FjIHBoYW4gaGVcclxuICAgICAgICAgICAgaWYgKGl0ZW0udXJsID09IGl0ZW0uZGVmYXVsdFJlZGlyZWN0KSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnVybCA9ICcvJyArIGl0ZW0uY29kZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgbGluayA9IGAke2l0ZW0udXJsfS8ke2l0ZW0uZGVmYXVsdFJlZGlyZWN0fWA7XHJcbiAgICAgICAgICAgIGlmICghbGluay5zdGFydHNXaXRoKCcvJykgJiYgIWxpbmsuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgICAgICAgICAgICBsaW5rID0gJy8nICsgbGluaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0b3AubG9jYXRpb24uaHJlZiA9IGxpbms7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5kZWZhdWx0UmVkaXJlY3QgIT0gJycgJiYgIXRoaXMucm9vdENvbnRleHQuZGF0YS5mbGFncy5tZW51VG9wT3Blbm5pbmcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKGl0ZW0uZGVmYXVsdFJlZGlyZWN0KTtcclxuICAgICAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQuZGF0YS5jdXJyZW50QXBwTWV0YWRhdGEgPSB0aGlzLl9lbnZpcm9ubWVudFNlcnZpY2UuZ2V0T2JqZWN0QXBwKGl0ZW0uY29kZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yb290Q29udGV4dC5kYXRhLmN1cnJlbnRBcHBNZXRhZGF0YSAmJiB0aGlzLnJvb3RDb250ZXh0LmRhdGEuY3VycmVudEFwcE1ldGFkYXRhLnNob3dEZWZhdWx0U2V0dGluZyAhPSB1bmRlZmluZWQgJiYgdGhpcy5yb290Q29udGV4dC5kYXRhLmN1cnJlbnRBcHBNZXRhZGF0YS5zaG93RGVmYXVsdFNldHRpbmcgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0RlZmF1bHRTZXR0aW5nID0gdGhpcy5yb290Q29udGV4dC5kYXRhLmN1cnJlbnRBcHBNZXRhZGF0YS5zaG93RGVmYXVsdFNldHRpbmcgJiYgdGhpcy5zaG93RGVmYXVsdFNldHRpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbG9nb3V0KCkge1xyXG4gICAgICAgIHRoaXMuX2F1dGhlblNlcnZpY2UubG9nb3V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ29Ub1BlcnNvbmFsKCkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJNZW51ID0gdGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLmdldE9iamVjdEFwcCgnVVNFUicpO1xyXG4gICAgICAgIHRoaXMuc3dpdGNoQXBwKHVzZXJNZW51KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDdXJyZW50VXNlckF2YXRhcigpIHtcclxuICAgICAgICBpZiAodGhpcy5yb290Q29udGV4dC5kYXRhLmN1cnJlbnRVc2VyICYmIHRoaXMucm9vdENvbnRleHQuZGF0YS5jdXJyZW50VXNlci5hdmF0YXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuZmlsZUFwaX0vZmlsZS9wdWJsaWMvJHt0aGlzLnJvb3RDb250ZXh0LmRhdGEuY3VycmVudFVzZXIuYXZhdGFyfS9Eb3dubG9hZGA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0QXZhdGFyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkYXlzSW5XZWVrID0gWydDaOG7pyBuaOG6rXQnLCAnVGjhu6kgMicsICdUaOG7qSAzJywgJ1Ro4bupIDQnLCAnVGjhu6kgNScsICdUaOG7qSA2JywgJ1Ro4bupIDcnXTtcclxuICAgIGdldE5nYXlUcm9uZ1R1YW4oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF5c0luV2Vla1t0aGlzLmN1cnJlbnREYXRlLmdldERheSgpXTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93UHJvZmlsZVBhZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3VzZXJTZXJ2aWNlLmlzU2luaFZpZW5BY2NvdW50KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5fZ2xvYmFsU2VydmljZS5zZXRIZWFkZXJTdGF0ZSh0cnVlKTtcclxuICAgICAgICB0aGlzLl9nbG9iYWxTZXJ2aWNlLnNldE1lbnVTdGF0ZSh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dpbigpIHtcclxuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LmZpcmVFdmVudCgnTE9HSU4nKTtcclxuICAgIH1cclxuXHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cIiFsb2FkZWRcIiBjbGFzcz1cIndycC1sb2FkZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJsb2FkZWRcIiBjbGFzcz1cIm1vZHVsZXMtdjFcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3ZWxjb21lLXVzZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1pbWFnZVwiPlxyXG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiY3VzdG9tLWF2YXRhclwiIFtzcmMtZmFsbGJhY2tdPVwiZGVmYXVsdEF2YXRhclwiIFtzcmNdPVwiZ2V0Q3VycmVudFVzZXJBdmF0YXIoKVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3cnAtbG9naW5cIj5cclxuICAgICAgICAgICAgPGgyPlhpbiBjaMOgbyE8L2gyPlxyXG4gICAgICAgICAgICA8Yj57e2N1cnJlbnRVc2VyLmZ1bGxOYW1lfX08L2I+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50VXNlclwiIGNsYXNzPVwibG9naW5cIj5cclxuICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJnb1RvUGVyc29uYWwoKVwiPjxpIGNsYXNzPVwiZmFyIGZhLWZvbGRlci1vcGVuXCI+PC9pPlRyYW5nIGPDoSBuaMOibjwvYT5cclxuICAgICAgICAgICAgICAgIDxhIHN0eWxlPVwiYmFja2dyb3VuZDogI2ZhYmMwMTtcIiAoY2xpY2spPVwibG9nb3V0KClcIj48aSBjbGFzcz1cImZhciBmYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0XCI+PC9pPsSQxINuZ1xyXG4gICAgICAgICAgICAgICAgICAgIHh14bqldDwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY3VycmVudFVzZXJcIiBjbGFzcz1cImxvZ2luXCI+PGEgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjZmFiYzAxO1wiIChjbGljayk9XCJsb2dpbigpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtc2lnbi1vdXQtYWx0XCI+PC9pPsSQxINuZyBuaOG6rXA8L2E+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbG9jay13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxoMSBjbGFzcz1cImNsb2NrXCI+e3tjdXJyZW50RGF0ZSB8IGRhdGU6J0hIOm1tOnNzJ319PC9oMT5cclxuICAgICAgICAgICAgPGg0IGNsYXNzPVwiZGF0YS10aW1lXCI+e3tnZXROZ2F5VHJvbmdUdWFuKCl9fSwgbmfDoHkge3tjdXJyZW50RGF0ZSB8IGRhdGU6J2RkL01NL3l5eXknfX08L2g0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZHVsZS1pY29uc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbWctdGl0bGVcIj5cclxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInRuLWN1c3RvbS1sb2dvXCIgW3NyY109XCJjb25maWcubG9nb1wiIFthbHRdPVwiY29uZmlnLm93bmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGgyPnt7Y29uZmlnLnRpdGxlfX08L2gyPlxyXG4gICAgICAgICAgICAgICAgPGgxPnt7Y29uZmlnLm93bmVyfX08L2gxPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpdjExMTEtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8dG4tY3VzdG9tLXNjcm9sbGJhciAqbmdJZj1cIiFpc09uTW9iaWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwU3dpdGNoZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC90bi1jdXN0b20tc2Nyb2xsYmFyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT25Nb2JpbGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhcHBTd2l0Y2hlclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYXBwU3dpdGNoZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2MTExMVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYXBwU3dpdGNoZXJJdGVtczsgbGV0IGluZCA9IGluZGV4O1wiPlxyXG4gICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYmctc3dpdGNoZXJcIiAoY2xpY2spPVwic3dpdGNoQXBwKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e2l0ZW0uaWNvbn19IGFwcC1zd2l0Y2hlci1pdGVtLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS50aXRsZSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=