@acorex/platform 18.0.1 → 18.0.4
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/common/lib/app/application.types.d.ts +43 -26
- package/common/lib/common.module.d.ts +6 -5
- package/common/lib/data/data-provider.types.d.ts +1 -1
- package/common/lib/data/dexie-storage.service.d.ts +15 -0
- package/common/lib/data/entity-data-provider.d.ts +14 -0
- package/common/lib/data/index.d.ts +3 -0
- package/common/lib/data/storage-service.d.ts +22 -0
- package/common/lib/schema/entity/entity.class.d.ts +3 -0
- package/common/lib/utils/data-generator.d.ts +2 -0
- package/esm2022/common/lib/app/application.types.mjs +1 -1
- package/esm2022/common/lib/common.module.mjs +19 -2
- package/esm2022/common/lib/data/data-provider.types.mjs +1 -1
- package/esm2022/common/lib/data/dexie-storage.service.mjs +36 -0
- package/esm2022/common/lib/data/entity-data-provider.mjs +26 -0
- package/esm2022/common/lib/data/index.mjs +4 -1
- package/esm2022/common/lib/data/storage-service.mjs +5 -0
- package/esm2022/common/lib/schema/entity/entity-registery.service.mjs +2 -2
- package/esm2022/common/lib/schema/entity/entity.class.mjs +1 -1
- package/esm2022/common/lib/utils/data-generator.mjs +22 -1
- package/esm2022/common/lib/workflows/common.workflow.mjs +3 -3
- package/esm2022/layout/builder/lib/builder/builder.service.mjs +7 -2
- package/esm2022/layout/builder/lib/builder/widget.types.mjs +5 -1
- package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +9 -8
- package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +34 -21
- package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +23 -15
- package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +46 -49
- package/esm2022/layout/entity/lib/entity-master-update.viewmodel.mjs +9 -7
- package/esm2022/layout/entity/lib/entity-registery.service.mjs +2 -2
- package/esm2022/layout/entity/lib/entity.module.mjs +13 -4
- package/esm2022/layout/entity/lib/entity.viewmodel.mjs +7 -6
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +127 -39
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs +83 -37
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.mjs +34 -23
- package/esm2022/layout/entity/lib/workflows/create-entity.workflow.mjs +17 -20
- package/esm2022/layout/entity/lib/workflows/delete-entity.workflow.mjs +17 -15
- package/esm2022/layout/entity/lib/workflows/modify-section.workflow.mjs +11 -23
- package/esm2022/layout/entity/lib/workflows/show-details.workflow.mjs +3 -3
- package/esm2022/layout/entity/lib/workflows/show-list.workflow.mjs +35 -0
- package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +3 -3
- package/esm2022/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.mjs +2 -2
- package/esm2022/layouts/lib/layout.module.mjs +3 -3
- package/esm2022/themes/default/acorex-platform-themes-default.mjs +5 -0
- package/esm2022/themes/default/index.mjs +3 -0
- package/esm2022/themes/default/lib/default.module.mjs +74 -0
- package/esm2022/themes/default/lib/entity-reuse.strategy.mjs +21 -0
- package/esm2022/themes/default/lib/layout.routes.mjs +20 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +114 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +93 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +163 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.mjs +64 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.mjs +62 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +82 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +77 -0
- package/esm2022/themes/default/lib/layouts/root-layout/components/footer/footer.component.mjs +14 -0
- package/esm2022/themes/default/lib/layouts/root-layout/components/header/header.component.mjs +29 -0
- package/esm2022/themes/default/lib/layouts/root-layout/index.mjs +5 -0
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +78 -0
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.module.mjs +91 -0
- package/esm2022/themes/default/lib/pages/errors/error-401/error-401.component.mjs +28 -0
- package/esm2022/themes/default/lib/pages/errors/error-404/error-404.component.mjs +22 -0
- package/esm2022/themes/default/lib/pages/errors/error-offline/error-offline.component.mjs +16 -0
- package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-column.component.mjs +2 -2
- package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-edit.component.mjs +21 -12
- package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-view.component.mjs +3 -2
- package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-column.component.mjs +2 -2
- package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-view.component.mjs +2 -2
- package/esm2022/workflow/lib/actions/start-workflow.action.mjs +28 -0
- package/esm2022/workflow/lib/workflow.module.mjs +7 -2
- package/esm2022/workflow/lib/workflow.service.mjs +53 -6
- package/esm2022/workflow/lib/workflow.types.mjs +12 -6
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-DAmNXjDm.mjs → acorex-platform-common-avatar-widget-edit.component-B-of5ssU.mjs} +3 -2
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-DAmNXjDm.mjs.map → acorex-platform-common-avatar-widget-edit.component-B-of5ssU.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-view.component-BlA_cFkP.mjs → acorex-platform-common-avatar-widget-view.component-CJvrSkTv.mjs} +4 -3
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-CJvrSkTv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-CEqibiML.mjs → acorex-platform-common-boolean-widget-filter.component-BTcOjuUm.mjs} +4 -3
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-BTcOjuUm.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BiUHPDqV.mjs → acorex-platform-common-checkbox-widget-column.component-X9d1iY_F.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BiUHPDqV.mjs.map → acorex-platform-common-checkbox-widget-column.component-X9d1iY_F.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-BVG9_XXh.mjs → acorex-platform-common-checkbox-widget-edit.component-_jtT03Vn.mjs} +4 -3
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-_jtT03Vn.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-CfGkMcDi.mjs → acorex-platform-common-checkbox-widget-view.component-nYmtb8bK.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-CfGkMcDi.mjs.map → acorex-platform-common-checkbox-widget-view.component-nYmtb8bK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-BlXTU887.mjs → acorex-platform-common-dateTime-widget-column.component-5ljYmtHI.mjs} +4 -3
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-5ljYmtHI.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-B0s6FN-g.mjs → acorex-platform-common-dateTime-widget-edit.component-D8FSiqAo.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-B0s6FN-g.mjs.map → acorex-platform-common-dateTime-widget-edit.component-D8FSiqAo.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-B7KBCsUt.mjs → acorex-platform-common-dateTime-widget-filter.component-Df0DuDtw.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-B7KBCsUt.mjs.map → acorex-platform-common-dateTime-widget-filter.component-Df0DuDtw.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-Dy7pAkGG.mjs → acorex-platform-common-dateTime-widget-view.component-CjVjQkPh.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-Dy7pAkGG.mjs.map → acorex-platform-common-dateTime-widget-view.component-CjVjQkPh.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-column.component-D_UNn2dW.mjs → acorex-platform-common-email-widget-column.component-BgNdL62k.mjs} +4 -3
- package/fesm2022/acorex-platform-common-email-widget-column.component-BgNdL62k.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-DWT24mCM.mjs → acorex-platform-common-email-widget-edit.component-CgHPGccx.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-DWT24mCM.mjs.map → acorex-platform-common-email-widget-edit.component-CgHPGccx.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-view.component-B6puyycL.mjs → acorex-platform-common-email-widget-view.component-C2aQ14k-.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-email-widget-view.component-B6puyycL.mjs.map → acorex-platform-common-email-widget-view.component-C2aQ14k-.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-column.component-C1faGR4K.mjs → acorex-platform-common-file-widget-column.component-CwFzLLHt.mjs} +4 -3
- package/fesm2022/acorex-platform-common-file-widget-column.component-CwFzLLHt.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-CTvS9ls8.mjs → acorex-platform-common-file-widget-edit.component-DxoQR4CU.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-CTvS9ls8.mjs.map → acorex-platform-common-file-widget-edit.component-DxoQR4CU.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-filter.component-D4AMg5M0.mjs → acorex-platform-common-file-widget-filter.component-BvG0iaKU.mjs} +4 -3
- package/fesm2022/acorex-platform-common-file-widget-filter.component-BvG0iaKU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-view.component-CHI4VCvt.mjs → acorex-platform-common-file-widget-view.component-BC9l3YrO.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-file-widget-view.component-CHI4VCvt.mjs.map → acorex-platform-common-file-widget-view.component-BC9l3YrO.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-CAOctYzV.mjs → acorex-platform-common-gallery-widget-edit.component-BihOIJ9T.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-CAOctYzV.mjs.map → acorex-platform-common-gallery-widget-edit.component-BihOIJ9T.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-lgaYDZeD.mjs → acorex-platform-common-gallery-widget-filter.component-DS1PCIJp.mjs} +4 -3
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-DS1PCIJp.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-Ci50jeO5.mjs → acorex-platform-common-gallery-widget-view.component-CnQONVdg.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-Ci50jeO5.mjs.map → acorex-platform-common-gallery-widget-view.component-CnQONVdg.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-DFKG-kum.mjs → acorex-platform-common-largetext-widget-edit.component-BCtGkz1a.mjs} +4 -3
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-BCtGkz1a.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-column.component-CFzCGcqA.mjs → acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs} +4 -3
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-CYTSeEOq.mjs → acorex-platform-common-lookup-widget-edit.component-D9UhViUG.mjs} +4 -3
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-D9UhViUG.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-BkxT9_Hh.mjs → acorex-platform-common-lookup-widget-filter.component-RWweQQaO.mjs} +4 -3
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-RWweQQaO.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-view.component-5YeixMp7.mjs → acorex-platform-common-lookup-widget-view.component-mXo8VADX.mjs} +4 -3
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-mXo8VADX.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-edit.component-CE3QQBmX.mjs → acorex-platform-common-map-widget-edit.component-SSrR3xxv.mjs} +4 -3
- package/fesm2022/acorex-platform-common-map-widget-edit.component-SSrR3xxv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-view.component-Cv4OCTxz.mjs → acorex-platform-common-map-widget-view.component-DrGG3gzg.mjs} +4 -3
- package/fesm2022/acorex-platform-common-map-widget-view.component-DrGG3gzg.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-column.component-CJdh6TKb.mjs → acorex-platform-common-messenger-widget-column.component-BJ_XzNKc.mjs} +4 -3
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-BJ_XzNKc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-kiEHxJia.mjs → acorex-platform-common-messenger-widget-edit.component-B_FG_n0O.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-kiEHxJia.mjs.map → acorex-platform-common-messenger-widget-edit.component-B_FG_n0O.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DzbjgZA7.mjs → acorex-platform-common-messenger-widget-view.component-EBiPO9ds.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DzbjgZA7.mjs.map → acorex-platform-common-messenger-widget-view.component-EBiPO9ds.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-number-widget-edit.component-BRuIP96Y.mjs → acorex-platform-common-number-widget-edit.component-B1XXga-9.mjs} +4 -3
- package/fesm2022/acorex-platform-common-number-widget-edit.component-B1XXga-9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-jQ4DaFQH.mjs → acorex-platform-common-number-widget-filter.component-B2JCpDjU.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-jQ4DaFQH.mjs.map → acorex-platform-common-number-widget-filter.component-B2JCpDjU.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-number-widget-view.component-BzUWjT8m.mjs → acorex-platform-common-number-widget-view.component-DD0tkoc4.mjs} +4 -3
- package/fesm2022/acorex-platform-common-number-widget-view.component-DD0tkoc4.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-column.component-BRzyuK5c.mjs → acorex-platform-common-password-widget-column.component-eyqgQlAt.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-password-widget-column.component-BRzyuK5c.mjs.map → acorex-platform-common-password-widget-column.component-eyqgQlAt.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-password-widget-edit.component-q6R2dw5k.mjs → acorex-platform-common-password-widget-edit.component-C2yNb9Pl.mjs} +4 -3
- package/fesm2022/acorex-platform-common-password-widget-edit.component-C2yNb9Pl.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-view.component-CKaQItON.mjs → acorex-platform-common-password-widget-view.component-o9S7pwJW.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-password-widget-view.component-CKaQItON.mjs.map → acorex-platform-common-password-widget-view.component-o9S7pwJW.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-BD7BScjW.mjs → acorex-platform-common-phone-widget-column.component-BL9Xl2XH.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-BD7BScjW.mjs.map → acorex-platform-common-phone-widget-column.component-BL9Xl2XH.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-D8tGKfNj.mjs → acorex-platform-common-phone-widget-edit.component-DSh9zoZj.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-D8tGKfNj.mjs.map → acorex-platform-common-phone-widget-edit.component-DSh9zoZj.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-CFiMsGOB.mjs → acorex-platform-common-phone-widget-view.component-Br3xbaDd.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-CFiMsGOB.mjs.map → acorex-platform-common-phone-widget-view.component-Br3xbaDd.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-BPzwY_8L.mjs → acorex-platform-common-rich-text-widget-column.component-DDT58tca.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-BPzwY_8L.mjs.map → acorex-platform-common-rich-text-widget-column.component-DDT58tca.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-CA2xRfVg.mjs → acorex-platform-common-rich-text-widget-edit.component-Dz1toc21.mjs} +4 -3
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-Dz1toc21.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-DYfTZ64H.mjs → acorex-platform-common-rich-text-widget-view.component-CxTPcEIQ.mjs} +4 -3
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-CxTPcEIQ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-_MglaOmo.mjs → acorex-platform-common-selection-list-widget-column.component-BCCmg8MI.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-_MglaOmo.mjs.map → acorex-platform-common-selection-list-widget-column.component-BCCmg8MI.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-QKw_tyOd.mjs → acorex-platform-common-selection-list-widget-edit.component-B5eUdN2R.mjs} +4 -3
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-B5eUdN2R.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-DRToTnHQ.mjs → acorex-platform-common-selection-list-widget-filter.component-DPpZq1TB.mjs} +4 -3
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-DPpZq1TB.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-CjDiuUdj.mjs → acorex-platform-common-selection-list-widget-view.component-Bxvd_AKZ.mjs} +4 -3
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-Bxvd_AKZ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DF29uWl2.mjs → acorex-platform-common-signature-pad-widget-edit.component-CNjYCEi6.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DF29uWl2.mjs.map → acorex-platform-common-signature-pad-widget-edit.component-CNjYCEi6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-BWzoR4HM.mjs → acorex-platform-common-signature-pad-widget-view.component-CsiBv_7i.mjs} +4 -3
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CsiBv_7i.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-string-widget-filter.component-Di_GFHme.mjs → acorex-platform-common-string-widget-filter.component-CrGt6Bov.mjs} +4 -3
- package/fesm2022/acorex-platform-common-string-widget-filter.component-CrGt6Bov.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-column.component-BSYd1CbC.mjs → acorex-platform-common-text-widget-column.component-qXusAevm.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-text-widget-column.component-BSYd1CbC.mjs.map → acorex-platform-common-text-widget-column.component-qXusAevm.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-text-widget-edit.component-K9z9N1qw.mjs → acorex-platform-common-text-widget-edit.component-ed0MUYnD.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-text-widget-edit.component-K9z9N1qw.mjs.map → acorex-platform-common-text-widget-edit.component-ed0MUYnD.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-text-widget-view.component-WbZtm_bf.mjs → acorex-platform-common-text-widget-view.component-BpxTaeQW.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-text-widget-view.component-WbZtm_bf.mjs.map → acorex-platform-common-text-widget-view.component-BpxTaeQW.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-ZCBSYMuz.mjs → acorex-platform-common-toggle-widget-column.component-BqiUQrmV.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-ZCBSYMuz.mjs.map → acorex-platform-common-toggle-widget-column.component-BqiUQrmV.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-rkDfLA-J.mjs → acorex-platform-common-toggle-widget-edit.component-CDG62BJN.mjs} +4 -3
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-CDG62BJN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DLDIrci1.mjs → acorex-platform-common-toggle-widget-view.component-DWYcIPTd.mjs} +4 -3
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DLDIrci1.mjs.map → acorex-platform-common-toggle-widget-view.component-DWYcIPTd.mjs.map} +1 -1
- package/fesm2022/acorex-platform-common.mjs +252 -149
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +10 -1
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +445 -261
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layouts-entity-create-view.component-BmSMt95H.mjs → acorex-platform-layouts-entity-create-view.component-fkKPKxlb.mjs} +3 -3
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-fkKPKxlb.mjs.map +1 -0
- package/fesm2022/acorex-platform-layouts.mjs +4 -4
- package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BxYT9KhH.mjs +96 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BxYT9KhH.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-F7dr-osu.mjs +85 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-F7dr-osu.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-Djuin07Z.mjs +31 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-Djuin07Z.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-C-RyiLkk.mjs +25 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-C-RyiLkk.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-WCfy9-cr.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-WCfy9-cr.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +688 -0
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +50 -42
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +184 -104
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/lib/builder/widget.types.d.ts +3 -0
- package/layout/entity/lib/entity-master-create.viewmodel.d.ts +6 -5
- package/layout/entity/lib/entity-master-list.viewmodel.d.ts +4 -0
- package/layout/entity/lib/entity-master-single.viewmodel.d.ts +10 -5
- package/layout/entity/lib/entity-master-update.viewmodel.d.ts +0 -1
- package/layout/entity/lib/entity.viewmodel.d.ts +3 -3
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +18 -3
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.d.ts +8 -1
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.d.ts +10 -3
- package/layout/entity/lib/workflows/create-entity.workflow.d.ts +0 -2
- package/layout/entity/lib/workflows/delete-entity.workflow.d.ts +2 -4
- package/layout/entity/lib/workflows/modify-section.workflow.d.ts +2 -5
- package/layout/entity/lib/workflows/show-list.workflow.d.ts +10 -0
- package/package.json +7 -1
- package/themes/default/README.md +3 -0
- package/themes/default/index.d.ts +2 -0
- package/themes/default/lib/default.module.d.ts +8 -0
- package/themes/default/lib/entity-reuse.strategy.d.ts +8 -0
- package/themes/default/lib/layout.routes.d.ts +2 -0
- package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +24 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.d.ts +17 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +29 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.d.ts +18 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.d.ts +16 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.d.ts +16 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +13 -0
- package/themes/default/lib/layouts/root-layout/components/footer/footer.component.d.ts +5 -0
- package/themes/default/lib/layouts/root-layout/components/header/header.component.d.ts +10 -0
- package/themes/default/lib/layouts/root-layout/index.d.ts +4 -0
- package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +32 -0
- package/themes/default/lib/layouts/root-layout/root-layout.module.d.ts +24 -0
- package/themes/default/lib/pages/errors/error-401/error-401.component.d.ts +10 -0
- package/themes/default/lib/pages/errors/error-404/error-404.component.d.ts +8 -0
- package/themes/default/lib/pages/errors/error-offline/error-offline.component.d.ts +9 -0
- package/widgets/lib/editors/date-time-box-widget/date-time-box-widget-edit.component.d.ts +4 -0
- package/workflow/lib/actions/start-workflow.action.d.ts +10 -0
- package/workflow/lib/workflow.service.d.ts +4 -2
- package/workflow/lib/workflow.types.d.ts +3 -1
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-BlA_cFkP.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-CEqibiML.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-BVG9_XXh.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-BlXTU887.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-column.component-D_UNn2dW.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-column.component-C1faGR4K.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-filter.component-D4AMg5M0.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-lgaYDZeD.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-DFKG-kum.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-CFzCGcqA.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-CYTSeEOq.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-BkxT9_Hh.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-5YeixMp7.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-edit.component-CE3QQBmX.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-view.component-Cv4OCTxz.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-CJdh6TKb.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-edit.component-BRuIP96Y.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-view.component-BzUWjT8m.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-edit.component-q6R2dw5k.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-CA2xRfVg.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-DYfTZ64H.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-QKw_tyOd.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-DRToTnHQ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-CjDiuUdj.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-BWzoR4HM.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-string-widget-filter.component-Di_GFHme.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-rkDfLA-J.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-BmSMt95H.mjs.map +0 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { AXActionSheetModule, AXActionSheetService } from '@acorex/components/action-sheet';
|
|
2
|
+
import { AXDataTableComponent, AXDataTableModule } from '@acorex/components/data-table';
|
|
3
|
+
import { AXDrawerModule } from '@acorex/components/drawer';
|
|
4
|
+
import { AXPlatform } from '@acorex/core/platform';
|
|
5
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation, inject } from '@angular/core';
|
|
6
|
+
import { RouterModule } from '@angular/router';
|
|
7
|
+
import { AXUnsubscriber } from '@acorex/core/utils';
|
|
8
|
+
import { AXPGridLayoutDirective, AXPLayoutService, AXPStickyDirective } from '@acorex/platform/common';
|
|
9
|
+
import { AXBadgeModule } from '@acorex/components/badge';
|
|
10
|
+
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
|
11
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
12
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
13
|
+
import { AXDialogModule } from '@acorex/components/dialog';
|
|
14
|
+
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
15
|
+
import { AXFormModule } from '@acorex/components/form';
|
|
16
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
|
17
|
+
import { AXPopoverModule } from '@acorex/components/popover';
|
|
18
|
+
import { AXTabsModule } from '@acorex/components/tabs';
|
|
19
|
+
import { AXTooltipModule } from '@acorex/components/tooltip';
|
|
20
|
+
import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
21
|
+
import { AXPWidgetsModule } from '@acorex/platform/widgets';
|
|
22
|
+
import { CommonModule } from '@angular/common';
|
|
23
|
+
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
24
|
+
import { FormsModule } from '@angular/forms';
|
|
25
|
+
import { AXPAuthModule } from '@acorex/platform/auth';
|
|
26
|
+
import { AXPEntityDetailListViewModel } from '@acorex/platform/layout/entity';
|
|
27
|
+
import * as i0 from "@angular/core";
|
|
28
|
+
import * as i1 from "@acorex/components/action-sheet";
|
|
29
|
+
import * as i2 from "@acorex/core/utils";
|
|
30
|
+
import * as i3 from "@acorex/core/platform";
|
|
31
|
+
import * as i4 from "@acorex/components/data-table";
|
|
32
|
+
import * as i5 from "@acorex/platform/layout/builder";
|
|
33
|
+
export class AXPEntityDetailListViewComponent {
|
|
34
|
+
constructor(actionSheetService, unsubscriber, platform) {
|
|
35
|
+
this.actionSheetService = actionSheetService;
|
|
36
|
+
this.unsubscriber = unsubscriber;
|
|
37
|
+
this.platform = platform;
|
|
38
|
+
this.layout = inject(AXPLayoutService);
|
|
39
|
+
this.dropdownRowItems = [
|
|
40
|
+
{
|
|
41
|
+
text: 'Details',
|
|
42
|
+
icon: 'fa-solid fa-eye',
|
|
43
|
+
name: 'open-entity',
|
|
44
|
+
divided: true,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
text: 'Delete',
|
|
48
|
+
icon: 'fa-solid fa-trash-can',
|
|
49
|
+
name: 'delete-entity',
|
|
50
|
+
color: 'danger',
|
|
51
|
+
disabled: true,
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
this.getDropdownRowItems = (rowData) => {
|
|
55
|
+
return Promise.resolve(this.dropdownRowItems);
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
handleChangeSearchValue(e) {
|
|
59
|
+
if (e.isUserInteraction) {
|
|
60
|
+
this.vm.applyInlineFilter(e.value);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
handleRowDbClick(e) {
|
|
64
|
+
const d = {
|
|
65
|
+
component: e.component,
|
|
66
|
+
name: this.dropdownRowItems[0].name,
|
|
67
|
+
data: e.data,
|
|
68
|
+
};
|
|
69
|
+
this.handleRowCommandClick(d);
|
|
70
|
+
}
|
|
71
|
+
async handleRowCommandClick(e) {
|
|
72
|
+
this.vm.executeCommand(e.name, e.data);
|
|
73
|
+
}
|
|
74
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPEntityDetailListViewComponent, deps: [{ token: i1.AXActionSheetService }, { token: i2.AXUnsubscriber }, { token: i3.AXPlatform }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPEntityDetailListViewComponent, isStandalone: true, selector: "axp-entity-detail-list-view", inputs: { vm: ["viewModel", "vm"] }, providers: [AXUnsubscriber], viewQueries: [{ propertyName: "grid", first: true, predicate: ["grid"], descendants: true }], ngImport: i0, template: "<div class=\"ax-flex ax-p-2\">\r\n <div class=\"ax-flex ax-flex-1 ax-overflow-auto ax-h-48\">\r\n <ax-data-table #grid [showFooter]=\"false\" class=\"ax-flex-1 \" [paging]=\"true\" [fetchDataMode]=\"'manual'\"\r\n [loading]=\"{ enabled: true, animation: true }\" [dataSource]=\"vm.dataSource\"\r\n (onRowDbClick)=\"handleRowDbClick($event)\">\r\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\r\n @for(col of vm.columns();track col.name) {\r\n @if(col.visible)\r\n {\r\n <axp-widget-column-renderer [caption]=\"col.title\" [node]=\"col.node()\"></axp-widget-column-renderer>\r\n }\r\n }\r\n <ax-dropdown-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getDropdownRowItems\"\r\n (onItemClick)=\"handleRowCommandClick($event)\"></ax-dropdown-command-column>\r\n </ax-data-table>\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i4.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged"] }, { kind: "component", type: i4.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i4.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type:
|
|
76
|
+
//
|
|
77
|
+
AXPLayoutBuilderModule }, { kind: "component", type: i5.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "node", "footerTemplate", "cellTemplate", "headerTemplate"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "ngmodule", type: AXPAuthModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
78
|
+
}
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPEntityDetailListViewComponent, decorators: [{
|
|
80
|
+
type: Component,
|
|
81
|
+
args: [{ selector: 'axp-entity-detail-list-view', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [AXUnsubscriber], imports: [
|
|
82
|
+
CommonModule,
|
|
83
|
+
FormsModule,
|
|
84
|
+
RouterModule,
|
|
85
|
+
AXButtonModule,
|
|
86
|
+
AXDecoratorModule,
|
|
87
|
+
AXBadgeModule,
|
|
88
|
+
AXDropdownModule,
|
|
89
|
+
AXPopoverModule,
|
|
90
|
+
AXFormModule,
|
|
91
|
+
AXActionSheetModule,
|
|
92
|
+
AXDrawerModule,
|
|
93
|
+
AXDialogModule,
|
|
94
|
+
AXLoadingModule,
|
|
95
|
+
AXTabsModule,
|
|
96
|
+
AXTooltipModule,
|
|
97
|
+
AXBreadcrumbsModule,
|
|
98
|
+
AXSearchBoxModule,
|
|
99
|
+
AXDataTableModule,
|
|
100
|
+
//
|
|
101
|
+
AXPLayoutBuilderModule,
|
|
102
|
+
AXPWidgetsModule,
|
|
103
|
+
AXPStickyDirective,
|
|
104
|
+
AXPGridLayoutDirective,
|
|
105
|
+
AXPAuthModule,
|
|
106
|
+
], standalone: true, template: "<div class=\"ax-flex ax-p-2\">\r\n <div class=\"ax-flex ax-flex-1 ax-overflow-auto ax-h-48\">\r\n <ax-data-table #grid [showFooter]=\"false\" class=\"ax-flex-1 \" [paging]=\"true\" [fetchDataMode]=\"'manual'\"\r\n [loading]=\"{ enabled: true, animation: true }\" [dataSource]=\"vm.dataSource\"\r\n (onRowDbClick)=\"handleRowDbClick($event)\">\r\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\r\n @for(col of vm.columns();track col.name) {\r\n @if(col.visible)\r\n {\r\n <axp-widget-column-renderer [caption]=\"col.title\" [node]=\"col.node()\"></axp-widget-column-renderer>\r\n }\r\n }\r\n <ax-dropdown-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getDropdownRowItems\"\r\n (onItemClick)=\"handleRowCommandClick($event)\"></ax-dropdown-command-column>\r\n </ax-data-table>\r\n </div>\r\n</div>" }]
|
|
107
|
+
}], ctorParameters: () => [{ type: i1.AXActionSheetService }, { type: i2.AXUnsubscriber }, { type: i3.AXPlatform }], propDecorators: { vm: [{
|
|
108
|
+
type: Input,
|
|
109
|
+
args: ['viewModel']
|
|
110
|
+
}], grid: [{
|
|
111
|
+
type: ViewChild,
|
|
112
|
+
args: ['grid']
|
|
113
|
+
}] } });
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWRldGFpbC1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LWRldGFpbC1saXN0LXZpZXcvZW50aXR5LWRldGFpbC1saXN0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LWRldGFpbC1saXN0LXZpZXcvZW50aXR5LWRldGFpbC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUF1RSxNQUFNLCtCQUErQixDQUFDO0FBQzdKLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSww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TW9kdWxlLCBBWEFjdGlvblNoZWV0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hY3Rpb24tc2hlZXQnO1xyXG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbXBvbmVudCwgQVhEYXRhVGFibGVNb2R1bGUsIEFYRGF0YVRhYmxlUm93RGJDbGljaywgQVhSb3dDb21tYW5kSXRlbSwgQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XHJcbmltcG9ydCB7IEFYRHJhd2VyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RyYXdlcic7XHJcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcclxuaW1wb3J0IHsgQVhQR3JpZExheW91dERpcmVjdGl2ZSwgQVhQTGF5b3V0U2VydmljZSwgQVhQU3RpY2t5RGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xyXG5pbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcclxuaW1wb3J0IHsgQVhCcmVhZGNydW1ic01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9icmVhZGNydW1icyc7XHJcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XHJcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBBWERpYWxvZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xyXG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XHJcbmltcG9ydCB7IEFYUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3BvdmVyJztcclxuaW1wb3J0IHsgQVhUYWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xyXG5pbXBvcnQgeyBBWFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbHRpcCc7XHJcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcclxuaW1wb3J0IHsgQVhQV2lkZ2V0c01vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd2lkZ2V0cyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQVhQQXV0aE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XHJcbmltcG9ydCB7IEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcclxuaW1wb3J0IHsgQVhQRW50aXR5RGV0YWlsTGlzdFZpZXdNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXhwLWVudGl0eS1kZXRhaWwtbGlzdC12aWV3JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnZW50aXR5LWRldGFpbC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbQVhVbnN1YnNjcmliZXJdLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICAgICAgQVhCdXR0b25Nb2R1bGUsXHJcbiAgICAgICAgQVhEZWNvcmF0b3JNb2R1bGUsXHJcbiAgICAgICAgQVhCYWRnZU1vZHVsZSxcclxuICAgICAgICBBWERyb3Bkb3duTW9kdWxlLFxyXG4gICAgICAgIEFYUG9wb3Zlck1vZHVsZSxcclxuICAgICAgICBBWEZvcm1Nb2R1bGUsXHJcbiAgICAgICAgQVhBY3Rpb25TaGVldE1vZHVsZSxcclxuICAgICAgICBBWERyYXdlck1vZHVsZSxcclxuICAgICAgICBBWERpYWxvZ01vZHVsZSxcclxuICAgICAgICBBWExvYWRpbmdNb2R1bGUsXHJcbiAgICAgICAgQVhUYWJzTW9kdWxlLFxyXG4gICAgICAgIEFYVG9vbHRpcE1vZHVsZSxcclxuICAgICAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxyXG4gICAgICAgIEFYU2VhcmNoQm94TW9kdWxlLFxyXG4gICAgICAgIEFYRGF0YVRhYmxlTW9kdWxlLFxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcclxuICAgICAgICBBWFBXaWRnZXRzTW9kdWxlLFxyXG4gICAgICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcclxuICAgICAgICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlLFxyXG4gICAgICAgIEFYUEF1dGhNb2R1bGUsXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eURldGFpbExpc3RWaWV3Q29tcG9uZW50IHtcclxuXHJcbiAgICBwcml2YXRlIGxheW91dCA9IGluamVjdChBWFBMYXlvdXRTZXJ2aWNlKTtcclxuXHJcbiAgICBASW5wdXQoJ3ZpZXdNb2RlbCcpXHJcbiAgICB2bTogQVhQRW50aXR5RGV0YWlsTGlzdFZpZXdNb2RlbDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZm9jdXNlZFJvdzogYW55O1xyXG4gICAgLy9cclxuICAgIEBWaWV3Q2hpbGQoJ2dyaWQnKSBncmlkITogQVhEYXRhVGFibGVDb21wb25lbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBhY3Rpb25TaGVldFNlcnZpY2U6IEFYQWN0aW9uU2hlZXRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdW5zdWJzY3JpYmVyOiBBWFVuc3Vic2NyaWJlcixcclxuICAgICAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IEFYUGxhdGZvcm0sXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaGFuZGxlQ2hhbmdlU2VhcmNoVmFsdWUoZTogQVhWYWx1ZUNoYW5nZWRFdmVudCkge1xyXG4gICAgICAgIGlmIChlLmlzVXNlckludGVyYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMudm0uYXBwbHlJbmxpbmVGaWx0ZXIoZS52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZHJvcGRvd25Sb3dJdGVtczogQVhSb3dDb21tYW5kSXRlbVtdID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ0RldGFpbHMnLFxyXG4gICAgICAgICAgICBpY29uOiAnZmEtc29saWQgZmEtZXllJyxcclxuICAgICAgICAgICAgbmFtZTogJ29wZW4tZW50aXR5JyxcclxuICAgICAgICAgICAgZGl2aWRlZDogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ0RlbGV0ZScsXHJcbiAgICAgICAgICAgIGljb246ICdmYS1zb2xpZCBmYS10cmFzaC1jYW4nLFxyXG4gICAgICAgICAgICBuYW1lOiAnZGVsZXRlLWVudGl0eScsXHJcbiAgICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgIF07XHJcblxyXG4gICAgcHJvdGVjdGVkIGhhbmRsZVJvd0RiQ2xpY2soZTogQVhEYXRhVGFibGVSb3dEYkNsaWNrKSB7XHJcbiAgICAgICAgY29uc3QgZDogQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgPSB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogZS5jb21wb25lbnQsXHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuZHJvcGRvd25Sb3dJdGVtc1swXS5uYW1lLFxyXG4gICAgICAgICAgICBkYXRhOiBlLmRhdGEsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmhhbmRsZVJvd0NvbW1hbmRDbGljayhkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0RHJvcGRvd25Sb3dJdGVtcyA9IChyb3dEYXRhOiB1bmtub3duKTogUHJvbWlzZTxBWFJvd0NvbW1hbmRJdGVtW10+ID0+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZHJvcGRvd25Sb3dJdGVtcyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBoYW5kbGVSb3dDb21tYW5kQ2xpY2soZTogQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQpIHtcclxuICAgICAgICB0aGlzLnZtLmV4ZWN1dGVDb21tYW5kKGUubmFtZSwgZS5kYXRhKTtcclxuICAgIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtcC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LTEgYXgtb3ZlcmZsb3ctYXV0byBheC1oLTQ4XCI+XHJcbiAgICAgICAgPGF4LWRhdGEtdGFibGUgI2dyaWQgW3Nob3dGb290ZXJdPVwiZmFsc2VcIiBjbGFzcz1cImF4LWZsZXgtMSBcIiBbcGFnaW5nXT1cInRydWVcIiBbZmV0Y2hEYXRhTW9kZV09XCInbWFudWFsJ1wiXHJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cInsgZW5hYmxlZDogdHJ1ZSwgYW5pbWF0aW9uOiB0cnVlIH1cIiBbZGF0YVNvdXJjZV09XCJ2bS5kYXRhU291cmNlXCJcclxuICAgICAgICAgICAgKG9uUm93RGJDbGljayk9XCJoYW5kbGVSb3dEYkNsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgPGF4LXNlbGVjdC1jb2x1bW4gZml4ZWQ9XCJzdGFydFwiIFt3aWR0aF09XCInNTBweCdcIj48L2F4LXNlbGVjdC1jb2x1bW4+XHJcbiAgICAgICAgICAgIEBmb3IoY29sIG9mIHZtLmNvbHVtbnMoKTt0cmFjayBjb2wubmFtZSkge1xyXG4gICAgICAgICAgICBAaWYoY29sLnZpc2libGUpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgPGF4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyIFtjYXB0aW9uXT1cImNvbC50aXRsZVwiIFtub2RlXT1cImNvbC5ub2RlKClcIj48L2F4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGF4LWRyb3Bkb3duLWNvbW1hbmQtY29sdW1uIGZpeGVkPVwiZW5kXCIgW3dpZHRoXT1cIic2MHB4J1wiIFtpdGVtc109XCJnZXREcm9wZG93blJvd0l0ZW1zXCJcclxuICAgICAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVSb3dDb21tYW5kQ2xpY2soJGV2ZW50KVwiPjwvYXgtZHJvcGRvd24tY29tbWFuZC1jb2x1bW4+XHJcbiAgICAgICAgPC9heC1kYXRhLXRhYmxlPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
2
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
3
|
+
import { AXDialogModule } from '@acorex/components/dialog';
|
|
4
|
+
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
|
5
|
+
import { AXFormModule } from '@acorex/components/form';
|
|
6
|
+
import { AXLabelModule } from '@acorex/components/label';
|
|
7
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
|
8
|
+
import { AXBasePageComponent } from '@acorex/components/page';
|
|
9
|
+
import { AXTabsModule } from '@acorex/components/tabs';
|
|
10
|
+
import { AXTooltipModule } from '@acorex/components/tooltip';
|
|
11
|
+
import { CommonModule } from '@angular/common';
|
|
12
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
13
|
+
import { FormsModule } from '@angular/forms';
|
|
14
|
+
import { AXValidationModule } from '@acorex/core/validation';
|
|
15
|
+
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
16
|
+
import { AXPGridLayoutDirective, AXPStickyDirective } from '@acorex/platform/common';
|
|
17
|
+
import { AXPWorkflowService } from '@acorex/platform/workflow';
|
|
18
|
+
import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
19
|
+
import { AXPWidgetsModule } from '@acorex/platform/widgets';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "@angular/common";
|
|
22
|
+
import * as i2 from "@acorex/components/form";
|
|
23
|
+
import * as i3 from "@acorex/components/decorators";
|
|
24
|
+
import * as i4 from "@acorex/components/button";
|
|
25
|
+
import * as i5 from "@acorex/components/loading";
|
|
26
|
+
import * as i6 from "@acorex/components/label";
|
|
27
|
+
import * as i7 from "@acorex/components/dropdown-button";
|
|
28
|
+
import * as i8 from "@acorex/platform/layout/builder";
|
|
29
|
+
export class AXPEntityMasterCreateViewComponent extends AXBasePageComponent {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
32
|
+
this.workflow = inject(AXPWorkflowService);
|
|
33
|
+
}
|
|
34
|
+
handleCloseClick() {
|
|
35
|
+
this.close();
|
|
36
|
+
}
|
|
37
|
+
async handleBackClick() {
|
|
38
|
+
//await this.vm.executeCommand('back');
|
|
39
|
+
}
|
|
40
|
+
async handleNextClick(form) {
|
|
41
|
+
// const formResult = await form.validate();
|
|
42
|
+
// if (formResult.result) {
|
|
43
|
+
// await this.vm.executeCommand('next');
|
|
44
|
+
// }
|
|
45
|
+
}
|
|
46
|
+
async handleSaveClick(form) {
|
|
47
|
+
const formResult = await form.validate();
|
|
48
|
+
if (formResult.result) {
|
|
49
|
+
const record = await this.vm.save();
|
|
50
|
+
this.close({ save: true, recordId: record.id, item: record, redirect: true });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async handleSaveAndNewClick(form) {
|
|
54
|
+
const formResult = await form.validate();
|
|
55
|
+
if (formResult.result) {
|
|
56
|
+
const record = await this.vm.save();
|
|
57
|
+
this.close({ save: true, recordId: record.id, redirect: false });
|
|
58
|
+
await this.vm.createNewOne();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async handleContextChange(data) {
|
|
62
|
+
this.vm.context.set(data);
|
|
63
|
+
}
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPEntityMasterCreateViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
65
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPEntityMasterCreateViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div>\r\n <axp-widgets-container [context]=\"vm.context()\" (contextChange)=\"handleContextChange($event)\">\r\n <ax-form class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4 ax-pb-8\" #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\r\n <!-- Begin Sections -->\r\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\r\n @for(section of vm.sections(); track section.name()) {\r\n <div class=\"ax-col-span-12\">\r\n <ax-form #form>\r\n <div class=\"ax-pb-4\">\r\n <span class=\"ax-font-bold ax-text-xl\">{{ section.title() }}</span>\r\n @if(section.description()) {\r\n <p class=\"ax-text-sm ax-text-gray-500\">{{ section.description() }}</p>\r\n }\r\n </div>\r\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\r\n @for(attr of section.elements(); track $index) {\r\n <ax-form-field class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\r\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">{{ attr.title()\r\n }}</ax-label>\r\n <axp-widget-renderer [node]=\"attr.node()\"> </axp-widget-renderer>\r\n </ax-form-field>\r\n }\r\n </div>\r\n\r\n </ax-form>\r\n </div>\r\n }\r\n </div>\r\n <!-- Finish Sections -->\r\n </ax-form>\r\n </axp-widgets-container>\r\n <ax-footer>\r\n <ax-suffix>\r\n <ax-button look=\"solid\" color=\"ghost\" text=\"Cancel\" (onClick)=\"handleCloseClick()\"> </ax-button>\r\n <ax-dropdown-button [disabled]=\"vm.isInProgress()\" color=\"primary\" text=\"Save\" look=\"solid\"\r\n (onClick)=\"handleSaveClick(form)\">\r\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\r\n <ax-button-item-list>\r\n <ax-button-item text=\"Save & Create New\" (onClick)=\"handleSaveAndNewClick(form)\"> </ax-button-item>\r\n </ax-button-item-list>\r\n </ax-dropdown-button>\r\n </ax-suffix>\r\n </ax-footer>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { 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: i5.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:
|
|
66
|
+
//
|
|
67
|
+
AXPLayoutBuilderModule }, { kind: "component", type: i8.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["contextChange"] }, { kind: "component", type: i8.AXPWidgetRendererComponent, selector: "axp-widget-renderer", inputs: ["node"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPGridLayoutDirective, selector: "[gridLayout]", inputs: ["gridLayout"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
68
|
+
}
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPEntityMasterCreateViewComponent, decorators: [{
|
|
70
|
+
type: Component,
|
|
71
|
+
args: [{ imports: [
|
|
72
|
+
CommonModule,
|
|
73
|
+
FormsModule,
|
|
74
|
+
AXFormModule,
|
|
75
|
+
AXDecoratorModule,
|
|
76
|
+
CommonModule,
|
|
77
|
+
AXButtonModule,
|
|
78
|
+
AXDialogModule,
|
|
79
|
+
AXLoadingModule,
|
|
80
|
+
AXTabsModule,
|
|
81
|
+
AXTooltipModule,
|
|
82
|
+
AXValidationModule,
|
|
83
|
+
AXLabelModule,
|
|
84
|
+
AXDropdownModule,
|
|
85
|
+
AXDropdownButtonModule,
|
|
86
|
+
//
|
|
87
|
+
AXPLayoutBuilderModule,
|
|
88
|
+
AXPWidgetsModule,
|
|
89
|
+
AXPStickyDirective,
|
|
90
|
+
AXPGridLayoutDirective
|
|
91
|
+
], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\r\n <axp-widgets-container [context]=\"vm.context()\" (contextChange)=\"handleContextChange($event)\">\r\n <ax-form class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4 ax-pb-8\" #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\r\n <!-- Begin Sections -->\r\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\r\n @for(section of vm.sections(); track section.name()) {\r\n <div class=\"ax-col-span-12\">\r\n <ax-form #form>\r\n <div class=\"ax-pb-4\">\r\n <span class=\"ax-font-bold ax-text-xl\">{{ section.title() }}</span>\r\n @if(section.description()) {\r\n <p class=\"ax-text-sm ax-text-gray-500\">{{ section.description() }}</p>\r\n }\r\n </div>\r\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\r\n @for(attr of section.elements(); track $index) {\r\n <ax-form-field class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\r\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">{{ attr.title()\r\n }}</ax-label>\r\n <axp-widget-renderer [node]=\"attr.node()\"> </axp-widget-renderer>\r\n </ax-form-field>\r\n }\r\n </div>\r\n\r\n </ax-form>\r\n </div>\r\n }\r\n </div>\r\n <!-- Finish Sections -->\r\n </ax-form>\r\n </axp-widgets-container>\r\n <ax-footer>\r\n <ax-suffix>\r\n <ax-button look=\"solid\" color=\"ghost\" text=\"Cancel\" (onClick)=\"handleCloseClick()\"> </ax-button>\r\n <ax-dropdown-button [disabled]=\"vm.isInProgress()\" color=\"primary\" text=\"Save\" look=\"solid\"\r\n (onClick)=\"handleSaveClick(form)\">\r\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\r\n <ax-button-item-list>\r\n <ax-button-item text=\"Save & Create New\" (onClick)=\"handleSaveAndNewClick(form)\"> </ax-button-item>\r\n </ax-button-item-list>\r\n </ax-dropdown-button>\r\n </ax-suffix>\r\n </ax-footer>\r\n</div>" }]
|
|
92
|
+
}] });
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1jcmVhdGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvbGF5b3V0cy9lbnRpdHktbGF5b3V0cy9lbnRpdHktbWFzdGVyLWNyZWF0ZS12aWV3L2VudGl0eS1tYXN0ZXItY3JlYXRlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1jcmVhdGUtdmlldy9lbnRpdHktbWFzdGVyLWNyZWF0ZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFp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O3dCQUNaLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixFQUFFO3dCQUNGLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjtxQkFDdkIsY0FDVyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xyXG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgQVhEaWFsb2dNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcclxuaW1wb3J0IHsgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bi1idXR0b24nO1xyXG5pbXBvcnQgeyBBWEZvcm1Db21wb25lbnQsIEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcclxuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XHJcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcclxuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcclxuaW1wb3J0IHsgQVhUYWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xyXG5pbXBvcnQgeyBBWFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbHRpcCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFdyaXRhYmxlU2lnbmFsLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcclxuXHJcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xyXG5pbXBvcnQgeyBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlLCBBWFBTdGlja3lEaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XHJcbmltcG9ydCB7IEFYUFdvcmtmbG93U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd29ya2Zsb3cnO1xyXG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XHJcbmltcG9ydCB7IEFYUFdpZGdldHNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dpZGdldHMnO1xyXG5pbXBvcnQgeyBBWFBFbnRpdHlNYXN0ZXJDcmVhdGVWaWV3TW9kZWwgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VudGl0eS1tYXN0ZXItY3JlYXRlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQVhGb3JtTW9kdWxlLFxyXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBBWEJ1dHRvbk1vZHVsZSxcclxuICAgIEFYRGlhbG9nTW9kdWxlLFxyXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxyXG4gICAgQVhUYWJzTW9kdWxlLFxyXG4gICAgQVhUb29sdGlwTW9kdWxlLFxyXG4gICAgQVhWYWxpZGF0aW9uTW9kdWxlLFxyXG4gICAgQVhMYWJlbE1vZHVsZSxcclxuICAgIEFYRHJvcGRvd25Nb2R1bGUsXHJcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxyXG4gICAgLy9cclxuICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXHJcbiAgICBBWFBXaWRnZXRzTW9kdWxlLFxyXG4gICAgQVhQU3RpY2t5RGlyZWN0aXZlLFxyXG4gICAgQVhQR3JpZExheW91dERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3RlckNyZWF0ZVZpZXdDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VQYWdlQ29tcG9uZW50IHtcclxuICBwcm90ZWN0ZWQgdm0hOiBBWFBFbnRpdHlNYXN0ZXJDcmVhdGVWaWV3TW9kZWw7XHJcblxyXG4gIHByb3RlY3RlZCB3b3JrZmxvdyA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xvc2VDbGljaygpIHtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVCYWNrQ2xpY2soKSB7XHJcbiAgICAvL2F3YWl0IHRoaXMudm0uZXhlY3V0ZUNvbW1hbmQoJ2JhY2snKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVOZXh0Q2xpY2soZm9ybTogQVhGb3JtQ29tcG9uZW50KSB7XHJcbiAgICAvLyBjb25zdCBmb3JtUmVzdWx0ID0gYXdhaXQgZm9ybS52YWxpZGF0ZSgpO1xyXG4gICAgLy8gaWYgKGZvcm1SZXN1bHQucmVzdWx0KSB7XHJcbiAgICAvLyAgIGF3YWl0IHRoaXMudm0uZXhlY3V0ZUNvbW1hbmQoJ25leHQnKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlQ2xpY2soZm9ybTogQVhGb3JtQ29tcG9uZW50KSB7XHJcbiAgICBjb25zdCBmb3JtUmVzdWx0ID0gYXdhaXQgZm9ybS52YWxpZGF0ZSgpO1xyXG4gICAgaWYgKGZvcm1SZXN1bHQucmVzdWx0KSB7XHJcbiAgICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMudm0uc2F2ZSgpO1xyXG4gICAgICB0aGlzLmNsb3NlKHsgc2F2ZTogdHJ1ZSwgcmVjb3JkSWQ6IHJlY29yZC5pZCwgaXRlbTogcmVjb3JkLCByZWRpcmVjdDogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlQW5kTmV3Q2xpY2soZm9ybTogQVhGb3JtQ29tcG9uZW50KSB7XHJcbiAgICBjb25zdCBmb3JtUmVzdWx0ID0gYXdhaXQgZm9ybS52YWxpZGF0ZSgpO1xyXG4gICAgaWYgKGZvcm1SZXN1bHQucmVzdWx0KSB7XHJcbiAgICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMudm0uc2F2ZSgpO1xyXG4gICAgICB0aGlzLmNsb3NlKHsgc2F2ZTogdHJ1ZSwgcmVjb3JkSWQ6IHJlY29yZC5pZCwgcmVkaXJlY3Q6IGZhbHNlIH0pO1xyXG4gICAgICBhd2FpdCB0aGlzLnZtLmNyZWF0ZU5ld09uZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNvbnRleHRDaGFuZ2UoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnZtLmNvbnRleHQuc2V0KGRhdGEpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2PlxyXG4gIDxheHAtd2lkZ2V0cy1jb250YWluZXIgW2NvbnRleHRdPVwidm0uY29udGV4dCgpXCIgKGNvbnRleHRDaGFuZ2UpPVwiaGFuZGxlQ29udGV4dENoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICA8YXgtZm9ybSBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTYgYXgtcC00IGF4LXBiLThcIiAjZm9ybSBbbWVzc2FnZVN0eWxlXT1cIidib3R0b20nXCIgW3VwZGF0ZU9uXT1cIidibHVyJ1wiPlxyXG4gICAgICA8IS0tIEJlZ2luIFNlY3Rpb25zIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZ3JpZCAgYXgtZ3JpZC1jb2xzLTEyICBheC1nYXAtNFwiPlxyXG4gICAgICAgIEBmb3Ioc2VjdGlvbiBvZiB2bS5zZWN0aW9ucygpOyB0cmFjayBzZWN0aW9uLm5hbWUoKSkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb2wtc3Bhbi0xMlwiPlxyXG4gICAgICAgICAgPGF4LWZvcm0gI2Zvcm0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1wYi00XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LWJvbGQgYXgtdGV4dC14bFwiPnt7IHNlY3Rpb24udGl0bGUoKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICBAaWYoc2VjdGlvbi5kZXNjcmlwdGlvbigpKSB7XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LXNtIGF4LXRleHQtZ3JheS01MDBcIj57eyBzZWN0aW9uLmRlc2NyaXB0aW9uKCkgfX08L3A+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcmQtYm9keSAhYXgtZ3JpZCAgIWF4LWdyaWQtY29scy0xMiAgIWF4LWdhcC00XCI+XHJcbiAgICAgICAgICAgICAgQGZvcihhdHRyIG9mIHNlY3Rpb24uZWxlbWVudHMoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgPGF4LWZvcm0tZmllbGQgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xXCIgW2dyaWRMYXlvdXRdPVwiYXR0ci5sYXlvdXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGF4LWxhYmVsIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LXNtXCIgW3JlcXVpcmVkXT1cImF0dHIuaXNSZXF1aXJlZCgpXCI+e3sgYXR0ci50aXRsZSgpXHJcbiAgICAgICAgICAgICAgICAgIH19PC9heC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cImF0dHIubm9kZSgpXCI+IDwvYXhwLXdpZGdldC1yZW5kZXJlcj5cclxuICAgICAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8L2F4LWZvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBGaW5pc2ggU2VjdGlvbnMgIC0tPlxyXG4gICAgPC9heC1mb3JtPlxyXG4gIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxyXG4gIDxheC1mb290ZXI+XHJcbiAgICA8YXgtc3VmZml4PlxyXG4gICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwiZ2hvc3RcIiB0ZXh0PVwiQ2FuY2VsXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ2xvc2VDbGljaygpXCI+IDwvYXgtYnV0dG9uPlxyXG4gICAgICA8YXgtZHJvcGRvd24tYnV0dG9uIFtkaXNhYmxlZF09XCJ2bS5pc0luUHJvZ3Jlc3MoKVwiIGNvbG9yPVwicHJpbWFyeVwiIHRleHQ9XCJTYXZlXCIgbG9vaz1cInNvbGlkXCJcclxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVTYXZlQ2xpY2soZm9ybSlcIj5cclxuICAgICAgICA8YXgtbG9hZGluZyAqbmdJZj1cInZtLmlzSW5Qcm9ncmVzcygpXCI+PC9heC1sb2FkaW5nPlxyXG4gICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxyXG4gICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJTYXZlICYgQ3JlYXRlIE5ld1wiIChvbkNsaWNrKT1cImhhbmRsZVNhdmVBbmROZXdDbGljayhmb3JtKVwiPiA8L2F4LWJ1dHRvbi1pdGVtPlxyXG4gICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cclxuICAgICAgPC9heC1kcm9wZG93bi1idXR0b24+XHJcbiAgICA8L2F4LXN1ZmZpeD5cclxuICA8L2F4LWZvb3Rlcj5cclxuPC9kaXY+Il19
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { AXActionSheetModule, AXActionSheetService } from '@acorex/components/action-sheet';
|
|
2
|
+
import { AXDataTableComponent, AXDataTableModule } from '@acorex/components/data-table';
|
|
3
|
+
import { AXDrawerModule } from '@acorex/components/drawer';
|
|
4
|
+
import { AXPlatform } from '@acorex/core/platform';
|
|
5
|
+
import { ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation, effect, inject } from '@angular/core';
|
|
6
|
+
import { ActivatedRoute, RouterModule } from '@angular/router';
|
|
7
|
+
import { Store } from '@ngrx/store';
|
|
8
|
+
import { AXPGridLayoutDirective, AXPLayoutService, AXPStickyDirective, getChildDrawer, isSmallScreen } from '@acorex/platform/common';
|
|
9
|
+
import { AXBadgeModule } from '@acorex/components/badge';
|
|
10
|
+
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
|
11
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
12
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
13
|
+
import { AXDialogModule } from '@acorex/components/dialog';
|
|
14
|
+
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
15
|
+
import { AXFormModule } from '@acorex/components/form';
|
|
16
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
|
17
|
+
import { AXPopoverModule } from '@acorex/components/popover';
|
|
18
|
+
import { AXTabsModule } from '@acorex/components/tabs';
|
|
19
|
+
import { AXTooltipModule } from '@acorex/components/tooltip';
|
|
20
|
+
import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
21
|
+
import { AXPWidgetsModule } from '@acorex/platform/widgets';
|
|
22
|
+
import { CommonModule } from '@angular/common';
|
|
23
|
+
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
24
|
+
import { FormsModule } from '@angular/forms';
|
|
25
|
+
import { AXPAuthModule } from '@acorex/platform/auth';
|
|
26
|
+
import { AXPListViewOptionsColumnsComponent } from './list-view-option-columns/list-view-option-columns.component';
|
|
27
|
+
import { AXPListViewOptionSortingComponent } from './list-view-option-sorting/list-view-option-sorting.component';
|
|
28
|
+
import * as i0 from "@angular/core";
|
|
29
|
+
import * as i1 from "@acorex/components/action-sheet";
|
|
30
|
+
import * as i2 from "@acorex/core/platform";
|
|
31
|
+
import * as i3 from "@angular/common";
|
|
32
|
+
import * as i4 from "@angular/router";
|
|
33
|
+
import * as i5 from "@acorex/components/button";
|
|
34
|
+
import * as i6 from "@acorex/components/decorators";
|
|
35
|
+
import * as i7 from "@acorex/components/badge";
|
|
36
|
+
import * as i8 from "@acorex/components/dropdown";
|
|
37
|
+
import * as i9 from "@acorex/components/drawer";
|
|
38
|
+
import * as i10 from "@acorex/components/breadcrumbs";
|
|
39
|
+
import * as i11 from "@acorex/components/search-box";
|
|
40
|
+
import * as i12 from "@acorex/components/data-table";
|
|
41
|
+
import * as i13 from "@acorex/platform/layout/builder";
|
|
42
|
+
import * as i14 from "@acorex/platform/auth";
|
|
43
|
+
export class AXPEntityMasterListViewComponent {
|
|
44
|
+
constructor(actionSheetService, platform) {
|
|
45
|
+
this.actionSheetService = actionSheetService;
|
|
46
|
+
this.platform = platform;
|
|
47
|
+
this.layout = inject(AXPLayoutService);
|
|
48
|
+
this.activeRoute = inject(ActivatedRoute);
|
|
49
|
+
this.vm = this.activeRoute.snapshot.data['vm'];
|
|
50
|
+
//
|
|
51
|
+
this.store = inject((Store));
|
|
52
|
+
this.isSM = this.store.select(isSmallScreen());
|
|
53
|
+
this.isOpen = this.store.select(getChildDrawer());
|
|
54
|
+
this.dropdownRowItems = [
|
|
55
|
+
{
|
|
56
|
+
text: 'Details',
|
|
57
|
+
icon: 'fa-solid fa-eye',
|
|
58
|
+
name: 'open-entity',
|
|
59
|
+
divided: true,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
text: 'Delete',
|
|
63
|
+
icon: 'fa-solid fa-trash-can',
|
|
64
|
+
name: 'delete-entity',
|
|
65
|
+
color: 'danger',
|
|
66
|
+
disabled: true,
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
this.getDropdownRowItems = (rowData) => {
|
|
70
|
+
return Promise.resolve(this.dropdownRowItems);
|
|
71
|
+
};
|
|
72
|
+
effect(() => {
|
|
73
|
+
this.grid.selectedRows = this.vm.selectedItems();
|
|
74
|
+
}, { allowSignalWrites: true });
|
|
75
|
+
//
|
|
76
|
+
this.vm.events$.subscribe(e => {
|
|
77
|
+
if (e.action == "refresh") {
|
|
78
|
+
this.grid.refresh();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
ngAfterViewInit() {
|
|
83
|
+
this.vm.setView();
|
|
84
|
+
}
|
|
85
|
+
closeDrawer(name, collapsed) {
|
|
86
|
+
if (collapsed) {
|
|
87
|
+
switch (name) {
|
|
88
|
+
case 'conditions':
|
|
89
|
+
//this.loader.resetConditions();
|
|
90
|
+
break;
|
|
91
|
+
case 'columns':
|
|
92
|
+
this.vm.applyColumns();
|
|
93
|
+
break;
|
|
94
|
+
case 'sorts':
|
|
95
|
+
//this.vm.resetSorts();
|
|
96
|
+
break;
|
|
97
|
+
default:
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
handleChangeSearchValue(e) {
|
|
103
|
+
if (e.isUserInteraction) {
|
|
104
|
+
this.vm.applyInlineFilter(e.value);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
handleRowDbClick(e) {
|
|
108
|
+
const d = {
|
|
109
|
+
component: e.component,
|
|
110
|
+
name: this.dropdownRowItems[0].name,
|
|
111
|
+
data: e.data,
|
|
112
|
+
};
|
|
113
|
+
this.handleRowCommandClick(d);
|
|
114
|
+
}
|
|
115
|
+
async handleRowCommandClick(e) {
|
|
116
|
+
this.vm.executeCommand(e.name, e.data);
|
|
117
|
+
}
|
|
118
|
+
async handleSelectedRowsChange(rows) {
|
|
119
|
+
this.vm.selectedItems.set(rows);
|
|
120
|
+
}
|
|
121
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPEntityMasterListViewComponent, deps: [{ token: i1.AXActionSheetService }, { token: i2.AXPlatform }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
122
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPEntityMasterListViewComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "grid", first: true, predicate: ["grid"], descendants: true }], ngImport: i0, template: "<ax-drawer-container>\r\n <ax-content class=\"ax-flex ax-flex-col ax-overflow-hidden\" #content>\r\n <div\r\n class=\"ax-flex ax-flex-col ax-gap-4 ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\">\r\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-gap-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\r\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyParent]=\"content.getHostElement()\">\r\n <!-------- Begin Toolbar -------->\r\n <!-------- Begin Line 1 -------->\r\n <div class=\"ax-flex ax-justify-between ax-items-center\">\r\n <!-------- Begin Title -------->\r\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\r\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\r\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold\">{{ vm.title()}}</div>\r\n @if(vm.description())\r\n {\r\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">{{\r\n vm.description() }}</div>\r\n }\r\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\r\n <ng-template #divider>\r\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\r\n </ng-template>\r\n @for(b of vm.beardcrumbs();track $index;let last=$last)\r\n {\r\n <ax-breadcrumbs-item [active]=\"last\" [class.!ax-font-semibold]=\"last\"\r\n [class.!ax-text-neutral-600]=\"last\" [routerLink]=\"b.url\">\r\n @if(b.icon)\r\n {\r\n <i [class]=\"b.icon\"></i>\r\n }\r\n {{b.title}}\r\n </ax-breadcrumbs-item>\r\n }\r\n </ax-breadcrumbs>\r\n </div>\r\n </div>\r\n <!-------- Finish Title -------->\r\n <!--------------------------------------------------------------->\r\n <!-- Begin Action Menu -->\r\n <div class=\"ax-flex ax-items-center ax-gap-3\">\r\n @for(tr of vm.primaryActions();track $index)\r\n {\r\n <ax-button [text]=\"tr.title\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\r\n <ax-prefix>\r\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button>\r\n }\r\n @if(vm.secondaryActions().length) {\r\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n </ax-prefix>\r\n <ax-dropdown-panel>\r\n <ax-button-item-list>\r\n @for(tr of vm.secondaryActions();track $index;let first=$first)\r\n {\r\n <ng-container>\r\n @if(tr.separated && !$first)\r\n {\r\n <ax-divider></ax-divider>\r\n }\r\n <ax-button-item [text]=\"tr.title\" class=\"ax-font-semibold ax-text-{{tr.color}}\"\r\n (onClick)=\"vm.executeCommand(tr.name)\">\r\n <ax-prefix>\r\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n </ng-container>\r\n }\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n }\r\n </div>\r\n <!-- Finish Action Menu -->\r\n </div>\r\n\r\n <!-------- Finish Line 1 -------->\r\n\r\n <!-------- Begin Line 2 -------->\r\n <div class=\"ax-flex ax-justify-between ax-items-center\">\r\n <div class=\"ax-flex ax-justify-start ax-items-center ax-gap-4\">\r\n <!-------- Begin Selection -------->\r\n\r\n @if(vm.hasSelectedItems())\r\n {\r\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\r\n <span class=\"ax-text-xl ax-font-bold\"> {{ vm.selectedItems().length }} Items Selected </span>\r\n <span (click)=\"vm.clearSelection()\"\r\n class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\">Clear\r\n Items</span>\r\n </div>\r\n\r\n <!-------- Finish Selection -------->\r\n\r\n } @else {\r\n\r\n <!-------- Begin View -------->\r\n\r\n <ax-button [text]=\"vm.view().title\" #views color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-eye\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <i class=\"fa-solid fa-caret-down\"></i>\r\n </ax-suffix>\r\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\r\n <ax-button-item-list class=\"ax-bg-surface\">\r\n <ax-title class=\"ax-font-bold ax-opacity-100\">Public Views</ax-title>\r\n <ax-button-item *ngFor=\"let v of vm.views()\" [text]=\"v.title\" [class.ax-bg-on-surface]=\"vm.view()==v\"\r\n (onClick)=\"vm.setView(v.name)\"></ax-button-item>\r\n <!-- <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\r\n <ax-button-item class=\"ax-pe-4 ax-flex ax-justify-between\" *ngFor=\"let v of customViews$ | async\"\r\n [text]=\"v.title\" [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\">\r\n <ax-suffix>\r\n <ax-button (onClick)=\"updateViewPopup($event, v)\" class=\"ax-xs\" look=\"none\">\r\n <ax-icon class=\"far fa-edit\"> </ax-icon>\r\n </ax-button>\r\n </ax-suffix>\r\n </ax-button-item> -->\r\n <!-- <ng-container *feature=\"'axp-entity-list-custom-view'\">\r\n <ax-divider></ax-divider>\r\n <ax-button-item text=\"Add Custom View\" (onClick)=\"addCustomViewPopup()\"\r\n class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\r\n </ng-container> -->\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n <!-------- Finish View -------->\r\n\r\n <!-------- Begin Inline Search -------->\r\n\r\n @if(vm.hasInlineFilters())\r\n {\r\n <div class=\"ax-w-72\" *feature=\"'axp-entity-list-inline-filter'\">\r\n <ax-search-box [placeholder]=\"'Search on '+vm.inlineFiltersPlaceholders().join(', ')\"\r\n (onValueChanged)=\"handleChangeSearchValue($event)\"><ax-clear-button></ax-clear-button></ax-search-box>\r\n </div>\r\n }\r\n }\r\n <!-------- Finish Inline Search -------->\r\n </div>\r\n\r\n <!-- Begin View Action Menu -->\r\n @if(!vm.hasSelectedItems())\r\n {\r\n <div class=\"ax-flex ax-gap-3\">\r\n <ax-button text=\"Columns\" color=\"ghost\" (onClick)=\"columnsDrawer.open()\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-bars\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <ax-badge [text]=\"vm.visibleColumnCount().toString()\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n </ax-button>\r\n <ax-button text=\"Filters\" color=\"ghost\" (onClick)=\"conditionsDrawer.open()\"\r\n *feature=\"'axp-entity-list-advance-filter'\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-sliders\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <ax-badge text=\"3\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n </ax-button>\r\n @if(vm.canSort())\r\n {\r\n <ax-button text=\"Sort\" color=\"ghost\" (onClick)=\"sortsDrawer.open()\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-bars-sort\"></i>\r\n </ax-prefix>\r\n @if(vm.sortedCount())\r\n {\r\n <ax-suffix>\r\n <ax-badge [text]=\"vm.sortedCount().toString()\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n }\r\n </ax-button>\r\n }\r\n </div>\r\n }\r\n <!-- Finish View Action Menu -->\r\n </div>\r\n <!-------- Finish Line 2 -------->\r\n\r\n <!----- Finish Toolbar ----->\r\n\r\n </div>\r\n </div>\r\n <!----- Begin DataTable ----->\r\n <div class=\"ax-flex ax-flex-1 ax-px-6 ax-py-4 ax-overflow-auto\">\r\n <ax-data-table #grid [showFooter]=\"false\" class=\"ax-flex-1\" [paging]=\"true\" [fetchDataMode]=\"'manual'\"\r\n [loading]=\"{ enabled: true, animation: true }\" [dataSource]=\"vm.dataSource\"\r\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\" (onRowDbClick)=\"handleRowDbClick($event)\">\r\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\r\n @for(col of vm.columns();track col.name) {\r\n @if(col.visible)\r\n {\r\n <axp-widget-column-renderer [caption]=\"col.title\" [node]=\"col.node()\"></axp-widget-column-renderer>\r\n }\r\n }\r\n <ax-dropdown-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getDropdownRowItems\"\r\n (onItemClick)=\"handleRowCommandClick($event)\"></ax-dropdown-command-column>\r\n </ax-data-table>\r\n </div>\r\n <!----- Finish DataTable ----->\r\n </ax-content>\r\n\r\n <ax-drawer (collapsedChange)=\"closeDrawer('columns', $event)\" #columnsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\r\n <axp-list-view-option-columns [viewModel]=\"vm\" (onClosed)=\"columnsDrawer.close()\"></axp-list-view-option-columns>\r\n </ax-content>\r\n </ax-drawer>\r\n <ax-drawer (collapsedChange)=\"closeDrawer('conditions', $event)\" #conditionsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[25vw] ax-border-e\">\r\n <!-- <axp-list-view-option-conditions [loader]=\"loader\"\r\n (onClosed)=\"conditionsDrawer.close()\"></axp-list-view-option-conditions> -->\r\n </ax-content>\r\n </ax-drawer>\r\n <ax-drawer (collapsedChange)=\"closeDrawer('sorts', $event)\" #sortsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\r\n <axp-list-view-option-sorting (onClosed)=\"sortsDrawer.close()\" [viewModel]=\"vm\"></axp-list-view-option-sorting>\r\n </ax-content>\r\n </ax-drawer>\r\n</ax-drawer-container>", styles: [".cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background:rgba(var(--ax-color-on-surface));padding:.5rem;height:max-content!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "component", type: i5.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i5.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i6.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i6.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i6.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: AXBadgeModule }, { kind: "component", type: i7.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i8.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i9.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "collapsed"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i9.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i10.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i10.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i11.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i12.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged"] }, { kind: "component", type: i12.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i12.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type:
|
|
123
|
+
//
|
|
124
|
+
AXPLayoutBuilderModule }, { kind: "component", type: i13.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "node", "footerTemplate", "cellTemplate", "headerTemplate"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "ngmodule", type: AXPAuthModule }, { kind: "directive", type: i14.AXPFeatureDirective, selector: "[feature]", inputs: ["feature", "featureElse"] }, { kind: "component", type:
|
|
125
|
+
//
|
|
126
|
+
AXPListViewOptionsColumnsComponent, selector: "axp-list-view-option-columns", inputs: ["viewModel"], outputs: ["onClosed"] }, { kind: "component", type: AXPListViewOptionSortingComponent, selector: "axp-list-view-option-sorting", inputs: ["viewModel"], outputs: ["onClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
127
|
+
}
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPEntityMasterListViewComponent, decorators: [{
|
|
129
|
+
type: Component,
|
|
130
|
+
args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
131
|
+
CommonModule,
|
|
132
|
+
FormsModule,
|
|
133
|
+
RouterModule,
|
|
134
|
+
AXButtonModule,
|
|
135
|
+
AXDecoratorModule,
|
|
136
|
+
AXBadgeModule,
|
|
137
|
+
AXDropdownModule,
|
|
138
|
+
AXPopoverModule,
|
|
139
|
+
AXFormModule,
|
|
140
|
+
AXActionSheetModule,
|
|
141
|
+
AXDrawerModule,
|
|
142
|
+
AXDialogModule,
|
|
143
|
+
AXLoadingModule,
|
|
144
|
+
AXTabsModule,
|
|
145
|
+
AXTooltipModule,
|
|
146
|
+
AXBreadcrumbsModule,
|
|
147
|
+
AXSearchBoxModule,
|
|
148
|
+
AXDataTableModule,
|
|
149
|
+
//
|
|
150
|
+
AXPLayoutBuilderModule,
|
|
151
|
+
AXPWidgetsModule,
|
|
152
|
+
AXPStickyDirective,
|
|
153
|
+
AXPGridLayoutDirective,
|
|
154
|
+
AXPAuthModule,
|
|
155
|
+
//
|
|
156
|
+
AXPListViewOptionsColumnsComponent,
|
|
157
|
+
AXPListViewOptionSortingComponent
|
|
158
|
+
], standalone: true, template: "<ax-drawer-container>\r\n <ax-content class=\"ax-flex ax-flex-col ax-overflow-hidden\" #content>\r\n <div\r\n class=\"ax-flex ax-flex-col ax-gap-4 ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\">\r\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-gap-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\r\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyParent]=\"content.getHostElement()\">\r\n <!-------- Begin Toolbar -------->\r\n <!-------- Begin Line 1 -------->\r\n <div class=\"ax-flex ax-justify-between ax-items-center\">\r\n <!-------- Begin Title -------->\r\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\r\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\r\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold\">{{ vm.title()}}</div>\r\n @if(vm.description())\r\n {\r\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">{{\r\n vm.description() }}</div>\r\n }\r\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\r\n <ng-template #divider>\r\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\r\n </ng-template>\r\n @for(b of vm.beardcrumbs();track $index;let last=$last)\r\n {\r\n <ax-breadcrumbs-item [active]=\"last\" [class.!ax-font-semibold]=\"last\"\r\n [class.!ax-text-neutral-600]=\"last\" [routerLink]=\"b.url\">\r\n @if(b.icon)\r\n {\r\n <i [class]=\"b.icon\"></i>\r\n }\r\n {{b.title}}\r\n </ax-breadcrumbs-item>\r\n }\r\n </ax-breadcrumbs>\r\n </div>\r\n </div>\r\n <!-------- Finish Title -------->\r\n <!--------------------------------------------------------------->\r\n <!-- Begin Action Menu -->\r\n <div class=\"ax-flex ax-items-center ax-gap-3\">\r\n @for(tr of vm.primaryActions();track $index)\r\n {\r\n <ax-button [text]=\"tr.title\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\r\n <ax-prefix>\r\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button>\r\n }\r\n @if(vm.secondaryActions().length) {\r\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n </ax-prefix>\r\n <ax-dropdown-panel>\r\n <ax-button-item-list>\r\n @for(tr of vm.secondaryActions();track $index;let first=$first)\r\n {\r\n <ng-container>\r\n @if(tr.separated && !$first)\r\n {\r\n <ax-divider></ax-divider>\r\n }\r\n <ax-button-item [text]=\"tr.title\" class=\"ax-font-semibold ax-text-{{tr.color}}\"\r\n (onClick)=\"vm.executeCommand(tr.name)\">\r\n <ax-prefix>\r\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n </ng-container>\r\n }\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n }\r\n </div>\r\n <!-- Finish Action Menu -->\r\n </div>\r\n\r\n <!-------- Finish Line 1 -------->\r\n\r\n <!-------- Begin Line 2 -------->\r\n <div class=\"ax-flex ax-justify-between ax-items-center\">\r\n <div class=\"ax-flex ax-justify-start ax-items-center ax-gap-4\">\r\n <!-------- Begin Selection -------->\r\n\r\n @if(vm.hasSelectedItems())\r\n {\r\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\r\n <span class=\"ax-text-xl ax-font-bold\"> {{ vm.selectedItems().length }} Items Selected </span>\r\n <span (click)=\"vm.clearSelection()\"\r\n class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\">Clear\r\n Items</span>\r\n </div>\r\n\r\n <!-------- Finish Selection -------->\r\n\r\n } @else {\r\n\r\n <!-------- Begin View -------->\r\n\r\n <ax-button [text]=\"vm.view().title\" #views color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-eye\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <i class=\"fa-solid fa-caret-down\"></i>\r\n </ax-suffix>\r\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\r\n <ax-button-item-list class=\"ax-bg-surface\">\r\n <ax-title class=\"ax-font-bold ax-opacity-100\">Public Views</ax-title>\r\n <ax-button-item *ngFor=\"let v of vm.views()\" [text]=\"v.title\" [class.ax-bg-on-surface]=\"vm.view()==v\"\r\n (onClick)=\"vm.setView(v.name)\"></ax-button-item>\r\n <!-- <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\r\n <ax-button-item class=\"ax-pe-4 ax-flex ax-justify-between\" *ngFor=\"let v of customViews$ | async\"\r\n [text]=\"v.title\" [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\">\r\n <ax-suffix>\r\n <ax-button (onClick)=\"updateViewPopup($event, v)\" class=\"ax-xs\" look=\"none\">\r\n <ax-icon class=\"far fa-edit\"> </ax-icon>\r\n </ax-button>\r\n </ax-suffix>\r\n </ax-button-item> -->\r\n <!-- <ng-container *feature=\"'axp-entity-list-custom-view'\">\r\n <ax-divider></ax-divider>\r\n <ax-button-item text=\"Add Custom View\" (onClick)=\"addCustomViewPopup()\"\r\n class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\r\n </ng-container> -->\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n <!-------- Finish View -------->\r\n\r\n <!-------- Begin Inline Search -------->\r\n\r\n @if(vm.hasInlineFilters())\r\n {\r\n <div class=\"ax-w-72\" *feature=\"'axp-entity-list-inline-filter'\">\r\n <ax-search-box [placeholder]=\"'Search on '+vm.inlineFiltersPlaceholders().join(', ')\"\r\n (onValueChanged)=\"handleChangeSearchValue($event)\"><ax-clear-button></ax-clear-button></ax-search-box>\r\n </div>\r\n }\r\n }\r\n <!-------- Finish Inline Search -------->\r\n </div>\r\n\r\n <!-- Begin View Action Menu -->\r\n @if(!vm.hasSelectedItems())\r\n {\r\n <div class=\"ax-flex ax-gap-3\">\r\n <ax-button text=\"Columns\" color=\"ghost\" (onClick)=\"columnsDrawer.open()\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-bars\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <ax-badge [text]=\"vm.visibleColumnCount().toString()\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n </ax-button>\r\n <ax-button text=\"Filters\" color=\"ghost\" (onClick)=\"conditionsDrawer.open()\"\r\n *feature=\"'axp-entity-list-advance-filter'\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-sliders\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <ax-badge text=\"3\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n </ax-button>\r\n @if(vm.canSort())\r\n {\r\n <ax-button text=\"Sort\" color=\"ghost\" (onClick)=\"sortsDrawer.open()\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-bars-sort\"></i>\r\n </ax-prefix>\r\n @if(vm.sortedCount())\r\n {\r\n <ax-suffix>\r\n <ax-badge [text]=\"vm.sortedCount().toString()\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n }\r\n </ax-button>\r\n }\r\n </div>\r\n }\r\n <!-- Finish View Action Menu -->\r\n </div>\r\n <!-------- Finish Line 2 -------->\r\n\r\n <!----- Finish Toolbar ----->\r\n\r\n </div>\r\n </div>\r\n <!----- Begin DataTable ----->\r\n <div class=\"ax-flex ax-flex-1 ax-px-6 ax-py-4 ax-overflow-auto\">\r\n <ax-data-table #grid [showFooter]=\"false\" class=\"ax-flex-1\" [paging]=\"true\" [fetchDataMode]=\"'manual'\"\r\n [loading]=\"{ enabled: true, animation: true }\" [dataSource]=\"vm.dataSource\"\r\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\" (onRowDbClick)=\"handleRowDbClick($event)\">\r\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\r\n @for(col of vm.columns();track col.name) {\r\n @if(col.visible)\r\n {\r\n <axp-widget-column-renderer [caption]=\"col.title\" [node]=\"col.node()\"></axp-widget-column-renderer>\r\n }\r\n }\r\n <ax-dropdown-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getDropdownRowItems\"\r\n (onItemClick)=\"handleRowCommandClick($event)\"></ax-dropdown-command-column>\r\n </ax-data-table>\r\n </div>\r\n <!----- Finish DataTable ----->\r\n </ax-content>\r\n\r\n <ax-drawer (collapsedChange)=\"closeDrawer('columns', $event)\" #columnsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\r\n <axp-list-view-option-columns [viewModel]=\"vm\" (onClosed)=\"columnsDrawer.close()\"></axp-list-view-option-columns>\r\n </ax-content>\r\n </ax-drawer>\r\n <ax-drawer (collapsedChange)=\"closeDrawer('conditions', $event)\" #conditionsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[25vw] ax-border-e\">\r\n <!-- <axp-list-view-option-conditions [loader]=\"loader\"\r\n (onClosed)=\"conditionsDrawer.close()\"></axp-list-view-option-conditions> -->\r\n </ax-content>\r\n </ax-drawer>\r\n <ax-drawer (collapsedChange)=\"closeDrawer('sorts', $event)\" #sortsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\r\n <axp-list-view-option-sorting (onClosed)=\"sortsDrawer.close()\" [viewModel]=\"vm\"></axp-list-view-option-sorting>\r\n </ax-content>\r\n </ax-drawer>\r\n</ax-drawer-container>", styles: [".cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background:rgba(var(--ax-color-on-surface));padding:.5rem;height:max-content!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0}\n"] }]
|
|
159
|
+
}], ctorParameters: () => [{ type: i1.AXActionSheetService }, { type: i2.AXPlatform }], propDecorators: { grid: [{
|
|
160
|
+
type: ViewChild,
|
|
161
|
+
args: ['grid']
|
|
162
|
+
}] } });
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUF1RSxNQUFNLCtCQUErQixDQUFDO0FBQzdKLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUF1QixzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFD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QkFDbkIsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLEVBQUU7d0JBQ0Ysc0JBQXNCO3dCQUN0QixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixhQUFhO3dCQUNiLEVBQUU7d0JBQ0Ysa0NBQWtDO3dCQUNsQyxpQ0FBaUM7cUJBRWxDLGNBQ1csSUFBSTtrSEFnQkcsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhBY3Rpb25TaGVldE1vZHVsZSwgQVhBY3Rpb25TaGVldFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYWN0aW9uLXNoZWV0JztcclxuaW1wb3J0IHsgQVhEYXRhVGFibGVDb21wb25lbnQsIEFYRGF0YVRhYmxlTW9kdWxlLCBBWERhdGFUYWJsZVJvd0RiQ2xpY2ssIEFYUm93Q29tbWFuZEl0ZW0sIEFYUm93Q29tbWFuZEl0ZW1DbGlja0V2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RhdGEtdGFibGUnO1xyXG5pbXBvcnQgeyBBWERyYXdlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcmF3ZXInO1xyXG5pbXBvcnQgeyBBWFBsYXRmb3JtIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5cclxuaW1wb3J0IHsgQVhQQWRtaW5MYXlvdXRTdGF0ZSwgQVhQR3JpZExheW91dERpcmVjdGl2ZSwgQVhQTGF5b3V0U2VydmljZSwgQVhQU3RpY2t5RGlyZWN0aXZlLCBnZXRDaGlsZERyYXdlciwgaXNTbWFsbFNjcmVlbiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcclxuaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XHJcbmltcG9ydCB7IEFYQnJlYWRjcnVtYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xyXG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xyXG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgQVhEaWFsb2dNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcclxuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XHJcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcclxuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xyXG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XHJcbmltcG9ydCB7IEFYVGFic01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWJzJztcclxuaW1wb3J0IHsgQVhUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XHJcbmltcG9ydCB7IEFYUFdpZGdldHNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dpZGdldHMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBWFNlYXJjaEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWFyY2gtYm94JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFYUEF1dGhNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xyXG5pbXBvcnQgeyBBWFBMaXN0Vmlld09wdGlvbnNDb2x1bW5zQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LXZpZXctb3B0aW9uLWNvbHVtbnMvbGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYUExpc3RWaWV3T3B0aW9uU29ydGluZ0NvbXBvbmVudCB9IGZyb20gJy4vbGlzdC12aWV3LW9wdGlvbi1zb3J0aW5nL2xpc3Qtdmlldy1vcHRpb24tc29ydGluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XHJcbmltcG9ydCB7IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICdlbnRpdHktbWFzdGVyLWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2VudGl0eS1tYXN0ZXItbGlzdC12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIEFYQnV0dG9uTW9kdWxlLFxyXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXHJcbiAgICBBWEJhZGdlTW9kdWxlLFxyXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcclxuICAgIEFYUG9wb3Zlck1vZHVsZSxcclxuICAgIEFYRm9ybU1vZHVsZSxcclxuICAgIEFYQWN0aW9uU2hlZXRNb2R1bGUsXHJcbiAgICBBWERyYXdlck1vZHVsZSxcclxuICAgIEFYRGlhbG9nTW9kdWxlLFxyXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxyXG4gICAgQVhUYWJzTW9kdWxlLFxyXG4gICAgQVhUb29sdGlwTW9kdWxlLFxyXG4gICAgQVhCcmVhZGNydW1ic01vZHVsZSxcclxuICAgIEFYU2VhcmNoQm94TW9kdWxlLFxyXG4gICAgQVhEYXRhVGFibGVNb2R1bGUsXHJcbiAgICAvL1xyXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcclxuICAgIEFYUFdpZGdldHNNb2R1bGUsXHJcbiAgICBBWFBTdGlja3lEaXJlY3RpdmUsXHJcbiAgICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlLFxyXG4gICAgQVhQQXV0aE1vZHVsZSxcclxuICAgIC8vXHJcbiAgICBBWFBMaXN0Vmlld09wdGlvbnNDb2x1bW5zQ29tcG9uZW50LFxyXG4gICAgQVhQTGlzdFZpZXdPcHRpb25Tb3J0aW5nQ29tcG9uZW50XHJcblxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3Q29tcG9uZW50IHtcclxuXHJcbiAgcHJpdmF0ZSBsYXlvdXQgPSBpbmplY3QoQVhQTGF5b3V0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSBhY3RpdmVSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QuZGF0YVsndm0nXSBhcyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsO1xyXG5cclxuICAvL1xyXG4gIHByaXZhdGUgc3RvcmUgPSBpbmplY3QoU3RvcmU8QVhQQWRtaW5MYXlvdXRTdGF0ZT4pO1xyXG4gIHByb3RlY3RlZCBpc1NNID0gdGhpcy5zdG9yZS5zZWxlY3QoaXNTbWFsbFNjcmVlbigpKTtcclxuICBwcm90ZWN0ZWQgaXNPcGVuID0gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0Q2hpbGREcmF3ZXIoKSk7XHJcbiAgLy9cclxuICBwcm90ZWN0ZWQgZm9jdXNlZFJvdzogYW55O1xyXG4gIC8vXHJcbiAgQFZpZXdDaGlsZCgnZ3JpZCcpIGdyaWQhOiBBWERhdGFUYWJsZUNvbXBvbmVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFjdGlvblNoZWV0U2VydmljZTogQVhBY3Rpb25TaGVldFNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IEFYUGxhdGZvcm0sXHJcbiAgKSB7XHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzID0gdGhpcy52bS5zZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xyXG4gICAgLy9cclxuICAgIHRoaXMudm0uZXZlbnRzJC5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIGlmIChlLmFjdGlvbiA9PSBcInJlZnJlc2hcIikge1xyXG4gICAgICAgIHRoaXMuZ3JpZC5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy52bS5zZXRWaWV3KCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2xvc2VEcmF3ZXIobmFtZTogc3RyaW5nLCBjb2xsYXBzZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChjb2xsYXBzZWQpIHtcclxuICAgICAgc3dpdGNoIChuYW1lKSB7XHJcbiAgICAgICAgY2FzZSAnY29uZGl0aW9ucyc6XHJcbiAgICAgICAgICAvL3RoaXMubG9hZGVyLnJlc2V0Q29uZGl0aW9ucygpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnY29sdW1ucyc6XHJcbiAgICAgICAgICB0aGlzLnZtLmFwcGx5Q29sdW1ucygpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzb3J0cyc6XHJcbiAgICAgICAgICAvL3RoaXMudm0ucmVzZXRTb3J0cygpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDaGFuZ2VTZWFyY2hWYWx1ZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XHJcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xyXG4gICAgICB0aGlzLnZtLmFwcGx5SW5saW5lRmlsdGVyKGUudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkcm9wZG93blJvd0l0ZW1zOiBBWFJvd0NvbW1hbmRJdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIHRleHQ6ICdEZXRhaWxzJyxcclxuICAgICAgaWNvbjogJ2ZhLXNvbGlkIGZhLWV5ZScsXHJcbiAgICAgIG5hbWU6ICdvcGVuLWVudGl0eScsXHJcbiAgICAgIGRpdmlkZWQ6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0ZXh0OiAnRGVsZXRlJyxcclxuICAgICAgaWNvbjogJ2ZhLXNvbGlkIGZhLXRyYXNoLWNhbicsXHJcbiAgICAgIG5hbWU6ICdkZWxldGUtZW50aXR5JyxcclxuICAgICAgY29sb3I6ICdkYW5nZXInLFxyXG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RiQ2xpY2soZTogQVhEYXRhVGFibGVSb3dEYkNsaWNrKSB7XHJcbiAgICBjb25zdCBkOiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCA9IHtcclxuICAgICAgY29tcG9uZW50OiBlLmNvbXBvbmVudCxcclxuICAgICAgbmFtZTogdGhpcy5kcm9wZG93blJvd0l0ZW1zWzBdLm5hbWUsXHJcbiAgICAgIGRhdGE6IGUuZGF0YSxcclxuICAgIH07XHJcbiAgICB0aGlzLmhhbmRsZVJvd0NvbW1hbmRDbGljayhkKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXREcm9wZG93blJvd0l0ZW1zID0gKHJvd0RhdGE6IHVua25vd24pOiBQcm9taXNlPEFYUm93Q29tbWFuZEl0ZW1bXT4gPT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmRyb3Bkb3duUm93SXRlbXMpO1xyXG4gIH07XHJcblxyXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVSb3dDb21tYW5kQ2xpY2soZTogQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQpIHtcclxuICAgIHRoaXMudm0uZXhlY3V0ZUNvbW1hbmQoZS5uYW1lLCBlLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNlbGVjdGVkUm93c0NoYW5nZShyb3dzOiB1bmtub3duW10pIHtcclxuICAgIHRoaXMudm0uc2VsZWN0ZWRJdGVtcy5zZXQocm93cyk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YXgtZHJhd2VyLWNvbnRhaW5lcj5cclxuICA8YXgtY29udGVudCBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtb3ZlcmZsb3ctaGlkZGVuXCIgI2NvbnRlbnQ+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCBheC1weC00IGF4LXBiLTQgbWQ6YXgtcHgtNiBheC1iZy1zdXJmYWNlICAgYXgtYm9yZGVyLWIgbWQ6YXgtYm9yZGVyLTAgbWQ6YXgtYmctZGVmYXVsdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1wdC00IGF4LWdhcC00IGF4LXN0aWNreSBheC10b3AtMCBheC16LTEwIGF4LXRyYW5zaXRpb24tYWxsXCIgI3N0aWNreT1cImF4cFN0aWNreVwiXHJcbiAgICAgICAgW2F4cFN0aWNreV09XCInYXgtYmctc3VyZmFjZSBheC1weC02IGF4LXB5LTMgLWF4LW14LTYgYXgtc2hhZG93LXhsJ1wiIFtzdGlja3lQYXJlbnRdPVwiY29udGVudC5nZXRIb3N0RWxlbWVudCgpXCI+XHJcbiAgICAgICAgPCEtLS0tLS0tLSBCZWdpbiBUb29sYmFyICAtLS0tLS0tLT5cclxuICAgICAgICA8IS0tLS0tLS0tIEJlZ2luIExpbmUgMSAgLS0tLS0tLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPCEtLS0tLS0tLSBCZWdpbiBUaXRsZSAgLS0tLS0tLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMSBheC1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtdHJhbnNpdGlvblwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXhsIG1kOmF4LXRleHQtM3hsIGF4LWZvbnQtYm9sZFwiPnt7IHZtLnRpdGxlKCl9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIEBpZih2bS5kZXNjcmlwdGlvbigpKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1zbSBheC10ZXh0LW5ldXRyYWwtNjAwXCIgW2NsYXNzLmF4LWhpZGRlbl09XCJzdGlja3kuaXNTdGlja3lcIj57e1xyXG4gICAgICAgICAgICAgICAgdm0uZGVzY3JpcHRpb24oKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8YXgtYnJlYWRjcnVtYnMgY2xhc3M9XCJjaGlsZDpheC1mb250LW5vcm1hbCBjaGlsZDpheC10ZXh0LW5ldXRyYWwtNDAwXCIgW2NsYXNzLmF4LWhpZGRlbl09XCJpc1NNIHwgYXN5bmNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jaGV2cm9uLXJpZ2h0IGF4LXRleHQteHMgYXgtbXgtMlwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICBAZm9yKGIgb2Ygdm0uYmVhcmRjcnVtYnMoKTt0cmFjayAkaW5kZXg7bGV0IGxhc3Q9JGxhc3QpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICA8YXgtYnJlYWRjcnVtYnMtaXRlbSBbYWN0aXZlXT1cImxhc3RcIiBbY2xhc3MuIWF4LWZvbnQtc2VtaWJvbGRdPVwibGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy4hYXgtdGV4dC1uZXV0cmFsLTYwMF09XCJsYXN0XCIgW3JvdXRlckxpbmtdPVwiYi51cmxcIj5cclxuICAgICAgICAgICAgICAgICAgQGlmKGIuaWNvbilcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiYi5pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHt7Yi50aXRsZX19XHJcbiAgICAgICAgICAgICAgICA8L2F4LWJyZWFkY3J1bWJzLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9heC1icmVhZGNydW1icz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0tLS0tLS0gRmluaXNoIFRpdGxlICAtLS0tLS0tLT5cclxuICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgPCEtLSBCZWdpbiBBY3Rpb24gTWVudSAgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTNcIj5cclxuICAgICAgICAgICAgQGZvcih0ciBvZiB2bS5wcmltYXJ5QWN0aW9ucygpO3RyYWNrICRpbmRleClcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cInRyLnRpdGxlXCIgW2NvbG9yXT1cInRyLmNvbG9yXCIgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQodHIubmFtZSlcIj5cclxuICAgICAgICAgICAgICA8YXgtcHJlZml4PlxyXG4gICAgICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwidHIuaWNvblwiPiA8L2F4LWljb24+XHJcbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XHJcbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBpZih2bS5zZWNvbmRhcnlBY3Rpb25zKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxheC1idXR0b24gW3RleHRdPVwiKGlzU00gfCBhc3luYykgPyBudWxsIDogJ0FjdGlvbnMnXCIgY29sb3I9XCJnaG9zdFwiPlxyXG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWVsbGlwc2lzLXZlcnRpY2FsXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxyXG4gICAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cclxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxyXG4gICAgICAgICAgICAgICAgICBAZm9yKHRyIG9mIHZtLnNlY29uZGFyeUFjdGlvbnMoKTt0cmFjayAkaW5kZXg7bGV0IGZpcnN0PSRmaXJzdClcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZih0ci5zZXBhcmF0ZWQgJiYgISRmaXJzdClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gW3RleHRdPVwidHIudGl0bGVcIiBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC17e3RyLmNvbG9yfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQodHIubmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cInRyLmljb25cIj4gPC9heC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cclxuICAgICAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxyXG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIEZpbmlzaCBBY3Rpb24gTWVudSAgLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0tLS0tLS0gRmluaXNoIExpbmUgMSAgLS0tLS0tLS0+XHJcblxyXG4gICAgICAgIDwhLS0tLS0tLS0gQmVnaW4gTGluZSAyIC0tLS0tLS0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktc3RhcnQgYXgtaXRlbXMtY2VudGVyIGF4LWdhcC00XCI+XHJcbiAgICAgICAgICAgIDwhLS0tLS0tLS0gQmVnaW4gU2VsZWN0aW9uICAtLS0tLS0tLT5cclxuXHJcbiAgICAgICAgICAgIEBpZih2bS5oYXNTZWxlY3RlZEl0ZW1zKCkpXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTMgYXgtaXRlbXMtY2VudGVyIGF4LWgtMTBcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQteGwgYXgtZm9udC1ib2xkXCI+IHt7IHZtLnNlbGVjdGVkSXRlbXMoKS5sZW5ndGggfX0gSXRlbXMgU2VsZWN0ZWQgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ2bS5jbGVhclNlbGVjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtdGV4dC1zbSBheC10ZXh0LXByaW1hcnkgZGFyazpheC10ZXh0LXByaW1hcnktMzAwIGF4LXVuZGVybGluZSBheC1jdXJzb3ItcG9pbnRlclwiPkNsZWFyXHJcbiAgICAgICAgICAgICAgICBJdGVtczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tLS0tLS0tIEZpbmlzaCBTZWxlY3Rpb24gIC0tLS0tLS0tPlxyXG5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcblxyXG4gICAgICAgICAgICA8IS0tLS0tLS0tIEJlZ2luIFZpZXcgIC0tLS0tLS0tPlxyXG5cclxuICAgICAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJ2bS52aWV3KCkudGl0bGVcIiAjdmlld3MgY29sb3I9XCJnaG9zdFwiPlxyXG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWV5ZVwiPjwvaT5cclxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cclxuICAgICAgICAgICAgICA8YXgtc3VmZml4PlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYXJldC1kb3duXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYXgtc3VmZml4PlxyXG4gICAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbCBbYWRhcHRpdml0eUVuYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3QgY2xhc3M9XCJheC1iZy1zdXJmYWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxheC10aXRsZSBjbGFzcz1cImF4LWZvbnQtYm9sZCBheC1vcGFjaXR5LTEwMFwiPlB1YmxpYyBWaWV3czwvYXgtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSAqbmdGb3I9XCJsZXQgdiBvZiB2bS52aWV3cygpXCIgW3RleHRdPVwidi50aXRsZVwiIFtjbGFzcy5heC1iZy1vbi1zdXJmYWNlXT1cInZtLnZpZXcoKT09dlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidm0uc2V0Vmlldyh2Lm5hbWUpXCI+PC9heC1idXR0b24taXRlbT5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8YXgtdGl0bGUgY2xhc3M9XCJheC1mb250LWJvbGQgYXgtb3BhY2l0eS0xMDBcIiAqbmdJZj1cImhhc0N1c3RvbVZpZXdzJCB8IGFzeW5jXCI+Q3JlYXRlZCBieSBtZTwvYXgtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gY2xhc3M9XCJheC1wZS00IGF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuXCIgKm5nRm9yPVwibGV0IHYgb2YgY3VzdG9tVmlld3MkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCJ2LnRpdGxlXCIgW2NsYXNzLmF4LWJnLW9uLXN1cmZhY2VdPVwiKHZpZXckIHwgYXN5bmMpID09IHZcIiAob25DbGljayk9XCJsb2FkZXIuc2V0Vmlldyh2Lm5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxheC1zdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiAob25DbGljayk9XCJ1cGRhdGVWaWV3UG9wdXAoJGV2ZW50LCB2KVwiIGNsYXNzPVwiYXgteHNcIiBsb29rPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXIgZmEtZWRpdFwiPiA8L2F4LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvYXgtc3VmZml4PlxyXG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqZmVhdHVyZT1cIidheHAtZW50aXR5LWxpc3QtY3VzdG9tLXZpZXcnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJBZGQgQ3VzdG9tIFZpZXdcIiAob25DbGljayk9XCJhZGRDdXN0b21WaWV3UG9wdXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtcHJpbWFyeVwiPjwvYXgtYnV0dG9uLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cclxuICAgICAgICAgICAgPC9heC1idXR0b24+XHJcbiAgICAgICAgICAgIDwhLS0tLS0tLS0gRmluaXNoIFZpZXcgIC0tLS0tLS0tPlxyXG5cclxuICAgICAgICAgICAgPCEtLS0tLS0tLSBCZWdpbiBJbmxpbmUgU2VhcmNoICAgLS0tLS0tLS0+XHJcblxyXG4gICAgICAgICAgICBAaWYodm0uaGFzSW5saW5lRmlsdGVycygpKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC13LTcyXCIgKmZlYXR1cmU9XCInYXhwLWVudGl0eS1saXN0LWlubGluZS1maWx0ZXInXCI+XHJcbiAgICAgICAgICAgICAgPGF4LXNlYXJjaC1ib3ggW3BsYWNlaG9sZGVyXT1cIidTZWFyY2ggb24gJyt2bS5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkuam9pbignLCAnKVwiXHJcbiAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlU2VhcmNoVmFsdWUoJGV2ZW50KVwiPjxheC1jbGVhci1idXR0b24+PC9heC1jbGVhci1idXR0b24+PC9heC1zZWFyY2gtYm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwhLS0tLS0tLS0gRmluaXNoIElubGluZSBTZWFyY2ggLS0tLS0tLS0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIEJlZ2luIFZpZXcgQWN0aW9uIE1lbnUgIC0tPlxyXG4gICAgICAgICAgQGlmKCF2bS5oYXNTZWxlY3RlZEl0ZW1zKCkpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtM1wiPlxyXG4gICAgICAgICAgICA8YXgtYnV0dG9uIHRleHQ9XCJDb2x1bW5zXCIgY29sb3I9XCJnaG9zdFwiIChvbkNsaWNrKT1cImNvbHVtbnNEcmF3ZXIub3BlbigpXCI+XHJcbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtYmFyc1wiPjwvaT5cclxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cclxuICAgICAgICAgICAgICA8YXgtc3VmZml4PlxyXG4gICAgICAgICAgICAgICAgPGF4LWJhZGdlIFt0ZXh0XT1cInZtLnZpc2libGVDb2x1bW5Db3VudCgpLnRvU3RyaW5nKClcIiBjb2xvcj1cInByaW1hcnlcIj48L2F4LWJhZGdlPlxyXG4gICAgICAgICAgICAgIDwvYXgtc3VmZml4PlxyXG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cclxuICAgICAgICAgICAgPGF4LWJ1dHRvbiB0ZXh0PVwiRmlsdGVyc1wiIGNvbG9yPVwiZ2hvc3RcIiAob25DbGljayk9XCJjb25kaXRpb25zRHJhd2VyLm9wZW4oKVwiXHJcbiAgICAgICAgICAgICAgKmZlYXR1cmU9XCInYXhwLWVudGl0eS1saXN0LWFkdmFuY2UtZmlsdGVyJ1wiPlxyXG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLXNsaWRlcnNcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XHJcbiAgICAgICAgICAgICAgPGF4LXN1ZmZpeD5cclxuICAgICAgICAgICAgICAgIDxheC1iYWRnZSB0ZXh0PVwiM1wiIGNvbG9yPVwicHJpbWFyeVwiPjwvYXgtYmFkZ2U+XHJcbiAgICAgICAgICAgICAgPC9heC1zdWZmaXg+XHJcbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxyXG4gICAgICAgICAgICBAaWYodm0uY2FuU29ydCgpKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgIDxheC1idXR0b24gdGV4dD1cIlNvcnRcIiBjb2xvcj1cImdob3N0XCIgKG9uQ2xpY2spPVwic29ydHNEcmF3ZXIub3BlbigpXCI+XHJcbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtYmFycy1zb3J0XCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxyXG4gICAgICAgICAgICAgIEBpZih2bS5zb3J0ZWRDb3VudCgpKVxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICA8YXgtc3VmZml4PlxyXG4gICAgICAgICAgICAgICAgPGF4LWJhZGdlIFt0ZXh0XT1cInZtLnNvcnRlZENvdW50KCkudG9TdHJpbmcoKVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvYXgtYmFkZ2U+XHJcbiAgICAgICAgICAgICAgPC9heC1zdWZmaXg+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8IS0tIEZpbmlzaCBWaWV3IEFjdGlvbiBNZW51ICAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tLS0tLS0tIEZpbmlzaCBMaW5lIDIgIC0tLS0tLS0tPlxyXG5cclxuICAgICAgICA8IS0tLS0tIEZpbmlzaCBUb29sYmFyICAtLS0tLT5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tLS0tIEJlZ2luIERhdGFUYWJsZSAgLS0tLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LTEgYXgtcHgtNiBheC1weS00ICBheC1vdmVyZmxvdy1hdXRvXCI+XHJcbiAgICAgIDxheC1kYXRhLXRhYmxlICNncmlkIFtzaG93Rm9vdGVyXT1cImZhbHNlXCIgY2xhc3M9XCJheC1mbGV4LTFcIiBbcGFnaW5nXT1cInRydWVcIiBbZmV0Y2hEYXRhTW9kZV09XCInbWFudWFsJ1wiXHJcbiAgICAgICAgW2xvYWRpbmddPVwieyBlbmFibGVkOiB0cnVlLCBhbmltYXRpb246IHRydWUgfVwiIFtkYXRhU291cmNlXT1cInZtLmRhdGFTb3VyY2VcIlxyXG4gICAgICAgIChzZWxlY3RlZFJvd3NDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0ZWRSb3dzQ2hhbmdlKCRldmVudClcIiAob25Sb3dEYkNsaWNrKT1cImhhbmRsZVJvd0RiQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgIDxheC1zZWxlY3QtY29sdW1uIGZpeGVkPVwic3RhcnRcIiBbd2lkdGhdPVwiJzUwcHgnXCI+PC9heC1zZWxlY3QtY29sdW1uPlxyXG4gICAgICAgIEBmb3IoY29sIG9mIHZtLmNvbHVtbnMoKTt0cmFjayBjb2wubmFtZSkge1xyXG4gICAgICAgIEBpZihjb2wudmlzaWJsZSlcclxuICAgICAgICB7XHJcbiAgICAgICAgPGF4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyIFtjYXB0aW9uXT1cImNvbC50aXRsZVwiIFtub2RlXT1cImNvbC5ub2RlKClcIj48L2F4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyPlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgPGF4LWRyb3Bkb3duLWNvbW1hbmQtY29sdW1uIGZpeGVkPVwiZW5kXCIgW3dpZHRoXT1cIic2MHB4J1wiIFtpdGVtc109XCJnZXREcm9wZG93blJvd0l0ZW1zXCJcclxuICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVSb3dDb21tYW5kQ2xpY2soJGV2ZW50KVwiPjwvYXgtZHJvcGRvd24tY29tbWFuZC1jb2x1bW4+XHJcbiAgICAgIDwvYXgtZGF0YS10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLS0tLSBGaW5pc2ggRGF0YVRhYmxlICAtLS0tLT5cclxuICA8L2F4LWNvbnRlbnQ+XHJcblxyXG4gIDxheC1kcmF3ZXIgKGNvbGxhcHNlZENoYW5nZSk9XCJjbG9zZURyYXdlcignY29sdW1ucycsICRldmVudClcIiAjY29sdW1uc0RyYXdlciBsb2NhdGlvbj1cImVuZFwiIFttb2RlXT1cIidvdmVybGF5J1wiPlxyXG4gICAgPGF4LWNvbnRlbnQgY2xhc3M9XCJheC13LVs4NXZ3XSBtZDpheC13LVs0NXZ3XSBsZzpheC13LVszNXZ3XSAyeGw6YXgtdy1bMjB2d10gYXgtYm9yZGVyLWVcIj5cclxuICAgICAgPGF4cC1saXN0LXZpZXctb3B0aW9uLWNvbHVtbnMgW3ZpZXdNb2RlbF09XCJ2bVwiIChvbkNsb3NlZCk9XCJjb2x1bW5zRHJhd2VyLmNsb3NlKClcIj48L2F4cC1saXN0LXZpZXctb3B0aW9uLWNvbHVtbnM+XHJcbiAgICA8L2F4LWNvbnRlbnQ+XHJcbiAgPC9heC1kcmF3ZXI+XHJcbiAgPGF4LWRyYXdlciAoY29sbGFwc2VkQ2hhbmdlKT1cImNsb3NlRHJhd2VyKCdjb25kaXRpb25zJywgJGV2ZW50KVwiICNjb25kaXRpb25zRHJhd2VyIGxvY2F0aW9uPVwiZW5kXCIgW21vZGVdPVwiJ292ZXJsYXknXCI+XHJcbiAgICA8YXgtY29udGVudCBjbGFzcz1cImF4LXctWzg1dnddIG1kOmF4LXctWzQ1dnddIGxnOmF4LXctWzM1dnddIDJ4bDpheC13LVsyNXZ3XSBheC1ib3JkZXItZVwiPlxyXG4gICAgICA8IS0tIDxheHAtbGlzdC12aWV3LW9wdGlvbi1jb25kaXRpb25zIFtsb2FkZXJdPVwibG9hZGVyXCJcclxuICAgICAgICAob25DbG9zZWQpPVwiY29uZGl0aW9uc0RyYXdlci5jbG9zZSgpXCI+PC9heHAtbGlzdC12aWV3LW9wdGlvbi1jb25kaXRpb25zPiAtLT5cclxuICAgIDwvYXgtY29udGVudD5cclxuICA8L2F4LWRyYXdlcj5cclxuICA8YXgtZHJhd2VyIChjb2xsYXBzZWRDaGFuZ2UpPVwiY2xvc2VEcmF3ZXIoJ3NvcnRzJywgJGV2ZW50KVwiICNzb3J0c0RyYXdlciBsb2NhdGlvbj1cImVuZFwiIFttb2RlXT1cIidvdmVybGF5J1wiPlxyXG4gICAgPGF4LWNvbnRlbnQgY2xhc3M9XCJheC13LVs4NXZ3XSBtZDpheC13LVs0NXZ3XSBsZzpheC13LVszNXZ3XSAyeGw6YXgtdy1bMjB2d10gYXgtYm9yZGVyLWVcIj5cclxuICAgICAgPGF4cC1saXN0LXZpZXctb3B0aW9uLXNvcnRpbmcgKG9uQ2xvc2VkKT1cInNvcnRzRHJhd2VyLmNsb3NlKClcIiBbdmlld01vZGVsXT1cInZtXCI+PC9heHAtbGlzdC12aWV3LW9wdGlvbi1zb3J0aW5nPlxyXG4gICAgPC9heC1jb250ZW50PlxyXG4gIDwvYXgtZHJhd2VyPlxyXG48L2F4LWRyYXdlci1jb250YWluZXI+Il19
|