@acorex/platform 18.1.5 → 18.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/common/index.d.ts +3 -3
  2. package/common/lib/app/application.types.d.ts +1 -1
  3. package/common/lib/common.module.d.ts +3 -6
  4. package/common/lib/data/data-provider.types.d.ts +1 -0
  5. package/common/lib/data/data.types.d.ts +14 -0
  6. package/common/lib/data/dexie-storage.service.d.ts +6 -20
  7. package/common/lib/data/entity-data-seeder.d.ts +12 -0
  8. package/common/lib/data/entity-storage-service.d.ts +59 -15
  9. package/common/lib/data/index.d.ts +2 -1
  10. package/common/lib/layout/menu/index.d.ts +2 -0
  11. package/common/lib/layout/menu/menu.provider.d.ts +15 -0
  12. package/common/lib/layout/menu/menu.service.d.ts +12 -0
  13. package/common/lib/layout/menu/menu.types.d.ts +8 -1
  14. package/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.d.ts +2 -0
  15. package/common/lib/schema/widgets/lookup/lookup-widget-edit.component.d.ts +1 -0
  16. package/common/lib/settings/settings.service.d.ts +3 -3
  17. package/common/lib/store/common.actions.d.ts +1 -8
  18. package/common/lib/store/common.effects.d.ts +3 -6
  19. package/common/lib/workflows/common.workflow.d.ts +2 -0
  20. package/core/utils/data-conditioner.d.ts +2 -5
  21. package/esm2022/common/index.mjs +4 -4
  22. package/esm2022/common/lib/app/app-startup.service.mjs +3 -3
  23. package/esm2022/common/lib/app/application.types.mjs +1 -1
  24. package/esm2022/common/lib/common.module.mjs +38 -31
  25. package/esm2022/common/lib/data/data-provider.types.mjs +1 -1
  26. package/esm2022/common/lib/data/data.types.mjs +2 -0
  27. package/esm2022/common/lib/data/dexie-storage.service.mjs +98 -84
  28. package/esm2022/common/lib/data/entity-data-seeder.mjs +25 -0
  29. package/esm2022/common/lib/data/entity-storage-service.mjs +59 -1
  30. package/esm2022/common/lib/data/index.mjs +3 -2
  31. package/esm2022/common/lib/layout/menu/index.mjs +3 -1
  32. package/esm2022/common/lib/layout/menu/menu.provider.mjs +60 -0
  33. package/esm2022/common/lib/layout/menu/menu.service.mjs +73 -0
  34. package/esm2022/common/lib/layout/menu/menu.types.mjs +1 -1
  35. package/esm2022/common/lib/layout/theme/store/admin-layout.reducers.mjs +24 -19
  36. package/esm2022/common/lib/schema/widgets/avatar/avatar-widget-edit.component.mjs +8 -2
  37. package/esm2022/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.mjs +2 -2
  38. package/esm2022/common/lib/schema/widgets/common-widget-filter/number-widget-filter.component.mjs +2 -2
  39. package/esm2022/common/lib/schema/widgets/common-widget-filter/string-widget-filter.component.mjs +2 -2
  40. package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.mjs +27 -5
  41. package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-edit.component.mjs +3 -3
  42. package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-view.component.mjs +3 -3
  43. package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-edit.component.mjs +2 -2
  44. package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-filter.component.mjs +3 -3
  45. package/esm2022/common/lib/settings/settings.service.mjs +10 -7
  46. package/esm2022/common/lib/store/common.actions.mjs +2 -4
  47. package/esm2022/common/lib/store/common.effects.mjs +8 -9
  48. package/esm2022/common/lib/workflows/common.workflow.mjs +7 -4
  49. package/esm2022/core/utils/data-conditioner.mjs +3 -3
  50. package/esm2022/layout/builder/lib/builder/builder.service.mjs +19 -16
  51. package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +2 -1
  52. package/esm2022/layout/builder/lib/builder/widget-container.component.mjs +5 -8
  53. package/esm2022/layout/builder/lib/builder/widget-renderer.component.directive.mjs +39 -22
  54. package/esm2022/layout/builder/lib/builder/widget.types.mjs +12 -8
  55. package/esm2022/layout/designer/index.mjs +3 -1
  56. package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +7 -3
  57. package/esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.mjs +66 -5
  58. package/esm2022/layout/designer/lib/designer/components/size-mode/view-size-toolbar.component.mjs +54 -0
  59. package/esm2022/layout/designer/lib/designer/components/widget-picker/widget-picker.component.mjs +24 -15
  60. package/esm2022/layout/designer/lib/designer/designer.component.mjs +17 -56
  61. package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +27 -5
  62. package/esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.mjs +1 -1
  63. package/esm2022/layout/designer/lib/preview/preview-frame.component.mjs +75 -0
  64. package/esm2022/layout/designer/lib/preview/preview-viewer.component.mjs +58 -0
  65. package/esm2022/layout/designer/lib/preview/preview.component.mjs +67 -9
  66. package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +48 -36
  67. package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +3 -3
  68. package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +1 -2
  69. package/esm2022/layout/entity/lib/entity-registery.service.mjs +5 -5
  70. package/esm2022/layout/entity/lib/entity.config.mjs +28 -2
  71. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +5 -5
  72. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.mjs +2 -2
  73. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.mjs +4 -4
  74. package/esm2022/layout/entity/lib/widgets/widget-selector/widget-selector-widget.config.mjs +2 -1
  75. package/esm2022/layout/entity/lib/workflows/create-entity.workflow.mjs +3 -3
  76. package/esm2022/layout/entity/lib/workflows/delete-entity.workflow.mjs +18 -9
  77. package/esm2022/layout/entity/lib/workflows/modify-section.workflow.mjs +7 -5
  78. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +3 -3
  79. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.mjs +1 -1
  80. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.mjs +1 -1
  81. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +3 -3
  82. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.mjs +9 -5
  83. package/esm2022/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.mjs +2 -2
  84. package/esm2022/layouts/lib/admin/entity-layout/workflows/modify-entity.workflow.mjs +5 -3
  85. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +10 -7
  86. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +2 -2
  87. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +13 -9
  88. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +3 -3
  89. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +14 -10
  90. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +1 -1
  91. package/esm2022/themes/default/lib/layouts/root-layout/components/menu/root-menu.component.mjs +39 -0
  92. package/esm2022/themes/default/lib/layouts/root-layout/index.mjs +2 -1
  93. package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +13 -31
  94. package/esm2022/themes/default/lib/layouts/root-layout/root-layout.module.mjs +9 -6
  95. package/esm2022/themes/shared/index.mjs +1 -5
  96. package/esm2022/themes/shared/lib/components/theme-slot.component.mjs +87 -88
  97. package/esm2022/themes/shared/lib/services/theme.service.mjs +20 -13
  98. package/esm2022/themes/shared/lib/shared.module.mjs +5 -9
  99. package/esm2022/widgets/lib/properties/editors.props.mjs +2 -2
  100. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-edit.component.mjs +3 -3
  101. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-view.component.mjs +3 -3
  102. package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.mjs +4 -4
  103. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-column.component.mjs +26 -5
  104. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-view.component.mjs +26 -5
  105. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-column.component.mjs +18 -4
  106. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +7 -10
  107. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget.config.mjs +2 -6
  108. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.mjs +27 -9
  109. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.mjs +19 -8
  110. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-view.component.mjs +10 -2
  111. package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-edit.component.mjs +1 -1
  112. package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-view.component.mjs +1 -1
  113. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.mjs +18 -20
  114. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +3 -2
  115. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-view.component.mjs +15 -19
  116. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget.config.mjs +4 -2
  117. package/esm2022/widgets/lib/widgets/index.mjs +2 -1
  118. package/esm2022/widgets/lib/widgets/layout/block/block-widget-view.component.mjs +36 -15
  119. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +2 -2
  120. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.mjs +42 -10
  121. package/esm2022/widgets/lib/widgets/layout/template/index.mjs +5 -0
  122. package/esm2022/widgets/lib/widgets/layout/template/template-widget-designer.component.mjs +70 -0
  123. package/esm2022/widgets/lib/widgets/layout/template/template-widget-edit.component.mjs +55 -0
  124. package/esm2022/widgets/lib/widgets/layout/template/template-widget-view.component.mjs +42 -0
  125. package/esm2022/widgets/lib/widgets/layout/template/template-widget.config.mjs +30 -0
  126. package/esm2022/widgets/lib/widgets/layout/template/template.provider.mjs +41 -0
  127. package/esm2022/widgets/lib/widgets.module.mjs +4 -1
  128. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-CSSz-dqg.mjs → acorex-platform-common-avatar-widget-edit.component-D4k52w2k.mjs} +16 -7
  129. package/fesm2022/acorex-platform-common-avatar-widget-edit.component-D4k52w2k.mjs.map +1 -0
  130. package/fesm2022/{acorex-platform-common-avatar-widget-view.component-WofmamJK.mjs → acorex-platform-common-avatar-widget-view.component-Bbg1imZG.mjs} +9 -6
  131. package/fesm2022/acorex-platform-common-avatar-widget-view.component-Bbg1imZG.mjs.map +1 -0
  132. package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-ByoMpVAs.mjs → acorex-platform-common-boolean-widget-filter.component-CRFI7vNR.mjs} +9 -7
  133. package/fesm2022/acorex-platform-common-boolean-widget-filter.component-CRFI7vNR.mjs.map +1 -0
  134. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BAK1Wlh_.mjs → acorex-platform-common-checkbox-widget-column.component-BCUcZiP_.mjs} +9 -6
  135. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BAK1Wlh_.mjs.map → acorex-platform-common-checkbox-widget-column.component-BCUcZiP_.mjs.map} +1 -1
  136. package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-C1PgHZsE.mjs → acorex-platform-common-checkbox-widget-edit.component-GgWLpxV0.mjs} +9 -6
  137. package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-GgWLpxV0.mjs.map +1 -0
  138. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-B4BG4mCQ.mjs → acorex-platform-common-checkbox-widget-view.component-KuRnDGoQ.mjs} +9 -6
  139. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-B4BG4mCQ.mjs.map → acorex-platform-common-checkbox-widget-view.component-KuRnDGoQ.mjs.map} +1 -1
  140. package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-BnW8m1wn.mjs → acorex-platform-common-dateTime-widget-column.component-DaXNK6e2.mjs} +9 -6
  141. package/fesm2022/acorex-platform-common-dateTime-widget-column.component-DaXNK6e2.mjs.map +1 -0
  142. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DCYX2iyT.mjs → acorex-platform-common-dateTime-widget-edit.component-XOReyHZ-.mjs} +9 -6
  143. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DCYX2iyT.mjs.map → acorex-platform-common-dateTime-widget-edit.component-XOReyHZ-.mjs.map} +1 -1
  144. package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-Dbxz84tm.mjs → acorex-platform-common-dateTime-widget-filter.component-3PJx2C6G.mjs} +34 -10
  145. package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-3PJx2C6G.mjs.map +1 -0
  146. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-Bg1h8xAj.mjs → acorex-platform-common-dateTime-widget-view.component-BWTedYCf.mjs} +9 -6
  147. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-Bg1h8xAj.mjs.map → acorex-platform-common-dateTime-widget-view.component-BWTedYCf.mjs.map} +1 -1
  148. package/fesm2022/{acorex-platform-common-email-widget-column.component-BqRR2jW9.mjs → acorex-platform-common-email-widget-column.component-MySWR3RG.mjs} +9 -6
  149. package/fesm2022/acorex-platform-common-email-widget-column.component-MySWR3RG.mjs.map +1 -0
  150. package/fesm2022/{acorex-platform-common-email-widget-edit.component-C7oCyByG.mjs → acorex-platform-common-email-widget-edit.component-DzqW3Ay6.mjs} +9 -6
  151. package/fesm2022/{acorex-platform-common-email-widget-edit.component-C7oCyByG.mjs.map → acorex-platform-common-email-widget-edit.component-DzqW3Ay6.mjs.map} +1 -1
  152. package/fesm2022/{acorex-platform-common-email-widget-view.component-hfVZnW_L.mjs → acorex-platform-common-email-widget-view.component-ikN6SIj0.mjs} +9 -6
  153. package/fesm2022/{acorex-platform-common-email-widget-view.component-hfVZnW_L.mjs.map → acorex-platform-common-email-widget-view.component-ikN6SIj0.mjs.map} +1 -1
  154. package/fesm2022/{acorex-platform-common-file-widget-column.component-Dt2mR6hJ.mjs → acorex-platform-common-file-widget-column.component-GtbElxmS.mjs} +8 -5
  155. package/fesm2022/acorex-platform-common-file-widget-column.component-GtbElxmS.mjs.map +1 -0
  156. package/fesm2022/{acorex-platform-common-file-widget-edit.component-DQol3UN8.mjs → acorex-platform-common-file-widget-edit.component-CPSsJviw.mjs} +9 -6
  157. package/fesm2022/{acorex-platform-common-file-widget-edit.component-DQol3UN8.mjs.map → acorex-platform-common-file-widget-edit.component-CPSsJviw.mjs.map} +1 -1
  158. package/fesm2022/{acorex-platform-common-file-widget-filter.component-CGd1mY-z.mjs → acorex-platform-common-file-widget-filter.component-D-_WnxlE.mjs} +9 -6
  159. package/fesm2022/acorex-platform-common-file-widget-filter.component-D-_WnxlE.mjs.map +1 -0
  160. package/fesm2022/{acorex-platform-common-file-widget-view.component-lKWnGSSb.mjs → acorex-platform-common-file-widget-view.component-BU8iWCVR.mjs} +9 -6
  161. package/fesm2022/{acorex-platform-common-file-widget-view.component-lKWnGSSb.mjs.map → acorex-platform-common-file-widget-view.component-BU8iWCVR.mjs.map} +1 -1
  162. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-DgjY3ZWk.mjs → acorex-platform-common-gallery-widget-edit.component-DMu9OW45.mjs} +10 -7
  163. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-DgjY3ZWk.mjs.map → acorex-platform-common-gallery-widget-edit.component-DMu9OW45.mjs.map} +1 -1
  164. package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-CUw4kxTW.mjs → acorex-platform-common-gallery-widget-filter.component-BNYgn0eK.mjs} +9 -6
  165. package/fesm2022/acorex-platform-common-gallery-widget-filter.component-BNYgn0eK.mjs.map +1 -0
  166. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-DK52JTds.mjs → acorex-platform-common-gallery-widget-view.component-D52gjNcJ.mjs} +10 -7
  167. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-DK52JTds.mjs.map → acorex-platform-common-gallery-widget-view.component-D52gjNcJ.mjs.map} +1 -1
  168. package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-7bbHUOnp.mjs → acorex-platform-common-largetext-widget-edit.component-B7Hq-1ny.mjs} +9 -6
  169. package/fesm2022/acorex-platform-common-largetext-widget-edit.component-B7Hq-1ny.mjs.map +1 -0
  170. package/fesm2022/{acorex-platform-common-lookup-widget-column.component-PGf5qjC4.mjs → acorex-platform-common-lookup-widget-column.component-2ccF27nN.mjs} +9 -6
  171. package/fesm2022/acorex-platform-common-lookup-widget-column.component-2ccF27nN.mjs.map +1 -0
  172. package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-CGZf6rH2.mjs → acorex-platform-common-lookup-widget-edit.component-Cn3yALld.mjs} +10 -7
  173. package/fesm2022/acorex-platform-common-lookup-widget-edit.component-Cn3yALld.mjs.map +1 -0
  174. package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-CUBdIuu9.mjs → acorex-platform-common-lookup-widget-filter.component-NY-w7EgD.mjs} +10 -8
  175. package/fesm2022/acorex-platform-common-lookup-widget-filter.component-NY-w7EgD.mjs.map +1 -0
  176. package/fesm2022/{acorex-platform-common-lookup-widget-view.component-dmGctRc9.mjs → acorex-platform-common-lookup-widget-view.component-DjbS0xsx.mjs} +9 -6
  177. package/fesm2022/acorex-platform-common-lookup-widget-view.component-DjbS0xsx.mjs.map +1 -0
  178. package/fesm2022/{acorex-platform-common-map-widget-edit.component-Cyi6AF9u.mjs → acorex-platform-common-map-widget-edit.component-CHyEencO.mjs} +9 -6
  179. package/fesm2022/acorex-platform-common-map-widget-edit.component-CHyEencO.mjs.map +1 -0
  180. package/fesm2022/{acorex-platform-common-map-widget-view.component-Cbl1KClC.mjs → acorex-platform-common-map-widget-view.component-BMK6QTKt.mjs} +9 -6
  181. package/fesm2022/acorex-platform-common-map-widget-view.component-BMK6QTKt.mjs.map +1 -0
  182. package/fesm2022/{acorex-platform-common-messenger-widget-column.component-BGiTw0jL.mjs → acorex-platform-common-messenger-widget-column.component-iVdgR19k.mjs} +9 -6
  183. package/fesm2022/acorex-platform-common-messenger-widget-column.component-iVdgR19k.mjs.map +1 -0
  184. package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-BBSmai_5.mjs → acorex-platform-common-messenger-widget-edit.component-BicSI2_5.mjs} +9 -6
  185. package/fesm2022/acorex-platform-common-messenger-widget-edit.component-BicSI2_5.mjs.map +1 -0
  186. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-C15KdEZ6.mjs → acorex-platform-common-messenger-widget-view.component-DlSSOqrz.mjs} +9 -6
  187. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-C15KdEZ6.mjs.map → acorex-platform-common-messenger-widget-view.component-DlSSOqrz.mjs.map} +1 -1
  188. package/fesm2022/{acorex-platform-common-number-widget-edit.component-CGmS-gd7.mjs → acorex-platform-common-number-widget-edit.component-DlLjt4OQ.mjs} +9 -6
  189. package/fesm2022/acorex-platform-common-number-widget-edit.component-DlLjt4OQ.mjs.map +1 -0
  190. package/fesm2022/{acorex-platform-common-number-widget-filter.component-8RC01k_0.mjs → acorex-platform-common-number-widget-filter.component-DPZQomNX.mjs} +10 -7
  191. package/fesm2022/acorex-platform-common-number-widget-filter.component-DPZQomNX.mjs.map +1 -0
  192. package/fesm2022/{acorex-platform-common-number-widget-view.component-DGPcZ-yE.mjs → acorex-platform-common-number-widget-view.component-BW1ftaLk.mjs} +9 -6
  193. package/fesm2022/acorex-platform-common-number-widget-view.component-BW1ftaLk.mjs.map +1 -0
  194. package/fesm2022/{acorex-platform-common-password-widget-column.component-O3L2DvZq.mjs → acorex-platform-common-password-widget-column.component-BZEavb7p.mjs} +9 -6
  195. package/fesm2022/{acorex-platform-common-password-widget-column.component-O3L2DvZq.mjs.map → acorex-platform-common-password-widget-column.component-BZEavb7p.mjs.map} +1 -1
  196. package/fesm2022/{acorex-platform-common-password-widget-edit.component-DZz6rAL3.mjs → acorex-platform-common-password-widget-edit.component-De5r-L4i.mjs} +9 -6
  197. package/fesm2022/acorex-platform-common-password-widget-edit.component-De5r-L4i.mjs.map +1 -0
  198. package/fesm2022/{acorex-platform-common-password-widget-view.component-OxinnOs8.mjs → acorex-platform-common-password-widget-view.component-Dw4xxdOT.mjs} +9 -6
  199. package/fesm2022/{acorex-platform-common-password-widget-view.component-OxinnOs8.mjs.map → acorex-platform-common-password-widget-view.component-Dw4xxdOT.mjs.map} +1 -1
  200. package/fesm2022/{acorex-platform-common-phone-widget-column.component-D9AXNMVq.mjs → acorex-platform-common-phone-widget-column.component-BTbtfPty.mjs} +9 -6
  201. package/fesm2022/{acorex-platform-common-phone-widget-column.component-D9AXNMVq.mjs.map → acorex-platform-common-phone-widget-column.component-BTbtfPty.mjs.map} +1 -1
  202. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-CKvODAMQ.mjs → acorex-platform-common-phone-widget-edit.component-Ay4y8j_t.mjs} +8 -6
  203. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-CKvODAMQ.mjs.map → acorex-platform-common-phone-widget-edit.component-Ay4y8j_t.mjs.map} +1 -1
  204. package/fesm2022/{acorex-platform-common-phone-widget-view.component-Cx-SrpUs.mjs → acorex-platform-common-phone-widget-view.component-D4WqjjBP.mjs} +9 -6
  205. package/fesm2022/{acorex-platform-common-phone-widget-view.component-Cx-SrpUs.mjs.map → acorex-platform-common-phone-widget-view.component-D4WqjjBP.mjs.map} +1 -1
  206. package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-C7IqYbqM.mjs → acorex-platform-common-rich-text-widget-column.component-B5rev2NB.mjs} +9 -6
  207. package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-C7IqYbqM.mjs.map → acorex-platform-common-rich-text-widget-column.component-B5rev2NB.mjs.map} +1 -1
  208. package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-DtEcLWte.mjs → acorex-platform-common-rich-text-widget-edit.component-BHBRQKhj.mjs} +9 -6
  209. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-BHBRQKhj.mjs.map +1 -0
  210. package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-DI4I6wII.mjs → acorex-platform-common-rich-text-widget-view.component-0bIoY7Ws.mjs} +9 -6
  211. package/fesm2022/acorex-platform-common-rich-text-widget-view.component-0bIoY7Ws.mjs.map +1 -0
  212. package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-CHDTopqW.mjs → acorex-platform-common-selection-list-widget-column.component-CzJWP4YT.mjs} +9 -6
  213. package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-CHDTopqW.mjs.map → acorex-platform-common-selection-list-widget-column.component-CzJWP4YT.mjs.map} +1 -1
  214. package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-Ds7Pc22g.mjs → acorex-platform-common-selection-list-widget-edit.component-DhYa6y65.mjs} +9 -6
  215. package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-DhYa6y65.mjs.map +1 -0
  216. package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-D7h2tUqB.mjs → acorex-platform-common-selection-list-widget-filter.component-B344MeXJ.mjs} +8 -6
  217. package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-B344MeXJ.mjs.map +1 -0
  218. package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-DGuotR-q.mjs → acorex-platform-common-selection-list-widget-view.component-Czk5DzgK.mjs} +9 -6
  219. package/fesm2022/acorex-platform-common-selection-list-widget-view.component-Czk5DzgK.mjs.map +1 -0
  220. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DPr0hCtB.mjs → acorex-platform-common-signature-pad-widget-edit.component-YSGjL25D.mjs} +8 -5
  221. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DPr0hCtB.mjs.map → acorex-platform-common-signature-pad-widget-edit.component-YSGjL25D.mjs.map} +1 -1
  222. package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-CdqZ17tU.mjs → acorex-platform-common-signature-pad-widget-view.component-D64btt99.mjs} +9 -6
  223. package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-D64btt99.mjs.map +1 -0
  224. package/fesm2022/{acorex-platform-common-string-widget-filter.component-Ctde9CDD.mjs → acorex-platform-common-string-widget-filter.component-5wb1x5Fa.mjs} +10 -7
  225. package/fesm2022/acorex-platform-common-string-widget-filter.component-5wb1x5Fa.mjs.map +1 -0
  226. package/fesm2022/{acorex-platform-common-text-widget-column.component-BHd_WWKq.mjs → acorex-platform-common-text-widget-column.component-U-V3HD2V.mjs} +9 -6
  227. package/fesm2022/{acorex-platform-common-text-widget-column.component-BHd_WWKq.mjs.map → acorex-platform-common-text-widget-column.component-U-V3HD2V.mjs.map} +1 -1
  228. package/fesm2022/{acorex-platform-common-text-widget-edit.component-BwfelIOW.mjs → acorex-platform-common-text-widget-edit.component-BCs13zUr.mjs} +9 -6
  229. package/fesm2022/acorex-platform-common-text-widget-edit.component-BCs13zUr.mjs.map +1 -0
  230. package/fesm2022/{acorex-platform-common-text-widget-view.component-SHWXqKZS.mjs → acorex-platform-common-text-widget-view.component-V1RkKuNZ.mjs} +9 -6
  231. package/fesm2022/{acorex-platform-common-text-widget-view.component-SHWXqKZS.mjs.map → acorex-platform-common-text-widget-view.component-V1RkKuNZ.mjs.map} +1 -1
  232. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-Dc_Ahdvn.mjs → acorex-platform-common-toggle-widget-column.component-FqKLeAhY.mjs} +9 -6
  233. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-Dc_Ahdvn.mjs.map → acorex-platform-common-toggle-widget-column.component-FqKLeAhY.mjs.map} +1 -1
  234. package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-BnPyXdAA.mjs → acorex-platform-common-toggle-widget-edit.component-DKSnFdTQ.mjs} +9 -6
  235. package/fesm2022/acorex-platform-common-toggle-widget-edit.component-DKSnFdTQ.mjs.map +1 -0
  236. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-D14GMwWe.mjs → acorex-platform-common-toggle-widget-view.component-BOYPRUCt.mjs} +9 -6
  237. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-D14GMwWe.mjs.map → acorex-platform-common-toggle-widget-view.component-BOYPRUCt.mjs.map} +1 -1
  238. package/fesm2022/acorex-platform-common.mjs +2300 -2094
  239. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  240. package/fesm2022/acorex-platform-core.mjs +2 -2
  241. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  242. package/fesm2022/acorex-platform-layout-builder.mjs +67 -45
  243. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  244. package/fesm2022/acorex-platform-layout-designer.mjs +365 -67
  245. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  246. package/fesm2022/acorex-platform-layout-entity.mjs +103 -57
  247. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  248. package/fesm2022/acorex-platform-layouts.mjs +16 -11
  249. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  250. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs → acorex-platform-themes-default-entity-master-create-view.component-BJ7inoTB.mjs} +4 -4
  251. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BJ7inoTB.mjs.map +1 -0
  252. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-CNXG0nP4.mjs → acorex-platform-themes-default-entity-master-list-view.component-BGKWaCth.mjs} +22 -18
  253. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BGKWaCth.mjs.map +1 -0
  254. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs → acorex-platform-themes-default-entity-master-modify-view.component-B3phYOIw.mjs} +5 -5
  255. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-B3phYOIw.mjs.map +1 -0
  256. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-Bnrabotu.mjs → acorex-platform-themes-default-entity-master-single-view.component-BO_lAQc_.mjs} +20 -15
  257. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BO_lAQc_.mjs.map +1 -0
  258. package/fesm2022/acorex-platform-themes-default.mjs +75 -57
  259. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  260. package/fesm2022/acorex-platform-themes-shared.mjs +111 -570
  261. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  262. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-DzGg-uFi.mjs → acorex-platform-widgets-checkbox-widget-designer.component-e9O9qFIf.mjs} +4 -4
  263. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-DzGg-uFi.mjs.map → acorex-platform-widgets-checkbox-widget-designer.component-e9O9qFIf.mjs.map} +1 -1
  264. package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-DIvi0BtT.mjs → acorex-platform-widgets-color-box-widget-designer.component-Brsun0id.mjs} +4 -4
  265. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-Brsun0id.mjs.map +1 -0
  266. package/fesm2022/acorex-platform-widgets-template-widget-edit.component-gvAh-gH1.mjs +96 -0
  267. package/fesm2022/acorex-platform-widgets-template-widget-edit.component-gvAh-gH1.mjs.map +1 -0
  268. package/fesm2022/acorex-platform-widgets.mjs +478 -169
  269. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  270. package/layout/builder/lib/builder/builder.service.d.ts +2 -0
  271. package/layout/builder/lib/builder/widget-container.component.d.ts +2 -2
  272. package/layout/builder/lib/builder/widget-renderer.component.directive.d.ts +1 -1
  273. package/layout/builder/lib/builder/widget.types.d.ts +5 -2
  274. package/layout/designer/index.d.ts +2 -0
  275. package/layout/designer/lib/designer/components/board/board.component.d.ts +1 -0
  276. package/layout/designer/lib/designer/components/header-menu/header-menu.component.d.ts +1 -0
  277. package/layout/designer/lib/designer/components/size-mode/view-size-toolbar.component.d.ts +6 -0
  278. package/layout/designer/lib/designer/components/widget-picker/widget-picker.component.d.ts +1 -1
  279. package/layout/designer/lib/designer/designer.component.d.ts +1 -1
  280. package/layout/designer/lib/designer/shared/designer.service.d.ts +6 -1
  281. package/layout/designer/lib/preview/preview-frame.component.d.ts +8 -0
  282. package/layout/designer/lib/preview/preview-viewer.component.d.ts +14 -0
  283. package/layout/designer/lib/preview/preview.component.d.ts +17 -3
  284. package/layout/entity/lib/entity-detail-list.viewmodel.d.ts +4 -4
  285. package/layout/entity/lib/entity-master-create.viewmodel.d.ts +1 -1
  286. package/layout/entity/lib/entity-master-single.viewmodel.d.ts +1 -5
  287. package/layout/entity/lib/entity-master-update.viewmodel.d.ts +1 -1
  288. package/layout/entity/lib/entity-registery.service.d.ts +1 -1
  289. package/layout/entity/lib/entity.config.d.ts +7 -0
  290. package/layout/entity/lib/entity.viewmodel.d.ts +1 -1
  291. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +2 -1
  292. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.d.ts +2 -1
  293. package/layout/entity/lib/workflows/delete-entity.workflow.d.ts +1 -0
  294. package/layout/entity/lib/workflows/modify-section.workflow.d.ts +1 -0
  295. package/layouts/lib/admin/entity-layout/workflows/modify-entity.workflow.d.ts +1 -0
  296. package/package.json +7 -7
  297. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +1 -1
  298. package/themes/default/lib/layouts/root-layout/components/menu/root-menu.component.d.ts +22 -0
  299. package/themes/default/lib/layouts/root-layout/index.d.ts +1 -0
  300. package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +0 -4
  301. package/themes/default/lib/layouts/root-layout/root-layout.module.d.ts +17 -16
  302. package/themes/shared/index.d.ts +0 -4
  303. package/themes/shared/lib/components/theme-slot.component.d.ts +1 -1
  304. package/themes/shared/lib/services/theme.service.d.ts +1 -1
  305. package/themes/shared/lib/shared.module.d.ts +0 -1
  306. package/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.d.ts +1 -1
  307. package/widgets/lib/widgets/editors/color/color-box-widget-column.component.d.ts +3 -0
  308. package/widgets/lib/widgets/editors/color/color-box-widget-view.component.d.ts +3 -0
  309. package/widgets/lib/widgets/editors/contact/contact-widget-column.component.d.ts +2 -0
  310. package/widgets/lib/widgets/editors/contact/contact-widget-edit.component.d.ts +1 -1
  311. package/widgets/lib/widgets/editors/contact/contact-widget-view.component.d.ts +1 -1
  312. package/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.d.ts +4 -1
  313. package/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.d.ts +5 -5
  314. package/widgets/lib/widgets/index.d.ts +1 -0
  315. package/widgets/lib/widgets/layout/block/block-widget-view.component.d.ts +4 -2
  316. package/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.d.ts +1 -0
  317. package/widgets/lib/widgets/layout/template/index.d.ts +4 -0
  318. package/widgets/lib/widgets/layout/template/template-widget-designer.component.d.ts +11 -0
  319. package/widgets/lib/widgets/layout/template/template-widget-edit.component.d.ts +10 -0
  320. package/widgets/lib/widgets/layout/template/template-widget-view.component.d.ts +10 -0
  321. package/widgets/lib/widgets/layout/template/template-widget.config.d.ts +7 -0
  322. package/widgets/lib/widgets/layout/template/template.provider.d.ts +21 -0
  323. package/common/lib/data/entity-data-provider.d.ts +0 -14
  324. package/esm2022/common/lib/data/entity-data-provider.mjs +0 -26
  325. package/esm2022/themes/shared/lib/comments/comment-list-view.component.mjs +0 -421
  326. package/esm2022/themes/shared/lib/comments/comment-lookup-popup.component.mjs +0 -56
  327. package/esm2022/themes/shared/lib/comments/comments.service.mjs +0 -3
  328. package/esm2022/themes/shared/lib/comments/comments.type.mjs +0 -2
  329. package/fesm2022/acorex-platform-common-avatar-widget-edit.component-CSSz-dqg.mjs.map +0 -1
  330. package/fesm2022/acorex-platform-common-avatar-widget-view.component-WofmamJK.mjs.map +0 -1
  331. package/fesm2022/acorex-platform-common-boolean-widget-filter.component-ByoMpVAs.mjs.map +0 -1
  332. package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-C1PgHZsE.mjs.map +0 -1
  333. package/fesm2022/acorex-platform-common-dateTime-widget-column.component-BnW8m1wn.mjs.map +0 -1
  334. package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-Dbxz84tm.mjs.map +0 -1
  335. package/fesm2022/acorex-platform-common-email-widget-column.component-BqRR2jW9.mjs.map +0 -1
  336. package/fesm2022/acorex-platform-common-file-widget-column.component-Dt2mR6hJ.mjs.map +0 -1
  337. package/fesm2022/acorex-platform-common-file-widget-filter.component-CGd1mY-z.mjs.map +0 -1
  338. package/fesm2022/acorex-platform-common-gallery-widget-filter.component-CUw4kxTW.mjs.map +0 -1
  339. package/fesm2022/acorex-platform-common-largetext-widget-edit.component-7bbHUOnp.mjs.map +0 -1
  340. package/fesm2022/acorex-platform-common-lookup-widget-column.component-PGf5qjC4.mjs.map +0 -1
  341. package/fesm2022/acorex-platform-common-lookup-widget-edit.component-CGZf6rH2.mjs.map +0 -1
  342. package/fesm2022/acorex-platform-common-lookup-widget-filter.component-CUBdIuu9.mjs.map +0 -1
  343. package/fesm2022/acorex-platform-common-lookup-widget-view.component-dmGctRc9.mjs.map +0 -1
  344. package/fesm2022/acorex-platform-common-map-widget-edit.component-Cyi6AF9u.mjs.map +0 -1
  345. package/fesm2022/acorex-platform-common-map-widget-view.component-Cbl1KClC.mjs.map +0 -1
  346. package/fesm2022/acorex-platform-common-messenger-widget-column.component-BGiTw0jL.mjs.map +0 -1
  347. package/fesm2022/acorex-platform-common-messenger-widget-edit.component-BBSmai_5.mjs.map +0 -1
  348. package/fesm2022/acorex-platform-common-number-widget-edit.component-CGmS-gd7.mjs.map +0 -1
  349. package/fesm2022/acorex-platform-common-number-widget-filter.component-8RC01k_0.mjs.map +0 -1
  350. package/fesm2022/acorex-platform-common-number-widget-view.component-DGPcZ-yE.mjs.map +0 -1
  351. package/fesm2022/acorex-platform-common-password-widget-edit.component-DZz6rAL3.mjs.map +0 -1
  352. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-DtEcLWte.mjs.map +0 -1
  353. package/fesm2022/acorex-platform-common-rich-text-widget-view.component-DI4I6wII.mjs.map +0 -1
  354. package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-Ds7Pc22g.mjs.map +0 -1
  355. package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-D7h2tUqB.mjs.map +0 -1
  356. package/fesm2022/acorex-platform-common-selection-list-widget-view.component-DGuotR-q.mjs.map +0 -1
  357. package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CdqZ17tU.mjs.map +0 -1
  358. package/fesm2022/acorex-platform-common-string-widget-filter.component-Ctde9CDD.mjs.map +0 -1
  359. package/fesm2022/acorex-platform-common-text-widget-edit.component-BwfelIOW.mjs.map +0 -1
  360. package/fesm2022/acorex-platform-common-toggle-widget-edit.component-BnPyXdAA.mjs.map +0 -1
  361. package/fesm2022/acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs +0 -23
  362. package/fesm2022/acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs.map +0 -1
  363. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs.map +0 -1
  364. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CNXG0nP4.mjs.map +0 -1
  365. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs.map +0 -1
  366. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bnrabotu.mjs.map +0 -1
  367. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-DIvi0BtT.mjs.map +0 -1
  368. package/themes/shared/lib/comments/comment-list-view.component.d.ts +0 -61
  369. package/themes/shared/lib/comments/comment-lookup-popup.component.d.ts +0 -10
  370. package/themes/shared/lib/comments/comments.service.d.ts +0 -8
  371. package/themes/shared/lib/comments/comments.type.d.ts +0 -70
@@ -1,477 +1,17 @@
1
- import * as i4 from '@acorex/components/comment';
2
- import { AXCommentModule } from '@acorex/components/comment';
1
+ import * as i2 from '@acorex/components/button';
2
+ import { AXButtonModule } from '@acorex/components/button';
3
3
  import * as i3 from '@acorex/components/decorators';
4
4
  import { AXDecoratorModule } from '@acorex/components/decorators';
5
- import * as i5 from '@acorex/components/wysiwyg';
6
- import { AXWysiwygModule } from '@acorex/components/wysiwyg';
7
- import * as i2$1 from '@angular/common';
5
+ import * as i4 from '@acorex/components/dropdown';
6
+ import { AXDropdownModule } from '@acorex/components/dropdown';
7
+ import * as i1 from '@angular/common';
8
8
  import { CommonModule } from '@angular/common';
9
9
  import * as i0 from '@angular/core';
10
- import { Component, signal, viewChild, inject, computed, ChangeDetectionStrategy, NgModule } from '@angular/core';
11
- import * as i1 from '@angular/forms';
12
- import { FormsModule } from '@angular/forms';
13
- import { ActivatedRoute, RouterModule } from '@angular/router';
14
- import * as i7 from '@acorex/components/avatar';
15
- import { AXAvatarModule } from '@acorex/components/avatar';
16
- import * as i6 from '@acorex/components/button';
17
- import { AXButtonModule } from '@acorex/components/button';
18
- import { AXDialogService } from '@acorex/components/dialog';
19
- import * as i12 from '@acorex/components/dropdown';
20
- import { AXDropdownModule } from '@acorex/components/dropdown';
21
- import * as i11 from '@acorex/components/dropdown-button';
22
- import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
23
- import * as i9 from '@acorex/components/form';
24
- import { AXFormModule } from '@acorex/components/form';
25
- import * as i8 from '@acorex/components/image';
26
- import { AXImageModule } from '@acorex/components/image';
27
- import { AXLabelModule } from '@acorex/components/label';
28
- import * as i10 from '@acorex/components/loading';
29
- import { AXLoadingModule } from '@acorex/components/loading';
30
- import { AXPopupService } from '@acorex/components/popup';
31
- import { AXSelectBoxModule } from '@acorex/components/select-box';
32
- import * as i14 from '@acorex/components/skeleton';
33
- import { AXSkeletonModule } from '@acorex/components/skeleton';
34
- import { AXTextBoxModule } from '@acorex/components/text-box';
35
- import { AXToastService } from '@acorex/components/toast';
36
- import * as i13 from '@acorex/core/format';
37
- import { AXFormatModule } from '@acorex/core/format';
38
- import { AXPlatform } from '@acorex/core/platform';
39
- import { AXPHtmlUtils } from '@acorex/platform/core';
40
- import { AXBasePageComponent } from '@acorex/components/page';
41
- import * as i2 from '@acorex/platform/layout/builder';
42
- import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
43
- import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
10
+ import { inject, computed, Component, NgModule } from '@angular/core';
44
11
  import { AXPSettingsService } from '@acorex/platform/common';
45
-
46
- class AXPCommentLookupPopup extends AXBasePageComponent {
47
- constructor() {
48
- super(...arguments);
49
- this.lookupNode = {
50
- name: 'lookup',
51
- path: 'lookup',
52
- type: 'lookup-editor',
53
- options: {
54
- entity: 'axoidc.users',
55
- },
56
- };
57
- this.context = {};
58
- }
59
- handleClose() {
60
- this.close({
61
- result: true,
62
- data: this.context,
63
- });
64
- }
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPCommentLookupPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
66
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPCommentLookupPopup, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `<axp-widgets-container class="ax-flex ax-flex-col ax-gap-2 ax-p-4" [(context)]="context">
67
- <div class="ax-m-5"><axp-widget-renderer [node]="lookupNode" [mode]="'edit'"> </axp-widget-renderer></div>
68
- </axp-widgets-container>
69
-
70
- <ax-footer>
71
- <ax-suffix>
72
- <ax-button text="Accept & Send" color="primary" (onClick)="handleClose()"></ax-button>
73
- </ax-suffix>
74
- </ax-footer>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i2.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: i2.AXPWidgetRendererComponent, selector: "axp-widget-renderer", inputs: ["node", "mode", "parentNode", "index"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i6.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }] }); }
75
- }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPCommentLookupPopup, decorators: [{
77
- type: Component,
78
- args: [{
79
- template: `<axp-widgets-container class="ax-flex ax-flex-col ax-gap-2 ax-p-4" [(context)]="context">
80
- <div class="ax-m-5"><axp-widget-renderer [node]="lookupNode" [mode]="'edit'"> </axp-widget-renderer></div>
81
- </axp-widgets-container>
82
-
83
- <ax-footer>
84
- <ax-suffix>
85
- <ax-button text="Accept & Send" color="primary" (onClick)="handleClose()"></ax-button>
86
- </ax-suffix>
87
- </ax-footer>`,
88
- imports: [AXDecoratorModule, AXPLayoutBuilderModule, AXButtonModule],
89
- standalone: true,
90
- }]
91
- }] });
92
-
93
- class AXPCommentService {
94
- }
95
-
96
- class AXPCommentListViewComponent {
97
- constructor() {
98
- this.hasCooldown = signal(false);
99
- this.commentContent = signal('');
100
- this.isSubmitting = signal(false);
101
- this.isReplyingMode = signal(false);
102
- this.isEditingMode = signal(false);
103
- this.isLoading = signal(true);
104
- this.failedImageIds = signal([]);
105
- this.activeReplyComment = signal(undefined);
106
- this.activeEditComment = signal(undefined);
107
- this.wysiwygEditor = viewChild.required('w');
108
- this.commentService = inject(AXPCommentService);
109
- this.platform = inject(AXPlatform);
110
- this.route = inject(ActivatedRoute);
111
- this.popupService = inject(AXPopupService);
112
- this.toastService = inject(AXToastService);
113
- this.dialogService = inject(AXDialogService);
114
- this.htmlUtils = inject(AXPHtmlUtils);
115
- this.routeParams = this.route.snapshot;
116
- this.payload = computed(() => ({
117
- roomType: 'default',
118
- entityId: this.routeParams.params?.['module'] + '.' + this.routeParams.params?.['entity'],
119
- instanceId: this.routeParams.params?.['id'],
120
- }));
121
- this.comments = signal([]);
122
- this.wysiwyg = viewChild('w');
123
- this.wysiwygOptions = signal({
124
- look: 'solid',
125
- });
126
- this.avatarConfig = signal({
127
- color: 'primary',
128
- look: 'rounded',
129
- type: 'solid', // 'image' | 'text' | 'icon' | 'default'
130
- });
131
- this.validateContent = (content) => {
132
- let isValid = true;
133
- if (!content || content === '<p><br></p>') {
134
- isValid = false;
135
- }
136
- return {
137
- rule: 'callback',
138
- result: isValid,
139
- message: isValid ? '' : 'Please fill the content',
140
- value: content,
141
- };
142
- };
143
- }
144
- ngOnInit() {
145
- this.loadComments();
146
- this.time = Math.random() * -100000000;
147
- }
148
- sanitizeHtml(htmlContent) {
149
- return this.htmlUtils.getSafeHTMLfromHTML(htmlContent);
150
- }
151
- handleImageError(imageId) {
152
- this.failedImageIds.update((ids) => [...ids, imageId]);
153
- }
154
- checkImageExists(imageId) {
155
- return !this.failedImageIds().includes(imageId);
156
- }
157
- extractInitials(name) {
158
- const words = name.split(' ');
159
- const initials = words.map((word) => word.charAt(0).toUpperCase());
160
- return initials.join('');
161
- }
162
- async loadComments() {
163
- this.isLoading.set(true);
164
- const response = await this.commentService.get(this.payload());
165
- this.comments.set(response.items);
166
- setTimeout(() => {
167
- this.isLoading.set(false);
168
- }, 250);
169
- }
170
- editMessage(comment, reply) {
171
- this.isReplyingMode.set(false);
172
- this.activeReplyComment.set(undefined);
173
- this.isEditingMode.set(true);
174
- this.activeEditComment.set(comment);
175
- const contentToEdit = reply ? reply.content : comment.content;
176
- this.commentContent.set(contentToEdit);
177
- document.getElementsByClassName('ql-editor')[0].innerHTML = contentToEdit;
178
- this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });
179
- }
180
- replyMessage(comment, reply) {
181
- this.isEditingMode.set(false);
182
- this.activeEditComment.set(undefined);
183
- this.isReplyingMode.set(true);
184
- this.activeReplyComment.set(comment);
185
- if (reply) {
186
- const mention = `<a data-id="${reply.id}">@${reply.user.userName}</a> `;
187
- this.commentContent.set(mention);
188
- this.wysiwyg()?.focus();
189
- document.getElementsByClassName('ql-editor')[0].innerHTML = mention;
190
- }
191
- this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });
192
- }
193
- async deleteComment(comment) {
194
- const dialog = this.dialogService.open({
195
- icon: 'fa-regular fa-warning',
196
- content: 'Are you sure you want to delete this comment?',
197
- title: 'Delete Comment',
198
- type: 'danger',
199
- orientation: 'horizontal',
200
- buttons: [
201
- {
202
- text: 'Delete',
203
- color: 'danger',
204
- onClick: async (e) => {
205
- e.handled = true;
206
- e.source.text = 'Deleting...';
207
- e.source.disabled = true;
208
- e.source.loading = true;
209
- try {
210
- await this.commentService.delete({ id: comment.id });
211
- this.removeMessageById(comment.id);
212
- this.toastService.show({
213
- content: 'Comment deleted successfully.',
214
- color: 'success',
215
- location: 'bottom-center',
216
- closeButton: true,
217
- timeOut: 3000,
218
- timeOutProgress: true,
219
- });
220
- (this.isEditingMode() && this.activeEditComment()?.id === comment.id) || this.resetReplyEditState;
221
- dialog.close();
222
- }
223
- catch (error) {
224
- this.toastService.show({
225
- content: typeof error === 'string' ? error : 'Failed to delete comment!',
226
- color: 'danger',
227
- location: 'bottom-center',
228
- closeButton: true,
229
- timeOut: 3000,
230
- timeOutProgress: true,
231
- });
232
- }
233
- },
234
- },
235
- {
236
- text: 'Cancel',
237
- color: 'ghost',
238
- autofocus: true,
239
- onClick: (e) => {
240
- dialog.close();
241
- },
242
- },
243
- ],
244
- closeButton: false,
245
- });
246
- }
247
- async deleteReply(comment, reply) {
248
- const dialog = this.dialogService.open({
249
- icon: 'fa-regular fa-warning',
250
- content: 'Are you sure you want to delete this reply?',
251
- title: 'Delete Reply',
252
- type: 'danger',
253
- orientation: 'horizontal',
254
- buttons: [
255
- {
256
- text: 'Delete',
257
- color: 'danger',
258
- onClick: async (e) => {
259
- e.handled = true;
260
- e.source.text = 'Deleting...';
261
- e.source.disabled = true;
262
- e.source.loading = true;
263
- try {
264
- await this.commentService.delete({ id: comment.id });
265
- this.removeMessageById(comment.id, reply.id);
266
- this.toastService.show({
267
- content: 'Comment deleted successfully.',
268
- color: 'success',
269
- location: 'bottom-center',
270
- closeButton: true,
271
- timeOut: 3000,
272
- timeOutProgress: true,
273
- });
274
- dialog.close();
275
- }
276
- catch (error) {
277
- this.toastService.show({
278
- content: typeof error === 'string' ? error : 'Failed to delete comment!',
279
- color: 'danger',
280
- location: 'bottom-center',
281
- closeButton: true,
282
- timeOut: 3000,
283
- timeOutProgress: true,
284
- });
285
- }
286
- },
287
- },
288
- {
289
- text: 'Cancel',
290
- color: 'ghost',
291
- autofocus: true,
292
- onClick: (e) => {
293
- dialog.close();
294
- },
295
- },
296
- ],
297
- closeButton: false,
298
- });
299
- }
300
- resetReplyEditState() {
301
- this.isEditingMode.set(false);
302
- this.activeEditComment.set(undefined);
303
- this.isReplyingMode.set(false);
304
- this.activeReplyComment.set(undefined);
305
- }
306
- async toggleLike(comment, reply) {
307
- if (reply) {
308
- this.updateLikeStatus(comment.id, reply.id);
309
- const payload = {
310
- messageId: reply.id,
311
- type: 'like',
312
- };
313
- try {
314
- await this.commentService.like(payload);
315
- }
316
- catch (error) {
317
- this.updateLikeStatus(comment.id, reply.id);
318
- }
319
- }
320
- else {
321
- this.updateLikeStatus(comment.id);
322
- const payload = {
323
- messageId: comment.id,
324
- type: 'like',
325
- };
326
- try {
327
- await this.commentService.like(payload);
328
- }
329
- catch (error) {
330
- this.updateLikeStatus(comment.id);
331
- }
332
- }
333
- }
334
- updateLikeStatus(commentId, replyId) {
335
- this.comments.update((commentsList) => {
336
- return commentsList.map((comment) => {
337
- if (comment.id === commentId) {
338
- if (replyId) {
339
- const updatedReplies = comment.replies.map((reply) => reply.id === replyId
340
- ? {
341
- ...reply,
342
- isLiked: !reply.isLiked,
343
- reactionsCount: reply.isLiked ? --reply.reactionsCount : ++reply.reactionsCount,
344
- }
345
- : reply);
346
- return {
347
- ...comment,
348
- replies: updatedReplies,
349
- };
350
- }
351
- else {
352
- return {
353
- ...comment,
354
- isLiked: !comment.isLiked,
355
- reactionsCount: comment.isLiked ? --comment.reactionsCount : ++comment.reactionsCount,
356
- };
357
- }
358
- }
359
- return comment;
360
- });
361
- });
362
- }
363
- removeMessageById(commentId, replyId) {
364
- this.comments.update((commentsList) => commentsList
365
- .map((comment) => {
366
- if (comment.id === commentId) {
367
- if (replyId) {
368
- return {
369
- ...comment,
370
- replies: comment.replies.filter((reply) => reply.id !== replyId),
371
- };
372
- }
373
- return null;
374
- }
375
- return comment;
376
- })
377
- .filter((comment) => comment !== null));
378
- }
379
- async submitComment(isPrivate = false) {
380
- debugger;
381
- if (!this.validateContent(this.commentContent()).result) {
382
- return;
383
- }
384
- let memberLookup;
385
- if (isPrivate) {
386
- const popupConfig = {
387
- header: true,
388
- size: 'md',
389
- draggable: true,
390
- hasBackdrop: true,
391
- closeButton: true,
392
- closeOnBackdropClick: false,
393
- };
394
- const popup = await this.popupService.open(AXPCommentLookupPopup, popupConfig);
395
- memberLookup = popup.data?.data?.lookup;
396
- }
397
- if (this.isEditingMode()) {
398
- const payload = {
399
- id: this.activeEditComment()?.id,
400
- content: this.commentContent(),
401
- };
402
- await this.commentService.update(payload);
403
- this.isSubmitting.set(true);
404
- this.hasCooldown.set(true);
405
- this.isEditingMode.set(false);
406
- this.activeEditComment.set(undefined);
407
- }
408
- else {
409
- const payload = {
410
- ...this.payload(),
411
- content: this.commentContent(),
412
- contentType: 'text',
413
- isPrivate: isPrivate,
414
- replyId: this.activeReplyComment()?.id,
415
- members: isPrivate ? [memberLookup] : [],
416
- };
417
- await this.commentService.create(payload);
418
- this.isSubmitting.set(true);
419
- this.hasCooldown.set(true);
420
- this.isReplyingMode.set(false);
421
- this.activeReplyComment.set(undefined);
422
- }
423
- const response = await this.commentService.get(this.payload());
424
- this.comments.set(response.items);
425
- this.commentContent.set('');
426
- document.getElementsByClassName('ql-editor')[0].innerHTML = '';
427
- this.isSubmitting.set(false);
428
- setTimeout(() => {
429
- this.hasCooldown.set(false);
430
- }, 1000);
431
- }
432
- scrollMain() {
433
- console.log('clicked');
434
- // debugger
435
- const comment = this.isReplyingMode() ? this.activeReplyComment() : this.activeEditComment();
436
- const el = document.getElementById(comment.id);
437
- if (el) {
438
- el.scrollIntoView({ behavior: 'smooth', block: 'center' });
439
- const content = el?.firstElementChild;
440
- const prevBg = content.style.background;
441
- content.style.borderRadius = '0.25rem';
442
- content.style.transition = 'background 1s ease-in-out';
443
- content.style.background = '#e2fffc';
444
- setTimeout(() => {
445
- content.style.background = prevBg || 'rgba(0, 0, 0, 0)';
446
- }, 1000);
447
- }
448
- }
449
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPCommentListViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
450
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPCommentListViewComponent, isStandalone: true, selector: "axp-comment-list-view", viewQueries: [{ propertyName: "wysiwygEditor", first: true, predicate: ["w"], descendants: true, isSignal: true }, { propertyName: "wysiwyg", first: true, predicate: ["w"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ax-mt-2\">\n <ax-comment-container>\n @if(isLoading()){\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-surface ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if(!isLoading() && comments().length > 0){\n <ax-comment-view class=\"ax-bg-surface\">\n @for(comment of comments(); track comment.id){\n <ax-comment-item [id]=\"comment.id\" [replyCount]=\"comment.replies.length\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(comment.id) && comment.user.picture){\n <ax-image (onError)=\"handleImageError(comment.id)\" [src]=\"comment.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(comment.user.firstName + ' ' + comment.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ comment.user.firstName + ' ' + comment.user.lastName }}</ax-title>\n <ax-comment-date>{{ time | format : 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [liked]=\"comment.isLiked\">\n {{ comment.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyMessage(comment)\"></ax-comment-reply-text>\n @for(reply of comment.replies; track reply.id){\n <ax-comment-item [id]=\"reply.id\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(reply.id) && reply.user.picture){\n <ax-image (onError)=\"handleImageError(reply.id)\" [src]=\"reply.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(reply.user.firstName + ' ' + reply.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ (reply?.user?.firstName ?? '') + ' ' + (reply?.user?.lastName ?? '') }}</ax-title>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteReply(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment, reply)\" [liked]=\"reply.isLiked\">\n {{ reply.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyMessage(comment, reply)\"></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n } </ax-comment-view\n >} @else{\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg\n class=\"ax-mx-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"154\"\n height=\"161\"\n viewBox=\"0 0 154 161\"\n fill=\"none\"\n >\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\"\n />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\"\n stroke=\"#E5E7EB\"\n />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\"\n stroke=\"#818CF8\"\n />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\"\n />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n There is no Comment!\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <ax-form>\n <ax-form-field>\n <div>\n @if(isReplyingMode() || isEditingMode()){\n <div\n class=\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\"\n >\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i\n [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\"\n ></i>\n <div\n class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\"\n >\n <p class=\"ax-text-primary-500 dark:ax-text-primary-300\">\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\n <span class=\"ax-font-bold\">\n {{\n isReplyingMode()\n ? activeReplyComment()?.user?.firstName + ' ' + activeReplyComment()?.user?.lastName\n : ''\n }}\n </span>\n </p>\n <div\n class=\"ax-truncate\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.content ?? '')\n : sanitizeHtml(activeEditComment()?.content ?? '')\n \"\n ></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-wysiwyg-toolbar>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n <ax-suffix>\n <ax-dropdown-button\n [disabled]=\"hasCooldown()\"\n type=\"submit\"\n color=\"primary\"\n mode=\"split\"\n text=\"Send\"\n (onClick)=\"submitComment()\"\n >\n @if(isSubmitting()){ <ax-loading></ax-loading> }\n <ax-button-item-list>\n <ax-button-item (click)=\"submitComment(true)\" text=\"Send Private ...\" name=\"private\" data=\"private\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-user-secret\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-wysiwyg-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateContent }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </div>\n </ax-form-field>\n </ax-form>\n</div>\n", styles: ["ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXCommentModule }, { kind: "component", type: i4.AXCommentViewComponent, selector: "ax-comment-view" }, { kind: "component", type: i4.AXCommentContainerComponent, selector: "ax-comment-container" }, { kind: "component", type: i4.AxCommentItemComponent, selector: "ax-comment-item", inputs: ["replyCount"] }, { kind: "component", type: i4.AXCommentLikeComponent, selector: "ax-comment-like", inputs: ["liked"] }, { kind: "component", type: i4.AXMenuOptionsComponent, selector: "ax-comment-menu-options" }, { kind: "component", type: i4.AXCommentReplyTextComponent, selector: "ax-comment-reply-text" }, { kind: "component", type: i4.AXCommentDateComponent, selector: "ax-comment-date" }, { kind: "ngmodule", type: AXWysiwygModule }, { kind: "component", type: i5.AXWysiwygContainerComponent, selector: "ax-wysiwyg-container", inputs: ["look", "placeHolder"], outputs: ["onValueChanged"] }, { kind: "component", type: i5.AXWysiwygViewComponent, selector: "ax-wysiwyg-view", inputs: ["class"] }, { kind: "component", type: i5.AXWysiwygToolbarComponent, selector: "ax-wysiwyg-toolbar" }, { kind: "component", type: i5.AXWysiwygAlignmentComponent, selector: "ax-wysiwyg-alignment" }, { kind: "component", type: i5.AXWysiwygColorsComponent, selector: "ax-wysiwyg-colors" }, { kind: "component", type: i5.AXWysiwygFontStyleComponent, selector: "ax-wysiwyg-font-style" }, { kind: "component", type: i5.AXWysiwygHistoryComponent, selector: "ax-wysiwyg-history" }, { kind: "component", type: i5.AXWysiwygListComponent, selector: "ax-wysiwyg-list" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i6.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i6.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i6.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i7.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i8.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i9.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i9.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i9.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i10.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i11.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i12.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i13.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i14.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
451
- }
452
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPCommentListViewComponent, decorators: [{
453
- type: Component,
454
- args: [{ selector: 'axp-comment-list-view', imports: [
455
- FormsModule,
456
- CommonModule,
457
- RouterModule,
458
- AXDecoratorModule,
459
- AXCommentModule,
460
- AXWysiwygModule,
461
- AXButtonModule,
462
- AXTextBoxModule,
463
- AXLabelModule,
464
- AXAvatarModule,
465
- AXImageModule,
466
- AXSelectBoxModule,
467
- AXFormModule,
468
- AXLoadingModule,
469
- AXDropdownButtonModule,
470
- AXDropdownModule,
471
- AXFormatModule,
472
- AXSkeletonModule,
473
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-mt-2\">\n <ax-comment-container>\n @if(isLoading()){\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-surface ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if(!isLoading() && comments().length > 0){\n <ax-comment-view class=\"ax-bg-surface\">\n @for(comment of comments(); track comment.id){\n <ax-comment-item [id]=\"comment.id\" [replyCount]=\"comment.replies.length\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(comment.id) && comment.user.picture){\n <ax-image (onError)=\"handleImageError(comment.id)\" [src]=\"comment.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(comment.user.firstName + ' ' + comment.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ comment.user.firstName + ' ' + comment.user.lastName }}</ax-title>\n <ax-comment-date>{{ time | format : 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(comment)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [liked]=\"comment.isLiked\">\n {{ comment.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyMessage(comment)\"></ax-comment-reply-text>\n @for(reply of comment.replies; track reply.id){\n <ax-comment-item [id]=\"reply.id\">\n <ax-avatar [color]=\"avatarConfig().color\" [look]=\"avatarConfig().look\">\n @if(checkImageExists(reply.id) && reply.user.picture){\n <ax-image (onError)=\"handleImageError(reply.id)\" [src]=\"reply.user.picture\">\n <ax-loading></ax-loading>\n </ax-image>\n }@else{\n <ax-text>\n <span class=\"ax-text-base ax-overflow-hidden\">{{\n extractInitials(reply.user.firstName + ' ' + reply.user.lastName)\n }}</span>\n </ax-text>\n }\n </ax-avatar>\n <ax-title>{{ (reply?.user?.firstName ?? '') + ' ' + (reply?.user?.lastName ?? '') }}</ax-title>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"secondary\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"secondary\" (click)=\"editMessage(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteReply(comment, reply)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment, reply)\" [liked]=\"reply.isLiked\">\n {{ reply.reactionsCount }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"replyMessage(comment, reply)\"></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n } </ax-comment-view\n >} @else{\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg\n class=\"ax-mx-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"154\"\n height=\"161\"\n viewBox=\"0 0 154 161\"\n fill=\"none\"\n >\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\"\n />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\"\n stroke=\"#E5E7EB\"\n />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\"\n stroke=\"#818CF8\"\n />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\"\n />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n There is no Comment!\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <ax-form>\n <ax-form-field>\n <div>\n @if(isReplyingMode() || isEditingMode()){\n <div\n class=\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-bg-on-surface ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\"\n >\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i\n [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\"\n ></i>\n <div\n class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\"\n >\n <p class=\"ax-text-primary-500 dark:ax-text-primary-300\">\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\n <span class=\"ax-font-bold\">\n {{\n isReplyingMode()\n ? activeReplyComment()?.user?.firstName + ' ' + activeReplyComment()?.user?.lastName\n : ''\n }}\n </span>\n </p>\n <div\n class=\"ax-truncate\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.content ?? '')\n : sanitizeHtml(activeEditComment()?.content ?? '')\n \"\n ></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-wysiwyg-toolbar>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n <ax-suffix>\n <ax-dropdown-button\n [disabled]=\"hasCooldown()\"\n type=\"submit\"\n color=\"primary\"\n mode=\"split\"\n text=\"Send\"\n (onClick)=\"submitComment()\"\n >\n @if(isSubmitting()){ <ax-loading></ax-loading> }\n <ax-button-item-list>\n <ax-button-item (click)=\"submitComment(true)\" text=\"Send Private ...\" name=\"private\" data=\"private\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-user-secret\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-wysiwyg-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateContent }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </div>\n </ax-form-field>\n </ax-form>\n</div>\n", styles: ["ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}\n"] }]
474
- }] });
12
+ import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
13
+ import * as i5 from '@acorex/core/translation';
14
+ import { AXTranslationModule } from '@acorex/core/translation';
475
15
 
476
16
  // Theme Enum
477
17
  var AXPThemeVariant;
@@ -482,22 +22,24 @@ var AXPThemeVariant;
482
22
  })(AXPThemeVariant || (AXPThemeVariant = {}));
483
23
  const THEME_VARIANT_KEY = 'theme-variant';
484
24
  // ThemeStore - Manages theme settings and system changes
485
- const AXPLayoutThemeService = signalStore(
25
+ const AXPLayoutThemeService = signalStore({ providedIn: 'root' },
486
26
  // Initial State
487
- withState(() => {
488
- const initialTheme = inject(AXPSettingsService).get(THEME_VARIANT_KEY) ?? AXPThemeVariant.System;
27
+ withState((settingService = inject(AXPSettingsService)) => {
28
+ const initialTheme = AXPThemeVariant.System;
489
29
  const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
490
30
  const state = {
491
31
  currentTheme: initialTheme,
492
32
  systemTheme: (systemPrefersDark ? AXPThemeVariant.Dark : AXPThemeVariant.Light),
493
- listener: null
33
+ listener: null,
494
34
  };
495
35
  return state;
496
36
  }),
497
37
  // Computed Signals
498
38
  withComputed(({ currentTheme, systemTheme }) => ({
499
- isDarkMode: computed(() => currentTheme() === AXPThemeVariant.Dark || (currentTheme() === AXPThemeVariant.System && systemTheme() === AXPThemeVariant.Dark)),
500
- isLightMode: computed(() => currentTheme() === AXPThemeVariant.Light || (currentTheme() === AXPThemeVariant.System && systemTheme() === AXPThemeVariant.Light)),
39
+ isDarkMode: computed(() => currentTheme() === AXPThemeVariant.Dark ||
40
+ (currentTheme() === AXPThemeVariant.System && systemTheme() === AXPThemeVariant.Dark)),
41
+ isLightMode: computed(() => currentTheme() === AXPThemeVariant.Light ||
42
+ (currentTheme() === AXPThemeVariant.System && systemTheme() === AXPThemeVariant.Light)),
501
43
  isSystemMode: computed(() => currentTheme() === AXPThemeVariant.System),
502
44
  })),
503
45
  // Methods for State Management
@@ -531,11 +73,16 @@ withMethods((store, settingService = inject(AXPSettingsService)) => {
531
73
  };
532
74
  }),
533
75
  // Lifecycle Hooks
534
- withHooks(store => ({
76
+ withHooks((store, settingService = inject(AXPSettingsService)) => ({
535
77
  onInit() {
536
- // Initial theme synchronization with system
537
- debugger;
538
- store.applyCurrentTheme();
78
+ //
79
+ (async () => {
80
+ const settingTheme = (await settingService.get(THEME_VARIANT_KEY)) ?? AXPThemeVariant.System;
81
+ if (settingTheme) {
82
+ patchState(store, { currentTheme: settingTheme });
83
+ }
84
+ store.applyCurrentTheme();
85
+ })();
539
86
  // Set up event listener for system theme changes
540
87
  const listener = store.setupListener();
541
88
  patchState(store, { listener });
@@ -556,113 +103,107 @@ class AXPThemeSlotComponent {
556
103
  }
557
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPThemeSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
558
105
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPThemeSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
559
- <!-- <ax-button color="default" look="blank" (onClick)="switchMode()" >
560
- <ax-icon>
561
- @if(isDark())
562
- {
563
- <i class="fa-solid fa-brightness ax-text-slate-400 dark:ax-text-slate-200" ></i>
564
- }
565
- @else {
566
- <i class="fa-solid fa-moon ax-text-slate-400 dark:ax-text-slate-200" ></i>
567
- }
568
- </ax-icon>
569
- </ax-button> -->
570
-
571
- <ax-button look="blank" >
572
- <ax-icon class="fa-regular ax-text-slate-400 dark:ax-text-slate-200"
573
- [ngClass]="{
106
+ <ax-button look="blank">
107
+ <ax-icon
108
+ class="fa-regular "
109
+ [ngClass]="{
574
110
  'fa-desktop':store.isSystemMode(),
575
111
  'fa-moon':!store.isSystemMode() && store.isDarkMode(),
576
112
  'fa-brightness':!store.isSystemMode() && !store.isDarkMode(),
577
- }">
578
- </ax-icon>
579
- <ax-dropdown-panel>
580
- <ax-button-item-list>
581
- <ax-button-item (onClick)="store.changeTheme(variants.Light)" text="Light" [selected]="!store.isSystemMode() && !store.isDarkMode()" >
582
- <ax-prefix>
583
- <ax-icon icon="fa-regular fa-brightness"> </ax-icon>
584
- </ax-prefix>
585
- </ax-button-item>
586
- <ax-button-item (onClick)="store.changeTheme(variants.Dark)" text="Dark" [selected]="!store.isSystemMode() && store.isDarkMode()" >
587
- <ax-prefix>
588
- <ax-icon icon="fa-regular fa-moon"> </ax-icon>
589
- </ax-prefix>
590
- </ax-button-item>
591
- <ax-button-item (onClick)="store.changeTheme(variants.System)" text="System" [selected]="store.isSystemMode()" >
592
- <ax-prefix>
593
- <ax-icon icon="fa-regular fa-desktop"> </ax-icon>
594
- </ax-prefix>
595
- </ax-button-item>
596
- </ax-button-item-list>
597
- </ax-dropdown-panel>
598
- </ax-button>
599
-
600
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i6.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i6.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i6.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i12.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }] }); }
113
+ }"
114
+ >
115
+ </ax-icon>
116
+ <ax-dropdown-panel *translate="let t">
117
+ <ax-button-item-list>
118
+ <ax-button-item
119
+ (onClick)="store.changeTheme(variants.Light)"
120
+ [text]="(t('theme.light') | async)!"
121
+ [selected]="!store.isSystemMode() && !store.isDarkMode()"
122
+ >
123
+ <ax-prefix>
124
+ <ax-icon icon="fa-solid fa-brightness"> </ax-icon>
125
+ </ax-prefix>
126
+ </ax-button-item>
127
+ <ax-button-item
128
+ (onClick)="store.changeTheme(variants.Dark)"
129
+ [text]="(t('theme.dark') | async)!"
130
+ [selected]="!store.isSystemMode() && store.isDarkMode()"
131
+ >
132
+ <ax-prefix>
133
+ <ax-icon icon="fa-solid fa-moon"> </ax-icon>
134
+ </ax-prefix>
135
+ </ax-button-item>
136
+ <ax-button-item
137
+ (onClick)="store.changeTheme(variants.System)"
138
+ [text]="(t('theme.system') | async)!"
139
+ [selected]="store.isSystemMode()"
140
+ >
141
+ <ax-prefix>
142
+ <ax-icon icon="fa-solid fa-desktop"> </ax-icon>
143
+ </ax-prefix>
144
+ </ax-button-item>
145
+ </ax-button-item-list>
146
+ </ax-dropdown-panel>
147
+ </ax-button>
148
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }] }); }
601
149
  }
602
150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPThemeSlotComponent, decorators: [{
603
151
  type: Component,
604
152
  args: [{
605
153
  template: `
606
- <!-- <ax-button color="default" look="blank" (onClick)="switchMode()" >
607
- <ax-icon>
608
- @if(isDark())
609
- {
610
- <i class="fa-solid fa-brightness ax-text-slate-400 dark:ax-text-slate-200" ></i>
611
- }
612
- @else {
613
- <i class="fa-solid fa-moon ax-text-slate-400 dark:ax-text-slate-200" ></i>
614
- }
615
- </ax-icon>
616
- </ax-button> -->
617
-
618
- <ax-button look="blank" >
619
- <ax-icon class="fa-regular ax-text-slate-400 dark:ax-text-slate-200"
620
- [ngClass]="{
154
+ <ax-button look="blank">
155
+ <ax-icon
156
+ class="fa-regular "
157
+ [ngClass]="{
621
158
  'fa-desktop':store.isSystemMode(),
622
159
  'fa-moon':!store.isSystemMode() && store.isDarkMode(),
623
160
  'fa-brightness':!store.isSystemMode() && !store.isDarkMode(),
624
- }">
625
- </ax-icon>
626
- <ax-dropdown-panel>
627
- <ax-button-item-list>
628
- <ax-button-item (onClick)="store.changeTheme(variants.Light)" text="Light" [selected]="!store.isSystemMode() && !store.isDarkMode()" >
629
- <ax-prefix>
630
- <ax-icon icon="fa-regular fa-brightness"> </ax-icon>
631
- </ax-prefix>
632
- </ax-button-item>
633
- <ax-button-item (onClick)="store.changeTheme(variants.Dark)" text="Dark" [selected]="!store.isSystemMode() && store.isDarkMode()" >
634
- <ax-prefix>
635
- <ax-icon icon="fa-regular fa-moon"> </ax-icon>
636
- </ax-prefix>
637
- </ax-button-item>
638
- <ax-button-item (onClick)="store.changeTheme(variants.System)" text="System" [selected]="store.isSystemMode()" >
639
- <ax-prefix>
640
- <ax-icon icon="fa-regular fa-desktop"> </ax-icon>
641
- </ax-prefix>
642
- </ax-button-item>
643
- </ax-button-item-list>
644
- </ax-dropdown-panel>
645
- </ax-button>
646
-
647
- `,
161
+ }"
162
+ >
163
+ </ax-icon>
164
+ <ax-dropdown-panel *translate="let t">
165
+ <ax-button-item-list>
166
+ <ax-button-item
167
+ (onClick)="store.changeTheme(variants.Light)"
168
+ [text]="(t('theme.light') | async)!"
169
+ [selected]="!store.isSystemMode() && !store.isDarkMode()"
170
+ >
171
+ <ax-prefix>
172
+ <ax-icon icon="fa-solid fa-brightness"> </ax-icon>
173
+ </ax-prefix>
174
+ </ax-button-item>
175
+ <ax-button-item
176
+ (onClick)="store.changeTheme(variants.Dark)"
177
+ [text]="(t('theme.dark') | async)!"
178
+ [selected]="!store.isSystemMode() && store.isDarkMode()"
179
+ >
180
+ <ax-prefix>
181
+ <ax-icon icon="fa-solid fa-moon"> </ax-icon>
182
+ </ax-prefix>
183
+ </ax-button-item>
184
+ <ax-button-item
185
+ (onClick)="store.changeTheme(variants.System)"
186
+ [text]="(t('theme.system') | async)!"
187
+ [selected]="store.isSystemMode()"
188
+ >
189
+ <ax-prefix>
190
+ <ax-icon icon="fa-solid fa-desktop"> </ax-icon>
191
+ </ax-prefix>
192
+ </ax-button-item>
193
+ </ax-button-item-list>
194
+ </ax-dropdown-panel>
195
+ </ax-button>
196
+ `,
648
197
  standalone: true,
649
- imports: [
650
- CommonModule,
651
- AXButtonModule,
652
- AXDecoratorModule,
653
- AXDropdownModule,
654
- ]
198
+ imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule],
655
199
  }]
656
200
  }] });
657
201
 
658
202
  class AXPThemesSharedModule {
659
- constructor() {
660
- this.themeService = inject(AXPLayoutThemeService);
661
- this.themeService.applyCurrentTheme();
662
- }
203
+ constructor() { }
663
204
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPThemesSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
664
205
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXPThemesSharedModule }); }
665
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPThemesSharedModule, providers: [AXPLayoutThemeService] }); }
206
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPThemesSharedModule }); }
666
207
  }
667
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPThemesSharedModule, decorators: [{
668
209
  type: NgModule,
@@ -670,7 +211,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
670
211
  imports: [],
671
212
  exports: [],
672
213
  declarations: [],
673
- providers: [AXPLayoutThemeService]
214
+ providers: [],
674
215
  }]
675
216
  }], ctorParameters: () => [] });
676
217
 
@@ -678,5 +219,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
678
219
  * Generated bundle index. Do not edit.
679
220
  */
680
221
 
681
- export { AXPCommentListViewComponent, AXPCommentLookupPopup, AXPCommentService, AXPLayoutThemeService, AXPThemeSlotComponent, AXPThemeVariant, AXPThemesSharedModule };
222
+ export { AXPLayoutThemeService, AXPThemeSlotComponent, AXPThemeVariant, AXPThemesSharedModule };
682
223
  //# sourceMappingURL=acorex-platform-themes-shared.mjs.map