@acorex/platform 19.1.5 → 19.1.7
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.
- package/auth/lib/permission/index.d.ts +4 -3
- package/auth/lib/permission/permission.service.d.ts +18 -0
- package/auth/lib/permission/permission.types.d.ts +5 -0
- package/common/index.d.ts +3 -2
- package/common/lib/app/application.types.d.ts +16 -4
- package/common/lib/layout/menu/index.d.ts +4 -2
- package/common/lib/layout/menu/search-definition.provider.d.ts +4 -0
- package/common/lib/layout/menu/search.provider.d.ts +20 -0
- package/common/lib/search/index.d.ts +5 -0
- package/common/lib/search/search-definition.builder.d.ts +23 -0
- package/common/lib/search/search-definition.provider.d.ts +18 -0
- package/common/lib/search/search.provider.d.ts +4 -0
- package/common/lib/search/search.service.d.ts +12 -0
- package/common/lib/search/search.types.d.ts +42 -0
- package/common/lib/settings/search-definition.provider.d.ts +4 -0
- package/common/lib/settings/search.provider.d.ts +10 -0
- package/fesm2022/acorex-platform-auth.mjs +78 -43
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +1439 -2234
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +20 -7
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-filters.mjs +0 -2
- package/fesm2022/acorex-platform-layout-filters.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-search.mjs +183 -0
- package/fesm2022/acorex-platform-layout-search.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-setting.mjs +21 -20
- package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-K9B_-q_K.mjs → acorex-platform-themes-default-entity-master-create-view.component-DpWOMxW9.mjs} +5 -5
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-K9B_-q_K.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-DpWOMxW9.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-xlBBA76O.mjs → acorex-platform-themes-default-entity-master-list-view.component-BUL6ti4U.mjs} +14 -14
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BUL6ti4U.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-Cd2gxLZt.mjs → acorex-platform-themes-default-entity-master-modify-view.component-C1kGZwYp.mjs} +3 -3
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-Cd2gxLZt.mjs.map → acorex-platform-themes-default-entity-master-modify-view.component-C1kGZwYp.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-6sZdw013.mjs → acorex-platform-themes-default-entity-master-single-view.component-CAgt5S3B.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-6sZdw013.mjs.map → acorex-platform-themes-default-entity-master-single-view.component-CAgt5S3B.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default-search-popup.component-Blpan821.mjs +62 -0
- package/fesm2022/acorex-platform-themes-default-search-popup.component-Blpan821.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-setting-page.component-BYpCgHZb.mjs → acorex-platform-themes-default-setting-page.component-BXwdFLy4.mjs} +3 -3
- package/fesm2022/{acorex-platform-themes-default-setting-page.component-BYpCgHZb.mjs.map → acorex-platform-themes-default-setting-page.component-BXwdFLy4.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-setting-view.component-CdmIphX1.mjs → acorex-platform-themes-default-setting-view.component-BXsmvaIi.mjs} +5 -5
- package/fesm2022/{acorex-platform-themes-default-setting-view.component-CdmIphX1.mjs.map → acorex-platform-themes-default-setting-view.component-BXsmvaIi.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +29 -17
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +2 -2
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-widgets.mjs +164 -99
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/layout/entity/lib/index.d.ts +1 -0
- package/{layouts/lib/admin/entity-layout → layout/entity/lib}/workflows/index.d.ts +1 -1
- package/layout/search/README.md +3 -0
- package/layout/search/index.d.ts +1 -0
- package/layout/search/lib/index.d.ts +3 -0
- package/layout/search/lib/search-slot.component.d.ts +9 -0
- package/layout/search/lib/search.config.d.ts +5 -0
- package/layout/search/lib/search.module.d.ts +11 -0
- package/layout/search/lib/search.viewmodel.d.ts +13 -0
- package/layout/search/lib/workflows/search.workflow.d.ts +10 -0
- package/layout/setting/lib/setting.viewmodel.d.ts +1 -1
- package/package.json +13 -13
- package/themes/default/lib/layouts/search-layout/search-popup.component.d.ts +11 -0
- package/themes/shared/index.d.ts +1 -1
- package/themes/shared/lib/components/layout-elements/index.d.ts +1 -1
- package/themes/shared/lib/components/layout-elements/{layout-list-component.d.ts → layout-list.component.d.ts} +1 -1
- package/themes/shared/lib/components/{theme-slot.component.d.ts → slots/theme-slot.component.d.ts} +7 -7
- package/widgets/lib/widgets/filters/date-time-filter/date-time-filter-widget-edit.component.d.ts +2 -3
- package/widgets/lib/widgets/filters/select-filter/select-filter-widget-edit.component.d.ts +1 -1
- package/widgets/lib/widgets/property-editors/flex-options/flex-options-widget-editor.component.d.ts +15 -9
- package/widgets/lib/widgets/property-editors/property-editor-helper.d.ts +6 -5
- package/widgets/lib/widgets/property-editors/spacing/spacing-widget-editor.component.d.ts +1 -0
- package/common/lib/schema/component-loader.d.ts +0 -24
- package/common/lib/schema/entity/entity-registery.service.d.ts +0 -34
- package/common/lib/schema/entity/entity.class.d.ts +0 -161
- package/common/lib/schema/entity/entity.loader.d.ts +0 -9
- package/common/lib/schema/entity/index.d.ts +0 -3
- package/common/lib/schema/formats.d.ts +0 -8
- package/common/lib/schema/index.d.ts +0 -8
- package/common/lib/schema/schema-registery.service.d.ts +0 -20
- package/common/lib/schema/schema.module.d.ts +0 -12
- package/common/lib/schema/schema.types.d.ts +0 -16
- package/common/lib/schema/widget/index.d.ts +0 -5
- package/common/lib/schema/widget/widget-base.d.ts +0 -45
- package/common/lib/schema/widget/widget-column-renderer.d.ts +0 -34
- package/common/lib/schema/widget/widget-filter-renderer.d.ts +0 -30
- package/common/lib/schema/widget/widget-renderer.d.ts +0 -27
- package/common/lib/schema/widget/widget-token.d.ts +0 -16
- package/common/lib/schema/widgets/avatar/avatar-widget-edit.component.d.ts +0 -16
- package/common/lib/schema/widgets/avatar/avatar-widget-view.component.d.ts +0 -13
- package/common/lib/schema/widgets/checkbox/checkbox-widget-column.component.d.ts +0 -11
- package/common/lib/schema/widgets/checkbox/checkbox-widget-edit.component.d.ts +0 -6
- package/common/lib/schema/widgets/checkbox/checkbox-widget-view.component.d.ts +0 -11
- package/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.d.ts +0 -18
- package/common/lib/schema/widgets/common-widget-filter/number-widget-filter.component.d.ts +0 -12
- package/common/lib/schema/widgets/common-widget-filter/string-widget-filter.component.d.ts +0 -12
- package/common/lib/schema/widgets/common-widgets.module.d.ts +0 -32
- package/common/lib/schema/widgets/dateTime/dateTime-widget-column.component.d.ts +0 -11
- package/common/lib/schema/widgets/dateTime/dateTime-widget-edit.component.d.ts +0 -24
- package/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.d.ts +0 -19
- package/common/lib/schema/widgets/dateTime/dateTime-widget-view.component.d.ts +0 -11
- package/common/lib/schema/widgets/email/email-widget-column.component.d.ts +0 -16
- package/common/lib/schema/widgets/email/email-widget-edit.component.d.ts +0 -26
- package/common/lib/schema/widgets/email/email-widget-view.component.d.ts +0 -16
- package/common/lib/schema/widgets/file/file-widget-column.component.d.ts +0 -8
- package/common/lib/schema/widgets/file/file-widget-edit.component.d.ts +0 -17
- package/common/lib/schema/widgets/file/file-widget-filter.component.d.ts +0 -6
- package/common/lib/schema/widgets/file/file-widget-view.component.d.ts +0 -17
- package/common/lib/schema/widgets/gallery/gallery-widget-edit.component.d.ts +0 -15
- package/common/lib/schema/widgets/gallery/gallery-widget-filter.component.d.ts +0 -6
- package/common/lib/schema/widgets/gallery/gallery-widget-types.d.ts +0 -10
- package/common/lib/schema/widgets/gallery/gallery-widget-view.component.d.ts +0 -16
- package/common/lib/schema/widgets/index.d.ts +0 -1
- package/common/lib/schema/widgets/lookup/lookup-widget-column.component.d.ts +0 -17
- package/common/lib/schema/widgets/lookup/lookup-widget-edit.component.d.ts +0 -18
- package/common/lib/schema/widgets/lookup/lookup-widget-filter.component.d.ts +0 -17
- package/common/lib/schema/widgets/lookup/lookup-widget-view.component.d.ts +0 -18
- package/common/lib/schema/widgets/map/map-widget-edit.component.d.ts +0 -15
- package/common/lib/schema/widgets/map/map-widget-view.component.d.ts +0 -17
- package/common/lib/schema/widgets/messenger/messenger-widget-column.component.d.ts +0 -15
- package/common/lib/schema/widgets/messenger/messenger-widget-edit.component.d.ts +0 -14
- package/common/lib/schema/widgets/messenger/messenger-widget-view.component.d.ts +0 -17
- package/common/lib/schema/widgets/number/number-widget-edit.component.d.ts +0 -7
- package/common/lib/schema/widgets/number/number-widget-view.component.d.ts +0 -8
- package/common/lib/schema/widgets/password/change-password.component.d.ts +0 -16
- package/common/lib/schema/widgets/password/password-widget-column.component.d.ts +0 -14
- package/common/lib/schema/widgets/password/password-widget-edit.component.d.ts +0 -6
- package/common/lib/schema/widgets/password/password-widget-view.component.d.ts +0 -18
- package/common/lib/schema/widgets/phone/phone-widget-column.component.d.ts +0 -15
- package/common/lib/schema/widgets/phone/phone-widget-edit.component.d.ts +0 -29
- package/common/lib/schema/widgets/phone/phone-widget-view.component.d.ts +0 -18
- package/common/lib/schema/widgets/rich-text/rich-text-widget-column.component.d.ts +0 -11
- package/common/lib/schema/widgets/rich-text/rich-text-widget-edit.component.d.ts +0 -33
- package/common/lib/schema/widgets/rich-text/rich-text-widget-view.component.d.ts +0 -10
- package/common/lib/schema/widgets/selection-list/selection-list-widget-column.component.d.ts +0 -16
- package/common/lib/schema/widgets/selection-list/selection-list-widget-edit.component.d.ts +0 -12
- package/common/lib/schema/widgets/selection-list/selection-list-widget-filter.component.d.ts +0 -9
- package/common/lib/schema/widgets/selection-list/selection-list-widget-view.component.d.ts +0 -15
- package/common/lib/schema/widgets/signature-pad/signature-pad-widget-edit.component.d.ts +0 -19
- package/common/lib/schema/widgets/signature-pad/signature-pad-widget-view.component.d.ts +0 -8
- package/common/lib/schema/widgets/text/largetext-widget-edit.component.d.ts +0 -6
- package/common/lib/schema/widgets/text/text-widget-column.component.d.ts +0 -12
- package/common/lib/schema/widgets/text/text-widget-edit.component.d.ts +0 -21
- package/common/lib/schema/widgets/text/text-widget-view.component.d.ts +0 -11
- package/common/lib/schema/widgets/toggle/toggle-widget-column.component.d.ts +0 -11
- package/common/lib/schema/widgets/toggle/toggle-widget-edit.component.d.ts +0 -6
- package/common/lib/schema/widgets/toggle/toggle-widget-view.component.d.ts +0 -11
- package/fesm2022/acorex-platform-common-avatar-widget-edit.component-syRKKn21.mjs +0 -166
- package/fesm2022/acorex-platform-common-avatar-widget-edit.component-syRKKn21.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-DSju_bgg.mjs +0 -64
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-DSju_bgg.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-aaKT0FyC.mjs +0 -155
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-aaKT0FyC.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-change-password.component-DFoC5nP2.mjs +0 -176
- package/fesm2022/acorex-platform-common-change-password.component-DFoC5nP2.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-column.component-DZxykkVr.mjs +0 -55
- package/fesm2022/acorex-platform-common-checkbox-widget-column.component-DZxykkVr.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-CNmYVpMu.mjs +0 -24
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-CNmYVpMu.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-view.component-3XLnJx9A.mjs +0 -49
- package/fesm2022/acorex-platform-common-checkbox-widget-view.component-3XLnJx9A.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-CKaMC189.mjs +0 -46
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-CKaMC189.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-edit.component-B50J-bwp.mjs +0 -178
- package/fesm2022/acorex-platform-common-dateTime-widget-edit.component-B50J-bwp.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-CTV2a3c0.mjs +0 -286
- package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-CTV2a3c0.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-view.component-C7hmUXLz.mjs +0 -73
- package/fesm2022/acorex-platform-common-dateTime-widget-view.component-C7hmUXLz.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-column.component-BPoSZTqM.mjs +0 -75
- package/fesm2022/acorex-platform-common-email-widget-column.component-BPoSZTqM.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-edit.component-aLPGOG3r.mjs +0 -249
- package/fesm2022/acorex-platform-common-email-widget-edit.component-aLPGOG3r.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-view.component-dMByK5bc.mjs +0 -109
- package/fesm2022/acorex-platform-common-email-widget-view.component-dMByK5bc.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-column.component-Dafc2zLc.mjs +0 -29
- package/fesm2022/acorex-platform-common-file-widget-column.component-Dafc2zLc.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-edit.component-C31kfJSw.mjs +0 -202
- package/fesm2022/acorex-platform-common-file-widget-edit.component-C31kfJSw.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-filter.component-BNCcBun4.mjs +0 -29
- package/fesm2022/acorex-platform-common-file-widget-filter.component-BNCcBun4.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-view.component-T3r6musY.mjs +0 -155
- package/fesm2022/acorex-platform-common-file-widget-view.component-T3r6musY.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-edit.component-zBsaBkzu.mjs +0 -191
- package/fesm2022/acorex-platform-common-gallery-widget-edit.component-zBsaBkzu.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-BhLYuB6p.mjs +0 -29
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-BhLYuB6p.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-view.component-Dxf4Oj1E.mjs +0 -175
- package/fesm2022/acorex-platform-common-gallery-widget-view.component-Dxf4Oj1E.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-BYMIaLCI.mjs +0 -38
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-BYMIaLCI.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-BB0Mdx2u.mjs +0 -45
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-BB0Mdx2u.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-DUPsS_ZW.mjs +0 -96
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-DUPsS_ZW.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-CLyl94AJ.mjs +0 -161
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-CLyl94AJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-CJijszjn.mjs +0 -56
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-CJijszjn.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-edit.component-BTHORlG5.mjs +0 -94
- package/fesm2022/acorex-platform-common-map-widget-edit.component-BTHORlG5.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-view.component-CQzW1ZeD.mjs +0 -66
- package/fesm2022/acorex-platform-common-map-widget-view.component-CQzW1ZeD.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-Brm4vLGA.mjs +0 -73
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-Brm4vLGA.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-CJHvut2C.mjs +0 -138
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-CJHvut2C.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-view.component-DVylp_2t.mjs +0 -133
- package/fesm2022/acorex-platform-common-messenger-widget-view.component-DVylp_2t.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-edit.component-DZf-n-yr.mjs +0 -48
- package/fesm2022/acorex-platform-common-number-widget-edit.component-DZf-n-yr.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-filter.component-womVAhSr.mjs +0 -137
- package/fesm2022/acorex-platform-common-number-widget-filter.component-womVAhSr.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-view.component-L2pxAqqz.mjs +0 -33
- package/fesm2022/acorex-platform-common-number-widget-view.component-L2pxAqqz.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-column.component-3ubqJk-d.mjs +0 -68
- package/fesm2022/acorex-platform-common-password-widget-column.component-3ubqJk-d.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-edit.component-BokyEDfK.mjs +0 -43
- package/fesm2022/acorex-platform-common-password-widget-edit.component-BokyEDfK.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-view.component-BuFoE2fz.mjs +0 -110
- package/fesm2022/acorex-platform-common-password-widget-view.component-BuFoE2fz.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-phone-widget-column.component-79Me_VNP.mjs +0 -93
- package/fesm2022/acorex-platform-common-phone-widget-column.component-79Me_VNP.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-phone-widget-edit.component-CIayMoT1.mjs +0 -249
- package/fesm2022/acorex-platform-common-phone-widget-edit.component-CIayMoT1.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-phone-widget-view.component-B1Xu_rxC.mjs +0 -124
- package/fesm2022/acorex-platform-common-phone-widget-view.component-B1Xu_rxC.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-column.component-Dbn3JMOu.mjs +0 -63
- package/fesm2022/acorex-platform-common-rich-text-widget-column.component-Dbn3JMOu.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-CHT12edE.mjs +0 -69
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-CHT12edE.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-qvUpx39D.mjs +0 -37
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-qvUpx39D.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-column.component-E7yRTViz.mjs +0 -47
- package/fesm2022/acorex-platform-common-selection-list-widget-column.component-E7yRTViz.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-B8dmJ_jJ.mjs +0 -55
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-B8dmJ_jJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-i4syx0Bj.mjs +0 -47
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-i4syx0Bj.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-B7disiIF.mjs +0 -47
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-B7disiIF.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-signature-pad-widget-edit.component-CMoiIhgJ.mjs +0 -130
- package/fesm2022/acorex-platform-common-signature-pad-widget-edit.component-CMoiIhgJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-HfArY6VQ.mjs +0 -43
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-HfArY6VQ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-string-widget-filter.component-CDssxMLR.mjs +0 -127
- package/fesm2022/acorex-platform-common-string-widget-filter.component-CDssxMLR.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-text-widget-column.component-7yp4qqIb.mjs +0 -49
- package/fesm2022/acorex-platform-common-text-widget-column.component-7yp4qqIb.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-text-widget-edit.component-5koh5Aws.mjs +0 -162
- package/fesm2022/acorex-platform-common-text-widget-edit.component-5koh5Aws.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-text-widget-view.component-BH0LTD80.mjs +0 -69
- package/fesm2022/acorex-platform-common-text-widget-view.component-BH0LTD80.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-column.component-C5dMjerm.mjs +0 -59
- package/fesm2022/acorex-platform-common-toggle-widget-column.component-C5dMjerm.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-JOnGMn-9.mjs +0 -27
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-JOnGMn-9.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-view.component-DguoIz_c.mjs +0 -51
- package/fesm2022/acorex-platform-common-toggle-widget-view.component-DguoIz_c.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-1Yw4H3CW.mjs +0 -121
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-1Yw4H3CW.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts-entity-import-view.component-BIHTWoXR.mjs +0 -91
- package/fesm2022/acorex-platform-layouts-entity-import-view.component-BIHTWoXR.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Cb2Yvtav.mjs +0 -96
- package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Cb2Yvtav.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts.mjs +0 -2483
- package/fesm2022/acorex-platform-layouts.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-xlBBA76O.mjs.map +0 -1
- package/layouts/README.md +0 -3
- package/layouts/index.d.ts +0 -2
- package/layouts/lib/admin/admin.module.d.ts +0 -11
- package/layouts/lib/admin/admin.routes.d.ts +0 -2
- package/layouts/lib/admin/custom-reuse.strategy.d.ts +0 -8
- package/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.d.ts +0 -20
- package/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.config.d.ts +0 -54
- package/layouts/lib/admin/entity-layout/entity-details-view/detail-view.config.d.ts +0 -48
- package/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.d.ts +0 -83
- package/layouts/lib/admin/entity-layout/entity-details-view/index.d.ts +0 -2
- package/layouts/lib/admin/entity-layout/entity-import-view/entity-import-view.component.d.ts +0 -27
- package/layouts/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.d.ts +0 -46
- package/layouts/lib/admin/entity-layout/entity-list-view/components/index.d.ts +0 -5
- package/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.d.ts +0 -20
- package/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.d.ts +0 -33
- package/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-filter-operator.component.d.ts +0 -18
- package/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.d.ts +0 -21
- package/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.d.ts +0 -79
- package/layouts/lib/admin/entity-layout/entity-list-view/index.d.ts +0 -4
- package/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.d.ts +0 -113
- package/layouts/lib/admin/entity-layout/entity-list-view/list-view.module.d.ts +0 -42
- package/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.d.ts +0 -25
- package/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.config.d.ts +0 -31
- package/layouts/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.d.ts +0 -24
- package/layouts/lib/admin/entity-layout/entity-quick-view/index.d.ts +0 -1
- package/layouts/lib/admin/entity-layout/index.d.ts +0 -4
- package/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.d.ts +0 -31
- package/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.d.ts +0 -33
- package/layouts/lib/admin/entity-layout/workflows/import-entity.workflow.d.ts +0 -27
- package/layouts/lib/admin/entity-layout/workflows/modify-entity.workflow.d.ts +0 -32
- package/layouts/lib/admin/entity-layout/workflows/modify-section.workflow.d.ts +0 -12
- package/layouts/lib/admin/entity-layout/workflows/show-details.workflow.d.ts +0 -10
- package/layouts/lib/admin/entity-layout/workflows/show-list.workflow.d.ts +0 -10
- package/layouts/lib/admin/entity-layout/workflows/show-quick-view.workflow.d.ts +0 -12
- package/layouts/lib/admin/entity.resolver.d.ts +0 -4
- package/layouts/lib/admin/index.d.ts +0 -5
- package/layouts/lib/layout.module.d.ts +0 -9
|
@@ -13,12 +13,10 @@ class AXPFiltersViewModel {
|
|
|
13
13
|
this.newFilters = signal([]);
|
|
14
14
|
this.activeFiltersCount = computed(() => this.activeFilters().length);
|
|
15
15
|
this.#effect = effect(() => {
|
|
16
|
-
console.log(this.context());
|
|
17
16
|
this.filters.update((prev) => ({ ...prev, filters: this.convertContextToQueries(this.context()) }));
|
|
18
17
|
});
|
|
19
18
|
this.#effect1 = effect(() => {
|
|
20
19
|
this.initializeContext();
|
|
21
|
-
console.log(this.filters().filters);
|
|
22
20
|
this.activeFilters.update((prev) => {
|
|
23
21
|
return this.convertFiltersToDefinition(this.filters().filters || []);
|
|
24
22
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-layout-filters.mjs","sources":["../../../../libs/platform/layout/filters/src/lib/filters.viewmodel.ts","../../../../libs/platform/layout/filters/src/acorex-platform-layout-filters.ts"],"sourcesContent":["import { AXValueChangedEvent } from '@acorex/components/common';\nimport { AXPFilterDefinition, AXPFilterQuery, AXPFiltersProviderService } from '@acorex/platform/common';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { computed, effect, inject, Injectable, ModelSignal, signal, WritableSignal } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash-es';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPFiltersViewModel {\n private readonly filterProviderService = inject(AXPFiltersProviderService);\n\n context: WritableSignal<{ [key: string]: any }> = signal({}, { equal: isEqual });\n\n readonly availableFilters: WritableSignal<AXPFilterDefinition[]> = signal([]);\n readonly activeFilters: WritableSignal<AXPFilterDefinition[]> = signal([]);\n readonly newFilters: WritableSignal<AXPFilterDefinition[]> = signal([]);\n\n protected filters!: ModelSignal<AXPFilterQuery>;\n\n readonly activeFiltersCount = computed(() => this.activeFilters().length);\n\n onChoosingFiltersChange(e: AXValueChangedEvent<any>) {\n if (e.isUserInteraction) {\n this.newFilters.set(e.component.selectedItems);\n }\n }\n\n onChoosingFiltersConfirm() {\n this.filters.update((prev) => ({\n ...prev,\n filters: [\n ...(prev.filters || []),\n ...this.newFilters().filter(\n (newFilter) => !prev.filters?.some((existing) => existing.field === newFilter.field)\n ),\n ],\n }));\n }\n\n convertFiltersToDefinition(filters: AXPFilterQuery[]): AXPFilterDefinition[] {\n const availableFiltersMap = new Map(this.availableFilters().map((af) => [af.field, af]));\n return filters\n .map((df) => {\n const af = availableFiltersMap.get(df.field);\n if (!af) return null;\n return {\n field: df.field,\n operator: df.operator,\n filters: df.filters,\n logic: df.logic,\n value: df.value,\n title: af.title,\n widget: af.widget,\n isParametric: af.isParametric,\n };\n })\n .filter((filter) => filter !== null) as AXPFilterDefinition[];\n }\n\n setAvailableFilters(availableFilters: AXPFilterDefinition[]) {\n this.availableFilters.set(availableFilters);\n }\n\n setFiltersModel(filters: ModelSignal<AXPFilterQuery>) {\n this.filters = filters;\n }\n\n drop(event: CdkDragDrop<unknown[]>) {\n const cloned = cloneDeep(this.activeFilters());\n moveItemInArray(cloned, event.previousIndex, event.currentIndex);\n this.activeFilters.set(cloned);\n }\n\n convertContextToQueries(context: any): AXPFilterQuery[] {\n const contextKeys = Object.keys(context);\n return contextKeys.map((c) => ({\n field: c,\n value: context[c].value,\n operator: {\n type: context[c].operation,\n },\n }));\n }\n\n resetFilterFields() {\n this.newFilters.set(this.activeFilters());\n }\n\n removeCondition(selectedFilter: AXPFilterDefinition) {\n this.context.update((prev) => {\n const newContext = { ...prev };\n delete newContext[selectedFilter.field];\n return newContext;\n });\n }\n\n #effect = effect(() => {\n
|
|
1
|
+
{"version":3,"file":"acorex-platform-layout-filters.mjs","sources":["../../../../libs/platform/layout/filters/src/lib/filters.viewmodel.ts","../../../../libs/platform/layout/filters/src/acorex-platform-layout-filters.ts"],"sourcesContent":["import { AXValueChangedEvent } from '@acorex/components/common';\nimport { AXPFilterDefinition, AXPFilterQuery, AXPFiltersProviderService } from '@acorex/platform/common';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { computed, effect, inject, Injectable, ModelSignal, signal, WritableSignal } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash-es';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPFiltersViewModel {\n private readonly filterProviderService = inject(AXPFiltersProviderService);\n\n context: WritableSignal<{ [key: string]: any }> = signal({}, { equal: isEqual });\n\n readonly availableFilters: WritableSignal<AXPFilterDefinition[]> = signal([]);\n readonly activeFilters: WritableSignal<AXPFilterDefinition[]> = signal([]);\n readonly newFilters: WritableSignal<AXPFilterDefinition[]> = signal([]);\n\n protected filters!: ModelSignal<AXPFilterQuery>;\n\n readonly activeFiltersCount = computed(() => this.activeFilters().length);\n\n onChoosingFiltersChange(e: AXValueChangedEvent<any>) {\n if (e.isUserInteraction) {\n this.newFilters.set(e.component.selectedItems);\n }\n }\n\n onChoosingFiltersConfirm() {\n this.filters.update((prev) => ({\n ...prev,\n filters: [\n ...(prev.filters || []),\n ...this.newFilters().filter(\n (newFilter) => !prev.filters?.some((existing) => existing.field === newFilter.field)\n ),\n ],\n }));\n }\n\n convertFiltersToDefinition(filters: AXPFilterQuery[]): AXPFilterDefinition[] {\n const availableFiltersMap = new Map(this.availableFilters().map((af) => [af.field, af]));\n return filters\n .map((df) => {\n const af = availableFiltersMap.get(df.field);\n if (!af) return null;\n return {\n field: df.field,\n operator: df.operator,\n filters: df.filters,\n logic: df.logic,\n value: df.value,\n title: af.title,\n widget: af.widget,\n isParametric: af.isParametric,\n };\n })\n .filter((filter) => filter !== null) as AXPFilterDefinition[];\n }\n\n setAvailableFilters(availableFilters: AXPFilterDefinition[]) {\n this.availableFilters.set(availableFilters);\n }\n\n setFiltersModel(filters: ModelSignal<AXPFilterQuery>) {\n this.filters = filters;\n }\n\n drop(event: CdkDragDrop<unknown[]>) {\n const cloned = cloneDeep(this.activeFilters());\n moveItemInArray(cloned, event.previousIndex, event.currentIndex);\n this.activeFilters.set(cloned);\n }\n\n convertContextToQueries(context: any): AXPFilterQuery[] {\n const contextKeys = Object.keys(context);\n return contextKeys.map((c) => ({\n field: c,\n value: context[c].value,\n operator: {\n type: context[c].operation,\n },\n }));\n }\n\n resetFilterFields() {\n this.newFilters.set(this.activeFilters());\n }\n\n removeCondition(selectedFilter: AXPFilterDefinition) {\n this.context.update((prev) => {\n const newContext = { ...prev };\n delete newContext[selectedFilter.field];\n return newContext;\n });\n }\n\n #effect = effect(() => {\n this.filters.update((prev) => ({ ...prev, filters: this.convertContextToQueries(this.context()) }));\n });\n\n #effect1 = effect(() => {\n this.initializeContext();\n this.activeFilters.update((prev) => {\n return this.convertFiltersToDefinition(this.filters().filters || []);\n });\n });\n\n private initializeContext() {\n const context: any = {};\n\n if (this.filters()?.filters?.length) {\n this.filters().filters?.forEach((f) => {\n context[f.field] = {\n value: f.value,\n operation: f.operator.type,\n };\n });\n }\n this.context.set(context);\n }\n\n initializeFilters(): void {\n this.initializeContext();\n this.activeFilters.update((prev) => this.convertFiltersToDefinition(this.filters().filters || []));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Component, HostListener, Injectable, NgModule, signal, computed } from '@angular/core';
|
|
3
|
+
import * as i1$1 from '@acorex/platform/common';
|
|
4
|
+
import { AXPComponentSlotModule, AXPSearchService } from '@acorex/platform/common';
|
|
5
|
+
import * as i2$1 from '@acorex/platform/workflow';
|
|
6
|
+
import { AXPWorkflowService, AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
|
|
7
|
+
import * as i1 from '@acorex/components/button';
|
|
8
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
9
|
+
import * as i2 from '@acorex/components/decorators';
|
|
10
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
11
|
+
import { CommonModule } from '@angular/common';
|
|
12
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
|
13
|
+
import { AXPopupService } from '@acorex/components/popup';
|
|
14
|
+
|
|
15
|
+
const AXP_GLOBAL_SEARCH_CONFIG_TOKEN = new InjectionToken('AXP_GLOBAL_SEARCH_CONFIG_TOKEN');
|
|
16
|
+
|
|
17
|
+
class AXPGlobalSearchSlotComponent {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.workflow = inject(AXPWorkflowService);
|
|
20
|
+
}
|
|
21
|
+
async startSearch() {
|
|
22
|
+
await this.workflow.execute('global-search');
|
|
23
|
+
}
|
|
24
|
+
async handleKeyboardEvent(event) {
|
|
25
|
+
if (event.ctrlKey && event.target == document.body) {
|
|
26
|
+
switch (event.code) {
|
|
27
|
+
case 'KeyK':
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
event.stopPropagation();
|
|
30
|
+
await this.startSearch();
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPGlobalSearchSlotComponent, isStandalone: true, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: `
|
|
37
|
+
<ax-button look="blank" (onClick)="startSearch()">
|
|
38
|
+
<ax-icon class="fa-regular fa-search">
|
|
39
|
+
</ax-icon>
|
|
40
|
+
</ax-button>
|
|
41
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.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: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }] }); }
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchSlotComponent, decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{
|
|
46
|
+
template: `
|
|
47
|
+
<ax-button look="blank" (onClick)="startSearch()">
|
|
48
|
+
<ax-icon class="fa-regular fa-search">
|
|
49
|
+
</ax-icon>
|
|
50
|
+
</ax-button>
|
|
51
|
+
`,
|
|
52
|
+
imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule]
|
|
53
|
+
}]
|
|
54
|
+
}], propDecorators: { handleKeyboardEvent: [{
|
|
55
|
+
type: HostListener,
|
|
56
|
+
args: ['document:keydown', ['$event']]
|
|
57
|
+
}] } });
|
|
58
|
+
|
|
59
|
+
class AXPGlobalSearchStartAction extends AXPWorkflowAction {
|
|
60
|
+
constructor() {
|
|
61
|
+
super(...arguments);
|
|
62
|
+
this.popupService = inject(AXPopupService);
|
|
63
|
+
this.config = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);
|
|
64
|
+
}
|
|
65
|
+
async execute(context) {
|
|
66
|
+
const component = await this.config.window();
|
|
67
|
+
this.popupService.open(component, {
|
|
68
|
+
title: 'Search...',
|
|
69
|
+
size: 'fit',
|
|
70
|
+
closeOnBackdropClick: true,
|
|
71
|
+
data: {
|
|
72
|
+
text: context.getVariable('text')
|
|
73
|
+
},
|
|
74
|
+
header: false
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchStartAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
78
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchStartAction }); }
|
|
79
|
+
}
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchStartAction, decorators: [{
|
|
81
|
+
type: Injectable
|
|
82
|
+
}] });
|
|
83
|
+
const AXPGlobalSearchWorkflow = {
|
|
84
|
+
startStepId: 'start',
|
|
85
|
+
steps: {
|
|
86
|
+
'start': {
|
|
87
|
+
action: 'AXPGlobalSearchStartAction',
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
class AXPGlobalSearchModule {
|
|
93
|
+
constructor(appInitService, injector) {
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchModule, deps: [{ token: i1$1.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
96
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchModule, imports: [i1$1.AXPComponentSlotModule, i2$1.AXPWorkflowModule] }); }
|
|
97
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchModule, imports: [AXPComponentSlotModule.forChild({
|
|
98
|
+
'header-end': [
|
|
99
|
+
{
|
|
100
|
+
priority: 0,
|
|
101
|
+
name: 'search',
|
|
102
|
+
component: AXPGlobalSearchSlotComponent,
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
}),
|
|
106
|
+
//
|
|
107
|
+
AXPWorkflowModule.forChild({
|
|
108
|
+
actions: {
|
|
109
|
+
AXPGlobalSearchStartAction
|
|
110
|
+
},
|
|
111
|
+
workflows: {
|
|
112
|
+
'global-search': AXPGlobalSearchWorkflow,
|
|
113
|
+
},
|
|
114
|
+
})] }); }
|
|
115
|
+
}
|
|
116
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchModule, decorators: [{
|
|
117
|
+
type: NgModule,
|
|
118
|
+
args: [{
|
|
119
|
+
imports: [
|
|
120
|
+
AXPComponentSlotModule.forChild({
|
|
121
|
+
'header-end': [
|
|
122
|
+
{
|
|
123
|
+
priority: 0,
|
|
124
|
+
name: 'search',
|
|
125
|
+
component: AXPGlobalSearchSlotComponent,
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
}),
|
|
129
|
+
//
|
|
130
|
+
AXPWorkflowModule.forChild({
|
|
131
|
+
actions: {
|
|
132
|
+
AXPGlobalSearchStartAction
|
|
133
|
+
},
|
|
134
|
+
workflows: {
|
|
135
|
+
'global-search': AXPGlobalSearchWorkflow,
|
|
136
|
+
},
|
|
137
|
+
})
|
|
138
|
+
],
|
|
139
|
+
exports: [],
|
|
140
|
+
declarations: [],
|
|
141
|
+
providers: []
|
|
142
|
+
}]
|
|
143
|
+
}], ctorParameters: () => [{ type: i1$1.AXPAppStartUpService }, { type: i0.Injector }] });
|
|
144
|
+
|
|
145
|
+
class AXPGlobalSearchViewModel {
|
|
146
|
+
constructor() {
|
|
147
|
+
this.searchService = inject(AXPSearchService);
|
|
148
|
+
this._text = signal(null);
|
|
149
|
+
this.text = this._text.asReadonly();
|
|
150
|
+
this._results = signal([]);
|
|
151
|
+
this.results = this._results.asReadonly();
|
|
152
|
+
this._isBusy = signal(false);
|
|
153
|
+
this.isBusy = this._isBusy.asReadonly();
|
|
154
|
+
this.isEmpty = computed(() => this.text() && this.results().length == 0);
|
|
155
|
+
this.isStart = computed(() => !this.text() && this.results().length == 0);
|
|
156
|
+
}
|
|
157
|
+
async search(text) {
|
|
158
|
+
this._isBusy.set(true);
|
|
159
|
+
this._text.set(text);
|
|
160
|
+
//
|
|
161
|
+
if (!this.text()) {
|
|
162
|
+
this._results.set([]);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
await new Promise((resolve) => {
|
|
166
|
+
setTimeout(() => {
|
|
167
|
+
resolve(0);
|
|
168
|
+
}, 100);
|
|
169
|
+
});
|
|
170
|
+
const results = await this.searchService.search(text);
|
|
171
|
+
this._results.set(results);
|
|
172
|
+
}
|
|
173
|
+
//
|
|
174
|
+
this._isBusy.set(false);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Generated bundle index. Do not edit.
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
export { AXPGlobalSearchModule, AXPGlobalSearchViewModel, AXP_GLOBAL_SEARCH_CONFIG_TOKEN };
|
|
183
|
+
//# sourceMappingURL=acorex-platform-layout-search.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-layout-search.mjs","sources":["../../../../libs/platform/layout/search/src/lib/search.config.ts","../../../../libs/platform/layout/search/src/lib/search-slot.component.ts","../../../../libs/platform/layout/search/src/lib/workflows/search.workflow.ts","../../../../libs/platform/layout/search/src/lib/search.module.ts","../../../../libs/platform/layout/search/src/lib/search.viewmodel.ts","../../../../libs/platform/layout/search/src/acorex-platform-layout-search.ts"],"sourcesContent":["import { InjectionToken, Type } from \"@angular/core\";\n\nexport interface AXPGlobalSearchConfigs {\n window: () => Type<any>;\n}\n\nexport const AXP_GLOBAL_SEARCH_CONFIG_TOKEN = new InjectionToken<AXPGlobalSearchConfigs>('AXP_GLOBAL_SEARCH_CONFIG_TOKEN');","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport { Component, HostListener, inject } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\n\n@Component({\n template: `\n <ax-button look=\"blank\" (onClick)=\"startSearch()\">\n <ax-icon class=\"fa-regular fa-search\">\n </ax-icon>\n </ax-button>\n `,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule]\n})\nexport class AXPGlobalSearchSlotComponent {\n\n protected workflow = inject(AXPWorkflowService);\n\n protected async startSearch() {\n await this.workflow.execute('global-search')\n }\n\n @HostListener('document:keydown', ['$event'])\n private async handleKeyboardEvent(event: KeyboardEvent) {\n if (event.ctrlKey && event.target == document.body) {\n switch (event.code) {\n case 'KeyK':\n event.preventDefault();\n event.stopPropagation();\n await this.startSearch();\n break;\n }\n }\n\n }\n}\n","import { AXPopupService } from \"@acorex/components/popup\";\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from \"@acorex/platform/workflow\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from \"../search.config\";\n\n@Injectable()\nexport class AXPGlobalSearchStartAction extends AXPWorkflowAction {\n\n private popupService = inject(AXPopupService);\n private config = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);\n\n override async execute(context: AXPWorkflowContext): Promise<void> {\n const component = await this.config.window();\n this.popupService.open(component, {\n title: 'Search...',\n size: 'fit',\n closeOnBackdropClick: true,\n data: {\n text: context.getVariable('text')\n },\n header: false\n });\n }\n}\n\nexport const AXPGlobalSearchWorkflow: AXPWorkflow = {\n startStepId: 'start',\n steps: {\n 'start': {\n action: 'AXPGlobalSearchStartAction',\n },\n },\n};","import { AXPAppStartUpService, AXPComponentSlotModule } from '@acorex/platform/common';\nimport { Injector, NgModule } from '@angular/core';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { AXPGlobalSearchSlotComponent } from './search-slot.component';\nimport { AXPGlobalSearchStartAction, AXPGlobalSearchWorkflow } from './workflows/search.workflow';\n\n@NgModule({\n imports: [\n AXPComponentSlotModule.forChild({\n 'header-end': [\n {\n priority: 0,\n name: 'search',\n component: AXPGlobalSearchSlotComponent,\n },\n ],\n }),\n //\n AXPWorkflowModule.forChild({\n actions: {\n AXPGlobalSearchStartAction\n },\n workflows: {\n 'global-search': AXPGlobalSearchWorkflow,\n },\n })\n ],\n exports: [],\n declarations: [],\n providers: []\n})\nexport class AXPGlobalSearchModule {\n constructor(\n appInitService: AXPAppStartUpService,\n injector: Injector\n ) {\n\n }\n}\n","import { AXPSearchDisplayGroupResult, AXPSearchService } from \"@acorex/platform/common\";\nimport { computed, inject, signal } from \"@angular/core\";\n\nexport class AXPGlobalSearchViewModel {\n\n private searchService = inject(AXPSearchService);\n\n private _text = signal<string | null>(null);\n public text = this._text.asReadonly();\n\n private _results = signal<AXPSearchDisplayGroupResult[]>([]);\n public results = this._results.asReadonly();\n\n private _isBusy = signal(false);\n public isBusy = this._isBusy.asReadonly();\n\n public isEmpty = computed(() => this.text() && this.results().length == 0);\n\n public isStart = computed(() => !this.text() && this.results().length == 0);\n\n public async search(text: string): Promise<void> {\n this._isBusy.set(true)\n this._text.set(text);\n //\n if (!this.text()) {\n this._results.set([]);\n }\n else {\n await new Promise((resolve) => {\n setTimeout(() => {\n resolve(0)\n }, 100);\n });\n const results = await this.searchService.search(text);\n this._results.set(results);\n }\n //\n this._isBusy.set(false)\n }\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
+
import { AXDialogService } from '@acorex/components/dialog';
|
|
1
2
|
import { AXToastService } from '@acorex/components/toast';
|
|
2
3
|
import { AXPSettingScope, AXPSettingDefinitionProviderService, AXPSettingValueProviderService } from '@acorex/platform/common';
|
|
3
4
|
import { AXHighlightService } from '@acorex/platform/core';
|
|
5
|
+
import { AXPPageStatus } from '@acorex/platform/layout/builder';
|
|
6
|
+
import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
|
|
4
7
|
import * as i0 from '@angular/core';
|
|
5
8
|
import { inject, signal, computed, effect, Injectable } from '@angular/core';
|
|
6
9
|
import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';
|
|
7
|
-
import { filter, take } from 'rxjs';
|
|
8
10
|
import { isNil, isEmpty, get, isEqual } from 'lodash-es';
|
|
9
|
-
import {
|
|
10
|
-
import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
|
|
11
|
-
import { AXDialogService } from '@acorex/components/dialog';
|
|
11
|
+
import { filter, take } from 'rxjs';
|
|
12
12
|
|
|
13
13
|
function searchSettings(groups, search) {
|
|
14
14
|
const sectionMatchResult = [];
|
|
@@ -107,7 +107,6 @@ class AXPSettingsViewModel {
|
|
|
107
107
|
else {
|
|
108
108
|
return null;
|
|
109
109
|
}
|
|
110
|
-
;
|
|
111
110
|
});
|
|
112
111
|
this.hasGroup = computed(() => this.activateGroup() != null);
|
|
113
112
|
this.showSide = computed(() => this.layout.isLarge() && this.hasGroup());
|
|
@@ -118,18 +117,18 @@ class AXPSettingsViewModel {
|
|
|
118
117
|
});
|
|
119
118
|
this.context = signal({});
|
|
120
119
|
this.previousContext = signal({});
|
|
121
|
-
this.settingValueService.onChanged.pipe(filter(c => c.scope == this.resolveScope())).subscribe((e) => {
|
|
122
|
-
e.keys.forEach(k => {
|
|
120
|
+
this.settingValueService.onChanged.pipe(filter((c) => c.scope == this.resolveScope())).subscribe((e) => {
|
|
121
|
+
e.keys.forEach((k) => {
|
|
123
122
|
const currentValue = e.values[k];
|
|
124
123
|
const contextValue = get(this.context(), k);
|
|
125
124
|
const previousValue = get(this.previousContext(), k);
|
|
126
125
|
// Update only if there are actual changes
|
|
127
126
|
if (!isEqual(previousValue, currentValue) || !isEqual(currentValue, contextValue)) {
|
|
128
|
-
this.previousContext.update(prev => ({
|
|
127
|
+
this.previousContext.update((prev) => ({
|
|
129
128
|
...prev,
|
|
130
129
|
[k]: currentValue, // Use backend-provided value
|
|
131
130
|
}));
|
|
132
|
-
this.context.update(ctx => ({
|
|
131
|
+
this.context.update((ctx) => ({
|
|
133
132
|
...ctx,
|
|
134
133
|
[k]: currentValue,
|
|
135
134
|
}));
|
|
@@ -159,10 +158,10 @@ class AXPSettingsViewModel {
|
|
|
159
158
|
}
|
|
160
159
|
}
|
|
161
160
|
async updateGroupParam() {
|
|
162
|
-
const query = this.activatedRoute.snapshot.queryParams[
|
|
161
|
+
const query = this.activatedRoute.snapshot.queryParams['q'];
|
|
163
162
|
const scope = this.resolveScope();
|
|
164
|
-
const group = this.activatedRoute.snapshot.paramMap.get(
|
|
165
|
-
if ((this.activeScope() && this.activeScope() != scope) ||
|
|
163
|
+
const group = this.activatedRoute.snapshot.paramMap.get('group');
|
|
164
|
+
if ((this.activeScope() && this.activeScope() != scope) || this.activateGroup() != group) {
|
|
166
165
|
this.activateGroup.set(undefined);
|
|
167
166
|
await this.load();
|
|
168
167
|
return;
|
|
@@ -235,15 +234,15 @@ class AXPSettingsViewModel {
|
|
|
235
234
|
isDirty(section) {
|
|
236
235
|
if (section) {
|
|
237
236
|
// Check for changes in the specific section
|
|
238
|
-
return section.settings.some(c => !isEqual(get(this.context(), c.name), get(this.previousContext(), c.name)));
|
|
237
|
+
return section.settings.some((c) => !isEqual(get(this.context(), c.name), get(this.previousContext(), c.name)));
|
|
239
238
|
}
|
|
240
239
|
else {
|
|
241
240
|
// Check for changes globally based on loadedItems keys
|
|
242
|
-
return this.loadedItems()?.some(group => group.sections.some(sec => sec.settings.some(setting => {
|
|
241
|
+
return (this.loadedItems()?.some((group) => group.sections.some((sec) => sec.settings.some((setting) => {
|
|
243
242
|
const currentValue = get(this.context(), setting.name);
|
|
244
243
|
const previousValue = get(this.previousContext(), setting.name);
|
|
245
244
|
return !isEqual(currentValue, previousValue);
|
|
246
|
-
}))) || false;
|
|
245
|
+
}))) || false);
|
|
247
246
|
}
|
|
248
247
|
}
|
|
249
248
|
// Save settings logic
|
|
@@ -269,7 +268,7 @@ class AXPSettingsViewModel {
|
|
|
269
268
|
if (section) {
|
|
270
269
|
// Apply changes for the specific section
|
|
271
270
|
const changes = {};
|
|
272
|
-
section.settings.forEach(c => {
|
|
271
|
+
section.settings.forEach((c) => {
|
|
273
272
|
changes[c.name] = get(this.context(), c.name);
|
|
274
273
|
});
|
|
275
274
|
if (!isEmpty(changes)) {
|
|
@@ -315,11 +314,11 @@ class AXPSettingsViewModel {
|
|
|
315
314
|
this.form.resetErrors();
|
|
316
315
|
if (section) {
|
|
317
316
|
// Discard changes for the specific section
|
|
318
|
-
section.settings.forEach(c => {
|
|
317
|
+
section.settings.forEach((c) => {
|
|
319
318
|
const previousValue = get(this.previousContext(), c.name);
|
|
320
|
-
this.context.update(ctx => ({
|
|
319
|
+
this.context.update((ctx) => ({
|
|
321
320
|
...ctx,
|
|
322
|
-
[c.name]: previousValue
|
|
321
|
+
[c.name]: previousValue,
|
|
323
322
|
}));
|
|
324
323
|
});
|
|
325
324
|
}
|
|
@@ -342,7 +341,9 @@ class AXPSettingsViewModel {
|
|
|
342
341
|
const scope = this.activatedRoute.snapshot.params['scope'];
|
|
343
342
|
//
|
|
344
343
|
if (this.isValidQuery(expression)) {
|
|
345
|
-
await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? ''], {
|
|
344
|
+
await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? ''], {
|
|
345
|
+
queryParams: { q: expression },
|
|
346
|
+
});
|
|
346
347
|
}
|
|
347
348
|
else {
|
|
348
349
|
await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? '']);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-layout-setting.mjs","sources":["../../../../libs/platform/layout/setting/src/lib/convert-setting-data.ts","../../../../libs/platform/layout/setting/src/lib/setting.viewmodel.ts","../../../../libs/platform/layout/setting/src/acorex-platform-layout-setting.ts"],"sourcesContent":["import { AXPSettingDefinitionGroup, AXPSettingDefinitionSection } from '@acorex/platform/common';\n\n\nexport function searchSettings(groups: AXPSettingDefinitionGroup[], search: string): AXPSettingDefinitionGroup[] {\n const sectionMatchResult: AXPSettingDefinitionGroup[] = [];\n const settingMatchResult: AXPSettingDefinitionGroup[] = [];\n const processedGroups = new Set<string>();\n\n const createGroupIdentifier = (group: AXPSettingDefinitionGroup): string => `${group.name}-${group.title}`;\n\n const addGroupToResult = (\n group: AXPSettingDefinitionGroup,\n sections: AXPSettingDefinitionSection[],\n resultArray: AXPSettingDefinitionGroup[]\n ) => {\n const groupId = createGroupIdentifier(group);\n if (!processedGroups.has(groupId)) {\n resultArray.push({\n ...group,\n sections,\n groups: [], // Exclude nested groups\n });\n processedGroups.add(groupId);\n }\n };\n\n const processSections = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => boolean\n ) => {\n const matchedSections = group.sections.filter(filterFn);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, sectionMatchResult);\n }\n };\n\n const processSettings = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => AXPSettingDefinitionSection | null\n ) => {\n const matchedSections = group.sections\n .map(filterFn)\n .filter((section): section is AXPSettingDefinitionSection => section !== null);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, settingMatchResult);\n }\n };\n\n const sectionMatches = (section: AXPSettingDefinitionSection): boolean =>\n section.name.toLowerCase().includes(search.toLowerCase()) ||\n section.title.toLowerCase().includes(search.toLowerCase());\n\n const filterSettings = (section: AXPSettingDefinitionSection): AXPSettingDefinitionSection | null => {\n const matchedSettings = section.settings.filter(\n (setting) =>\n setting.name.toLowerCase().includes(search.toLowerCase()) ||\n setting.title.toLowerCase().includes(search.toLowerCase())\n );\n return matchedSettings.length > 0 ? { ...section, settings: matchedSettings } : null;\n };\n\n const processGroupRecursively = (group: AXPSettingDefinitionGroup) => {\n processSections(group, sectionMatches); // Match sections with all settings\n processSettings(group, filterSettings); // Match settings within sections\n group.groups.forEach(processGroupRecursively); // Recurse into nested groups\n };\n\n groups.forEach(processGroupRecursively);\n\n return [...sectionMatchResult, ...settingMatchResult];\n}\n","import { AXToastService } from '@acorex/components/toast';\nimport {\n AXPGroupSearchResult,\n AXPSettingDefinitionGroup,\n AXPSettingDefinitionProviderService,\n AXPSettingDefinitionSection,\n AXPSettingScope,\n AXPSettingScopeKey,\n AXPSettingValueProviderService,\n} from '@acorex/platform/common';\nimport { AXHighlightService } from '@acorex/platform/core';\nimport { computed, effect, inject, Injectable, input, signal } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { filter, take } from 'rxjs';\nimport { searchSettings } from './convert-setting-data';\nimport { get, isEmpty, isEqual, isNil, } from 'lodash-es';\nimport { AXPLayoutBuilderService, AXPLayoutContextChangeEvent, AXPPageStatus } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXFormComponent } from '@acorex/components/form';\nimport { AXDialogService } from '@acorex/components/dialog';\n\n\n@Injectable()\nexport class AXPSettingsViewModel {\n\n private readonly router = inject(Router);\n private readonly settingDefinitionService = inject(AXPSettingDefinitionProviderService);\n private readonly settingValueService = inject(AXPSettingValueProviderService);\n private readonly toastService = inject(AXToastService);\n private readonly dialogService = inject(AXDialogService);\n private readonly highlightService = inject(AXHighlightService);\n public readonly layout = inject(AXPLayoutThemeService);\n private activatedRoute = inject(ActivatedRoute);\n\n public form: AXFormComponent;\n public builder: AXPLayoutBuilderService;\n\n\n public searchExpression = signal('');\n private isValidQuery = (expression: string) => !isNil(expression) && !isEmpty(expression);\n public isSearching = computed(() => this.isValidQuery(this.searchExpression()));\n\n public searchResult = signal<AXPSettingDefinitionGroup[]>([]);\n public isSaving = signal(false);\n\n public isBusy = signal(false);\n\n public activateGroup = signal<string | undefined>(undefined);\n private activeScope = signal<AXPSettingScopeKey>('U');\n\n public loadedItems = signal<AXPSettingDefinitionGroup[] | null>(null);\n\n private scopeName = () => {\n return this.activatedRoute?.snapshot?.paramMap?.get('scope')?.trim().toLowerCase() ?? 'user';\n };\n\n private resolveScopeKey(name: string): AXPSettingScopeKey {\n const scopeMap: Record<string, AXPSettingScopeKey> = {\n environment: AXPSettingScope.Environment,\n global: AXPSettingScope.Global,\n tenant: AXPSettingScope.Tenant,\n user: AXPSettingScope.User,\n };\n return scopeMap[name.toLowerCase()] ?? AXPSettingScope.User;\n }\n\n private resolveScope(): AXPSettingScope {\n return this.resolveScopeKey(this.scopeName()) as AXPSettingScope;\n }\n\n public title = computed(() => {\n // fake change detect simulate\n this.activeScope();\n //\n return `settings.${this.scopeName()}.title`;\n });\n\n\n groups = computed<AXPGroupSearchResult | null>(() => {\n if (this.activateGroup()) {\n return this.settingDefinitionService.findGroup(this.activeScope(), this.activateGroup()!);\n } else {\n return null\n };\n });\n\n public hasGroup = computed(() => this.activateGroup() != null);\n public showSide = computed(() => this.layout.isLarge() && this.hasGroup());\n\n #effect2 = effect(\n () => {\n if (this.searchExpression()) {\n this.searchResult.set(searchSettings(this.loadedItems()!, this.searchExpression()));\n }\n }\n );\n\n\n /**\n * @ignore\n */\n constructor() {\n this.settingValueService.onChanged.pipe(filter(c => c.scope == this.resolveScope())).subscribe((e) => {\n e.keys.forEach(k => {\n const currentValue = e.values[k];\n const contextValue = get(this.context(), k);\n const previousValue = get(this.previousContext(), k);\n // Update only if there are actual changes\n if (!isEqual(previousValue, currentValue) || !isEqual(currentValue, contextValue)) {\n this.previousContext.update(prev => ({\n ...prev,\n [k]: currentValue, // Use backend-provided value\n }));\n this.context.update(ctx => ({\n ...ctx,\n [k]: currentValue,\n }));\n }\n });\n });\n this.load();\n //\n this.router.events.pipe(\n filter((event) => event instanceof NavigationEnd)\n ).subscribe(async () => {\n await this.updateGroupParam();\n });\n }\n\n async load() {\n //\n this.activeScope.set(this.resolveScope());\n //\n const items = await this.settingDefinitionService.getListAsync(this.activeScope());\n this.loadedItems.set(items);\n const currentContext = await this.settingValueService.scope(this.resolveScope()).all();\n const defaults = await this.settingValueService.scope(this.resolveScope()).defaultValues();\n this.context.set({ ...defaults, ...currentContext });\n this.previousContext.set(this.context());\n //\n await this.updateGroupParam();\n if (!this.activateGroup() && this.layout.isLarge() && !this.isSearching()) {\n await this.redirectToFirstGroup();\n }\n }\n\n\n\n\n private async updateGroupParam(): Promise<void> {\n const query = this.activatedRoute.snapshot.queryParams[\"q\"];\n const scope = this.resolveScope();\n const group = this.activatedRoute.snapshot.paramMap.get(\"group\");\n\n if ((this.activeScope() && this.activeScope() != scope) || (this.activateGroup() != group)) {\n this.activateGroup.set(undefined);\n await this.load();\n return;\n }\n\n if (this.isValidQuery(query)) {\n this.searchExpression.set(query);\n }\n if (this.isSearching()) {\n setTimeout(() => {\n this.highlightService.highlight('#ax-settings', this.searchExpression());\n }, 100);\n }\n else {\n this.highlightService.clear();\n }\n\n // If no child routes exist, set activateGroup to undefined\n if (this.activatedRoute.children.length === 0) {\n this.activateGroup.set(undefined);\n return;\n }\n // Traverse child routes to check for the group parameter\n for (const childRoute of this.activatedRoute.children) {\n const params = await childRoute.paramMap.pipe(take(1)).toPromise();\n const group = params?.get('group');\n if (group) {\n this.activateGroup.set(group);\n }\n }\n }\n\n public async redirectToFirstGroup(): Promise<void> {\n const firstGroup = this.determineFirstGroup();\n if (firstGroup) {\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n await this.router.navigate([app, 'settings', scope, firstGroup], { replaceUrl: true });\n }\n }\n\n public async navigateUpLevel(): Promise<void> {\n const func = async () => {\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n await this.router.navigate([app, 'settings', scope]);\n }\n\n if (this.isDirty()) {\n const dialogResult = await this.dialogService.confirm('Unsaved Changes', 'You have unsaved changes. Are you sure you want to go back without saving?', 'warning');\n if (dialogResult.result) {\n await func();\n }\n }\n else {\n await func();\n }\n }\n\n private determineFirstGroup(): string | null {\n const groups = this.loadedItems();\n return groups && groups.length > 0 ? groups[0].name : null;\n }\n\n public handleSelectGroup(item: AXPSettingDefinitionGroup) {\n this.router.navigate([`${item.name}`], { relativeTo: this.activatedRoute });\n this.searchExpression.set('');\n }\n\n context = signal<Record<any, any>>({});\n private previousContext = signal<Record<any, any>>({});\n\n async handleContextChanged(e: AXPLayoutContextChangeEvent) {\n if (e.state == 'initiated') {\n this.previousContext.set(e.data);\n }\n else {\n this.context.set(e.data);\n }\n }\n\n\n isDirty(section?: AXPSettingDefinitionSection): boolean {\n if (section) {\n // Check for changes in the specific section\n return section.settings.some(c =>\n !isEqual(get(this.context(), c.name), get(this.previousContext(), c.name))\n );\n } else {\n // Check for changes globally based on loadedItems keys\n return this.loadedItems()?.some(group =>\n group.sections.some(sec =>\n sec.settings.some(setting => {\n const currentValue = get(this.context(), setting.name);\n const previousValue = get(this.previousContext(), setting.name);\n return !isEqual(currentValue, previousValue);\n })\n )\n ) || false;\n }\n }\n\n // Save settings logic\n public async apply(section?: AXPSettingDefinitionSection): Promise<void> {\n try {\n this.isSaving.set(true);\n this.builder.setStatus(AXPPageStatus.Submitting);\n\n const formResult = await this.form.validate();\n if (!formResult.result) {\n this.toastService.show({\n color: 'danger',\n title: 'Review Needed',\n content: 'Invalid configuration detected. Please review your inputs.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n this.isSaving.set(false);\n this.builder.setStatus(AXPPageStatus.Error);\n return;\n }\n\n if (section) {\n // Apply changes for the specific section\n const changes: Record<string, any> = {}\n section.settings.forEach(c => {\n changes[c.name] = get(this.context(), c.name);\n });\n if (!isEmpty(changes)) {\n await this.settingValueService.scope(this.resolveScope()).set(changes);\n }\n } else {\n // Save the settings\n await this.settingValueService.scope(this.resolveScope()).set(this.context());\n }\n this.builder.setStatus(AXPPageStatus.Submitted);\n // Show success notification\n this.toastService.show({\n color: 'success',\n title: 'Settings Saved',\n content: 'Your changes have been saved successfully.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n } catch (error: any) {\n // Handle and show errors\n this.builder.setStatus(AXPPageStatus.Error);\n console.error('Error saving settings:', error);\n this.toastService.show({\n color: 'danger',\n title: 'Save Failed',\n content: error?.['message'] || 'An error occurred while saving your settings. Please try again.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 5000,\n timeOutProgress: true,\n });\n } finally {\n this.isSaving.set(false);\n }\n }\n\n // discard settings logic\n public async discard(section?: AXPSettingDefinitionSection): Promise<void> {\n this.form.resetErrors();\n if (section) {\n // Discard changes for the specific section\n section.settings.forEach(c => {\n const previousValue = get(this.previousContext(), c.name);\n this.context.update(ctx => ({\n ...ctx,\n [c.name]: previousValue\n }));\n });\n } else {\n // Discard changes for all sections\n this.context.set(this.previousContext());\n }\n }\n\n // Cancel settings logic\n public async resetToDefault(): Promise<void> {\n const defaults = await this.settingValueService.scope(this.resolveScope()).defaultValues();\n // Update the context with the defaults\n this.context.set(defaults);\n //\n await this.apply();\n }\n\n\n public async search(expression: string) {\n this.searchExpression.set(expression);\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n //\n if (this.isValidQuery(expression)) {\n await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? ''], { queryParams: { q: expression } });\n }\n else {\n await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? '']);\n }\n }\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAGgB,SAAA,cAAc,CAAC,MAAmC,EAAE,MAAc,EAAA;IAChF,MAAM,kBAAkB,GAAgC,EAAE;IAC1D,MAAM,kBAAkB,GAAgC,EAAE;AAC1D,IAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU;AAEzC,IAAA,MAAM,qBAAqB,GAAG,CAAC,KAAgC,KAAa,CAAA,EAAG,KAAK,CAAC,IAAI,CAAI,CAAA,EAAA,KAAK,CAAC,KAAK,EAAE;IAE1G,MAAM,gBAAgB,GAAG,CACvB,KAAgC,EAChC,QAAuC,EACvC,WAAwC,KACtC;AACF,QAAA,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACjC,WAAW,CAAC,IAAI,CAAC;AACf,gBAAA,GAAG,KAAK;gBACR,QAAQ;gBACR,MAAM,EAAE,EAAE;AACX,aAAA,CAAC;AACF,YAAA,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;;AAEhC,KAAC;AAED,IAAA,MAAM,eAAe,GAAG,CACtB,KAAgC,EAChC,QAA2D,KACzD;QACF,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;AACvD,QAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAA,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,kBAAkB,CAAC;;AAEhE,KAAC;AAED,IAAA,MAAM,eAAe,GAAG,CACtB,KAAgC,EAChC,QAAsF,KACpF;AACF,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC;aAC3B,GAAG,CAAC,QAAQ;aACZ,MAAM,CAAC,CAAC,OAAO,KAA6C,OAAO,KAAK,IAAI,CAAC;AAChF,QAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAA,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,kBAAkB,CAAC;;AAEhE,KAAC;IAED,MAAM,cAAc,GAAG,CAAC,OAAoC,KAC1D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AACzD,QAAA,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAE5D,IAAA,MAAM,cAAc,GAAG,CAAC,OAAoC,KAAwC;QAClG,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAC7C,CAAC,OAAO,KACN,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AACzD,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAC7D;QACD,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI;AACtF,KAAC;AAED,IAAA,MAAM,uBAAuB,GAAG,CAAC,KAAgC,KAAI;AACnE,QAAA,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACvC,QAAA,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACvC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAChD,KAAC;AAED,IAAA,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAEvC,IAAA,OAAO,CAAC,GAAG,kBAAkB,EAAE,GAAG,kBAAkB,CAAC;AACvD;;MC/Ca,oBAAoB,CAAA;AAiCvB,IAAA,eAAe,CAAC,IAAY,EAAA;AAClC,QAAA,MAAM,QAAQ,GAAuC;YACnD,WAAW,EAAE,eAAe,CAAC,WAAW;YACxC,MAAM,EAAE,eAAe,CAAC,MAAM;YAC9B,MAAM,EAAE,eAAe,CAAC,MAAM;YAC9B,IAAI,EAAE,eAAe,CAAC,IAAI;SAC3B;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,eAAe,CAAC,IAAI;;IAGrD,YAAY,GAAA;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,CAAoB;;AAsBlE,IAAA,QAAQ;AASR;;AAEG;AACH,IAAA,WAAA,GAAA;AA5EiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,mCAAmC,CAAC;AACtE,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAC5D,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACvC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC9C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC9C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAMxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,UAAkB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAClF,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAExE,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAA8B,EAAE,CAAC;AACtD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AAExB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAEtB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,SAAS,CAAC;AACpD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAqB,GAAG,CAAC;AAE9C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAqC,IAAI,CAAC;QAE7D,IAAS,CAAA,SAAA,GAAG,MAAK;YACvB,OAAO,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,MAAM;AAC9F,SAAC;AAgBM,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;;YAE3B,IAAI,CAAC,WAAW,EAAE;;AAElB,YAAA,OAAO,YAAY,IAAI,CAAC,SAAS,EAAE,QAAQ;AAC7C,SAAC,CAAC;AAGF,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAA8B,MAAK;AAClD,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,gBAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,aAAa,EAAG,CAAC;;iBACpF;AACL,gBAAA,OAAO,IAAI;;YACZ;AACH,SAAC,CAAC;AAEK,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC;AACvD,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE1E,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CACf,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC3B,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;;AAEvF,SAAC,CACF;AAiID,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAmB,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAmB,EAAE,CAAC;AA3HpD,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACnG,YAAA,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAG;gBACjB,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChC,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC3C,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;AAEpD,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;oBACjF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,KAAK;AACnC,wBAAA,GAAG,IAAI;AACP,wBAAA,CAAC,CAAC,GAAG,YAAY;AAClB,qBAAA,CAAC,CAAC;oBACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK;AAC1B,wBAAA,GAAG,GAAG;wBACN,CAAC,CAAC,GAAG,YAAY;AAClB,qBAAA,CAAC,CAAC;;AAEP,aAAC,CAAC;AACJ,SAAC,CAAC;QACF,IAAI,CAAC,IAAI,EAAE;;QAEX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACrB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,CAClD,CAAC,SAAS,CAAC,YAAW;AACrB,YAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE;AAC/B,SAAC,CAAC;;AAGJ,IAAA,MAAM,IAAI,GAAA;;QAER,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;;AAEzC,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAClF,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE;AACtF,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,aAAa,EAAE;AAC1F,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;;AAExC,QAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACzE,YAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE;;;AAO7B,IAAA,MAAM,gBAAgB,GAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;AAC3D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;QAEhE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,KAAK,CAAC,EAAE;AAC1F,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;AACjC,YAAA,MAAM,IAAI,CAAC,IAAI,EAAE;YACjB;;AAGF,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;;AAElC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzE,EAAE,GAAG,CAAC;;aAEJ;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;;;QAI/B,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;YACjC;;;QAGF,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AACrD,YAAA,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;YAClE,MAAM,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC;YAClC,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;;;;AAK5B,IAAA,MAAM,oBAAoB,GAAA;AAC/B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAC7C,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACtD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;YAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;;AAInF,IAAA,MAAM,eAAe,GAAA;AAC1B,QAAA,MAAM,IAAI,GAAG,YAAW;AACtB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACtD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1D,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACtD,SAAC;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,4EAA4E,EAAE,SAAS,CAAC;AACjK,YAAA,IAAI,YAAY,CAAC,MAAM,EAAE;gBACvB,MAAM,IAAI,EAAE;;;aAGX;YACH,MAAM,IAAI,EAAE;;;IAIR,mBAAmB,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;QACjC,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI;;AAGrD,IAAA,iBAAiB,CAAC,IAA+B,EAAA;QACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,EAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AAC3E,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;;IAM/B,MAAM,oBAAoB,CAAC,CAA8B,EAAA;AACvD,QAAA,IAAI,CAAC,CAAC,KAAK,IAAI,WAAW,EAAE;YAC1B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;;aAE7B;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;;;AAK5B,IAAA,OAAO,CAAC,OAAqC,EAAA;QAC3C,IAAI,OAAO,EAAE;;AAEX,YAAA,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAC5B,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAC3E;;aACI;;AAEL,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,IACnC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IACrB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAG;AAC1B,gBAAA,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC;AACtD,gBAAA,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC;AAC/D,gBAAA,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC;AAC9C,aAAC,CAAC,CACH,CACF,IAAI,KAAK;;;;IAKP,MAAM,KAAK,CAAC,OAAqC,EAAA;AACtD,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;YAEhD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACtB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,KAAK,EAAE,eAAe;AACtB,oBAAA,OAAO,EAAE,4DAA4D;AACrE,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,eAAe,EAAE,IAAI;AACtB,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;gBAC3C;;YAGF,IAAI,OAAO,EAAE;;gBAEX,MAAM,OAAO,GAAwB,EAAE;AACvC,gBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;AAC3B,oBAAA,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/C,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACrB,oBAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;;;iBAEnE;;AAEL,gBAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;;YAE/E,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC;;AAE/C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,OAAO,EAAE,4CAA4C;AACrD,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,eAAe,EAAE,IAAI;AACtB,aAAA,CAAC;;QACF,OAAO,KAAU,EAAE;;YAEnB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;AAC3C,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC9C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC,IAAI,iEAAiE;AAChG,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,eAAe,EAAE,IAAI;AACtB,aAAA,CAAC;;gBACM;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;;;;IAKrB,MAAM,OAAO,CAAC,OAAqC,EAAA;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QACvB,IAAI,OAAO,EAAE;;AAEX,YAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;AAC3B,gBAAA,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;gBACzD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK;AAC1B,oBAAA,GAAG,GAAG;AACN,oBAAA,CAAC,CAAC,CAAC,IAAI,GAAG;AACX,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC;;aACG;;YAEL,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;;;;AAKrC,IAAA,MAAM,cAAc,GAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,aAAa,EAAE;;AAE1F,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAE1B,QAAA,MAAM,IAAI,CAAC,KAAK,EAAE;;IAIb,MAAM,MAAM,CAAC,UAAkB,EAAA;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;AACrC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACtD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;;AAE1D,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC;;aAEjH;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;;8GA/UzE,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;ACtBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-layout-setting.mjs","sources":["../../../../libs/platform/layout/setting/src/lib/convert-setting-data.ts","../../../../libs/platform/layout/setting/src/lib/setting.viewmodel.ts","../../../../libs/platform/layout/setting/src/acorex-platform-layout-setting.ts"],"sourcesContent":["import { AXPSettingDefinitionGroup, AXPSettingDefinitionSection } from '@acorex/platform/common';\n\n\nexport function searchSettings(groups: AXPSettingDefinitionGroup[], search: string): AXPSettingDefinitionGroup[] {\n const sectionMatchResult: AXPSettingDefinitionGroup[] = [];\n const settingMatchResult: AXPSettingDefinitionGroup[] = [];\n const processedGroups = new Set<string>();\n\n const createGroupIdentifier = (group: AXPSettingDefinitionGroup): string => `${group.name}-${group.title}`;\n\n const addGroupToResult = (\n group: AXPSettingDefinitionGroup,\n sections: AXPSettingDefinitionSection[],\n resultArray: AXPSettingDefinitionGroup[]\n ) => {\n const groupId = createGroupIdentifier(group);\n if (!processedGroups.has(groupId)) {\n resultArray.push({\n ...group,\n sections,\n groups: [], // Exclude nested groups\n });\n processedGroups.add(groupId);\n }\n };\n\n const processSections = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => boolean\n ) => {\n const matchedSections = group.sections.filter(filterFn);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, sectionMatchResult);\n }\n };\n\n const processSettings = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => AXPSettingDefinitionSection | null\n ) => {\n const matchedSections = group.sections\n .map(filterFn)\n .filter((section): section is AXPSettingDefinitionSection => section !== null);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, settingMatchResult);\n }\n };\n\n const sectionMatches = (section: AXPSettingDefinitionSection): boolean =>\n section.name.toLowerCase().includes(search.toLowerCase()) ||\n section.title.toLowerCase().includes(search.toLowerCase());\n\n const filterSettings = (section: AXPSettingDefinitionSection): AXPSettingDefinitionSection | null => {\n const matchedSettings = section.settings.filter(\n (setting) =>\n setting.name.toLowerCase().includes(search.toLowerCase()) ||\n setting.title.toLowerCase().includes(search.toLowerCase())\n );\n return matchedSettings.length > 0 ? { ...section, settings: matchedSettings } : null;\n };\n\n const processGroupRecursively = (group: AXPSettingDefinitionGroup) => {\n processSections(group, sectionMatches); // Match sections with all settings\n processSettings(group, filterSettings); // Match settings within sections\n group.groups.forEach(processGroupRecursively); // Recurse into nested groups\n };\n\n groups.forEach(processGroupRecursively);\n\n return [...sectionMatchResult, ...settingMatchResult];\n}\n","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXFormComponent } from '@acorex/components/form';\nimport { AXToastService } from '@acorex/components/toast';\nimport {\n AXPGroupSearchResult,\n AXPSettingDefinitionGroup,\n AXPSettingDefinitionProviderService,\n AXPSettingDefinitionSection,\n AXPSettingScope,\n AXPSettingScopeKey,\n AXPSettingValueProviderService,\n} from '@acorex/platform/common';\nimport { AXHighlightService } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService, AXPLayoutContextChangeEvent, AXPPageStatus } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { get, isEmpty, isEqual, isNil } from 'lodash-es';\nimport { filter, take } from 'rxjs';\nimport { searchSettings } from './convert-setting-data';\n\n@Injectable()\nexport class AXPSettingsViewModel {\n private readonly router = inject(Router);\n private readonly settingDefinitionService = inject(AXPSettingDefinitionProviderService);\n private readonly settingValueService = inject(AXPSettingValueProviderService);\n private readonly toastService = inject(AXToastService);\n private readonly dialogService = inject(AXDialogService);\n private readonly highlightService = inject(AXHighlightService);\n public readonly layout = inject(AXPLayoutThemeService);\n private activatedRoute = inject(ActivatedRoute);\n\n public form: AXFormComponent;\n public builder: AXPLayoutBuilderService;\n\n public searchExpression = signal('');\n private isValidQuery = (expression: string) => !isNil(expression) && !isEmpty(expression);\n public isSearching = computed(() => this.isValidQuery(this.searchExpression()));\n\n public searchResult = signal<AXPSettingDefinitionGroup[]>([]);\n public isSaving = signal(false);\n\n public isBusy = signal(false);\n\n public activateGroup = signal<string | undefined>(undefined);\n private activeScope = signal<AXPSettingScopeKey>('U');\n\n public loadedItems = signal<AXPSettingDefinitionGroup[] | null>(null);\n\n private scopeName = () => {\n return this.activatedRoute?.snapshot?.paramMap?.get('scope')?.trim().toLowerCase() ?? 'user';\n };\n\n private resolveScopeKey(name: string): AXPSettingScopeKey {\n const scopeMap: Record<string, AXPSettingScopeKey> = {\n environment: AXPSettingScope.Environment,\n global: AXPSettingScope.Global,\n tenant: AXPSettingScope.Tenant,\n user: AXPSettingScope.User,\n };\n return scopeMap[name.toLowerCase()] ?? AXPSettingScope.User;\n }\n\n private resolveScope(): AXPSettingScope {\n return this.resolveScopeKey(this.scopeName()) as AXPSettingScope;\n }\n\n public title = computed(() => {\n // fake change detect simulate\n this.activeScope();\n //\n return `settings.${this.scopeName()}.title`;\n });\n\n groups = computed<AXPGroupSearchResult | null>(() => {\n if (this.activateGroup()) {\n return this.settingDefinitionService.findGroup(this.activeScope(), this.activateGroup()!);\n } else {\n return null;\n }\n });\n\n public hasGroup = computed(() => this.activateGroup() != null);\n public showSide = computed(() => this.layout.isLarge() && this.hasGroup());\n\n #effect2 = effect(() => {\n if (this.searchExpression()) {\n this.searchResult.set(searchSettings(this.loadedItems()!, this.searchExpression()));\n }\n });\n\n /**\n * @ignore\n */\n constructor() {\n this.settingValueService.onChanged.pipe(filter((c) => c.scope == this.resolveScope())).subscribe((e) => {\n e.keys.forEach((k) => {\n const currentValue = e.values[k];\n const contextValue = get(this.context(), k);\n const previousValue = get(this.previousContext(), k);\n // Update only if there are actual changes\n if (!isEqual(previousValue, currentValue) || !isEqual(currentValue, contextValue)) {\n this.previousContext.update((prev) => ({\n ...prev,\n [k]: currentValue, // Use backend-provided value\n }));\n this.context.update((ctx) => ({\n ...ctx,\n [k]: currentValue,\n }));\n }\n });\n });\n this.load();\n //\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(async () => {\n await this.updateGroupParam();\n });\n }\n\n async load() {\n //\n this.activeScope.set(this.resolveScope());\n //\n const items = await this.settingDefinitionService.getListAsync(this.activeScope());\n this.loadedItems.set(items);\n const currentContext = await this.settingValueService.scope(this.resolveScope()).all();\n const defaults = await this.settingValueService.scope(this.resolveScope()).defaultValues();\n this.context.set({ ...defaults, ...currentContext });\n this.previousContext.set(this.context());\n //\n await this.updateGroupParam();\n if (!this.activateGroup() && this.layout.isLarge() && !this.isSearching()) {\n await this.redirectToFirstGroup();\n }\n }\n\n private async updateGroupParam(): Promise<void> {\n const query = this.activatedRoute.snapshot.queryParams['q'];\n const scope = this.resolveScope();\n const group = this.activatedRoute.snapshot.paramMap.get('group');\n\n if ((this.activeScope() && this.activeScope() != scope) || this.activateGroup() != group) {\n this.activateGroup.set(undefined);\n await this.load();\n return;\n }\n\n if (this.isValidQuery(query)) {\n this.searchExpression.set(query);\n }\n if (this.isSearching()) {\n setTimeout(() => {\n this.highlightService.highlight('#ax-settings', this.searchExpression());\n }, 100);\n } else {\n this.highlightService.clear();\n }\n\n // If no child routes exist, set activateGroup to undefined\n if (this.activatedRoute.children.length === 0) {\n this.activateGroup.set(undefined);\n return;\n }\n // Traverse child routes to check for the group parameter\n for (const childRoute of this.activatedRoute.children) {\n const params = await childRoute.paramMap.pipe(take(1)).toPromise();\n const group = params?.get('group');\n if (group) {\n this.activateGroup.set(group);\n }\n }\n }\n\n public async redirectToFirstGroup(): Promise<void> {\n const firstGroup = this.determineFirstGroup();\n if (firstGroup) {\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n await this.router.navigate([app, 'settings', scope, firstGroup], { replaceUrl: true });\n }\n }\n\n public async navigateUpLevel(): Promise<void> {\n const func = async () => {\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n await this.router.navigate([app, 'settings', scope]);\n };\n\n if (this.isDirty()) {\n const dialogResult = await this.dialogService.confirm(\n 'Unsaved Changes',\n 'You have unsaved changes. Are you sure you want to go back without saving?',\n 'warning'\n );\n if (dialogResult.result) {\n await func();\n }\n } else {\n await func();\n }\n }\n\n private determineFirstGroup(): string | null {\n const groups = this.loadedItems();\n return groups && groups.length > 0 ? groups[0].name : null;\n }\n\n public handleSelectGroup(item: AXPSettingDefinitionGroup) {\n this.router.navigate([`${item.name}`], { relativeTo: this.activatedRoute });\n this.searchExpression.set('');\n }\n\n context = signal<Record<any, any>>({});\n private previousContext = signal<Record<any, any>>({});\n\n async handleContextChanged(e: AXPLayoutContextChangeEvent) {\n if (e.state == 'initiated') {\n this.previousContext.set(e.data);\n } else {\n this.context.set(e.data);\n }\n }\n\n isDirty(section?: AXPSettingDefinitionSection): boolean {\n if (section) {\n // Check for changes in the specific section\n return section.settings.some((c) => !isEqual(get(this.context(), c.name), get(this.previousContext(), c.name)));\n } else {\n // Check for changes globally based on loadedItems keys\n return (\n this.loadedItems()?.some((group) =>\n group.sections.some((sec) =>\n sec.settings.some((setting) => {\n const currentValue = get(this.context(), setting.name);\n const previousValue = get(this.previousContext(), setting.name);\n return !isEqual(currentValue, previousValue);\n })\n )\n ) || false\n );\n }\n }\n\n // Save settings logic\n public async apply(section?: AXPSettingDefinitionSection): Promise<void> {\n try {\n this.isSaving.set(true);\n this.builder.setStatus(AXPPageStatus.Submitting);\n\n const formResult = await this.form.validate();\n if (!formResult.result) {\n this.toastService.show({\n color: 'danger',\n title: 'Review Needed',\n content: 'Invalid configuration detected. Please review your inputs.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n this.isSaving.set(false);\n this.builder.setStatus(AXPPageStatus.Error);\n return;\n }\n\n if (section) {\n // Apply changes for the specific section\n const changes: Record<string, any> = {};\n section.settings.forEach((c) => {\n changes[c.name] = get(this.context(), c.name);\n });\n if (!isEmpty(changes)) {\n await this.settingValueService.scope(this.resolveScope()).set(changes);\n }\n } else {\n // Save the settings\n await this.settingValueService.scope(this.resolveScope()).set(this.context());\n }\n this.builder.setStatus(AXPPageStatus.Submitted);\n // Show success notification\n this.toastService.show({\n color: 'success',\n title: 'Settings Saved',\n content: 'Your changes have been saved successfully.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n } catch (error: any) {\n // Handle and show errors\n this.builder.setStatus(AXPPageStatus.Error);\n console.error('Error saving settings:', error);\n this.toastService.show({\n color: 'danger',\n title: 'Save Failed',\n content: error?.['message'] || 'An error occurred while saving your settings. Please try again.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 5000,\n timeOutProgress: true,\n });\n } finally {\n this.isSaving.set(false);\n }\n }\n\n // discard settings logic\n public async discard(section?: AXPSettingDefinitionSection): Promise<void> {\n this.form.resetErrors();\n if (section) {\n // Discard changes for the specific section\n section.settings.forEach((c) => {\n const previousValue = get(this.previousContext(), c.name);\n this.context.update((ctx) => ({\n ...ctx,\n [c.name]: previousValue,\n }));\n });\n } else {\n // Discard changes for all sections\n this.context.set(this.previousContext());\n }\n }\n\n // Cancel settings logic\n public async resetToDefault(): Promise<void> {\n const defaults = await this.settingValueService.scope(this.resolveScope()).defaultValues();\n // Update the context with the defaults\n this.context.set(defaults);\n //\n await this.apply();\n }\n\n public async search(expression: string) {\n this.searchExpression.set(expression);\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n //\n if (this.isValidQuery(expression)) {\n await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? ''], {\n queryParams: { q: expression },\n });\n } else {\n await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? '']);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -21,10 +21,10 @@ import { inject, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
|
21
21
|
import { FormsModule } from '@angular/forms';
|
|
22
22
|
import { AXValidationModule } from '@acorex/core/validation';
|
|
23
23
|
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
24
|
-
import * as
|
|
24
|
+
import * as i6$1 from '@acorex/core/translation';
|
|
25
25
|
import { AXTranslationModule } from '@acorex/core/translation';
|
|
26
26
|
import { AXPGridLayoutDirective } from '@acorex/platform/common';
|
|
27
|
-
import * as i6$
|
|
27
|
+
import * as i6$2 from '@acorex/platform/layout/builder';
|
|
28
28
|
import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
29
29
|
import { AXPWidgetsModule } from '@acorex/platform/widgets';
|
|
30
30
|
import { AXPWorkflowService } from '@acorex/platform/workflow';
|
|
@@ -75,9 +75,9 @@ class AXPEntityMasterCreateViewComponent extends AXBasePageComponent {
|
|
|
75
75
|
this.vm.context.set(e.data);
|
|
76
76
|
}
|
|
77
77
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPEntityMasterCreateViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPEntityMasterCreateViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div>\n <axp-widgets-container [context]=\"vm.context()\" (onContextChanged)=\"handleContextChange($event)\">\n <ax-form class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4 ax-pb-8\" #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\n <!-- Begin Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-col-span-12\">\n <ax-form #form>\n @if(vm.sections().length>1 && !section.description())\n {\n <div class=\"ax-pb-4\">\n <span class=\"ax-font-bold ax-text-xl\">{{ section.title() | translate | async }}</span>\n @if(section.description()) {\n <p class=\"ax-text-sm ax-text-gray-500\">{{ section.description() }}</p>\n }\n </div>\n }\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.elements(); track $index) {\n <ax-form-field class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">{{\n attr.title() | translate | async\n }}</ax-label>\n <ng-container axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'edit'\"></ng-container>\n </ax-form-field>\n }\n </div>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n </ax-form>\n </axp-widgets-container>\n <ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" color=\"ghost\" [text]=\"'cancel' | translate | async\" (onClick)=\"handleCloseClick()\">\n </ax-button>\n @if(vm.canCreateNewOne())\n {\n <ax-dropdown-button [disabled]=\"vm.isInProgress()\" color=\"primary\" [text]=\"'save' | translate | async\"\n look=\"solid\" (onClick)=\"handleSaveClick(form)\">\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n <ax-button-item-list>\n <ax-button-item [text]=\"('save' | translate | async) + ' ' + ('create-new' | translate | async)\"\n (onClick)=\"handleSaveAndNewClick(form)\">\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n }@else {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'save' | translate | async\" (onClick)=\"handleSaveClick(form)\">\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n </ax-button>\n }\n </ax-suffix>\n </ax-footer>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.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: AXButtonModule }, { kind: "component", type: i4.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: i4.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i4.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i4$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i6.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i7.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: AXTranslationModule }, { kind: "pipe", type:
|
|
78
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPEntityMasterCreateViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div>\n <axp-widgets-container [context]=\"vm.context()\" (onContextChanged)=\"handleContextChange($event)\">\n <ax-form class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4 ax-pb-8\" #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\n <!-- Begin Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-col-span-12\">\n <ax-form #form>\n @if(vm.sections().length>1 && !section.description())\n {\n <div class=\"ax-pb-4\">\n <span class=\"ax-font-bold ax-text-xl\">{{ section.title() | translate | async }}</span>\n @if(section.description()) {\n <p class=\"ax-text-sm ax-text-gray-500\">{{ section.description() }}</p>\n }\n </div>\n }\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.elements(); track $index) {\n <ax-form-field class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">{{\n attr.title() | translate | async\n }}</ax-label>\n <ng-container axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'edit'\"></ng-container>\n </ax-form-field>\n }\n </div>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n </ax-form>\n </axp-widgets-container>\n <ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" color=\"ghost\" [text]=\"'cancel' | translate | async\" (onClick)=\"handleCloseClick()\">\n </ax-button>\n @if(vm.canCreateNewOne())\n {\n <ax-dropdown-button [disabled]=\"vm.isInProgress()\" color=\"primary\" [text]=\"'save' | translate | async\"\n look=\"solid\" (onClick)=\"handleSaveClick(form)\">\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n <ax-button-item-list>\n <ax-button-item [text]=\"('save' | translate | async) + ' ' + ('create-new' | translate | async)\"\n (onClick)=\"handleSaveAndNewClick(form)\">\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n }@else {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'save' | translate | async\" (onClick)=\"handleSaveClick(form)\">\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n </ax-button>\n }\n </ax-suffix>\n </ax-footer>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.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: AXButtonModule }, { kind: "component", type: i4.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: i4.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i4.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i4$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i6.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i7.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: AXTranslationModule }, { kind: "pipe", type: i6$1.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type:
|
|
79
79
|
//
|
|
80
|
-
AXPLayoutBuilderModule }, { kind: "component", type: i6$
|
|
80
|
+
AXPLayoutBuilderModule }, { kind: "component", type: i6$2.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6$2.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPGridLayoutDirective, selector: "[gridLayout]", inputs: ["gridLayout"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
81
81
|
}
|
|
82
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPEntityMasterCreateViewComponent, decorators: [{
|
|
83
83
|
type: Component,
|
|
@@ -105,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
|
105
105
|
}] });
|
|
106
106
|
|
|
107
107
|
export { AXPEntityMasterCreateViewComponent };
|
|
108
|
-
//# sourceMappingURL=acorex-platform-themes-default-entity-master-create-view.component-
|
|
108
|
+
//# sourceMappingURL=acorex-platform-themes-default-entity-master-create-view.component-DpWOMxW9.mjs.map
|