@dignite-ng/expand.cms 0.0.33 → 0.0.35
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/config/cms-config.module.d.ts +8 -0
- package/config/{src/enums/index.ts → enums/index.d.ts} +1 -1
- package/config/enums/route-names.d.ts +7 -0
- package/config/index.d.ts +5 -0
- package/config/{src/providers/index.ts → providers/index.d.ts} +1 -1
- package/config/providers/route.provider.d.ts +9 -0
- package/config/{src/public-api.ts → public-api.d.ts} +3 -3
- package/esm2022/config/cms-config.module.mjs +19 -0
- package/esm2022/config/dignite-ng-expand.cms-config.mjs +5 -0
- package/esm2022/config/enums/index.mjs +2 -0
- package/esm2022/config/enums/route-names.mjs +2 -0
- package/esm2022/config/providers/index.mjs +2 -0
- package/esm2022/config/providers/route.provider.mjs +78 -0
- package/esm2022/config/public-api.mjs +4 -0
- package/esm2022/dignite-ng-expand.cms.mjs +5 -0
- package/esm2022/lib/cms-routing.module.mjs +100 -0
- package/esm2022/lib/cms.module.mjs +132 -0
- package/esm2022/lib/components/admin/domains/domains.component.mjs +90 -0
- package/esm2022/lib/components/admin/domains/index.mjs +2 -0
- package/esm2022/lib/components/admin/entries/create-or-edit-entries.component.mjs +286 -0
- package/esm2022/lib/components/admin/entries/create-or-update-entry-input-base.mjs +32 -0
- package/esm2022/lib/components/admin/entries/create.component.mjs +108 -0
- package/esm2022/lib/components/admin/entries/edit.component.mjs +107 -0
- package/esm2022/lib/components/admin/entries/entries.component.mjs +211 -0
- package/esm2022/lib/components/admin/entries/index.mjs +5 -0
- package/esm2022/lib/components/admin/fields/create-field.component.mjs +82 -0
- package/esm2022/lib/components/admin/fields/create-or-edit-field.component.mjs +119 -0
- package/esm2022/lib/components/admin/fields/create-or-update-field-input-base.mjs +25 -0
- package/esm2022/lib/components/admin/fields/edit-field.component.mjs +113 -0
- package/esm2022/lib/components/admin/fields/field-group.component.mjs +124 -0
- package/esm2022/lib/components/admin/fields/fields.component.mjs +119 -0
- package/esm2022/lib/components/admin/fields/index.mjs +7 -0
- package/esm2022/lib/components/admin/index.mjs +6 -0
- package/esm2022/lib/components/admin/sections/create-or-update-sections-input-base.mjs +27 -0
- package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.mjs +71 -0
- package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +416 -0
- package/esm2022/lib/components/admin/sections/entry-types/index.mjs +3 -0
- package/esm2022/lib/components/admin/sections/index.mjs +4 -0
- package/esm2022/lib/components/admin/sections/sections.component.mjs +348 -0
- package/esm2022/lib/components/admin/sites/create-or-update-sites-input-base.mjs +18 -0
- package/esm2022/lib/components/admin/sites/index.mjs +3 -0
- package/esm2022/lib/components/admin/sites/sites.component.mjs +29 -0
- package/esm2022/lib/components/dynamic-form/entry/entry-config.component.mjs +124 -0
- package/esm2022/lib/components/dynamic-form/entry/entry-config.mjs +18 -0
- package/esm2022/lib/components/dynamic-form/entry/entry-control.component.mjs +116 -0
- package/esm2022/lib/components/dynamic-form/entry/index.mjs +4 -0
- package/esm2022/lib/components/dynamic-form/form-control-group.mjs +28 -0
- package/esm2022/lib/components/dynamic-form/index.mjs +5 -0
- package/esm2022/lib/components/dynamic-form/matrix/index.mjs +4 -0
- package/esm2022/lib/components/dynamic-form/matrix/matrix-config.component.mjs +228 -0
- package/esm2022/lib/components/dynamic-form/matrix/matrix-config.mjs +50 -0
- package/esm2022/lib/components/dynamic-form/matrix/matrix-control.component.mjs +115 -0
- package/esm2022/lib/components/dynamic-form/table/index.mjs +4 -0
- package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +174 -0
- package/esm2022/lib/components/dynamic-form/table/table-config.mjs +38 -0
- package/esm2022/lib/components/dynamic-form/table/table-control.component.mjs +121 -0
- package/esm2022/lib/components/index.mjs +3 -0
- package/esm2022/lib/constants/styles.mjs +18 -0
- package/esm2022/lib/enums/ecms-component.mjs +13 -0
- package/esm2022/lib/enums/index.mjs +2 -0
- package/esm2022/lib/proxy/admin/domains/domain-admin.service.mjs +34 -0
- package/esm2022/lib/proxy/admin/domains/index.mjs +3 -0
- package/esm2022/lib/proxy/admin/domains/models.mjs +2 -0
- package/esm2022/lib/proxy/admin/dynamic-forms/form-admin.service.mjs +24 -0
- package/esm2022/lib/proxy/admin/dynamic-forms/index.mjs +3 -0
- package/esm2022/lib/proxy/admin/dynamic-forms/models.mjs +2 -0
- package/esm2022/lib/proxy/admin/entries/entry-admin.service.mjs +72 -0
- package/esm2022/lib/proxy/admin/entries/index.mjs +3 -0
- package/esm2022/lib/proxy/admin/entries/models.mjs +2 -0
- package/esm2022/lib/proxy/admin/fields/field-admin.service.mjs +47 -0
- package/esm2022/lib/proxy/admin/fields/field-group-admin.service.mjs +43 -0
- package/esm2022/lib/proxy/admin/fields/index.mjs +4 -0
- package/esm2022/lib/proxy/admin/fields/models.mjs +2 -0
- package/esm2022/lib/proxy/admin/sections/entry-type-admin.service.mjs +43 -0
- package/esm2022/lib/proxy/admin/sections/index.mjs +4 -0
- package/esm2022/lib/proxy/admin/sections/models.mjs +2 -0
- package/esm2022/lib/proxy/admin/sections/section-admin.service.mjs +53 -0
- package/esm2022/lib/proxy/admin/settings/index.mjs +2 -0
- package/esm2022/lib/proxy/admin/settings/site-settings-admin.service.mjs +33 -0
- package/esm2022/lib/proxy/dignite/abp/data/models.mjs +2 -0
- package/esm2022/lib/proxy/entries/entry-status.enum.mjs +8 -0
- package/esm2022/lib/proxy/entries/index.mjs +2 -0
- package/esm2022/lib/proxy/fields/models.mjs +2 -0
- package/esm2022/lib/proxy/sections/index.mjs +3 -0
- package/esm2022/lib/proxy/sections/models.mjs +2 -0
- package/esm2022/lib/proxy/sections/section-type.enum.mjs +9 -0
- package/esm2022/lib/proxy/settings/models.mjs +2 -0
- package/esm2022/lib/proxy/volo/cms-kit/users/models.mjs +2 -0
- package/esm2022/lib/services/appent-content.mjs +15 -0
- package/esm2022/lib/services/cms-api.service.mjs +80 -0
- package/esm2022/lib/services/cms.service.mjs +23 -0
- package/esm2022/lib/services/field-abstracts.service.mjs +45 -0
- package/esm2022/lib/services/index.mjs +5 -0
- package/esm2022/lib/services/simple-reuse-strategy.mjs +43 -0
- package/esm2022/lib/services/update-list.service.mjs +19 -0
- package/esm2022/lib/toolbar/index.mjs +3 -0
- package/esm2022/lib/toolbar/toolbar-btn-default-action.mjs +160 -0
- package/esm2022/lib/toolbar/toolbar-config.mjs +79 -0
- package/esm2022/public-api.mjs +10 -0
- package/fesm2022/dignite-ng-expand.cms-config.mjs +101 -0
- package/fesm2022/dignite-ng-expand.cms-config.mjs.map +1 -0
- package/fesm2022/dignite-ng-expand.cms.mjs +4097 -0
- package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/cms-routing.module.d.ts +7 -0
- package/lib/cms.module.d.ts +35 -0
- package/lib/components/admin/domains/domains.component.d.ts +21 -0
- package/lib/components/admin/domains/index.d.ts +1 -0
- package/lib/components/admin/entries/create-or-edit-entries.component.d.ts +92 -0
- package/lib/components/admin/entries/create-or-update-entry-input-base.d.ts +23 -0
- package/lib/components/admin/entries/create.component.d.ts +40 -0
- package/lib/components/admin/entries/edit.component.d.ts +40 -0
- package/lib/components/admin/entries/entries.component.d.ts +66 -0
- package/lib/components/admin/entries/index.d.ts +4 -0
- package/lib/components/admin/fields/create-field.component.d.ts +31 -0
- package/lib/components/admin/fields/create-or-edit-field.component.d.ts +36 -0
- package/lib/components/admin/fields/create-or-update-field-input-base.d.ts +16 -0
- package/lib/components/admin/fields/edit-field.component.d.ts +40 -0
- package/lib/components/admin/fields/field-group.component.d.ts +51 -0
- package/lib/components/admin/fields/fields.component.d.ts +37 -0
- package/lib/components/admin/fields/index.d.ts +6 -0
- package/lib/components/admin/index.d.ts +5 -0
- package/lib/components/admin/sections/create-or-update-sections-input-base.d.ts +17 -0
- package/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.d.ts +38 -0
- package/lib/components/admin/sections/entry-types/create-or-edit.component.d.ts +132 -0
- package/lib/components/admin/sections/entry-types/index.d.ts +2 -0
- package/lib/components/admin/sections/index.d.ts +3 -0
- package/lib/components/admin/sections/sections.component.d.ts +90 -0
- package/lib/components/admin/sites/create-or-update-sites-input-base.d.ts +8 -0
- package/lib/components/admin/sites/index.d.ts +2 -0
- package/lib/components/admin/sites/sites.component.d.ts +5 -0
- package/lib/components/dynamic-form/entry/entry-config.component.d.ts +39 -0
- package/lib/components/dynamic-form/entry/entry-config.d.ts +9 -0
- package/lib/components/dynamic-form/entry/entry-control.component.d.ts +35 -0
- package/lib/components/dynamic-form/entry/index.d.ts +3 -0
- package/lib/components/dynamic-form/form-control-group.d.ts +4 -0
- package/lib/components/dynamic-form/index.d.ts +4 -0
- package/lib/components/dynamic-form/matrix/index.d.ts +3 -0
- package/lib/components/dynamic-form/matrix/matrix-config.component.d.ts +73 -0
- package/lib/components/dynamic-form/matrix/matrix-config.d.ts +24 -0
- package/lib/components/dynamic-form/matrix/matrix-control.component.d.ts +39 -0
- package/lib/components/dynamic-form/table/index.d.ts +3 -0
- package/lib/components/dynamic-form/table/table-config.component.d.ts +58 -0
- package/lib/components/dynamic-form/table/table-config.d.ts +18 -0
- package/lib/components/dynamic-form/table/table-control.component.d.ts +39 -0
- package/lib/components/index.d.ts +2 -0
- package/lib/constants/styles.d.ts +2 -0
- package/lib/enums/ecms-component.d.ts +11 -0
- package/lib/enums/index.d.ts +1 -0
- package/lib/proxy/admin/domains/domain-admin.service.d.ts +13 -0
- package/{src/lib/proxy/admin/domains/models.ts → lib/proxy/admin/domains/models.d.ts} +7 -9
- package/lib/proxy/admin/dynamic-forms/form-admin.service.d.ts +12 -0
- package/lib/proxy/admin/dynamic-forms/models.d.ts +4 -0
- package/lib/proxy/admin/entries/entry-admin.service.d.ts +22 -0
- package/lib/proxy/admin/entries/models.d.ts +60 -0
- package/lib/proxy/admin/fields/field-admin.service.d.ts +17 -0
- package/lib/proxy/admin/fields/field-group-admin.service.d.ts +16 -0
- package/{src/lib/proxy/admin/fields/models.ts → lib/proxy/admin/fields/models.d.ts} +34 -42
- package/lib/proxy/admin/sections/entry-type-admin.service.d.ts +15 -0
- package/{src/lib/proxy/admin/sections/models.ts → lib/proxy/admin/sections/models.d.ts} +67 -81
- package/lib/proxy/admin/sections/section-admin.service.d.ts +18 -0
- package/lib/proxy/admin/settings/site-settings-admin.service.d.ts +13 -0
- package/lib/proxy/dignite/abp/data/models.d.ts +3 -0
- package/lib/proxy/entries/entry-status.enum.d.ts +5 -0
- package/lib/proxy/fields/models.d.ts +8 -0
- package/lib/proxy/sections/models.d.ts +12 -0
- package/lib/proxy/sections/section-type.enum.d.ts +6 -0
- package/lib/proxy/settings/models.d.ts +5 -0
- package/{src/lib/proxy/volo/cms-kit/users/models.ts → lib/proxy/volo/cms-kit/users/models.d.ts} +7 -8
- package/lib/services/appent-content.d.ts +1 -0
- package/lib/services/cms-api.service.d.ts +20 -0
- package/lib/services/cms.service.d.ts +10 -0
- package/lib/services/field-abstracts.service.d.ts +20 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/simple-reuse-strategy.d.ts +11 -0
- package/lib/services/update-list.service.d.ts +9 -0
- package/lib/toolbar/index.d.ts +2 -0
- package/lib/toolbar/toolbar-btn-default-action.d.ts +18 -0
- package/lib/toolbar/toolbar-config.d.ts +56 -0
- package/package.json +21 -6
- package/{src/public-api.ts → public-api.d.ts} +4 -10
- package/config/ng-package.json +0 -7
- package/config/src/cms-config.module.ts +0 -12
- package/config/src/enums/route-names.ts +0 -8
- package/config/src/providers/route.provider.ts +0 -82
- package/ng-package.json +0 -7
- package/src/lib/cms-routing.module.ts +0 -108
- package/src/lib/cms.module.ts +0 -108
- package/src/lib/components/admin/domains/domains.component.html +0 -19
- package/src/lib/components/admin/domains/domains.component.scss +0 -0
- package/src/lib/components/admin/domains/domains.component.spec.ts +0 -21
- package/src/lib/components/admin/domains/domains.component.ts +0 -99
- package/src/lib/components/admin/domains/index.ts +0 -1
- package/src/lib/components/admin/entries/create-or-edit-entries.component.html +0 -113
- package/src/lib/components/admin/entries/create-or-edit-entries.component.scss +0 -1
- package/src/lib/components/admin/entries/create-or-edit-entries.component.spec.ts +0 -21
- package/src/lib/components/admin/entries/create-or-edit-entries.component.ts +0 -284
- package/src/lib/components/admin/entries/create-or-update-entry-input-base.ts +0 -33
- package/src/lib/components/admin/entries/create.component.html +0 -13
- package/src/lib/components/admin/entries/create.component.scss +0 -1
- package/src/lib/components/admin/entries/create.component.spec.ts +0 -21
- package/src/lib/components/admin/entries/create.component.ts +0 -104
- package/src/lib/components/admin/entries/edit.component.html +0 -9
- package/src/lib/components/admin/entries/edit.component.scss +0 -1
- package/src/lib/components/admin/entries/edit.component.spec.ts +0 -21
- package/src/lib/components/admin/entries/edit.component.ts +0 -98
- package/src/lib/components/admin/entries/entries.component.html +0 -112
- package/src/lib/components/admin/entries/entries.component.scss +0 -1
- package/src/lib/components/admin/entries/entries.component.spec.ts +0 -21
- package/src/lib/components/admin/entries/entries.component.ts +0 -219
- package/src/lib/components/admin/entries/index.ts +0 -4
- package/src/lib/components/admin/fields/create-field.component.html +0 -12
- package/src/lib/components/admin/fields/create-field.component.scss +0 -1
- package/src/lib/components/admin/fields/create-field.component.spec.ts +0 -21
- package/src/lib/components/admin/fields/create-field.component.ts +0 -68
- package/src/lib/components/admin/fields/create-or-edit-field.component.html +0 -39
- package/src/lib/components/admin/fields/create-or-edit-field.component.scss +0 -0
- package/src/lib/components/admin/fields/create-or-edit-field.component.spec.ts +0 -21
- package/src/lib/components/admin/fields/create-or-edit-field.component.ts +0 -116
- package/src/lib/components/admin/fields/create-or-update-field-input-base.ts +0 -33
- package/src/lib/components/admin/fields/edit-field.component.html +0 -13
- package/src/lib/components/admin/fields/edit-field.component.scss +0 -0
- package/src/lib/components/admin/fields/edit-field.component.spec.ts +0 -21
- package/src/lib/components/admin/fields/edit-field.component.ts +0 -100
- package/src/lib/components/admin/fields/field-group.component.html +0 -69
- package/src/lib/components/admin/fields/field-group.component.scss +0 -0
- package/src/lib/components/admin/fields/field-group.component.spec.ts +0 -21
- package/src/lib/components/admin/fields/field-group.component.ts +0 -132
- package/src/lib/components/admin/fields/fields.component.html +0 -74
- package/src/lib/components/admin/fields/fields.component.scss +0 -1
- package/src/lib/components/admin/fields/fields.component.spec.ts +0 -21
- package/src/lib/components/admin/fields/fields.component.ts +0 -111
- package/src/lib/components/admin/fields/index.ts +0 -6
- package/src/lib/components/admin/index.ts +0 -5
- package/src/lib/components/admin/sections/create-or-update-sections-input-base.ts +0 -36
- package/src/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.ts +0 -79
- package/src/lib/components/admin/sections/entry-types/create-or-edit.component.html +0 -191
- package/src/lib/components/admin/sections/entry-types/create-or-edit.component.scss +0 -1
- package/src/lib/components/admin/sections/entry-types/create-or-edit.component.spec.ts +0 -21
- package/src/lib/components/admin/sections/entry-types/create-or-edit.component.ts +0 -408
- package/src/lib/components/admin/sections/entry-types/index.ts +0 -2
- package/src/lib/components/admin/sections/index.ts +0 -3
- package/src/lib/components/admin/sections/sections.component.html +0 -190
- package/src/lib/components/admin/sections/sections.component.scss +0 -1
- package/src/lib/components/admin/sections/sections.component.spec.ts +0 -21
- package/src/lib/components/admin/sections/sections.component.ts +0 -370
- package/src/lib/components/admin/sites/create-or-update-sites-input-base.ts +0 -18
- package/src/lib/components/admin/sites/index.ts +0 -2
- package/src/lib/components/admin/sites/sites.component.html +0 -136
- package/src/lib/components/admin/sites/sites.component.scss +0 -1
- package/src/lib/components/admin/sites/sites.component.spec.ts +0 -21
- package/src/lib/components/admin/sites/sites.component.ts +0 -250
- package/src/lib/components/dynamic-form/entry/entry-config.component.html +0 -36
- package/src/lib/components/dynamic-form/entry/entry-config.component.scss +0 -0
- package/src/lib/components/dynamic-form/entry/entry-config.component.spec.ts +0 -21
- package/src/lib/components/dynamic-form/entry/entry-config.component.ts +0 -115
- package/src/lib/components/dynamic-form/entry/entry-config.ts +0 -24
- package/src/lib/components/dynamic-form/entry/entry-control.component.html +0 -26
- package/src/lib/components/dynamic-form/entry/entry-control.component.scss +0 -1
- package/src/lib/components/dynamic-form/entry/entry-control.component.spec.ts +0 -21
- package/src/lib/components/dynamic-form/entry/entry-control.component.ts +0 -109
- package/src/lib/components/dynamic-form/entry/index.ts +0 -3
- package/src/lib/components/dynamic-form/form-control-group.ts +0 -27
- package/src/lib/components/dynamic-form/index.ts +0 -4
- package/src/lib/components/dynamic-form/matrix/index.ts +0 -3
- package/src/lib/components/dynamic-form/matrix/matrix-config.component.html +0 -147
- package/src/lib/components/dynamic-form/matrix/matrix-config.component.scss +0 -0
- package/src/lib/components/dynamic-form/matrix/matrix-config.component.spec.ts +0 -21
- package/src/lib/components/dynamic-form/matrix/matrix-config.component.ts +0 -236
- package/src/lib/components/dynamic-form/matrix/matrix-config.ts +0 -63
- package/src/lib/components/dynamic-form/matrix/matrix-control.component.html +0 -42
- package/src/lib/components/dynamic-form/matrix/matrix-control.component.scss +0 -0
- package/src/lib/components/dynamic-form/matrix/matrix-control.component.spec.ts +0 -21
- package/src/lib/components/dynamic-form/matrix/matrix-control.component.ts +0 -104
- package/src/lib/components/dynamic-form/table/index.ts +0 -3
- package/src/lib/components/dynamic-form/table/table-config.component.html +0 -85
- package/src/lib/components/dynamic-form/table/table-config.component.scss +0 -10
- package/src/lib/components/dynamic-form/table/table-config.component.spec.ts +0 -21
- package/src/lib/components/dynamic-form/table/table-config.component.ts +0 -170
- package/src/lib/components/dynamic-form/table/table-config.ts +0 -45
- package/src/lib/components/dynamic-form/table/table-control.component.html +0 -54
- package/src/lib/components/dynamic-form/table/table-control.component.scss +0 -1
- package/src/lib/components/dynamic-form/table/table-control.component.spec.ts +0 -21
- package/src/lib/components/dynamic-form/table/table-control.component.ts +0 -115
- package/src/lib/components/index.ts +0 -2
- package/src/lib/constants/index.ts +0 -1
- package/src/lib/constants/styles.ts +0 -13
- package/src/lib/enums/ecms-component.ts +0 -11
- package/src/lib/enums/index.ts +0 -1
- package/src/lib/proxy/README.md +0 -17
- package/src/lib/proxy/admin/domains/domain-admin.service.ts +0 -38
- package/src/lib/proxy/admin/dynamic-forms/form-admin.service.ts +0 -21
- package/src/lib/proxy/admin/dynamic-forms/models.ts +0 -5
- package/src/lib/proxy/admin/entries/entry-admin.service.ts +0 -109
- package/src/lib/proxy/admin/entries/models.ts +0 -68
- package/src/lib/proxy/admin/fields/field-admin.service.ts +0 -64
- package/src/lib/proxy/admin/fields/field-group-admin.service.ts +0 -56
- package/src/lib/proxy/admin/index.ts +0 -7
- package/src/lib/proxy/admin/sections/entry-type-admin.service.ts +0 -55
- package/src/lib/proxy/admin/sections/section-admin.service.ts +0 -74
- package/src/lib/proxy/admin/settings/site-settings-admin.service.ts +0 -37
- package/src/lib/proxy/dignite/abp/data/index.ts +0 -1
- package/src/lib/proxy/dignite/abp/data/models.ts +0 -4
- package/src/lib/proxy/dignite/abp/index.ts +0 -2
- package/src/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.ts +0 -65
- package/src/lib/proxy/dignite/file-explorer/directories/index.ts +0 -2
- package/src/lib/proxy/dignite/file-explorer/directories/models.ts +0 -35
- package/src/lib/proxy/dignite/file-explorer/files/file-descriptor.service.ts +0 -86
- package/src/lib/proxy/dignite/file-explorer/files/index.ts +0 -2
- package/src/lib/proxy/dignite/file-explorer/files/models.ts +0 -58
- package/src/lib/proxy/dignite/file-explorer/index.ts +0 -3
- package/src/lib/proxy/dignite/index.ts +0 -3
- package/src/lib/proxy/entries/entry-status.enum.ts +0 -8
- package/src/lib/proxy/fields/index.ts +0 -1
- package/src/lib/proxy/fields/models.ts +0 -9
- package/src/lib/proxy/generate-proxy.json +0 -11425
- package/src/lib/proxy/index.ts +0 -9
- package/src/lib/proxy/microsoft/asp-net-core/index.ts +0 -2
- package/src/lib/proxy/microsoft/asp-net-core/mvc/index.ts +0 -1
- package/src/lib/proxy/microsoft/asp-net-core/mvc/models.ts +0 -12
- package/src/lib/proxy/microsoft/extensions/index.ts +0 -2
- package/src/lib/proxy/microsoft/extensions/primitives/index.ts +0 -1
- package/src/lib/proxy/microsoft/extensions/primitives/models.ts +0 -9
- package/src/lib/proxy/microsoft/index.ts +0 -4
- package/src/lib/proxy/microsoft/net/http/headers/index.ts +0 -1
- package/src/lib/proxy/microsoft/net/http/headers/models.ts +0 -7
- package/src/lib/proxy/microsoft/net/http/index.ts +0 -2
- package/src/lib/proxy/microsoft/net/index.ts +0 -2
- package/src/lib/proxy/sections/models.ts +0 -14
- package/src/lib/proxy/sections/section-type.enum.ts +0 -9
- package/src/lib/proxy/settings/index.ts +0 -1
- package/src/lib/proxy/settings/models.ts +0 -6
- package/src/lib/proxy/volo/abp/content/index.ts +0 -1
- package/src/lib/proxy/volo/abp/content/models.ts +0 -6
- package/src/lib/proxy/volo/abp/index.ts +0 -2
- package/src/lib/proxy/volo/cms-kit/index.ts +0 -2
- package/src/lib/proxy/volo/cms-kit/users/index.ts +0 -1
- package/src/lib/proxy/volo/index.ts +0 -3
- package/src/lib/proxy.zip +0 -0
- package/src/lib/services/appent-content.ts +0 -13
- package/src/lib/services/cms-api.service.ts +0 -71
- package/src/lib/services/cms.service.ts +0 -18
- package/src/lib/services/field-abstracts.service.ts +0 -40
- package/src/lib/services/index.ts +0 -4
- package/src/lib/services/simple-reuse-strategy.ts +0 -49
- package/src/lib/services/update-list.service.ts +0 -15
- package/src/lib/toolbar/index.ts +0 -2
- package/src/lib/toolbar/toolbar-btn-default-action.ts +0 -171
- package/src/lib/toolbar/toolbar-config.ts +0 -93
- package/src/test.ts +0 -26
- package/tsconfig.lib.json +0 -34
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
- /package/{src/lib/proxy/admin/domains/index.ts → lib/proxy/admin/domains/index.d.ts} +0 -0
- /package/{src/lib/proxy/admin/dynamic-forms/index.ts → lib/proxy/admin/dynamic-forms/index.d.ts} +0 -0
- /package/{src/lib/proxy/admin/entries/index.ts → lib/proxy/admin/entries/index.d.ts} +0 -0
- /package/{src/lib/proxy/admin/fields/index.ts → lib/proxy/admin/fields/index.d.ts} +0 -0
- /package/{src/lib/proxy/admin/sections/index.ts → lib/proxy/admin/sections/index.d.ts} +0 -0
- /package/{src/lib/proxy/admin/settings/index.ts → lib/proxy/admin/settings/index.d.ts} +0 -0
- /package/{src/lib/proxy/entries/index.ts → lib/proxy/entries/index.d.ts} +0 -0
- /package/{src/lib/proxy/sections/index.ts → lib/proxy/sections/index.d.ts} +0 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/* eslint-disable @angular-eslint/component-selector */
|
|
2
|
+
import { Component, Input, ViewChild, } from '@angular/core';
|
|
3
|
+
import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
|
|
4
|
+
import { MatrixConfig, MatrixItemConfig } from './matrix-config';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
import * as i2 from "../../../services";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "@abp/ng.core";
|
|
10
|
+
import * as i5 from "@ngx-validate/core";
|
|
11
|
+
import * as i6 from "@abp/ng.theme.shared";
|
|
12
|
+
import * as i7 from "@ng-bootstrap/ng-bootstrap";
|
|
13
|
+
import * as i8 from "@dignite-ng/expand.dynamic-form";
|
|
14
|
+
class MatrixConfigComponent {
|
|
15
|
+
fb;
|
|
16
|
+
_CmsApiService;
|
|
17
|
+
_FieldAbstractsService;
|
|
18
|
+
constructor(fb, _CmsApiService, _FieldAbstractsService) {
|
|
19
|
+
this.fb = fb;
|
|
20
|
+
this._CmsApiService = _CmsApiService;
|
|
21
|
+
this._FieldAbstractsService = _FieldAbstractsService;
|
|
22
|
+
}
|
|
23
|
+
/**表单控件组 */
|
|
24
|
+
_FieldControlGroup;
|
|
25
|
+
/**表单控件类型 */
|
|
26
|
+
_type;
|
|
27
|
+
set type(v) {
|
|
28
|
+
this._type = v;
|
|
29
|
+
this.dataLoaded();
|
|
30
|
+
}
|
|
31
|
+
/**表单实体 */
|
|
32
|
+
_Entity;
|
|
33
|
+
set Entity(v) {
|
|
34
|
+
this._Entity = v;
|
|
35
|
+
this.dataLoaded();
|
|
36
|
+
}
|
|
37
|
+
/**选择的表单信息 */
|
|
38
|
+
_selected;
|
|
39
|
+
set selected(v) {
|
|
40
|
+
if (v) {
|
|
41
|
+
this._selected = v;
|
|
42
|
+
this.dataLoaded();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
submitclick;
|
|
46
|
+
async dataLoaded() {
|
|
47
|
+
if (this._Entity && this._type) {
|
|
48
|
+
await this.AfterInit();
|
|
49
|
+
this.submitclick.nativeElement.click();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
AfterInit() {
|
|
53
|
+
return new Promise(async (resolve, rejects) => {
|
|
54
|
+
this._FieldControlGroup = this._FieldAbstractsService.getExcludeAssignControl(this._type);
|
|
55
|
+
this._Entity.setControl('formConfiguration', this.fb.group(new MatrixConfig()));
|
|
56
|
+
await this.setSelectValue();
|
|
57
|
+
this.formConfiguration.patchValue(this._selected.formConfiguration);
|
|
58
|
+
resolve(true);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
setSelectValue() {
|
|
62
|
+
return new Promise((resolve, rejects) => {
|
|
63
|
+
if (this._selected && this._selected.formControlName == this._type) {
|
|
64
|
+
this._selected.formConfiguration['MatrixBlockTypes'].forEach(((el, index) => {
|
|
65
|
+
this.addMatrixBlockTypeItem(el);
|
|
66
|
+
el.fields.forEach((elf, indexf) => {
|
|
67
|
+
this.addMatrixFieldItem(elf, index);
|
|
68
|
+
});
|
|
69
|
+
}));
|
|
70
|
+
resolve(true);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**获取表单配置 */
|
|
75
|
+
get formConfiguration() {
|
|
76
|
+
return this._Entity.get('formConfiguration');
|
|
77
|
+
}
|
|
78
|
+
/**获取表单配置下的矩阵块表单数组 */
|
|
79
|
+
get MatrixBlockTypes() {
|
|
80
|
+
return this.formConfiguration.controls['MatrixBlockTypes'];
|
|
81
|
+
}
|
|
82
|
+
/**模态框-状态 */
|
|
83
|
+
matrixModalOpen = false;
|
|
84
|
+
/**模态框-是否正在编辑 */
|
|
85
|
+
isMatrixModalEdit = false;
|
|
86
|
+
/**模态框-用于确定模态的繁忙状态是否为真 */
|
|
87
|
+
modalBusy = false;
|
|
88
|
+
/**模态框-表单 */
|
|
89
|
+
matrixModalForm;
|
|
90
|
+
/**表单控件模板-用于在form外提交submit */
|
|
91
|
+
matrixModalModalSubmit;
|
|
92
|
+
/**矩阵块-选择的下标 */
|
|
93
|
+
selectMatrixBlockIndex = 0;
|
|
94
|
+
/**矩阵块-选择的矩阵下字段的下标 */
|
|
95
|
+
selectMatrixFieldIndex = 0;
|
|
96
|
+
/**模态框-状态改变 */
|
|
97
|
+
matrixModalVisibleChange(event) {
|
|
98
|
+
if (!event) {
|
|
99
|
+
this.isMatrixModalEdit = false;
|
|
100
|
+
this.matrixModalForm = undefined;
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**矩阵块--新增-打开模态框 */
|
|
105
|
+
addMatrixBlockType() {
|
|
106
|
+
this.matrixModalForm = this.fb.group(new MatrixItemConfig());
|
|
107
|
+
this.matrixModalOpen = true;
|
|
108
|
+
}
|
|
109
|
+
/**模态框--矩阵表单保存提交 */
|
|
110
|
+
createOrEditSave() {
|
|
111
|
+
let input = this.matrixModalForm.value;
|
|
112
|
+
if (!this.matrixModalForm.valid)
|
|
113
|
+
return;
|
|
114
|
+
if (this.isMatrixModalEdit) {
|
|
115
|
+
let MatrixBlockTypesItem = this.MatrixBlockTypes.at(this.selectMatrixBlockIndex);
|
|
116
|
+
MatrixBlockTypesItem.patchValue({
|
|
117
|
+
...input
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.addMatrixBlockTypeItem(input);
|
|
122
|
+
}
|
|
123
|
+
this.matrixModalOpen = false;
|
|
124
|
+
}
|
|
125
|
+
/**新增矩阵块-向数组表单中增加项 */
|
|
126
|
+
addMatrixBlockTypeItem(input) {
|
|
127
|
+
this.MatrixBlockTypes.push(new FormGroup({
|
|
128
|
+
displayName: new FormControl(input.displayName, Validators.required),
|
|
129
|
+
name: new FormControl(input.name, Validators.required),
|
|
130
|
+
fields: new FormArray([])
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
/**编辑矩阵块 */
|
|
134
|
+
EditMatrixBlock(input) {
|
|
135
|
+
this.matrixModalForm = this.fb.group(new MatrixItemConfig());
|
|
136
|
+
this.matrixModalForm.patchValue({
|
|
137
|
+
...input
|
|
138
|
+
});
|
|
139
|
+
this.matrixModalOpen = true;
|
|
140
|
+
this.isMatrixModalEdit = true;
|
|
141
|
+
}
|
|
142
|
+
/**删除矩阵块 */
|
|
143
|
+
DeleteMatrixBlock(index) {
|
|
144
|
+
this.MatrixBlockTypes.removeAt(index);
|
|
145
|
+
}
|
|
146
|
+
/**矩阵块-选择 */
|
|
147
|
+
selectMatrixBlockChange(index) {
|
|
148
|
+
this.selectMatrixBlockIndex = index;
|
|
149
|
+
}
|
|
150
|
+
/**矩阵字段-新增 */
|
|
151
|
+
addMatrixField() {
|
|
152
|
+
this.addMatrixFieldItem('', this.selectMatrixBlockIndex);
|
|
153
|
+
}
|
|
154
|
+
/**矩阵字段-新增矩阵字段项 */
|
|
155
|
+
addMatrixFieldItem(input = '', selectMatrixBlockIndex) {
|
|
156
|
+
/**矩阵下标的矩阵项Form */
|
|
157
|
+
let MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(selectMatrixBlockIndex);
|
|
158
|
+
let MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields');
|
|
159
|
+
MatrixFieldItemForm.push(this.fb.group({
|
|
160
|
+
/**字段名称 Display name of this field */
|
|
161
|
+
displayName: [input.displayName, [Validators.required]],
|
|
162
|
+
/**字段唯一名称 Unique Name*/
|
|
163
|
+
name: [input.name, [Validators.required]],
|
|
164
|
+
/**描述 说明 */
|
|
165
|
+
description: [input.description, []],
|
|
166
|
+
/**FieldType字段类型 表单控件名称 */
|
|
167
|
+
formControlName: [input.formControlName || 'TextEdit', [Validators.required]],
|
|
168
|
+
//动态表单配置
|
|
169
|
+
formConfiguration: new FormGroup({}),
|
|
170
|
+
}));
|
|
171
|
+
//
|
|
172
|
+
}
|
|
173
|
+
/**删除矩阵字段项 */
|
|
174
|
+
deleteMatrixField(MatrixFieldForm, index) {
|
|
175
|
+
MatrixFieldForm.removeAt(index);
|
|
176
|
+
this.selectMatrixFieldIndex = 0;
|
|
177
|
+
}
|
|
178
|
+
/**矩阵字段-选择 */
|
|
179
|
+
selectMatrixFieldChange(MatrixBlockIndex, MatrixFieldIndex) {
|
|
180
|
+
this.selectMatrixFieldIndex = MatrixFieldIndex;
|
|
181
|
+
}
|
|
182
|
+
get nameInput() {
|
|
183
|
+
return this.matrixModalForm?.get('name');
|
|
184
|
+
}
|
|
185
|
+
get FieldnameInput() {
|
|
186
|
+
let MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(this.selectMatrixBlockIndex);
|
|
187
|
+
let MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields');
|
|
188
|
+
return MatrixFieldItemForm.at(this.selectMatrixFieldIndex).get('name');
|
|
189
|
+
}
|
|
190
|
+
/**矩阵displayNameInput字段失去焦点 */
|
|
191
|
+
displayNameInputBlur(event) {
|
|
192
|
+
let value = event.target.value;
|
|
193
|
+
let pinyin = this._CmsApiService.chineseToPinyin(value);
|
|
194
|
+
let nameInput = this.nameInput;
|
|
195
|
+
if (nameInput.value)
|
|
196
|
+
return;
|
|
197
|
+
nameInput.patchValue(pinyin);
|
|
198
|
+
}
|
|
199
|
+
/**矩阵displayNameInput字段失去焦点 */
|
|
200
|
+
MatrixFieldDisplayNameInputBlur(event) {
|
|
201
|
+
let value = event.target.value;
|
|
202
|
+
let pinyin = this._CmsApiService.chineseToPinyin(value);
|
|
203
|
+
let FieldnameInput = this.FieldnameInput;
|
|
204
|
+
if (FieldnameInput.value)
|
|
205
|
+
return;
|
|
206
|
+
FieldnameInput.patchValue(pinyin);
|
|
207
|
+
}
|
|
208
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixConfigComponent, deps: [{ token: i1.FormBuilder }, { token: i2.CmsApiService }, { token: i2.FieldAbstractsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
209
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MatrixConfigComponent, selector: "df-matrix-config", inputs: { type: "type", Entity: "Entity", selected: "selected" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }, { propertyName: "matrixModalModalSubmit", first: true, predicate: ["matrixModalModalSubmit"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"list-group\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::MatrixBlockType' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixBlockType()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixBlockChange(i)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"i===selectMatrixBlockIndex\">\n <div>\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"list-group\" *ngIf=\"MatrixBlockTypes?.controls.length>0\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::Fields' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixField()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <ng-container *ngIf=\"i === selectMatrixBlockIndex\">\n <ng-container *ngFor=\"let el of item.controls['fields'].controls;let fi =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixFieldChange(i,fi)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"fi===selectMatrixFieldIndex\">\n <div>\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-6\" formArrayName=\"MatrixBlockTypes\">\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <div [formGroupName]=\"i\" [hidden]=\"i !== selectMatrixBlockIndex\">\n <div formArrayName=\"fields\">\n <ng-container *ngFor=\"let itemf of item.controls['fields'].controls;let fi =index\">\n <div [formGroupName]=\"fi\" [hidden]=\"fi !== selectMatrixFieldIndex\">\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"name\">{{'DigniteAbpForms::FieldName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <div class=\"form-text\">\n {{'DigniteAbpForms::FieldNameHelpText' | abpLocalization}}</div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"formControlName\">{{'Cms::FieldType' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\" (change)=\"setConfigComponent()\">\n <ng-container *ngFor=\"let itemC of _FieldControlGroup;let i =index\">\n <option [value]=\"itemC.name\">{{itemC.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <!-- {{itemf.value.formControlName}}----{{item.value|json}} -->\n <ng-container *ngIf=\"itemf.value.formControlName&&itemf\">\n <df-dynamic [type]=\"itemf.value.formControlName\" [entity]=\"itemf\"\n [selected]=\"_selected?_selected['formConfiguration']['MatrixBlockTypes'][i]['fields'][fi]:''\"></df-dynamic>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n\n<abp-modal [(visible)]=\"matrixModalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"matrixModalVisibleChange($event)\" >\n <ng-template #abpHeader>\n <h3>{{isMatrixEdit?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"matrixModalForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"matrixModalForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"displayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"name\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i4.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i4.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i4.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i5.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i5.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i6.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i6.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i8.DynamicComponent, selector: "df-dynamic", inputs: ["selected", "type", "entity", "culture", "parentFiledName", "fields"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] });
|
|
210
|
+
}
|
|
211
|
+
export { MatrixConfigComponent };
|
|
212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixConfigComponent, decorators: [{
|
|
213
|
+
type: Component,
|
|
214
|
+
args: [{ selector: 'df-matrix-config', template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"list-group\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::MatrixBlockType' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixBlockType()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixBlockChange(i)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"i===selectMatrixBlockIndex\">\n <div>\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"list-group\" *ngIf=\"MatrixBlockTypes?.controls.length>0\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::Fields' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixField()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <ng-container *ngIf=\"i === selectMatrixBlockIndex\">\n <ng-container *ngFor=\"let el of item.controls['fields'].controls;let fi =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixFieldChange(i,fi)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"fi===selectMatrixFieldIndex\">\n <div>\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-6\" formArrayName=\"MatrixBlockTypes\">\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <div [formGroupName]=\"i\" [hidden]=\"i !== selectMatrixBlockIndex\">\n <div formArrayName=\"fields\">\n <ng-container *ngFor=\"let itemf of item.controls['fields'].controls;let fi =index\">\n <div [formGroupName]=\"fi\" [hidden]=\"fi !== selectMatrixFieldIndex\">\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"name\">{{'DigniteAbpForms::FieldName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <div class=\"form-text\">\n {{'DigniteAbpForms::FieldNameHelpText' | abpLocalization}}</div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"formControlName\">{{'Cms::FieldType' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\" (change)=\"setConfigComponent()\">\n <ng-container *ngFor=\"let itemC of _FieldControlGroup;let i =index\">\n <option [value]=\"itemC.name\">{{itemC.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <!-- {{itemf.value.formControlName}}----{{item.value|json}} -->\n <ng-container *ngIf=\"itemf.value.formControlName&&itemf\">\n <df-dynamic [type]=\"itemf.value.formControlName\" [entity]=\"itemf\"\n [selected]=\"_selected?_selected['formConfiguration']['MatrixBlockTypes'][i]['fields'][fi]:''\"></df-dynamic>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n\n<abp-modal [(visible)]=\"matrixModalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"matrixModalVisibleChange($event)\" >\n <ng-template #abpHeader>\n <h3>{{isMatrixEdit?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"matrixModalForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"matrixModalForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"displayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"name\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>" }]
|
|
215
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.CmsApiService }, { type: i2.FieldAbstractsService }]; }, propDecorators: { type: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], Entity: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], selected: [{
|
|
220
|
+
type: Input
|
|
221
|
+
}], submitclick: [{
|
|
222
|
+
type: ViewChild,
|
|
223
|
+
args: ['submitclick', { static: true }]
|
|
224
|
+
}], matrixModalModalSubmit: [{
|
|
225
|
+
type: ViewChild,
|
|
226
|
+
args: ['matrixModalModalSubmit', { static: false }]
|
|
227
|
+
}] } });
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9tYXRyaXgvbWF0cml4LWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9tYXRyaXgvbWF0cml4LWNvbmZpZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBZSxLQUFLLEVBQUUsU0FBUyxHQUFJLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQWUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFHakUsTUFLYSxxQkFBcUI7SUFHdEI7SUFDQTtJQUNBO0lBSFYsWUFDVSxFQUFlLEVBQ2YsY0FBNkIsRUFDN0Isc0JBQTZDO1FBRjdDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO0lBQ25ELENBQUM7SUFFTCxXQUFXO0lBQ1gsa0JBQWtCLENBQU87SUFDekIsWUFBWTtJQUNaLEtBQUssQ0FBSztJQUNWLElBQ1csSUFBSSxDQUFDLENBQU07UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDZCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUNELFVBQVU7SUFDVixPQUFPLENBQXVCO0lBQzlCLElBQ1csTUFBTSxDQUFDLENBQVk7UUFDNUIsSUFB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QUksRUFBRTtnQkEwRGMsc0JBQXNCO3NCQUE3RSxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgIElucHV0LCBWaWV3Q2hpbGQsICB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdHJpeENvbmZpZywgTWF0cml4SXRlbUNvbmZpZyB9IGZyb20gJy4vbWF0cml4LWNvbmZpZyc7XG5pbXBvcnQgeyBDbXNBcGlTZXJ2aWNlLCBGaWVsZEFic3RyYWN0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RmLW1hdHJpeC1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0cml4LWNvbmZpZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hdHJpeC1jb25maWcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNYXRyaXhDb25maWdDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgX0Ntc0FwaVNlcnZpY2U6IENtc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfRmllbGRBYnN0cmFjdHNTZXJ2aWNlOiBGaWVsZEFic3RyYWN0c1NlcnZpY2UsXG4gICkgeyB9XG5cbiAgLyoq6KGo5Y2V5o6n5Lu257uEICovXG4gIF9GaWVsZENvbnRyb2xHcm91cDogYW55W11cbiAgLyoq6KGo5Y2V5o6n5Lu257G75Z6LICovXG4gIF90eXBlOiBhbnlcbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0eXBlKHY6IGFueSkge1xuICAgIHRoaXMuX3R5cGUgPSB2XG4gICAgdGhpcy5kYXRhTG9hZGVkKClcbiAgfVxuICAvKirooajljZXlrp7kvZMgKi9cbiAgX0VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgRW50aXR5KHY6IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuX0VudGl0eSA9IHY7XG4gICAgdGhpcy5kYXRhTG9hZGVkKClcbiAgfVxuXG5cbiAgLyoq6YCJ5oup55qE6KGo5Y2V5L+h5oGvICovXG4gIF9zZWxlY3RlZDogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWQodjogYW55KSB7XG5cbiAgICBpZiAodikge1xuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2XG4gICAgICB0aGlzLmRhdGFMb2FkZWQoKVxuICAgIH1cbiAgfVxuXG5cbiAgQFZpZXdDaGlsZCgnc3VibWl0Y2xpY2snLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJtaXRjbGljazogRWxlbWVudFJlZjtcblxuICBhc3luYyBkYXRhTG9hZGVkKCkge1xuICAgIGlmICh0aGlzLl9FbnRpdHkgJiYgdGhpcy5fdHlwZSkge1xuICAgICAgYXdhaXQgdGhpcy5BZnRlckluaXQoKVxuICAgICAgdGhpcy5zdWJtaXRjbGljay5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgQWZ0ZXJJbml0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fRmllbGRDb250cm9sR3JvdXAgPSB0aGlzLl9GaWVsZEFic3RyYWN0c1NlcnZpY2UuZ2V0RXhjbHVkZUFzc2lnbkNvbnRyb2wodGhpcy5fdHlwZSlcbiAgICAgIHRoaXMuX0VudGl0eS5zZXRDb250cm9sKCdmb3JtQ29uZmlndXJhdGlvbicsIHRoaXMuZmIuZ3JvdXAobmV3IE1hdHJpeENvbmZpZygpKSlcbiAgICAgIGF3YWl0IHRoaXMuc2V0U2VsZWN0VmFsdWUoKVxuICAgICAgdGhpcy5mb3JtQ29uZmlndXJhdGlvbi5wYXRjaFZhbHVlKHRoaXMuX3NlbGVjdGVkLmZvcm1Db25maWd1cmF0aW9uKVxuICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgIH0pXG4gIH1cblxuXG4gIHNldFNlbGVjdFZhbHVlKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkICYmIHRoaXMuX3NlbGVjdGVkLmZvcm1Db250cm9sTmFtZSA9PSB0aGlzLl90eXBlKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkLmZvcm1Db25maWd1cmF0aW9uWydNYXRyaXhCbG9ja1R5cGVzJ10uZm9yRWFjaCgoKGVsLCBpbmRleCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkTWF0cml4QmxvY2tUeXBlSXRlbShlbClcbiAgICAgICAgICBlbC5maWVsZHMuZm9yRWFjaCgoZWxmLCBpbmRleGYpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWRkTWF0cml4RmllbGRJdGVtKGVsZiwgaW5kZXgpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSkpXG4gICAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICAgIH1cbiAgICAgIFxuICAgIH0pXG4gIH1cblxuICAvKirojrflj5booajljZXphY3nva4gKi9cbiAgZ2V0IGZvcm1Db25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9FbnRpdHkuZ2V0KCdmb3JtQ29uZmlndXJhdGlvbicpIGFzIEZvcm1Hcm91cFxuICB9XG5cbiAgLyoq6I635Y+W6KGo5Y2V6YWN572u5LiL55qE55+p6Zi15Z2X6KGo5Y2V5pWw57uEICovXG4gIGdldCBNYXRyaXhCbG9ja1R5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWd1cmF0aW9uLmNvbnRyb2xzWydNYXRyaXhCbG9ja1R5cGVzJ10gYXMgRm9ybUFycmF5XG4gIH1cblxuXG4gIC8qKuaooeaAgeahhi3nirbmgIEgKi9cbiAgbWF0cml4TW9kYWxPcGVuOiBib29sZWFuID0gZmFsc2VcbiAgLyoq5qih5oCB5qGGLeaYr+WQpuato+WcqOe8lui+kSAqL1xuICBpc01hdHJpeE1vZGFsRWRpdDogYW55ID0gZmFsc2VcblxuICAvKirmqKHmgIHmoYYt55So5LqO56Gu5a6a5qih5oCB55qE57mB5b+Z54q25oCB5piv5ZCm5Li655yfICovXG4gIG1vZGFsQnVzeTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgLyoq5qih5oCB5qGGLeihqOWNlSAqL1xuICBtYXRyaXhNb2RhbEZvcm06IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcblxuICAvKirooajljZXmjqfku7bmqKHmnb8t55So5LqO5ZyoZm9ybeWkluaPkOS6pHN1Ym1pdCAqL1xuICBAVmlld0NoaWxkKCdtYXRyaXhNb2RhbE1vZGFsU3VibWl0JywgeyBzdGF0aWM6IGZhbHNlIH0pIG1hdHJpeE1vZGFsTW9kYWxTdWJtaXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoq55+p6Zi15Z2XLemAieaLqeeahOS4i+aghyAqL1xuICBzZWxlY3RNYXRyaXhCbG9ja0luZGV4OiBhbnkgPSAwXG5cbiAgLyoq55+p6Zi15Z2XLemAieaLqeeahOefqemYteS4i+Wtl+auteeahOS4i+aghyAqL1xuICBzZWxlY3RNYXRyaXhGaWVsZEluZGV4OiBhbnkgPSAwXG5cbiAgLyoq5qih5oCB5qGGLeeKtuaAgeaUueWPmCAqL1xuICBtYXRyaXhNb2RhbFZpc2libGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICB0aGlzLmlzTWF0cml4TW9kYWxFZGl0ID0gZmFsc2VcbiAgICAgIHRoaXMubWF0cml4TW9kYWxGb3JtID0gdW5kZWZpbmVkXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuXG4gIC8qKuefqemYteWdly0t5paw5aKeLeaJk+W8gOaooeaAgeahhiAqL1xuICBhZGRNYXRyaXhCbG9ja1R5cGUoKSB7XG4gICAgdGhpcy5tYXRyaXhNb2RhbEZvcm0gPSB0aGlzLmZiLmdyb3VwKG5ldyBNYXRyaXhJdGVtQ29uZmlnKCkpXG4gICAgdGhpcy5tYXRyaXhNb2RhbE9wZW4gPSB0cnVlXG4gIH1cblxuXG5cbiAgLyoq5qih5oCB5qGGLS3nn6npmLXooajljZXkv53lrZjmj5DkuqQgKi9cbiAgY3JlYXRlT3JFZGl0U2F2ZSgpIHtcbiAgICBsZXQgaW5wdXQgPSB0aGlzLm1hdHJpeE1vZGFsRm9ybS52YWx1ZVxuICAgIGlmICghdGhpcy5tYXRyaXhNb2RhbEZvcm0udmFsaWQpIHJldHVyblxuICAgIGlmICh0aGlzLmlzTWF0cml4TW9kYWxFZGl0KSB7XG4gICAgICBsZXQgTWF0cml4QmxvY2tUeXBlc0l0ZW0gPSB0aGlzLk1hdHJpeEJsb2NrVHlwZXMuYXQodGhpcy5zZWxlY3RNYXRyaXhCbG9ja0luZGV4KSBhcyBGb3JtR3JvdXBcbiAgICAgIE1hdHJpeEJsb2NrVHlwZXNJdGVtLnBhdGNoVmFsdWUoe1xuICAgICAgICAuLi5pbnB1dFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRNYXRyaXhCbG9ja1R5cGVJdGVtKGlucHV0KVxuICAgIH1cbiAgICB0aGlzLm1hdHJpeE1vZGFsT3BlbiA9IGZhbHNlXG4gIH1cbiAgLyoq5paw5aKe55+p6Zi15Z2XLeWQkeaVsOe7hOihqOWNleS4reWinuWKoOmhuSAqL1xuICBhZGRNYXRyaXhCbG9ja1R5cGVJdGVtKGlucHV0KSB7XG4gICAgdGhpcy5NYXRyaXhCbG9ja1R5cGVzLnB1c2gobmV3IEZvcm1Hcm91cCh7XG4gICAgICBkaXNwbGF5TmFtZTogbmV3IEZvcm1Db250cm9sKGlucHV0LmRpc3BsYXlOYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbChpbnB1dC5uYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGZpZWxkczogbmV3IEZvcm1BcnJheShbXSlcbiAgICB9KSlcbiAgfVxuICAvKirnvJbovpHnn6npmLXlnZcgKi9cbiAgRWRpdE1hdHJpeEJsb2NrKGlucHV0KSB7XG4gICAgdGhpcy5tYXRyaXhNb2RhbEZvcm0gPSB0aGlzLmZiLmdyb3VwKG5ldyBNYXRyaXhJdGVtQ29uZmlnKCkpXG4gICAgdGhpcy5tYXRyaXhNb2RhbEZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAuLi5pbnB1dFxuICAgIH0pXG4gICAgdGhpcy5tYXRyaXhNb2RhbE9wZW4gPSB0cnVlXG4gICAgdGhpcy5pc01hdHJpeE1vZGFsRWRpdCA9IHRydWVcbiAgfVxuXG4gIC8qKuWIoOmZpOefqemYteWdlyAqL1xuICBEZWxldGVNYXRyaXhCbG9jayhpbmRleCkge1xuICAgIHRoaXMuTWF0cml4QmxvY2tUeXBlcy5yZW1vdmVBdChpbmRleClcbiAgfVxuXG4gIC8qKuefqemYteWdly3pgInmi6kgKi9cbiAgc2VsZWN0TWF0cml4QmxvY2tDaGFuZ2UoaW5kZXgpIHtcbiAgICB0aGlzLnNlbGVjdE1hdHJpeEJsb2NrSW5kZXggPSBpbmRleFxuICB9XG5cbiAgLyoq55+p6Zi15a2X5q61LeaWsOWiniAqL1xuICBhZGRNYXRyaXhGaWVsZCgpIHtcbiAgICB0aGlzLmFkZE1hdHJpeEZpZWxkSXRlbSgnJywgdGhpcy5zZWxlY3RNYXRyaXhCbG9ja0luZGV4KVxuICBcbiAgfVxuICAvKirnn6npmLXlrZfmrrUt5paw5aKe55+p6Zi15a2X5q616aG5ICovXG4gIGFkZE1hdHJpeEZpZWxkSXRlbShpbnB1dDogYW55ID0gJycsIHNlbGVjdE1hdHJpeEJsb2NrSW5kZXgpIHtcbiAgICAvKirnn6npmLXkuIvmoIfnmoTnn6npmLXpoblGb3JtICovXG4gICAgbGV0IE1hdHJpeEJsb2NrVHlwZXNJdGVtRm9ybSA9IHRoaXMuTWF0cml4QmxvY2tUeXBlcy5hdChzZWxlY3RNYXRyaXhCbG9ja0luZGV4KSBhcyBGb3JtR3JvdXBcbiAgICBsZXQgTWF0cml4RmllbGRJdGVtRm9ybSA9IE1hdHJpeEJsb2NrVHlwZXNJdGVtRm9ybS5nZXQoJ2ZpZWxkcycpIGFzIEZvcm1BcnJheVxuICAgIE1hdHJpeEZpZWxkSXRlbUZvcm0ucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgIC8qKuWtl+auteWQjeensCBEaXNwbGF5IG5hbWUgb2YgdGhpcyBmaWVsZCAqL1xuICAgICAgZGlzcGxheU5hbWU6IFtpbnB1dC5kaXNwbGF5TmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIC8qKuWtl+auteWUr+S4gOWQjeensCBVbmlxdWUgTmFtZSovXG4gICAgICBuYW1lOiBbaW5wdXQubmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIC8qKuaPj+i/sCDor7TmmI4gKi9cbiAgICAgIGRlc2NyaXB0aW9uOiBbaW5wdXQuZGVzY3JpcHRpb24sIFtdXSxcbiAgICAgIC8qKkZpZWxkVHlwZeWtl+auteexu+WeiyDooajljZXmjqfku7blkI3np7AgKi9cbiAgICAgIGZvcm1Db250cm9sTmFtZTogW2lucHV0LmZvcm1Db250cm9sTmFtZSB8fCAnVGV4dEVkaXQnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLy/liqjmgIHooajljZXphY3nva5cbiAgICAgIGZvcm1Db25maWd1cmF0aW9uOiBuZXcgRm9ybUdyb3VwKHt9KSxcbiAgICB9KSlcbiAgICAvL1xuICB9XG5cbiAgLyoq5Yig6Zmk55+p6Zi15a2X5q616aG5ICovXG4gIGRlbGV0ZU1hdHJpeEZpZWxkKE1hdHJpeEZpZWxkRm9ybSwgaW5kZXgpIHtcbiAgICBNYXRyaXhGaWVsZEZvcm0ucmVtb3ZlQXQoaW5kZXgpXG4gICAgdGhpcy5zZWxlY3RNYXRyaXhGaWVsZEluZGV4ID0gMFxuICB9XG5cbiAgLyoq55+p6Zi15a2X5q61LemAieaLqSAqL1xuICBzZWxlY3RNYXRyaXhGaWVsZENoYW5nZShNYXRyaXhCbG9ja0luZGV4LCBNYXRyaXhGaWVsZEluZGV4KSB7XG4gICAgdGhpcy5zZWxlY3RNYXRyaXhGaWVsZEluZGV4ID0gTWF0cml4RmllbGRJbmRleFxuICB9XG5cbiAgZ2V0IG5hbWVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRyaXhNb2RhbEZvcm0/LmdldCgnbmFtZScpXG4gIH1cbiAgZ2V0IEZpZWxkbmFtZUlucHV0KCkge1xuICAgIGxldCBNYXRyaXhCbG9ja1R5cGVzSXRlbUZvcm0gPSB0aGlzLk1hdHJpeEJsb2NrVHlwZXMuYXQodGhpcy5zZWxlY3RNYXRyaXhCbG9ja0luZGV4KSBhcyBGb3JtR3JvdXBcbiAgICBsZXQgTWF0cml4RmllbGRJdGVtRm9ybSA9IE1hdHJpeEJsb2NrVHlwZXNJdGVtRm9ybS5nZXQoJ2ZpZWxkcycpIGFzIEZvcm1BcnJheVxuICAgIHJldHVybiBNYXRyaXhGaWVsZEl0ZW1Gb3JtLmF0KHRoaXMuc2VsZWN0TWF0cml4RmllbGRJbmRleCkuZ2V0KCduYW1lJylcbiAgfVxuXG4gIC8qKuefqemYtWRpc3BsYXlOYW1lSW5wdXTlrZfmrrXlpLHljrvnhKbngrkgKi9cbiAgZGlzcGxheU5hbWVJbnB1dEJsdXIoZXZlbnQpIHtcbiAgICBsZXQgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWVcbiAgICBsZXQgcGlueWluID0gdGhpcy5fQ21zQXBpU2VydmljZS5jaGluZXNlVG9QaW55aW4odmFsdWUpXG4gICAgbGV0IG5hbWVJbnB1dCA9IHRoaXMubmFtZUlucHV0XG4gICAgaWYgKG5hbWVJbnB1dC52YWx1ZSkgcmV0dXJuXG4gICAgbmFtZUlucHV0LnBhdGNoVmFsdWUocGlueWluKVxuICB9XG4gIC8qKuefqemYtWRpc3BsYXlOYW1lSW5wdXTlrZfmrrXlpLHljrvnhKbngrkgKi9cbiAgTWF0cml4RmllbGREaXNwbGF5TmFtZUlucHV0Qmx1cihldmVudCkge1xuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgIGxldCBwaW55aW4gPSB0aGlzLl9DbXNBcGlTZXJ2aWNlLmNoaW5lc2VUb1Bpbnlpbih2YWx1ZSlcbiAgICBsZXQgRmllbGRuYW1lSW5wdXQgPSB0aGlzLkZpZWxkbmFtZUlucHV0XG4gICAgaWYgKEZpZWxkbmFtZUlucHV0LnZhbHVlKSByZXR1cm5cbiAgICBGaWVsZG5hbWVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbilcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJfRW50aXR5XCI+XG4gICAgPGRpdiBmb3JtR3JvdXBOYW1lPVwiZm9ybUNvbmZpZ3VyYXRpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6Ojo6Rm9ybUNvbnRyb2w6TWF0cml4JyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWN1cnJlbnQ9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQ21zOjpNYXRyaXhCbG9ja1R5cGUnIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gcC0wXCIgKGNsaWNrLnN0b3ApPVwiYWRkTWF0cml4QmxvY2tUeXBlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cy1jaXJjbGUgcC0xXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgTWF0cml4QmxvY2tUeXBlcy5jb250cm9scztsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2suc3RvcCk9XCJzZWxlY3RNYXRyaXhCbG9ja0NoYW5nZShpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbGlzdC1ncm91cC1pdGVtLWFjdGlvbiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImk9PT1zZWxlY3RNYXRyaXhCbG9ja0luZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7aXRlbS52YWx1ZS5kaXNwbGF5TmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7aXRlbS52YWx1ZS5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbVwiIGlkPVwiZHJvcGRvd25CYXNpYzFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiei1pbmRleDogODtcIiBuZ2JEcm9wZG93blRvZ2dsZT48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duQmFzaWMxXCIgc3R5bGU9XCJ6LWluZGV4OiA5O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljay5zdG9wKT1cIkVkaXRNYXRyaXhCbG9jayhpdGVtLnZhbHVlKVwiPnt7J0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrLnN0b3ApPVwiRGVsZXRlTWF0cml4QmxvY2soaSlcIj57eydBYnBVaTo6RGVsZXRlJyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwXCIgKm5nSWY9XCJNYXRyaXhCbG9ja1R5cGVzPy5jb250cm9scy5sZW5ndGg+MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY3VycmVudD1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydDbXM6OkZpZWxkcycgfCBhYnBMb2NhbGl6YXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBwLTBcIiAoY2xpY2suc3RvcCk9XCJhZGRNYXRyaXhGaWVsZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMtY2lyY2xlIHAtMVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIE1hdHJpeEJsb2NrVHlwZXMuY29udHJvbHM7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkgPT09IHNlbGVjdE1hdHJpeEJsb2NrSW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWwgb2YgaXRlbS5jb250cm9sc1snZmllbGRzJ10uY29udHJvbHM7bGV0IGZpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrLnN0b3ApPVwic2VsZWN0TWF0cml4RmllbGRDaGFuZ2UoaSxmaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbGlzdC1ncm91cC1pdGVtLWFjdGlvbiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZmk9PT1zZWxlY3RNYXRyaXhGaWVsZEluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e2VsLnZhbHVlLmRpc3BsYXlOYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e2VsLnZhbHVlLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljay5zdG9wKT1cImRlbGV0ZU1hdHJpeEZpZWxkKGl0ZW0uY29udHJvbHNbJ2ZpZWxkcyddLGZpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlcIj57eydBYnBVaTo6RGVsZXRlJyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgZm9ybUFycmF5TmFtZT1cIk1hdHJpeEJsb2NrVHlwZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBNYXRyaXhCbG9ja1R5cGVzLmNvbnRyb2xzO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwTmFtZV09XCJpXCIgW2hpZGRlbl09XCJpICE9PSBzZWxlY3RNYXRyaXhCbG9ja0luZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwiZmllbGRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW1mIG9mIGl0ZW0uY29udHJvbHNbJ2ZpZWxkcyddLmNvbnRyb2xzO2xldCBmaSA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cE5hbWVdPVwiZmlcIiBbaGlkZGVuXT1cImZpICE9PSBzZWxlY3RNYXRyaXhGaWVsZEluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJkaXNwbGF5TmFtZVwiPnt7J0Ntczo6RGlzcGxheU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImRpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIk1hdHJpeEZpZWxkRGlzcGxheU5hbWVJbnB1dEJsdXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwibmFtZVwiPnt7J0RpZ25pdGVBYnBGb3Jtczo6RmllbGROYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0RpZ25pdGVBYnBGb3Jtczo6RmllbGROYW1lSGVscFRleHQnIHwgYWJwTG9jYWxpemF0aW9ufX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImRlc2NyaXB0aW9uXCI+e3snQ21zOjpEZXNjcmlwdGlvbicgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZvcm1Db250cm9sTmFtZVwiPnt7J0Ntczo6RmllbGRUeXBlJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZm9ybUNvbnRyb2xOYW1lXCIgKGNoYW5nZSk9XCJzZXRDb25maWdDb21wb25lbnQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbUMgb2YgX0ZpZWxkQ29udHJvbEdyb3VwO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW1DLm5hbWVcIj57e2l0ZW1DLmRpc3BsYXlOYW1lfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHt7aXRlbWYudmFsdWUuZm9ybUNvbnRyb2xOYW1lfX0tLS0te3tpdGVtLnZhbHVlfGpzb259fSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbWYudmFsdWUuZm9ybUNvbnRyb2xOYW1lJiZpdGVtZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGYtZHluYW1pYyBbdHlwZV09XCJpdGVtZi52YWx1ZS5mb3JtQ29udHJvbE5hbWVcIiBbZW50aXR5XT1cIml0ZW1mXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJfc2VsZWN0ZWQ/X3NlbGVjdGVkWydmb3JtQ29uZmlndXJhdGlvbiddWydNYXRyaXhCbG9ja1R5cGVzJ11baV1bJ2ZpZWxkcyddW2ZpXTonJ1wiPjwvZGYtZHluYW1pYz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoYWJwSW5pdCk9XCJzdWJtaXRjbGljaz8ubmF0aXZlRWxlbWVudD8uY2xpY2soKVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIlxuICAgICAgICAgICAgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuXG5cblxuPGFicC1tb2RhbCBbKHZpc2libGUpXT1cIm1hdHJpeE1vZGFsT3BlblwiIFtidXN5XT1cIm1vZGFsQnVzeVwiICh2aXNpYmxlQ2hhbmdlKT1cIm1hdHJpeE1vZGFsVmlzaWJsZUNoYW5nZSgkZXZlbnQpXCIgPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxuICAgICAgICA8aDM+e3tpc01hdHJpeEVkaXQ/KCdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24pOignQ21zOjpOZXcnIHwgYWJwTG9jYWxpemF0aW9uKX19PC9oMz5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXJSZWY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImZhIGZhLXB1bHNlIGZhLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXRyaXhNb2RhbEZvcm07IGVsc2UgbG9hZGVyUmVmXCI+XG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cInNpdGVzLW1vZGFsLWZvcm1cIiAjbXlGb3JtPVwibmdGb3JtXCIgW2Zvcm1Hcm91cF09XCJtYXRyaXhNb2RhbEZvcm1cIlxuICAgICAgICAgICAgICAgIChuZ1N1Ym1pdCk9XCJjcmVhdGVPckVkaXRTYXZlKClcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAjbWF0cml4TW9kYWxNb2RhbFN1Ym1pdCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiZGlzcGxheU5hbWVcIj57eydDbXM6OkRpc3BsYXlOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJkaXNwbGF5TmFtZUlucHV0Qmx1cigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5hbWVcIj57eydDbXM6Ok5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPnt7J0FicFVpOjpDbG9zZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxuICAgICAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiXG4gICAgICAgICAgICAoY2xpY2spPVwibWF0cml4TW9kYWxNb2RhbFN1Ym1pdC5uYXRpdmVFbGVtZW50LmNsaWNrKClcIj57eydBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYWJwLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9hYnAtbW9kYWw+Il19
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { FormArray, FormGroup, Validators } from "@angular/forms";
|
|
2
|
+
export class MatrixConfig {
|
|
3
|
+
// 矩阵类型
|
|
4
|
+
'MatrixBlockTypes' = new FormArray([]);
|
|
5
|
+
constructor(data) {
|
|
6
|
+
if (data) {
|
|
7
|
+
for (const key in data) {
|
|
8
|
+
if (data.hasOwnProperty(key)) {
|
|
9
|
+
this[key] = data[key];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class MatrixItemConfig {
|
|
16
|
+
displayName = ['', [Validators.required]];
|
|
17
|
+
/**字段名字 */
|
|
18
|
+
name = ['', [Validators.required]];
|
|
19
|
+
constructor(data) {
|
|
20
|
+
if (data) {
|
|
21
|
+
for (const key in data) {
|
|
22
|
+
if (data.hasOwnProperty(key)) {
|
|
23
|
+
this[key] = data[key];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class matrixFieldInputBase {
|
|
30
|
+
/**字段名称 Display name of this field */
|
|
31
|
+
displayName = ['', [Validators.required]];
|
|
32
|
+
/**字段唯一名称 Unique Name*/
|
|
33
|
+
name = ['', [Validators.required]];
|
|
34
|
+
/**描述 说明 */
|
|
35
|
+
description = ['', []];
|
|
36
|
+
/**FieldType字段类型 表单控件名称 */
|
|
37
|
+
formControlName = ['TextEdit', [Validators.required]];
|
|
38
|
+
/**动态表单配置 */
|
|
39
|
+
formConfiguration = new FormGroup({});
|
|
40
|
+
constructor(data) {
|
|
41
|
+
if (data) {
|
|
42
|
+
for (const key in data) {
|
|
43
|
+
if (data.hasOwnProperty(key)) {
|
|
44
|
+
this[key] = data[key];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL21hdHJpeC9tYXRyaXgtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE1BQU0sT0FBTyxZQUFZO0lBQ3JCLE9BQU87SUFDUCxrQkFBa0IsR0FBUSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUUzQyxZQUFZLElBQW1CO1FBQzNCLElBQUksSUFBSSxFQUFFO1lBQ04sS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDekI7YUFDSjtTQUNKO0lBQ0wsQ0FBQztDQUNKO0FBQ0QsTUFBTSxPQUFPLGdCQUFnQjtJQUV6QixXQUFXLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvQyxVQUFVO0lBQ1YsSUFBSSxHQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFeEMsWUFBWSxJQUFtQjtRQUMzQixJQUFJLElBQUksRUFBRTtZQUNOLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0o7U0FDSjtJQUdMLENBQUM7Q0FDSjtBQUlELE1BQU0sT0FBTyxvQkFBb0I7SUFHN0IscUNBQXFDO0lBQ3JDLFdBQVcsR0FBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQy9DLHVCQUF1QjtJQUN2QixJQUFJLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN4QyxXQUFXO0lBQ1gsV0FBVyxHQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLDBCQUEwQjtJQUMxQixlQUFlLEdBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RCxZQUFZO0lBQ1gsaUJBQWlCLEdBQTBCLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRzVELFlBQVksSUFBMkI7UUFDbkMsSUFBSSxJQUFJLEVBQUU7WUFDTixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN6QjthQUNKO1NBQ0o7SUFFTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXRyaXhDb25maWcge1xyXG4gICAgLy8g55+p6Zi157G75Z6LXHJcbiAgICAnTWF0cml4QmxvY2tUeXBlcyc6IGFueSA9IG5ldyBGb3JtQXJyYXkoW10pXHJcblxyXG4gICAgY29uc3RydWN0b3IoZGF0YT86IE1hdHJpeENvbmZpZykge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIE1hdHJpeEl0ZW1Db25maWcge1xyXG4gIFxyXG4gICAgZGlzcGxheU5hbWU6IGFueSA9IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXTtcclxuICAgIC8qKuWtl+auteWQjeWtlyAqL1xyXG4gICAgbmFtZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBNYXRyaXhDb25maWcpIHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpc1trZXldID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIG1hdHJpeEZpZWxkSW5wdXRCYXNlIHtcclxuXHJcblxyXG4gICAgLyoq5a2X5q615ZCN56ewIERpc3BsYXkgbmFtZSBvZiB0aGlzIGZpZWxkICovXHJcbiAgICBkaXNwbGF5TmFtZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG4gICAgLyoq5a2X5q615ZSv5LiA5ZCN56ewIFVuaXF1ZSBOYW1lKi9cclxuICAgIG5hbWU6IGFueSA9IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXTtcclxuICAgIC8qKuaPj+i/sCDor7TmmI4gKi9cclxuICAgIGRlc2NyaXB0aW9uOiBhbnkgPSBbJycsIFtdXTtcclxuICAgIC8qKkZpZWxkVHlwZeWtl+auteexu+WeiyDooajljZXmjqfku7blkI3np7AgKi9cclxuICAgIGZvcm1Db250cm9sTmFtZTogYW55ID0gWydUZXh0RWRpdCcsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgIC8qKuWKqOaAgeihqOWNlemFjee9riAqL1xyXG4gICAgZm9ybUNvbmZpZ3VyYXRpb246IEZvcm1Hcm91cCB8IHVuZGVmaW5lZCA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBtYXRyaXhGaWVsZElucHV0QmFzZSkge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG59Il19
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/* eslint-disable @angular-eslint/component-selector */
|
|
2
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
3
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "@abp/ng.core";
|
|
8
|
+
import * as i4 from "@ngx-validate/core";
|
|
9
|
+
import * as i5 from "@dignite-ng/expand.dynamic-form";
|
|
10
|
+
class MatrixControlComponent {
|
|
11
|
+
fb;
|
|
12
|
+
constructor(fb) {
|
|
13
|
+
this.fb = fb;
|
|
14
|
+
}
|
|
15
|
+
/**表单实体 */
|
|
16
|
+
_entity;
|
|
17
|
+
set entity(v) {
|
|
18
|
+
this._entity = v;
|
|
19
|
+
this.dataLoaded();
|
|
20
|
+
}
|
|
21
|
+
/**字段配置列表 */
|
|
22
|
+
_fields = '';
|
|
23
|
+
set fields(v) {
|
|
24
|
+
this._fields = v;
|
|
25
|
+
this.dataLoaded();
|
|
26
|
+
}
|
|
27
|
+
/**父级字段名称,用于为表单设置控件赋值 */
|
|
28
|
+
_parentFiledName;
|
|
29
|
+
set parentFiledName(v) {
|
|
30
|
+
this._parentFiledName = v;
|
|
31
|
+
this.dataLoaded();
|
|
32
|
+
}
|
|
33
|
+
/**父级字段名称,用于为表单设置控件赋值 */
|
|
34
|
+
_selected;
|
|
35
|
+
set selected(v) {
|
|
36
|
+
this._selected = v;
|
|
37
|
+
if (v) {
|
|
38
|
+
this.dataLoaded();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**语言 */
|
|
42
|
+
_culture;
|
|
43
|
+
set culture(v) {
|
|
44
|
+
this._culture = v;
|
|
45
|
+
}
|
|
46
|
+
submitclick;
|
|
47
|
+
/** 获取父级字段代表的表单组*/
|
|
48
|
+
extraProperties;
|
|
49
|
+
/**数据加载完成 */
|
|
50
|
+
async dataLoaded() {
|
|
51
|
+
if (this._fields && this._entity && this._parentFiledName) {
|
|
52
|
+
this.extraProperties = this._entity.get(this._parentFiledName);
|
|
53
|
+
await this.AfterInit();
|
|
54
|
+
this.submitclick.nativeElement.click();
|
|
55
|
+
if (this._selected)
|
|
56
|
+
this.fieldNameControl.patchValue(this._selected);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
formConfiguration;
|
|
60
|
+
/**获取表格字段代表的控件 */
|
|
61
|
+
fieldNameControl;
|
|
62
|
+
AfterInit() {
|
|
63
|
+
return new Promise((resolve, rejects) => {
|
|
64
|
+
let formConfiguration = this._fields.field.formConfiguration;
|
|
65
|
+
let newArrayGroup = this.fb.array([]);
|
|
66
|
+
this.extraProperties.setControl(this._fields.field.name, newArrayGroup);
|
|
67
|
+
this.fieldNameControl = this.extraProperties.get(this._fields.field.name);
|
|
68
|
+
if (this._selected) {
|
|
69
|
+
this._selected.forEach(el => {
|
|
70
|
+
this.addMatrixControl(formConfiguration.MatrixBlockTypes.find(item => item.name == el.matrixBlockTypeName));
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
console.log(this._fields, 'AfterInit');
|
|
74
|
+
this.MatrixBlockTypesList = formConfiguration.MatrixBlockTypes;
|
|
75
|
+
resolve(true);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**矩阵列表 */
|
|
79
|
+
MatrixBlockTypesList = [];
|
|
80
|
+
/**增加指定矩阵控件项 */
|
|
81
|
+
addMatrixControl(item) {
|
|
82
|
+
this.fieldNameControl.push(this.fb.group({
|
|
83
|
+
extraProperties: new FormGroup({
|
|
84
|
+
name: new FormControl('')
|
|
85
|
+
}),
|
|
86
|
+
matrixBlockTypeName: [item.name],
|
|
87
|
+
displayName: [item.displayName]
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
/**删除矩阵控件 */
|
|
91
|
+
deleteMatrixControl(index) {
|
|
92
|
+
this.fieldNameControl.removeAt(index);
|
|
93
|
+
}
|
|
94
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixControlComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
95
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MatrixControlComponent, selector: "df-matrix-control", inputs: { entity: "entity", fields: "fields", parentFiledName: "parentFiledName", selected: "selected", culture: "culture" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-2\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <div [formArrayName]=\"_fields.field.name\">\n <ng-container *ngFor=\"let item of fieldNameControl.controls;let i=index\">\n <div class=\"card mb-3 border \" [formGroupName]=\"i\">\n <div class=\"card-header d-flex align-items-center justify-content-between border-bottom pt-1\">\n <div>{{item.value.displayName}}</div>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteMatrixControl(i)\"><i\n class=\"fas fa-trash p-2\"></i></button>\n </div>\n <div class=\"card-body\">\n <ng-container *ngFor=\"let el of MatrixBlockTypesList;let il =index\">\n <ng-container *ngIf=\"el.name===item.value.matrixBlockTypeName\">\n <ng-container *ngFor=\"let elf of el.fields; let fi=index\">\n <ng-container *ngIf=\"item&&elf&&_culture\">\n <df-dynamic [entity]=\"item\"\n [fields]=\"{ field: elf,displayName:elf.displayName }\"\n [selected]=\"_selected ? _selected[i]?_selected[i][_parentFiledName][elf.name]:'': ''\"\n [parentFiledName]=\"'extraProperties'\" [culture]=\"_culture\"></df-dynamic>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div>\n <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n <ng-container *ngFor=\"let item of MatrixBlockTypesList;let i =index\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click.stop)=\"addMatrixControl(item)\"><i\n class=\"fas fa-plus me-1\"></i>{{item.displayName}}</button>\n </ng-container>\n </div>\n </div>\n <div class=\"form-text\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</div>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none\" #submitclick></button>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i4.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i5.DynamicComponent, selector: "df-dynamic", inputs: ["selected", "type", "entity", "culture", "parentFiledName", "fields"] }] });
|
|
96
|
+
}
|
|
97
|
+
export { MatrixControlComponent };
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixControlComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: 'df-matrix-control', template: "<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-2\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <div [formArrayName]=\"_fields.field.name\">\n <ng-container *ngFor=\"let item of fieldNameControl.controls;let i=index\">\n <div class=\"card mb-3 border \" [formGroupName]=\"i\">\n <div class=\"card-header d-flex align-items-center justify-content-between border-bottom pt-1\">\n <div>{{item.value.displayName}}</div>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteMatrixControl(i)\"><i\n class=\"fas fa-trash p-2\"></i></button>\n </div>\n <div class=\"card-body\">\n <ng-container *ngFor=\"let el of MatrixBlockTypesList;let il =index\">\n <ng-container *ngIf=\"el.name===item.value.matrixBlockTypeName\">\n <ng-container *ngFor=\"let elf of el.fields; let fi=index\">\n <ng-container *ngIf=\"item&&elf&&_culture\">\n <df-dynamic [entity]=\"item\"\n [fields]=\"{ field: elf,displayName:elf.displayName }\"\n [selected]=\"_selected ? _selected[i]?_selected[i][_parentFiledName][elf.name]:'': ''\"\n [parentFiledName]=\"'extraProperties'\" [culture]=\"_culture\"></df-dynamic>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div>\n <div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n <ng-container *ngFor=\"let item of MatrixBlockTypesList;let i =index\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click.stop)=\"addMatrixControl(item)\"><i\n class=\"fas fa-plus me-1\"></i>{{item.displayName}}</button>\n </ng-container>\n </div>\n </div>\n <div class=\"form-text\" *ngIf=\"_fields.field.description\">{{_fields.field.description}}</div>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none\" #submitclick></button>\n</form>" }]
|
|
101
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { entity: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], fields: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], parentFiledName: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], selected: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], culture: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], submitclick: [{
|
|
112
|
+
type: ViewChild,
|
|
113
|
+
args: ['submitclick', { static: true }]
|
|
114
|
+
}] } });
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vbWF0cml4L21hdHJpeC1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL21hdHJpeC9tYXRyaXgtY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBMEIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBRWhGLE1BS2Esc0JBQXNCO0lBR3ZCO0lBRFYsWUFDVSxFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtJQUl6QixDQUFDO0lBRUQsVUFBVTtJQUNWLE9BQU8sQ0FBdUI7SUFDOUIsSUFDVyxNQUFNLENBQUMsQ0FBTTtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELFlBQVk7SUFDWixPQUFPLEdBQVEsRUFBRSxDQUFBO0lBQ2pCLElBQ1csTUFBTSxDQUFDLENBQU07UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsZ0JBQWdCLENBQUs7SUFDckIsSUFDVyxlQUFlLENBQUMsQ0FBTTtRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFV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LElBQUksQ0FBQyxJQUFJLENBQUM7WUFDaEMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNoQyxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7SUFDRCxZQUFZO0lBQ1osbUJBQW1CLENBQUMsS0FBSztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7d0dBbkdVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLGlUQ1RuQyxrdEZBeUNPOztTRGhDTSxzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxtQkFBbUI7a0dBZ0JsQixNQUFNO3NCQURoQixLQUFLO2dCQVNLLE1BQU07c0JBRGhCLEtBQUs7Z0JBU0ssZUFBZTtzQkFEekIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQVNLLE9BQU87c0JBRGpCLEtBQUs7Z0JBSXNDLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGYtbWF0cml4LWNvbnRyb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0cml4LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXRyaXgtY29udHJvbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1hdHJpeENvbnRyb2xDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICApIHtcbiAgIFxuXG4gIH1cblxuICAvKirooajljZXlrp7kvZMgKi9cbiAgX2VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW50aXR5KHY6IGFueSkge1xuICAgIHRoaXMuX2VudGl0eSA9IHY7XG4gICAgdGhpcy5kYXRhTG9hZGVkKClcbiAgfVxuXG4gIC8qKuWtl+autemFjee9ruWIl+ihqCAqL1xuICBfZmllbGRzOiBhbnkgPSAnJ1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZpZWxkcyh2OiBhbnkpIHtcbiAgICB0aGlzLl9maWVsZHMgPSB2O1xuICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gIH1cblxuICAvKirniLbnuqflrZfmrrXlkI3np7DvvIznlKjkuo7kuLrooajljZXorr7nva7mjqfku7botYvlgLwgKi9cbiAgX3BhcmVudEZpbGVkTmFtZTogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGFyZW50RmlsZWROYW1lKHY6IGFueSkge1xuICAgIHRoaXMuX3BhcmVudEZpbGVkTmFtZSA9IHY7XG4gICAgdGhpcy5kYXRhTG9hZGVkKClcbiAgfVxuICAvKirniLbnuqflrZfmrrXlkI3np7DvvIznlKjkuo7kuLrooajljZXorr7nva7mjqfku7botYvlgLwgKi9cbiAgX3NlbGVjdGVkOiBhbnlcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RlZCh2OiBhbnkpIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHY7XG4gICAgaWYgKHYpIHsgdGhpcy5kYXRhTG9hZGVkKCkgfVxuXG4gIH1cbiAgLyoq6K+t6KiAICovXG4gIF9jdWx0dXJlOiBhbnlcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjdWx0dXJlKHY6IGFueSkge1xuICAgIHRoaXMuX2N1bHR1cmUgPSB2O1xuICB9XG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgLyoqIOiOt+WPlueItue6p+Wtl+auteS7o+ihqOeahOihqOWNlee7hCovXG4gIGV4dHJhUHJvcGVydGllczogRm9ybUdyb3VwIHwgdW5kZWZpbmVkXG5cbiAgLyoq5pWw5o2u5Yqg6L295a6M5oiQICovXG4gIGFzeW5jIGRhdGFMb2FkZWQoKSB7XG4gICAgaWYgKHRoaXMuX2ZpZWxkcyAmJiB0aGlzLl9lbnRpdHkgJiYgdGhpcy5fcGFyZW50RmlsZWROYW1lKSB7XG4gICAgICB0aGlzLmV4dHJhUHJvcGVydGllcyA9IHRoaXMuX2VudGl0eS5nZXQodGhpcy5fcGFyZW50RmlsZWROYW1lKSBhcyBGb3JtR3JvdXBcbiAgICAgIGF3YWl0IHRoaXMuQWZ0ZXJJbml0KClcbiAgICAgIHRoaXMuc3VibWl0Y2xpY2submF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkKSB0aGlzLmZpZWxkTmFtZUNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLl9zZWxlY3RlZCk7XG4gICAgfVxuICB9XG5cbiAgZm9ybUNvbmZpZ3VyYXRpb246IGFueVxuICAvKirojrflj5booajmoLzlrZfmrrXku6PooajnmoTmjqfku7YgKi9cbiAgZmllbGROYW1lQ29udHJvbDogRm9ybUFycmF5IHwgdW5kZWZpbmVkXG5cbiAgQWZ0ZXJJbml0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgbGV0IGZvcm1Db25maWd1cmF0aW9uID0gdGhpcy5fZmllbGRzLmZpZWxkLmZvcm1Db25maWd1cmF0aW9uXG4gICAgICBsZXQgbmV3QXJyYXlHcm91cCA9IHRoaXMuZmIuYXJyYXkoW10pXG4gICAgICB0aGlzLmV4dHJhUHJvcGVydGllcy5zZXRDb250cm9sKHRoaXMuX2ZpZWxkcy5maWVsZC5uYW1lLCBuZXdBcnJheUdyb3VwKVxuICAgICAgdGhpcy5maWVsZE5hbWVDb250cm9sID0gdGhpcy5leHRyYVByb3BlcnRpZXMuZ2V0KHRoaXMuX2ZpZWxkcy5maWVsZC5uYW1lKSBhcyBGb3JtQXJyYXlcbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZC5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICB0aGlzLmFkZE1hdHJpeENvbnRyb2woZm9ybUNvbmZpZ3VyYXRpb24uTWF0cml4QmxvY2tUeXBlcy5maW5kKGl0ZW0gPT4gaXRlbS5uYW1lID09IGVsLm1hdHJpeEJsb2NrVHlwZU5hbWUpKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuX2ZpZWxkcywnQWZ0ZXJJbml0Jyk7XG4gICAgICB0aGlzLk1hdHJpeEJsb2NrVHlwZXNMaXN0ID0gZm9ybUNvbmZpZ3VyYXRpb24uTWF0cml4QmxvY2tUeXBlc1xuICAgICBcbiAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICB9KVxuICB9XG5cbiAgLyoq55+p6Zi15YiX6KGoICovXG4gIE1hdHJpeEJsb2NrVHlwZXNMaXN0OiBhbnlbXSA9IFtdXG5cbiAgLyoq5aKe5Yqg5oyH5a6a55+p6Zi15o6n5Lu26aG5ICovXG4gIGFkZE1hdHJpeENvbnRyb2woaXRlbSkge1xuICAgIHRoaXMuZmllbGROYW1lQ29udHJvbC5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZXh0cmFQcm9wZXJ0aWVzOiBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgbmFtZTpuZXcgRm9ybUNvbnRyb2woJycpXG4gICAgICB9KSxcbiAgICAgIG1hdHJpeEJsb2NrVHlwZU5hbWU6IFtpdGVtLm5hbWVdLFxuICAgICAgZGlzcGxheU5hbWU6IFtpdGVtLmRpc3BsYXlOYW1lXVxuICAgIH0pKVxuICB9XG4gIC8qKuWIoOmZpOefqemYteaOp+S7tiAqL1xuICBkZWxldGVNYXRyaXhDb250cm9sKGluZGV4KSB7XG4gICAgdGhpcy5maWVsZE5hbWVDb250cm9sLnJlbW92ZUF0KGluZGV4KVxuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cIl9lbnRpdHlcIj5cbiAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJleHRyYVByb3BlcnRpZXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiAqbmdJZj1cIl9maWVsZHMuZGlzcGxheU5hbWVcIj57eyBfZmllbGRzLmRpc3BsYXlOYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgW2Zvcm1BcnJheU5hbWVdPVwiX2ZpZWxkcy5maWVsZC5uYW1lXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZE5hbWVDb250cm9sLmNvbnRyb2xzO2xldCBpPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG1iLTMgYm9yZGVyIFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGJvcmRlci1ib3R0b20gcHQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtLnZhbHVlLmRpc3BsYXlOYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQgcC0wXCIgKGNsaWNrLnN0b3ApPVwiZGVsZXRlTWF0cml4Q29udHJvbChpKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhcyBmYS10cmFzaCBwLTJcIj48L2k+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbCBvZiBNYXRyaXhCbG9ja1R5cGVzTGlzdDtsZXQgaWwgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbC5uYW1lPT09aXRlbS52YWx1ZS5tYXRyaXhCbG9ja1R5cGVOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGYgb2YgZWwuZmllbGRzOyBsZXQgZmk9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbSYmZWxmJiZfY3VsdHVyZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGYtZHluYW1pYyBbZW50aXR5XT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkc109XCJ7IGZpZWxkOiBlbGYsZGlzcGxheU5hbWU6ZWxmLmRpc3BsYXlOYW1lIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIl9zZWxlY3RlZCA/IF9zZWxlY3RlZFtpXT9fc2VsZWN0ZWRbaV1bX3BhcmVudEZpbGVkTmFtZV1bZWxmLm5hbWVdOicnOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50RmlsZWROYW1lXT1cIidleHRyYVByb3BlcnRpZXMnXCIgW2N1bHR1cmVdPVwiX2N1bHR1cmVcIj48L2RmLWR5bmFtaWM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJCYXNpYyBleGFtcGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgTWF0cml4QmxvY2tUeXBlc0xpc3Q7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiAoY2xpY2suc3RvcCk9XCJhZGRNYXRyaXhDb250cm9sKGl0ZW0pXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPnt7aXRlbS5kaXNwbGF5TmFtZX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCIgKm5nSWY9XCJfZmllbGRzLmZpZWxkLmRlc2NyaXB0aW9uXCI+e3tfZmllbGRzLmZpZWxkLmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuPC9mb3JtPiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './table-config';
|
|
2
|
+
export * from './table-config.component';
|
|
3
|
+
export * from './table-control.component';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS90YWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGFibGUtY29uZmlnJ1xyXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWNvbmZpZy5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtY29udHJvbC5jb21wb25lbnQnIl19
|