@dignite-ng/expand.cms 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"dignite-ng-expand.cms.mjs","sources":["../../../../packages/cms/src/lib/enums/ecms-component.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/entries/entry-admin.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/sections/entry-type-admin.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/sections/section-admin.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/entries/entry-status.enum.ts","../../../../packages/cms/src/lib/proxy/dignite/abp/regionalization-management/regionalization.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/sections/section-type.enum.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/dynamic-forms/form-admin.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/fields/field-admin.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/fields/field-group-admin.service.ts","../../../../packages/cms/src/lib/services/fields-data.service.ts","../../../../packages/cms/src/lib/services/form-controls.service.ts","../../../../packages/cms/src/lib/pipes/get-localized-entries-by-slug.pipe.ts","../../../../packages/cms/src/lib/components/admin/entries/entries.component.ts","../../../../packages/cms/src/lib/components/admin/entries/entries.component.html","../../../../packages/cms/src/lib/components/admin/entries/create-or-update-entry-input-base.ts","../../../../packages/cms/src/lib/components/admin/entries/create-or-edit-entries.component.ts","../../../../packages/cms/src/lib/components/admin/entries/create-or-edit-entries.component.html","../../../../packages/cms/src/lib/components/admin/entries/create.component.ts","../../../../packages/cms/src/lib/components/admin/entries/create.component.html","../../../../packages/cms/src/lib/components/admin/entries/edit.component.ts","../../../../packages/cms/src/lib/components/admin/entries/edit.component.html","../../../../packages/cms/src/lib/components/admin/fields/fields-group.component.ts","../../../../packages/cms/src/lib/components/admin/fields/fields-group.component.html","../../../../packages/cms/src/lib/components/admin/fields/fields.component.ts","../../../../packages/cms/src/lib/components/admin/fields/fields.component.html","../../../../packages/cms/src/lib/components/admin/fields/fields-form-config.ts","../../../../packages/cms/src/lib/components/admin/fields/create-or-edit-field.component.ts","../../../../packages/cms/src/lib/components/admin/fields/create-or-edit-field.component.html","../../../../packages/cms/src/lib/components/admin/fields/create-field.component.ts","../../../../packages/cms/src/lib/components/admin/fields/create-field.component.html","../../../../packages/cms/src/lib/components/admin/fields/edit-field.component.ts","../../../../packages/cms/src/lib/components/admin/fields/edit-field.component.html","../../../../packages/cms/src/lib/components/admin/fields/index.ts","../../../../packages/cms/src/lib/components/admin/sections/create-or-update-sections-input-base.ts","../../../../packages/cms/src/lib/components/admin/sections/create-or-edit-sections-modal.component.ts","../../../../packages/cms/src/lib/components/admin/sections/create-or-edit-sections-modal.component.html","../../../../packages/cms/src/lib/components/admin/sections/sections.component.ts","../../../../packages/cms/src/lib/components/admin/sections/sections.component.html","../../../../packages/cms/src/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.ts","../../../../packages/cms/src/lib/components/admin/sections/entry-types/create-or-edit.component.ts","../../../../packages/cms/src/lib/components/admin/sections/entry-types/create-or-edit.component.html","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-config.ts","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-config.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-config.component.html","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-control.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-control.component.html","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-view.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-view.component.html","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-search.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-search.component.html","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-config.ts","../../../../packages/cms/src/lib/services/keys-convert-to-lowercase.service.ts","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-config.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-config.component.html","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-control.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-control.component.html","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-view.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-view.component.html","../../../../packages/cms/src/lib/components/dynamic-form/table/table-config.ts","../../../../packages/cms/src/lib/components/dynamic-form/table/table-config.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/table/table-config.component.html","../../../../packages/cms/src/lib/components/dynamic-form/table/table-control.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/table/table-control.component.html","../../../../packages/cms/src/lib/components/dynamic-form/table/table-view.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/table/table-view.component.html","../../../../packages/cms/src/lib/components/dynamic-form/form-control-group.ts","../../../../packages/cms/src/lib/resolvers/page-default-toolbar-actions.ts","../../../../packages/cms/src/lib/resolvers/table-default-entity-props.ts","../../../../packages/cms/src/lib/resolvers/table-default-entity-actions.ts","../../../../packages/cms/src/lib/resolvers/extensions-props-action-token.resolver.ts","../../../../packages/cms/src/lib/cms-routing.module.ts","../../../../packages/cms/src/lib/cms.module.ts","../../../../packages/cms/src/public-api.ts","../../../../packages/cms/src/dignite-ng-expand.cms.ts"],"sourcesContent":["export enum ECmsComponent {\n Entries=\"Cms.Entries\",\n Entries_Create=\"Cms.Entries.Create\",\n Entries_Edit=\"Cms.Entries.Edit\",\n Fields=\"Cms.Fields\",\n FieldsCreate=\"Cms.Fields.Create\",\n FieldsEdit=\"Cms.Fields.Edit\",\n Sites=\"Cms.Sites\",\n Sections=\"Cms.Sections\",\n SectionsCreateOrEdit=\"Cms.Sections.Create.Or.Edit\",\n}\n","import type { CreateEntryInput, CultureExistWithSingleSectionInput, EntryDto, GetEntriesInput, MoveEntryInput, SlugExistsInput, UpdateEntryInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { ListResultDto, PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EntryAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n activate = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'POST',\r\n url: `/api/cms-admin/entries/activate/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n create = (input: CreateEntryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryDto>({\r\n method: 'POST',\r\n url: '/api/cms-admin/entries',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n cultureExistWithSingleSection = (input: CultureExistWithSingleSectionInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entries/culture-exists-with-single-section',\r\n params: { culture: input.culture, sectionId: input.sectionId, entryTypeId: input.entryTypeId },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/cms-admin/entries/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryDto>({\r\n method: 'GET',\r\n url: `/api/cms-admin/entries/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getAllVersions = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ListResultDto<EntryDto>>({\r\n method: 'GET',\r\n url: `/api/cms-admin/entries/${id}/all-versions`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetEntriesInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<EntryDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entries',\r\n params: { culture: input.culture, sectionId: input.sectionId, entryTypeId: input.entryTypeId, startPublishDate: input.startPublishDate, expiryPublishDate: input.expiryPublishDate, status: input.status, creatorId: input.creatorId, queryingByFieldsJson: input.queryingByFieldsJson, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getListByIds = (sectionId: string, ids: string[], config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ListResultDto<EntryDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entries/search-by-ids',\r\n params: { sectionId, ids },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getLocalizedEntriesBySlug = (sectionId: string, slug: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ListResultDto<EntryDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entries/localized-entries-by-slug',\r\n params: { sectionId, slug },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n move = (id: string, input: MoveEntryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'POST',\r\n url: `/api/cms-admin/entries/move/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n slugExists = (input: SlugExistsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entries/slug-exists',\r\n params: { culture: input.culture, sectionId: input.sectionId, slug: input.slug },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateEntryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryDto>({\r\n method: 'PUT',\r\n url: '/api/cms-admin/entries',\r\n params: { id },\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateEntryTypeInput, EntryTypeDto, EntryTypeNameExistsInput, UpdateEntryTypeInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EntryTypeAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n create = (input: CreateEntryTypeInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryTypeDto>({\r\n method: 'POST',\r\n url: '/api/cms-admin/entry-types',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/cms-admin/entry-types/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryTypeDto>({\r\n method: 'GET',\r\n url: `/api/cms-admin/entry-types/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n nameExists = (input: EntryTypeNameExistsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entry-types/name-exists',\r\n params: { sectionId: input.sectionId, name: input.name },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateEntryTypeInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryTypeDto>({\r\n method: 'PUT',\r\n url: `/api/cms-admin/entry-types/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateSectionInput, GetSectionsInput, SectionDto, SectionNameExistsInput, SectionRouteExistsInput, UpdateSectionInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SectionAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n create = (input: CreateSectionInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, SectionDto>({\r\n method: 'POST',\r\n url: '/api/cms-admin/sections',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/cms-admin/sections/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, SectionDto>({\r\n method: 'GET',\r\n url: `/api/cms-admin/sections/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetSectionsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<SectionDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/sections',\r\n params: { filter: input.filter, isActive: input.isActive, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n nameExists = (input: SectionNameExistsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: '/api/cms-admin/sections/name-exists',\r\n params: { name: input.name },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n routeExists = (input: SectionRouteExistsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: '/api/cms-admin/sections/route-exists',\r\n params: { route: input.route },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateSectionInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, SectionDto>({\r\n method: 'PUT',\r\n url: `/api/cms-admin/sections/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { mapEnumToOptions } from '@abp/ng.core';\r\n\r\nexport enum EntryStatus {\r\n Draft = 0,\r\n Published = 1,\r\n}\r\n\r\nexport const entryStatusOptions = mapEnumToOptions(EntryStatus);\r\n","import type { RegionalizationDto, UpdateRegionalizationInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RegionalizationService {\r\n apiName = 'AbpRegionalizationManagement';\r\n \r\n\r\n get = (config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, RegionalizationDto>({\r\n method: 'GET',\r\n url: '/api/regionalization-management/regionalization',\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (input: UpdateRegionalizationInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, RegionalizationDto>({\r\n method: 'POST',\r\n url: '/api/regionalization-management/regionalization',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { mapEnumToOptions } from '@abp/ng.core';\r\n\r\nexport enum SectionType {\r\n Single = 0,\r\n Structure = 1,\r\n Channel = 2,\r\n}\r\n\r\nexport const sectionTypeOptions = mapEnumToOptions(SectionType);\r\n","import type { FormControlDto } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { ListResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n getFormControls = (config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ListResultDto<FormControlDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/dynamic-forms/controls',\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateFieldInput, FieldDto, GetFieldsInput, UpdateFieldInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FieldAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n create = (input: CreateFieldInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldDto>({\r\n method: 'POST',\r\n url: '/api/cms-admin/fields',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/cms-admin/fields/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldDto>({\r\n method: 'GET',\r\n url: `/api/cms-admin/fields/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetFieldsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<FieldDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/fields',\r\n params: { filter: input.filter, groupId: input.groupId, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n nameExists = (name: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: `/api/cms-admin/fields/name-exists/${name}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateFieldInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldDto>({\r\n method: 'PUT',\r\n url: `/api/cms-admin/fields/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateOrUpdateFieldGroupInput, FieldGroupDto, GetFieldGroupsInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FieldGroupAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n create = (input: CreateOrUpdateFieldGroupInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldGroupDto>({\r\n method: 'POST',\r\n url: '/api/cms-admin/field-groups',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/cms-admin/field-groups/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldGroupDto>({\r\n method: 'GET',\r\n url: `/api/cms-admin/field-groups/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetFieldGroupsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<FieldGroupDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/field-groups',\r\n params: { input },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: CreateOrUpdateFieldGroupInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldGroupDto>({\r\n method: 'PUT',\r\n url: `/api/cms-admin/field-groups/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CreateFieldInput, CreateOrUpdateFieldGroupInput, FieldAdminService, FieldGroupAdminService, GetFieldsInput, UpdateFieldInput } from '../proxy/dignite/cms/admin/fields';\r\nimport { FormAdminService } from '../proxy/dignite/cms/admin/dynamic-forms';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FieldsDataService {\r\n\r\n constructor(\r\n private _fieldGroupService:FieldGroupAdminService,\r\n private _formService:FormAdminService,\r\n private _fieldService:FieldAdminService\r\n ) { }\r\n /**\r\n * 字段分组列表\r\n */\r\n fieldGroupsList:any[] = [];\r\n /**\r\n * 字段控件类型列表\r\n */\r\n fieldControlsTypesList:any[] = [];\r\n /**\r\n * 获取字段分组\r\n */\r\n getfieldGroups(newList = false){\r\n return new Promise((resolve,reject)=>{\r\n if(this.fieldGroupsList.length > 0&&newList == false){\r\n resolve(this.fieldGroupsList);\r\n return;\r\n }\r\n this._fieldGroupService.getList({}).subscribe(res=>{\r\n this.fieldGroupsList = res.items;\r\n resolve(res.items);\r\n },()=>{\r\n reject([]);\r\n })\r\n })\r\n }\r\n\r\n /**\r\n * 获取字段类型列表\r\n */\r\n getControlsfieldTypes():Promise<any[]>{\r\n return new Promise((resolve,reject)=>{\r\n if(this.fieldControlsTypesList.length > 0){\r\n resolve(this.fieldControlsTypesList);\r\n return;\r\n }\r\n this._formService.getFormControls({}).subscribe(res=>{\r\n this.fieldControlsTypesList = res.items;\r\n resolve(res.items);\r\n },()=>{\r\n reject([]);\r\n })\r\n })\r\n }\r\n\r\n /**创建分组 */\r\n createFieldGroup(input:CreateOrUpdateFieldGroupInput){\r\n return this._fieldGroupService.create(input);\r\n }\r\n /**编辑分组 */\r\n updateFieldGroup(id:string,input:CreateOrUpdateFieldGroupInput){\r\n return this._fieldGroupService.update(id,input);\r\n }\r\n /**删除分组 */\r\n deleteFieldGroup(id:string){\r\n return this._fieldGroupService.delete(id);\r\n }\r\n\r\n /**获取字段列表 */\r\n getFieldsList(input:GetFieldsInput){\r\n return this._fieldService.getList(input);\r\n }\r\n /**创建字段 */\r\n createField(input:CreateFieldInput){\r\n return this._fieldService.create(input);\r\n }\r\n /**编辑字段 */\r\n updateField(id:string,input:UpdateFieldInput){\r\n return this._fieldService.update(id,input);\r\n }\r\n /**获取字段详情 */\r\n getFieldDetail(id:string){\r\n return this._fieldService.get(id);\r\n }\r\n /**字段验证 */\r\n nameExists(name:string){\r\n return this._fieldService.nameExists(name);\r\n }\r\n /**删除字段 */\r\n deleteField(id:string){\r\n return this._fieldService.delete(id);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormAdminService } from '../proxy/dignite/cms/admin/dynamic-forms/form-admin.service';\r\nimport { FieldsDataService } from './fields-data.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormControlsService {\r\n constructor(private _FormAdminService: FormAdminService,private _service:FieldsDataService) {}\r\n /**需要查询的动态表单类型 */\r\n enableSearchTypeList: any[] = [];\r\n /**不需要展示的动态表单类型 */\r\n disableshowinTypeList: any[] = ['Table', 'FileExplorer', 'Matrix'];\r\n\r\n /**获取动态表单类型 */\r\n getDynamicFormType() {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve, rejects) => {\r\n const items:any= await this._service.getControlsfieldTypes()\r\n this.enableSearchTypeList = items.filter(el => el.enableSearch).map(el => el.name);\r\n resolve(items);\r\n });\r\n }\r\n\r\n async getEnableSearchTypeList() {\r\n if (this.enableSearchTypeList.length === 0) {\r\n await this.getDynamicFormType();\r\n }\r\n return this.enableSearchTypeList;\r\n }\r\n getdisableshowinTypeList() {\r\n return this.disableshowinTypeList;\r\n }\r\n}\r\n","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { SectionType } from '../proxy/dignite/cms/sections';\r\nimport { EntryAdminService } from '../proxy/dignite/cms/admin/entries';\r\n\r\n@Pipe({\r\n name: 'getLocalizedEntriesBySlug',\r\n standalone: true,\r\n})\r\nexport class GetLocalizedEntriesBySlugPipe implements PipeTransform {\r\n private _EntryAdminService = inject(EntryAdminService);\r\n\r\n async transform(value: any, ...args: any[]): Promise<any> {\r\n const { slug, sectionType } = value as any;\r\n // if (sectionType == SectionType.Single) {\r\n //获取别名下其他的语言版本\r\n const Entries:any= await this.getLocalizedEntriesBySlug(args[0], slug);\r\n //判断Entries中是否还有未创建的语言版本,如果有则返回false,所有的语言版本args[1]都创建了则返回true,\r\n const state = args[1].every(el => {\r\n if (Entries.find(el2 => el2.culture === el.cultureName)) {\r\n return true;\r\n }\r\n });\r\n return state;\r\n // }\r\n // return true;\r\n }\r\n\r\n /**获取别名下其他的语言版本 */\r\n getLocalizedEntriesBySlug(sectionId, slug) {\r\n return new Promise((resolve, rejects) => {\r\n this._EntryAdminService.getLocalizedEntriesBySlug(sectionId, slug).subscribe(\r\n res => {\r\n resolve(res.items);\r\n },\r\n err => {\r\n resolve([]);\r\n },\r\n );\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-constant-condition */\n/* eslint-disable no-async-promise-executor */\n/* eslint-disable @angular-eslint/component-selector */\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\nimport {\n ListService,\n LIST_QUERY_DEBOUNCE_TIME,\n ConfigStateService,\n LocalizationService,\n PagedResultDto,\n ABP,\n} from '@abp/ng.core';\nimport { ToasterService, ConfirmationService, Confirmation } from '@abp/ng.theme.shared';\nimport { ChangeDetectorRef, Component, OnInit, inject } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { ColumnMode } from '@swimlane/ngx-datatable';\nimport { finalize } from 'rxjs';\nimport { ECmsComponent } from '../../../enums';\nimport { UpdateListService } from '@dignite-ng/expand.core';\nimport {\n EntryAdminService,\n EntryDto,\n GetEntriesInput,\n} from '../../../proxy/dignite/cms/admin/entries';\nimport { SectionAdminService } from '../../../proxy/dignite/cms/admin/sections';\nimport { entryStatusOptions } from '../../../proxy/dignite/cms/entries';\nimport { RegionalizationService } from '../../../proxy/dignite/abp/regionalization-management';\nimport { SectionType } from '../../../proxy/dignite/cms/sections';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { FormAdminService } from '../../../proxy/dignite/cms/admin/dynamic-forms';\nimport { FieldAdminService } from '../../../proxy/dignite/cms/admin/fields';\nimport { FormControlsService } from '../../../services/form-controls.service';\n\n@Component({\n selector: 'cms-entries',\n templateUrl: './entries.component.html',\n styleUrls: ['./entries.component.scss'],\n providers: [\n ListService,\n // Provide this token if you want a different debounce time.\n // Default is 300. Cannot be 0. Any value below 100 is not recommended.\n { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: ECmsComponent.Entries,\n },\n ],\n})\nexport class EntriesComponent implements OnInit {\n constructor(\n private _EntryAdminService: EntryAdminService,\n private _SectionAdminService: SectionAdminService,\n private toaster: ToasterService,\n private confirmation: ConfirmationService,\n private configState: ConfigStateService,\n private router: Router,\n private _LocalizationService: LocalizationService,\n private _FormAdminService: FormAdminService,\n private _FieldAdminService: FieldAdminService,\n private cdRef: ChangeDetectorRef,\n private _FormControlsService: FormControlsService,\n ) {}\n\n private fb = inject(FormBuilder);\n private _UpdateListService = inject(UpdateListService);\n public readonly list = inject(ListService<GetEntriesInput>);\n\n /**板块类型 */\n SectionType = SectionType;\n\n ngOnInit(): void {\n this.getPageDate();\n this._UpdateListService.updateListEvent.subscribe(() => {\n this.data.items = [];\n this.data.totalCount = 0;\n this.list.get();\n });\n }\n\n /**站点下的版块 */\n SiteOfSectionList: any[any] = [];\n\n /**版块下的语言列表 */\n sectionLanguagesList: any[any] = [];\n /**版块下的条目类型列表 */\n entryTypeList: any[any] = [];\n /**状态编码 */\n _entryStatusOptions = entryStatusOptions;\n\n /**获取页面数据 */\n async getPageDate() {\n this.enableSearchTypeList = await this._FormControlsService.getEnableSearchTypeList();\n await this.getSiteOfSectionList();\n await this.getSectionLanguagesList();\n this.filters.sorting = 'creationTime desc';\n this.hookToQuery();\n console.log(this.entryTypeList,'entryTypeList',this.data.items);\n }\n /**需要查询的动态表单类型 */\n enableSearchTypeList: any[] = [];\n /**需要查询的动态表单字段 */\n enableSearchFieldList: any[] = [];\n /**不需要展示的动态表单类型 */\n disableshowinTypeList: any[] = [];\n /**需要展示的动态列表字段 */\n showinFieldList: any[] = [];\n\n\n /**切换板块 */\n async sectionIdChange() {\n this.getSectionOfEntryType();\n await this.getSectionLanguagesList();\n this.resetData();\n }\n /**切换语言 */\n async cultureChange() {\n this.resetData();\n }\n\n /**获取站点下的版块 */\n getSiteOfSectionList() {\n return new Promise((resolve, rejects) => {\n this._SectionAdminService\n .getList({\n maxResultCount: 1000,\n })\n .subscribe(async (res: any) => {\n this.SiteOfSectionList = res.items.filter(el => el.isActive );\n this.filters.sectionId = res.items[0]?.id || '';\n await this.getSectionOfEntryType();\n resolve(res.items);\n });\n });\n }\n /**表单 */\n enablegearchFormEntity: FormGroup | undefined = this.fb.group({\n extraProperties: this.fb.group({}),\n });\n\n get extraPropertiesInput() {\n return this.enablegearchFormEntity?.get('extraProperties') as FormGroup;\n }\n\n /**设置筛选条件 */\n setfiltersValue() {\n return new Promise((resolve, rejects) => {\n const extraProperties = this.extraPropertiesInput.value;\n const inputs: any[] = [];\n for (const key in extraProperties) {\n const element = extraProperties[key];\n if (Array.isArray(element) ? (element.length > 0 ? element : null) : element) {\n inputs.push({\n name: key,\n value: element === true ? 'True' : Array.isArray(element) ? element.join(',') : element,\n });\n }\n if (element === false) {\n inputs.push({\n name: key,\n value: 'False',\n });\n }\n }\n this.filters.queryingByFieldsJson = inputs.length > 0 ? JSON.stringify(inputs) : '';\n resolve(true);\n });\n }\n\n async listget() {\n await this.setfiltersValue();\n this.list.get();\n // this.filters.\n }\n\n /**站点下板块的类型 */\n SiteOfSectionType: any = SectionType.Single;\n\n /**获取版块下的条目类型 */\n async getSectionOfEntryType() {\n // let sectionId = this.filtersForm.get('sectionId').value;\n const sectionId = this.filters.sectionId;\n const SectionInfo: any = await this.getSectionInfo(sectionId);\n const _entryTypeList = SectionInfo?.entryTypes || [];\n\n // let _entryTypeList = this.SiteOfSectionList.find(el => el.id == sectionId)?.entryTypes || [];\n this.entryTypeList = _entryTypeList;\n //选择板块的类型SectionType\n this.SiteOfSectionType = this.SiteOfSectionList.find(el => el.id == sectionId)?.type;\n if (this.SiteOfSectionType == SectionType.Structure) {\n this.maxResultCount = 1000;\n } else {\n this.maxResultCount = 10;\n }\n // 初始化数组\n this.enableSearchFieldList = [];\n this.showinFieldList = [];\n // _entryTypeList.length === 1\n if (true) {\n // this.filters.entryTypeId = this.entryTypeList[0].id;\n\n // 使用for...of替代forEach来处理异步\n for (const el of _entryTypeList) {\n for (const el1 of el.fieldTabs) {\n for (const el2 of el1.fields) {\n // el2.field = await this.getDynamicFormEntity(el2.fieldId);\n if (el2.enableSearch && this.enableSearchTypeList.includes(el2.field.formControlName)) {\n this.enableSearchFieldList.push({\n ...el2,\n field: {\n formControlName: el2.field.formControlName,\n formConfiguration: el2.field.formConfiguration,\n name: el2.field.name,\n },\n });\n }\n if (el2.showInList && !this.disableshowinTypeList.includes(el2.field.formControlName)) {\n this.showinFieldList.push(el2);\n }\n }\n }\n }\n }\n \n }\n async abpInitss() {\n await this.setfiltersValue();\n }\n /**获取板块详情 */\n getSectionInfo(ids) {\n return new Promise((resolve, rejects) => {\n this._SectionAdminService.get(ids).subscribe(res => {\n resolve(res);\n });\n });\n }\n /**获取字段详情 */\n getDynamicFormEntity(fieldId: string) {\n return new Promise((resolve, rejects) => {\n this._FieldAdminService.get(fieldId).subscribe(res => {\n resolve(res);\n });\n });\n }\n\n private config = inject(ConfigStateService);\n private _RegionalizationService = inject(RegionalizationService);\n /**获取版块下的语言列表 */\n getSectionLanguagesList() {\n return new Promise(async (resolve, rejects) => {\n //获取所有语言 */\n const languagesSystem = this.configState.getDeep('localization.languages');\n //获取系统默认语言 */\n let DefaultLanguage = this.config.getSetting('Abp.Regionalization.DefaultCultureName');\n const configCmsSiteLanguages = this.config.getSetting('Cms.Site.Languages');\n if (!configCmsSiteLanguages) {\n await this.getSiteSettingsLanguages();\n }\n if (this.defaultCultureName) {\n DefaultLanguage = this.defaultCultureName;\n }\n const LanguagesSite =\n (configCmsSiteLanguages ? configCmsSiteLanguages.split(',') : '') ||\n this.SiteSettingsAdminLanguages;\n const LanguagesArray = languagesSystem.filter(el => LanguagesSite.includes(el.cultureName));\n //获取当前选择的语言\n const nowculture = this.filters.culture;\n // let nowculture = this.filtersForm.get('culture').value;\n //当前选择的语言,是否在版块的的语言列表中\n const isexist = LanguagesArray.find(el => el.cultureName == nowculture);\n this.filters.culture = nowculture\n ? isexist\n ? nowculture\n : DefaultLanguage\n : DefaultLanguage;\n this.sectionLanguagesList = LanguagesArray;\n resolve(LanguagesArray);\n });\n }\n\n /**站点设置语言 */\n SiteSettingsAdminLanguages: any[] = [];\n /**站点设置的默认语言 */\n defaultCultureName: any = '';\n /**\n * 获取站点设置语言\n */\n getSiteSettingsLanguages() {\n return new Promise((resolve, rejects) => {\n this._RegionalizationService.get().subscribe(res => {\n this.SiteSettingsAdminLanguages = res.availableCultureNames;\n this.defaultCultureName = res.defaultCultureName;\n resolve(res);\n });\n });\n }\n\n resetData() {\n this.filters = {\n sectionId: this.filters.sectionId,\n culture: this.filters.culture,\n sorting : 'creationTime desc',\n } as GetEntriesInput;\n this.list.filter = '';\n this.list.maxResultCount = this.maxResultCount;\n this.list.page = 0;\n this.data.items = [];\n this.list.get();\n }\n\n /**新增-单个 */\n createEntriesBtn() {\n this.router.navigate(['/cms/admin/entries/create'], {\n queryParams: {\n cultureName: this.filters.culture,\n sectionId: this.filters.sectionId,\n entryTypeId: this.entryTypeList[0].id,\n },\n });\n }\n createCopyEntriesBtn() {\n this.router.navigate(['/cms/admin/entries/create-copy'], {\n queryParams: {\n cultureName: this.filters.culture,\n sectionId: this.filters.sectionId,\n entryTypeId: this.entryTypeList[0].id,\n },\n });\n }\n\n /**列表相关 */\n ColumnMode = ColumnMode;\n data: PagedResultDto<EntryDto> | any = {\n items: [],\n totalCount: 0,\n };\n\n filters = {} as GetEntriesInput;\n\n maxResultCount = 10;\n\n hookToQuery() {\n const getData = (query: ABP.PageQueryParams) =>\n this._EntryAdminService.getList({\n ...query,\n ...this.filters,\n maxResultCount: this.maxResultCount,\n });\n const setData = (list: PagedResultDto<EntryDto> | any) => {\n this.data.items = [];\n this.data.totalCount = 0;\n if (this.SiteOfSectionType == SectionType.Structure) {\n list.items = list.items.sort((a, b) => {\n return new Date(b.creationTime).getTime() - new Date(a.creationTime).getTime();\n });\n }\n for (const element of list.items) {\n const sectionItem=this.SiteOfSectionList.find(el=>el.id==element.sectionId);\n element.sectionType=sectionItem.type;\n }\n this.data = list;\n this.scrollToTop();\n };\n this.list.hookToQuery(getData).subscribe(setData);\n }\n scrollToTop() {\n const scrollContainer = document.getElementsByClassName('lpx-scroll-container')[0];\n (scrollContainer || window).scrollTo(0, 0);\n }\n\n /**判断某个类型的条目是否存在 */\n isEntryTypeExist(entryTypeId: string) {\n return this.data?.items?.some(el => el.entryTypeId == entryTypeId);\n }\n\n /**删除条目 */\n deletefield(row: any) {\n this.confirmation\n .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))\n .subscribe((status: Confirmation.Status) => {\n if (status == 'confirm') {\n this._EntryAdminService\n .delete(row.id)\n .pipe(finalize(() => {}))\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\n this.list.get();\n });\n }\n });\n }\n\n drop(event: any) {\n const previousId: any = this.data.items[event.previousIndex].id;\n const previousIndexOrder = this.data.items[event.previousIndex].order;\n const currentIndexOrder = this.data.items[event.currentIndex].order;\n let moveorder = currentIndexOrder;\n if (event.previousIndex == event.currentIndex) return\n if (previousIndexOrder < currentIndexOrder) {\n moveorder = currentIndexOrder + 1;\n }\n moveItemInArray(this.data.items, event.previousIndex, event.currentIndex);\n this._EntryAdminService\n .move(previousId, {\n order: moveorder,\n // order: event.currentIndex,\n })\n .pipe(\n finalize(() => {\n this.list.get();\n }),\n )\n .subscribe(\n res => {},\n err => {},\n );\n // moveItemInArray(this.rows, event.previousIndex, event.currentIndex);\n // this.rows = [...this.rows];\n }\n\n isexpanded: boolean | any = false;\n /**高级筛选切换 */\n expandedChange(event) {\n this.isexpanded = event;\n }\n}\n","<abp-page [title]=\"'Cms::Entries' | abpLocalization\" [toolbar]=\"true\">\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length < 1\" class=\"col \">\r\n </abp-page-toolbar-container>\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length === 1\" class=\"col \">\r\n <div class=\"row justify-content-end mx-0 gap-2\" *abpPermission=\"'CmsAdmin.Entry.Create'\">\r\n <div class=\"col-auto px-0 pt-0\">\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <button class=\"btn btn-sm btn-primary\"\r\n [disabled]=\"data.totalCount===1&&SiteOfSectionType===SectionType.Single\"\r\n [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.id}\"><i\r\n class=\"fa fa-plus me-2\"></i> {{'Cms::NewEntry'|abpLocalization}}</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length > 1\" class=\"col \">\r\n <div class=\"row justify-content-end mx-0 gap-2\" *abpPermission=\"'CmsAdmin.Entry.Create'\">\r\n <div class=\"col-auto px-0 pt-0\">\r\n <div ngbDropdown class=\"d-inline-block\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm ms-2\" id=\"dropdownBasic1\" ngbDropdownToggle>\r\n <i class=\"fa fa-plus pe-1\" aria-hidden=\"true\"></i>{{'Cms::NewEntry' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [disabled]=\"data.totalCount===1&&SiteOfSectionType===SectionType.Single&&isEntryTypeExist(item.id)\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.id}\">{{item.displayName}}</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div id=\"sites-page\" class=\"sites-page\">\r\n <div class=\"card\">\r\n <div class=\"card-body \">\r\n <div class=\"row align-items-end\">\r\n <div class=\"mb-3 col-md-3\">\r\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}:</label>\r\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.sectionId\"\r\n (change)=\"sectionIdChange()\">\r\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\r\n <option [value]=\"item.id\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3 col-md-3\">\r\n <label class=\"form-label\">{{'AbpUi::Languages' | abpLocalization}}:</label>\r\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.culture\" (change)=\"cultureChange()\">\r\n <ng-container *ngFor=\"let item of sectionLanguagesList\">\r\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3 col-md-6\">\r\n <!-- <div class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\r\n [placeholder]=\"'Cms::PagerSearch'|abpLocalization\" />\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"listget()\">\r\n <i class=\"bi bi-search\"></i>\r\n </button>\r\n </div> -->\r\n </div>\r\n </div>\r\n @if(filters.culture&&enablegearchFormEntity&&enableSearchFieldList.length>0){\r\n <div id=\"entries-advanced-form\" class=\"entries-advanced-form \" [hidden]=\"isexpanded\"\r\n (abpInit)=\"abpInitss()\">\r\n <form [formGroup]=\"enablegearchFormEntity\">\r\n <div class=\"row align-items-end\">\r\n <ng-container *ngFor=\"let el of enableSearchFieldList\">\r\n <ng-container *ngIf=\"el.field&&enablegearchFormEntity&&el.enableSearch\">\r\n <div class=\"col-md-3\">\r\n <df-dynamic-search [fields]=\"el\" [parentFiledName]=\"'extraProperties'\"\r\n [culture]=\"filters.culture\"\r\n [entity]=\"enablegearchFormEntity\"></df-dynamic-search>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-3 mb-3 \">\r\n <button type=\"button\" class=\"btn btn-primary \" (click)=\"listget()\">\r\n <span>{{ 'AbpUi::Refresh' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"card mb-0\">\r\n <div class=\"card-body p-0\">\r\n @if(SiteOfSectionType!==SectionType.Structure){\r\n <div class=\"table-responsive table-fixed-header\">\r\n <ngx-datatable class=\"material \" [rows]=\"data.items\" [list]=\"list\" [columnMode]=\"ColumnMode.force\"\r\n [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [virtualization]=\"false\"\r\n [externalPaging]=\"true\" [count]=\"data.totalCount\" [scrollbarH]=\"true\">\r\n <!-- <ngx-datatable-column [name]=\"'Cms::Title' | abpLocalization\" prop=\"title\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ value }}\r\n </ng-template>\r\n </ngx-datatable-column> -->\r\n <ngx-datatable-column [name]=\"'Cms::Slug' | abpLocalization\" prop=\"slug\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ value }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"entryTypeId\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <ng-container *ngIf=\"item.id === value\">{{item.displayName}}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <!-- <ngx-datatable-column [name]=\"'Cms::SectionType' | abpLocalization\" prop=\"sectionType\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ 'Cms::Enum:SectionType:'+SectionType[value] |\r\n abpLocalization }}\r\n </ng-template>\r\n </ngx-datatable-column> -->\r\n <!-- <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"entryTypeId\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <ng-container *ngIf=\"item.id === value\">{{item.displayName}}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column> -->\r\n \r\n <ngx-datatable-column [name]=\"'Cms::Status' | abpLocalization\" prop=\"status\" [width]=\"80\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of _entryStatusOptions\">\r\n <ng-container *ngIf=\"item.value=== value\">{{ 'Cms::Enum:EntryStatus:'+item.key |\r\n abpLocalization }}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n @for (item of showinFieldList; track $index) {\r\n <ngx-datatable-column [name]=\"'Cms::'+item.displayName | abpLocalization\"\r\n [prop]=\"item?.field?.name\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <df-dynamic-view [type]=\"item.field.formControlName\" [showInList]=\"true\" [fields]=\"item\"\r\n [value]=\"row?.extraProperties[item.field.name]\"></df-dynamic-view>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n <ngx-datatable-column [name]=\"'Cms::PublishTime' | abpLocalization\" prop=\"publishTime\"\r\n [width]=\"190\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{value | shortDateTime }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [sortable]=\"false\" [name]=\"'AbpUi::Actions' | abpLocalization\"\r\n [frozenLeft]=\"true\" [width]=\"110\" [maxWidth]=\"110\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <div ngbDropdown container=\"body\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\r\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem\r\n routerLink=\"/cms/admin/entries/{{row.id}}/edit\">{{'Cms::Edit' |\r\n abpLocalization}}</button>\r\n @if\r\n (((row|getLocalizedEntriesBySlug:filters.sectionId:sectionLanguagesList)|async)===false)\r\n {\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:row.entryTypeId,entryVersionId:row.id,isOther:1}\">{{'Cms::CreateOtherLanguages'\r\n |\r\n abpLocalization}} </button>\r\n }\r\n <button ngbDropdownItem (click)=\"deletefield(row)\">{{'Cms::Delete' |\r\n abpLocalization}}</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n </ngx-datatable>\r\n </div>\r\n }\r\n\r\n @if(SiteOfSectionType===SectionType.Structure){\r\n <div class=\"table-responsive table-fixed-header\">\r\n <table class=\"table overflow-nowrap mb-0\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <thead>\r\n <tr>\r\n <th class=\"sticky-left-card-bg\"> <span\r\n class=\"bi bi-arrows-move fs-5 drag-handle me-2 opacity-0\"></span>{{'AbpUi::Actions'\r\n | abpLocalization}}</th>\r\n <th>{{'Cms::Slug' | abpLocalization}}</th>\r\n <!-- <th>{{'Cms::Title' | abpLocalization}}</th> -->\r\n <th>{{'Cms::SectionType' | abpLocalization}}</th>\r\n <th>{{'Cms::EntryType' | abpLocalization}}</th>\r\n <th>{{'Cms::Status' | abpLocalization}}</th>\r\n @for (item of showinFieldList; track $index) {\r\n <th>{{'Cms::'+item.displayName | abpLocalization}}</th>\r\n }\r\n <th>{{'Cms::PublishTime' | abpLocalization}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of data.items\" cdkDrag>\r\n <td class=\"sticky-left-card-bg\">\r\n <div ngbDropdown container=\"body\">\r\n <span class=\"bi bi-arrows-move fs-5 drag-handle me-2\" cdkDragHandle></span>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\r\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem\r\n routerLink=\"/cms/admin/entries/{{item.id}}/edit\">{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n @if\r\n (((item|getLocalizedEntriesBySlug:filters.sectionId:sectionLanguagesList)|async)===false)\r\n {\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.entryTypeId,entryVersionId:item.id,isOther:1}\">{{'Cms::CreateOtherLanguages'\r\n |\r\n abpLocalization}}</button>\r\n }\r\n <!-- <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:row.entryTypeId,entryVersionId:row.id,isOther:1}\">{{'Cms::CreateOtherLanguages'\r\n |\r\n abpLocalization}} </button> -->\r\n\r\n <button ngbDropdownItem (click)=\"deletefield(item)\">{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </div>\r\n </div>\r\n </td>\r\n <!-- <td class=\"white-space-normal\">{{item.title}}</td> -->\r\n <td class=\"white-space-normal\">{{item.slug}}</td>\r\n <td>\r\n {{ 'Cms::Enum:SectionType:'+SectionType[item.sectionType] |\r\n abpLocalization }}\r\n </td>\r\n <td>\r\n <ng-container *ngFor=\"let item1 of entryTypeList\">\r\n <ng-container\r\n *ngIf=\"item1.id === item.entryTypeId\">{{item1.displayName}}</ng-container>\r\n </ng-container>\r\n </td>\r\n \r\n <td>\r\n <ng-container *ngFor=\"let item2 of _entryStatusOptions\">\r\n <ng-container *ngIf=\"item.status=== item2.value\">{{\r\n 'Cms::Enum:EntryStatus:'+item2.key |\r\n abpLocalization }}</ng-container>\r\n </ng-container>\r\n </td>\r\n @for (item1 of showinFieldList; track $index) {\r\n <td>\r\n <df-dynamic-view [type]=\"item1.field.formControlName\" [showInList]=\"true\"\r\n [fields]=\"item1\"\r\n [value]=\"item?.extraProperties[item1.field.name]\"></df-dynamic-view>\r\n\r\n </td>\r\n }\r\n <td>{{item.publishTime | shortDateTime }}</td>\r\n </tr>\r\n </tbody>\r\n @if(data.items.length === 0){\r\n <div class=\"text-muted p-2\">\r\n {{ 'Cms::NoDataAvailableInDatatable' | abpLocalization}}\r\n </div>\r\n }\r\n </table>\r\n </div>\r\n <div class=\"card-footer py-2\">\r\n <small class=\"text-muted\"> {{data.totalCount}} {{ 'Cms::Total' | abpLocalization}}</small>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</abp-page>","import { FormGroup, Validators } from \"@angular/forms\";\r\n\r\nexport class CreateOrUpdateEntryInputBase {\r\n\r\n /**条目id */\r\n entryTypeId: any = ['']\r\n /**标题 */\r\n // title: any = ['', [Validators.required]]\r\n /**别名 */\r\n slug: any = ['', [Validators.required]]\r\n /**语言 */\r\n culture: any = ['']\r\n /**是否是草稿 */\r\n draft: any = ['', []]\r\n /**发布时间 */\r\n publishTime: any = ['', [Validators.required]]\r\n /**上级目录 */\r\n parentId: any = [null]\r\n /**修订说明 */\r\n versionNotes: any = [null]\r\n /**版本 */\r\n initialVersionId: any = [null]\r\n extraProperties: FormGroup | undefined = new FormGroup({})\r\n}\r\n\r\n\r\nexport const EntriesToFormLabelMap={\r\n \"title\":\"Cms::Title\",\r\n \"slug\":\"Cms::Slug\",\r\n \"culture\":\"Cms::Languages\",\r\n \"draft\":\"Cms::EntryType\",\r\n \"publishTime\":\"Cms::publishTime\",\r\n \"parentId\":\"Cms::ParentEntry\",\r\n}\r\n\r\n","/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable @angular-eslint/component-selector */\nimport { ConfigStateService, LocalizationService } from '@abp/ng.core';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, ValidationErrors } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { DatePipe, Location } from '@angular/common';\nimport { SectionAdminService } from '../../../proxy/dignite/cms/admin/sections';\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';\nimport { Observable } from 'rxjs';\nimport { RegionalizationService } from '../../../proxy/dignite/abp/regionalization-management';\nimport { ToPinyinService } from '@dignite-ng/expand.core';\n\n@Component({\n selector: 'cms-create-or-edit-entries',\n templateUrl: './create-or-edit-entries.component.html',\n styleUrls: ['./create-or-edit-entries.component.scss'],\n})\nexport class CreateOrEditEntriesComponent {\n private toaster = inject(ToasterService);\n public _location = inject(Location);\n private configState = inject(ConfigStateService);\n private _SectionAdminService = inject(SectionAdminService);\n private _EntryAdminService = inject(EntryAdminService);\n private datePipe = inject(DatePipe);\n private _LocalizationService = inject(LocalizationService);\n private router = inject(Router);\n private cdRef = inject(ChangeDetectorRef);\n private _RegionalizationService = inject(RegionalizationService);\n constructor(private toPinyinService: ToPinyinService) {}\n\n /**语言列表 */\n languagesList: any[] = [];\n /**条目列表-选择上级条目 */\n entryList: any[] = [];\n /**条目信息 */\n entryInfo: any = '';\n /**版本信息 */\n sectionInfo: any = '';\n /**需要展示的b板块下条目类型 */\n showEntryType: any = '';\n /**版本条目id */\n entryVersionId: any = '';\n /**版本列表 */\n AllVersionsList: any[] = [];\n //tab切换下标\n tabActive = 0;\n\n @Input() isEdit: boolean | any = false;\n //是否正在创建版本\n @Input() isCreateVersion: boolean | any = false;\n\n @Input() sectionId: string | any = '';\n @Input() entryTypeId: string | any = '';\n @Input() public set select(v: any) {\n this.entryVersionId = v.id;\n this.entryInfo = v;\n }\n /**向父级反馈信息 */\n @Output() feedbackChildInfo = new EventEmitter();\n\n formEntity: FormGroup | undefined;\n @Input() set entity(value: FormGroup | undefined) {\n this.formEntity = value;\n if (value) {\n this.loadData();\n }\n }\n /**是否加载完成 */\n isLoad: boolean | any = false;\n /**是否创建其他语言本 */\n @Input() isOther: any = 0;\n\n /**系统默认语言 */\n DefaultLanguage: string | any = '';\n\n /**语言控件 */\n get cultureInput(): FormControl {\n return this.formEntity?.get('culture') as FormControl;\n }\n get slugInput(): FormControl {\n return this.formEntity?.get('slug') as FormControl;\n }\n get initialVersionIdInput(): FormControl {\n return this.formEntity?.get('initialVersionId') as FormControl;\n }\n\n /**获取提交按钮替身,用于真实触发表单提交 */\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n /**站点设置语言 */\n SiteSettingsAdminLanguages: any[] = [];\n /**站点设置的默认语言 */\n defaultCultureName: any = '';\n /**\n * 获取站点设置语言\n */\n getSiteSettingsLanguages() {\n return new Promise((resolve, rejects) => {\n this._RegionalizationService.get().subscribe(res => {\n this.SiteSettingsAdminLanguages = res.availableCultureNames;\n this.defaultCultureName = res.defaultCultureName;\n resolve(res);\n });\n });\n }\n\n /**加载数据 */\n async loadData() {\n await this.getSiteSettingsLanguages();\n //获取语言列表\n const languagesSystem = this.configState.getDeep('localization.languages');\n //获取系统默认语言 */\n this.DefaultLanguage = this.defaultCultureName;\n // this.DefaultLanguage = this.configState.getSetting('Abp.Regionalization.DefaultCultureName');\n //选中languagesSystem中的cultureName在 languagesSystem中存在的数组项\n\n this.languagesList = languagesSystem.filter(el =>\n this.SiteSettingsAdminLanguages.includes(el.cultureName),\n );\n if (this.sectionId) {\n await this.getSectionInfo();\n await this.getEntryList();\n }\n if (!(this.isOther == 1)) {\n this.cultureInput.disable();\n }\n const repetition = await this.cultureAsyncValidator();\n if (repetition) this.cultureInput.setErrors(repetition);\n this.slugInput.addValidators(this.SlugRegExValidator());\n this.slugInput.addAsyncValidators(this.SlugAsyncValidator());\n if (this.entryInfo) {\n await this.getAllVersionsList();\n this.formEntity.patchValue({\n entryTypeId: this.entryInfo.entryTypeId,\n publishTime: this.datePipe.transform(this.entryInfo.publishTime, 'yyyy-MM-dd HH:mm:ss'),\n // title: this.entryInfo.title,\n slug: this.entryInfo.slug,\n parentId: this.entryInfo.parentId,\n versionNotes: this.entryInfo.versionNotes,\n initialVersionId: this.entryInfo.id,\n });\n this.slugInput.setErrors({});\n this.slugInput.setErrors(null);\n } else {\n this.formEntity.patchValue({\n entryTypeId: this.entryTypeId,\n publishTime: this.datePipe.transform(new Date(), 'yyyy-MM-dd HH:mm:ss'),\n });\n }\n\n this.cdRef.detectChanges();\n\n this.cdRef.detectChanges();\n this.feedbackChildInfo.emit({\n showEntryType: this.showEntryType,\n });\n this.isLoad = true;\n if (this.isOther == 1) {\n this.initialVersionIdInput.patchValue('');\n this.slugInput.disable();\n await this.getLocalizedEntriesBySlug();\n }\n\n setTimeout(() => {\n // this.submitclick?.nativeElement.click();\n }, 0);\n }\n\n /**获取别名下其他的语言版本 */\n getLocalizedEntriesBySlug() {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService\n .getLocalizedEntriesBySlug(this.sectionId, this.slugInput.value)\n .subscribe(\n res => {\n // console.log(res,'获取别名下其他的语言版本',this.slugInput.value);\n this.languagesList = this.languagesList.filter(\n el => !res.items.find(el2 => el2.culture === el.cultureName),\n );\n this.cultureInput.patchValue(this.languagesList[0].cultureName);\n resolve(res);\n },\n err => {\n resolve(null);\n },\n );\n });\n }\n SlugRegExValidator() {\n return (control: AbstractControl): { [key: string]: any } | null => {\n const regex = /^[a-zA-Z0-9_-]+$/;\n if (control.value && !regex.test(control.value)) {\n return { repetition: this._LocalizationService.instant(`Cms::SlugValidatorsText`) };\n }\n\n return null;\n };\n }\n\n // /**别名查重 */\n SlugAsyncValidator() {\n return (\n control: AbstractControl,\n ): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {\n return new Promise(resolve => {\n if (control.value) {\n if (control.value == this.entryInfo?.slug) {\n resolve(null);\n return;\n }\n this._EntryAdminService\n .slugExists({\n culture: this.cultureInput.value,\n sectionId: this.sectionId,\n slug: control.value,\n })\n .subscribe(res => {\n if (res) {\n resolve({\n repetition: this._LocalizationService.instant(\n `Cms::EntrySlug{0}AlreadyExist`,\n control.value,\n ),\n });\n } else {\n resolve(null);\n }\n });\n }\n });\n };\n }\n\n /**定义自定义异步验证 */\n cultureAsyncValidator() {\n return new Promise(resolve => {\n const culture = this.cultureInput.value;\n if (culture == this.entryInfo?.culture || this.sectionInfo.type !== 0) return resolve(null);\n this._EntryAdminService\n .cultureExistWithSingleSection({\n culture: culture,\n sectionId: this.sectionId,\n entryTypeId: this.entryTypeId,\n })\n .subscribe(res => {\n if (res) {\n resolve({\n repetition: this._LocalizationService.instant(\n `Cms::EntriesAlreadyExistEntryType`,\n '',\n this.languagesList.find(el => el.cultureName == culture).displayName,\n ),\n });\n } else {\n resolve(null);\n }\n });\n });\n }\n\n /**获取板块信息 */\n getSectionInfo() {\n return new Promise((resolve, reject) => {\n this._SectionAdminService.get(this.sectionId).subscribe(res => {\n this.showEntryType = res.entryTypes.find(el => el.id == this.entryTypeId);\n this.sectionInfo = res;\n resolve(res);\n });\n });\n }\n /**获取板块下所有条目 */\n getEntryList() {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService\n .getList({\n sectionId: this.sectionId,\n maxResultCount: 1000,\n culture: this.cultureInput.value,\n })\n .subscribe((res: any) => {\n const entryList = res.items.filter(el => el.id !== this.entryInfo?.id);\n const parentList = entryList.filter(el => !el.parentId);\n parentList.forEach(el => {\n const layer: number | any = 0;\n el.layer = new Array(layer);\n el.children = this.groupByParentId(entryList, el.id, layer + 1);\n });\n this.entryList = parentList;\n resolve(res);\n });\n });\n }\n /**对数组按照父子关系进行分组 */\n groupByParentId(arr, id = '', layer) {\n let result = [];\n result = arr.filter(el => el.parentId == id);\n result.forEach(el => {\n el.layer = new Array(layer);\n el.children = this.groupByParentId(arr, el.id, layer + 1);\n });\n return result;\n }\n /**别名转化 */\n slugChange(event: any) {\n console.log(event, '别名转化');\n const val = event.target.value;\n //将val字段中的特殊字符替换为-,允许输入字母,数字,下划线,中划线,小数点\n const newVal = val.replace(/[^\\-.\\w\\s]/g, '-');\n \n //将newVal字段中的空格替换为-\n const newVal2 = newVal.replace(/\\s+/g, '-');\n //将newVal2字段中的多个-替换为单个-\n const newVal3 = newVal2.replace(/-+/g, '-');\n //如果-在开头或者结尾,则删除\n const newVal4 = newVal3.replace(/^-|-$/g, '');\n\n this.slugInput.patchValue(newVal4);\n }\n\n \n\n /**获取条目版本列表 */\n getAllVersionsList() {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService.getAllVersions(this.entryInfo.id).subscribe(res => {\n this.AllVersionsList = res.items;\n resolve(res);\n });\n });\n }\n\n /**激活 */\n ActivatedVersion(VersionId) {\n this._EntryAdminService.activate(VersionId).subscribe(res => {\n this.AllVersionsList.forEach(el => {\n el.isActivatedVersion = el.id === VersionId;\n });\n return;\n });\n }\n /**编辑版本 */\n toEditUrl(id) {\n this.router.navigateByUrl('', { skipLocationChange: true }).then(() => {\n this.router.navigate([`/cms/admin/entries/${id}/edit`]);\n });\n }\n /**删除版本 */\n delectVersion(vid) {\n this._EntryAdminService.delete(vid).subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\n this.getAllVersionsList();\n });\n }\n}\n","<div [formGroup]=\"formEntity\">\r\n <div class=\"row create-or-edit-entries-page\">\r\n <div class=\"col-md-8\">\r\n <div class=\"card\">\r\n <div class=\"card-body py-0\">\r\n <!-- <div class=\"mb-3\">\r\n <div class=\"form-label\">{{'Cms::Title' | abpLocalization}}</div>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\"\r\n (blur)=\"setTitleToSlugBlur($event)\">\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"isLoad\">\r\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"tabActive\" [destroyOnHide]=\"false\" class=\"nav-tabs mb-0\">\r\n <ng-container *ngFor=\"let item of showEntryType?.fieldTabs;let i =index\">\r\n <li [ngbNavItem]=\"i\" [destroyOnHide]=\"false\">\r\n <button ngbNavLink *ngIf=\"showEntryType?.fieldTabs.length>1\">{{item.name}}</button>\r\n <ng-template ngbNavContent>\r\n <ng-container *ngFor=\"let el of item.fields;let i1 =index\">\r\n <ng-container *ngIf=\"el&&formEntity\">\r\n <df-dynamic-control [fields]=\"el\"\r\n [selected]=\"entryInfo ? entryInfo.extraProperties[el.field.name] : ''\"\r\n [parentFiledName]=\"'extraProperties'\" [culture]=\"cultureInput.value\"\r\n [entity]=\"formEntity\"></df-dynamic-control>\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n\r\n <div [ngbNavOutlet]=\"nav\" class=\"\"></div>\r\n </ng-container>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"mb-3\">\r\n <div class=\"form-label\">{{'Cms::Slug' | abpLocalization}}</div>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"slug\" (change)=\"slugChange($event)\">\r\n <div class=\"text-danger\" *ngIf=\"slugInput.dirty\">\r\n {{slugInput?.errors?.repetition}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-label\">{{'AbpUi::Languages' | abpLocalization}}</div>\r\n <select class=\"form-select form-select-multiple\" formControlName=\"culture\">\r\n <ng-container *ngFor=\"let item of languagesList;let i =index\">\r\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n <div class=\"text-danger\" *ngIf=\"cultureInput.dirty\">\r\n {{cultureInput?.errors?.repetition}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-label\">{{'Cms::EntryType' | abpLocalization}}</div>\r\n <input type=\"text\" disabled [value]=\"showEntryType?.displayName||''\" class=\"form-select\" />\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"sectionInfo.type===1\">\r\n <label class=\"form-label\" for=\"parentId\">{{'Cms::ParentEntry' | abpLocalization}}</label>\r\n <select class=\"form-select \" formControlName=\"parentId\">\r\n <option value=\"\"></option>\r\n <ng-container *ngFor=\"let item of entryList;let i =index\">\r\n <option [value]=\"item.id\">{{item.title}}</option>\r\n <ng-container *ngFor=\"let el of item.children\">\r\n <ng-container *ngTemplateOutlet=\"childTemplate; context: {\r\n $implicit: {\r\n value: el,\r\n }\r\n }\"></ng-container>\r\n <ng-template #childTemplate let-data>\r\n <option [value]=\"data.value.id\">\r\n <ng-container *ngFor=\"let item of data.value.layer\">--</ng-container>\r\n {{data.value.title}}\r\n </option>\r\n <ng-container *ngFor=\"let el of data.value.children\">\r\n <ng-container *ngTemplateOutlet=\"childTemplate; context: {\r\n $implicit: {\r\n value: el,\r\n }\r\n }\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::PublishTime' | abpLocalization}}</label>\r\n <input type=\"datetime-local\" class=\"form-control\" step=\"1\" formControlName=\"publishTime\">\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"isEdit\">\r\n <label class=\"form-label\" for=\"Version\">{{'Cms::Version' | abpLocalization}}</label>\r\n <ul class=\"list-group\">\r\n <ng-container *ngFor=\"let item of AllVersionsList\">\r\n <li\r\n class=\"list-group-item flex-between d-flex align-items-center justify-content-between\">\r\n <div>\r\n {{item.initialVersionId?(item.creationTime| date: 'YYYY/MM/dd\r\n HH:mm:s'):('Cms::InitialVersion' | abpLocalization)}}\r\n <span class=\"badge text-bg-success ms-1\"\r\n *ngIf=\"item.isActivatedVersion\">{{'Cms::IsActive' | abpLocalization}}</span>\r\n <span class=\"badge text-bg-primary ms-1\"\r\n *ngIf=\"item.id === entryVersionId\">{{'Cms::Editing' |\r\n abpLocalization}}</span>\r\n </div>\r\n <div>\r\n <div ngbDropdown class=\"d-inline-block\">\r\n <button type=\"button\" class=\"btn btn-link-primary p-2 \"\r\n style=\"line-height: 0;\" id=\"dropdownBasic1\" ngbDropdownToggle>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\r\n <button ngbDropdownItem type=\"button\" *ngIf=\"!item.isActivatedVersion\"\r\n (click)=\"ActivatedVersion(item.id)\">\r\n <i class=\"fas fa-check me-1\"></i>{{'Cms::IsActive' |\r\n abpLocalization}}\r\n </button>\r\n <button ngbDropdownItem type=\"button\"\r\n routerLink=\"/cms/admin/entries/create\"\r\n [queryParams]=\"{entryVersionId:item.id}\">\r\n <i class=\"fas fa-plus me-1\"></i>{{'Cms::NewVersion' |\r\n abpLocalization}}\r\n </button>\r\n <button ngbDropdownItem type=\"button\" (click.stop)=\"toEditUrl(item.id)\"\r\n *ngIf=\"item.id !== entryVersionId\">\r\n <i class=\"fas fa-edit me-1\"></i>{{'AbpUi::Edit' | abpLocalization}}\r\n </button>\r\n <button ngbDropdownItem type=\"button\"\r\n (click.stop)=\"delectVersion(item.id)\"\r\n *ngIf=\"item.initialVersionId&&!item.isActivatedVersion&&item.id !== entryVersionId\">\r\n <i class=\"fas fa-trash me-1\"></i>{{'AbpUi::Delete' |\r\n abpLocalization}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"entryInfo\">\r\n <label class=\"form-label\" for=\"versionNotes\">{{'Cms::RevisionNotes' | abpLocalization}}</label>\r\n <textarea class=\"form-control\" formControlName=\"versionNotes\" rows=\"3\"></textarea>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</div>","/* eslint-disable @angular-eslint/component-selector */\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\nimport { LocalizationService } from '@abp/ng.core';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { Location } from '@angular/common';\nimport { Component, OnInit, inject, ViewChild, ElementRef } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n// import { EntryAdminService } from '../../../proxy/admin/entries';\nimport { ECmsComponent } from '../../../enums';\nimport {\n CreateOrUpdateEntryInputBase,\n EntriesToFormLabelMap,\n} from './create-or-update-entry-input-base';\nimport {\n ValidatorsService,\n UpdateListService,\n LocationBackService,\n DigniteValidatorsService,\n} from '@dignite-ng/expand.core';\nimport { finalize } from 'rxjs';\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';\n\n@Component({\n selector: 'cms-create',\n templateUrl: './create.component.html',\n styleUrls: ['./create.component.scss'],\n providers: [\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: ECmsComponent.Entries_Create,\n },\n ],\n})\nexport class CreateComponent implements OnInit {\n private fb = inject(FormBuilder);\n private _updateListService = inject(UpdateListService);\n private toaster = inject(ToasterService);\n public _location = inject(Location);\n private route = inject(ActivatedRoute);\n private router = inject(Router);\n private _EntryAdminService = inject(EntryAdminService);\n private _LocalizationService = inject(LocalizationService);\n private _ValidatorsService = inject(ValidatorsService);\n\n /**获取提交按钮替身,用于真实触发表单提交 */\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /**表单验证状态\n * {\n * title:true,\n * }\n */\n formValidation: any = '';\n /**表单实体 */\n formEntity: FormGroup | undefined;\n /**语言 */\n cultureName: string | any = '';\n /**条目类型id */\n entryTypeId: string | any = '';\n /**版块id */\n sectionId: string | any = '';\n /**条目版本id */\n entryVersionId: string | any = '';\n /**条目信息 */\n entryInfo: any = '';\n /**是否创建其他语言版本 */\n isOther: string | any = 0;\n\n /**是否草稿控件*/\n get draftInput() {\n return this.formEntity?.get('draft') as FormControl;\n }\n /**语言控件 */\n get cultureInput(): FormControl {\n return this.formEntity?.get('culture') as FormControl;\n }\n\n async ngOnInit(): Promise<void> {\n const queryParams = this.route.snapshot.queryParams;\n\n this.cultureName = queryParams.cultureName;\n this.entryTypeId = queryParams.entryTypeId;\n this.sectionId = queryParams.sectionId;\n this.entryVersionId = queryParams.entryVersionId;\n this.isOther = queryParams.isOther || 0;\n this.formEntity = this.fb.group(new CreateOrUpdateEntryInputBase());\n this.cultureInput.patchValue(this.cultureName);\n if (this.entryVersionId) await this.getEntryInfo();\n }\n /**获取条目信息 */\n getEntryInfo() {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService.get(this.entryVersionId).subscribe(res => {\n this.cultureName = res.culture;\n this.entryTypeId = res.entryTypeId;\n this.sectionId = res.sectionId;\n this.entryInfo = res;\n\n resolve(res);\n });\n });\n }\n /**显示条目类型信息 */\n showEntryTypeInfo: any = '';\n /**反馈子级页面信息 */\n _feedbackChildInfo(event) {\n this.showEntryTypeInfo = event?.showEntryType || '';\n }\n\n\n private _LocationBackService = inject(LocationBackService);\n private _DigniteValidatorsService = inject(DigniteValidatorsService);\n\n /**提交 */\n save() {\n const input = this.formEntity?.value;\n input.publishTime = new Date(\n new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000,\n ).toISOString();\n this.formEntity.markAllAsTouched();\n this.formValidation=true;\n\n if (!this.formEntity.valid) {\n for (const item of this.showEntryTypeInfo.fieldTabs) {\n for (const el of item.fields) {\n const info = `${this._LocalizationService.instant(\n `Cms::The{1}FieldUnderThe{0}TAB`,\n item.name,\n el.field.displayName,\n )}`;\n EntriesToFormLabelMap[el.field.name] = info;\n }\n }\n\n this._DigniteValidatorsService.getErrorMessage({\n form: this.formEntity,\n map: EntriesToFormLabelMap,\n });\n\n this.isSubmit = false;\n if (this.isOther == 1) {\n this.slugInput.disable();\n }\n this.cultureInput.disable();\n\n return;\n }\n this._EntryAdminService\n .create(input)\n .pipe(\n finalize(() => {\n this.isSubmit = false;\n }),\n )\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\n\n //检测该页面上一级是否是系统页面,如果是返回上一页,如果不是,则使用页面跳转到上一级页面。\n this._LocationBackService.backTo({\n url: `/cms/admin/entries`,\n replenish: '/create',\n });\n\n this._updateListService.updateList();\n });\n }\n isSubmit: boolean | any = false;\n /**点击提交 */\n clickSubmit(type) {\n // if (this.isSubmit) return;\n // this.isSubmit = true;\n this.draftInput.patchValue(type);\n this.cultureInput.enable();\n if (this.isOther == 1) {\n this.slugInput.enable();\n }\n this.formEntity.updateValueAndValidity();\n setTimeout(() => {\n this.submitclick.nativeElement.click();\n }, 0);\n }\n get slugInput(): FormControl {\n return this.formEntity?.get('slug') as FormControl;\n }\n\n /**返回上一页 */\n backTo() {\n this._location.back();\n }\n}\n","<abp-page [title]=\"'Cms::New'| abpLocalization\" [toolbar]=\"true\">\r\n <form class=\"row g-3 needs-validation\" [formGroup]=\"formEntity\" [class]=\"{'was-validated':formValidation}\"\r\n (submit)=\"save()\">\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n <ng-container *ngIf=\"formEntity&&sectionId\">\r\n <ng-container *ngIf=\"entryVersionId; else elseTemplate\">\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"false\"\r\n [select]=\"entryInfo\" [isCreateVersion]=\"true\" [isOther]=\"isOther\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\"\r\n [isEdit]=\"false\" [select]=\"entryInfo\" [isOther]=\"isOther\"\r\n [entity]=\"formEntity\" ></cms-create-or-edit-entries>\r\n </ng-template>\r\n </ng-container>\r\n </form>\r\n</abp-page>","/* eslint-disable @angular-eslint/component-selector */\n/* eslint-disable @angular-eslint/use-lifecycle-interface */\n\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\nimport { LocalizationService } from '@abp/ng.core';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { Location } from '@angular/common';\nimport { Component, OnInit, inject, ViewChild, ElementRef } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n// import { EntryAdminService } from '../../../proxy/admin/entries';\nimport { ECmsComponent } from '../../../enums';\nimport { DigniteValidatorsService, LocationBackService, UpdateListService } from '@dignite-ng/expand.core';\nimport { CreateOrUpdateEntryInputBase, EntriesToFormLabelMap } from './create-or-update-entry-input-base';\n// import { ValidatorsService } from '@dignite-ng/expand.core';\nimport { finalize } from 'rxjs';\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';\n// import { ClassicEditor, Essentials, Paragraph, Bold, Italic } from 'ckeditor5';\n\n@Component({\n selector: 'cms-edit',\n templateUrl: './edit.component.html',\n styleUrls: ['./edit.component.scss'],\n providers: [\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: ECmsComponent.Entries_Edit,\n },\n ],\n})\nexport class EditComponent implements OnInit {\n private fb = inject(FormBuilder);\n private _updateListService = inject(UpdateListService);\n private toaster = inject(ToasterService);\n public _location = inject(Location);\n private route = inject(ActivatedRoute);\n private _EntryAdminService = inject(EntryAdminService);\n private _LocalizationService = inject(LocalizationService);\n // private _ValidatorsService = inject(ValidatorsService);\n // private datePipe = inject(DatePipe);\n\n /**获取提交按钮替身,用于真实触发表单提交 */\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /**表单验证状态\n * {\n * title:true,\n * }\n */\n formValidation: any = '';\n /**表单实体 */\n formEntity: FormGroup | undefined;\n /**语言 */\n cultureName: string | any = '';\n /**条目类型id */\n entryTypeId: string | any = '';\n /**版块id */\n sectionId: string | any = '';\n /**条目版本id */\n entryVersionId: string | any = '';\n /**条目id */\n entrieId: string | any = '';\n /**条目信息 */\n entryInfo: any = '';\n\n /**是否草稿控件*/\n get draftInput() {\n return this.formEntity?.get('draft') as FormControl;\n }\n /**语言控件 */\n get cultureInput(): FormControl {\n return this.formEntity?.get('culture') as FormControl;\n }\n\n async ngOnInit(): Promise<void> {\n const params = this.route.snapshot.params;\n this.entrieId = params.entrieId;\n this.formEntity = this.fb.group(new CreateOrUpdateEntryInputBase());\n await this.getEntryInfo();\n this.cultureInput.patchValue(this.cultureName);\n }\n /**获取条目信息 */\n getEntryInfo() {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService.get(this.entrieId).subscribe(res => {\n this.cultureName = res.culture;\n this.entryTypeId = res.entryTypeId;\n this.sectionId = res.sectionId;\n this.entryInfo = res;\n resolve(res);\n });\n });\n }\n\n /**显示条目类型信息 */\n showEntryTypeInfo: any = '';\n /**反馈子级页面信息 */\n _feedbackChildInfo(event) {\n this.showEntryTypeInfo = event?.showEntryType || '';\n }\n // /**当返回结果为true时表示未通过验证 */\n isCheckFormCms(input, module) {\n for (const key in input) {\n if (input[key] === false) {\n let info = ``;\n //检查key中是否含有ExtraProperties.\n if (key.includes('extraProperties.')) {\n const arr = key.split('.');\n const keyName = arr[1];\n // if (keyName.includes('[')) {\n // //使用正则提取keyName中[]中的数字下标,并且转化为数字类型,并且去掉keyName中的[*]\n // const keyNameArr = keyName.match(/\\d+/g);\n // const keyNameArrNum = keyNameArr.map(item => Number(item));\n // const keyNameArrNumStr = keyNameArrNum.join('.');\n\n // } else {\n //将keyName的首字母转为小写\n const keyNameLower = keyName;\n // const keyNameLower = keyName.charAt(0).toLowerCase() + keyName.slice(1);\n if (this.showEntryTypeInfo && this.showEntryTypeInfo.fieldTabs.length > 0) {\n for (const item of this.showEntryTypeInfo.fieldTabs) {\n for (const el of item.fields) {\n if (el.field.name == keyNameLower) {\n // info = `\"${this._LocalizationService.instant(`${module}::${item.name}下的${el.field.displayName}字段`)}\"`;\n info = `${this._LocalizationService.instant(\n `${module}::The{1}FieldUnderThe{0}TAB`,\n item.name,\n el.field.displayName,\n )}`;\n }\n }\n }\n }\n // }\n } else {\n const displayName = key.charAt(0).toUpperCase() + key.slice(1);\n info = `\"${this._LocalizationService.instant(`${module}::${displayName}`)}\" `;\n \n }\n console.log('info', info,input[key]);\n info = info + this._LocalizationService.instant(`AbpValidation::ThisFieldIsNotValid.`);\n //使用abp多语言提示\n this.toaster.warn(info);\n return true;\n }\n }\n\n return false;\n }\n // /**获取表单所有字段是否通过验证 */\n // getFormValidationStatus(formEntity: FormGroup | FormArray): { [key: string]: any } {\n // const validationStatus: { [key: string]: any } = {};\n\n // // 递归遍历表单组和表单控件集合\n // const traverseForm = (form: FormGroup | FormArray, prefix = '') => {\n // if (form instanceof FormGroup) {\n // Object.keys(form.controls).forEach(key => {\n // const control = form.controls[key];\n // // const displayName = key.charAt(0).toUpperCase() + key.slice(1);\n // const displayName = key;\n // const fullKey = prefix ? `${prefix}.${displayName}` : displayName;\n // if (control instanceof FormControl) {\n // validationStatus[fullKey] = control.valid;\n // } else if (control instanceof FormArray) {\n // traverseForm(control, fullKey);\n // } else if (control instanceof FormGroup) {\n // traverseForm(control, fullKey);\n // }\n // });\n // } else if (form instanceof FormArray) {\n // form.controls.forEach((control, index) => {\n // const fullKey = prefix ? `${prefix}[${index}]` : `[${index}]`;\n // if (control instanceof FormControl) {\n // validationStatus[fullKey] = control.valid;\n // } else if (control instanceof FormArray) {\n // traverseForm(control, fullKey);\n // } else if (control instanceof FormGroup) {\n // traverseForm(control, fullKey);\n // }\n // });\n // }\n // };\n\n // traverseForm(formEntity);\n\n // return validationStatus;\n // }\n\n /**获取表单验证状态 */\n // getFormValidationStatus(formEntity: FormGroup | FormArray): { [key: string]: any } {\n // const validationStatus: { [key: string]: any } = {};\n\n // const traverseForm = (form: FormGroup | FormArray, prefix = '') => {\n // //检查form是否为FormGroup还是formArray,如果是FormGroup则继续遍历,如果是FormArray则遍历FormArray\n // if (form instanceof FormGroup) {\n \n // } else if (form instanceof FormArray) {\n \n // } \n\n // }\n // traverseForm(formEntity);\n // return validationStatus\n // }\nprivate _LocationBackService=inject(LocationBackService);\nprivate _DigniteValidatorsService=inject(DigniteValidatorsService);\n /**提交 */\n save() {\n this.cultureInput.enable();\n this.draftInput.patchValue(this.draftValue || false);\n const input = this.formEntity?.value;\n input.culture = this.cultureName;\n input.publishTime = new Date(\n new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000,\n ).toISOString();\n input.concurrencyStamp = this.entryInfo.concurrencyStamp;\n // this.formValidation = this._ValidatorsService.getFormValidationStatus(this.formEntity);\n // if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')){\n // this.isSubmit = false;\n // return this.cultureInput.disable();\n // }\n\n // this.formValidation = this.getFormValidationStatus(this.formEntity);\n // if (this.isCheckFormCms(this.formValidation, 'Cms')) {\n // this.isSubmit = false;\n // return this.cultureInput.disable();\n // }\n // this.formValidation = this.getFormValidationStatus(this.formEntity);\n // return this.isSubmit=false;\n this.formValidation=true;\n if (!this.formEntity.valid) {\n for (const item of this.showEntryTypeInfo.fieldTabs) {\n for (const el of item.fields) {\n const info = `${this._LocalizationService.instant(\n `Cms::The{1}FieldUnderThe{0}TAB`,\n item.name,\n el.field.displayName,\n )}`;\n EntriesToFormLabelMap[el.field.name]=info\n }\n }\n\n this._DigniteValidatorsService.getErrorMessage({\n form:this.formEntity,\n map:EntriesToFormLabelMap,\n });\n\n this.isSubmit = false;\n this.cultureInput.disable();\n return;\n }\n this._EntryAdminService\n .update(this.entryInfo.id, input)\n .pipe(\n finalize(() => {\n this.isSubmit = false;\n }),\n )\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\n this._LocationBackService.backTo({\n url: `/cms/admin/entries`,\n replenish: '/edit' \n })\n this._updateListService.updateList();\n });\n }\n isSubmit: boolean | any = false;\n draftValue: string | any = '';\n /**点击提交 */\n clickSubmit(type) {\n if (this.isSubmit) return;\n this.isSubmit = true;\n this.draftValue = type;\n this.cultureInput.enable();\n this.submitclick?.nativeElement?.click();\n }\n\n /**返回上一页 */\n backTo() {\n this._location.back();\n }\n}\n","<abp-page [title]=\"'Cms::Edit'| abpLocalization\" [toolbar]=\"true\">\n <form class=\"row g-3 needs-validation\"\n [class]=\"{'was-validated':formValidation}\" [formGroup]=\"formEntity\" (submit)=\"save()\" >\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <ng-container *ngIf=\"formEntity&&entryInfo\">\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"true\" [select]=\"entryInfo\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\n </ng-container>\n \n </form>\n</abp-page>\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, ElementRef, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { FieldsDataService } from '../../../services/fields-data.service';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared';\r\nimport { LocalizationService } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'cms-fields-group',\r\n templateUrl: './fields-group.component.html',\r\n styleUrl: './fields-group.component.scss',\r\n})\r\nexport class FieldsGroupComponent {\r\n constructor(\r\n private fb: FormBuilder,\r\n public _service: FieldsDataService,\r\n private confirmation: ConfirmationService,\r\n public _LocalizationService: LocalizationService,\r\n private toaster: ToasterService,\r\n ) {}\r\n\r\n /**\r\n * 选择的字段分组id\r\n */\r\n selectedGroupId: string = '';\r\n /**模态框是否开启状态 */\r\n modalOpen: boolean = false;\r\n /**模态框是否在忙碌状态 */\r\n modalBusy: boolean = false;\r\n /**存储将要修改的值 */\r\n selected: string = '';\r\n /**字段分组表单 */\r\n groupForm: FormGroup | undefined;\r\n\r\n /**表单是否触发验证 */\r\n formValidation: boolean = false;\r\n\r\n /**模态框-表单--控件模板-动态赋值表单控件 */\r\n @ViewChild('ModalFormSubmit', { static: false }) ModalFormSubmit: ElementRef;\r\n\r\n /**点击分组回调 */\r\n @Output() OnGroupClickBack = new EventEmitter();\r\n\r\n /**选择分组 */\r\n groupChangeBtn(groupId = '') {\r\n this.selectedGroupId = groupId;\r\n this.OnGroupClickBack.emit(groupId);\r\n }\r\n\r\n /**模态框状态改变 */\r\n modalVisibleChange(event) {\r\n if (!event) {\r\n this.modalOpen = event;\r\n this.modalBusy = false;\r\n this.formValidation = false;\r\n this.selected = '';\r\n this.groupForm = undefined;\r\n return;\r\n }\r\n }\r\n\r\n /**\r\n * 创建分组按钮\r\n */\r\n createGroupBtn() {\r\n this.modalOpen = true;\r\n this.groupForm = this.fb.group({\r\n name: ['', Validators.required],\r\n });\r\n }\r\n /**编辑分组按钮 */\r\n editGroupBtn(name) {\r\n this.modalOpen = true;\r\n this.selected = name;\r\n this.groupForm = this.fb.group({\r\n name: [name, Validators.required],\r\n });\r\n }\r\n\r\n /**表单提交 */\r\n save() {\r\n this.formValidation = true;\r\n if (!this.groupForm?.valid) {\r\n return;\r\n }\r\n this.modalBusy = true;\r\n if (this.selected) {\r\n // this.\r\n this._service.updateFieldGroup(this.selectedGroupId, this.groupForm.value).subscribe({\r\n next: () => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n this.modalVisibleChange(false);\r\n this._service.getfieldGroups(true);\r\n },\r\n error: e => console.error(e),\r\n complete: () => console.info('complete'),\r\n });\r\n // .subscribe(() => {\r\n // this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n // this.modalVisibleChange(false);\r\n // this._service.getfieldGroups(true);\r\n // });\r\n return;\r\n }\r\n this._service.createFieldGroup(this.groupForm.value).subscribe(async res => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n this.modalVisibleChange(false);\r\n await this._service.getfieldGroups(true);\r\n this.groupChangeBtn(res.id);\r\n });\r\n }\r\n\r\n /**删除分组 */\r\n deleteGroupBtn(fieldGroupitem: any) {\r\n this.confirmation\r\n .warn(\r\n fieldGroupitem.name,\r\n this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`),\r\n )\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status == 'confirm') {\r\n this._service.deleteFieldGroup(fieldGroupitem.id).subscribe(async () => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\r\n await this._service.getfieldGroups(true);\r\n this.groupChangeBtn();\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"card h-100 mb-0\" >\r\n <div class=\"card-header px-2 py-sm-2 d-flex justify-content-between align-items-center\">\r\n <h6 class=\"h6 mb-0\">{{'Cms::FieldGroup' | abpLocalization}}</h6>\r\n <button type=\"button\" class=\"btn btn-link btn-sm ms-2\" (click.stop)=\"createGroupBtn()\"><i class=\"fas fa-plus-circle\"\r\n aria-hidden=\"true\"></i></button>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"container-height overflow-auto\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-item-action \" [class.active]=\"selectedGroupId===''\" (click)=\"groupChangeBtn()\">{{'Cms::AllFields' | abpLocalization}}</li>\r\n <ng-container *ngFor=\"let item of _service.fieldGroupsList\">\r\n <li class=\"list-group-item list-group-item-action d-flex justify-content-between align-items-center\"\r\n [class.active]=\"selectedGroupId===item.id\" (click)=\"groupChangeBtn(item.id)\">\r\n <div>{{item.name}}</div>\r\n <div *ngIf=\"selectedGroupId===item.id\">\r\n <i class=\"fas fa-trash px-1\" role=\"button\" (click.stop)=\"deleteGroupBtn(item)\"></i>\r\n <i class=\"fas fa-edit px-1\" role=\"button\" (click.stop)=\"editGroupBtn(item.name)\"></i>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<abp-modal [(visible)]=\"modalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"modalVisibleChange($event)\">\r\n <ng-template #abpHeader>\r\n <h3>{{(selected?'AbpUi::Edit':'Cms::New') | abpLocalization}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <form *ngIf=\"groupForm; else loaderRef\" [formGroup]=\"groupForm\" [class]=\"{'was-validated':formValidation}\" (submit)=\"save()\">\r\n <div class=\"mb-3\">\r\n <label for=\"exampleFormControlInput1\" class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleFormControlInput1\" formControlName=\"name\"\r\n placeholder=\"\">\r\n </div>\r\n <button type=\"submit\" #ModalFormSubmit style=\"display: none\"></button>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"createForm?.invalid\" [loading]=\"modalBusy\" (click)=\"ModalFormSubmit?.nativeElement?.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { Component, OnInit} from '@angular/core';\r\nimport { ECmsComponent } from '../../../enums';\r\nimport { FieldsDataService } from '../../../services/fields-data.service';\r\nimport {\r\n ListService,\r\n LIST_QUERY_DEBOUNCE_TIME,\r\n LocalizationService,\r\n PagedResultDto,\r\n ABP,\r\n} from '@abp/ng.core';\r\nimport { ToasterService, ConfirmationService, Confirmation } from '@abp/ng.theme.shared';\r\nimport { Router } from '@angular/router';\r\nimport { UpdateListService } from '@dignite-ng/expand.core';\r\nimport { FieldDto, GetFieldsInput } from '../../../proxy/dignite/cms/admin/fields';\r\n\r\n@Component({\r\n selector: 'cms-fields',\r\n templateUrl: './fields.component.html',\r\n styleUrl: './fields.component.scss',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: ECmsComponent.Fields,\r\n },\r\n // [Required]\r\n ListService,\r\n // [Optional]\r\n // Provide this token if you want a different debounce time.\r\n // Default is 300. Cannot be 0. Any value below 100 is not recommended.\r\n { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 50 },\r\n ],\r\n})\r\nexport class FieldsComponent implements OnInit {\r\n constructor(\r\n public readonly list: ListService,\r\n private _service: FieldsDataService,\r\n private toaster: ToasterService,\r\n private confirmation: ConfirmationService,\r\n private _LocalizationService: LocalizationService,\r\n private router: Router,\r\n private _UpdateListService: UpdateListService,\r\n ) {}\r\n async ngOnInit(): Promise<void> {\r\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\r\n //Add 'implements OnInit' to the class.\r\n await Promise.all([this._service.getfieldGroups(), this._service.getControlsfieldTypes()]);\r\n this.hookToQuery();\r\n console.log(this.list,'1111');\r\n\r\n this._UpdateListService.updateListEvent.subscribe(() => {\r\n this.getData();\r\n });\r\n }\r\n\r\n\r\n /**表格数据 */\r\n data: PagedResultDto<FieldDto> = {\r\n items: [],\r\n totalCount: 0,\r\n };\r\n\r\n /**过滤器 */\r\n filters = {} as GetFieldsInput;\r\n\r\n /**使用abp的list获取表格的字段数据列表 */\r\n hookToQuery() {\r\n const getData = (query: ABP.PageQueryParams) =>\r\n this._service.getFieldsList({\r\n ...query,\r\n ...this.filters,\r\n });\r\n const setData = (list: PagedResultDto<FieldDto>) => {\r\n this.data = list;\r\n this.scrollToTop();\r\n };\r\n this.list.hookToQuery(getData).subscribe(setData);\r\n }\r\n /**获取表格数据 */\r\n getData() {\r\n this.data.items = [];\r\n this.data.totalCount = 0;\r\n // this.list.page=0;\r\n this.list.get();\r\n }\r\n /**重置 */\r\n reset() {\r\n this.filters = {} as GetFieldsInput;\r\n this.getData();\r\n }\r\n \r\n\r\n /**回到页面顶部 */\r\n scrollToTop() {\r\n const scrollContainer = document.getElementsByClassName('lpx-scroll-container')[0];\r\n (scrollContainer || window).scrollTo(0, 0);\r\n }\r\n\r\n /**点击字段分组回调 */\r\n onGroupClickBack(groupId: string) {\r\n this.filters.groupId = groupId;\r\n this.getData();\r\n }\r\n\r\n /**删除字段 */\r\n deletefield(row: any) {\r\n this.confirmation\r\n .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status == 'confirm') {\r\n this._service.deleteField(row.id).subscribe(() => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\r\n this.getData();\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**新建字段按钮 */\r\n toFieldsCreateBtn() {\r\n this.router.navigate(['/cms/admin/fields/create'], {\r\n queryParams: {\r\n groupId: this.filters.groupId,\r\n },\r\n });\r\n }\r\n /**编辑字段按钮 */\r\n editfieldBtn(row: any) {\r\n this.router.navigate(['/cms/admin/fields/' + row.id + '/edit'], {});\r\n }\r\n}\r\n","<abp-page [title]=\"'Cms::Fields' | abpLocalization\" [toolbar]=\"true\">\r\n <div class=\"row\" style=\"min-height: calc(100vh - 42px - 54px - 1.25em - 1.25em);\">\r\n <div class=\"col-md-3 mb-2\">\r\n <cms-fields-group (OnGroupClickBack)=\"onGroupClickBack($event)\"></cms-fields-group>\r\n </div>\r\n <div class=\"col-md-9 mb-2\">\r\n <div class=\"card mb-0\">\r\n <div class=\"card-header px-2 py-sm-2 border-bottom\">\r\n <div class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\r\n [placeholder]=\"'AbpUi::Search' | abpLocalization\" >\r\n <button class=\"btn btn-primary px-3\" type=\"button\" id=\"button-addon2\"\r\n (click)=\"list.get()\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <abp-extensible-table [data]=\"data?.items\" [recordsTotal]=\"data?.totalCount\"\r\n [list]=\"list\">\r\n </abp-extensible-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>","import { FormGroup, Validators } from \"@angular/forms\";\r\n\r\nexport class FieldsFormConfig {\r\n /**分组id */\r\n groupId: Validators[] = [''];\r\n\r\n /**字段名称 Display name of this field */\r\n displayName: Validators[] = ['', [Validators.required]];\r\n\r\n /**字段唯一名称 Unique Name*/\r\n name: Validators[] = ['', [Validators.required]];\r\n\r\n /**描述 说明 */\r\n description: Validators[] = ['', []];\r\n\r\n /**FieldType字段类型 表单控件名称 */\r\n formControlName: Validators[] = ['', [Validators.required]];\r\n\r\n /**动态表单配置 */\r\n formConfiguration: FormGroup | undefined = new FormGroup({});\r\n\r\n}\r\n\r\n/**\r\n * 字段名称与表单控件名称映射\r\n */\r\n// export enum fieldToFormLabelMap{\r\n// /**分组id */\r\n// groupId = 'Cms::FieldGroup',\r\n// displayName = 'AbpDynamicForm::FieldDisplayName',\r\n// name = 'AbpDynamicForm::FieldName',\r\n// description='Cms::Description',\r\n// // Text='AbpDynamicForm::SelectListItemText',\r\n// // Value='AbpDynamicForm::SelectListItemValue',\r\n// 'Select.Options'=\"AbpDynamicForm::SelectListItem\",\r\n// 'Select.Options-Text'=\"AbpDynamicForm::SelectListItemText\",\r\n// 'Select.Options-Value'=\"AbpDynamicForm::SelectListItemValue\",\r\n \r\n// }\r\nexport const fieldToFormLabelMap:any={\r\n /**分组id */\r\n groupId : 'Cms::FieldGroup',\r\n displayName : 'AbpDynamicForm::FieldDisplayName',\r\n name : 'AbpDynamicForm::FieldName',\r\n description:'Cms::Description',\r\n 'Select.Options':\"AbpDynamicForm::SelectListItem\",\r\n 'Select.Options-Text':\"AbpDynamicForm::SelectListItemText\",\r\n 'Select.Options-Value':\"AbpDynamicForm::SelectListItemValue\",\r\n \"TableColumns\":'AbpDynamicForm::SelectListItem',\r\n \"TableColumns-displayName\":'Cms::TableColumnDisplayName',\r\n \"TableColumns-name\":'Cms::TableColumnName',\r\n \"TableColumns-formControlName\":'Cms::TableColumnForm',\r\n \"MatrixBlockTypes\":\"Cms::MatrixBlockType\",\r\n \"fields\":'Cms::Fields',\r\n \"MatrixBlockTypes-fields-displayName\":'AbpDynamicForm::FieldDisplayName',\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport { AfterContentInit, Component, ElementRef, Input, ViewChild } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, ValidationErrors } from '@angular/forms';\r\nimport { ToPinyinService } from '@dignite-ng/expand.core';\r\nimport { Observable } from 'rxjs';\r\nimport { LocalizationService } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'cms-create-or-edit-field',\r\n templateUrl: './create-or-edit-field.component.html',\r\n styleUrl: './create-or-edit-field.component.scss',\r\n})\r\nexport class CreateOrEditFieldComponent implements AfterContentInit {\r\n constructor(private _ToPinyinService: ToPinyinService,private _LocalizationService:LocalizationService) {}\r\n\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v;\r\n }\r\n\r\n @Input() public service: any;\r\n\r\n formEntity: FormGroup | undefined;\r\n @Input()\r\n public set form(v: FormGroup | undefined) {\r\n this.formEntity = v;\r\n }\r\n\r\n\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n this.getfieldGroupsList = await this.service.getfieldGroups();\r\n this.fromControlList = await this.service.getControlsfieldTypes();\r\n this.nameInput.addAsyncValidators([this.repetitionAsyncValidator()])\r\n if(!this.formControlNameInput.value&&this.fromControlList.length>0){\r\n this.formControlNameInput.patchValue(this.fromControlList[0].name)\r\n }\r\n this.submitclick.nativeElement.click()\r\n }\r\n\r\n /**字段分组列表 */\r\n getfieldGroupsList: any[] = [];\r\n /**表单控件列表 */\r\n fromControlList: any[] = [];\r\n\r\n get nameInput() {\r\n return this.formEntity?.get('name') as FormControl;\r\n }\r\n get formControlNameInput() {\r\n return this.formEntity?.get('formControlName') as FormControl;\r\n }\r\n\r\n /**获取提交按钮替身,用于真实触发表单提交 */\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n /**字段标签input失去标点生成字段名字 */\r\n disPlayNameInputBlur(event) {\r\n const value = event.target.value;\r\n const pinyin = this._ToPinyinService.get(value);\r\n const nameInput = this.nameInput;\r\n if (nameInput.value) return;\r\n nameInput.patchValue(pinyin);\r\n }\r\n\r\n /**异步验证,验证别名 */\r\n repetitionAsyncValidator() {\r\n return (\r\n ctrl: AbstractControl,\r\n ): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {\r\n return new Promise(resolve => {\r\n if (ctrl.value == this._selected?.name || !ctrl.value) {\r\n resolve(null);\r\n return;\r\n }\r\n this.service.nameExists(ctrl.value).subscribe(res => {\r\n if (res) {\r\n resolve({\r\n repetition: this._LocalizationService.instant(\r\n `Cms::FieldName{0}AlreadyExist`,\r\n ctrl.value,\r\n ),\r\n });\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n });\r\n };\r\n }\r\n}\r\n","<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formEntity\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"groupId\">{{'Cms::FieldGroup' | abpLocalization}}</label>\r\n <select class=\"form-select\" formControlName=\"groupId\">\r\n <option value=\"\">{{'Cms::OptionalGrouping' | abpLocalization}}</option>\r\n <ng-container *ngFor=\"let item of getfieldGroupsList\">\r\n <option [value]=\"item.id\">{{item.name}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"displayName\">*{{'AbpDynamicForm::FieldDisplayName' |\r\n abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\" required\r\n (blur)=\"disPlayNameInputBlur($event)\">\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"name\">*{{'AbpDynamicForm::FieldName' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" required>\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"nameInput.errors?.repetition\">\r\n {{nameInput.errors?.repetition}}\r\n </div>\r\n <small class=\"form-text text-muted d-block \">{{'AbpDynamicForm::FieldNameHelpText' |\r\n abpLocalization}}</small>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"formControlName\">*{{'Cms::FieldType' | abpLocalization}}</label>\r\n <select class=\"form-select\" formControlName=\"formControlName\">\r\n <ng-container *ngFor=\"let item of fromControlList;let i =index\">\r\n <option [value]=\"item.name\">{{item.displayName|abpLocalization}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n @if(formControlNameInput.value&&formEntity){\r\n <df-dynamic-config [formGroup]=\"formEntity\" [selected]=\"_selected\" [type]=\"formControlNameInput.value\"\r\n [form]=\"formEntity\"></df-dynamic-config>\r\n }\r\n <button form-type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n </form>\r\n </div>\r\n</div>","/* eslint-disable @typescript-eslint/no-inferrable-types */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { ECmsComponent } from '../../../enums';\r\nimport { LocalizationService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport {\r\n DigniteValidatorsService,\r\n LocationBackService,\r\n UpdateListService,\r\n} from '@dignite-ng/expand.core';\r\nimport { FieldsFormConfig, fieldToFormLabelMap } from './fields-form-config';\r\nimport { FieldsDataService } from '../../../services/fields-data.service';\r\n\r\n@Component({\r\n selector: 'cms-create-field',\r\n templateUrl: './create-field.component.html',\r\n styleUrl: './create-field.component.scss',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: ECmsComponent.FieldsCreate,\r\n },\r\n ],\r\n})\r\nexport class CreateFieldComponent implements OnInit {\r\n constructor(\r\n private fb: FormBuilder,\r\n public _service: FieldsDataService,\r\n private toaster: ToasterService,\r\n public _LocationBackService: LocationBackService,\r\n public _LocalizationService: LocalizationService,\r\n private route: ActivatedRoute,\r\n private _UpdateListService: UpdateListService,\r\n private _DigniteValidatorsService: DigniteValidatorsService,\r\n ) {}\r\n\r\n async ngOnInit(): Promise<void> {\r\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\r\n //Add 'implements OnInit' to the class.\r\n const { groupId } = this.route.snapshot.queryParams;\r\n this.formEntity = this.fb.group(new FieldsFormConfig());\r\n if (groupId) {\r\n this.groupIdInput.patchValue(groupId);\r\n }\r\n }\r\n\r\n /**表单实体 */\r\n formEntity: FormGroup | undefined;\r\n\r\n /**表单是否触发验证 */\r\n formValidation: boolean = false;\r\n\r\n /**是否提交 */\r\n isSubmitted: boolean = false;\r\n\r\n /**获取提交按钮替身,用于真实触发表单提交 */\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n /**字段分组控件 */\r\n get groupIdInput() {\r\n return this.formEntity?.get('groupId') as FormControl;\r\n }\r\n\r\n /**提交表单 */\r\n save() {\r\n console.log(this.formEntity.value, '提交表单', this.formEntity);\r\n this.formValidation = true;\r\n if (!this.formEntity.valid) {\r\n this._DigniteValidatorsService.getErrorMessage({\r\n form:this.formEntity,\r\n map:fieldToFormLabelMap\r\n });\r\n return;\r\n }\r\n if (this.isSubmitted) return;\r\n this.isSubmitted = true;\r\n const input = this.formEntity.value;\r\n this._service.createField(input).subscribe(\r\n () => {\r\n this.reset();\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n // this._LocationBackService.back();\r\n this._LocationBackService.backTo({\r\n url: `/cms/admin/fields`,\r\n replenish: '/create',\r\n });\r\n this._UpdateListService.updateList();\r\n },\r\n () => {\r\n this.reset();\r\n },\r\n );\r\n }\r\n /**重置表单 */\r\n reset() {\r\n this.isSubmitted = false;\r\n }\r\n}\r\n","<abp-page [title]=\"'Cms::CreateField' | abpLocalization\" [toolbar]=\"true\">\r\n <form [formGroup]=\"formEntity\" [class.was-validated]=\"formValidation\" (submit)=\"save()\">\r\n <button form-type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n <cms-create-or-edit-field [service]=\"_service\" [form]=\"formEntity\"></cms-create-or-edit-field>\r\n </form>\r\n</abp-page>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { Component, ElementRef, ViewChild, OnInit } from '@angular/core';\r\nimport { ECmsComponent } from '../../../enums';\r\nimport { LocalizationService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { FormBuilder, FormGroup, FormControl } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport {\r\n LocationBackService,\r\n UpdateListService,\r\n DigniteValidatorsService,\r\n} from '@dignite-ng/expand.core';\r\nimport { FieldsDataService } from '../../../services/fields-data.service';\r\nimport { FieldsFormConfig, fieldToFormLabelMap } from './fields-form-config';\r\n\r\n@Component({\r\n selector: 'cms-edit-field',\r\n templateUrl: './edit-field.component.html',\r\n styleUrl: './edit-field.component.scss',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: ECmsComponent.FieldsEdit,\r\n },\r\n ],\r\n})\r\nexport class EditFieldComponent implements OnInit {\r\n constructor(\r\n private fb: FormBuilder,\r\n public _service: FieldsDataService,\r\n private toaster: ToasterService,\r\n public _LocationBackService: LocationBackService,\r\n public _LocalizationService: LocalizationService,\r\n private route: ActivatedRoute,\r\n private _UpdateListService: UpdateListService,\r\n private _DigniteValidatorsService: DigniteValidatorsService,\r\n ) {}\r\n\r\n async ngOnInit(): Promise<void> {\r\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\r\n //Add 'implements OnInit' to the class.\r\n const { id } = this.route.snapshot.params;\r\n this.formEntity = this.fb.group(new FieldsFormConfig());\r\n await this.getFieldDetails(id);\r\n if (this.fieldDetail) {\r\n this.formEntity.patchValue({\r\n ...this.fieldDetail,\r\n groupId: this.fieldDetail.groupId || '',\r\n });\r\n }\r\n }\r\n\r\n /**获取字段详情 */\r\n getFieldDetails(id: string) {\r\n return new Promise((resolve, reject) => {\r\n this._service.getFieldDetail(id).subscribe(\r\n res => {\r\n this.fieldDetail = res;\r\n resolve(res);\r\n },\r\n err => {\r\n resolve('');\r\n },\r\n );\r\n });\r\n }\r\n\r\n /**字段详情 */\r\n fieldDetail: any = '';\r\n\r\n /*\r\n /**表单实体 */\r\n formEntity: FormGroup | undefined;\r\n\r\n /**表单是否触发验证 */\r\n formValidation = false;\r\n\r\n /**是否提交 */\r\n isSubmitted = false;\r\n\r\n /**获取提交按钮替身,用于真实触发表单提交 */\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n /**字段分组控件 */\r\n get groupIdInput() {\r\n return this.formEntity?.get('groupId') as FormControl;\r\n }\r\n \r\n // 获取错误信息\r\n getErrorMessage(error: any,map:any): string {\r\n // 获取本地化标签\r\n const getLocalizedLabel = (path: string) => {\r\n return this._LocalizationService.instant(map[path as keyof typeof map]);\r\n };\r\n \r\n // 格式化数组索引\r\n const formatArrayIndex = (item: string) => {\r\n const regex = /\\[[0-9]+\\]/g;\r\n const indexMatch = item.match(regex);\r\n const [basePath] = item.split(regex);\r\n return getLocalizedLabel(basePath) + (indexMatch ? indexMatch[0] : '');\r\n };\r\n \r\n let errorMessage = '';\r\n // 如果错误路径包含formConfiguration\r\n if (error.path.includes('formConfiguration')) {\r\n // 将错误路径中的formConfiguration-替换掉,并按-分割\r\n const pathParts = error.path.replaceAll('formConfiguration-', '').split('-');\r\n // 对分割后的路径进行格式化\r\n const formattedParts = pathParts.map((part, index) => {\r\n // 如果是最后一个路径且不是第一个路径\r\n if (index === pathParts.length - 1 && index > 0) {\r\n // 获取前一个路径\r\n const prevPart = pathParts[index - 1];\r\n // 将前一个路径按数组索引分割\r\n const [prevBasePath] = prevPart.split(/\\[[0-9]+\\]/);\r\n // 将当前路径按数组索引分割\r\n const [currentBasePath] = part.split(/\\[[0-9]+\\]/);\r\n // 组合前一个路径和当前路径\r\n const combinedKey = `${prevBasePath}-${currentBasePath}`;\r\n \r\n // 如果map中存在组合后的路径,则返回本地化标签,否则返回格式化后的数组索引\r\n return map[combinedKey as keyof typeof map]\r\n ? getLocalizedLabel(combinedKey)\r\n : formatArrayIndex(part);\r\n }\r\n // 否则返回格式化后的数组索引\r\n return formatArrayIndex(part);\r\n });\r\n console.log(formattedParts, 'formattedParts',pathParts);\r\n // 将格式化后的路径用-连接起来\r\n errorMessage = formattedParts.join('-');\r\n } else {\r\n // 否则返回本地化标签\r\n errorMessage = getLocalizedLabel(error.path);\r\n }\r\n \r\n // 添加错误信息\r\n errorMessage = `${errorMessage} ${this._LocalizationService.instant('AbpValidation::ThisFieldIsNotValid.')}`;\r\n // 显示警告信息\r\n this.toaster.warn(errorMessage);\r\n return errorMessage;\r\n }\r\n\r\n /**提交表单 */\r\n save() {\r\n console.log(this.formEntity.value, '提交表单', this.formEntity);\r\n\r\n this.formValidation = true;\r\n if (!this.formEntity.valid) {\r\n this._DigniteValidatorsService.getErrorMessage({\r\n form:this.formEntity,\r\n map:fieldToFormLabelMap\r\n });\r\n return;\r\n }\r\n if (this.isSubmitted) return;\r\n this.isSubmitted = true;\r\n const input = this.formEntity.value;\r\n this._service.updateField(this.fieldDetail.id, input).subscribe({\r\n next: () => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n // this._LocationBackService.back();\r\n this._LocationBackService.backTo({\r\n url: `/cms/admin/fields`,\r\n replenish: '/edit',\r\n });\r\n this._UpdateListService.updateList();\r\n },\r\n complete: () => {\r\n this.reset();\r\n },\r\n });\r\n }\r\n /**重置表单 */\r\n reset() {\r\n this.isSubmitted = false;\r\n }\r\n}\r\n","<abp-page [title]=\"'Cms::EditField' | abpLocalization\" [toolbar]=\"true\">\r\n <form [formGroup]=\"formEntity\" [class.was-validated]=\"formValidation\" (submit)=\"save()\">\r\n <button form-type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n @if(fieldDetail){\r\n <cms-create-or-edit-field [selected]=\"fieldDetail\" [service]=\"_service\" [form]=\"formEntity\"></cms-create-or-edit-field>\r\n }\r\n </form>\r\n</abp-page>","export * from './fields.component'\r\nexport * from './fields-group.component'\r\nexport * from './create-field.component'\r\nexport * from './create-or-edit-field.component'\r\nexport * from './edit-field.component'\r\n// export * from './create-or-update-field-input-base'","\r\nimport {Validators } from \"@angular/forms\";\r\n\r\nexport class CreateOrUpdateSectionsInputBase {\r\n id: string | Validators[] = [''];\r\n /**版块类型 */\r\n type: any = [0, [Validators.required]];\r\n /**字段名称 Display name of this field */\r\n displayName: any = ['', [Validators.required]];\r\n /**字段唯一名称 Unique Name*/\r\n name: any = ['', [Validators.required]];\r\n /**条目路由 */\r\n route: any = ['', [Validators.required]];\r\n /**页面模板 */\r\n template: any = ['', [Validators.required]];\r\n /**是否默认 */\r\n isDefault: any = [false, []];\r\n /**是否激活 */\r\n isActive: any = [true, []];\r\n concurrencyStamp: string | Validators[] = [''];\r\n\r\n constructor() {}\r\n}","/* eslint-disable @angular-eslint/component-selector */\r\nimport { LocalizationService } from '@abp/ng.core';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { ValidatorsService, UpdateListService } from '@dignite-ng/expand.core';\r\nimport { finalize, Observable } from 'rxjs';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { SectionAdminService } from '../../../proxy/dignite/cms/admin/sections';\r\nimport { SectionType, sectionTypeOptions } from '../../../proxy/dignite/cms/sections';\r\nimport { ToPinyinService } from '@dignite-ng/expand.core';\r\n\r\n@Component({\r\n selector: 'cms-create-or-edit-sections-modal',\r\n templateUrl: './create-or-edit-sections-modal.component.html',\r\n styleUrl: './create-or-edit-sections-modal.component.scss',\r\n})\r\nexport class CreateOrEditSectionsModalComponent {\r\n private _LocalizationService = inject(LocalizationService);\r\n private toaster = inject(ToasterService);\r\n private _ValidatorsService = inject(ValidatorsService);\r\n private _UpdateListService = inject(UpdateListService);\r\n private _SectionAdminService = inject(SectionAdminService);\r\n\r\n constructor(\r\n private toPinyinService:ToPinyinService\r\n ) {}\r\n\r\n /**重置表单 */\r\n\r\n _SectionType = SectionType;\r\n _sectionTypeOptions = sectionTypeOptions;\r\n /**表单验证状态 */\r\n formValidation: any = '';\r\n \r\n /**模态框-状态-是否打开 */\r\n ModalOpen: boolean|any = false;\r\n @Input()\r\n public set visible(v: boolean) {\r\n this.ModalOpen = v;\r\n }\r\n\r\n /**模态框-繁忙状态-用于确定模态的繁忙状态是否为真 */\r\n ModalBusy: boolean|any = false;\r\n /**初始值 */\r\n selected: any = '';\r\n /**模态框-表单 */\r\n ModalForm: FormGroup | undefined;\r\n @Input()\r\n public set formEntity(v: FormGroup | undefined) {\r\n this.ModalForm = v;\r\n if (v) {\r\n this.selected = v?.value;\r\n this.setAsyncValidatorsFn();\r\n }\r\n }\r\n get idInput() {\r\n return this.ModalForm?.get('id') as FormControl;\r\n }\r\n get displayNameInput() {\r\n return this.ModalForm.get('displayName') as FormControl;\r\n }\r\n get nameInput() {\r\n return this.ModalForm.get('name') as FormControl;\r\n }\r\n get routeInput() {\r\n return this.ModalForm.get('route') as FormControl;\r\n }\r\n get templateInput() {\r\n return this.ModalForm.get('template') as FormControl;\r\n }\r\n get typeInput() {\r\n return this.ModalForm.get('type') as FormControl;\r\n }\r\n radiochange() {\r\n this.routeInput.patchValue(this.routeInput.value);\r\n }\r\n\r\n /**模态框-表单--控件模板-动态赋值表单控件 */\r\n @ViewChild('ModalFormSubmit', { static: false }) ModalFormSubmit: ElementRef;\r\n @Output() visibleChange = new EventEmitter();\r\n /**模态框-状态改变回调 */\r\n ModalVisibleChange(event) {\r\n this.ModalOpen = event;\r\n this.formValidation='';\r\n this.ModalForm=undefined;\r\n this.visibleChange.emit(event);\r\n if (!event) {\r\n return;\r\n }\r\n }\r\n /**保存 */\r\n save() {\r\n this.formValidation = this._ValidatorsService.getFormValidationStatus(this.ModalForm);\r\n if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')) return;\r\n\r\n if (this.ModalBusy) return;\r\n this.ModalBusy = true;\r\n if (!this.ModalForm.valid) return;\r\n const input = this.ModalForm.value;\r\n if (this.idInput.value) {\r\n this._SectionAdminService\r\n .update(this.idInput.value, input)\r\n .pipe(\r\n finalize(() => {\r\n this.reset();\r\n })\r\n )\r\n .subscribe(() => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n this.visibleChange.emit(false);\r\n this.formValidation='';\r\n });\r\n return;\r\n }\r\n this._SectionAdminService\r\n .create(input)\r\n .pipe(\r\n finalize(() => {\r\n this.reset();\r\n })\r\n )\r\n .subscribe(() => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n this.visibleChange.emit(false);\r\n this.formValidation='';\r\n });\r\n }\r\n reset(){\r\n this.ModalBusy = false;\r\n this._UpdateListService.updateList();\r\n }\r\n\r\n disPlayNameInputBlur(event) {\r\n const value = event.target.value;\r\n const pinyin = this.toPinyinService.get(value);\r\n const nameInput = this.nameInput;\r\n const routeInput = this.routeInput;\r\n const templateInput = this.templateInput;\r\n if (nameInput.value) return;\r\n nameInput.patchValue(pinyin);\r\n if (routeInput.value) return;\r\n routeInput.patchValue(pinyin + (this.typeInput.value === 0 ? '' : '/{slug}'));\r\n if (templateInput.value) return;\r\n templateInput.patchValue(pinyin + '/index');\r\n }\r\n\r\n setAsyncValidatorsFn() {\r\n this.ModalForm?.setControl(\r\n 'name',\r\n new FormControl(this.nameInput.value || '', {\r\n validators: Validators.required,\r\n asyncValidators: this.nameRepetitionAsyncValidator(),\r\n })\r\n );\r\n this.ModalForm?.setControl(\r\n 'route',\r\n new FormControl(this.routeInput.value || '', {\r\n validators: [Validators.required, this.forbiddenNameValidator()],\r\n asyncValidators: [this.routeRepetitionAsyncValidator()],\r\n updateOn: 'change',\r\n })\r\n );\r\n }\r\n forbiddenNameValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const inputValue = control.value.toLocaleLowerCase();\r\n const forbidden =\r\n this.typeInput.value == 0 ? false : inputValue.includes('{slug}') ? false : true;\r\n return forbidden\r\n ? {\r\n repetition: this._LocalizationService.instant(\r\n `Cms::RouteVerificationTips`,\r\n this._LocalizationService.instant(\r\n `Cms::Enum:SectionType:` + SectionType[this.typeInput.value]\r\n ),\r\n '{slug}'\r\n ),\r\n }\r\n : null;\r\n };\r\n }\r\n nameRepetitionAsyncValidator() {\r\n return (\r\n ctrl: AbstractControl\r\n ): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {\r\n return new Promise(resolve => {\r\n const subslug = this.ModalForm?.get('name');\r\n\r\n if (subslug.value == this.selected?.name) {\r\n resolve(null);\r\n return;\r\n }\r\n this._SectionAdminService.nameExists({ name: subslug.value }).subscribe(res => {\r\n if (res) {\r\n resolve({\r\n repetition: this._LocalizationService.instant(\r\n `Cms::SectionName{0}AlreadyExist`,\r\n ctrl.value\r\n ),\r\n });\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n });\r\n };\r\n }\r\n routeRepetitionAsyncValidator() {\r\n return (\r\n ctrl: AbstractControl\r\n ): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {\r\n return new Promise(resolve => {\r\n const subslug = this.ModalForm?.get('route').value;\r\n if (subslug == this.selected?.route) {\r\n resolve(null);\r\n return;\r\n }\r\n this._SectionAdminService.routeExists({ route: subslug }).subscribe(res => {\r\n if (res) {\r\n resolve({\r\n repetition: this._LocalizationService.instant(\r\n `Cms::SectionRoute{0}AlreadyExist`,\r\n ctrl.value\r\n ),\r\n });\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n });\r\n };\r\n }\r\n}\r\n","<abp-modal [(visible)]=\"ModalOpen\" [busy]=\"ModalBusy\" (visibleChange)=\"ModalVisibleChange($event)\">\r\n <ng-template #abpHeader>\r\n <h3>{{selected?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <ng-container *ngIf=\"ModalForm; else loaderRef\">\r\n <form class=\"sites-modal-form\" [formGroup]=\"ModalForm\" \r\n [class]=\"{'was-validated':formValidation}\" (submit)=\"save()\">\r\n <button type=\"submit\" #ModalFormSubmit style=\"display: none\"></button>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::EntryType' | abpLocalization}}</label>\r\n <div>\r\n <ng-container *ngFor=\"let item of _sectionTypeOptions;let i =index\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"radio\" [value]=\"item.value\"\r\n (change)=\"radiochange()\" formControlName=\"type\" id=\"flexRadioDefault{{i}}\">\r\n <label class=\"form-check-label\" for=\"flexRadioDefault{{i}}\">\r\n {{ 'Cms::Enum:SectionType:'+item.key | abpLocalization }}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\r\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"nameInput.errors?.repetition\">\r\n {{nameInput.errors?.repetition}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Route' | abpLocalization}} </label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"route\" placeholder=\"\" />\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"routeInput.errors?.repetition\">\r\n {{routeInput.errors?.repetition}}\r\n </div>\r\n <small class=\"form-text text-muted d-block\">\r\n {{'Cms::RouteTips' | abpLocalization}}<br>\r\n &nbsp;&nbsp;blog<br>\r\n &nbsp;&nbsp;{{'blog/{slug}'}}<br>\r\n &nbsp;&nbsp;{{'blog/{publishTime:yyyy}/{publishTime:MM}/{slug}'}}\r\n </small>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Template' | abpLocalization}} </label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"template\" placeholder=\"\" />\r\n <small class=\"form-text text-muted d-block\">\r\n {{\"Cms::TemplateTips\" | abpLocalization}}\r\n </small>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isDefault\"\r\n id=\"isDefault\" />\r\n <label class=\"form-check-label\" for=\"isDefault\"> {{'Cms::Default' | abpLocalization}} </label>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isActive\"\r\n id=\"isActive\" />\r\n <label class=\"form-check-label\" for=\"isActive\"> {{'Cms::IsActive' | abpLocalization}}</label>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" type=\"button\" [loading]=\"ModalBusy\" [disabled]=\"ModalBusy\"\r\n (click)=\"ModalFormSubmit?.nativeElement?.click()\">{{'AbpUi::Save'|abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>","/* eslint-disable @angular-eslint/component-selector */\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\nimport {\n ABP,\n LIST_QUERY_DEBOUNCE_TIME,\n ListService,\n LocalizationService,\n PagedResultDto,\n} from '@abp/ng.core';\nimport { Component, OnInit, inject } from '@angular/core';\nimport { ECmsComponent } from '../../../enums';\nimport { ToasterService, ConfirmationService, Confirmation } from '@abp/ng.theme.shared';\nimport {\n FormBuilder,\n FormGroup,\n} from '@angular/forms';\nimport { UpdateListService } from '@dignite-ng/expand.core';\n\nimport { ColumnMode } from '@swimlane/ngx-datatable';\nimport { finalize } from 'rxjs';\nimport { CreateOrUpdateSectionsInputBase } from './create-or-update-sections-input-base';\nimport { EntryTypeAdminService, GetSectionsInput, SectionAdminService, SectionDto } from '../../../proxy/dignite/cms/admin/sections';\nimport { SectionType, sectionTypeOptions } from '../../../proxy/dignite/cms/sections';\n\n@Component({\n selector: 'cms-sections',\n templateUrl: './sections.component.html',\n styleUrls: ['./sections.component.scss'],\n providers: [\n // [Required]\n ListService,\n // [Optional]\n // Provide this token if you want a different debounce time.\n // Default is 300. Cannot be 0. Any value below 100 is not recommended.\n { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: ECmsComponent.Sections,\n },\n ],\n})\nexport class SectionsComponent implements OnInit {\n constructor(\n public readonly list: ListService,\n private _SectionAdminService: SectionAdminService,\n private toaster: ToasterService,\n private confirmation: ConfirmationService,\n private fb: FormBuilder,\n public _EntryTypeAdminService: EntryTypeAdminService,\n public _LocalizationService: LocalizationService,\n ) {}\n private _UpdateListService = inject(UpdateListService);\n siteList: any[] = [];\n _SectionType = SectionType;\n _sectionTypeOptions = sectionTypeOptions;\n ColumnMode = ColumnMode;\n data: PagedResultDto<SectionDto> = { items: [], totalCount: 0 };\n filters = {} as GetSectionsInput;\n hookToQuery() {\n const getData = (query: ABP.PageQueryParams) =>\n this._SectionAdminService.getList({ ...query, ...this.filters });\n const setData = (list: PagedResultDto<SectionDto>) => {\n this.data = list;\n this.scrollToTop();\n };\n this.list.hookToQuery(getData).subscribe(setData);\n }\n scrollToTop() {\n const scrollContainer = document.getElementsByClassName('lpx-scroll-container')[0];\n (scrollContainer || window).scrollTo(0, 0);\n }\n async ngOnInit(): Promise<void> {\n this.hookToQuery();\n this._UpdateListService.updateListEvent.subscribe(() => {\n this.list.get();\n });\n }\n siteIdChange() {\n this.list.page = 0;\n this.list.get();\n }\n\n /**表单 */\n formEntity: FormGroup | undefined;\n /**弹窗状态 */\n isVisibleOpen: boolean|any = false;\n /**弹窗回调 */\n visibleChange(event) {\n this.isVisibleOpen = event;\n if (!event) {\n this.formEntity = undefined;\n }\n }\n /**创建 */\n createBtn() {\n this.formEntity = this.fb.group(new CreateOrUpdateSectionsInputBase());\n this.isVisibleOpen = true;\n }\n /**编辑 */\n editSectionBtn(item) {\n this.formEntity = this.fb.group(new CreateOrUpdateSectionsInputBase());\n this.formEntity.patchValue({\n ...item,\n });\n this.isVisibleOpen = true;\n }\n\n /**删除板块 */\n deletefield(row) {\n this.confirmation\n .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))\n .subscribe((status: Confirmation.Status) => {\n if (status == 'confirm') {\n this._SectionAdminService\n .delete(row.id)\n .pipe(finalize(() => {}))\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\n this.list.get();\n });\n }\n });\n }\n /**删除条目类型 */\n deleteEntryType(row) {\n this.confirmation\n .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))\n .subscribe((status: Confirmation.Status) => {\n if (status == 'confirm') {\n this._EntryTypeAdminService\n .delete(row.id)\n .pipe(finalize(() => {}))\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\n this.list.get();\n });\n }\n });\n }\n\n}\n","<abp-page [title]=\"'Cms::Sections' | abpLocalization\" [toolbar]=\"true\">\n <div class=\"sections-page\">\n <div class=\"card \" >\n <div class=\"card-body px-2 py-sm-2 border-bottom\">\n <div class=\"row align-items-end\">\n <div class=\"mb-3 col-md-3\">\n <label class=\"form-label\">{{'Cms::IsActive' | abpLocalization}}:</label>\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.isActive\" (change)=\"siteIdChange()\">\n <option [value]=\"''\" >--</option>\n <option [value]=\"true\">{{'AbpUi::Yes'|abpLocalization}}</option>\n <option [value]=\"false\">{{'AbpUi::No'|abpLocalization}}</option>\n </select>\n </div>\n <div class=\"mb-3 col-md-3\">\n <label class=\"form-label\">{{'AbpUi::Search' | abpLocalization}}:</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\n [placeholder]=\"'AbpUi::Search' | abpLocalization\" />\n </div>\n <div class=\"mb-3 col-md-4\">\n <button class=\"btn btn-primary px-3\" type=\"button\" id=\"button-addon2\" (click)=\"list.get()\">\n <i class=\"fa fa-search\"></i>\n </button>\n </div>\n </div> \n </div>\n </div>\n <div class=\"card mb-0\">\n <div class=\"card-body p-0\">\n <div class=\"table-responsive table-fixed-header\">\n <ngx-datatable class=\"material \" [rows]=\"data.items\" [list]=\"list\"\n [columnMode]=\"ColumnMode.force\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [scrollbarH]=\"true\">\n <ngx-datatable-column [name]=\"'Cms::DisplayName' | abpLocalization\" prop=\"displayName\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::Name' | abpLocalization\" prop=\"name\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::SectionType' | abpLocalization\" prop=\"type\" [width]=\"80\" [sortable]=\"false\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{('Cms::Enum:SectionType:'+_SectionType[value]) | abpLocalization}}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::IsDefault' | abpLocalization\" prop=\"isDefault\" [width]=\"60\" [sortable]=\"false\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <i class=\"fas fa-check text-success\" *ngIf=\"value\"></i>\n <i class=\"fas fa-times text-danger\" *ngIf=\"!value\"></i>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::IsActive' | abpLocalization\" prop=\"isActive\" [width]=\"60\" [sortable]=\"false\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <i class=\"fas fa-check text-success\" *ngIf=\"value\"></i>\n <i class=\"fas fa-times text-danger\" *ngIf=\"!value\"></i>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"SiteId\" [width]=\"100\" [sortable]=\"false\"> \n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <div ngbDropdown container=\"body\">\n <button type=\"button\" class=\"btn btn-link\" ngbDropdownToggle id=\"dropdownBasic1\">\n {{'Cms::EntryType' | abpLocalization}}\n </button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <ng-container *ngFor=\"let item of row.entryTypes;let i =index\">\n <li ngbDropdownItem\n class=\"d-flex align-items-center justify-content-between\" [routerLink]=\"'/cms/admin/sections/'+row.id+'/entry-types/'+item.id+'/edit'\"\n >{{item.displayName}}\n <button class=\"btn btn-light btn-sm p-0\"\n (click.stop)=\"deleteEntryType(item)\"><i class=\"fas fa-trash p-sm-1\"\n style=\"font-size: 12px;\" role=\"button\"></i></button>\n </li>\n </ng-container>\n <li ngbDropdownItem [routerLink]=\"'/cms/admin/sections/'+row.id+'/entry-types/create'\"><i\n class=\"fas fa-plus-circle me-2\"></i>{{'Cms::New' |\n abpLocalization}}</li>\n </div>\n </div>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::CreationTime' | abpLocalization\" prop=\"creationTime\" [minWidth]=\"190\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | shortDateTime }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [sortable]=\"false\" [name]=\"'AbpUi::Actions' | abpLocalization\" [frozenLeft]=\"true\" [width]=\"110\" [maxWidth]=\"110\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <div ngbDropdown container=\"body\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\n </button>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"editSectionBtn(row)\">{{'AbpUi::Edit' |\n abpLocalization}}</button>\n <button ngbDropdownItem (click)=\"deletefield(row)\">{{'AbpUi::Delete' |\n abpLocalization}}</button>\n </div>\n </div>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n </div>\n </div>\n </div>\n</abp-page>\n<cms-create-or-edit-sections-modal (visibleChange)=\"visibleChange($event)\" [formEntity]=\"formEntity\" [visible]=\"isVisibleOpen\"></cms-create-or-edit-sections-modal>\n","import { FormArray, Validators } from \"@angular/forms\";\r\n\r\nexport class CreateOrEditEntryTypeInputBase {\r\n /**显示名称 Display name of this field */\r\n displayName: any = ['', [Validators.required]];\r\n\r\n /**名称 Unique Name*/\r\n name: any = ['', [Validators.required]];\r\n /**条目路由 */\r\n fieldTabs: any = new FormArray([])\r\n \r\n \r\n}\r\nexport class fieldTabsBase {\r\n /**名称 Unique Name*/\r\n name: any = ['', [Validators.required]];\r\n fields?: any = [[], []]\r\n}\r\nexport class fieldsBase {\r\n /**字段id Unique Name*/\r\n fieldId: any = ['', [Validators.required]];\r\n /**显示名称 Unique Name*/\r\n displayName: any = ['', [Validators.required]];\r\n // /**必填 Unique Name*/\r\n // required: any = [false, []];\r\n // /**是否在列表中显示 Unique Name*/\r\n // showInList: any = [false, []];\r\n // /**是否启用搜索 */\r\n // enableSearch: any = [false, []];\r\n}\r\n\r\n\r\n","/* eslint-disable no-prototype-builtins */\n/* eslint-disable @angular-eslint/component-selector */\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\nimport { LocalizationService } from '@abp/ng.core';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { Component, ElementRef, inject, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n CreateOrEditEntryTypeInputBase,\n fieldTabsBase,\n fieldsBase,\n} from './create-or-edit.-entry-type-input-base';\nimport { ECmsComponent } from '../../../../enums';\nimport { ValidatorsService } from '@dignite-ng/expand.core';\nimport { finalize } from 'rxjs';\nimport {\n FieldAdminService,\n FieldGroupAdminService,\n} from '../../../../proxy/dignite/cms/admin/fields';\nimport { EntryTypeAdminService } from '../../../../proxy/dignite/cms/admin/sections';\nimport { FormControlsService } from '../../../../services/form-controls.service';\n\nimport { ToPinyinService, LocationBackService, UpdateListService } from '@dignite-ng/expand.core';\n\n@Component({\n selector: 'cms-create-or-edit',\n templateUrl: './create-or-edit.component.html',\n styleUrls: ['./create-or-edit.component.scss'],\n providers: [\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: ECmsComponent.SectionsCreateOrEdit,\n },\n ],\n})\nexport class CreateOrEditComponent implements OnInit {\n constructor(\n private toaster: ToasterService,\n public _LocationBackService: LocationBackService,\n private route: ActivatedRoute,\n public _FieldGroupAdminService: FieldGroupAdminService,\n public _FieldAdminService: FieldAdminService,\n public _EntryTypeAdminService: EntryTypeAdminService,\n public _LocalizationService: LocalizationService,\n public _FormControlsService: FormControlsService,\n private toPinyinService:ToPinyinService\n ) {}\n private fb = inject(FormBuilder);\n private _UpdateListService = inject(UpdateListService);\n /**表单实体 */\n newEntity: FormGroup | any;\n /**版块id */\n sectionId: string | any = '';\n /**条目类型id */\n entryTypesId: string | any = '';\n /**条目类型详情 */\n entryTypesSelect: any;\n\n /**是否全选 */\n isAllSelect={\n isRequired:false,\n isShowInList:false,\n isEnableSearch:false\n };\n\n get fieldTabs() {\n return this.newEntity?.get('fieldTabs') as FormArray;\n }\n\n /**获取提交按钮替身,用于真实触发表单提交 */\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /**触发提交按钮 */\n submitclickBtn() {\n this.submitclick.nativeElement.click();\n }\n\n /**需要查询的动态表单类型 */\n enableSearchTypeList: any[] = [];\n /**不需要展示的动态表单类型 */\n disableshowinTypeList: any[] = [];\n async ngOnInit() {\n const sectionId = this.route.snapshot.params.sectionsId;\n //条目类型id\n this.entryTypesId = this.route.snapshot.params.entryTypesId || '';\n //板块id\n this.sectionId = sectionId;\n this.newEntity = this.fb.group(new CreateOrEditEntryTypeInputBase());\n \n //获取条目类型详情\n if(this.entryTypesId){\n await this.getEntryTypes();\n }\n //获取字段分组\n await this.getFieldGroup();\n //处理数据\n this.processData();\n }\n /**处理数据 */\n processData() {\n return new Promise((resolve, rejects) => {\n const fieldList: any = structuredClone(this.fieldList);\n const res = this.entryTypesSelect;\n if (!res) {\n this.addControlToFieldTabs();\n }else{\n res.fieldTabs.forEach(el => {\n this.addControlToFieldTabs();\n el.fields.forEach((eld: any) => {\n eld.id = eld.fieldId;\n eld.groupId = fieldList.find(elfd => elfd.id == eld.fieldId).groupId;\n this.formRightGroup.push(eld);\n const fieldindex = fieldList.findIndex(elfl => elfl.id == eld.fieldId);\n fieldList.splice(fieldindex, 1);\n });\n });\n \n this.fieldGroupList.forEach((el: any, index) => {\n el.fields = fieldList.filter(els => els.groupId === el.id);\n });\n this.newEntity?.patchValue(res);\n this.navActive = 0;\n this.resultSource = res.fieldTabs;\n\n this.setAllSelectStauts();\n\n console.log(this.isAllSelect,'this.isAllSelect',res.fieldTabs,this.navActive);\n }\n resolve(true);\n });\n }\n /**设置全选状态 */\n setAllSelectStauts(){\n this.isAllSelect.isRequired= this.resultSource[this.navActive].fields.every(eld=>eld.required);\n this.isAllSelect.isShowInList= this.resultSource[this.navActive].fields.every(eld=>eld.showInList);\n this.isAllSelect.isEnableSearch= this.resultSource[this.navActive].fields.every(eld=>eld.enableSearch);\n }\n\n /**给fieldTabs添加新控件 */\n addControlToFieldTabs(nameValue = '') {\n const newFormGroup = this.fb.group(new fieldTabsBase());\n newFormGroup\n .get('name')\n ?.patchValue(\n this.fieldTabs.length === 0\n ? this._LocalizationService.instant(`Cms::FieldTab`)\n : nameValue,\n );\n this.fieldTabs.push(newFormGroup);\n this.resultSource.push(newFormGroup.value);\n this.navActive = this.resultSource.length - 1;\n }\n\n /**获取字段分组 */\n getFieldGroup() {\n return new Promise((resolve, rejects) => {\n this._FieldGroupAdminService.getList({}).subscribe(async res => {\n const fieldList: any = await this.getFieldList();\n const fieldGroupList: any = res.items;\n fieldGroupList.unshift({\n id: null,\n name: 'UngroupedFields',\n });\n fieldGroupList.forEach((el: any, index) => {\n el.fields = fieldList.filter(els => els.groupId === el.id);\n });\n this.fieldGroupList = fieldGroupList;\n this.fieldList = structuredClone(fieldList);\n resolve(res);\n });\n });\n }\n /**获取条目类型详情 */\n getEntryTypes() {\n return new Promise((resolve, rejects) => {\n this._EntryTypeAdminService.get(this.entryTypesId).subscribe(res => {\n this.entryTypesSelect = res;\n resolve(res);\n });\n });\n }\n \n /**\n *\n * @param nameValue 获取所有字段\n */\n getFieldList() {\n return new Promise((resolve, rejects) => {\n this._FieldAdminService\n .getList({\n maxResultCount: 1000,\n })\n .subscribe((res: any) => {\n res.items.forEach(el => {\n el.required = false;\n el.showInList = false;\n el.enableSearch = false;\n });\n resolve(res.items);\n });\n });\n }\n\n /**\n * 拖拽 功能*/\n /**数据源 */\n /**数据源-字段分组数据-包含字段数据 fields */\n fieldGroupList: any[] = [];\n /**数据源-所有字段列表 */\n fieldList: any[] = [];\n /**数据源拖拽的分组下标 */\n DataSourceGroupIndex: number | any;\n /**数据源拖拽的字段下标 */\n DataSourceFieldIndex: number | any;\n /**目标源 结果*/\n resultSource: any[] = [];\n\n /**从数据源拖拽的元素 */\n fromDataSourceDragEl: any;\n /**从目标源拖拽的元素 */\n fromResultSourceDragEl: any;\n\n /**来自数据源的集合,用于从目标源拖回数据源时的判断,与取值 */\n formRightGroup: any[] = [];\n /**从数据源开始拖拽 */\n fromDataSourceDragStart(element, fieldIndex, groupIndex) {\n this.fromDataSourceDragEl = element;\n this.DataSourceFieldIndex = fieldIndex;\n this.DataSourceGroupIndex = groupIndex;\n this.fromResultSourceDragEl = undefined;\n }\n /**从目标源开始拖拽 */\n fromResultSourceDragStart(element) {\n this.fromResultSourceDragEl = element;\n this.fromDataSourceDragEl = undefined;\n this.DataSourceFieldIndex = undefined;\n this.DataSourceGroupIndex = undefined;\n }\n /**拖拽到数据源时触发 */\n dragToDataSourceDropped() {\n //从数据源拖拽到数据源-排序\n if (this.fromDataSourceDragEl) {\n /* empty */\n }\n const _fromResultSourceDragEl = this.fromResultSourceDragEl;\n const formRightGroup = structuredClone(this.formRightGroup);\n const fieldList = structuredClone(this.fieldList);\n\n if (_fromResultSourceDragEl) {\n //移动\n //从目标源拖拽到数据源\n // 拖拽目标源的下标\n const dragResultSourceIndex = this.resultSource[this.navActive].fields.findIndex(\n el => el.id == _fromResultSourceDragEl.id,\n );\n //删除目标源中的数据\n this.resultSource[this.navActive].fields.splice(dragResultSourceIndex, 1);\n formRightGroup.splice(\n formRightGroup.findIndex(el => el.id == _fromResultSourceDragEl.id),\n 1,\n );\n this.fieldGroupList.forEach(el => {\n if (el.id == _fromResultSourceDragEl.groupId) {\n const elFieldsAll = fieldList.filter(els => els.groupId === el.id);\n el.fields = elFieldsAll.filter(\n item => !formRightGroup.some(itemB => item.id === itemB.id),\n );\n }\n });\n this.formRightGroup = formRightGroup;\n }\n\n this.setfieldTabsFrom();\n this.setAllSelectStauts();\n }\n /**拖拽到目标源时触发\n *\n */\n dragToResultSourceDropped(fieldTabstem: any, fieldTabsIndex) {\n const _fromDataSourceDragEl = this.fromDataSourceDragEl;\n //从数据源拖拽到目标源\n if (_fromDataSourceDragEl) {\n this.fieldGroupList[this.DataSourceGroupIndex || 0].fields.splice(\n this.DataSourceFieldIndex,\n 1,\n );\n this.resultSource[fieldTabsIndex].fields.push(_fromDataSourceDragEl);\n this.formRightGroup.push(_fromDataSourceDragEl);\n }\n\n this.setfieldTabsFrom();\n this.setAllSelectStauts();\n }\n /** 从目标源拖拽到目标源*/\n dragToResultSourceItemDropped(fieldsIndex) {\n const _fromResultSourceDragEl = this.fromResultSourceDragEl;\n if (_fromResultSourceDragEl) {\n // 拖拽目标源的下标\n const dragResultSourceIndex = this.resultSource[this.navActive].fields.findIndex(\n el => el.id == _fromResultSourceDragEl.id,\n );\n //删除目标源中的数据\n this.resultSource[this.navActive].fields.splice(dragResultSourceIndex, 1);\n this.resultSource[this.navActive].fields.splice(fieldsIndex, 0, _fromResultSourceDragEl);\n }\n this.setfieldTabsFrom();\n this.setAllSelectStauts();\n }\n /**设置formA表单 */\n setfieldTabsFrom() {\n const setArray: any[] = [];\n this.resultSource.forEach(el => {\n const fieldsArray: any[] = [];\n el.fields.forEach(item => {\n fieldsArray.push({\n fieldId: item.id || item.fieldId,\n displayName: item.displayName,\n required: item?.required,\n showInList: item?.showInList,\n enableSearch: item?.enableSearch,\n });\n });\n setArray.push({\n name: el.name,\n fields: fieldsArray,\n });\n });\n this.newEntity?.patchValue({\n fieldTabs: setArray,\n });\n }\n private _ValidatorsService = inject(ValidatorsService);\n /**表单验证状态\n * {\n * title:true,\n * }\n */\n formValidation: any = '';\n isSubmit: boolean | any = false;\n /**保存表单 */\n save() {\n if (this.isSubmit) return;\n this.isSubmit = true;\n const input = this.newEntity?.value;\n\n this.formValidation = this._ValidatorsService.getFormValidationStatus(this.newEntity);\n if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms'))\n return (this.isSubmit = false);\n\n if (this.entryTypesSelect) {\n this._EntryTypeAdminService\n .update(this.entryTypesSelect.id, input)\n .pipe(\n finalize(() => {\n this.isSubmit = false;\n }),\n )\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`Cms::SavedSuccessfully`));\n // this._location.back();\n this._LocationBackService.backTo({\n url: `/cms/admin/fields`,\n replenish: '/edit' \n })\n \n this._UpdateListService.updateList();\n });\n return;\n }\n input.sectionId = this.sectionId;\n this._EntryTypeAdminService\n .create(input)\n .pipe(\n finalize(() => {\n this.isSubmit = false;\n }),\n )\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`Cms::SavedSuccessfully`));\n // this._location.back();\n this._LocationBackService.backTo({\n url: `/cms/admin/sections`,\n replenish: '/create' \n })\n this._UpdateListService.updateList();\n });\n }\n /**编辑Tabs表单 */\n editFieldTabsFrom: FormGroup;\n /**模态框状态 */\n visibleTabsOpen: boolean | any = false;\n /**是否是忙碌状态 */\n modalBusy: boolean | any = false;\n /**正在编辑的tabs */\n editFieldTabsSelect: any;\n /**正在选中的nav */\n navActive: any = 0;\n\n /**表单控件模板-动态赋值表单控件 */\n @ViewChild('editFieldTabsModalSubmitBtn', { static: false })\n editFieldTabsModalSubmitBtn: ElementRef;\n\n /**模态框状态改变回调 */\n VisibleTabsChange(event) {\n if (!event) {\n this.editFieldTabsSelect = '';\n this.formValidation = '';\n return;\n }\n }\n /**新建增加FieldTabs */\n addFieldTabs() {\n this.editFieldTabsSelect = '';\n this.editFieldTabsFrom = this.fb.group(new fieldTabsBase());\n this.visibleTabsOpen = true;\n }\n /**正在编辑的tab下标 */\n newEditFieldTabsIndex: number | any;\n /**编辑FieldTabs */\n editFieldTabs(item, i) {\n this.editFieldTabsFrom = this.fb.group(new fieldTabsBase());\n this.editFieldTabsFrom.patchValue({\n name: item.name,\n });\n this.editFieldTabsSelect = item;\n this.visibleTabsOpen = true;\n this.newEditFieldTabsIndex = i;\n }\n\n /**保存编辑tabs表单 */\n editFieldTabsSave() {\n if (!this.editFieldTabsFrom.value.name) {\n return;\n }\n //编辑\n if (this.editFieldTabsSelect) {\n this.resultSource[this.newEditFieldTabsIndex].name = this.editFieldTabsFrom.value.name;\n this.navActive = this.newEditFieldTabsIndex;\n } else {\n //新建\n this.addControlToFieldTabs(this.editFieldTabsFrom.value.name);\n }\n this.visibleTabsOpen = false;\n this.VisibleTabsChange(false);\n this.setfieldTabsFrom();\n }\n /**删除某个tabs表单 */\n deleteFieldTabs(index) {\n this.deleteTabFieldGroupList(this.resultSource[index].fields);\n // return\n this.fieldTabs.removeAt(index);\n this.resultSource.splice(index, 1);\n if(this.navActive===index){\n this.navActive = 0;\n }\n if(this.navActive>index){\n this.navActive = this.navActive-1;\n }\n }\n\n /**删除tab标签后还原 fieldGroupList */\n deleteTabFieldGroupList(deleteFields) {\n //原数据\n const fieldList=structuredClone(this.fieldList);\n //右侧手风琴数据\n const formRightGroup=structuredClone(this.formRightGroup);\n\n // 获取要删除的原数据\n const deleteFieldList = fieldList.filter(el=>deleteFields.map(item => item.id).includes(el.id)) ;\n deleteFieldList.forEach(item=>{\n const index=formRightGroup.findIndex(el=>el.id===item.id);\n formRightGroup.splice(\n index,\n 1,\n );\n })\n \n const deleteFieldListGroupIds=deleteFieldList.map(item=>item.groupId);\n this.fieldGroupList.forEach(el => {\n if ( deleteFieldListGroupIds.includes(el.id)) {\n const elFieldsAll = fieldList.filter(els => els.groupId === el.id);\n el.fields = elFieldsAll.filter(\n item => !formRightGroup.some(itemB => item.id === itemB.id),\n );\n }\n });\n this.formRightGroup=formRightGroup;\n\n this.setfieldTabsFrom();\n }\n\n /**编辑字段模态框状态 */\n visibleEditFieldOpen: boolean | any = false;\n /**编辑字段模态框表单 */\n editFieldFrom: FormGroup;\n /**表单控件模板-动态赋值表单控件-编辑字段 */\n @ViewChild('editFieldModalSubmitBtn', { static: false }) editFieldModalSubmitBtn: ElementRef;\n /**正在编辑的字段下标 */\n EditFieldIndex: number | any;\n /**编辑字段模态框状态状态改变回调 */\n VisibleEditFieldChange(event) {\n if (!event) {\n this.EditFieldIndex = undefined;\n return;\n }\n }\n isShowInList: boolean | any = true;\n isEnableSearch: boolean | any = true;\n /**打开编辑字段模态框 */\n EditFieldModalOpen(items, elIndex) {\n this.visibleEditFieldOpen = true;\n this.EditFieldIndex = elIndex;\n this.editFieldFrom = this.fb.group(new fieldsBase());\n const fieldsOptions = this.fieldTabs.value[this.navActive].fields[elIndex];\n // this.isShowInList = !this.disableshowinTypeList.includes(fieldsOptions.field.formControlName);\n // this.isEnableSearch = this.enableSearchTypeList.includes(fieldsOptions.field.formControlName);\n this.editFieldFrom.patchValue(fieldsOptions);\n // this.disableshowinTypeList\n }\n /**保存编辑字段 */\n editFieldSave() {\n const input = this.editFieldFrom.value;\n this.resultSource[this.navActive].fields[this.EditFieldIndex].displayName = input.displayName;\n this.visibleEditFieldOpen = false;\n this.setfieldTabsFrom();\n }\n\n /**点击“字段布局”复选框事件 */\n checkboxChange(event,input) {\n const {checked,name}=event.target;\n const {index}=input;\n this.resultSource[this.navActive].fields[index][name]=checked;\n this.setfieldTabsFrom();\n this.setAllSelectStauts();\n // console.log(event.target,'点击“字段布局”复选框事件 ',event,input,'resultSource',this.resultSource,'newEntity',this.newEntity);\n }\n\n /**全选状态改变 */\n allSelectChange(event,name){\n const {checked}=event.target;\n this.resultSource[this.navActive].fields.forEach(el=>{\n el[name]=checked;\n })\n console.log(this.resultSource[this.navActive].fields,'this.resultSource[this.navActive].fields',name,checked);\n this.setfieldTabsFrom();\n this.setAllSelectStauts();\n }\n\n\n\n\n /**name表单控件 */\n get nameInput() {\n return this.newEntity.get('name');\n }\n /**字段标签input失去标点生成字段名字 */\n disPlayNameInputBlur(event) {\n const value = event.target.value;\n const pinyin = this.toPinyinService.get(value);\n const nameInput: any = this.nameInput;\n if (nameInput.value) return;\n nameInput.patchValue(pinyin);\n }\n}\n","<form class=\"row g-3 needs-validation\" [formGroup]=\"newEntity\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"save()\">\n <abp-page [title]=\"entryTypesId ? ('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)\"\n [toolbar]=\"true\">\n <div class=\"create-or-edit-entry-type-page\">\n <div class=\"card\">\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <div class=\"card-body\">\n <div class=\"\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n </div>\n <div formArrayName=\"fieldTabs\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::FieldLayout' | abpLocalization}}</label>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-sm-8 border rounded\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"navActive\" class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let item of resultSource; let i = index\">\n <li [ngbNavItem]=\"i\" ngbDropdown class=\"nav-item\"\n role=\"presentation\">\n <button type=\"button\" ngbNavLink class=\"nav-link\" (click.stop)=\"setAllSelectStauts()\">\n {{ item.name }}\n <span class=\"ms-1\" (click.stop)=\"$event.stopPropagation()\"\n ngbDropdownToggle></span>\n </button>\n <div ngbDropdownMenu style=\"z-index: 999;\">\n <span ngbDropdownItem type=\"button\"\n (click.stop)=\"editFieldTabs(item,i)\">\n <i class=\"fas fa-edit\"></i>\n {{'AbpUi::Edit' | abpLocalization}}\n </span>\n <span ngbDropdownItem *ngIf=\"resultSource.length !== 1\"\n type=\"button\" (click.stop)=\"deleteFieldTabs(i)\">\n <i class=\"fas fa-trash\"></i>\n {{'AbpUi::Delete' | abpLocalization}}\n </span>\n </div>\n <ng-template ngbNavContent>\n <div class=\"p-2\" ondragover=\"event.preventDefault();\"\n (drop)=\"dragToResultSourceDropped(item,i)\"\n style=\"height: 100%;\">\n <p class=\"form-text text-muted\"\n *ngIf=\"item.fields.length === 0\">\n {{'Cms::DragAndDropFieldTips' | abpLocalization}}\n </p>\n <table class=\"table\" *ngIf=\"item.fields.length>0\">\n <thead>\n <th></th>\n <th>{{'Cms::DisplayName' | abpLocalization}}\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isRequired\" (change)=\"allSelectChange($event,'required')\" />{{'Cms::Required' | abpLocalization}}\n </div>\n \n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isShowInList\" (change)=\"allSelectChange($event,'showInList')\" />{{'Cms::ShowInList' | abpLocalization}}\n </div>\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isEnableSearch\" (change)=\"allSelectChange($event,'enableSearch')\" />{{'Cms::EnableSearch' | abpLocalization}}\n </div>\n </th>\n <th></th>\n </thead>\n <tbody>\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <tr draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\">\n <td >\n <div class=\"drag-handle d-inline\" \n cdkDragHandle>\n <span\n class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n \n <td>{{ el.displayName }}</td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.required\" name=\"required\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.showInList\" name=\"showInList\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.enableSearch\" name=\"enableSearch\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td style=\"width: 1%;\"> \n <button\n class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n\n\n <!-- <ul class=\"list-group\" style=\"height: 100%;\">\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\"\n class=\"list-group-item d-flex align-items-center justify-content-between py-1\"\n style=\"position: unset;\">\n {{ el.displayName }}\n <button class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </li>\n </ng-container>\n </ul> -->\n\n </div>\n </ng-template>\n </li>\n </ng-container>\n <li class=\"nav-item\" role=\"presentation\">\n <button type=\"button\" class=\"nav-link\"\n (click.stop)=\"addFieldTabs()\">\n <i class=\"fas fa-plus-circle\"></i>\n {{'Cms::NewTab' | abpLocalization}}\n </button>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\" class=\"mt-2 bordernNavs p-0\"></div>\n </div>\n <div class=\"col-sm-4\">\n <div ngbAccordion #accordion=\"ngbAccordion\"\n ondragover=\"event.preventDefault();\" (drop)=\"dragToDataSourceDropped()\"\n style=\"min-height: 80px;\">\n <ng-container *ngFor=\"let item of fieldGroupList; let i = index\">\n <div [ngbAccordionItem]=\"item.name\" *ngIf=\"item.fields.length > 0\">\n <h2 ngbAccordionHeader>\n <button ngbAccordionButton>{{\n ('Cms::'+item.name) | abpLocalization }}</button>\n </h2>\n <div ngbAccordionCollapse>\n <div ngbAccordionBody>\n <ng-template>\n <ul class=\"list-group\">\n <ng-container\n *ngFor=\"let el of item.fields; let ii = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromDataSourceDragStart(el,ii,i)\"\n class=\"list-group-item\">\n {{ el.displayName }}\n </li>\n </ng-container>\n </ul>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <!-- </div> -->\n </abp-page>\n\n</form>\n<!-- 用于创建编辑tab的模态框 -->\n<abp-modal [(visible)]=\"visibleTabsOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleTabsChange($event)\">\n <ng-template #abpHeader>\n <h3>{{ editFieldTabsSelect ? ('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=\"editFieldTabsFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldTabsFrom\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"editFieldTabsSave()\">\n <button type=\"submit\" #editFieldTabsModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\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\" (click)=\"editFieldTabsModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save'\n | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>\n\n<!-- 用于修改字段配置的模态框 -->\n<abp-modal [(visible)]=\"visibleEditFieldOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleEditFieldChange($event)\">\n <ng-template #abpHeader>\n <h3>{{'AbpUi::Edit' | 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=\"editFieldFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldFrom\" (submit)=\"editFieldSave()\">\n <button type=\"submit\" #editFieldModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\" placeholder=\"\" />\n </div>\n <!-- <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"required\"\n id=\"required\" />\n <label class=\"form-check-label\" for=\"required\"> {{'Cms::Required' | abpLocalization}} </label>\n </div>\n </div> -->\n <!-- @if(isShowInList){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"showInList\"\n id=\"showInList\" />\n <label class=\"form-check-label\" for=\"showInList\"> {{'Cms::ShowInList' | abpLocalization}}\n </label>\n </div>\n </div>\n }\n @if(isEnableSearch){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"enableSearch\"\n id=\"enableSearch\" />\n <label class=\"form-check-label\" for=\"enableSearch\"> {{'Cms::EnableSearch' | abpLocalization}}\n </label>\n </div>\n </div>\n } -->\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\" [disabled]=\"!editFieldFrom.valid\"\n (click)=\"editFieldModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>","\r\n\r\nexport class EntryConfig {\r\n\r\n\r\n /**多选 */\r\n 'Entry.Multiple': any = [false, []];\r\n /**占位符 */\r\n 'Entry.Placeholder': any = ['', []];\r\n /**版块id */\r\n 'Entry.SectionId': any = ['', []];\r\n\r\n \r\n}","import { AfterContentInit, ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { EntryConfig } from './entry-config';\nimport { SectionAdminService } from '../../../proxy/dignite/cms/admin/sections';\n// import { SectionAdminService } from '../../../proxy/admin/sections';\n@Component({\n selector: 'cms-entry-config',\n templateUrl: './entry-config.component.html',\n styleUrls: ['./entry-config.component.scss'],\n})\nexport class EntryConfigComponent implements AfterContentInit {\n constructor(\n private fb: FormBuilder,\n // private _SiteAdminService: SiteAdminService,\n private _SectionAdminService: SectionAdminService\n ) {}\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n if (v == this._type) return;\n\n this._type = v;\n }\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n }\n /**语言 */\n _culture: any;\n @Input()\n public set culture(v: any) {\n this._culture = v;\n }\n /**表单实体 */\n _Entity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this._Entity = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this._Entity.get('formConfiguration') as FormGroup;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /**站点列表 */\n siteList: any[any] = [];\n\n /**选择的站点id */\n // siteId: string = ''\n siteId: any = new FormControl('');\n /**站点下的版块 */\n SiteOfSectionList: any[any] = [];\n\n ngAfterContentInit(): void {\n //Called after ngOnInit when the component's or directive's content has been initialized.\n //Add 'implements AfterContentInit' to the class.\n }\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._Entity && this._type) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n AfterInit() {\n return new Promise(async (resolve, rejects) => {\n this._Entity.setControl('formConfiguration', this.fb.group(new EntryConfig()));\n // await this.getsiteList()\n await this.getSiteOfSectionList();\n if (this._selected) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n }\n resolve(true);\n });\n }\n\n /**获取站点列表 */\n // getsiteList() {\n // return new Promise((resolve, rejects) => {\n // this._SiteAdminService.getList({}).subscribe(res => {\n // this.siteList = res.items\n // this.siteId = res.items[0]?.id || ''\n // resolve(res.items)\n // })\n // })\n // }\n /**获取站点下的版块 */\n getSiteOfSectionList() {\n return new Promise((resolve, rejects) => {\n this._SectionAdminService\n .getList({\n maxResultCount: 1000,\n // siteId: this.siteId\n })\n .subscribe(res => {\n this.SiteOfSectionList = res.items;\n this.formConfiguration.patchValue({\n 'Entry.SectionId': res.items[0]?.id || '',\n });\n resolve(res.items);\n });\n });\n }\n\n /**切换站点 */\n async siteIdChange() {\n await this.getSiteOfSectionList();\n }\n}\n","<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}</label>\n <select class=\"form-select col-auto\" formControlName=\"Entry.SectionId\">\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Entry.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'Cms::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Placeholder' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Entry.Placeholder\">\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries/entry-admin.service';\nimport { EntryStatus } from '../../../proxy/dignite/cms/entries';\nimport { LocalizationService } from '@abp/ng.core';\n// import { EntryAdminService } from '../../../proxy/admin/entries';\n// import { EntryStatus } from '../../../proxy/entries/entry-status.enum';\n\n@Component({\n selector: 'cms-entry-control',\n templateUrl: './entry-control.component.html',\n styleUrls: ['./entry-control.component.scss'],\n})\nexport class EntryControlComponent {\n private fb = inject(FormBuilder);\n private _EntryAdminService = inject(EntryAdminService);\n private _LocalizationService = inject(LocalizationService);\n\n /**表单实体 */\n _entity: FormGroup | any;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n\n if (v) this.dataLoaded();\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any[]) {\n this._selected = v || [];\n }\n /**语言 */\n _culture: any;\n @Input()\n public set culture(v: any) {\n if (v) {\n this._culture = v;\n // this.dataLoaded()\n }\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n extraProperties: FormGroup | undefined;\n\n /** */\n listOfOption: any[] = [];\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._fields && this._entity && this._parentFiledName && this._culture) {\n await this.AfterInit();\n await this.getEntryAssignList();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray:any[] = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n if(!this._fields.field.formConfiguration['Entry.Multiple']){\n this.listOfSelectedValue = this._selected[0];\n }\n const newControl = this.fb.control(this._selected, ValidatorsArray);\n // newControl.addValidators(this.arrpanduan())\n const extraProperties:any = this._entity.get(this._parentFiledName) as FormGroup;\n extraProperties.setControl(this._fields.field.name, newControl);\n resolve(true);\n });\n }\n\n\n get selectInput(){\n return this._entity?.get(this._parentFiledName)?.get(this._fields.field.name) as FormControl;\n }\n listOfSelectedValue:any='';\n ModelChange(event){\n this.selectInput.patchValue(event?[event]:[]);\n }\n /**获取对应的条目 */\n getEntryAssignList(filter = '') {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService\n .getList({\n culture: this._culture,\n sectionId: this._fields.field.formConfiguration['Entry.SectionId'],\n skipCount: 0,\n maxResultCount: 1000,\n status: EntryStatus.Published,\n // filter: filter,\n })\n .subscribe((res:any) => {\n this.listOfOption = res.items;\n resolve(true);\n });\n });\n }\n\n /** */\n async SelectChange(event) {\n await this.getEntryAssignList(event);\n }\n}\n","<form [formGroup]=\"_entity\">\r\n <div [formGroupName]=\"_parentFiledName\" class=\"entry-control-page\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <ng-container *ngIf=\"_fields.field.formConfiguration['Entry.Multiple']; else elseTemplate\">\r\n <nz-select class=\"form-select dignite-form-select form-select-multiple\" [nzMaxTagCount]=\"1\"\r\n nzMode=\"multiple\"\r\n [nzPlaceHolder]=\"_fields.field.formConfiguration['Entry.Placeholder']\"\r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\"\r\n [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\r\n <nz-option *ngFor=\"let item of listOfOption\" [nzLabel]=\"item.slug\" [nzValue]=\"item.id\"></nz-option>\r\n </nz-select>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <nz-select class=\"form-select dignite-form-select form-select-multiple\" \r\n [nzPlaceHolder]=\"_fields.field.formConfiguration['Entry.Placeholder']\"\r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\"\r\n [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\r\n <nz-option *ngFor=\"let item of listOfOption\" [nzLabel]=\"item.slug\" [nzValue]=\"item.id\"></nz-option>\r\n </nz-select>\r\n </ng-template>\r\n <small class=\"form-text text-muted d-block\"\r\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\r\n </div>\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input } from '@angular/core';\r\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';\r\n\r\n@Component({\r\n selector: 'cms-entry-view',\r\n templateUrl: './entry-view.component.html',\r\n styleUrl: './entry-view.component.scss',\r\n})\r\nexport class EntryViewComponent {\r\n constructor(private _EntryAdminService: EntryAdminService) {}\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList: boolean|any = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n \r\n if (this.type && this._value) {\r\n \r\n if (Array.isArray(this._value)) {\r\n this.showValue = await this.getListByIds(this._value);\r\n } else {\r\n this.showValue = this._value;\r\n }\r\n }\r\n }\r\n\r\n /**获取条目详情 */\r\n getListByIds(ids: any[]) {\r\n return new Promise((resolve, reject) => {\r\n this._EntryAdminService\r\n .getListByIds(this.fields.field.formConfiguration['Entry.SectionId'], ids)\r\n .subscribe((res: any) => {\r\n const result = res.items\r\n .map((item: any) => {\r\n return item.title;\r\n })\r\n .join(',');\r\n resolve(result);\r\n });\r\n });\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue}}\r\n} @else{\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue}}\r\n </div>\r\n </div>\r\n}","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries/entry-admin.service';\r\nimport { EntryStatus } from '../../../proxy/dignite/cms/entries';\r\n\r\n@Component({\r\n selector: 'cms-entry-search',\r\n templateUrl: './entry-search.component.html',\r\n styleUrl: './entry-search.component.scss',\r\n})\r\nexport class EntrySearchComponent {\r\n constructor() {}\r\n private fb = inject(FormBuilder);\r\n private _EntryAdminService = inject(EntryAdminService);\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | any;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n\r\n if (v) this.dataLoaded();\r\n }\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n // /**父级字段名称,用于为表单设置控件赋值 */\r\n // _selected: any;\r\n // @Input()\r\n // public set selected(v: any) {\r\n // this._selected = v || [];\r\n // }\r\n /**语言 */\r\n _culture: any;\r\n @Input()\r\n public set culture(v: any) {\r\n if (v) {\r\n this._culture = v;\r\n // this.dataLoaded()\r\n }\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n extraProperties: FormGroup | undefined;\r\n\r\n /** */\r\n listOfOption: any[] = [];\r\n private cdr = inject(ChangeDetectorRef);\r\n async dataLoaded() {\r\n if (this._fields && this._entity && this._parentFiledName && this._culture) {\r\n await this.AfterInit();\r\n await this.getEntryAssignList();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n const ValidatorsArray: any[] = [];\r\n // if (this._fields.required) {\r\n // ValidatorsArray.push(Validators.required);\r\n // }\r\n // if (!this._fields.field.formConfiguration['Entry.Multiple']) {\r\n // this.listOfSelectedValue = this._selected[0];\r\n // }\r\n const newControl = this.fb.control([], ValidatorsArray);\r\n const extraProperties: any = this._entity.get(this._parentFiledName) as FormGroup;\r\n extraProperties.setControl(this._fields.field.name, newControl);\r\n\r\n resolve(true);\r\n });\r\n }\r\n get selectInput() {\r\n return this._entity?.get(this._parentFiledName)?.get(this._fields.field.name) as FormControl;\r\n }\r\n listOfSelectedValue: any = '';\r\n ModelChange(event) {\r\n this.selectInput.patchValue(event?[event]:'');\r\n }\r\n\r\n /**获取对应的条目 */\r\n getEntryAssignList(filter = '') {\r\n return new Promise((resolve, rejects) => {\r\n this._EntryAdminService\r\n .getList({\r\n culture: this._culture,\r\n sectionId: this._fields.field.formConfiguration['Entry.SectionId'],\r\n skipCount: 0,\r\n maxResultCount: 1000,\r\n status: EntryStatus.Published,\r\n // filter: filter,\r\n })\r\n .subscribe((res: any) => {\r\n this.listOfOption = res.items;\r\n resolve(true);\r\n });\r\n });\r\n }\r\n\r\n /** */\r\n async SelectChange(event) {\r\n await this.getEntryAssignList(event);\r\n }\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div [formGroupName]=\"_parentFiledName\" class=\"entry-control-page\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <ng-container *ngIf=\"_fields.field.formConfiguration['Entry.Multiple']; else elseTemplate\">\r\n <nz-select class=\"form-select dignite-form-select form-select-multiple\" [nzMaxTagCount]=\"1\"\r\n nzMode=\"multiple\"\r\n [nzPlaceHolder]=\"_fields.field.formConfiguration['Entry.Placeholder']\"\r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\"\r\n [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\r\n <nz-option *ngFor=\"let item of listOfOption\" [nzLabel]=\"item.slug\" [nzValue]=\"item.id\"></nz-option>\r\n </nz-select>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <nz-select class=\"form-select dignite-form-select form-select-multiple\" \r\n \r\n [nzPlaceHolder]=\"_fields.field.formConfiguration['Entry.Placeholder']\"\r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\"\r\n [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\r\n <nz-option *ngFor=\"let item of listOfOption\" [nzLabel]=\"item.slug\" [nzValue]=\"item.id\"></nz-option>\r\n </nz-select>\r\n </ng-template>\r\n <!-- <small class=\"form-text text-muted d-block\"\r\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small> -->\r\n </div>\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","import { FormArray, FormGroup, Validators } from \"@angular/forms\";\r\n\r\nexport class MatrixConfig {\r\n // 矩阵类型\r\n 'MatrixBlockTypes': any = new FormArray([])\r\n}\r\nexport class MatrixItemConfig {\r\n \r\n displayName: any = ['', [Validators.required]];\r\n /**字段名字 */\r\n name: any = ['', [Validators.required]];\r\n}\r\n\r\n\r\n\r\nexport class matrixFieldInputBase {\r\n\r\n\r\n /**字段名称 Display name of this field */\r\n displayName: any = ['', [Validators.required]];\r\n /**字段唯一名称 Unique Name*/\r\n name: any = ['', [Validators.required]];\r\n /**描述 说明 */\r\n description: any = ['', []];\r\n /**FieldType字段类型 表单控件名称 */\r\n formControlName: any = ['TextEdit', [Validators.required]];\r\n /**动态表单配置 */\r\n formConfiguration: FormGroup | undefined = new FormGroup({})\r\n\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Converts all keys of an object to lowercase.\r\n * 将对象所有建转化为小写\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class KeysConvertToLowercaseService {\r\n\r\n /**\r\n * 递归将对象属性名首字母转为小写\r\n * @param obj 需要处理的对象或数组\r\n * @param isInsideFormConfig 标记是否在 FormConfiguration 内部\r\n * @returns 处理后的新对象\r\n */\r\n get(obj: any, isInsideFormConfig = false): any {\r\n \r\n if (Array.isArray(obj)) {\r\n return obj.map(item => this.get(item, isInsideFormConfig));\r\n } else if (typeof obj === 'object' && obj !== null) {\r\n return Object.keys(obj).reduce((acc, key) => {\r\n // 判断当前层级是否在 FormConfiguration 内部\r\n const currentIsInsideFormConfig = isInsideFormConfig|| key === 'MatrixBlockTypes'||key==='TableColumns'||key.includes('.');\r\n // 如果在 FormConfiguration 内部,保留原字段名\r\n const newKey = currentIsInsideFormConfig ? key : key.charAt(0).toLowerCase() + key.slice(1);\r\n // 递归处理子属性,并传递是否在 FormConfiguration 内部的状态\r\n acc[newKey] = this.get(obj[key], key === 'FormConfiguration');\r\n return acc;\r\n }, {} as Record<string, any>);\r\n }\r\n return obj;\r\n }\r\n}\r\n","/* eslint-disable no-async-promise-executor */\n/* eslint-disable @angular-eslint/component-selector */\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatrixConfig, MatrixItemConfig } from './matrix-config';\nimport { KeysConvertToLowercaseService, FieldsDataService } from '../../../services';\nimport { CdkDrag, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ValidatorsService } from '@dignite-ng/expand.core';\nimport { ToPinyinService } from '@dignite-ng/expand.core'\n@Component({\n selector: 'df-matrix-config',\n templateUrl: './matrix-config.component.html',\n styleUrls: ['./matrix-config.component.scss'],\n})\nexport class MatrixConfigComponent {\n constructor(\n private fb: FormBuilder,\n private _KeysConvertToLowercaseService: KeysConvertToLowercaseService,\n private _FieldsDataService: FieldsDataService,\n private toPinyinService:ToPinyinService\n ) {}\n\n /**表单控件组 */\n _FieldControlGroup: any[]=[];\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n }\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n if (v) {\n for (const key in v.formConfiguration) {\n if (Array.isArray(v.formConfiguration[key])) {\n v.formConfiguration[key] = this._KeysConvertToLowercaseService.get(v.formConfiguration[key]);\n }\n }\n this._selected = v;\n }\n }\n /**表单实体 */\n _Entity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this._Entity = v;\n this.dataLoaded();\n }\n\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._Entity && this._type) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n // this.submitclick?.nativeElement?.click();\n }\n }\n\n AfterInit() {\n return new Promise(async (resolve) => {\n this._FieldControlGroup = await this._FieldsDataService.getControlsfieldTypes();\n this._Entity.setControl('formConfiguration', this.fb.group(new MatrixConfig()));\n await this.setSelectValue();\n this.formConfiguration.patchValue(this._selected.formConfiguration);\n \n resolve(true);\n });\n }\n /**\n * 设置选择值\n * @returns void\n */\n setSelectValue() {\n return new Promise((resolve) => {\n if (this._selected && this._selected.formControlName == this._type) {\n this._selected.formConfiguration['MatrixBlockTypes'].forEach((el, index) => {\n this.addMatrixBlockTypeItem(el);\n el.fields.forEach((elf) => {\n this.addMatrixFieldItem(elf, index);\n });\n });\n resolve(true);\n }\n });\n }\n\n /**获取表单配置 */\n get formConfiguration() {\n return this._Entity.get('formConfiguration') as FormGroup;\n }\n\n /**获取表单配置下的矩阵块表单数组 */\n get MatrixBlockTypes() {\n return this.formConfiguration.controls['MatrixBlockTypes'] as FormArray;\n }\n\n /**模态框-状态 */\n matrixModalOpen: boolean | any = false;\n /**模态框-是否正在编辑 */\n isMatrixModalEdit: any = false;\n\n /**模态框-用于确定模态的繁忙状态是否为真 */\n modalBusy: boolean | any = false;\n\n /**模态框-表单 */\n matrixModalForm: FormGroup | undefined;\n\n /**表单控件模板-用于在form外提交submit */\n @ViewChild('matrixModalModalSubmit', { static: false }) matrixModalModalSubmit: ElementRef;\n\n /**矩阵块-选择的下标 */\n selectMatrixBlockIndex: any = 0;\n\n /**矩阵块-选择的矩阵下字段的下标 */\n selectMatrixFieldIndex: any = 0;\n\n /**模态框-状态改变 */\n matrixModalVisibleChange(event) {\n if (!event) {\n this.isMatrixModalEdit = false;\n this.matrixModalForm = undefined;\n return;\n }\n }\n\n /**矩阵块--新增-打开模态框 */\n addMatrixBlockType() {\n this.matrixModalForm = this.fb.group(new MatrixItemConfig());\n this.matrixModalOpen = true;\n }\n formValidation: any;\n private _ValidatorsService = inject(ValidatorsService);\n /**模态框--矩阵表单保存提交 */\n createOrEditSave() {\n const input = this.matrixModalForm.value;\n this.formValidation = this._ValidatorsService.getFormValidationStatus(this.matrixModalForm);\n if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')) return;\n if (!this.matrixModalForm.valid) return;\n if (this.isMatrixModalEdit) {\n const MatrixBlockTypesItem = this.MatrixBlockTypes.at(\n this.selectMatrixBlockIndex\n ) as FormGroup;\n MatrixBlockTypesItem.patchValue({\n ...input,\n });\n } else {\n this.addMatrixBlockTypeItem(input);\n }\n this.matrixModalOpen = false;\n this.matrixModalVisibleChange(false);\n }\n /**新增矩阵块-向数组表单中增加项 */\n addMatrixBlockTypeItem(input) {\n this.MatrixBlockTypes.push(\n new FormGroup({\n displayName: new FormControl(input.displayName, Validators.required),\n name: new FormControl(input.name, Validators.required),\n fields: new FormArray([]),\n })\n );\n }\n /**编辑矩阵块 */\n EditMatrixBlock(input) {\n this.matrixModalForm = this.fb.group(new MatrixItemConfig());\n this.matrixModalForm.patchValue({\n ...input,\n });\n this.matrixModalOpen = true;\n this.isMatrixModalEdit = true;\n \n }\n\n /**删除矩阵块 */\n DeleteMatrixBlock(index) {\n this.MatrixBlockTypes.removeAt(index);\n }\n\n /**矩阵块-选择 */\n selectMatrixBlockChange(index) {\n this.selectMatrixBlockIndex = index;\n }\n\n /**矩阵字段-新增 */\n addMatrixField() {\n this.addMatrixFieldItem('', this.selectMatrixBlockIndex);\n const MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(\n this.selectMatrixBlockIndex\n ) as FormGroup;\n const MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields') as FormArray;\n this.selectMatrixFieldChange(0, MatrixFieldItemForm.length - 1);\n }\n /**矩阵字段-新增矩阵字段项 */\n addMatrixFieldItem(input: any = '', selectMatrixBlockIndex) {\n /**矩阵下标的矩阵项Form */\n const MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(selectMatrixBlockIndex) as FormGroup;\n const MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields') as FormArray;\n MatrixFieldItemForm.push(\n this.fb.group({\n /**字段名称 Display name of this field */\n displayName: [input.displayName, [Validators.required]],\n /**字段唯一名称 Unique Name*/\n name: [input.name, [Validators.required]],\n /**描述 说明 */\n description: [input.description, []],\n /**FieldType字段类型 表单控件名称 */\n formControlName: [input.formControlName || 'TextEdit', [Validators.required]],\n //动态表单配置\n formConfiguration: new FormGroup({}),\n })\n );\n //\n }\n\n /**删除矩阵字段项 */\n deleteMatrixField(MatrixFieldForm, index) {\n MatrixFieldForm.removeAt(index);\n this.selectMatrixFieldIndex = 0;\n }\n\n /**矩阵字段-选择 */\n selectMatrixFieldChange(MatrixBlockIndex, MatrixFieldIndex) {\n this.selectMatrixFieldIndex = MatrixFieldIndex;\n }\n\n get nameInput() {\n return this.matrixModalForm?.get('name');\n }\n get FieldnameInput() {\n const MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(\n this.selectMatrixBlockIndex\n ) as FormGroup;\n const MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields') as FormArray;\n return MatrixFieldItemForm.at(this.selectMatrixFieldIndex).get('name');\n }\n\n /**矩阵displayNameInput字段失去焦点 */\n displayNameInputBlur(event) {\n const value = event.target.value;\n const pinyin = this.toPinyinService.get(value);\n const nameInput = this.nameInput;\n if (nameInput.value) return;\n nameInput.patchValue(pinyin);\n }\n /**矩阵displayNameInput字段失去焦点 */\n MatrixFieldDisplayNameInputBlur(event) {\n const value = event.target.value;\n const pinyin = this.toPinyinService.get(value);\n const FieldnameInput = this.FieldnameInput;\n if (FieldnameInput.value) return;\n FieldnameInput.patchValue(pinyin);\n }\n\n dropMatrix(event) {\n if (event.container.data === event.previousContainer.data) {\n moveItemInArray(this.MatrixBlockTypes.controls, event.previousIndex, event.currentIndex);\n this.MatrixBlockTypes.updateValueAndValidity();\n this.selectMatrixBlockIndex = event.currentIndex;\n } else {\n const object1 = this.MatrixBlockTypes.controls[this.selectMatrixBlockIndex].get(\n 'fields'\n ) as FormArray;\n const controlsItem = object1.at(event.previousIndex);\n object1.removeAt(event.previousIndex);\n event.container.data[event.currentIndex-1].controls['fields'].push(controlsItem);\n }\n this.fieldStartDrag=false;\n }\n dropFields(event) {\n const object1 = this.MatrixBlockTypes.controls[this.selectMatrixBlockIndex].get(\n 'fields'\n ) as FormArray;\n moveItemInArray(object1.controls, event.previousIndex, event.currentIndex);\n this.MatrixBlockTypes.updateValueAndValidity();\n this.selectMatrixFieldIndex = event.currentIndex;\n this.fieldStartDrag=false;\n }\n sortPredicate(index: number, item: CdkDrag<number>) {\n return index!==0;\n }\n sortPredicateTrue(){\n return true;\n }\n /**字段开始拖拽 */\n fieldStartDrag:any=false;\n CdkDragStart(event) {\n this.fieldStartDrag=true;\n }\n}\n","<div [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\" *ngIf=\"MatrixBlockTypes\">\n <div class=\"col-md-3\" >\n <div class=\"list-group\" [class.fieldStartDragClass]=\"fieldStartDrag\" cdkDropList (cdkDropListDropped)=\"dropMatrix($event)\" #todoList=\"cdkDropList\"\n [cdkDropListData]=\"MatrixBlockTypes.controls\" [cdkDropListSortPredicate]=\"fieldStartDrag?sortPredicate:sortPredicateTrue\"> \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\" type=\"button\" (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 pe-2\"\n [class.active]=\"i===selectMatrixBlockIndex\" cdkDrag>\n <div style=\"line-break: anywhere;\">\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div class=\"d-flex align-items-center justify-content-between\">\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm me-2\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem type=\"button\"\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' |\n abpLocalization}}</button>\n <button ngbDropdownItem type=\"button\"\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' |\n abpLocalization}}</button>\n </div>\n </div>\n <span class=\"bi bi-arrows-move fs-5 drag-handle\" cdkDragHandle></span>\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\" cdkDropList\n (cdkDropListDropped)=\"dropFields($event)\" [cdkDropListData]=\"MatrixBlockTypes.controls[selectMatrixBlockIndex].get('fields').controls\" [cdkDropListConnectedTo]=\"[todoList]\">\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\" type=\"button\" (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 pe-2\"\n [class.active]=\"fi===selectMatrixFieldIndex\" cdkDrag (cdkDragStarted)=\"CdkDragStart($event)\">\n <div style=\"line-break: anywhere;\">\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <div class=\"d-flex align-items-center justify-content-between\">\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n <span class=\"bi bi-arrows-move fs-5 drag-handle\" cdkDragHandle></span>\n </div>\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-3\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' |\n abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"name\">{{'AbpDynamicForm::FieldName' |\n abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <small class=\"form-text text-muted d-block\">\n {{'AbpDynamicForm::FieldNameHelpText' | abpLocalization}}</small>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"description\">{{'Cms::Description' |\n abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"formControlName\">{{'Cms::FieldType' |\n abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\">\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 <ng-container *ngIf=\"itemf.value.formControlName&&itemf\">\n <df-dynamic-config [type]=\"itemf.value.formControlName\"\n [selected]=\"_selected?_selected.formConfiguration?.MatrixBlockTypes[i]?.fields[fi]:''\"\n [form]=\"itemf\"></df-dynamic-config>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</div>\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 [formGroup]=\"matrixModalForm\" (submit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-3\">\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-3\">\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\" (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' |\n abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>\n\n","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { KeysConvertToLowercaseService } from '../../../services';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'df-matrix-control',\n templateUrl: './matrix-control.component.html',\n styleUrls: ['./matrix-control.component.scss'],\n})\nexport class MatrixControlComponent {\n constructor(private fb: FormBuilder, private _KeysConvertToLowercaseService: KeysConvertToLowercaseService) {}\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n if (v) {\n for (const key in v.field?.formConfiguration) {\n if (Array.isArray(v.field?.formConfiguration[key])) {\n v.field.formConfiguration[key] = this._KeysConvertToLowercaseService.get(\n v.field?.formConfiguration[key],\n );\n }\n }\n\n this._fields = v;\n }\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n if (v) {\n v = this._KeysConvertToLowercaseService.get(v);\n this._selected = v;\n }\n }\n /**语言 */\n _culture: any;\n @Input()\n public set culture(v: any) {\n this._culture = v;\n }\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n if (v) {\n this.dataLoaded();\n }\n }\n\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /** 获取父级字段代表的表单组*/\n extraProperties: FormGroup | undefined;\n\n private cdr = inject(ChangeDetectorRef);\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity && this._parentFiledName) {\n this.extraProperties = this._entity.get(this._parentFiledName) as FormGroup;\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n if (this._selected) {\n this.fieldNameControl.patchValue(this._selected);\n for (const index of Object.keys(this.fieldNameControl.controls)) {\n const item = this.fieldNameControl.at(Number(index)) as FormGroup;\n item.get('isOpen').patchValue(false);\n }\n }\n this._selected = '';\n // console.log(this.fieldNameControl, 'fieldNameControl', this._fields.field.name);\n }\n }\n\n formConfiguration: any;\n /**获取表格字段代表的控件 */\n fieldNameControl: FormArray | undefined;\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const formConfiguration = this._fields.field.formConfiguration;\n const ValidatorsArray = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n const newArrayGroup = this.fb.array([], ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newArrayGroup);\n this.fieldNameControl = this.extraProperties.get(this._fields.field.name) as FormArray;\n if (this._fields.required) {\n this.fieldNameControl.addValidators(this.hasValueValidator);\n // for (const element of formConfiguration.MatrixBlockTypes) {\n // element.required = true;\n // }\n }\n\n if (this._selected) {\n this._selected.forEach(el => {\n this.addMatrixControl(\n formConfiguration.MatrixBlockTypes.find(item => item.name == el.matrixBlockTypeName),\n );\n });\n // this.isAllExpanded=false;\n }else{\n this.isAllExpanded=true;\n }\n\n\n this.MatrixBlockTypesList = formConfiguration.MatrixBlockTypes;\n resolve(true);\n });\n }\n\n /**是否带有值验证器 */\n hasValueValidator(g: FormArray) {\n // 检查是否有任何控件包含有效值\n const hasValue = g.controls.some(element => {\n const extraProperties = element.get('extraProperties');\n return Object.keys(extraProperties.value).some(key => {\n const value = extraProperties.value[key];\n // 检查数组类型值\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n // 检查非空值\n return value !== null && value !== undefined && value !== '';\n });\n });\n\n // 根据验证结果设置表单状态\n g.controls.forEach(element => {\n const extraProperties = element.get('extraProperties');\n Object.keys(extraProperties.value).forEach(key => {\n if (!hasValue) {\n // 如果没有值,设置所有字段为必填\n extraProperties.get(key).setValidators(Validators.required);\n extraProperties.get(key).setErrors({ required: true });\n } else {\n // 如果有值,清除错误\n extraProperties.get(key).setErrors(null);\n }\n });\n });\n\n // 返回验证结果\n return hasValue? null : { required: true };\n // return hasValue? null : null;\n }\n\n /**矩阵列表 */\n MatrixBlockTypesList: any[] = [];\n\n /**增加指定矩阵控件项 */\n addMatrixControl(item) {\n this.fieldNameControl.push(\n new FormGroup({\n extraProperties: new FormGroup({}),\n matrixBlockTypeName: new FormControl(item.name),\n displayName: new FormControl(item.displayName),\n isOpen: new FormControl(true),\n }),\n );\n }\n\n /**展开,收缩矩阵 */\n ExpandChange(index) {\n const fieldNameControlItem = this.fieldNameControl.controls[index] as FormGroup;\n fieldNameControlItem.get('isOpen').patchValue(!fieldNameControlItem.get('isOpen').value);\n }\n /**删除矩阵控件 */\n deleteMatrixControl(index, item) {\n this.fieldNameControl.removeAt(index);\n }\n /**调整表格位置 */\n drop(event: any) {\n moveItemInArray(this.fieldNameControl.controls, event.previousIndex, event.currentIndex);\n this.fieldNameControl.updateValueAndValidity();\n }\n\n /**是否全部展开 */\n isAllExpanded = false;\n\n /**切换全部展开/折叠状态 */\n toggleAll() {\n this.isAllExpanded = !this.isAllExpanded;\n if (this.fieldNameControl) {\n this.fieldNameControl.controls.forEach((control: FormGroup) => {\n control.get('isOpen').patchValue(this.isAllExpanded);\n });\n }\n }\n}\n","<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-3 position-relative\">\n <div class=\"d-flex align-items-center justify-content-between position-sticky bg-white py-1\" style=\"top: 42px;z-index: 10;\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n @if(fieldNameControl?.controls?.length>0){\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"toggleAll()\">\n <i class=\"bi\" [class.bi-arrows-expand]=\"!isAllExpanded\" [class.bi-arrows-collapse]=\"isAllExpanded\"></i>\n <!-- {{ isAllExpanded ? '折叠全部' : '展开全部' }} -->\n </button>\n }\n </div>\n <div [class]=\"fieldNameControl?.controls?.length>0?'border p-2 rounded-2':''\">\n <div [formArrayName]=\"_fields.field.name\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <ng-container *ngFor=\"let item of fieldNameControl.controls;let i=index\">\n <div class=\"card mb-3 border \" [formGroupName]=\"i\" cdkDrag cdkDragLockAxis=\"y\"\n [cdkDragData]=\"item\">\n <div type=\"button\"\n class=\"card-header d-flex align-items-center justify-content-between border-bottom pt-1\" (click.stop)=\"ExpandChange(i)\">\n <div class=\"d-flex\">\n <div class=\"drag-handle me-2\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>{{item.value.displayName}}\n </div>\n <div class=\"d-flex align-items-center\">\n <button class=\"btn btn-sm btn-light p-0\"\n (click.stop)=\"deleteMatrixControl(i,item)\"><i\n class=\"fas fa-trash p-2\"></i></button>\n <i class=\"bi bi-chevron-down ms-2 \" [style]=\"{display: 'inline-block', transform: item.value.isOpen?'rotate(180deg)':'rotate(0deg)'}\" ></i>\n </div>\n </div>\n <div class=\"card-body\" style=\"overflow:hidden;transition: all 0.2s;\" [style]=\"item.value.isOpen?'height:auto;':'height:0px;padding-top:0px;padding-bottom:0px;'\">\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-control [fields]=\"{ field: elf,displayName:elf.displayName }\"\n [selected]=\"_selected ? _selected[i]?_selected[i][_parentFiledName][elf.name]:'': ''\"\n [parentFiledName]=\"'extraProperties'\" [culture]=\"_culture\"\n [entity]=\"item\"></df-dynamic-control>\n \n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n \n </ng-container>\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-dark soft btn-sm\" (click.stop)=\"addMatrixControl(item)\"><i\n class=\"fas fa-plus me-1\"></i>{{item.displayName}}</button>\n </ng-container>\n </div>\n @if(fieldNameControl?.errors?.required && fieldNameControl.touched){\n <span class=\"form-text invalid-feedback d-block\">{{\"AbpValidation::ThisFieldIsRequired.\"|abpLocalization}}</span>\n }\n \n <small class=\"form-text text-muted d-block\"\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none\" #submitclick></button>\n</form>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cms-matrix-view',\r\n templateUrl: './matrix-view.component.html',\r\n styleUrl: './matrix-view.component.scss',\r\n})\r\nexport class MatrixViewComponent {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList: boolean = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n let valueOptions = this._value;\r\n if (this.type && valueOptions) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{'Cms::NotShowInList'|abpLocalization}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n</div>\r\n}","import { FormArray, FormControl, FormGroup, Validators } from \"@angular/forms\";\r\n\r\nexport class TableConfig {\r\n\r\n // 选项\r\n TableColumns: any = new FormArray([])\r\n}\r\nexport class TableFormControl {\r\n /**列标题 */\r\n displayName: any = ['', [Validators.required]];\r\n /**空间配置 */\r\n formConfiguration: any = new FormGroup({})\r\n /**列名 */\r\n name: any = ['', [Validators.required]];\r\n //控件标识\r\n formControlName: any = ['', [Validators.required]];\r\n\r\n /**是否必填 */\r\n required: any = [false];\r\n /**描述 */\r\n description: any = [''];\r\n\r\n\r\n}","/* eslint-disable no-async-promise-executor */\n/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup } from '@angular/forms';\nimport { TableConfig, TableFormControl } from './table-config';\nimport { KeysConvertToLowercaseService, FieldsDataService } from '../../../services';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ToPinyinService } from '@dignite-ng/expand.core';\n@Component({\n selector: 'df-table-config',\n templateUrl: './table-config.component.html',\n styleUrls: ['./table-config.component.scss'],\n})\nexport class TableConfigComponent {\n constructor(\n private fb: FormBuilder,\n private _KeysConvertToLowercaseService: KeysConvertToLowercaseService,\n private _FieldsDataService: FieldsDataService,\n private toPinyinService: ToPinyinService,\n ) {}\n /**表单实体 */\n _Entity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this._Entity = v;\n this.dataLoaded();\n }\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n if (v) {\n for (const key in v.formConfiguration) {\n if (Array.isArray(v.formConfiguration[key])) {\n v.formConfiguration[key] = this._KeysConvertToLowercaseService.get(\n v.formConfiguration[key],\n );\n }\n }\n this._selected = v;\n this.dataLoaded();\n }\n }\n /**表单控件组 */\n _fieldControlGroup: any = [];\n\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this._Entity?.get('formConfiguration') as FormGroup;\n }\n get TableColumns() {\n return this.formConfiguration.controls['TableColumns'] as FormArray;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._Entity && this._type) {\n await this.AfterInit();\n }\n }\n /**增加选项 */\n addTableColumns() {\n this.TableColumns.push(\n this.fb.group({\n ...new TableFormControl(),\n formConfiguration: [{}],\n }),\n );\n this.cdr.detectChanges(); // 手动触发变更检测\n }\n /**删除某个选项 */\n deleteTableColumns(index) {\n this.TableColumns.removeAt(index);\n }\n\n async AfterInit() {\n return new Promise(async resolve => {\n this._Entity?.setControl('formConfiguration', this.fb.group(new TableConfig()));\n // this.formConfiguration.addValidators([this.validateTableColumns]);\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n this._fieldControlGroup = await this._FieldsDataService.getControlsfieldTypes();\n if (this._selected && this._selected.formControlName == this._type) {\n this._selected.formConfiguration['TableColumns'].forEach(() => {\n this.addTableColumns();\n });\n this.formConfiguration.patchValue(this._selected.formConfiguration);\n } else {\n this.addTableColumns();\n }\n this.TableColumns.valueChanges.subscribe(value=>{\n console.log(value,'value');\n })\n\n resolve(true);\n });\n }\n /**\n * 自定义验证函数\n * @param formArray 要验证的 FormArray\n * @returns 验证结果,如果所有项都通过验证则返回 null,否则返回 { invalidArray: true }\n */\n validateTableColumns(formArray: FormArray) {\n // console.log(formArray,'自定义验证函数');\n if (formArray.length === 0) {\n return { invalidArray: true };\n }\n return null;\n }\n itemForm: any;\n\n /**选择表格的表单控件 */\n selectTableControl(event, i, item) {\n if (event.target.value === '') return;\n console.log(this.CurrentSelectionTableControlName,'CurrentSelectionTableControlName');\n this.CurrentSelectionTableControlName = event.target.value;\n this.tableSelectOpen = true;\n this.tableSelectForm = this.fb.group(new TableFormControl());\n this.TableColumnsIndex = i;\n this.itemForm = item;\n console.log(this.TableColumns,'TableColumns',this._tableSelected);\n }\n\n CurrentSelectionTableControlName: any;\n\n /**正在创建或编辑的表格项下标 */\n TableColumnsIndex: any;\n /**创建站点模态框状态 */\n tableSelectOpen: boolean | any = false;\n\n /**用于确定模态的繁忙状态是否为真 */\n modalBusy: boolean | any = false;\n /**创建站点表单 */\n tableSelectForm: FormGroup | undefined;\n\n /**表格已选择数据 */\n _tableSelected: any;\n\n /**表单控件模板-动态赋值表单控件 */\n @ViewChild('tableSelectModalSubmit', { static: false }) tableSelectModalSubmit: ElementRef;\n\n /**创建站点模态框状态改变 */\n tableSelectVisibleChange(event) {\n \n if (!event) {\n \n\n this._tableSelected = undefined;\n this.tableSelectForm = undefined;\n this.CurrentSelectionTableControlName = undefined;\n this.TableColumnsIndex = undefined;\n return;\n }\n }\n /**表单保存提交 */\n createOrEditSave() {\n const formGroup = this.TableColumns.at(this.TableColumnsIndex) as FormGroup;\n const formConfigurationgroup = formGroup.get('formConfiguration') as FormGroup;\n\n formConfigurationgroup.setValue({\n ...this.tableSelectForm?.value['formConfiguration'],\n });\n this.tableSelectOpen = false;\n }\n\n /**编辑站点按钮 */\n EditSitesBtn(rows, i) {\n this.CurrentSelectionTableControlName = rows.get('formControlName').value;\n this.tableSelectForm = this.fb.group(new TableFormControl());\n this.tableSelectForm.patchValue({\n ...rows.value,\n });\n this.tableSelectForm.get('formConfiguration')?.patchValue({\n ...rows.value['formConfiguration'],\n });\n this._tableSelected = rows.value;\n this.TableColumnsIndex = i;\n this.tableSelectOpen = true;\n }\n\n // /**调整表格位置 */\n // TableArrowUpOrDown(type, index) {\n // const controlAt = this.TableColumns.at(index)\n // this.TableColumns.removeAt(index)\n // const lastindex = type == 'up' ? index - 1 : index + 1\n // this.TableColumns.insert(lastindex, controlAt)\n // }\n\n /**字段标签input失去标点生成字段名字 */\n disPlayNameInputBlur(event, item) {\n const value = event.target.value;\n const pinyin = this.toPinyinService.get(value);\n const nameInput = item.get('name');\n if (nameInput.value) return;\n nameInput.patchValue(pinyin);\n }\n /**调整表格位置 */\n drop(event: any) {\n moveItemInArray(this.TableColumns.controls, event.previousIndex, event.currentIndex);\n this.TableColumns.updateValueAndValidity();\n }\n}\n","<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table drag-table\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'Cms::TableColumnDisplayName' | abpLocalization}}</th>\n <th scope=\"col\">{{'Cms::TableColumnName' | abpLocalization}}</th>\n <th scope=\"col\">{{'Cms::TableColumnForm' | abpLocalization}}</th>\n <th scope=\"col\" class=\"flex-end\">\n <button class=\"btn btn-light btn-sm\" type=\"button\" (click.stop)=\"addTableColumns()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button> \n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"TableColumns\">\n <ng-container *ngFor=\"let item of TableColumns.controls;let i=index\">\n <tr [formGroupName]=\"i\" cdkDrag cdkDragLockAxis=\"y\" [cdkDragData]=\"item\">\n <td>\n <div class=\"drag-handle\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"displayName\" required (blur)=\"disPlayNameInputBlur($event,item)\" ></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"name\" required></td>\n <td>\n <select class=\"form-select\" formControlName=\"formControlName\" required\n (change)=\"selectTableControl($event,i,item)\">\n <option value=\"\">{{'Cms::SelectFormControl' | abpLocalization}}</option>\n <ng-container *ngFor=\"let item_f of _fieldControlGroup;let i_f =index\">\n <option [value]=\"item_f.name\">{{item_f.displayName}}</option>\n </ng-container>\n </select>\n </td>\n <td scope=\"row\">\n <div class=\"flex-start\">\n <button class=\"btn btn-light btn-sm \" type=\"button\" (click.stop)=\"EditSitesBtn(item,i)\">\n <i class=\"fas fa-edit\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\" type=\"button\" (click.stop)=\"deleteTableColumns(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n <button type=\"submit\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n<abp-modal [(visible)]=\"tableSelectOpen\" [busy]=\"modalBusy\" (visibleChange)=\"tableSelectVisibleChange($event)\" [options]=\"{ size: CurrentSelectionTableControlName==='Matrix'?'xl':'' ,scrollable:false }\">\n <ng-template #abpHeader>\n <h3>{{_tableSelected?('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=\"tableSelectForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"tableSelectForm\"\n (submit)=\"createOrEditSave()\">\n <button type=\"submit\" #tableSelectModalSubmit style=\"display: none\"></button>\n <ng-container *ngIf=\"CurrentSelectionTableControlName&&tableSelectForm\">\n <df-dynamic-config [type]=\"CurrentSelectionTableControlName\" \n [selected]=\"_tableSelected\" [formGroup]=\"tableSelectForm\" [form]=\"tableSelectForm\"></df-dynamic-config>\n </ng-container>\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)=\"tableSelectModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>","import { ChangeDetectorRef, Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { KeysConvertToLowercaseService } from '../../../services';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'df-table-control',\n templateUrl: './table-control.component.html',\n styleUrls: ['./table-control.component.scss'],\n})\nexport class TableControlComponent {\n constructor(\n private _KeysConvertToLowercaseService: KeysConvertToLowercaseService // private fb: FormBuilder,\n ) {}\n private fb = inject(FormBuilder);\n\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n this.dataLoaded();\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n if (v) {\n for (const key in v.field?.formConfiguration) {\n if (Array.isArray(v.field?.formConfiguration[key])) {\n v.field.formConfiguration[key] = this._KeysConvertToLowercaseService.get(\n v.field?.formConfiguration[key]\n );\n }\n }\n this._fields = v;\n this.dataLoaded();\n }\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n this.dataLoaded();\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n if (v) {\n v = this._KeysConvertToLowercaseService.get(v);\n this._selected = v;\n this.dataLoaded();\n }\n }\n /**语言 */\n _culture: any;\n @Input()\n public set culture(v: any) {\n this._culture = v;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /** 获取父级字段代表的表单组*/\n extraProperties: FormGroup | undefined;\n private cdr = inject(ChangeDetectorRef);\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity && this._parentFiledName) {\n this.extraProperties = this._entity.get(this._parentFiledName) as FormGroup;\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n formConfiguration: any;\n /**获取表格字段代表的控件 */\n fieldNameControl: FormArray | undefined;\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n const formConfiguration = this._fields.field.formConfiguration;\n \n this.formConfiguration = formConfiguration;\n const newArrayGroup = this.fb.array([],ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newArrayGroup);\n this.fieldNameControl = this.extraProperties.get(this._fields.field.name) as FormArray;\n if(this._fields.required){\n this.fieldNameControl.addValidators(this.hasValueValidator);\n // for (const element of formConfiguration.TableColumns) {\n // element.required = true;\n // }\n }\n if (this._selected) {\n this._selected.forEach(el => {\n this.addTableControlItem();\n });\n this.fieldNameControl.patchValue(this._selected);\n } else {\n this.addTableControlItem();\n }\n resolve(true);\n });\n }\n /**是否带有值验证器 */\n hasValueValidator(g: FormArray) {\n // 检查是否有任何控件包含有效值\n const hasValue = g.controls.some(element => {\n const extraProperties = element.get('extraProperties');\n return Object.keys(extraProperties.value).some(key => {\n const value = extraProperties.value[key];\n // 检查数组类型值\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n // 检查非空值\n return value !== null && value !== undefined && value !== '';\n });\n });\n\n // 根据验证结果设置表单状态\n g.controls.forEach(element => {\n const extraProperties = element.get('extraProperties');\n Object.keys(extraProperties.value).forEach(key => {\n if (!hasValue) {\n // 如果没有值,设置所有字段为必填\n extraProperties.get(key).setValidators(Validators.required);\n extraProperties.get(key).setErrors({ required: true });\n } else {\n // 如果有值,清除错误\n extraProperties.get(key).setErrors(null);\n }\n });\n });\n\n // 返回验证结果\n return hasValue&&g.controls.length>0 ? null : { required: true };\n}\n\n /**增加表格项 */\n addTableControlItem() {\n this.fieldNameControl.push(\n this.fb.group({\n extraProperties: this.fb.group({}),\n })\n );\n // this.fieldNameControl.updateValueAndValidity();\n }\n /**删除表格项 */\n minusTableControlItem(index) {\n this.fieldNameControl.removeAt(index);\n }\n /**调整表格位置 */\n TableArrowUpOrDown(type, index) {\n const controlAt = this.fieldNameControl.at(index);\n this.fieldNameControl.removeAt(index);\n const lastindex = type == 'up' ? index - 1 : index + 1;\n this.fieldNameControl.insert(lastindex, controlAt);\n this._selected = this.fieldNameControl.value;\n }\n /**调整表格位置 */\n drop(event: any) {\n moveItemInArray(this.fieldNameControl.controls, event.previousIndex, event.currentIndex);\n this.fieldNameControl.updateValueAndValidity();\n }\n}\n","<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\" >\n <div class=\"mb-3 table-control\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <div class=\"table-responsive table-fixed-header\">\n <table class=\"table overflow-nowrap mb-0\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <thead>\n <tr>\n <th ></th>\n <ng-container *ngFor=\"let item of formConfiguration.TableColumns\">\n <th [attr.field-type]=\"item.formControlName\" >{{ item.displayName }}</th>\n </ng-container>\n <th class=\"sticky-right-card-bg\" >\n <div class=\"flex-end\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addTableControlItem()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </div>\n \n </th>\n </tr>\n </thead>\n <tbody [formArrayName]=\"_fields.field.name\">\n <ng-container *ngFor=\"let item of fieldNameControl.controls; let i = index\">\n <tr cdkDrag cdkDragLockAxis=\"y\" [cdkDragData]=\"item\">\n <td>\n <div class=\"drag-handle\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n <ng-container *ngFor=\"let el of formConfiguration.TableColumns\">\n <td>\n <ng-container *ngIf=\"item&&el\">\n <df-dynamic-control [fields]=\"{ field: el }\"\n [selected]=\"_selected?_selected[i]?.extraProperties[''+el.name+'']:''\"\n [parentFiledName]=\"'extraProperties'\" [culture]=\"_culture\"\n [entity]=\"item\"></df-dynamic-control>\n </ng-container>\n </td>\n </ng-container>\n <td scope=\"row\" class=\"sticky-right-card-bg\">\n <div class=\"flex-end mb-3\">\n <button class=\"btn btn-light btn-sm ms-1\"\n (click.stop)=\"minusTableControlItem(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n <!-- <button class=\"btn btn-light btn-sm ms-1\"\n (click.stop)=\"TableArrowUpOrDown('up',i)\" *ngIf=\"i!==0\">\n <i class=\"fas fa-arrow-up\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\"\n (click.stop)=\"TableArrowUpOrDown('down',i)\"\n *ngIf=\"i!==fieldNameControl.controls.length-1\">\n <i class=\"fas fa-arrow-down\"></i>\n </button> -->\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n @if(fieldNameControl?.errors?.required && fieldNameControl.touched){\n <span class=\"form-text invalid-feedback d-block\">{{\"AbpValidation::ThisFieldIsRequired.\"|abpLocalization}}</span>\n }\n <small class=\"form-text text-muted d-block\"\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none\" #submitclick></button>\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cms-table-view',\r\n templateUrl: './table-view.component.html',\r\n styleUrl: './table-view.component.scss',\r\n})\r\nexport class TableViewComponent implements AfterContentInit {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n const valueOptions = this._value;\r\n if (this.type && valueOptions) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{'Cms::NotShowInList'|abpLocalization}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n</div>\r\n}","import { EntryConfigComponent, EntryControlComponent } from \"./entry\";\r\nimport { EntrySearchComponent } from \"./entry/entry-search.component\";\r\nimport { EntryViewComponent } from \"./entry/entry-view.component\";\r\nimport { MatrixConfigComponent } from \"./matrix/matrix-config.component\";\r\nimport { MatrixControlComponent } from \"./matrix/matrix-control.component\";\r\nimport { MatrixViewComponent } from \"./matrix/matrix-view.component\";\r\nimport { TableConfigComponent, TableControlComponent } from \"./table\";\r\nimport { TableViewComponent } from \"./table/table-view.component\";\r\n/**\r\n * 表单控件分组-包含配置,控件,显示的数组\r\n */\r\nexport const cmsFieldControlGroup: any[] = [\r\n {\r\n displayName: '表格',\r\n name: 'Table',\r\n fieldConfigComponent: TableConfigComponent,\r\n fieldComponent: TableControlComponent,\r\n fieldViewComponent: TableViewComponent,\r\n },\r\n {\r\n displayName: '矩阵',\r\n name: 'Matrix',\r\n fieldConfigComponent: MatrixConfigComponent,\r\n fieldComponent: MatrixControlComponent,\r\n fieldViewComponent: MatrixViewComponent,\r\n },\r\n {\r\n displayName: '条目',\r\n name: 'Entry',\r\n fieldConfigComponent: EntryConfigComponent,\r\n fieldComponent: EntryControlComponent,\r\n fieldViewComponent: EntryViewComponent,\r\n fieldSearchComponent: EntrySearchComponent,\r\n },\r\n];\r\n","import { ToolbarAction } from '@abp/ng.components/extensible';\r\nimport {\r\n SectionsComponent,\r\n CreateOrEditComponent,\r\n FieldsComponent,\r\n CreateFieldComponent,\r\n EditFieldComponent,\r\n EntriesComponent,\r\n CreateComponent,\r\n EditComponent,\r\n} from '../components';\r\n\r\n\r\n/**\r\n * 字段列表-新建\r\n * [ECmsComponent.Fields]:Fields_Defaults_Toolbar_Action\r\n */\r\nexport const Fields_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'Cms::New',\r\n action: data => {\r\n const component = data.getInjected(FieldsComponent);\r\n component.toFieldsCreateBtn();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n\r\n/**字段创建页-保存 */\r\nexport const Fields_Create_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'AbpUi::Save',\r\n action: data => {\r\n const component = data.getInjected(CreateFieldComponent);\r\n // component.submitclickBtn();\r\n component.submitclick?.nativeElement?.click();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fas fa-save',\r\n },\r\n]);\r\n/**字段创建页-保存 */\r\nexport const Fields_Edit_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'AbpUi::Save',\r\n action: data => {\r\n const component = data.getInjected(EditFieldComponent);\r\n // component.submitclickBtn();\r\n component.submitclick?.nativeElement?.click();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fas fa-save',\r\n },\r\n]);\r\n\r\n/**版块 */\r\nexport const Sections_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'Cms::New',\r\n action: data => {\r\n const component = data.getInjected(SectionsComponent);\r\n component.createBtn();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n/**版块-创建-编辑 */\r\nexport const Sections_Create_Or_Edit_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'AbpUi::Save',\r\n action: data => {\r\n const component = data.getInjected(CreateOrEditComponent);\r\n component.submitclickBtn();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fas fa-save',\r\n },\r\n]);\r\n/**站点 */\r\n// export const Sites_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n// {\r\n// text: 'Cms::New',\r\n// action: data => {\r\n// const component = data.getInjected(SitesComponent);\r\n// // component.createSitesBtn();\r\n// },\r\n// btnClass: '',\r\n// permission: 'CmsAdmin.Entry.Create',\r\n// icon: 'fa fa-plus',\r\n// },\r\n// ]);\r\n\r\n\r\n/**条目 */\r\nexport const Entries_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'Cms::New',\r\n action: data => {\r\n const component = data.getInjected(EntriesComponent);\r\n component.createEntriesBtn();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n/**条目-创建 */\r\nexport const Entries_Create_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'AbpUi::Cancel',\r\n action: data => {\r\n const component = data.getInjected(CreateComponent);\r\n component.backTo();\r\n },\r\n btnClass: 'btn btn-light btn-sm',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: '',\r\n },\r\n {\r\n text: 'Cms::SaveDraft',\r\n action: data => {\r\n const component = data.getInjected(CreateComponent);\r\n component.clickSubmit(true);\r\n },\r\n btnClass: 'btn btn-info btn-sm',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fas fa-save',\r\n },\r\n {\r\n text: 'Cms::Publish',\r\n action: data => {\r\n const component = data.getInjected(CreateComponent);\r\n component.clickSubmit(false);\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fa fa-paper-plane',\r\n },\r\n]);\r\n/**条目编辑 */\r\nexport const Entries_Edit_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'AbpUi::Cancel',\r\n action: data => {\r\n const component = data.getInjected(EditComponent);\r\n component.backTo();\r\n },\r\n btnClass: 'btn btn-light btn-sm',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: '',\r\n },\r\n {\r\n text: 'Cms::SaveDraft',\r\n action: data => {\r\n const component = data.getInjected(EditComponent);\r\n component.clickSubmit(true);\r\n },\r\n btnClass: 'btn btn-info btn-sm',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fas fa-save',\r\n },\r\n {\r\n text: 'Cms::Publish',\r\n action: data => {\r\n const component = data.getInjected(EditComponent);\r\n component.clickSubmit(false);\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fa fa-paper-plane',\r\n },\r\n]);\r\n","import { EntityProp, ePropType } from '@abp/ng.components/extensible';\r\nimport { of } from 'rxjs';\r\nimport { FieldsDataService } from '../services/fields-data.service';\r\nimport { auto } from '@popperjs/core';\r\n\r\n/**\r\n [ECmsComponent.Fields]: Fields_Entity_Props,\r\n*/\r\nexport const Fields_Entity_Props = EntityProp.createMany<any>([\r\n {\r\n type: ePropType.String,\r\n name: 'displayName',\r\n displayName: 'Cms::DisplayName',\r\n sortable: true,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'Cms::Name',\r\n sortable: true,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'formControlName',\r\n displayName: 'Cms::FormControlName',\r\n sortable: false,\r\n valueResolver: (data: any) => {\r\n const _FieldsDataService = data.getInjected(FieldsDataService);\r\n const fromControlList = _FieldsDataService.fieldControlsTypesList;\r\n const formControlDisplayName=fromControlList.find(el=>el.name==data.record.formControlName)?.displayName\r\n return of(formControlDisplayName||data.record.formControlName);\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'groupName',\r\n displayName: 'Cms::Group',\r\n sortable: false,\r\n valueResolver: (data: any) => {\r\n return of(data.record.groupName||'--');\r\n },\r\n },\r\n {\r\n type: ePropType.DateTime,\r\n name: 'creationTime',\r\n displayName: 'Cms::CreationTime',\r\n sortable: true,\r\n },\r\n ]);\r\n \r\n\r\n// PageName.Guides\r\n// export const Guides_Entity_Props = EntityProp.createMany<any>([\r\n// {\r\n// type: ePropType.String,\r\n// name: 'fullName',\r\n// displayName: 'AbpTenantManagement::全称',\r\n// sortable: true,\r\n// // valueResolver: (data: any) => {\r\n// // let sss = `<a href=\"/guides/${data.record.id}\" class=\"underline-animate\" title=\"${data.record.fullName}\">${data.record.fullName}</a>`\r\n// // return of(sss);\r\n// // },\r\n// action: data => {\r\n// //EntriesComponent对应的工具栏页面\r\n\r\n// },\r\n// },\r\n\r\n// ]);\r\n","import { EntityAction } from \"@abp/ng.components/extensible\";\r\nimport { FieldsComponent } from \"../components\";\r\nimport { Router } from \"@angular/router\";\r\n// import { AbpTableComponent } from \"../view/table/abp-table.component\";\r\n\r\n// [PageName.Area]:Area_Entity_Action,\r\n/**\r\n [ECmsComponent.Fields]: Fields_Entity_Action,\r\n */\r\nexport const Fields_Entity_Action = EntityAction.createMany<any>([\r\n {\r\n text: 'AbpUi::Edit',\r\n action: data => {\r\n const router = data.getInjected(Router);\r\n router.navigate([`/cms/admin/fields/${data.record.id}/edit`])\r\n },\r\n permission: 'CmsAdmin.Field.Update',\r\n },\r\n {\r\n text: 'AbpUi::Delete',\r\n action: data => {\r\n const component = data.getInjected(FieldsComponent);\r\n // component.clickbtn({ data, type: 'delete' })\r\n component.deletefield(data.record)\r\n },\r\n permission: 'CmsAdmin.Field.Delete',\r\n },\r\n]);\r\n\r\n","import { ExtensionsService, getObjectExtensionEntitiesFromStore, mapEntitiesToContributors, mergeWithDefaultActions, mergeWithDefaultProps } from \"@abp/ng.components/extensible\";\r\nimport { inject, InjectionToken, Injector } from \"@angular/core\";\r\nimport { ResolveFn } from \"@angular/router\";\r\nimport { map, tap } from \"rxjs\";\r\nimport { ECmsComponent } from \"../enums\";\r\nimport { Entries_Create_Defaults_Toolbar_Action, Entries_Defaults_Toolbar_Action, Entries_Edit_Defaults_Toolbar_Action, Fields_Create_Defaults_Toolbar_Action, Fields_Defaults_Toolbar_Action, Fields_Edit_Defaults_Toolbar_Action, Sections_Create_Or_Edit_Defaults_Toolbar_Action, Sections_Defaults_Toolbar_Action } from \"./page-default-toolbar-actions\";\r\nimport { Fields_Entity_Props } from \"./table-default-entity-props\";\r\nimport { Fields_Entity_Action } from \"./table-default-entity-actions\";\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**默认-实体-操作 */\r\nexport const Default_Entity_Actions = {\r\n // [ModuleComponent.AbpTable]: Abp_Table_Entity_Action,\r\n [ECmsComponent.Fields]: Fields_Entity_Action,\r\n};\r\n\r\n/**默认实体属性-表格列名 */\r\nexport const Default_Entity_Props = {\r\n // [PageName.Guides]: Guides_Entity_Props,\r\n [ECmsComponent.Fields]: Fields_Entity_Props,\r\n};\r\n\r\n/**默认-工具栏-操作 */\r\nexport const Default_Toolbar_Actions = {\r\n // [ModuleComponent.Page]: Page_Toolbar_Action,\r\n // [eCmsKitPageName.FaqQuestion]:FaqQuestion_Toolbar_Action\r\n [ECmsComponent.Entries]: Entries_Defaults_Toolbar_Action,\r\n [ECmsComponent.Entries_Create]: Entries_Create_Defaults_Toolbar_Action,\r\n [ECmsComponent.Entries_Edit]: Entries_Edit_Defaults_Toolbar_Action,\r\n [ECmsComponent.Fields]: Fields_Defaults_Toolbar_Action,\r\n [ECmsComponent.FieldsCreate]: Fields_Create_Defaults_Toolbar_Action,\r\n [ECmsComponent.FieldsEdit]: Fields_Edit_Defaults_Toolbar_Action,\r\n [ECmsComponent.Sections]: Sections_Defaults_Toolbar_Action,\r\n [ECmsComponent.SectionsCreateOrEdit]: Sections_Create_Or_Edit_Defaults_Toolbar_Action,\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param 在Extensions_Props_Action_Token_Resolver方法中使用\r\n * @param 在.module.ts中使用,\r\n export class CmsModule {\r\n static forChild(options: any = {}): ModuleWithProviders<CmsModule> {\r\n return {\r\n ngModule: CmsModule,\r\n providers: [\r\n {\r\n provide: Toolbar_Action_Contributors,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: Entity_Action_Contributors,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: Entity_Props_Contributors,\r\n useValue: options.entityPropContributors,\r\n },\r\n ]\r\n };\r\n }\r\n static forLazy(options: any = {}): NgModuleFactory<CmsModule> {\r\n return new LazyModuleFactory(CmsModule.forChild(options));\r\n }\r\n }\r\n * \r\n * \r\n */\r\n/**实体-操作-贡献者 */\r\nexport const Entity_Action_Contributors =\r\n new InjectionToken<any>('Entity_Action_Contributors');\r\n\r\n/**实体-属性-贡献者 */\r\nexport const Entity_Props_Contributors =\r\n new InjectionToken<any>('Entity_Props_Contributors');\r\n\r\nexport const Toolbar_Action_Contributors = new InjectionToken<any>(\r\n 'Toolbar_Action_Contributors'\r\n);\r\n\r\n/**\r\n * 属性-操作-贡献者-解析器\r\n * \r\n * 用于放在-routing.module.ts路由守卫中\r\n * \r\n *\r\n const routes: Routes = [\r\n {\r\n path: 'demo',\r\n canActivate: [AuthGuard, PermissionGuard],\r\n resolve: [Extensions_Props_Action_Token_Resolver],\r\n children: []\r\n },\r\n ]\r\n * \r\n * \r\n */\r\n\r\nexport const Extensions_Props_Action_Token_Resolver: ResolveFn<any> = () => {\r\n const extensions = inject(ExtensionsService);\r\n\r\n const config = { optional: true };\r\n\r\n const actionContributors = inject(Entity_Action_Contributors, config) || {};\r\n const propContributors = inject(Entity_Props_Contributors, config) || {};\r\n const toolbarContributors = inject(Toolbar_Action_Contributors, config) || {};\r\n\r\n const injector = inject(Injector);\r\n return getObjectExtensionEntitiesFromStore(injector, 'TenantManagement').pipe(\r\n map(entities => ({\r\n // [ModuleComponent.AbpTable]: entities.Tenant,\r\n })),\r\n mapEntitiesToContributors(injector, 'TenantManagement'),\r\n tap(objectExtensionContributors => {\r\n //actions\r\n mergeWithDefaultActions(\r\n extensions.entityActions,\r\n Default_Entity_Actions,\r\n actionContributors,\r\n );\r\n //props\r\n mergeWithDefaultProps(\r\n extensions.entityProps,\r\n Default_Entity_Props,\r\n objectExtensionContributors.prop,\r\n propContributors,\r\n );\r\n //Toolbar\r\n mergeWithDefaultActions(\r\n extensions.toolbarActions,\r\n Default_Toolbar_Actions,\r\n toolbarContributors\r\n );\r\n\r\n }),\r\n );\r\n};\r\n\r\n\r\n// /**\r\n// * @deprecated Use `tenantManagementExtensions_Props_Action_Token_Resolver` *function* instead.\r\n// */\r\n// @Injectable()\r\n// export class TenantManagementExtensionsGuard implements IAbpGuard {\r\n// protected readonly configState = inject(ConfigStateService);\r\n// protected readonly extensions = inject(ExtensionsService);\r\n\r\n// canActivate(): Observable<boolean> {\r\n// const config = { optional: true };\r\n\r\n// const actionContributors = inject(TENANT_MANAGEMENT_Entity_Action_Contributors, config) || {};\r\n// const propContributors = inject(TENANT_MANAGEMENT_Entity_Props_Contributors, config) || {};\r\n\r\n// return getObjectExtensionEntitiesFromStore(this.configState, 'TenantManagement').pipe(\r\n// map(entities => ({\r\n// // [eTenantManagementComponents.Tenants]: entities.Tenant,\r\n// })),\r\n// mapEntitiesToContributors(this.configState, 'TenantManagement'),\r\n// tap(objectExtensionContributors => {\r\n// mergeWithDefaultActions(\r\n// this.extensions.entityActions,\r\n// DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS,\r\n// actionContributors,\r\n// );\r\n// mergeWithDefaultProps(\r\n// this.extensions.entityProps,\r\n// DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS,\r\n// objectExtensionContributors.prop,\r\n// propContributors,\r\n// );\r\n// }),\r\n// map(() => true),\r\n// );\r\n// }\r\n// }\r\n\r\n","import { NgModule} from '@angular/core';\r\nimport { Routes, RouterModule} from '@angular/router';\r\nimport {\r\n CreateComponent,\r\n CreateFieldComponent,\r\n CreateOrEditComponent,\r\n EditComponent,\r\n EditFieldComponent,\r\n EntriesComponent,\r\n FieldsComponent,\r\n SectionsComponent,\r\n} from './components';\r\nimport {\r\n AuthGuard,\r\n PermissionGuard,\r\n} from '@abp/ng.core';\r\n// import { appentStyle } from './services/appent-content';\r\nimport { Extensions_Props_Action_Token_Resolver } from './resolvers/extensions-props-action-token.resolver';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'admin',\r\n canActivate: [AuthGuard, PermissionGuard],\r\n resolve: [Extensions_Props_Action_Token_Resolver],\r\n children: [\r\n { \r\n path: 'entries',\r\n children: [\r\n {\r\n path: '',\r\n component: EntriesComponent,\r\n data: { keep: true }\r\n },\r\n {\r\n path: 'create',\r\n component: CreateComponent,\r\n },\r\n {\r\n path: ':entrieId/edit',\r\n component: EditComponent,\r\n },\r\n ],\r\n },\r\n {\r\n path: '',\r\n children: [\r\n {\r\n path: 'fields',\r\n children: [\r\n {\r\n path: '',\r\n component: FieldsComponent,\r\n data: { keep: true }\r\n },\r\n {\r\n path: 'create',\r\n component: CreateFieldComponent,\r\n },\r\n {\r\n path: ':id/edit',\r\n component: EditFieldComponent,\r\n },\r\n ],\r\n },\r\n {\r\n path: 'sections',\r\n children: [\r\n {\r\n path: '',\r\n data: { keep: true },\r\n component: SectionsComponent,\r\n },\r\n {\r\n path: ':sectionsId/entry-types',\r\n children: [\r\n {\r\n path: 'create',\r\n component: CreateOrEditComponent,\r\n },\r\n {\r\n path: ':entryTypesId/edit',\r\n component: CreateOrEditComponent,\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n \r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class CmsRoutingModule {\r\n}\r\n","import { NgModule, NgModuleFactory, ModuleWithProviders } from '@angular/core';\r\nimport { CoreModule, LazyModuleFactory } from '@abp/ng.core';\r\nimport { HTTP_ERROR_HANDLER, ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { CmsRoutingModule } from './cms-routing.module';\r\nimport {\r\n CreateComponent,\r\n CreateFieldComponent,\r\n CreateOrEditComponent,\r\n CreateOrEditEntriesComponent,\r\n CreateOrEditFieldComponent,\r\n EditComponent,\r\n EditFieldComponent,\r\n EntriesComponent,\r\n FieldsGroupComponent,\r\n FieldsComponent,\r\n SectionsComponent,\r\n MatrixConfigComponent,\r\n MatrixControlComponent,\r\n TableConfigComponent,\r\n TableControlComponent,\r\n EntryConfigComponent,\r\n EntryControlComponent,\r\n} from './components';\r\nimport {\r\n NgbDropdownModule,\r\n NgbNavModule,\r\n NgbAccordionModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { NzSelectModule } from 'ng-zorro-antd/select';\r\nimport { DynamicFormModule } from '@dignite-ng/expand.dynamic-form';\r\nimport { Toolbar_Action_Contributors, Entity_Action_Contributors, Entity_Props_Contributors } from './resolvers/extensions-props-action-token.resolver';\r\nimport { ExtensibleModule } from '@abp/ng.components/extensible';\r\nimport { CreateOrEditSectionsModalComponent } from './components/admin/sections/create-or-edit-sections-modal.component';\r\nimport {DragDropModule} from '@angular/cdk/drag-drop';\r\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\r\nimport { EntryViewComponent } from './components/dynamic-form/entry/entry-view.component';\r\nimport { MatrixViewComponent } from './components/dynamic-form/matrix/matrix-view.component';\r\nimport { TableViewComponent } from './components/dynamic-form/table/table-view.component';\r\nimport { EntrySearchComponent } from './components/dynamic-form/entry/entry-search.component';\r\nimport { CKEditorModule } from '@ckeditor/ckeditor5-angular';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { GetLocalizedEntriesBySlugPipe } from './pipes/get-localized-entries-by-slug.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n EntriesComponent,\r\n FieldsComponent,\r\n SectionsComponent,\r\n FieldsGroupComponent,\r\n CreateFieldComponent,\r\n EditFieldComponent,\r\n CreateOrEditFieldComponent,\r\n CreateOrEditComponent,\r\n CreateComponent,\r\n EditComponent,\r\n CreateOrEditEntriesComponent,\r\n TableConfigComponent,\r\n TableControlComponent,\r\n MatrixConfigComponent,\r\n MatrixControlComponent,\r\n EntryConfigComponent,\r\n EntryControlComponent,\r\n EntryViewComponent,\r\n CreateOrEditSectionsModalComponent,\r\n MatrixViewComponent,\r\n TableViewComponent,\r\n EntrySearchComponent,\r\n \r\n ],\r\n imports: [\r\n CoreModule,\r\n ThemeSharedModule,\r\n CmsRoutingModule,\r\n NgbNavModule,\r\n NgbAccordionModule,\r\n NgbDropdownModule,\r\n PageModule,\r\n NzSelectModule,\r\n DynamicFormModule,\r\n ExtensibleModule,\r\n DragDropModule,\r\n NgxDatatableModule,\r\n CKEditorModule,\r\n FormsModule,\r\n // CommercialUiModule,\r\n GetLocalizedEntriesBySlugPipe,\r\n ],\r\n exports: [\r\n TableConfigComponent,\r\n TableControlComponent,\r\n MatrixConfigComponent,\r\n MatrixControlComponent,\r\n EntryConfigComponent,\r\n EntryControlComponent,\r\n EntryViewComponent,\r\n MatrixViewComponent,\r\n TableViewComponent,\r\n EntrySearchComponent,\r\n ],\r\n providers: [\r\n \r\n ],\r\n\r\n})\r\nexport class CmsModule {\r\n\r\n static forChild(options: any = {}): ModuleWithProviders<CmsModule> {\r\n return {\r\n ngModule: CmsModule,\r\n providers: [\r\n {\r\n provide: Toolbar_Action_Contributors,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: Entity_Action_Contributors,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: Entity_Props_Contributors,\r\n useValue: options.entityPropContributors,\r\n },\r\n \r\n ],\r\n };\r\n }\r\n static forLazy(options: any = {}): NgModuleFactory<CmsModule> {\r\n return new LazyModuleFactory(CmsModule.forChild(options));\r\n }\r\n}\r\n","/*\r\n * Public API Surface of cms\r\n */\r\n\r\nexport * from './lib/cms.module';\r\nexport * from './lib/components/dynamic-form/form-control-group';\r\nexport * from './lib/components/dynamic-form';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FieldGroupAdminService","i2.FormAdminService","i1.FieldAdminService","i1.FormAdminService","i2.FieldsDataService","i1.EntryAdminService","i2.SectionAdminService","i4","i5","i6.FormAdminService","i7.FieldAdminService","i8.FormControlsService","i9","i10","i12","i13","i15","i16","i17.GetLocalizedEntriesBySlugPipe","i1","i3","i6","i7","i8","i2","i5.CreateOrEditEntriesComponent","i9.FieldsGroupComponent","i9.CreateOrEditFieldComponent","i2.EntryTypeAdminService","i10.CreateOrEditSectionsModalComponent","i4.FieldGroupAdminService","i4.FieldAdminService","i5.EntryTypeAdminService","i7.FormControlsService","i11","i2.KeysConvertToLowercaseService","i1.KeysConvertToLowercaseService"],"mappings":"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"}
1
+ {"version":3,"file":"dignite-ng-expand.cms.mjs","sources":["../../../../packages/cms/src/lib/enums/ecms-component.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/entries/entry-admin.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/sections/entry-type-admin.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/sections/section-admin.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/entries/entry-status.enum.ts","../../../../packages/cms/src/lib/proxy/dignite/abp/regionalization-management/regionalization.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/sections/section-type.enum.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/dynamic-forms/form-admin.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/fields/field-admin.service.ts","../../../../packages/cms/src/lib/proxy/dignite/cms/admin/fields/field-group-admin.service.ts","../../../../packages/cms/src/lib/services/fields-data.service.ts","../../../../packages/cms/src/lib/services/form-controls.service.ts","../../../../packages/cms/src/lib/pipes/get-localized-entries-by-slug.pipe.ts","../../../../packages/cms/src/lib/components/admin/entries/entries.component.ts","../../../../packages/cms/src/lib/components/admin/entries/entries.component.html","../../../../packages/cms/src/lib/components/admin/entries/create-or-update-entry-input-base.ts","../../../../packages/cms/src/lib/components/admin/entries/create-or-edit-entries.component.ts","../../../../packages/cms/src/lib/components/admin/entries/create-or-edit-entries.component.html","../../../../packages/cms/src/lib/components/admin/entries/create.component.ts","../../../../packages/cms/src/lib/components/admin/entries/create.component.html","../../../../packages/cms/src/lib/components/admin/entries/edit.component.ts","../../../../packages/cms/src/lib/components/admin/entries/edit.component.html","../../../../packages/cms/src/lib/components/admin/fields/fields-group.component.ts","../../../../packages/cms/src/lib/components/admin/fields/fields-group.component.html","../../../../packages/cms/src/lib/components/admin/fields/fields.component.ts","../../../../packages/cms/src/lib/components/admin/fields/fields.component.html","../../../../packages/cms/src/lib/components/admin/fields/fields-form-config.ts","../../../../packages/cms/src/lib/components/admin/fields/create-or-edit-field.component.ts","../../../../packages/cms/src/lib/components/admin/fields/create-or-edit-field.component.html","../../../../packages/cms/src/lib/components/admin/fields/create-field.component.ts","../../../../packages/cms/src/lib/components/admin/fields/create-field.component.html","../../../../packages/cms/src/lib/components/admin/fields/edit-field.component.ts","../../../../packages/cms/src/lib/components/admin/fields/edit-field.component.html","../../../../packages/cms/src/lib/components/admin/fields/index.ts","../../../../packages/cms/src/lib/components/admin/sections/create-or-update-sections-input-base.ts","../../../../packages/cms/src/lib/components/admin/sections/create-or-edit-sections-modal.component.ts","../../../../packages/cms/src/lib/components/admin/sections/create-or-edit-sections-modal.component.html","../../../../packages/cms/src/lib/components/admin/sections/sections.component.ts","../../../../packages/cms/src/lib/components/admin/sections/sections.component.html","../../../../packages/cms/src/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.ts","../../../../packages/cms/src/lib/components/admin/sections/entry-types/create-or-edit.component.ts","../../../../packages/cms/src/lib/components/admin/sections/entry-types/create-or-edit.component.html","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-config.ts","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-config.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-config.component.html","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-control.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-control.component.html","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-view.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-view.component.html","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-search.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/entry/entry-search.component.html","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-config.ts","../../../../packages/cms/src/lib/services/keys-convert-to-lowercase.service.ts","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-config.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-config.component.html","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-control.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-control.component.html","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-view.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/matrix/matrix-view.component.html","../../../../packages/cms/src/lib/components/dynamic-form/table/table-config.ts","../../../../packages/cms/src/lib/components/dynamic-form/table/table-config.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/table/table-config.component.html","../../../../packages/cms/src/lib/components/dynamic-form/table/table-control.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/table/table-control.component.html","../../../../packages/cms/src/lib/components/dynamic-form/table/table-view.component.ts","../../../../packages/cms/src/lib/components/dynamic-form/table/table-view.component.html","../../../../packages/cms/src/lib/components/dynamic-form/form-control-group.ts","../../../../packages/cms/src/lib/resolvers/page-default-toolbar-actions.ts","../../../../packages/cms/src/lib/resolvers/table-default-entity-props.ts","../../../../packages/cms/src/lib/resolvers/table-default-entity-actions.ts","../../../../packages/cms/src/lib/resolvers/extensions-props-action-token.resolver.ts","../../../../packages/cms/src/lib/cms-routing.module.ts","../../../../packages/cms/src/lib/cms.module.ts","../../../../packages/cms/src/public-api.ts","../../../../packages/cms/src/dignite-ng-expand.cms.ts"],"sourcesContent":["export enum ECmsComponent {\n Entries=\"Cms.Entries\",\n Entries_Create=\"Cms.Entries.Create\",\n Entries_Edit=\"Cms.Entries.Edit\",\n Fields=\"Cms.Fields\",\n FieldsCreate=\"Cms.Fields.Create\",\n FieldsEdit=\"Cms.Fields.Edit\",\n Sites=\"Cms.Sites\",\n Sections=\"Cms.Sections\",\n SectionsCreateOrEdit=\"Cms.Sections.Create.Or.Edit\",\n}\n","import type { CreateEntryInput, CultureExistWithSingleSectionInput, EntryDto, GetEntriesInput, MoveEntryInput, SlugExistsInput, UpdateEntryInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { ListResultDto, PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EntryAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n activate = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'POST',\r\n url: `/api/cms-admin/entries/activate/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n create = (input: CreateEntryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryDto>({\r\n method: 'POST',\r\n url: '/api/cms-admin/entries',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n cultureExistWithSingleSection = (input: CultureExistWithSingleSectionInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entries/culture-exists-with-single-section',\r\n params: { culture: input.culture, sectionId: input.sectionId, entryTypeId: input.entryTypeId },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/cms-admin/entries/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryDto>({\r\n method: 'GET',\r\n url: `/api/cms-admin/entries/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getAllVersions = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ListResultDto<EntryDto>>({\r\n method: 'GET',\r\n url: `/api/cms-admin/entries/${id}/all-versions`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetEntriesInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<EntryDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entries',\r\n params: { culture: input.culture, sectionId: input.sectionId, entryTypeId: input.entryTypeId, startPublishDate: input.startPublishDate, expiryPublishDate: input.expiryPublishDate, status: input.status, creatorId: input.creatorId, queryingByFieldsJson: input.queryingByFieldsJson, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getListByIds = (sectionId: string, ids: string[], config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ListResultDto<EntryDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entries/search-by-ids',\r\n params: { sectionId, ids },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getLocalizedEntriesBySlug = (sectionId: string, slug: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ListResultDto<EntryDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entries/localized-entries-by-slug',\r\n params: { sectionId, slug },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n move = (id: string, input: MoveEntryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'POST',\r\n url: `/api/cms-admin/entries/move/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n slugExists = (input: SlugExistsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entries/slug-exists',\r\n params: { culture: input.culture, sectionId: input.sectionId, slug: input.slug },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateEntryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryDto>({\r\n method: 'PUT',\r\n url: '/api/cms-admin/entries',\r\n params: { id },\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateEntryTypeInput, EntryTypeDto, EntryTypeNameExistsInput, UpdateEntryTypeInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EntryTypeAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n create = (input: CreateEntryTypeInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryTypeDto>({\r\n method: 'POST',\r\n url: '/api/cms-admin/entry-types',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/cms-admin/entry-types/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryTypeDto>({\r\n method: 'GET',\r\n url: `/api/cms-admin/entry-types/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n nameExists = (input: EntryTypeNameExistsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: '/api/cms-admin/entry-types/name-exists',\r\n params: { sectionId: input.sectionId, name: input.name },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateEntryTypeInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, EntryTypeDto>({\r\n method: 'PUT',\r\n url: `/api/cms-admin/entry-types/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateSectionInput, GetSectionsInput, SectionDto, SectionNameExistsInput, SectionRouteExistsInput, UpdateSectionInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SectionAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n create = (input: CreateSectionInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, SectionDto>({\r\n method: 'POST',\r\n url: '/api/cms-admin/sections',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/cms-admin/sections/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, SectionDto>({\r\n method: 'GET',\r\n url: `/api/cms-admin/sections/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetSectionsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<SectionDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/sections',\r\n params: { filter: input.filter, isActive: input.isActive, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n nameExists = (input: SectionNameExistsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: '/api/cms-admin/sections/name-exists',\r\n params: { name: input.name },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n routeExists = (input: SectionRouteExistsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: '/api/cms-admin/sections/route-exists',\r\n params: { route: input.route },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateSectionInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, SectionDto>({\r\n method: 'PUT',\r\n url: `/api/cms-admin/sections/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { mapEnumToOptions } from '@abp/ng.core';\r\n\r\nexport enum EntryStatus {\r\n Draft = 0,\r\n Published = 1,\r\n}\r\n\r\nexport const entryStatusOptions = mapEnumToOptions(EntryStatus);\r\n","import type { RegionalizationDto, UpdateRegionalizationInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RegionalizationService {\r\n apiName = 'AbpRegionalizationManagement';\r\n \r\n\r\n get = (config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, RegionalizationDto>({\r\n method: 'GET',\r\n url: '/api/regionalization-management/regionalization',\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (input: UpdateRegionalizationInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, RegionalizationDto>({\r\n method: 'POST',\r\n url: '/api/regionalization-management/regionalization',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { mapEnumToOptions } from '@abp/ng.core';\r\n\r\nexport enum SectionType {\r\n Single = 0,\r\n Structure = 1,\r\n Channel = 2,\r\n}\r\n\r\nexport const sectionTypeOptions = mapEnumToOptions(SectionType);\r\n","import type { FormControlDto } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { ListResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n getFormControls = (config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, ListResultDto<FormControlDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/dynamic-forms/controls',\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateFieldInput, FieldDto, GetFieldsInput, UpdateFieldInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FieldAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n create = (input: CreateFieldInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldDto>({\r\n method: 'POST',\r\n url: '/api/cms-admin/fields',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/cms-admin/fields/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldDto>({\r\n method: 'GET',\r\n url: `/api/cms-admin/fields/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetFieldsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<FieldDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/fields',\r\n params: { filter: input.filter, groupId: input.groupId, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n nameExists = (name: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, boolean>({\r\n method: 'GET',\r\n url: `/api/cms-admin/fields/name-exists/${name}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateFieldInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldDto>({\r\n method: 'PUT',\r\n url: `/api/cms-admin/fields/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateOrUpdateFieldGroupInput, FieldGroupDto, GetFieldGroupsInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FieldGroupAdminService {\r\n apiName = 'CmsAdmin';\r\n \r\n\r\n create = (input: CreateOrUpdateFieldGroupInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldGroupDto>({\r\n method: 'POST',\r\n url: '/api/cms-admin/field-groups',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/cms-admin/field-groups/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldGroupDto>({\r\n method: 'GET',\r\n url: `/api/cms-admin/field-groups/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetFieldGroupsInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<FieldGroupDto>>({\r\n method: 'GET',\r\n url: '/api/cms-admin/field-groups',\r\n params: { input },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: CreateOrUpdateFieldGroupInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FieldGroupDto>({\r\n method: 'PUT',\r\n url: `/api/cms-admin/field-groups/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CreateFieldInput, CreateOrUpdateFieldGroupInput, FieldAdminService, FieldGroupAdminService, GetFieldsInput, UpdateFieldInput } from '../proxy/dignite/cms/admin/fields';\r\nimport { FormAdminService } from '../proxy/dignite/cms/admin/dynamic-forms';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FieldsDataService {\r\n\r\n constructor(\r\n private _fieldGroupService:FieldGroupAdminService,\r\n private _formService:FormAdminService,\r\n private _fieldService:FieldAdminService\r\n ) { }\r\n /**\r\n * 字段分组列表\r\n */\r\n fieldGroupsList:any[] = [];\r\n /**\r\n * 字段控件类型列表\r\n */\r\n fieldControlsTypesList:any[] = [];\r\n /**\r\n * 获取字段分组\r\n */\r\n getfieldGroups(newList = false){\r\n return new Promise((resolve,reject)=>{\r\n if(this.fieldGroupsList.length > 0&&newList == false){\r\n resolve(this.fieldGroupsList);\r\n return;\r\n }\r\n this._fieldGroupService.getList({}).subscribe(res=>{\r\n this.fieldGroupsList = res.items;\r\n resolve(res.items);\r\n },()=>{\r\n reject([]);\r\n })\r\n })\r\n }\r\n\r\n /**\r\n * 获取字段类型列表\r\n */\r\n getControlsfieldTypes():Promise<any[]>{\r\n return new Promise((resolve,reject)=>{\r\n \r\n if(this.fieldControlsTypesList.length > 0){\r\n resolve(this.fieldControlsTypesList);\r\n return;\r\n }\r\n this._formService.getFormControls({}).subscribe(res=>{\r\n this.fieldControlsTypesList = res.items;\r\n resolve(res.items);\r\n },()=>{\r\n reject([]);\r\n })\r\n })\r\n }\r\n\r\n /**创建分组 */\r\n createFieldGroup(input:CreateOrUpdateFieldGroupInput){\r\n return this._fieldGroupService.create(input);\r\n }\r\n /**编辑分组 */\r\n updateFieldGroup(id:string,input:CreateOrUpdateFieldGroupInput){\r\n return this._fieldGroupService.update(id,input);\r\n }\r\n /**删除分组 */\r\n deleteFieldGroup(id:string){\r\n return this._fieldGroupService.delete(id);\r\n }\r\n\r\n /**获取字段列表 */\r\n getFieldsList(input:GetFieldsInput){\r\n return this._fieldService.getList(input);\r\n }\r\n /**创建字段 */\r\n createField(input:CreateFieldInput){\r\n return this._fieldService.create(input);\r\n }\r\n /**编辑字段 */\r\n updateField(id:string,input:UpdateFieldInput){\r\n return this._fieldService.update(id,input);\r\n }\r\n /**获取字段详情 */\r\n getFieldDetail(id:string){\r\n return this._fieldService.get(id);\r\n }\r\n /**字段验证 */\r\n nameExists(name:string){\r\n return this._fieldService.nameExists(name);\r\n }\r\n /**删除字段 */\r\n deleteField(id:string){\r\n return this._fieldService.delete(id);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormAdminService } from '../proxy/dignite/cms/admin/dynamic-forms/form-admin.service';\r\nimport { FieldsDataService } from './fields-data.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormControlsService {\r\n constructor(private _FormAdminService: FormAdminService,private _service:FieldsDataService) {}\r\n /**需要查询的动态表单类型 */\r\n enableSearchTypeList: any[] = [];\r\n /**不需要展示的动态表单类型 */\r\n disableshowinTypeList: any[] = ['Table', 'FileExplorer', 'Matrix'];\r\n\r\n /**获取动态表单类型 */\r\n getDynamicFormType() {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve, rejects) => {\r\n const items:any= await this._service.getControlsfieldTypes()\r\n this.enableSearchTypeList = items.filter(el => el.enableSearch).map(el => el.name);\r\n resolve(items);\r\n });\r\n }\r\n\r\n async getEnableSearchTypeList() {\r\n if (this.enableSearchTypeList.length === 0) {\r\n await this.getDynamicFormType();\r\n }\r\n return this.enableSearchTypeList;\r\n }\r\n getdisableshowinTypeList() {\r\n return this.disableshowinTypeList;\r\n }\r\n}\r\n","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { SectionType } from '../proxy/dignite/cms/sections';\r\nimport { EntryAdminService } from '../proxy/dignite/cms/admin/entries';\r\n\r\n@Pipe({\r\n name: 'getLocalizedEntriesBySlug',\r\n standalone: true,\r\n})\r\nexport class GetLocalizedEntriesBySlugPipe implements PipeTransform {\r\n private _EntryAdminService = inject(EntryAdminService);\r\n\r\n async transform(value: any, ...args: any[]): Promise<any> {\r\n const { slug, sectionType } = value as any;\r\n // if (sectionType == SectionType.Single) {\r\n //获取别名下其他的语言版本\r\n const Entries:any= await this.getLocalizedEntriesBySlug(args[0], slug);\r\n //判断Entries中是否还有未创建的语言版本,如果有则返回false,所有的语言版本args[1]都创建了则返回true,\r\n const state = args[1].every(el => {\r\n if (Entries.find(el2 => el2.culture === el.cultureName)) {\r\n return true;\r\n }\r\n });\r\n return state;\r\n // }\r\n // return true;\r\n }\r\n\r\n /**获取别名下其他的语言版本 */\r\n getLocalizedEntriesBySlug(sectionId, slug) {\r\n return new Promise((resolve, rejects) => {\r\n this._EntryAdminService.getLocalizedEntriesBySlug(sectionId, slug).subscribe(\r\n res => {\r\n resolve(res.items);\r\n },\r\n err => {\r\n resolve([]);\r\n },\r\n );\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-constant-condition */\n/* eslint-disable no-async-promise-executor */\n/* eslint-disable @angular-eslint/component-selector */\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\nimport {\n ListService,\n LIST_QUERY_DEBOUNCE_TIME,\n ConfigStateService,\n LocalizationService,\n PagedResultDto,\n ABP,\n} from '@abp/ng.core';\nimport { ToasterService, ConfirmationService, Confirmation } from '@abp/ng.theme.shared';\nimport { ChangeDetectorRef, Component, OnInit, inject } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { ColumnMode } from '@swimlane/ngx-datatable';\nimport { finalize } from 'rxjs';\nimport { ECmsComponent } from '../../../enums';\nimport { UpdateListService } from '@dignite-ng/expand.core';\nimport {\n EntryAdminService,\n EntryDto,\n GetEntriesInput,\n} from '../../../proxy/dignite/cms/admin/entries';\nimport { SectionAdminService } from '../../../proxy/dignite/cms/admin/sections';\nimport { entryStatusOptions } from '../../../proxy/dignite/cms/entries';\nimport { RegionalizationService } from '../../../proxy/dignite/abp/regionalization-management';\nimport { SectionType } from '../../../proxy/dignite/cms/sections';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { FormAdminService } from '../../../proxy/dignite/cms/admin/dynamic-forms';\nimport { FieldAdminService } from '../../../proxy/dignite/cms/admin/fields';\nimport { FormControlsService } from '../../../services/form-controls.service';\n\n@Component({\n selector: 'cms-entries',\n templateUrl: './entries.component.html',\n styleUrls: ['./entries.component.scss'],\n providers: [\n ListService,\n // Provide this token if you want a different debounce time.\n // Default is 300. Cannot be 0. Any value below 100 is not recommended.\n { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: ECmsComponent.Entries,\n },\n ],\n})\nexport class EntriesComponent implements OnInit {\n constructor(\n private _EntryAdminService: EntryAdminService,\n private _SectionAdminService: SectionAdminService,\n private toaster: ToasterService,\n private confirmation: ConfirmationService,\n private configState: ConfigStateService,\n private router: Router,\n private _LocalizationService: LocalizationService,\n private _FormAdminService: FormAdminService,\n private _FieldAdminService: FieldAdminService,\n private cdRef: ChangeDetectorRef,\n private _FormControlsService: FormControlsService,\n ) {}\n\n private fb = inject(FormBuilder);\n private _UpdateListService = inject(UpdateListService);\n public readonly list = inject(ListService<GetEntriesInput>);\n\n /**板块类型 */\n SectionType = SectionType;\n\n ngOnInit(): void {\n this.getPageDate();\n this._UpdateListService.updateListEvent.subscribe(() => {\n this.data.items = [];\n this.data.totalCount = 0;\n this.list.get();\n });\n }\n\n /**站点下的版块 */\n SiteOfSectionList: any[any] = [];\n\n /**版块下的语言列表 */\n sectionLanguagesList: any[any] = [];\n /**版块下的条目类型列表 */\n entryTypeList: any[any] = [];\n /**状态编码 */\n _entryStatusOptions = entryStatusOptions;\n\n /**获取页面数据 */\n async getPageDate() {\n this.enableSearchTypeList = await this._FormControlsService.getEnableSearchTypeList();\n await this.getSiteOfSectionList();\n await this.getSectionLanguagesList();\n this.filters.sorting = 'creationTime desc';\n this.hookToQuery();\n }\n /**需要查询的动态表单类型 */\n enableSearchTypeList: any[] = [];\n /**需要查询的动态表单字段 */\n enableSearchFieldList: any[] = [];\n /**不需要展示的动态表单类型 */\n disableshowinTypeList: any[] = [];\n /**需要展示的动态列表字段 */\n showinFieldList: any[] = [];\n\n\n /**切换板块 */\n async sectionIdChange() {\n this.getSectionOfEntryType();\n await this.getSectionLanguagesList();\n this.resetData();\n }\n /**切换语言 */\n async cultureChange() {\n this.resetData();\n }\n\n /**获取站点下的版块 */\n getSiteOfSectionList() {\n return new Promise((resolve, rejects) => {\n this._SectionAdminService\n .getList({\n maxResultCount: 1000,\n })\n .subscribe(async (res: any) => {\n this.SiteOfSectionList = res.items.filter(el => el.isActive );\n this.filters.sectionId = res.items[0]?.id || '';\n await this.getSectionOfEntryType();\n resolve(res.items);\n });\n });\n }\n /**表单 */\n enablegearchFormEntity: FormGroup | undefined = this.fb.group({\n extraProperties: this.fb.group({}),\n });\n\n get extraPropertiesInput() {\n return this.enablegearchFormEntity?.get('extraProperties') as FormGroup;\n }\n\n /**设置筛选条件 */\n setfiltersValue() {\n return new Promise((resolve, rejects) => {\n const extraProperties = this.extraPropertiesInput.value;\n const inputs: any[] = [];\n for (const key in extraProperties) {\n const element = extraProperties[key];\n if (Array.isArray(element) ? (element.length > 0 ? element : null) : element) {\n inputs.push({\n name: key,\n value: element === true ? 'True' : Array.isArray(element) ? element.join(',') : element,\n });\n }\n if (element === false) {\n inputs.push({\n name: key,\n value: 'False',\n });\n }\n }\n this.filters.queryingByFieldsJson = inputs.length > 0 ? JSON.stringify(inputs) : '';\n resolve(true);\n });\n }\n\n async listget() {\n await this.setfiltersValue();\n this.list.get();\n // this.filters.\n }\n\n /**站点下板块的类型 */\n SiteOfSectionType: any = SectionType.Single;\n\n /**获取版块下的条目类型 */\n async getSectionOfEntryType() {\n // let sectionId = this.filtersForm.get('sectionId').value;\n const sectionId = this.filters.sectionId;\n const SectionInfo: any = await this.getSectionInfo(sectionId);\n const _entryTypeList = SectionInfo?.entryTypes || [];\n\n // let _entryTypeList = this.SiteOfSectionList.find(el => el.id == sectionId)?.entryTypes || [];\n this.entryTypeList = _entryTypeList;\n //选择板块的类型SectionType\n this.SiteOfSectionType = this.SiteOfSectionList.find(el => el.id == sectionId)?.type;\n if (this.SiteOfSectionType == SectionType.Structure) {\n this.maxResultCount = 1000;\n } else {\n this.maxResultCount = 10;\n }\n // 初始化数组\n this.enableSearchFieldList = [];\n this.showinFieldList = [];\n // _entryTypeList.length === 1\n if (true) {\n // this.filters.entryTypeId = this.entryTypeList[0].id;\n // 使用for...of替代forEach来处理异步\n for (const el of _entryTypeList) {\n for (const el1 of el.fieldTabs) {\n for (const el2 of el1.fields) {\n // el2.field = await this.getDynamicFormEntity(el2.fieldId);\n if (el2.enableSearch && this.enableSearchTypeList.includes(el2.field.formControlName)) {\n this.enableSearchFieldList.push({\n ...el2,\n field: {\n formControlName: el2.field.formControlName,\n formConfiguration: el2.field.formConfiguration,\n name: el2.field.name,\n },\n });\n }\n if (el2.showInList && !this.disableshowinTypeList.includes(el2.field.formControlName)) {\n this.showinFieldList.push(el2);\n }\n }\n }\n }\n }\n \n }\n async abpInitss() {\n await this.setfiltersValue();\n }\n /**获取板块详情 */\n getSectionInfo(ids) {\n return new Promise((resolve, rejects) => {\n this._SectionAdminService.get(ids).subscribe(res => {\n resolve(res);\n });\n });\n }\n /**获取字段详情 */\n getDynamicFormEntity(fieldId: string) {\n return new Promise((resolve, rejects) => {\n this._FieldAdminService.get(fieldId).subscribe(res => {\n resolve(res);\n });\n });\n }\n\n private config = inject(ConfigStateService);\n private _RegionalizationService = inject(RegionalizationService);\n /**获取版块下的语言列表 */\n getSectionLanguagesList() {\n return new Promise(async (resolve, rejects) => {\n //获取所有语言 */\n const languagesSystem = this.configState.getDeep('localization.languages');\n //获取系统默认语言 */\n let DefaultLanguage = this.config.getSetting('Abp.Regionalization.DefaultCultureName');\n const configCmsSiteLanguages = this.config.getSetting('Cms.Site.Languages');\n if (!configCmsSiteLanguages) {\n await this.getSiteSettingsLanguages();\n }\n if (this.defaultCultureName) {\n DefaultLanguage = this.defaultCultureName;\n }\n const LanguagesSite =\n (configCmsSiteLanguages ? configCmsSiteLanguages.split(',') : '') ||\n this.SiteSettingsAdminLanguages;\n const LanguagesArray = languagesSystem.filter(el => LanguagesSite.includes(el.cultureName));\n //获取当前选择的语言\n const nowculture = this.filters.culture;\n // let nowculture = this.filtersForm.get('culture').value;\n //当前选择的语言,是否在版块的的语言列表中\n const isexist = LanguagesArray.find(el => el.cultureName == nowculture);\n this.filters.culture = nowculture\n ? isexist\n ? nowculture\n : DefaultLanguage\n : DefaultLanguage;\n this.sectionLanguagesList = LanguagesArray;\n resolve(LanguagesArray);\n });\n }\n\n /**站点设置语言 */\n SiteSettingsAdminLanguages: any[] = [];\n /**站点设置的默认语言 */\n defaultCultureName: any = '';\n /**\n * 获取站点设置语言\n */\n getSiteSettingsLanguages() {\n return new Promise((resolve, rejects) => {\n this._RegionalizationService.get().subscribe(res => {\n this.SiteSettingsAdminLanguages = res.availableCultureNames;\n this.defaultCultureName = res.defaultCultureName;\n resolve(res);\n });\n });\n }\n\n resetData() {\n this.filters = {\n sectionId: this.filters.sectionId,\n culture: this.filters.culture,\n sorting : 'creationTime desc',\n } as GetEntriesInput;\n this.list.filter = '';\n this.list.maxResultCount = this.maxResultCount;\n this.list.page = 0;\n this.data.items = [];\n this.list.get();\n }\n\n /**新增-单个 */\n createEntriesBtn() {\n this.router.navigate(['/cms/admin/entries/create'], {\n queryParams: {\n cultureName: this.filters.culture,\n sectionId: this.filters.sectionId,\n entryTypeId: this.entryTypeList[0].id,\n },\n });\n }\n createCopyEntriesBtn() {\n this.router.navigate(['/cms/admin/entries/create-copy'], {\n queryParams: {\n cultureName: this.filters.culture,\n sectionId: this.filters.sectionId,\n entryTypeId: this.entryTypeList[0].id,\n },\n });\n }\n\n /**列表相关 */\n ColumnMode = ColumnMode;\n data: PagedResultDto<EntryDto> | any = {\n items: [],\n totalCount: 0,\n };\n\n filters = {} as GetEntriesInput;\n\n maxResultCount = 10;\n\n hookToQuery() {\n const getData = (query: ABP.PageQueryParams) =>\n this._EntryAdminService.getList({\n ...query,\n ...this.filters,\n maxResultCount: this.maxResultCount,\n });\n const setData = (list: PagedResultDto<EntryDto> | any) => {\n this.data.items = [];\n this.data.totalCount = 0;\n if (this.SiteOfSectionType == SectionType.Structure) {\n list.items = list.items.sort((a, b) => {\n return new Date(b.creationTime).getTime() - new Date(a.creationTime).getTime();\n });\n }\n for (const element of list.items) {\n const sectionItem=this.SiteOfSectionList.find(el=>el.id==element.sectionId);\n element.sectionType=sectionItem.type;\n }\n this.data = list;\n this.scrollToTop();\n };\n this.list.hookToQuery(getData).subscribe(setData);\n }\n scrollToTop() {\n const scrollContainer = document.getElementsByClassName('lpx-scroll-container')[0];\n (scrollContainer || window).scrollTo(0, 0);\n }\n\n /**判断某个类型的条目是否存在 */\n isEntryTypeExist(entryTypeId: string) {\n return this.data?.items?.some(el => el.entryTypeId == entryTypeId);\n }\n\n /**删除条目 */\n deletefield(row: any) {\n this.confirmation\n .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))\n .subscribe((status: Confirmation.Status) => {\n if (status == 'confirm') {\n this._EntryAdminService\n .delete(row.id)\n .pipe(finalize(() => {}))\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\n this.list.get();\n });\n }\n });\n }\n\n drop(event: any) {\n const previousId: any = this.data.items[event.previousIndex].id;\n const previousIndexOrder = this.data.items[event.previousIndex].order;\n const currentIndexOrder = this.data.items[event.currentIndex].order;\n let moveorder = currentIndexOrder;\n if (event.previousIndex == event.currentIndex) return\n if (previousIndexOrder < currentIndexOrder) {\n moveorder = currentIndexOrder + 1;\n }\n moveItemInArray(this.data.items, event.previousIndex, event.currentIndex);\n this._EntryAdminService\n .move(previousId, {\n order: moveorder,\n // order: event.currentIndex,\n })\n .pipe(\n finalize(() => {\n this.list.get();\n }),\n )\n .subscribe(\n res => {},\n err => {},\n );\n // moveItemInArray(this.rows, event.previousIndex, event.currentIndex);\n // this.rows = [...this.rows];\n }\n\n isexpanded: boolean | any = false;\n /**高级筛选切换 */\n expandedChange(event) {\n this.isexpanded = event;\n }\n}\n","<abp-page [title]=\"'Cms::Entries' | abpLocalization\" [toolbar]=\"true\">\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length < 1\" class=\"col \">\r\n </abp-page-toolbar-container>\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length === 1\" class=\"col \">\r\n <div class=\"row justify-content-end mx-0 gap-2\" *abpPermission=\"'CmsAdmin.Entry.Create'\">\r\n <div class=\"col-auto px-0 pt-0\">\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <button class=\"btn btn-sm btn-primary\"\r\n [disabled]=\"data.totalCount===1&&SiteOfSectionType===SectionType.Single\"\r\n [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.id}\"><i\r\n class=\"fa fa-plus me-2\"></i> {{'Cms::NewEntry'|abpLocalization}}</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length > 1\" class=\"col \">\r\n <div class=\"row justify-content-end mx-0 gap-2\" *abpPermission=\"'CmsAdmin.Entry.Create'\">\r\n <div class=\"col-auto px-0 pt-0\">\r\n <div ngbDropdown class=\"d-inline-block\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm ms-2\" id=\"dropdownBasic1\" ngbDropdownToggle>\r\n <i class=\"fa fa-plus pe-1\" aria-hidden=\"true\"></i>{{'Cms::NewEntry' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [disabled]=\"data.totalCount===1&&SiteOfSectionType===SectionType.Single&&isEntryTypeExist(item.id)\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.id}\">{{item.displayName}}</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div id=\"sites-page\" class=\"sites-page\">\r\n <div class=\"card\">\r\n <div class=\"card-body \">\r\n <div class=\"row align-items-end\">\r\n <div class=\"mb-3 col-md-3\">\r\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}:</label>\r\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.sectionId\"\r\n (change)=\"sectionIdChange()\">\r\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\r\n <option [value]=\"item.id\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3 col-md-3\">\r\n <label class=\"form-label\">{{'AbpUi::Languages' | abpLocalization}}:</label>\r\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.culture\" (change)=\"cultureChange()\">\r\n <ng-container *ngFor=\"let item of sectionLanguagesList\">\r\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3 col-md-6\">\r\n <!-- <div class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\r\n [placeholder]=\"'Cms::PagerSearch'|abpLocalization\" />\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"listget()\">\r\n <i class=\"bi bi-search\"></i>\r\n </button>\r\n </div> -->\r\n </div>\r\n </div>\r\n @if(filters.culture&&enablegearchFormEntity&&enableSearchFieldList.length>0){\r\n <div id=\"entries-advanced-form\" class=\"entries-advanced-form \" [hidden]=\"isexpanded\"\r\n (abpInit)=\"abpInitss()\">\r\n <form [formGroup]=\"enablegearchFormEntity\">\r\n <div class=\"row align-items-end\">\r\n <ng-container *ngFor=\"let el of enableSearchFieldList\">\r\n <ng-container *ngIf=\"el.field&&enablegearchFormEntity&&el.enableSearch\">\r\n <div class=\"col-md-3\">\r\n <df-dynamic-search [fields]=\"el\" [parentFiledName]=\"'extraProperties'\"\r\n [culture]=\"filters.culture\"\r\n [entity]=\"enablegearchFormEntity\"></df-dynamic-search>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-3 mb-3 \">\r\n <button type=\"button\" class=\"btn btn-primary \" (click)=\"listget()\">\r\n <span>{{ 'AbpUi::Refresh' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"card mb-0\">\r\n <div class=\"card-body p-0\">\r\n @if(SiteOfSectionType!==SectionType.Structure){\r\n <div class=\"table-responsive table-fixed-header\">\r\n <ngx-datatable class=\"material \" [rows]=\"data.items\" [list]=\"list\" [columnMode]=\"ColumnMode.force\"\r\n [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [virtualization]=\"false\"\r\n [externalPaging]=\"true\" [count]=\"data.totalCount\" [scrollbarH]=\"true\">\r\n <!-- <ngx-datatable-column [name]=\"'Cms::Title' | abpLocalization\" prop=\"title\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ value }}\r\n </ng-template>\r\n </ngx-datatable-column> -->\r\n <ngx-datatable-column [name]=\"'Cms::Slug' | abpLocalization\" prop=\"slug\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ value }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"entryTypeId\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <ng-container *ngIf=\"item.id === value\">{{item.displayName}}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <!-- <ngx-datatable-column [name]=\"'Cms::SectionType' | abpLocalization\" prop=\"sectionType\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ 'Cms::Enum:SectionType:'+SectionType[value] |\r\n abpLocalization }}\r\n </ng-template>\r\n </ngx-datatable-column> -->\r\n <!-- <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"entryTypeId\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <ng-container *ngIf=\"item.id === value\">{{item.displayName}}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column> -->\r\n \r\n <ngx-datatable-column [name]=\"'Cms::Status' | abpLocalization\" prop=\"status\" [width]=\"80\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of _entryStatusOptions\">\r\n <ng-container *ngIf=\"item.value=== value\">{{ 'Cms::Enum:EntryStatus:'+item.key |\r\n abpLocalization }}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n @for (item of showinFieldList; track $index) {\r\n <ngx-datatable-column [name]=\"'Cms::'+item.displayName | abpLocalization\"\r\n [prop]=\"item?.field?.name\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <df-dynamic-view [type]=\"item.field.formControlName\" [showInList]=\"true\" [fields]=\"item\"\r\n [value]=\"row?.extraProperties[item.field.name]\"></df-dynamic-view>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n <ngx-datatable-column [name]=\"'Cms::PublishTime' | abpLocalization\" prop=\"publishTime\"\r\n [width]=\"190\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{value | shortDateTime }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [sortable]=\"false\" [name]=\"'AbpUi::Actions' | abpLocalization\"\r\n [frozenLeft]=\"true\" [width]=\"110\" [maxWidth]=\"110\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <div ngbDropdown container=\"body\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\r\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem\r\n routerLink=\"/cms/admin/entries/{{row.id}}/edit\">{{'Cms::Edit' |\r\n abpLocalization}}</button>\r\n @if\r\n (((row|getLocalizedEntriesBySlug:filters.sectionId:sectionLanguagesList)|async)===false)\r\n {\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:row.entryTypeId,entryVersionId:row.id,isOther:1}\">{{'Cms::CreateOtherLanguages'\r\n |\r\n abpLocalization}} </button>\r\n }\r\n <button ngbDropdownItem (click)=\"deletefield(row)\">{{'Cms::Delete' |\r\n abpLocalization}}</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n </ngx-datatable>\r\n </div>\r\n }\r\n\r\n @if(SiteOfSectionType===SectionType.Structure){\r\n <div class=\"table-responsive table-fixed-header\">\r\n <table class=\"table overflow-nowrap mb-0\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <thead>\r\n <tr>\r\n <th class=\"sticky-left-card-bg\"> <span\r\n class=\"bi bi-arrows-move fs-5 drag-handle me-2 opacity-0\"></span>{{'AbpUi::Actions'\r\n | abpLocalization}}</th>\r\n <th>{{'Cms::Slug' | abpLocalization}}</th>\r\n <!-- <th>{{'Cms::Title' | abpLocalization}}</th> -->\r\n <th>{{'Cms::SectionType' | abpLocalization}}</th>\r\n <th>{{'Cms::EntryType' | abpLocalization}}</th>\r\n <th>{{'Cms::Status' | abpLocalization}}</th>\r\n @for (item of showinFieldList; track $index) {\r\n <th>{{'Cms::'+item.displayName | abpLocalization}}</th>\r\n }\r\n <th>{{'Cms::PublishTime' | abpLocalization}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of data.items\" cdkDrag>\r\n <td class=\"sticky-left-card-bg\">\r\n <div ngbDropdown container=\"body\">\r\n <span class=\"bi bi-arrows-move fs-5 drag-handle me-2\" cdkDragHandle></span>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\r\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem\r\n routerLink=\"/cms/admin/entries/{{item.id}}/edit\">{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n @if\r\n (((item|getLocalizedEntriesBySlug:filters.sectionId:sectionLanguagesList)|async)===false)\r\n {\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.entryTypeId,entryVersionId:item.id,isOther:1}\">{{'Cms::CreateOtherLanguages'\r\n |\r\n abpLocalization}}</button>\r\n }\r\n <!-- <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:row.entryTypeId,entryVersionId:row.id,isOther:1}\">{{'Cms::CreateOtherLanguages'\r\n |\r\n abpLocalization}} </button> -->\r\n\r\n <button ngbDropdownItem (click)=\"deletefield(item)\">{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </div>\r\n </div>\r\n </td>\r\n <!-- <td class=\"white-space-normal\">{{item.title}}</td> -->\r\n <td class=\"white-space-normal\">{{item.slug}}</td>\r\n <td>\r\n {{ 'Cms::Enum:SectionType:'+SectionType[item.sectionType] |\r\n abpLocalization }}\r\n </td>\r\n <td>\r\n <ng-container *ngFor=\"let item1 of entryTypeList\">\r\n <ng-container\r\n *ngIf=\"item1.id === item.entryTypeId\">{{item1.displayName}}</ng-container>\r\n </ng-container>\r\n </td>\r\n \r\n <td>\r\n <ng-container *ngFor=\"let item2 of _entryStatusOptions\">\r\n <ng-container *ngIf=\"item.status=== item2.value\">{{\r\n 'Cms::Enum:EntryStatus:'+item2.key |\r\n abpLocalization }}</ng-container>\r\n </ng-container>\r\n </td>\r\n @for (item1 of showinFieldList; track $index) {\r\n <td>\r\n <df-dynamic-view [type]=\"item1.field.formControlName\" [showInList]=\"true\"\r\n [fields]=\"item1\"\r\n [value]=\"item?.extraProperties[item1.field.name]\"></df-dynamic-view>\r\n\r\n </td>\r\n }\r\n <td>{{item.publishTime | shortDateTime }}</td>\r\n </tr>\r\n </tbody>\r\n @if(data.items.length === 0){\r\n <div class=\"text-muted p-2\">\r\n {{ 'Cms::NoDataAvailableInDatatable' | abpLocalization}}\r\n </div>\r\n }\r\n </table>\r\n </div>\r\n <div class=\"card-footer py-2\">\r\n <small class=\"text-muted\"> {{data.totalCount}} {{ 'Cms::Total' | abpLocalization}}</small>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</abp-page>","import { FormGroup, Validators } from \"@angular/forms\";\r\n\r\nexport class CreateOrUpdateEntryInputBase {\r\n\r\n /**条目id */\r\n entryTypeId: any = ['']\r\n /**标题 */\r\n // title: any = ['', [Validators.required]]\r\n /**别名 */\r\n slug: any = ['', [Validators.required]]\r\n /**语言 */\r\n culture: any = ['']\r\n /**是否是草稿 */\r\n draft: any = ['', []]\r\n /**发布时间 */\r\n publishTime: any = ['', [Validators.required]]\r\n /**上级目录 */\r\n parentId: any = [null]\r\n /**修订说明 */\r\n versionNotes: any = [null]\r\n /**版本 */\r\n initialVersionId: any = [null]\r\n extraProperties: FormGroup | undefined = new FormGroup({})\r\n}\r\n\r\n\r\nexport const EntriesToFormLabelMap={\r\n \"title\":\"Cms::Title\",\r\n \"slug\":\"Cms::Slug\",\r\n \"culture\":\"Cms::Languages\",\r\n \"draft\":\"Cms::EntryType\",\r\n \"publishTime\":\"Cms::publishTime\",\r\n \"parentId\":\"Cms::ParentEntry\",\r\n}\r\n\r\n","/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable @angular-eslint/component-selector */\nimport { ConfigStateService, LocalizationService } from '@abp/ng.core';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, ValidationErrors } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { DatePipe, Location } from '@angular/common';\nimport { SectionAdminService } from '../../../proxy/dignite/cms/admin/sections';\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';\nimport { Observable } from 'rxjs';\nimport { RegionalizationService } from '../../../proxy/dignite/abp/regionalization-management';\nimport { ToPinyinService } from '@dignite-ng/expand.core';\n\n@Component({\n selector: 'cms-create-or-edit-entries',\n templateUrl: './create-or-edit-entries.component.html',\n styleUrls: ['./create-or-edit-entries.component.scss'],\n})\nexport class CreateOrEditEntriesComponent {\n private toaster = inject(ToasterService);\n public _location = inject(Location);\n private configState = inject(ConfigStateService);\n private _SectionAdminService = inject(SectionAdminService);\n private _EntryAdminService = inject(EntryAdminService);\n private datePipe = inject(DatePipe);\n private _LocalizationService = inject(LocalizationService);\n private router = inject(Router);\n private cdRef = inject(ChangeDetectorRef);\n private _RegionalizationService = inject(RegionalizationService);\n constructor(private toPinyinService: ToPinyinService) {}\n\n /**语言列表 */\n languagesList: any[] = [];\n /**条目列表-选择上级条目 */\n entryList: any[] = [];\n /**条目信息 */\n entryInfo: any = '';\n /**版本信息 */\n sectionInfo: any = '';\n /**需要展示的b板块下条目类型 */\n showEntryType: any = '';\n /**版本条目id */\n entryVersionId: any = '';\n /**版本列表 */\n AllVersionsList: any[] = [];\n //tab切换下标\n tabActive = 0;\n\n @Input() isEdit: boolean | any = false;\n //是否正在创建版本\n @Input() isCreateVersion: boolean | any = false;\n\n @Input() sectionId: string | any = '';\n @Input() entryTypeId: string | any = '';\n @Input() public set select(v: any) {\n this.entryVersionId = v.id;\n this.entryInfo = v;\n }\n /**向父级反馈信息 */\n @Output() feedbackChildInfo = new EventEmitter();\n\n formEntity: FormGroup | undefined;\n @Input() set entity(value: FormGroup | undefined) {\n this.formEntity = value;\n if (value) {\n this.loadData();\n }\n }\n /**是否加载完成 */\n isLoad: boolean | any = false;\n /**是否创建其他语言本 */\n @Input() isOther: any = 0;\n\n /**系统默认语言 */\n DefaultLanguage: string | any = '';\n\n /**语言控件 */\n get cultureInput(): FormControl {\n return this.formEntity?.get('culture') as FormControl;\n }\n get slugInput(): FormControl {\n return this.formEntity?.get('slug') as FormControl;\n }\n get initialVersionIdInput(): FormControl {\n return this.formEntity?.get('initialVersionId') as FormControl;\n }\n\n /**获取提交按钮替身,用于真实触发表单提交 */\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n /**站点设置语言 */\n SiteSettingsAdminLanguages: any[] = [];\n /**站点设置的默认语言 */\n defaultCultureName: any = '';\n /**\n * 获取站点设置语言\n */\n getSiteSettingsLanguages() {\n return new Promise((resolve, rejects) => {\n this._RegionalizationService.get().subscribe(res => {\n this.SiteSettingsAdminLanguages = res.availableCultureNames;\n this.defaultCultureName = res.defaultCultureName;\n resolve(res);\n });\n });\n }\n\n /**加载数据 */\n async loadData() {\n await this.getSiteSettingsLanguages();\n //获取语言列表\n const languagesSystem = this.configState.getDeep('localization.languages');\n //获取系统默认语言 */\n this.DefaultLanguage = this.defaultCultureName;\n // this.DefaultLanguage = this.configState.getSetting('Abp.Regionalization.DefaultCultureName');\n //选中languagesSystem中的cultureName在 languagesSystem中存在的数组项\n\n this.languagesList = languagesSystem.filter(el =>\n this.SiteSettingsAdminLanguages.includes(el.cultureName),\n );\n if (this.sectionId) {\n await this.getSectionInfo();\n await this.getEntryList();\n }\n if (!(this.isOther == 1)) {\n this.cultureInput.disable();\n }\n const repetition = await this.cultureAsyncValidator();\n if (repetition) this.cultureInput.setErrors(repetition);\n this.slugInput.addValidators(this.SlugRegExValidator());\n this.slugInput.addAsyncValidators(this.SlugAsyncValidator());\n if (this.entryInfo) {\n await this.getAllVersionsList();\n this.formEntity.patchValue({\n entryTypeId: this.entryInfo.entryTypeId,\n publishTime: this.datePipe.transform(this.entryInfo.publishTime, 'yyyy-MM-dd HH:mm:ss'),\n // title: this.entryInfo.title,\n slug: this.entryInfo.slug,\n parentId: this.entryInfo.parentId,\n versionNotes: this.entryInfo.versionNotes,\n initialVersionId: this.entryInfo.id,\n });\n this.slugInput.setErrors({});\n this.slugInput.setErrors(null);\n } else {\n this.formEntity.patchValue({\n entryTypeId: this.entryTypeId,\n publishTime: this.datePipe.transform(new Date(), 'yyyy-MM-dd HH:mm:ss'),\n });\n }\n\n this.cdRef.detectChanges();\n\n this.cdRef.detectChanges();\n this.feedbackChildInfo.emit({\n showEntryType: this.showEntryType,\n });\n this.isLoad = true;\n if (this.isOther == 1) {\n this.initialVersionIdInput.patchValue('');\n this.slugInput.disable();\n await this.getLocalizedEntriesBySlug();\n }\n\n setTimeout(() => {\n // this.submitclick?.nativeElement.click();\n }, 0);\n }\n\n /**获取别名下其他的语言版本 */\n getLocalizedEntriesBySlug() {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService\n .getLocalizedEntriesBySlug(this.sectionId, this.slugInput.value)\n .subscribe(\n res => {\n // console.log(res,'获取别名下其他的语言版本',this.slugInput.value);\n this.languagesList = this.languagesList.filter(\n el => !res.items.find(el2 => el2.culture === el.cultureName),\n );\n this.cultureInput.patchValue(this.languagesList[0].cultureName);\n resolve(res);\n },\n err => {\n resolve(null);\n },\n );\n });\n }\n SlugRegExValidator() {\n return (control: AbstractControl): { [key: string]: any } | null => {\n const regex = /^[a-zA-Z0-9_-]+$/;\n if (control.value && !regex.test(control.value)) {\n return { repetition: this._LocalizationService.instant(`Cms::SlugValidatorsText`) };\n }\n\n return null;\n };\n }\n\n // /**别名查重 */\n SlugAsyncValidator() {\n return (\n control: AbstractControl,\n ): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {\n return new Promise(resolve => {\n if (control.value) {\n if (control.value == this.entryInfo?.slug) {\n resolve(null);\n return;\n }\n this._EntryAdminService\n .slugExists({\n culture: this.cultureInput.value,\n sectionId: this.sectionId,\n slug: control.value,\n })\n .subscribe(res => {\n if (res) {\n resolve({\n repetition: this._LocalizationService.instant(\n `Cms::EntrySlug{0}AlreadyExist`,\n control.value,\n ),\n });\n } else {\n resolve(null);\n }\n });\n }\n });\n };\n }\n\n /**定义自定义异步验证 */\n cultureAsyncValidator() {\n return new Promise(resolve => {\n const culture = this.cultureInput.value;\n if (culture == this.entryInfo?.culture || this.sectionInfo.type !== 0) return resolve(null);\n this._EntryAdminService\n .cultureExistWithSingleSection({\n culture: culture,\n sectionId: this.sectionId,\n entryTypeId: this.entryTypeId,\n })\n .subscribe(res => {\n if (res) {\n resolve({\n repetition: this._LocalizationService.instant(\n `Cms::EntriesAlreadyExistEntryType`,\n '',\n this.languagesList.find(el => el.cultureName == culture).displayName,\n ),\n });\n } else {\n resolve(null);\n }\n });\n });\n }\n\n /**获取板块信息 */\n getSectionInfo() {\n return new Promise((resolve, reject) => {\n this._SectionAdminService.get(this.sectionId).subscribe(res => {\n this.showEntryType = res.entryTypes.find(el => el.id == this.entryTypeId);\n this.sectionInfo = res;\n resolve(res);\n });\n });\n }\n /**获取板块下所有条目 */\n getEntryList() {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService\n .getList({\n sectionId: this.sectionId,\n maxResultCount: 1000,\n culture: this.cultureInput.value,\n })\n .subscribe((res: any) => {\n const entryList = res.items.filter(el => el.id !== this.entryInfo?.id);\n const parentList = entryList.filter(el => !el.parentId);\n parentList.forEach(el => {\n const layer: number | any = 0;\n el.layer = new Array(layer);\n el.children = this.groupByParentId(entryList, el.id, layer + 1);\n });\n this.entryList = parentList;\n resolve(res);\n });\n });\n }\n /**对数组按照父子关系进行分组 */\n groupByParentId(arr, id = '', layer) {\n let result = [];\n result = arr.filter(el => el.parentId == id);\n result.forEach(el => {\n el.layer = new Array(layer);\n el.children = this.groupByParentId(arr, el.id, layer + 1);\n });\n return result;\n }\n /**别名转化 */\n slugChange(event: any) {\n console.log(event, '别名转化');\n const val = event.target.value;\n //将val字段中的特殊字符替换为-,允许输入字母,数字,下划线,中划线,小数点\n const newVal = val.replace(/[^\\-.\\w\\s]/g, '-');\n \n //将newVal字段中的空格替换为-\n const newVal2 = newVal.replace(/\\s+/g, '-');\n //将newVal2字段中的多个-替换为单个-\n const newVal3 = newVal2.replace(/-+/g, '-');\n //如果-在开头或者结尾,则删除\n const newVal4 = newVal3.replace(/^-|-$/g, '');\n\n this.slugInput.patchValue(newVal4);\n }\n\n \n\n /**获取条目版本列表 */\n getAllVersionsList() {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService.getAllVersions(this.entryInfo.id).subscribe(res => {\n this.AllVersionsList = res.items;\n resolve(res);\n });\n });\n }\n\n /**激活 */\n ActivatedVersion(VersionId) {\n this._EntryAdminService.activate(VersionId).subscribe(res => {\n this.AllVersionsList.forEach(el => {\n el.isActivatedVersion = el.id === VersionId;\n });\n return;\n });\n }\n /**编辑版本 */\n toEditUrl(id) {\n this.router.navigateByUrl('', { skipLocationChange: true }).then(() => {\n this.router.navigate([`/cms/admin/entries/${id}/edit`]);\n });\n }\n /**删除版本 */\n delectVersion(vid) {\n this._EntryAdminService.delete(vid).subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\n this.getAllVersionsList();\n });\n }\n}\n","<div [formGroup]=\"formEntity\">\r\n <div class=\"row create-or-edit-entries-page\">\r\n <div class=\"col-md-8\">\r\n <div class=\"card\">\r\n <div class=\"card-body py-0\">\r\n <!-- <div class=\"mb-3\">\r\n <div class=\"form-label\">{{'Cms::Title' | abpLocalization}}</div>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"title\"\r\n (blur)=\"setTitleToSlugBlur($event)\">\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"isLoad\">\r\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"tabActive\" [destroyOnHide]=\"false\" class=\"nav-tabs mb-0\">\r\n <ng-container *ngFor=\"let item of showEntryType?.fieldTabs;let i =index\">\r\n <li [ngbNavItem]=\"i\" [destroyOnHide]=\"false\">\r\n <button ngbNavLink *ngIf=\"showEntryType?.fieldTabs.length>1\">{{item.name}}</button>\r\n <ng-template ngbNavContent>\r\n <ng-container *ngFor=\"let el of item.fields;let i1 =index\">\r\n <ng-container *ngIf=\"el&&formEntity\">\r\n <df-dynamic-control [fields]=\"el\"\r\n [selected]=\"entryInfo ? entryInfo.extraProperties[el.field.name] : ''\"\r\n [parentFiledName]=\"'extraProperties'\" [culture]=\"cultureInput.value\"\r\n [entity]=\"formEntity\"></df-dynamic-control>\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n\r\n <div [ngbNavOutlet]=\"nav\" class=\"\"></div>\r\n </ng-container>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"mb-3\">\r\n <div class=\"form-label\">{{'Cms::Slug' | abpLocalization}}</div>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"slug\" (change)=\"slugChange($event)\">\r\n <div class=\"text-danger\" *ngIf=\"slugInput.dirty\">\r\n {{slugInput?.errors?.repetition}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-label\">{{'AbpUi::Languages' | abpLocalization}}</div>\r\n <select class=\"form-select form-select-multiple\" formControlName=\"culture\">\r\n <ng-container *ngFor=\"let item of languagesList;let i =index\">\r\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n <div class=\"text-danger\" *ngIf=\"cultureInput.dirty\">\r\n {{cultureInput?.errors?.repetition}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-label\">{{'Cms::EntryType' | abpLocalization}}</div>\r\n <input type=\"text\" disabled [value]=\"showEntryType?.displayName||''\" class=\"form-select\" />\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"sectionInfo.type===1\">\r\n <label class=\"form-label\" for=\"parentId\">{{'Cms::ParentEntry' | abpLocalization}}</label>\r\n <select class=\"form-select \" formControlName=\"parentId\">\r\n <option value=\"\"></option>\r\n <ng-container *ngFor=\"let item of entryList;let i =index\">\r\n <option [value]=\"item.id\">{{item.title}}</option>\r\n <ng-container *ngFor=\"let el of item.children\">\r\n <ng-container *ngTemplateOutlet=\"childTemplate; context: {\r\n $implicit: {\r\n value: el,\r\n }\r\n }\"></ng-container>\r\n <ng-template #childTemplate let-data>\r\n <option [value]=\"data.value.id\">\r\n <ng-container *ngFor=\"let item of data.value.layer\">--</ng-container>\r\n {{data.value.title}}\r\n </option>\r\n <ng-container *ngFor=\"let el of data.value.children\">\r\n <ng-container *ngTemplateOutlet=\"childTemplate; context: {\r\n $implicit: {\r\n value: el,\r\n }\r\n }\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::PublishTime' | abpLocalization}}</label>\r\n <input type=\"datetime-local\" class=\"form-control\" step=\"1\" formControlName=\"publishTime\">\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"isEdit\">\r\n <label class=\"form-label\" for=\"Version\">{{'Cms::Version' | abpLocalization}}</label>\r\n <ul class=\"list-group\">\r\n <ng-container *ngFor=\"let item of AllVersionsList\">\r\n <li\r\n class=\"list-group-item flex-between d-flex align-items-center justify-content-between\">\r\n <div>\r\n {{item.initialVersionId?(item.creationTime| date: 'YYYY/MM/dd\r\n HH:mm:s'):('Cms::InitialVersion' | abpLocalization)}}\r\n <span class=\"badge text-bg-success ms-1\"\r\n *ngIf=\"item.isActivatedVersion\">{{'Cms::IsActive' | abpLocalization}}</span>\r\n <span class=\"badge text-bg-primary ms-1\"\r\n *ngIf=\"item.id === entryVersionId\">{{'Cms::Editing' |\r\n abpLocalization}}</span>\r\n </div>\r\n <div>\r\n <div ngbDropdown class=\"d-inline-block\">\r\n <button type=\"button\" class=\"btn btn-link-primary p-2 \"\r\n style=\"line-height: 0;\" id=\"dropdownBasic1\" ngbDropdownToggle>\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\r\n <button ngbDropdownItem type=\"button\" *ngIf=\"!item.isActivatedVersion\"\r\n (click)=\"ActivatedVersion(item.id)\">\r\n <i class=\"fas fa-check me-1\"></i>{{'Cms::IsActive' |\r\n abpLocalization}}\r\n </button>\r\n <button ngbDropdownItem type=\"button\"\r\n routerLink=\"/cms/admin/entries/create\"\r\n [queryParams]=\"{entryVersionId:item.id}\">\r\n <i class=\"fas fa-plus me-1\"></i>{{'Cms::NewVersion' |\r\n abpLocalization}}\r\n </button>\r\n <button ngbDropdownItem type=\"button\" (click.stop)=\"toEditUrl(item.id)\"\r\n *ngIf=\"item.id !== entryVersionId\">\r\n <i class=\"fas fa-edit me-1\"></i>{{'AbpUi::Edit' | abpLocalization}}\r\n </button>\r\n <button ngbDropdownItem type=\"button\"\r\n (click.stop)=\"delectVersion(item.id)\"\r\n *ngIf=\"item.initialVersionId&&!item.isActivatedVersion&&item.id !== entryVersionId\">\r\n <i class=\"fas fa-trash me-1\"></i>{{'AbpUi::Delete' |\r\n abpLocalization}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"entryInfo\">\r\n <label class=\"form-label\" for=\"versionNotes\">{{'Cms::RevisionNotes' | abpLocalization}}</label>\r\n <textarea class=\"form-control\" formControlName=\"versionNotes\" rows=\"3\"></textarea>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</div>","/* eslint-disable @angular-eslint/component-selector */\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\nimport { LocalizationService } from '@abp/ng.core';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { Location } from '@angular/common';\nimport { Component, OnInit, inject, ViewChild, ElementRef } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n// import { EntryAdminService } from '../../../proxy/admin/entries';\nimport { ECmsComponent } from '../../../enums';\nimport {\n CreateOrUpdateEntryInputBase,\n EntriesToFormLabelMap,\n} from './create-or-update-entry-input-base';\nimport {\n ValidatorsService,\n UpdateListService,\n LocationBackService,\n DigniteValidatorsService,\n} from '@dignite-ng/expand.core';\nimport { finalize } from 'rxjs';\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';\n\n@Component({\n selector: 'cms-create',\n templateUrl: './create.component.html',\n styleUrls: ['./create.component.scss'],\n providers: [\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: ECmsComponent.Entries_Create,\n },\n ],\n})\nexport class CreateComponent implements OnInit {\n private fb = inject(FormBuilder);\n private _updateListService = inject(UpdateListService);\n private toaster = inject(ToasterService);\n public _location = inject(Location);\n private route = inject(ActivatedRoute);\n private router = inject(Router);\n private _EntryAdminService = inject(EntryAdminService);\n private _LocalizationService = inject(LocalizationService);\n private _ValidatorsService = inject(ValidatorsService);\n\n /**获取提交按钮替身,用于真实触发表单提交 */\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /**表单验证状态\n * {\n * title:true,\n * }\n */\n formValidation: any = '';\n /**表单实体 */\n formEntity: FormGroup | undefined;\n /**语言 */\n cultureName: string | any = '';\n /**条目类型id */\n entryTypeId: string | any = '';\n /**版块id */\n sectionId: string | any = '';\n /**条目版本id */\n entryVersionId: string | any = '';\n /**条目信息 */\n entryInfo: any = '';\n /**是否创建其他语言版本 */\n isOther: string | any = 0;\n\n /**是否草稿控件*/\n get draftInput() {\n return this.formEntity?.get('draft') as FormControl;\n }\n /**语言控件 */\n get cultureInput(): FormControl {\n return this.formEntity?.get('culture') as FormControl;\n }\n\n async ngOnInit(): Promise<void> {\n const queryParams = this.route.snapshot.queryParams;\n\n this.cultureName = queryParams.cultureName;\n this.entryTypeId = queryParams.entryTypeId;\n this.sectionId = queryParams.sectionId;\n this.entryVersionId = queryParams.entryVersionId;\n this.isOther = queryParams.isOther || 0;\n this.formEntity = this.fb.group(new CreateOrUpdateEntryInputBase());\n this.cultureInput.patchValue(this.cultureName);\n if (this.entryVersionId) await this.getEntryInfo();\n }\n /**获取条目信息 */\n getEntryInfo() {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService.get(this.entryVersionId).subscribe(res => {\n this.cultureName = res.culture;\n this.entryTypeId = res.entryTypeId;\n this.sectionId = res.sectionId;\n this.entryInfo = res;\n\n resolve(res);\n });\n });\n }\n /**显示条目类型信息 */\n showEntryTypeInfo: any = '';\n /**反馈子级页面信息 */\n _feedbackChildInfo(event) {\n this.showEntryTypeInfo = event?.showEntryType || '';\n }\n\n\n private _LocationBackService = inject(LocationBackService);\n private _DigniteValidatorsService = inject(DigniteValidatorsService);\n\n /**提交 */\n save() {\n const input = this.formEntity?.value;\n \n input.publishTime = new Date(\n new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000,\n ).toISOString();\n this.formEntity.markAllAsTouched();\n this.formValidation=true;\n// console.log(input,'提交',this.formEntity)\n if (!this.formEntity.valid) {\n for (const item of this.showEntryTypeInfo.fieldTabs) {\n for (const el of item.fields) {\n const info = `${this._LocalizationService.instant(\n `Cms::The{1}FieldUnderThe{0}TAB`,\n item.name,\n el.field.displayName,\n )}`;\n EntriesToFormLabelMap[el.field.name] = info;\n }\n }\n\n this._DigniteValidatorsService.getErrorMessage({\n form: this.formEntity,\n map: EntriesToFormLabelMap,\n });\n\n this.isSubmit = false;\n if (this.isOther == 1) {\n this.slugInput.disable();\n }\n this.cultureInput.disable();\n\n return;\n }\n \n this._EntryAdminService\n .create(input)\n .pipe(\n finalize(() => {\n this.isSubmit = false;\n }),\n )\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\n\n //检测该页面上一级是否是系统页面,如果是返回上一页,如果不是,则使用页面跳转到上一级页面。\n this._LocationBackService.backTo({\n url: `/cms/admin/entries`,\n replenish: '/create',\n });\n\n this._updateListService.updateList();\n });\n }\n isSubmit: boolean | any = false;\n /**点击提交 */\n clickSubmit(type) {\n // if (this.isSubmit) return;\n // this.isSubmit = true;\n this.draftInput.patchValue(type);\n this.cultureInput.enable();\n if (this.isOther == 1) {\n this.slugInput.enable();\n }\n this.formEntity.updateValueAndValidity();\n setTimeout(() => {\n this.submitclick.nativeElement.click();\n }, 0);\n }\n get slugInput(): FormControl {\n return this.formEntity?.get('slug') as FormControl;\n }\n\n /**返回上一页 */\n backTo() {\n this._location.back();\n }\n}\n","<abp-page [title]=\"'Cms::New'| abpLocalization\" [toolbar]=\"true\">\r\n <form class=\"row g-3 needs-validation\" [formGroup]=\"formEntity\" [class]=\"{'was-validated':formValidation}\"\r\n (submit)=\"save()\">\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n <ng-container *ngIf=\"formEntity&&sectionId\">\r\n <ng-container *ngIf=\"entryVersionId; else elseTemplate\">\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"false\"\r\n [select]=\"entryInfo\" [isCreateVersion]=\"true\" [isOther]=\"isOther\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\"\r\n [isEdit]=\"false\" [select]=\"entryInfo\" [isOther]=\"isOther\"\r\n [entity]=\"formEntity\" ></cms-create-or-edit-entries>\r\n </ng-template>\r\n </ng-container>\r\n </form>\r\n</abp-page>","/* eslint-disable @angular-eslint/component-selector */\n/* eslint-disable @angular-eslint/use-lifecycle-interface */\n\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\nimport { LocalizationService } from '@abp/ng.core';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { Location } from '@angular/common';\nimport { Component, OnInit, inject, ViewChild, ElementRef } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n// import { EntryAdminService } from '../../../proxy/admin/entries';\nimport { ECmsComponent } from '../../../enums';\nimport { DigniteValidatorsService, LocationBackService, UpdateListService } from '@dignite-ng/expand.core';\nimport { CreateOrUpdateEntryInputBase, EntriesToFormLabelMap } from './create-or-update-entry-input-base';\n// import { ValidatorsService } from '@dignite-ng/expand.core';\nimport { finalize } from 'rxjs';\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';\n// import { ClassicEditor, Essentials, Paragraph, Bold, Italic } from 'ckeditor5';\n\n@Component({\n selector: 'cms-edit',\n templateUrl: './edit.component.html',\n styleUrls: ['./edit.component.scss'],\n providers: [\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: ECmsComponent.Entries_Edit,\n },\n ],\n})\nexport class EditComponent implements OnInit {\n private fb = inject(FormBuilder);\n private _updateListService = inject(UpdateListService);\n private toaster = inject(ToasterService);\n public _location = inject(Location);\n private route = inject(ActivatedRoute);\n private _EntryAdminService = inject(EntryAdminService);\n private _LocalizationService = inject(LocalizationService);\n // private _ValidatorsService = inject(ValidatorsService);\n // private datePipe = inject(DatePipe);\n\n /**获取提交按钮替身,用于真实触发表单提交 */\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /**表单验证状态\n * {\n * title:true,\n * }\n */\n formValidation: any = '';\n /**表单实体 */\n formEntity: FormGroup | undefined;\n /**语言 */\n cultureName: string | any = '';\n /**条目类型id */\n entryTypeId: string | any = '';\n /**版块id */\n sectionId: string | any = '';\n /**条目版本id */\n entryVersionId: string | any = '';\n /**条目id */\n entrieId: string | any = '';\n /**条目信息 */\n entryInfo: any = '';\n\n /**是否草稿控件*/\n get draftInput() {\n return this.formEntity?.get('draft') as FormControl;\n }\n /**语言控件 */\n get cultureInput(): FormControl {\n return this.formEntity?.get('culture') as FormControl;\n }\n\n async ngOnInit(): Promise<void> {\n const params = this.route.snapshot.params;\n this.entrieId = params.entrieId;\n this.formEntity = this.fb.group(new CreateOrUpdateEntryInputBase());\n await this.getEntryInfo();\n this.cultureInput.patchValue(this.cultureName);\n }\n /**获取条目信息 */\n getEntryInfo() {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService.get(this.entrieId).subscribe(res => {\n this.cultureName = res.culture;\n this.entryTypeId = res.entryTypeId;\n this.sectionId = res.sectionId;\n this.entryInfo = res;\n resolve(res);\n });\n });\n }\n\n /**显示条目类型信息 */\n showEntryTypeInfo: any = '';\n /**反馈子级页面信息 */\n _feedbackChildInfo(event) {\n this.showEntryTypeInfo = event?.showEntryType || '';\n }\n // /**当返回结果为true时表示未通过验证 */\n isCheckFormCms(input, module) {\n for (const key in input) {\n if (input[key] === false) {\n let info = ``;\n //检查key中是否含有ExtraProperties.\n if (key.includes('extraProperties.')) {\n const arr = key.split('.');\n const keyName = arr[1];\n // if (keyName.includes('[')) {\n // //使用正则提取keyName中[]中的数字下标,并且转化为数字类型,并且去掉keyName中的[*]\n // const keyNameArr = keyName.match(/\\d+/g);\n // const keyNameArrNum = keyNameArr.map(item => Number(item));\n // const keyNameArrNumStr = keyNameArrNum.join('.');\n\n // } else {\n //将keyName的首字母转为小写\n const keyNameLower = keyName;\n // const keyNameLower = keyName.charAt(0).toLowerCase() + keyName.slice(1);\n if (this.showEntryTypeInfo && this.showEntryTypeInfo.fieldTabs.length > 0) {\n for (const item of this.showEntryTypeInfo.fieldTabs) {\n for (const el of item.fields) {\n if (el.field.name == keyNameLower) {\n // info = `\"${this._LocalizationService.instant(`${module}::${item.name}下的${el.field.displayName}字段`)}\"`;\n info = `${this._LocalizationService.instant(\n `${module}::The{1}FieldUnderThe{0}TAB`,\n item.name,\n el.field.displayName,\n )}`;\n }\n }\n }\n }\n // }\n } else {\n const displayName = key.charAt(0).toUpperCase() + key.slice(1);\n info = `\"${this._LocalizationService.instant(`${module}::${displayName}`)}\" `;\n \n }\n console.log('info', info,input[key]);\n info = info + this._LocalizationService.instant(`AbpValidation::ThisFieldIsNotValid.`);\n //使用abp多语言提示\n this.toaster.warn(info);\n return true;\n }\n }\n\n return false;\n }\n // /**获取表单所有字段是否通过验证 */\n // getFormValidationStatus(formEntity: FormGroup | FormArray): { [key: string]: any } {\n // const validationStatus: { [key: string]: any } = {};\n\n // // 递归遍历表单组和表单控件集合\n // const traverseForm = (form: FormGroup | FormArray, prefix = '') => {\n // if (form instanceof FormGroup) {\n // Object.keys(form.controls).forEach(key => {\n // const control = form.controls[key];\n // // const displayName = key.charAt(0).toUpperCase() + key.slice(1);\n // const displayName = key;\n // const fullKey = prefix ? `${prefix}.${displayName}` : displayName;\n // if (control instanceof FormControl) {\n // validationStatus[fullKey] = control.valid;\n // } else if (control instanceof FormArray) {\n // traverseForm(control, fullKey);\n // } else if (control instanceof FormGroup) {\n // traverseForm(control, fullKey);\n // }\n // });\n // } else if (form instanceof FormArray) {\n // form.controls.forEach((control, index) => {\n // const fullKey = prefix ? `${prefix}[${index}]` : `[${index}]`;\n // if (control instanceof FormControl) {\n // validationStatus[fullKey] = control.valid;\n // } else if (control instanceof FormArray) {\n // traverseForm(control, fullKey);\n // } else if (control instanceof FormGroup) {\n // traverseForm(control, fullKey);\n // }\n // });\n // }\n // };\n\n // traverseForm(formEntity);\n\n // return validationStatus;\n // }\n\n /**获取表单验证状态 */\n // getFormValidationStatus(formEntity: FormGroup | FormArray): { [key: string]: any } {\n // const validationStatus: { [key: string]: any } = {};\n\n // const traverseForm = (form: FormGroup | FormArray, prefix = '') => {\n // //检查form是否为FormGroup还是formArray,如果是FormGroup则继续遍历,如果是FormArray则遍历FormArray\n // if (form instanceof FormGroup) {\n \n // } else if (form instanceof FormArray) {\n \n // } \n\n // }\n // traverseForm(formEntity);\n // return validationStatus\n // }\nprivate _LocationBackService=inject(LocationBackService);\nprivate _DigniteValidatorsService=inject(DigniteValidatorsService);\n /**提交 */\n save() {\n this.cultureInput.enable();\n this.draftInput.patchValue(this.draftValue || false);\n const input = this.formEntity?.value;\n input.culture = this.cultureName;\n input.publishTime = new Date(\n new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000,\n ).toISOString();\n input.concurrencyStamp = this.entryInfo.concurrencyStamp;\n // this.formValidation = this._ValidatorsService.getFormValidationStatus(this.formEntity);\n // if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')){\n // this.isSubmit = false;\n // return this.cultureInput.disable();\n // }\n\n // this.formValidation = this.getFormValidationStatus(this.formEntity);\n // if (this.isCheckFormCms(this.formValidation, 'Cms')) {\n // this.isSubmit = false;\n // return this.cultureInput.disable();\n // }\n // this.formValidation = this.getFormValidationStatus(this.formEntity);\n // return this.isSubmit=false;\n this.formValidation=true;\n if (!this.formEntity.valid) {\n for (const item of this.showEntryTypeInfo.fieldTabs) {\n for (const el of item.fields) {\n const info = `${this._LocalizationService.instant(\n `Cms::The{1}FieldUnderThe{0}TAB`,\n item.name,\n el.field.displayName,\n )}`;\n EntriesToFormLabelMap[el.field.name]=info\n }\n }\n\n this._DigniteValidatorsService.getErrorMessage({\n form:this.formEntity,\n map:EntriesToFormLabelMap,\n });\n\n this.isSubmit = false;\n this.cultureInput.disable();\n return;\n }\n this._EntryAdminService\n .update(this.entryInfo.id, input)\n .pipe(\n finalize(() => {\n this.isSubmit = false;\n }),\n )\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\n this._LocationBackService.backTo({\n url: `/cms/admin/entries`,\n replenish: '/edit' \n })\n this._updateListService.updateList();\n });\n }\n isSubmit: boolean | any = false;\n draftValue: string | any = '';\n /**点击提交 */\n clickSubmit(type) {\n if (this.isSubmit) return;\n this.isSubmit = true;\n this.draftValue = type;\n this.cultureInput.enable();\n this.submitclick?.nativeElement?.click();\n }\n\n /**返回上一页 */\n backTo() {\n this._location.back();\n }\n}\n","<abp-page [title]=\"'Cms::Edit'| abpLocalization\" [toolbar]=\"true\">\n <form class=\"row g-3 needs-validation\"\n [class]=\"{'was-validated':formValidation}\" [formGroup]=\"formEntity\" (submit)=\"save()\" >\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <ng-container *ngIf=\"formEntity&&entryInfo\">\n <cms-create-or-edit-entries [sectionId]=\"sectionId\" [entryTypeId]=\"entryTypeId\" [isEdit]=\"true\" [select]=\"entryInfo\" (feedbackChildInfo)=\"_feedbackChildInfo($event)\" [entity]=\"formEntity\"></cms-create-or-edit-entries>\n </ng-container>\n \n </form>\n</abp-page>\n","/* eslint-disable @typescript-eslint/no-inferrable-types */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, ElementRef, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { FieldsDataService } from '../../../services/fields-data.service';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared';\r\nimport { LocalizationService } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'cms-fields-group',\r\n templateUrl: './fields-group.component.html',\r\n styleUrl: './fields-group.component.scss',\r\n})\r\nexport class FieldsGroupComponent {\r\n constructor(\r\n private fb: FormBuilder,\r\n public _service: FieldsDataService,\r\n private confirmation: ConfirmationService,\r\n public _LocalizationService: LocalizationService,\r\n private toaster: ToasterService,\r\n ) {}\r\n\r\n /**\r\n * 选择的字段分组id\r\n */\r\n selectedGroupId: string = '';\r\n /**模态框是否开启状态 */\r\n modalOpen: boolean = false;\r\n /**模态框是否在忙碌状态 */\r\n modalBusy: boolean = false;\r\n /**存储将要修改的值 */\r\n selected: string = '';\r\n /**字段分组表单 */\r\n groupForm: FormGroup | undefined;\r\n\r\n /**表单是否触发验证 */\r\n formValidation: boolean = false;\r\n\r\n /**模态框-表单--控件模板-动态赋值表单控件 */\r\n @ViewChild('ModalFormSubmit', { static: false }) ModalFormSubmit: ElementRef;\r\n\r\n /**点击分组回调 */\r\n @Output() OnGroupClickBack = new EventEmitter();\r\n\r\n /**选择分组 */\r\n groupChangeBtn(groupId = '') {\r\n this.selectedGroupId = groupId;\r\n this.OnGroupClickBack.emit(groupId);\r\n }\r\n\r\n /**模态框状态改变 */\r\n modalVisibleChange(event) {\r\n if (!event) {\r\n this.modalOpen = event;\r\n this.modalBusy = false;\r\n this.formValidation = false;\r\n this.selected = '';\r\n this.groupForm = undefined;\r\n return;\r\n }\r\n }\r\n\r\n /**\r\n * 创建分组按钮\r\n */\r\n createGroupBtn() {\r\n this.modalOpen = true;\r\n this.groupForm = this.fb.group({\r\n name: ['', Validators.required],\r\n });\r\n }\r\n /**编辑分组按钮 */\r\n editGroupBtn(name) {\r\n this.modalOpen = true;\r\n this.selected = name;\r\n this.groupForm = this.fb.group({\r\n name: [name, Validators.required],\r\n });\r\n }\r\n\r\n /**表单提交 */\r\n save() {\r\n this.formValidation = true;\r\n if (!this.groupForm?.valid) {\r\n return;\r\n }\r\n this.modalBusy = true;\r\n if (this.selected) {\r\n // this.\r\n this._service.updateFieldGroup(this.selectedGroupId, this.groupForm.value).subscribe({\r\n next: () => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n this.modalVisibleChange(false);\r\n this._service.getfieldGroups(true);\r\n },\r\n error: e => console.error(e),\r\n complete: () => console.info('complete'),\r\n });\r\n // .subscribe(() => {\r\n // this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n // this.modalVisibleChange(false);\r\n // this._service.getfieldGroups(true);\r\n // });\r\n return;\r\n }\r\n this._service.createFieldGroup(this.groupForm.value).subscribe(async res => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n this.modalVisibleChange(false);\r\n await this._service.getfieldGroups(true);\r\n this.groupChangeBtn(res.id);\r\n });\r\n }\r\n\r\n /**删除分组 */\r\n deleteGroupBtn(fieldGroupitem: any) {\r\n this.confirmation\r\n .warn(\r\n fieldGroupitem.name,\r\n this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`),\r\n )\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status == 'confirm') {\r\n this._service.deleteFieldGroup(fieldGroupitem.id).subscribe(async () => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\r\n await this._service.getfieldGroups(true);\r\n this.groupChangeBtn();\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"card h-100 mb-0\" >\r\n <div class=\"card-header px-2 py-sm-2 d-flex justify-content-between align-items-center\">\r\n <h6 class=\"h6 mb-0\">{{'Cms::FieldGroup' | abpLocalization}}</h6>\r\n <button type=\"button\" class=\"btn btn-link btn-sm ms-2\" (click.stop)=\"createGroupBtn()\"><i class=\"fas fa-plus-circle\"\r\n aria-hidden=\"true\"></i></button>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"container-height overflow-auto\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-item-action \" [class.active]=\"selectedGroupId===''\" (click)=\"groupChangeBtn()\">{{'Cms::AllFields' | abpLocalization}}</li>\r\n <ng-container *ngFor=\"let item of _service.fieldGroupsList\">\r\n <li class=\"list-group-item list-group-item-action d-flex justify-content-between align-items-center\"\r\n [class.active]=\"selectedGroupId===item.id\" (click)=\"groupChangeBtn(item.id)\">\r\n <div>{{item.name}}</div>\r\n <div *ngIf=\"selectedGroupId===item.id\">\r\n <i class=\"fas fa-trash px-1\" role=\"button\" (click.stop)=\"deleteGroupBtn(item)\"></i>\r\n <i class=\"fas fa-edit px-1\" role=\"button\" (click.stop)=\"editGroupBtn(item.name)\"></i>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<abp-modal [(visible)]=\"modalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"modalVisibleChange($event)\">\r\n <ng-template #abpHeader>\r\n <h3>{{(selected?'AbpUi::Edit':'Cms::New') | abpLocalization}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <form *ngIf=\"groupForm; else loaderRef\" [formGroup]=\"groupForm\" [class]=\"{'was-validated':formValidation}\" (submit)=\"save()\">\r\n <div class=\"mb-3\">\r\n <label for=\"exampleFormControlInput1\" class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleFormControlInput1\" formControlName=\"name\"\r\n placeholder=\"\">\r\n </div>\r\n <button type=\"submit\" #ModalFormSubmit style=\"display: none\"></button>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"createForm?.invalid\" [loading]=\"modalBusy\" (click)=\"ModalFormSubmit?.nativeElement?.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { Component, OnInit} from '@angular/core';\r\nimport { ECmsComponent } from '../../../enums';\r\nimport { FieldsDataService } from '../../../services/fields-data.service';\r\nimport {\r\n ListService,\r\n LIST_QUERY_DEBOUNCE_TIME,\r\n LocalizationService,\r\n PagedResultDto,\r\n ABP,\r\n} from '@abp/ng.core';\r\nimport { ToasterService, ConfirmationService, Confirmation } from '@abp/ng.theme.shared';\r\nimport { Router } from '@angular/router';\r\nimport { UpdateListService } from '@dignite-ng/expand.core';\r\nimport { FieldDto, GetFieldsInput } from '../../../proxy/dignite/cms/admin/fields';\r\n\r\n@Component({\r\n selector: 'cms-fields',\r\n templateUrl: './fields.component.html',\r\n styleUrl: './fields.component.scss',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: ECmsComponent.Fields,\r\n },\r\n // [Required]\r\n ListService,\r\n // [Optional]\r\n // Provide this token if you want a different debounce time.\r\n // Default is 300. Cannot be 0. Any value below 100 is not recommended.\r\n { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 50 },\r\n ],\r\n})\r\nexport class FieldsComponent implements OnInit {\r\n constructor(\r\n public readonly list: ListService,\r\n private _service: FieldsDataService,\r\n private toaster: ToasterService,\r\n private confirmation: ConfirmationService,\r\n private _LocalizationService: LocalizationService,\r\n private router: Router,\r\n private _UpdateListService: UpdateListService,\r\n ) {}\r\n async ngOnInit(): Promise<void> {\r\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\r\n //Add 'implements OnInit' to the class.\r\n await Promise.all([this._service.getfieldGroups(), this._service.getControlsfieldTypes()]);\r\n this.hookToQuery();\r\n console.log(this.list,'1111');\r\n\r\n this._UpdateListService.updateListEvent.subscribe(() => {\r\n this.getData();\r\n });\r\n }\r\n\r\n\r\n /**表格数据 */\r\n data: PagedResultDto<FieldDto> = {\r\n items: [],\r\n totalCount: 0,\r\n };\r\n\r\n /**过滤器 */\r\n filters = {} as GetFieldsInput;\r\n\r\n /**使用abp的list获取表格的字段数据列表 */\r\n hookToQuery() {\r\n const getData = (query: ABP.PageQueryParams) =>\r\n this._service.getFieldsList({\r\n ...query,\r\n ...this.filters,\r\n });\r\n const setData = (list: PagedResultDto<FieldDto>) => {\r\n this.data = list;\r\n this.scrollToTop();\r\n };\r\n this.list.hookToQuery(getData).subscribe(setData);\r\n }\r\n /**获取表格数据 */\r\n getData() {\r\n this.data.items = [];\r\n this.data.totalCount = 0;\r\n // this.list.page=0;\r\n this.list.get();\r\n }\r\n /**重置 */\r\n reset() {\r\n this.filters = {} as GetFieldsInput;\r\n this.getData();\r\n }\r\n \r\n\r\n /**回到页面顶部 */\r\n scrollToTop() {\r\n const scrollContainer = document.getElementsByClassName('lpx-scroll-container')[0];\r\n (scrollContainer || window).scrollTo(0, 0);\r\n }\r\n\r\n /**点击字段分组回调 */\r\n onGroupClickBack(groupId: string) {\r\n this.filters.groupId = groupId;\r\n this.getData();\r\n }\r\n\r\n /**删除字段 */\r\n deletefield(row: any) {\r\n this.confirmation\r\n .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status == 'confirm') {\r\n this._service.deleteField(row.id).subscribe(() => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\r\n this.getData();\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**新建字段按钮 */\r\n toFieldsCreateBtn() {\r\n this.router.navigate(['/cms/admin/fields/create'], {\r\n queryParams: {\r\n groupId: this.filters.groupId,\r\n },\r\n });\r\n }\r\n /**编辑字段按钮 */\r\n editfieldBtn(row: any) {\r\n this.router.navigate(['/cms/admin/fields/' + row.id + '/edit'], {});\r\n }\r\n}\r\n","<abp-page [title]=\"'Cms::Fields' | abpLocalization\" [toolbar]=\"true\">\r\n <div class=\"row\" style=\"min-height: calc(100vh - 42px - 54px - 1.25em - 1.25em);\">\r\n <div class=\"col-md-3 mb-2\">\r\n <cms-fields-group (OnGroupClickBack)=\"onGroupClickBack($event)\"></cms-fields-group>\r\n </div>\r\n <div class=\"col-md-9 mb-2\">\r\n <div class=\"card mb-0\">\r\n <div class=\"card-header px-2 py-sm-2 border-bottom\">\r\n <div class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\r\n [placeholder]=\"'AbpUi::Search' | abpLocalization\" >\r\n <button class=\"btn btn-primary px-3\" type=\"button\" id=\"button-addon2\"\r\n (click)=\"list.get()\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <abp-extensible-table [data]=\"data?.items\" [recordsTotal]=\"data?.totalCount\"\r\n [list]=\"list\">\r\n </abp-extensible-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>","import { FormGroup, Validators } from \"@angular/forms\";\r\n\r\nexport class FieldsFormConfig {\r\n /**分组id */\r\n groupId: Validators[] = [''];\r\n\r\n /**字段名称 Display name of this field */\r\n displayName: Validators[] = ['', [Validators.required]];\r\n\r\n /**字段唯一名称 Unique Name*/\r\n name: Validators[] = ['', [Validators.required]];\r\n\r\n /**描述 说明 */\r\n description: Validators[] = ['', []];\r\n\r\n /**FieldType字段类型 表单控件名称 */\r\n formControlName: Validators[] = ['', [Validators.required]];\r\n\r\n /**动态表单配置 */\r\n formConfiguration: FormGroup | undefined = new FormGroup({});\r\n\r\n}\r\n\r\n/**\r\n * 字段名称与表单控件名称映射\r\n */\r\n// export enum fieldToFormLabelMap{\r\n// /**分组id */\r\n// groupId = 'Cms::FieldGroup',\r\n// displayName = 'AbpDynamicForm::FieldDisplayName',\r\n// name = 'AbpDynamicForm::FieldName',\r\n// description='Cms::Description',\r\n// // Text='AbpDynamicForm::SelectListItemText',\r\n// // Value='AbpDynamicForm::SelectListItemValue',\r\n// 'Select.Options'=\"AbpDynamicForm::SelectListItem\",\r\n// 'Select.Options-Text'=\"AbpDynamicForm::SelectListItemText\",\r\n// 'Select.Options-Value'=\"AbpDynamicForm::SelectListItemValue\",\r\n \r\n// }\r\nexport const fieldToFormLabelMap:any={\r\n /**分组id */\r\n groupId : 'Cms::FieldGroup',\r\n displayName : 'AbpDynamicForm::FieldDisplayName',\r\n name : 'AbpDynamicForm::FieldName',\r\n description:'Cms::Description',\r\n 'Select.Options':\"AbpDynamicForm::SelectListItem\",\r\n 'Select.Options-Text':\"AbpDynamicForm::SelectListItemText\",\r\n 'Select.Options-Value':\"AbpDynamicForm::SelectListItemValue\",\r\n \"TableColumns\":'AbpDynamicForm::SelectListItem',\r\n \"TableColumns-displayName\":'Cms::TableColumnDisplayName',\r\n \"TableColumns-name\":'Cms::TableColumnName',\r\n \"TableColumns-formControlName\":'Cms::TableColumnForm',\r\n \"MatrixBlockTypes\":\"Cms::MatrixBlockType\",\r\n \"fields\":'Cms::Fields',\r\n \"MatrixBlockTypes-fields-displayName\":'AbpDynamicForm::FieldDisplayName',\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport { AfterContentInit, Component, ElementRef, Input, ViewChild } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, ValidationErrors } from '@angular/forms';\r\nimport { ToPinyinService } from '@dignite-ng/expand.core';\r\nimport { Observable } from 'rxjs';\r\nimport { LocalizationService } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'cms-create-or-edit-field',\r\n templateUrl: './create-or-edit-field.component.html',\r\n styleUrl: './create-or-edit-field.component.scss',\r\n})\r\nexport class CreateOrEditFieldComponent implements AfterContentInit {\r\n constructor(private _ToPinyinService: ToPinyinService,private _LocalizationService:LocalizationService) {}\r\n\r\n _selected: any;\r\n @Input()\r\n public set selected(v: any) {\r\n this._selected = v;\r\n }\r\n\r\n @Input() public service: any;\r\n\r\n formEntity: FormGroup | undefined;\r\n @Input()\r\n public set form(v: FormGroup | undefined) {\r\n this.formEntity = v;\r\n }\r\n\r\n\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n this.getfieldGroupsList = await this.service.getfieldGroups();\r\n this.fromControlList = await this.service.getControlsfieldTypes();\r\n this.nameInput.addAsyncValidators([this.repetitionAsyncValidator()])\r\n if(!this.formControlNameInput.value&&this.fromControlList.length>0){\r\n this.formControlNameInput.patchValue(this.fromControlList[0].name)\r\n }\r\n this.submitclick.nativeElement.click()\r\n }\r\n\r\n /**字段分组列表 */\r\n getfieldGroupsList: any[] = [];\r\n /**表单控件列表 */\r\n fromControlList: any[] = [];\r\n\r\n get nameInput() {\r\n return this.formEntity?.get('name') as FormControl;\r\n }\r\n get formControlNameInput() {\r\n return this.formEntity?.get('formControlName') as FormControl;\r\n }\r\n\r\n /**获取提交按钮替身,用于真实触发表单提交 */\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n /**字段标签input失去标点生成字段名字 */\r\n disPlayNameInputBlur(event) {\r\n const value = event.target.value;\r\n const pinyin = this._ToPinyinService.get(value);\r\n const nameInput = this.nameInput;\r\n if (nameInput.value) return;\r\n nameInput.patchValue(pinyin);\r\n }\r\n\r\n /**异步验证,验证别名 */\r\n repetitionAsyncValidator() {\r\n return (\r\n ctrl: AbstractControl,\r\n ): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {\r\n return new Promise(resolve => {\r\n if (ctrl.value == this._selected?.name || !ctrl.value) {\r\n resolve(null);\r\n return;\r\n }\r\n this.service.nameExists(ctrl.value).subscribe(res => {\r\n if (res) {\r\n resolve({\r\n repetition: this._LocalizationService.instant(\r\n `Cms::FieldName{0}AlreadyExist`,\r\n ctrl.value,\r\n ),\r\n });\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n });\r\n };\r\n }\r\n}\r\n","<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formEntity\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"groupId\">{{'Cms::FieldGroup' | abpLocalization}}</label>\r\n <select class=\"form-select\" formControlName=\"groupId\">\r\n <option value=\"\">{{'Cms::OptionalGrouping' | abpLocalization}}</option>\r\n <ng-container *ngFor=\"let item of getfieldGroupsList\">\r\n <option [value]=\"item.id\">{{item.name}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"displayName\">*{{'AbpDynamicForm::FieldDisplayName' |\r\n abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\" required\r\n (blur)=\"disPlayNameInputBlur($event)\">\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"name\">*{{'AbpDynamicForm::FieldName' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" required>\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"nameInput.errors?.repetition\">\r\n {{nameInput.errors?.repetition}}\r\n </div>\r\n <small class=\"form-text text-muted d-block \">{{'AbpDynamicForm::FieldNameHelpText' |\r\n abpLocalization}}</small>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"formControlName\">*{{'Cms::FieldType' | abpLocalization}}</label>\r\n <select class=\"form-select\" formControlName=\"formControlName\">\r\n <ng-container *ngFor=\"let item of fromControlList;let i =index\">\r\n <option [value]=\"item.name\">{{item.displayName|abpLocalization}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n @if(formControlNameInput.value&&formEntity){\r\n <df-dynamic-config [formGroup]=\"formEntity\" [selected]=\"_selected\" [type]=\"formControlNameInput.value\"\r\n [form]=\"formEntity\"></df-dynamic-config>\r\n }\r\n <button form-type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n </form>\r\n </div>\r\n</div>","/* eslint-disable @typescript-eslint/no-inferrable-types */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { ECmsComponent } from '../../../enums';\r\nimport { LocalizationService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport {\r\n DigniteValidatorsService,\r\n LocationBackService,\r\n UpdateListService,\r\n} from '@dignite-ng/expand.core';\r\nimport { FieldsFormConfig, fieldToFormLabelMap } from './fields-form-config';\r\nimport { FieldsDataService } from '../../../services/fields-data.service';\r\n\r\n@Component({\r\n selector: 'cms-create-field',\r\n templateUrl: './create-field.component.html',\r\n styleUrl: './create-field.component.scss',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: ECmsComponent.FieldsCreate,\r\n },\r\n ],\r\n})\r\nexport class CreateFieldComponent implements OnInit {\r\n constructor(\r\n private fb: FormBuilder,\r\n public _service: FieldsDataService,\r\n private toaster: ToasterService,\r\n public _LocationBackService: LocationBackService,\r\n public _LocalizationService: LocalizationService,\r\n private route: ActivatedRoute,\r\n private _UpdateListService: UpdateListService,\r\n private _DigniteValidatorsService: DigniteValidatorsService,\r\n ) {}\r\n\r\n async ngOnInit(): Promise<void> {\r\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\r\n //Add 'implements OnInit' to the class.\r\n const { groupId } = this.route.snapshot.queryParams;\r\n this.formEntity = this.fb.group(new FieldsFormConfig());\r\n if (groupId) {\r\n this.groupIdInput.patchValue(groupId);\r\n }\r\n }\r\n\r\n /**表单实体 */\r\n formEntity: FormGroup | undefined;\r\n\r\n /**表单是否触发验证 */\r\n formValidation: boolean = false;\r\n\r\n /**是否提交 */\r\n isSubmitted: boolean = false;\r\n\r\n /**获取提交按钮替身,用于真实触发表单提交 */\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n /**字段分组控件 */\r\n get groupIdInput() {\r\n return this.formEntity?.get('groupId') as FormControl;\r\n }\r\n\r\n /**提交表单 */\r\n save() {\r\n console.log(this.formEntity.value, '提交表单', this.formEntity);\r\n this.formValidation = true;\r\n if (!this.formEntity.valid) {\r\n this._DigniteValidatorsService.getErrorMessage({\r\n form:this.formEntity,\r\n map:fieldToFormLabelMap\r\n });\r\n return;\r\n }\r\n if (this.isSubmitted) return;\r\n this.isSubmitted = true;\r\n const input = this.formEntity.value;\r\n this._service.createField(input).subscribe(\r\n () => {\r\n this.reset();\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n // this._LocationBackService.back();\r\n this._LocationBackService.backTo({\r\n url: `/cms/admin/fields`,\r\n replenish: '/create',\r\n });\r\n this._UpdateListService.updateList();\r\n },\r\n () => {\r\n this.reset();\r\n },\r\n );\r\n }\r\n /**重置表单 */\r\n reset() {\r\n this.isSubmitted = false;\r\n }\r\n}\r\n","<abp-page [title]=\"'Cms::CreateField' | abpLocalization\" [toolbar]=\"true\">\r\n <form [formGroup]=\"formEntity\" [class.was-validated]=\"formValidation\" (submit)=\"save()\">\r\n <button form-type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n <cms-create-or-edit-field [service]=\"_service\" [form]=\"formEntity\"></cms-create-or-edit-field>\r\n </form>\r\n</abp-page>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { Component, ElementRef, ViewChild, OnInit } from '@angular/core';\r\nimport { ECmsComponent } from '../../../enums';\r\nimport { LocalizationService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { FormBuilder, FormGroup, FormControl } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport {\r\n LocationBackService,\r\n UpdateListService,\r\n DigniteValidatorsService,\r\n} from '@dignite-ng/expand.core';\r\nimport { FieldsDataService } from '../../../services/fields-data.service';\r\nimport { FieldsFormConfig, fieldToFormLabelMap } from './fields-form-config';\r\n\r\n@Component({\r\n selector: 'cms-edit-field',\r\n templateUrl: './edit-field.component.html',\r\n styleUrl: './edit-field.component.scss',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: ECmsComponent.FieldsEdit,\r\n },\r\n ],\r\n})\r\nexport class EditFieldComponent implements OnInit {\r\n constructor(\r\n private fb: FormBuilder,\r\n public _service: FieldsDataService,\r\n private toaster: ToasterService,\r\n public _LocationBackService: LocationBackService,\r\n public _LocalizationService: LocalizationService,\r\n private route: ActivatedRoute,\r\n private _UpdateListService: UpdateListService,\r\n private _DigniteValidatorsService: DigniteValidatorsService,\r\n ) {}\r\n\r\n async ngOnInit(): Promise<void> {\r\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\r\n //Add 'implements OnInit' to the class.\r\n const { id } = this.route.snapshot.params;\r\n this.formEntity = this.fb.group(new FieldsFormConfig());\r\n await this.getFieldDetails(id);\r\n if (this.fieldDetail) {\r\n this.formEntity.patchValue({\r\n ...this.fieldDetail,\r\n groupId: this.fieldDetail.groupId || '',\r\n });\r\n }\r\n }\r\n\r\n /**获取字段详情 */\r\n getFieldDetails(id: string) {\r\n return new Promise((resolve, reject) => {\r\n this._service.getFieldDetail(id).subscribe(\r\n res => {\r\n this.fieldDetail = res;\r\n resolve(res);\r\n },\r\n err => {\r\n resolve('');\r\n },\r\n );\r\n });\r\n }\r\n\r\n /**字段详情 */\r\n fieldDetail: any = '';\r\n\r\n /*\r\n /**表单实体 */\r\n formEntity: FormGroup | undefined;\r\n\r\n /**表单是否触发验证 */\r\n formValidation = false;\r\n\r\n /**是否提交 */\r\n isSubmitted = false;\r\n\r\n /**获取提交按钮替身,用于真实触发表单提交 */\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n /**字段分组控件 */\r\n get groupIdInput() {\r\n return this.formEntity?.get('groupId') as FormControl;\r\n }\r\n \r\n // 获取错误信息\r\n getErrorMessage(error: any,map:any): string {\r\n // 获取本地化标签\r\n const getLocalizedLabel = (path: string) => {\r\n return this._LocalizationService.instant(map[path as keyof typeof map]);\r\n };\r\n \r\n // 格式化数组索引\r\n const formatArrayIndex = (item: string) => {\r\n const regex = /\\[[0-9]+\\]/g;\r\n const indexMatch = item.match(regex);\r\n const [basePath] = item.split(regex);\r\n return getLocalizedLabel(basePath) + (indexMatch ? indexMatch[0] : '');\r\n };\r\n \r\n let errorMessage = '';\r\n // 如果错误路径包含formConfiguration\r\n if (error.path.includes('formConfiguration')) {\r\n // 将错误路径中的formConfiguration-替换掉,并按-分割\r\n const pathParts = error.path.replaceAll('formConfiguration-', '').split('-');\r\n // 对分割后的路径进行格式化\r\n const formattedParts = pathParts.map((part, index) => {\r\n // 如果是最后一个路径且不是第一个路径\r\n if (index === pathParts.length - 1 && index > 0) {\r\n // 获取前一个路径\r\n const prevPart = pathParts[index - 1];\r\n // 将前一个路径按数组索引分割\r\n const [prevBasePath] = prevPart.split(/\\[[0-9]+\\]/);\r\n // 将当前路径按数组索引分割\r\n const [currentBasePath] = part.split(/\\[[0-9]+\\]/);\r\n // 组合前一个路径和当前路径\r\n const combinedKey = `${prevBasePath}-${currentBasePath}`;\r\n \r\n // 如果map中存在组合后的路径,则返回本地化标签,否则返回格式化后的数组索引\r\n return map[combinedKey as keyof typeof map]\r\n ? getLocalizedLabel(combinedKey)\r\n : formatArrayIndex(part);\r\n }\r\n // 否则返回格式化后的数组索引\r\n return formatArrayIndex(part);\r\n });\r\n console.log(formattedParts, 'formattedParts',pathParts);\r\n // 将格式化后的路径用-连接起来\r\n errorMessage = formattedParts.join('-');\r\n } else {\r\n // 否则返回本地化标签\r\n errorMessage = getLocalizedLabel(error.path);\r\n }\r\n \r\n // 添加错误信息\r\n errorMessage = `${errorMessage} ${this._LocalizationService.instant('AbpValidation::ThisFieldIsNotValid.')}`;\r\n // 显示警告信息\r\n this.toaster.warn(errorMessage);\r\n return errorMessage;\r\n }\r\n\r\n /**提交表单 */\r\n save() {\r\n \r\n this.formValidation = true;\r\n if (!this.formEntity.valid) {\r\n this._DigniteValidatorsService.getErrorMessage({\r\n form:this.formEntity,\r\n map:fieldToFormLabelMap\r\n });\r\n return;\r\n }\r\n console.log(this.formEntity.value, '提交表单', this.formEntity);\r\n // return\r\n if (this.isSubmitted) return;\r\n this.isSubmitted = true;\r\n const input = this.formEntity.value;\r\n this._service.updateField(this.fieldDetail.id, input).subscribe({\r\n next: () => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n // this._LocationBackService.back();\r\n this._LocationBackService.backTo({\r\n url: `/cms/admin/fields`,\r\n replenish: '/edit',\r\n });\r\n this._UpdateListService.updateList();\r\n },\r\n complete: () => {\r\n this.reset();\r\n },\r\n });\r\n }\r\n /**重置表单 */\r\n reset() {\r\n this.isSubmitted = false;\r\n }\r\n}\r\n","<abp-page [title]=\"'Cms::EditField' | abpLocalization\" [toolbar]=\"true\">\r\n <form [formGroup]=\"formEntity\" [class.was-validated]=\"formValidation\" (submit)=\"save()\">\r\n <button form-type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n @if(fieldDetail){\r\n <cms-create-or-edit-field [selected]=\"fieldDetail\" [service]=\"_service\" [form]=\"formEntity\"></cms-create-or-edit-field>\r\n }\r\n </form>\r\n</abp-page>","export * from './fields.component'\r\nexport * from './fields-group.component'\r\nexport * from './create-field.component'\r\nexport * from './create-or-edit-field.component'\r\nexport * from './edit-field.component'\r\n// export * from './create-or-update-field-input-base'","\r\nimport {Validators } from \"@angular/forms\";\r\n\r\nexport class CreateOrUpdateSectionsInputBase {\r\n id: string | Validators[] = [''];\r\n /**版块类型 */\r\n type: any = [0, [Validators.required]];\r\n /**字段名称 Display name of this field */\r\n displayName: any = ['', [Validators.required]];\r\n /**字段唯一名称 Unique Name*/\r\n name: any = ['', [Validators.required]];\r\n /**条目路由 */\r\n route: any = ['', [Validators.required]];\r\n /**页面模板 */\r\n template: any = ['', [Validators.required]];\r\n /**是否默认 */\r\n isDefault: any = [false, []];\r\n /**是否激活 */\r\n isActive: any = [true, []];\r\n concurrencyStamp: string | Validators[] = [''];\r\n\r\n constructor() {}\r\n}","/* eslint-disable @angular-eslint/component-selector */\r\nimport { LocalizationService } from '@abp/ng.core';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormControl,\r\n FormGroup,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { ValidatorsService, UpdateListService } from '@dignite-ng/expand.core';\r\nimport { finalize, Observable } from 'rxjs';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { SectionAdminService } from '../../../proxy/dignite/cms/admin/sections';\r\nimport { SectionType, sectionTypeOptions } from '../../../proxy/dignite/cms/sections';\r\nimport { ToPinyinService } from '@dignite-ng/expand.core';\r\n\r\n@Component({\r\n selector: 'cms-create-or-edit-sections-modal',\r\n templateUrl: './create-or-edit-sections-modal.component.html',\r\n styleUrl: './create-or-edit-sections-modal.component.scss',\r\n})\r\nexport class CreateOrEditSectionsModalComponent {\r\n private _LocalizationService = inject(LocalizationService);\r\n private toaster = inject(ToasterService);\r\n private _ValidatorsService = inject(ValidatorsService);\r\n private _UpdateListService = inject(UpdateListService);\r\n private _SectionAdminService = inject(SectionAdminService);\r\n\r\n constructor(\r\n private toPinyinService:ToPinyinService\r\n ) {}\r\n\r\n /**重置表单 */\r\n\r\n _SectionType = SectionType;\r\n _sectionTypeOptions = sectionTypeOptions;\r\n /**表单验证状态 */\r\n formValidation: any = '';\r\n \r\n /**模态框-状态-是否打开 */\r\n ModalOpen: boolean|any = false;\r\n @Input()\r\n public set visible(v: boolean) {\r\n this.ModalOpen = v;\r\n }\r\n\r\n /**模态框-繁忙状态-用于确定模态的繁忙状态是否为真 */\r\n ModalBusy: boolean|any = false;\r\n /**初始值 */\r\n selected: any = '';\r\n /**模态框-表单 */\r\n ModalForm: FormGroup | undefined;\r\n @Input()\r\n public set formEntity(v: FormGroup | undefined) {\r\n this.ModalForm = v;\r\n if (v) {\r\n this.selected = v?.value;\r\n this.setAsyncValidatorsFn();\r\n }\r\n }\r\n get idInput() {\r\n return this.ModalForm?.get('id') as FormControl;\r\n }\r\n get displayNameInput() {\r\n return this.ModalForm.get('displayName') as FormControl;\r\n }\r\n get nameInput() {\r\n return this.ModalForm.get('name') as FormControl;\r\n }\r\n get routeInput() {\r\n return this.ModalForm.get('route') as FormControl;\r\n }\r\n get templateInput() {\r\n return this.ModalForm.get('template') as FormControl;\r\n }\r\n get typeInput() {\r\n return this.ModalForm.get('type') as FormControl;\r\n }\r\n radiochange() {\r\n this.routeInput.patchValue(this.routeInput.value);\r\n }\r\n\r\n /**模态框-表单--控件模板-动态赋值表单控件 */\r\n @ViewChild('ModalFormSubmit', { static: false }) ModalFormSubmit: ElementRef;\r\n @Output() visibleChange = new EventEmitter();\r\n /**模态框-状态改变回调 */\r\n ModalVisibleChange(event) {\r\n this.ModalOpen = event;\r\n this.formValidation='';\r\n this.ModalForm=undefined;\r\n this.visibleChange.emit(event);\r\n if (!event) {\r\n return;\r\n }\r\n }\r\n /**保存 */\r\n save() {\r\n this.formValidation = this._ValidatorsService.getFormValidationStatus(this.ModalForm);\r\n if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')) return;\r\n\r\n if (this.ModalBusy) return;\r\n this.ModalBusy = true;\r\n if (!this.ModalForm.valid) return;\r\n const input = this.ModalForm.value;\r\n if (this.idInput.value) {\r\n this._SectionAdminService\r\n .update(this.idInput.value, input)\r\n .pipe(\r\n finalize(() => {\r\n this.reset();\r\n })\r\n )\r\n .subscribe(() => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n this.visibleChange.emit(false);\r\n this.formValidation='';\r\n });\r\n return;\r\n }\r\n this._SectionAdminService\r\n .create(input)\r\n .pipe(\r\n finalize(() => {\r\n this.reset();\r\n })\r\n )\r\n .subscribe(() => {\r\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));\r\n this.visibleChange.emit(false);\r\n this.formValidation='';\r\n });\r\n }\r\n reset(){\r\n this.ModalBusy = false;\r\n this._UpdateListService.updateList();\r\n }\r\n\r\n disPlayNameInputBlur(event) {\r\n const value = event.target.value;\r\n const pinyin = this.toPinyinService.get(value);\r\n const nameInput = this.nameInput;\r\n const routeInput = this.routeInput;\r\n const templateInput = this.templateInput;\r\n if (nameInput.value) return;\r\n nameInput.patchValue(pinyin);\r\n if (routeInput.value) return;\r\n routeInput.patchValue(pinyin + (this.typeInput.value === 0 ? '' : '/{slug}'));\r\n if (templateInput.value) return;\r\n templateInput.patchValue(pinyin + '/index');\r\n }\r\n\r\n setAsyncValidatorsFn() {\r\n this.ModalForm?.setControl(\r\n 'name',\r\n new FormControl(this.nameInput.value || '', {\r\n validators: Validators.required,\r\n asyncValidators: this.nameRepetitionAsyncValidator(),\r\n })\r\n );\r\n this.ModalForm?.setControl(\r\n 'route',\r\n new FormControl(this.routeInput.value || '', {\r\n validators: [Validators.required, this.forbiddenNameValidator()],\r\n asyncValidators: [this.routeRepetitionAsyncValidator()],\r\n updateOn: 'change',\r\n })\r\n );\r\n }\r\n forbiddenNameValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const inputValue = control.value.toLocaleLowerCase();\r\n const forbidden =\r\n this.typeInput.value == 0 ? false : inputValue.includes('{slug}') ? false : true;\r\n return forbidden\r\n ? {\r\n repetition: this._LocalizationService.instant(\r\n `Cms::RouteVerificationTips`,\r\n this._LocalizationService.instant(\r\n `Cms::Enum:SectionType:` + SectionType[this.typeInput.value]\r\n ),\r\n '{slug}'\r\n ),\r\n }\r\n : null;\r\n };\r\n }\r\n nameRepetitionAsyncValidator() {\r\n return (\r\n ctrl: AbstractControl\r\n ): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {\r\n return new Promise(resolve => {\r\n const subslug = this.ModalForm?.get('name');\r\n\r\n if (subslug.value == this.selected?.name) {\r\n resolve(null);\r\n return;\r\n }\r\n this._SectionAdminService.nameExists({ name: subslug.value }).subscribe(res => {\r\n if (res) {\r\n resolve({\r\n repetition: this._LocalizationService.instant(\r\n `Cms::SectionName{0}AlreadyExist`,\r\n ctrl.value\r\n ),\r\n });\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n });\r\n };\r\n }\r\n routeRepetitionAsyncValidator() {\r\n return (\r\n ctrl: AbstractControl\r\n ): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {\r\n return new Promise(resolve => {\r\n const subslug = this.ModalForm?.get('route').value;\r\n if (subslug == this.selected?.route) {\r\n resolve(null);\r\n return;\r\n }\r\n this._SectionAdminService.routeExists({ route: subslug }).subscribe(res => {\r\n if (res) {\r\n resolve({\r\n repetition: this._LocalizationService.instant(\r\n `Cms::SectionRoute{0}AlreadyExist`,\r\n ctrl.value\r\n ),\r\n });\r\n } else {\r\n resolve(null);\r\n }\r\n });\r\n });\r\n };\r\n }\r\n}\r\n","<abp-modal [(visible)]=\"ModalOpen\" [busy]=\"ModalBusy\" (visibleChange)=\"ModalVisibleChange($event)\">\r\n <ng-template #abpHeader>\r\n <h3>{{selected?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef>\r\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\r\n </ng-template>\r\n <ng-container *ngIf=\"ModalForm; else loaderRef\">\r\n <form class=\"sites-modal-form\" [formGroup]=\"ModalForm\" \r\n [class]=\"{'was-validated':formValidation}\" (submit)=\"save()\">\r\n <button type=\"submit\" #ModalFormSubmit style=\"display: none\"></button>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::EntryType' | abpLocalization}}</label>\r\n <div>\r\n <ng-container *ngFor=\"let item of _sectionTypeOptions;let i =index\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"radio\" [value]=\"item.value\"\r\n (change)=\"radiochange()\" formControlName=\"type\" id=\"flexRadioDefault{{i}}\">\r\n <label class=\"form-check-label\" for=\"flexRadioDefault{{i}}\">\r\n {{ 'Cms::Enum:SectionType:'+item.key | abpLocalization }}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\r\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"nameInput.errors?.repetition\">\r\n {{nameInput.errors?.repetition}}\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Route' | abpLocalization}} </label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"route\" placeholder=\"\" />\r\n <div class=\"text-danger invalid-feedback\" *ngIf=\"routeInput.errors?.repetition\">\r\n {{routeInput.errors?.repetition}}\r\n </div>\r\n <small class=\"form-text text-muted d-block\">\r\n {{'Cms::RouteTips' | abpLocalization}}<br>\r\n &nbsp;&nbsp;blog<br>\r\n &nbsp;&nbsp;{{'blog/{slug}'}}<br>\r\n &nbsp;&nbsp;{{'blog/{publishTime:yyyy}/{publishTime:MM}/{slug}'}}\r\n </small>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{'Cms::Template' | abpLocalization}} </label>\r\n <input type=\"text\" class=\"form-control\" formControlName=\"template\" placeholder=\"\" />\r\n <small class=\"form-text text-muted d-block\">\r\n {{\"Cms::TemplateTips\" | abpLocalization}}\r\n </small>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isDefault\"\r\n id=\"isDefault\" />\r\n <label class=\"form-check-label\" for=\"isDefault\"> {{'Cms::Default' | abpLocalization}} </label>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isActive\"\r\n id=\"isActive\" />\r\n <label class=\"form-check-label\" for=\"isActive\"> {{'Cms::IsActive' | abpLocalization}}</label>\r\n </div>\r\n </div>\r\n </form>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\r\n <abp-button iconClass=\"fa fa-check\" type=\"button\" [loading]=\"ModalBusy\" [disabled]=\"ModalBusy\"\r\n (click)=\"ModalFormSubmit?.nativeElement?.click()\">{{'AbpUi::Save'|abpLocalization}}</abp-button>\r\n </ng-template>\r\n</abp-modal>","/* eslint-disable @angular-eslint/component-selector */\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\nimport {\n ABP,\n LIST_QUERY_DEBOUNCE_TIME,\n ListService,\n LocalizationService,\n PagedResultDto,\n} from '@abp/ng.core';\nimport { Component, OnInit, inject } from '@angular/core';\nimport { ECmsComponent } from '../../../enums';\nimport { ToasterService, ConfirmationService, Confirmation } from '@abp/ng.theme.shared';\nimport {\n FormBuilder,\n FormGroup,\n} from '@angular/forms';\nimport { UpdateListService } from '@dignite-ng/expand.core';\n\nimport { ColumnMode } from '@swimlane/ngx-datatable';\nimport { finalize } from 'rxjs';\nimport { CreateOrUpdateSectionsInputBase } from './create-or-update-sections-input-base';\nimport { EntryTypeAdminService, GetSectionsInput, SectionAdminService, SectionDto } from '../../../proxy/dignite/cms/admin/sections';\nimport { SectionType, sectionTypeOptions } from '../../../proxy/dignite/cms/sections';\n\n@Component({\n selector: 'cms-sections',\n templateUrl: './sections.component.html',\n styleUrls: ['./sections.component.scss'],\n providers: [\n // [Required]\n ListService,\n // [Optional]\n // Provide this token if you want a different debounce time.\n // Default is 300. Cannot be 0. Any value below 100 is not recommended.\n { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: ECmsComponent.Sections,\n },\n ],\n})\nexport class SectionsComponent implements OnInit {\n constructor(\n public readonly list: ListService,\n private _SectionAdminService: SectionAdminService,\n private toaster: ToasterService,\n private confirmation: ConfirmationService,\n private fb: FormBuilder,\n public _EntryTypeAdminService: EntryTypeAdminService,\n public _LocalizationService: LocalizationService,\n ) {}\n private _UpdateListService = inject(UpdateListService);\n siteList: any[] = [];\n _SectionType = SectionType;\n _sectionTypeOptions = sectionTypeOptions;\n ColumnMode = ColumnMode;\n data: PagedResultDto<SectionDto> = { items: [], totalCount: 0 };\n filters = {} as GetSectionsInput;\n hookToQuery() {\n const getData = (query: ABP.PageQueryParams) =>\n this._SectionAdminService.getList({ ...query, ...this.filters });\n const setData = (list: PagedResultDto<SectionDto>) => {\n this.data = list;\n this.scrollToTop();\n };\n this.list.hookToQuery(getData).subscribe(setData);\n }\n scrollToTop() {\n const scrollContainer = document.getElementsByClassName('lpx-scroll-container')[0];\n (scrollContainer || window).scrollTo(0, 0);\n }\n async ngOnInit(): Promise<void> {\n this.hookToQuery();\n this._UpdateListService.updateListEvent.subscribe(() => {\n this.list.get();\n });\n }\n siteIdChange() {\n this.list.page = 0;\n this.list.get();\n }\n\n /**表单 */\n formEntity: FormGroup | undefined;\n /**弹窗状态 */\n isVisibleOpen: boolean|any = false;\n /**弹窗回调 */\n visibleChange(event) {\n this.isVisibleOpen = event;\n if (!event) {\n this.formEntity = undefined;\n }\n }\n /**创建 */\n createBtn() {\n this.formEntity = this.fb.group(new CreateOrUpdateSectionsInputBase());\n this.isVisibleOpen = true;\n }\n /**编辑 */\n editSectionBtn(item) {\n this.formEntity = this.fb.group(new CreateOrUpdateSectionsInputBase());\n this.formEntity.patchValue({\n ...item,\n });\n this.isVisibleOpen = true;\n }\n\n /**删除板块 */\n deletefield(row) {\n this.confirmation\n .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))\n .subscribe((status: Confirmation.Status) => {\n if (status == 'confirm') {\n this._SectionAdminService\n .delete(row.id)\n .pipe(finalize(() => {}))\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\n this.list.get();\n });\n }\n });\n }\n /**删除条目类型 */\n deleteEntryType(row) {\n this.confirmation\n .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))\n .subscribe((status: Confirmation.Status) => {\n if (status == 'confirm') {\n this._EntryTypeAdminService\n .delete(row.id)\n .pipe(finalize(() => {}))\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::DeletedSuccessfully`));\n this.list.get();\n });\n }\n });\n }\n\n}\n","<abp-page [title]=\"'Cms::Sections' | abpLocalization\" [toolbar]=\"true\">\n <div class=\"sections-page\">\n <div class=\"card \" >\n <div class=\"card-body px-2 py-sm-2 border-bottom\">\n <div class=\"row align-items-end\">\n <div class=\"mb-3 col-md-3\">\n <label class=\"form-label\">{{'Cms::IsActive' | abpLocalization}}:</label>\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.isActive\" (change)=\"siteIdChange()\">\n <option [value]=\"''\" >--</option>\n <option [value]=\"true\">{{'AbpUi::Yes'|abpLocalization}}</option>\n <option [value]=\"false\">{{'AbpUi::No'|abpLocalization}}</option>\n </select>\n </div>\n <div class=\"mb-3 col-md-3\">\n <label class=\"form-label\">{{'AbpUi::Search' | abpLocalization}}:</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\n [placeholder]=\"'AbpUi::Search' | abpLocalization\" />\n </div>\n <div class=\"mb-3 col-md-4\">\n <button class=\"btn btn-primary px-3\" type=\"button\" id=\"button-addon2\" (click)=\"list.get()\">\n <i class=\"fa fa-search\"></i>\n </button>\n </div>\n </div> \n </div>\n </div>\n <div class=\"card mb-0\">\n <div class=\"card-body p-0\">\n <div class=\"table-responsive table-fixed-header\">\n <ngx-datatable class=\"material \" [rows]=\"data.items\" [list]=\"list\"\n [columnMode]=\"ColumnMode.force\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [scrollbarH]=\"true\">\n <ngx-datatable-column [name]=\"'Cms::DisplayName' | abpLocalization\" prop=\"displayName\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::Name' | abpLocalization\" prop=\"name\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::SectionType' | abpLocalization\" prop=\"type\" [width]=\"80\" [sortable]=\"false\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{('Cms::Enum:SectionType:'+_SectionType[value]) | abpLocalization}}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::IsDefault' | abpLocalization\" prop=\"isDefault\" [width]=\"60\" [sortable]=\"false\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <i class=\"fas fa-check text-success\" *ngIf=\"value\"></i>\n <i class=\"fas fa-times text-danger\" *ngIf=\"!value\"></i>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::IsActive' | abpLocalization\" prop=\"isActive\" [width]=\"60\" [sortable]=\"false\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <i class=\"fas fa-check text-success\" *ngIf=\"value\"></i>\n <i class=\"fas fa-times text-danger\" *ngIf=\"!value\"></i>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"SiteId\" [width]=\"100\" [sortable]=\"false\"> \n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <div ngbDropdown container=\"body\">\n <button type=\"button\" class=\"btn btn-link\" ngbDropdownToggle id=\"dropdownBasic1\">\n {{'Cms::EntryType' | abpLocalization}}\n </button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <ng-container *ngFor=\"let item of row.entryTypes;let i =index\">\n <li ngbDropdownItem\n class=\"d-flex align-items-center justify-content-between\" [routerLink]=\"'/cms/admin/sections/'+row.id+'/entry-types/'+item.id+'/edit'\"\n >{{item.displayName}}\n <button class=\"btn btn-light btn-sm p-0\"\n (click.stop)=\"deleteEntryType(item)\"><i class=\"fas fa-trash p-sm-1\"\n style=\"font-size: 12px;\" role=\"button\"></i></button>\n </li>\n </ng-container>\n <li ngbDropdownItem [routerLink]=\"'/cms/admin/sections/'+row.id+'/entry-types/create'\"><i\n class=\"fas fa-plus-circle me-2\"></i>{{'Cms::New' |\n abpLocalization}}</li>\n </div>\n </div>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::CreationTime' | abpLocalization\" prop=\"creationTime\" [minWidth]=\"190\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | shortDateTime }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [sortable]=\"false\" [name]=\"'AbpUi::Actions' | abpLocalization\" [frozenLeft]=\"true\" [width]=\"110\" [maxWidth]=\"110\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <div ngbDropdown container=\"body\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\n </button>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"editSectionBtn(row)\">{{'AbpUi::Edit' |\n abpLocalization}}</button>\n <button ngbDropdownItem (click)=\"deletefield(row)\">{{'AbpUi::Delete' |\n abpLocalization}}</button>\n </div>\n </div>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n </div>\n </div>\n </div>\n</abp-page>\n<cms-create-or-edit-sections-modal (visibleChange)=\"visibleChange($event)\" [formEntity]=\"formEntity\" [visible]=\"isVisibleOpen\"></cms-create-or-edit-sections-modal>\n","import { FormArray, Validators } from \"@angular/forms\";\r\n\r\nexport class CreateOrEditEntryTypeInputBase {\r\n /**显示名称 Display name of this field */\r\n displayName: any = ['', [Validators.required]];\r\n\r\n /**名称 Unique Name*/\r\n name: any = ['', [Validators.required]];\r\n /**条目路由 */\r\n fieldTabs: any = new FormArray([])\r\n \r\n \r\n}\r\nexport class fieldTabsBase {\r\n /**名称 Unique Name*/\r\n name: any = ['', [Validators.required]];\r\n fields?: any = [[], []]\r\n}\r\nexport class fieldsBase {\r\n /**字段id Unique Name*/\r\n fieldId: any = ['', [Validators.required]];\r\n /**显示名称 Unique Name*/\r\n displayName: any = ['', [Validators.required]];\r\n // /**必填 Unique Name*/\r\n // required: any = [false, []];\r\n // /**是否在列表中显示 Unique Name*/\r\n // showInList: any = [false, []];\r\n // /**是否启用搜索 */\r\n // enableSearch: any = [false, []];\r\n}\r\n\r\n\r\n","/* eslint-disable no-prototype-builtins */\n/* eslint-disable @angular-eslint/component-selector */\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\nimport { LocalizationService } from '@abp/ng.core';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { Component, ElementRef, inject, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n CreateOrEditEntryTypeInputBase,\n fieldTabsBase,\n fieldsBase,\n} from './create-or-edit.-entry-type-input-base';\nimport { ECmsComponent } from '../../../../enums';\nimport { ValidatorsService } from '@dignite-ng/expand.core';\nimport { finalize } from 'rxjs';\nimport {\n FieldAdminService,\n FieldGroupAdminService,\n} from '../../../../proxy/dignite/cms/admin/fields';\nimport { EntryTypeAdminService } from '../../../../proxy/dignite/cms/admin/sections';\nimport { FormControlsService } from '../../../../services/form-controls.service';\n\nimport { ToPinyinService, LocationBackService, UpdateListService } from '@dignite-ng/expand.core';\n\n@Component({\n selector: 'cms-create-or-edit',\n templateUrl: './create-or-edit.component.html',\n styleUrls: ['./create-or-edit.component.scss'],\n providers: [\n {\n provide: EXTENSIONS_IDENTIFIER,\n useValue: ECmsComponent.SectionsCreateOrEdit,\n },\n ],\n})\nexport class CreateOrEditComponent implements OnInit {\n constructor(\n private toaster: ToasterService,\n public _LocationBackService: LocationBackService,\n private route: ActivatedRoute,\n public _FieldGroupAdminService: FieldGroupAdminService,\n public _FieldAdminService: FieldAdminService,\n public _EntryTypeAdminService: EntryTypeAdminService,\n public _LocalizationService: LocalizationService,\n public _FormControlsService: FormControlsService,\n private toPinyinService:ToPinyinService\n ) {}\n private fb = inject(FormBuilder);\n private _UpdateListService = inject(UpdateListService);\n /**表单实体 */\n newEntity: FormGroup | any;\n /**版块id */\n sectionId: string | any = '';\n /**条目类型id */\n entryTypesId: string | any = '';\n /**条目类型详情 */\n entryTypesSelect: any;\n\n /**是否全选 */\n isAllSelect={\n isRequired:false,\n isShowInList:false,\n isEnableSearch:false\n };\n\n get fieldTabs() {\n return this.newEntity?.get('fieldTabs') as FormArray;\n }\n\n /**获取提交按钮替身,用于真实触发表单提交 */\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /**触发提交按钮 */\n submitclickBtn() {\n this.submitclick.nativeElement.click();\n }\n\n /**需要查询的动态表单类型 */\n enableSearchTypeList: any[] = [];\n /**不需要展示的动态表单类型 */\n disableshowinTypeList: any[] = [];\n\n /**检查字段类型是否支持搜索 */\n getEnableSearchTypeList(field: any): boolean {\n const formControlName = field?.field?.formControlName;\n return this.enableSearchTypeList.includes(formControlName);\n }\n async ngOnInit() {\n const sectionId = this.route.snapshot.params.sectionsId;\n //条目类型id\n this.entryTypesId = this.route.snapshot.params.entryTypesId || '';\n //板块id\n this.sectionId = sectionId;\n this.newEntity = this.fb.group(new CreateOrEditEntryTypeInputBase());\n //获取支持搜索的字段类型列表\n this.enableSearchTypeList = await this._FormControlsService.getEnableSearchTypeList();\n //获取条目类型详情\n if(this.entryTypesId){\n await this.getEntryTypes();\n }\n //获取字段分组\n await this.getFieldGroup();\n //处理数据\n this.processData();\n }\n /**处理数据 */\n processData() {\n return new Promise((resolve, rejects) => {\n const fieldList: any = structuredClone(this.fieldList);\n const res = this.entryTypesSelect;\n if (!res) {\n this.addControlToFieldTabs();\n }else{\n res.fieldTabs.forEach(el => {\n this.addControlToFieldTabs();\n el.fields.forEach((eld: any) => {\n eld.id = eld.fieldId;\n eld.groupId = fieldList.find(elfd => elfd.id == eld.fieldId).groupId;\n this.formRightGroup.push(eld);\n const fieldindex = fieldList.findIndex(elfl => elfl.id == eld.fieldId);\n fieldList.splice(fieldindex, 1);\n });\n });\n \n this.fieldGroupList.forEach((el: any, index) => {\n el.fields = fieldList.filter(els => els.groupId === el.id);\n });\n this.newEntity?.patchValue(res);\n this.navActive = 0;\n this.resultSource = res.fieldTabs;\n\n this.setAllSelectStauts();\n\n console.log(this.isAllSelect,'this.isAllSelect',res.fieldTabs,this.navActive);\n }\n resolve(true);\n });\n }\n /**设置全选状态 */\n setAllSelectStauts(){\n this.isAllSelect.isRequired= this.resultSource[this.navActive].fields.every(eld=>eld.required);\n this.isAllSelect.isShowInList= this.resultSource[this.navActive].fields.every(eld=>eld.showInList);\n this.isAllSelect.isEnableSearch= this.resultSource[this.navActive].fields.every(eld=>eld.enableSearch);\n }\n\n /**给fieldTabs添加新控件 */\n addControlToFieldTabs(nameValue = '') {\n const newFormGroup = this.fb.group(new fieldTabsBase());\n newFormGroup\n .get('name')\n ?.patchValue(\n this.fieldTabs.length === 0\n ? this._LocalizationService.instant(`Cms::FieldTab`)\n : nameValue,\n );\n this.fieldTabs.push(newFormGroup);\n this.resultSource.push(newFormGroup.value);\n this.navActive = this.resultSource.length - 1;\n }\n\n /**获取字段分组 */\n getFieldGroup() {\n return new Promise((resolve, rejects) => {\n this._FieldGroupAdminService.getList({}).subscribe(async res => {\n const fieldList: any = await this.getFieldList();\n const fieldGroupList: any = res.items;\n fieldGroupList.unshift({\n id: null,\n name: 'UngroupedFields',\n });\n fieldGroupList.forEach((el: any, index) => {\n el.fields = fieldList.filter(els => els.groupId === el.id);\n });\n this.fieldGroupList = fieldGroupList;\n this.fieldList = structuredClone(fieldList);\n resolve(res);\n });\n });\n }\n /**获取条目类型详情 */\n getEntryTypes() {\n return new Promise((resolve, rejects) => {\n this._EntryTypeAdminService.get(this.entryTypesId).subscribe(res => {\n this.entryTypesSelect = res;\n resolve(res);\n });\n });\n }\n \n /**\n *\n * @param nameValue 获取所有字段\n */\n getFieldList() {\n return new Promise((resolve, rejects) => {\n this._FieldAdminService\n .getList({\n maxResultCount: 1000,\n })\n .subscribe((res: any) => {\n res.items.forEach(el => {\n el.required = false;\n el.showInList = false;\n el.enableSearch = false;\n });\n resolve(res.items);\n });\n });\n }\n\n /**\n * 拖拽 功能*/\n /**数据源 */\n /**数据源-字段分组数据-包含字段数据 fields */\n fieldGroupList: any[] = [];\n /**数据源-所有字段列表 */\n fieldList: any[] = [];\n /**数据源拖拽的分组下标 */\n DataSourceGroupIndex: number | any;\n /**数据源拖拽的字段下标 */\n DataSourceFieldIndex: number | any;\n /**目标源 结果*/\n resultSource: any[] = [];\n\n /**从数据源拖拽的元素 */\n fromDataSourceDragEl: any;\n /**从目标源拖拽的元素 */\n fromResultSourceDragEl: any;\n\n /**来自数据源的集合,用于从目标源拖回数据源时的判断,与取值 */\n formRightGroup: any[] = [];\n /**从数据源开始拖拽 */\n fromDataSourceDragStart(element, fieldIndex, groupIndex) {\n this.fromDataSourceDragEl = element;\n this.DataSourceFieldIndex = fieldIndex;\n this.DataSourceGroupIndex = groupIndex;\n this.fromResultSourceDragEl = undefined;\n }\n /**从目标源开始拖拽 */\n fromResultSourceDragStart(element) {\n this.fromResultSourceDragEl = element;\n this.fromDataSourceDragEl = undefined;\n this.DataSourceFieldIndex = undefined;\n this.DataSourceGroupIndex = undefined;\n }\n /**拖拽到数据源时触发 */\n dragToDataSourceDropped() {\n //从数据源拖拽到数据源-排序\n if (this.fromDataSourceDragEl) {\n /* empty */\n }\n const _fromResultSourceDragEl = this.fromResultSourceDragEl;\n const formRightGroup = structuredClone(this.formRightGroup);\n const fieldList = structuredClone(this.fieldList);\n\n if (_fromResultSourceDragEl) {\n //移动\n //从目标源拖拽到数据源\n // 拖拽目标源的下标\n const dragResultSourceIndex = this.resultSource[this.navActive].fields.findIndex(\n el => el.id == _fromResultSourceDragEl.id,\n );\n //删除目标源中的数据\n this.resultSource[this.navActive].fields.splice(dragResultSourceIndex, 1);\n formRightGroup.splice(\n formRightGroup.findIndex(el => el.id == _fromResultSourceDragEl.id),\n 1,\n );\n this.fieldGroupList.forEach(el => {\n if (el.id == _fromResultSourceDragEl.groupId) {\n const elFieldsAll = fieldList.filter(els => els.groupId === el.id);\n el.fields = elFieldsAll.filter(\n item => !formRightGroup.some(itemB => item.id === itemB.id),\n );\n }\n });\n this.formRightGroup = formRightGroup;\n }\n\n this.setfieldTabsFrom();\n this.setAllSelectStauts();\n }\n /**拖拽到目标源时触发\n *\n */\n dragToResultSourceDropped(fieldTabstem: any, fieldTabsIndex) {\n const _fromDataSourceDragEl = this.fromDataSourceDragEl;\n //从数据源拖拽到目标源\n if (_fromDataSourceDragEl) {\n this.fieldGroupList[this.DataSourceGroupIndex || 0].fields.splice(\n this.DataSourceFieldIndex,\n 1,\n );\n this.resultSource[fieldTabsIndex].fields.push(_fromDataSourceDragEl);\n this.formRightGroup.push(_fromDataSourceDragEl);\n }\n\n this.setfieldTabsFrom();\n this.setAllSelectStauts();\n }\n /** 从目标源拖拽到目标源*/\n dragToResultSourceItemDropped(fieldsIndex) {\n const _fromResultSourceDragEl = this.fromResultSourceDragEl;\n if (_fromResultSourceDragEl) {\n // 拖拽目标源的下标\n const dragResultSourceIndex = this.resultSource[this.navActive].fields.findIndex(\n el => el.id == _fromResultSourceDragEl.id,\n );\n //删除目标源中的数据\n this.resultSource[this.navActive].fields.splice(dragResultSourceIndex, 1);\n this.resultSource[this.navActive].fields.splice(fieldsIndex, 0, _fromResultSourceDragEl);\n }\n this.setfieldTabsFrom();\n this.setAllSelectStauts();\n }\n /**设置formA表单 */\n setfieldTabsFrom() {\n const setArray: any[] = [];\n this.resultSource.forEach(el => {\n const fieldsArray: any[] = [];\n el.fields.forEach(item => {\n fieldsArray.push({\n fieldId: item.id || item.fieldId,\n displayName: item.displayName,\n required: item?.required,\n showInList: item?.showInList,\n enableSearch: item?.enableSearch,\n });\n });\n setArray.push({\n name: el.name,\n fields: fieldsArray,\n });\n });\n this.newEntity?.patchValue({\n fieldTabs: setArray,\n });\n }\n private _ValidatorsService = inject(ValidatorsService);\n /**表单验证状态\n * {\n * title:true,\n * }\n */\n formValidation: any = '';\n isSubmit: boolean | any = false;\n /**保存表单 */\n save() {\n if (this.isSubmit) return;\n this.isSubmit = true;\n const input = this.newEntity?.value;\n\n this.formValidation = this._ValidatorsService.getFormValidationStatus(this.newEntity);\n if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms'))\n return (this.isSubmit = false);\n\n if (this.entryTypesSelect) {\n this._EntryTypeAdminService\n .update(this.entryTypesSelect.id, input)\n .pipe(\n finalize(() => {\n this.isSubmit = false;\n }),\n )\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`Cms::SavedSuccessfully`));\n // this._location.back();\n this._LocationBackService.backTo({\n url: `/cms/admin/fields`,\n replenish: '/edit' \n })\n \n this._UpdateListService.updateList();\n });\n return;\n }\n input.sectionId = this.sectionId;\n this._EntryTypeAdminService\n .create(input)\n .pipe(\n finalize(() => {\n this.isSubmit = false;\n }),\n )\n .subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`Cms::SavedSuccessfully`));\n // this._location.back();\n this._LocationBackService.backTo({\n url: `/cms/admin/sections`,\n replenish: '/create' \n })\n this._UpdateListService.updateList();\n });\n }\n /**编辑Tabs表单 */\n editFieldTabsFrom: FormGroup;\n /**模态框状态 */\n visibleTabsOpen: boolean | any = false;\n /**是否是忙碌状态 */\n modalBusy: boolean | any = false;\n /**正在编辑的tabs */\n editFieldTabsSelect: any;\n /**正在选中的nav */\n navActive: any = 0;\n\n /**表单控件模板-动态赋值表单控件 */\n @ViewChild('editFieldTabsModalSubmitBtn', { static: false })\n editFieldTabsModalSubmitBtn: ElementRef;\n\n /**模态框状态改变回调 */\n VisibleTabsChange(event) {\n if (!event) {\n this.editFieldTabsSelect = '';\n this.formValidation = '';\n return;\n }\n }\n /**新建增加FieldTabs */\n addFieldTabs() {\n this.editFieldTabsSelect = '';\n this.editFieldTabsFrom = this.fb.group(new fieldTabsBase());\n this.visibleTabsOpen = true;\n }\n /**正在编辑的tab下标 */\n newEditFieldTabsIndex: number | any;\n /**编辑FieldTabs */\n editFieldTabs(item, i) {\n this.editFieldTabsFrom = this.fb.group(new fieldTabsBase());\n this.editFieldTabsFrom.patchValue({\n name: item.name,\n });\n this.editFieldTabsSelect = item;\n this.visibleTabsOpen = true;\n this.newEditFieldTabsIndex = i;\n }\n\n /**保存编辑tabs表单 */\n editFieldTabsSave() {\n if (!this.editFieldTabsFrom.value.name) {\n return;\n }\n //编辑\n if (this.editFieldTabsSelect) {\n this.resultSource[this.newEditFieldTabsIndex].name = this.editFieldTabsFrom.value.name;\n this.navActive = this.newEditFieldTabsIndex;\n } else {\n //新建\n this.addControlToFieldTabs(this.editFieldTabsFrom.value.name);\n }\n this.visibleTabsOpen = false;\n this.VisibleTabsChange(false);\n this.setfieldTabsFrom();\n }\n /**删除某个tabs表单 */\n deleteFieldTabs(index) {\n this.deleteTabFieldGroupList(this.resultSource[index].fields);\n // return\n this.fieldTabs.removeAt(index);\n this.resultSource.splice(index, 1);\n if(this.navActive===index){\n this.navActive = 0;\n }\n if(this.navActive>index){\n this.navActive = this.navActive-1;\n }\n }\n\n /**删除tab标签后还原 fieldGroupList */\n deleteTabFieldGroupList(deleteFields) {\n //原数据\n const fieldList=structuredClone(this.fieldList);\n //右侧手风琴数据\n const formRightGroup=structuredClone(this.formRightGroup);\n\n // 获取要删除的原数据\n const deleteFieldList = fieldList.filter(el=>deleteFields.map(item => item.id).includes(el.id)) ;\n deleteFieldList.forEach(item=>{\n const index=formRightGroup.findIndex(el=>el.id===item.id);\n formRightGroup.splice(\n index,\n 1,\n );\n })\n \n const deleteFieldListGroupIds=deleteFieldList.map(item=>item.groupId);\n this.fieldGroupList.forEach(el => {\n if ( deleteFieldListGroupIds.includes(el.id)) {\n const elFieldsAll = fieldList.filter(els => els.groupId === el.id);\n el.fields = elFieldsAll.filter(\n item => !formRightGroup.some(itemB => item.id === itemB.id),\n );\n }\n });\n this.formRightGroup=formRightGroup;\n\n this.setfieldTabsFrom();\n }\n\n /**编辑字段模态框状态 */\n visibleEditFieldOpen: boolean | any = false;\n /**编辑字段模态框表单 */\n editFieldFrom: FormGroup;\n /**表单控件模板-动态赋值表单控件-编辑字段 */\n @ViewChild('editFieldModalSubmitBtn', { static: false }) editFieldModalSubmitBtn: ElementRef;\n /**正在编辑的字段下标 */\n EditFieldIndex: number | any;\n /**编辑字段模态框状态状态改变回调 */\n VisibleEditFieldChange(event) {\n if (!event) {\n this.EditFieldIndex = undefined;\n return;\n }\n }\n isShowInList: boolean | any = true;\n isEnableSearch: boolean | any = true;\n /**打开编辑字段模态框 */\n EditFieldModalOpen(items, elIndex) {\n this.visibleEditFieldOpen = true;\n this.EditFieldIndex = elIndex;\n this.editFieldFrom = this.fb.group(new fieldsBase());\n const fieldsOptions = this.fieldTabs.value[this.navActive].fields[elIndex];\n // this.isShowInList = !this.disableshowinTypeList.includes(fieldsOptions.field.formControlName);\n // this.isEnableSearch = this.enableSearchTypeList.includes(fieldsOptions.field.formControlName);\n this.editFieldFrom.patchValue(fieldsOptions);\n // this.disableshowinTypeList\n }\n /**保存编辑字段 */\n editFieldSave() {\n const input = this.editFieldFrom.value;\n this.resultSource[this.navActive].fields[this.EditFieldIndex].displayName = input.displayName;\n this.visibleEditFieldOpen = false;\n this.setfieldTabsFrom();\n }\n\n /**点击“字段布局”复选框事件 */\n checkboxChange(event,input) {\n const {checked,name}=event.target;\n const {index}=input;\n this.resultSource[this.navActive].fields[index][name]=checked;\n this.setfieldTabsFrom();\n this.setAllSelectStauts();\n // console.log(event.target,'点击“字段布局”复选框事件 ',event,input,'resultSource',this.resultSource,'newEntity',this.newEntity);\n }\n\n /**全选状态改变 */\n allSelectChange(event,name){\n const {checked}=event.target;\n this.resultSource[this.navActive].fields.forEach(el=>{\n if (name === 'enableSearch' && !this.getEnableSearchTypeList(el)) return;\n el[name]=checked;\n })\n console.log(this.resultSource[this.navActive].fields,'this.resultSource[this.navActive].fields',name,checked);\n this.setfieldTabsFrom();\n this.setAllSelectStauts();\n }\n\n\n\n\n /**name表单控件 */\n get nameInput() {\n return this.newEntity.get('name');\n }\n /**字段标签input失去标点生成字段名字 */\n disPlayNameInputBlur(event) {\n const value = event.target.value;\n const pinyin = this.toPinyinService.get(value);\n const nameInput: any = this.nameInput;\n if (nameInput.value) return;\n nameInput.patchValue(pinyin);\n }\n}\n","<form class=\"row g-3 needs-validation\" [formGroup]=\"newEntity\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"save()\">\n <abp-page [title]=\"entryTypesId ? ('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)\"\n [toolbar]=\"true\">\n <div class=\"create-or-edit-entry-type-page\">\n <div class=\"card\">\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <div class=\"card-body\">\n <div class=\"\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n </div>\n <div formArrayName=\"fieldTabs\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::FieldLayout' | abpLocalization}}</label>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-sm-8 border rounded\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"navActive\" class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let item of resultSource; let i = index\">\n <li [ngbNavItem]=\"i\" ngbDropdown class=\"nav-item\"\n role=\"presentation\">\n <button type=\"button\" ngbNavLink class=\"nav-link\" (click.stop)=\"setAllSelectStauts()\">\n {{ item.name }}\n <span class=\"ms-1\" (click.stop)=\"$event.stopPropagation()\"\n ngbDropdownToggle></span>\n </button>\n <div ngbDropdownMenu style=\"z-index: 999;\">\n <span ngbDropdownItem type=\"button\"\n (click.stop)=\"editFieldTabs(item,i)\">\n <i class=\"fas fa-edit\"></i>\n {{'AbpUi::Edit' | abpLocalization}}\n </span>\n <span ngbDropdownItem *ngIf=\"resultSource.length !== 1\"\n type=\"button\" (click.stop)=\"deleteFieldTabs(i)\">\n <i class=\"fas fa-trash\"></i>\n {{'AbpUi::Delete' | abpLocalization}}\n </span>\n </div>\n <ng-template ngbNavContent>\n <div class=\"p-2\" ondragover=\"event.preventDefault();\"\n (drop)=\"dragToResultSourceDropped(item,i)\"\n style=\"height: 100%;\">\n <p class=\"form-text text-muted\"\n *ngIf=\"item.fields.length === 0\">\n {{'Cms::DragAndDropFieldTips' | abpLocalization}}\n </p>\n <table class=\"table\" *ngIf=\"item.fields.length>0\">\n <thead>\n <th></th>\n <th>{{'Cms::DisplayName' | abpLocalization}}\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isRequired\" (change)=\"allSelectChange($event,'required')\" />{{'Cms::Required' | abpLocalization}}\n </div>\n \n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isShowInList\" (change)=\"allSelectChange($event,'showInList')\" />{{'Cms::ShowInList' | abpLocalization}}\n </div>\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isEnableSearch\" (change)=\"allSelectChange($event,'enableSearch')\" />{{'Cms::EnableSearch' | abpLocalization}}\n </div>\n </th>\n <th></th>\n </thead>\n <tbody>\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <tr draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\">\n <td >\n <div class=\"drag-handle d-inline\" \n cdkDragHandle>\n <span\n class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n \n <td>{{ el.displayName }}</td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.required\" name=\"required\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.showInList\" name=\"showInList\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td [style.cursor]=\"getEnableSearchTypeList(el) ? 'pointer' : 'not-allowed'\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.enableSearch\" [disabled]=\"!getEnableSearchTypeList(el)\" name=\"enableSearch\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td style=\"width: 1%;\"> \n <button\n class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n\n\n <!-- <ul class=\"list-group\" style=\"height: 100%;\">\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\"\n class=\"list-group-item d-flex align-items-center justify-content-between py-1\"\n style=\"position: unset;\">\n {{ el.displayName }}\n <button class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </li>\n </ng-container>\n </ul> -->\n\n </div>\n </ng-template>\n </li>\n </ng-container>\n <li class=\"nav-item\" role=\"presentation\">\n <button type=\"button\" class=\"nav-link\"\n (click.stop)=\"addFieldTabs()\">\n <i class=\"fas fa-plus-circle\"></i>\n {{'Cms::NewTab' | abpLocalization}}\n </button>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\" class=\"mt-2 bordernNavs p-0\"></div>\n </div>\n <div class=\"col-sm-4\">\n <div ngbAccordion #accordion=\"ngbAccordion\"\n ondragover=\"event.preventDefault();\" (drop)=\"dragToDataSourceDropped()\"\n style=\"min-height: 80px;\">\n <ng-container *ngFor=\"let item of fieldGroupList; let i = index\">\n <div [ngbAccordionItem]=\"item.name\" *ngIf=\"item.fields.length > 0\">\n <h2 ngbAccordionHeader>\n <button ngbAccordionButton>{{\n ('Cms::'+item.name) | abpLocalization }}</button>\n </h2>\n <div ngbAccordionCollapse>\n <div ngbAccordionBody>\n <ng-template>\n <ul class=\"list-group\">\n <ng-container\n *ngFor=\"let el of item.fields; let ii = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromDataSourceDragStart(el,ii,i)\"\n class=\"list-group-item\">\n {{ el.displayName }}\n </li>\n </ng-container>\n </ul>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <!-- </div> -->\n </abp-page>\n\n</form>\n<!-- 用于创建编辑tab的模态框 -->\n<abp-modal [(visible)]=\"visibleTabsOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleTabsChange($event)\">\n <ng-template #abpHeader>\n <h3>{{ editFieldTabsSelect ? ('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=\"editFieldTabsFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldTabsFrom\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"editFieldTabsSave()\">\n <button type=\"submit\" #editFieldTabsModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\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\" (click)=\"editFieldTabsModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save'\n | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>\n\n<!-- 用于修改字段配置的模态框 -->\n<abp-modal [(visible)]=\"visibleEditFieldOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleEditFieldChange($event)\">\n <ng-template #abpHeader>\n <h3>{{'AbpUi::Edit' | 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=\"editFieldFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldFrom\" (submit)=\"editFieldSave()\">\n <button type=\"submit\" #editFieldModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\" placeholder=\"\" />\n </div>\n <!-- <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"required\"\n id=\"required\" />\n <label class=\"form-check-label\" for=\"required\"> {{'Cms::Required' | abpLocalization}} </label>\n </div>\n </div> -->\n <!-- @if(isShowInList){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"showInList\"\n id=\"showInList\" />\n <label class=\"form-check-label\" for=\"showInList\"> {{'Cms::ShowInList' | abpLocalization}}\n </label>\n </div>\n </div>\n }\n @if(isEnableSearch){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"enableSearch\"\n id=\"enableSearch\" />\n <label class=\"form-check-label\" for=\"enableSearch\"> {{'Cms::EnableSearch' | abpLocalization}}\n </label>\n </div>\n </div>\n } -->\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\" [disabled]=\"!editFieldFrom.valid\"\n (click)=\"editFieldModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>","\r\n\r\nexport class EntryConfig {\r\n\r\n\r\n /**多选 */\r\n 'Entry.Multiple': any = [false, []];\r\n /**占位符 */\r\n 'Entry.Placeholder': any = ['', []];\r\n /**版块id */\r\n 'Entry.SectionId': any = ['', []];\r\n\r\n \r\n}","import { AfterContentInit, ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { EntryConfig } from './entry-config';\nimport { SectionAdminService } from '../../../proxy/dignite/cms/admin/sections';\n// import { SectionAdminService } from '../../../proxy/admin/sections';\n@Component({\n selector: 'cms-entry-config',\n templateUrl: './entry-config.component.html',\n styleUrls: ['./entry-config.component.scss'],\n})\nexport class EntryConfigComponent implements AfterContentInit {\n constructor(\n private fb: FormBuilder,\n // private _SiteAdminService: SiteAdminService,\n private _SectionAdminService: SectionAdminService\n ) {}\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n if (v == this._type) return;\n\n this._type = v;\n }\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n this._selected = v;\n }\n /**语言 */\n _culture: any;\n @Input()\n public set culture(v: any) {\n this._culture = v;\n }\n /**表单实体 */\n _Entity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this._Entity = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this._Entity.get('formConfiguration') as FormGroup;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /**站点列表 */\n siteList: any[any] = [];\n\n /**选择的站点id */\n // siteId: string = ''\n siteId: any = new FormControl('');\n /**站点下的版块 */\n SiteOfSectionList: any[any] = [];\n\n ngAfterContentInit(): void {\n //Called after ngOnInit when the component's or directive's content has been initialized.\n //Add 'implements AfterContentInit' to the class.\n }\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._Entity && this._type) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n AfterInit() {\n return new Promise(async (resolve, rejects) => {\n this._Entity.setControl('formConfiguration', this.fb.group(new EntryConfig()));\n // await this.getsiteList()\n await this.getSiteOfSectionList();\n if (this._selected) {\n this.formConfiguration.patchValue({\n ...this._selected.formConfiguration,\n });\n }\n resolve(true);\n });\n }\n\n /**获取站点列表 */\n // getsiteList() {\n // return new Promise((resolve, rejects) => {\n // this._SiteAdminService.getList({}).subscribe(res => {\n // this.siteList = res.items\n // this.siteId = res.items[0]?.id || ''\n // resolve(res.items)\n // })\n // })\n // }\n /**获取站点下的版块 */\n getSiteOfSectionList() {\n return new Promise((resolve, rejects) => {\n this._SectionAdminService\n .getList({\n maxResultCount: 1000,\n // siteId: this.siteId\n })\n .subscribe(res => {\n this.SiteOfSectionList = res.items;\n this.formConfiguration.patchValue({\n 'Entry.SectionId': res.items[0]?.id || '',\n });\n resolve(res.items);\n });\n });\n }\n\n /**切换站点 */\n async siteIdChange() {\n await this.getSiteOfSectionList();\n }\n}\n","<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}</label>\n <select class=\"form-select col-auto\" formControlName=\"Entry.SectionId\">\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Entry.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'Cms::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Placeholder' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Entry.Placeholder\">\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries/entry-admin.service';\nimport { EntryStatus } from '../../../proxy/dignite/cms/entries';\nimport { LocalizationService } from '@abp/ng.core';\n// import { EntryAdminService } from '../../../proxy/admin/entries';\n// import { EntryStatus } from '../../../proxy/entries/entry-status.enum';\n\n@Component({\n selector: 'cms-entry-control',\n templateUrl: './entry-control.component.html',\n styleUrls: ['./entry-control.component.scss'],\n})\nexport class EntryControlComponent {\n private fb = inject(FormBuilder);\n private _EntryAdminService = inject(EntryAdminService);\n private _LocalizationService = inject(LocalizationService);\n\n /**表单实体 */\n _entity: FormGroup | any;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n\n if (v) this.dataLoaded();\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n this._fields = v;\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any[]) {\n this._selected = v || [];\n }\n /**语言 */\n _culture: any;\n @Input()\n public set culture(v: any) {\n if (v) {\n this._culture = v;\n // this.dataLoaded()\n }\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n extraProperties: FormGroup | undefined;\n\n /** */\n listOfOption: any[] = [];\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._fields && this._entity && this._parentFiledName && this._culture) {\n await this.AfterInit();\n await this.getEntryAssignList();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray:any[] = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n if(!this._fields.field.formConfiguration['Entry.Multiple']){\n this.listOfSelectedValue = this._selected[0];\n }\n const newControl = this.fb.control(this._selected, ValidatorsArray);\n // newControl.addValidators(this.arrpanduan())\n const extraProperties:any = this._entity.get(this._parentFiledName) as FormGroup;\n extraProperties.setControl(this._fields.field.name, newControl);\n resolve(true);\n });\n }\n\n\n get selectInput(){\n return this._entity?.get(this._parentFiledName)?.get(this._fields.field.name) as FormControl;\n }\n listOfSelectedValue:any='';\n ModelChange(event){\n this.selectInput.patchValue(event?[event]:[]);\n }\n /**获取对应的条目 */\n getEntryAssignList(filter = '') {\n return new Promise((resolve, rejects) => {\n this._EntryAdminService\n .getList({\n culture: this._culture,\n sectionId: this._fields.field.formConfiguration['Entry.SectionId'],\n skipCount: 0,\n maxResultCount: 1000,\n status: EntryStatus.Published,\n // filter: filter,\n })\n .subscribe((res:any) => {\n this.listOfOption = res.items;\n resolve(true);\n });\n });\n }\n\n /** */\n async SelectChange(event) {\n await this.getEntryAssignList(event);\n }\n}\n","<form [formGroup]=\"_entity\">\r\n <div [formGroupName]=\"_parentFiledName\" class=\"entry-control-page\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <ng-container *ngIf=\"_fields.field.formConfiguration['Entry.Multiple']; else elseTemplate\">\r\n <nz-select class=\"form-select dignite-form-select form-select-multiple\" [nzMaxTagCount]=\"1\"\r\n nzMode=\"multiple\"\r\n [nzPlaceHolder]=\"_fields.field.formConfiguration['Entry.Placeholder']\"\r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\"\r\n [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\r\n <nz-option *ngFor=\"let item of listOfOption\" [nzLabel]=\"item.slug\" [nzValue]=\"item.id\"></nz-option>\r\n </nz-select>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <nz-select class=\"form-select dignite-form-select form-select-multiple\" \r\n [nzPlaceHolder]=\"_fields.field.formConfiguration['Entry.Placeholder']\"\r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\"\r\n [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\r\n <nz-option *ngFor=\"let item of listOfOption\" [nzLabel]=\"item.slug\" [nzValue]=\"item.id\"></nz-option>\r\n </nz-select>\r\n </ng-template>\r\n <small class=\"form-text text-muted d-block\"\r\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\r\n </div>\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input } from '@angular/core';\r\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';\r\n\r\n@Component({\r\n selector: 'cms-entry-view',\r\n templateUrl: './entry-view.component.html',\r\n styleUrl: './entry-view.component.scss',\r\n})\r\nexport class EntryViewComponent {\r\n constructor(private _EntryAdminService: EntryAdminService) {}\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList: boolean|any = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n console.log('valueOptions',this.fields)\r\n if (this.type && this._value) {\r\n const options = this.fields?.field?.formConfiguration?.['Entry.Options'] || [];\r\n \r\n if (options.length > 0) {\r\n const getTextByValue = (val: any) => {\r\n const option = options.find((opt: any) => opt.value === val || opt.Value === val);\r\n return option?.text || option?.Text || val;\r\n };\r\n \r\n if (Array.isArray(this._value)) {\r\n this.showValue = this._value.map(getTextByValue).join(',');\r\n } else {\r\n this.showValue = getTextByValue(this._value);\r\n }\r\n } else if (Array.isArray(this._value)) {\r\n this.showValue = await this.getListByIds(this._value);\r\n } else {\r\n this.showValue = this._value;\r\n }\r\n }\r\n }\r\n\r\n /**获取条目详情 */\r\n getListByIds(ids: any[]) {\r\n return new Promise((resolve, reject) => {\r\n this._EntryAdminService\r\n .getListByIds(this.fields.field.formConfiguration['Entry.SectionId'], ids)\r\n .subscribe((res: any) => {\r\n const result = res.items\r\n .map((item: any) => {\r\n return item.slug;\r\n })\r\n .join(',');\r\n resolve(result);\r\n });\r\n });\r\n }\r\n}\r\n","@if(showInList){\r\n{{showValue}}\r\n} @else{\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n <div>\r\n {{showValue}}\r\n </div>\r\n </div>\r\n}","/* eslint-disable @angular-eslint/component-selector */\r\nimport { ChangeDetectorRef, Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries/entry-admin.service';\r\nimport { EntryStatus } from '../../../proxy/dignite/cms/entries';\r\n\r\n@Component({\r\n selector: 'cms-entry-search',\r\n templateUrl: './entry-search.component.html',\r\n styleUrl: './entry-search.component.scss',\r\n})\r\nexport class EntrySearchComponent {\r\n constructor() {}\r\n private fb = inject(FormBuilder);\r\n private _EntryAdminService = inject(EntryAdminService);\r\n\r\n /**表单实体 */\r\n _entity: FormGroup | any;\r\n @Input()\r\n public set entity(v: any) {\r\n this._entity = v;\r\n\r\n if (v) this.dataLoaded();\r\n }\r\n\r\n /**字段配置列表 */\r\n _fields: any = '';\r\n @Input()\r\n public set fields(v: any) {\r\n this._fields = v;\r\n }\r\n\r\n /**父级字段名称,用于为表单设置控件赋值 */\r\n _parentFiledName: any;\r\n @Input()\r\n public set parentFiledName(v: any) {\r\n this._parentFiledName = v;\r\n }\r\n // /**父级字段名称,用于为表单设置控件赋值 */\r\n // _selected: any;\r\n // @Input()\r\n // public set selected(v: any) {\r\n // this._selected = v || [];\r\n // }\r\n /**语言 */\r\n _culture: any;\r\n @Input()\r\n public set culture(v: any) {\r\n if (v) {\r\n this._culture = v;\r\n // this.dataLoaded()\r\n }\r\n }\r\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\r\n\r\n extraProperties: FormGroup | undefined;\r\n\r\n /** */\r\n listOfOption: any[] = [];\r\n private cdr = inject(ChangeDetectorRef);\r\n async dataLoaded() {\r\n if (this._fields && this._entity && this._parentFiledName && this._culture) {\r\n await this.AfterInit();\r\n await this.getEntryAssignList();\r\n this.cdr.detectChanges(); // 手动触发变更检测\r\n this.submitclick?.nativeElement?.click();\r\n }\r\n }\r\n\r\n AfterInit() {\r\n return new Promise((resolve, rejects) => {\r\n const ValidatorsArray: any[] = [];\r\n // if (this._fields.required) {\r\n // ValidatorsArray.push(Validators.required);\r\n // }\r\n // if (!this._fields.field.formConfiguration['Entry.Multiple']) {\r\n // this.listOfSelectedValue = this._selected[0];\r\n // }\r\n const newControl = this.fb.control([], ValidatorsArray);\r\n const extraProperties: any = this._entity.get(this._parentFiledName) as FormGroup;\r\n extraProperties.setControl(this._fields.field.name, newControl);\r\n\r\n resolve(true);\r\n });\r\n }\r\n get selectInput() {\r\n return this._entity?.get(this._parentFiledName)?.get(this._fields.field.name) as FormControl;\r\n }\r\n listOfSelectedValue: any = '';\r\n ModelChange(event) {\r\n this.selectInput.patchValue(event?[event]:'');\r\n }\r\n\r\n /**获取对应的条目 */\r\n getEntryAssignList(filter = '') {\r\n return new Promise((resolve, rejects) => {\r\n this._EntryAdminService\r\n .getList({\r\n culture: this._culture,\r\n sectionId: this._fields.field.formConfiguration['Entry.SectionId'],\r\n skipCount: 0,\r\n maxResultCount: 1000,\r\n status: EntryStatus.Published,\r\n // filter: filter,\r\n })\r\n .subscribe((res: any) => {\r\n this.listOfOption = res.items;\r\n resolve(true);\r\n });\r\n });\r\n }\r\n\r\n /** */\r\n async SelectChange(event) {\r\n await this.getEntryAssignList(event);\r\n }\r\n}\r\n","<form [formGroup]=\"_entity\">\r\n <div [formGroupName]=\"_parentFiledName\" class=\"entry-control-page\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\r\n <ng-container *ngIf=\"_fields.field.formConfiguration['Entry.Multiple']; else elseTemplate\">\r\n <nz-select class=\"form-select dignite-form-select form-select-multiple\" [nzMaxTagCount]=\"1\"\r\n nzMode=\"multiple\"\r\n [nzPlaceHolder]=\"_fields.field.formConfiguration['Entry.Placeholder']\"\r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\"\r\n [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\r\n <nz-option *ngFor=\"let item of listOfOption\" [nzLabel]=\"item.slug\" [nzValue]=\"item.id\"></nz-option>\r\n </nz-select>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <nz-select class=\"form-select dignite-form-select form-select-multiple\" \r\n \r\n [nzPlaceHolder]=\"_fields.field.formConfiguration['Entry.Placeholder']\"\r\n formControlName=\"{{_fields.field.name}}\" [nzDropdownMatchSelectWidth]=\"true\"\r\n [nzDropdownClassName]=\"'dignite-form-select-dropdown'\">\r\n <nz-option *ngFor=\"let item of listOfOption\" [nzLabel]=\"item.slug\" [nzValue]=\"item.id\"></nz-option>\r\n </nz-select>\r\n </ng-template>\r\n <!-- <small class=\"form-text text-muted d-block\"\r\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small> -->\r\n </div>\r\n </div>\r\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\r\n</form>","import { FormArray, FormGroup, Validators } from \"@angular/forms\";\r\n\r\nexport class MatrixConfig {\r\n // 矩阵类型\r\n 'MatrixBlockTypes': any = new FormArray([])\r\n}\r\nexport class MatrixItemConfig {\r\n \r\n displayName: any = ['', [Validators.required]];\r\n /**字段名字 */\r\n name: any = ['', [Validators.required]];\r\n}\r\n\r\n\r\n\r\nexport class matrixFieldInputBase {\r\n\r\n\r\n /**字段名称 Display name of this field */\r\n displayName: any = ['', [Validators.required]];\r\n /**字段唯一名称 Unique Name*/\r\n name: any = ['', [Validators.required]];\r\n /**描述 说明 */\r\n description: any = ['', []];\r\n /**FieldType字段类型 表单控件名称 */\r\n formControlName: any = ['TextEdit', [Validators.required]];\r\n /**动态表单配置 */\r\n formConfiguration: FormGroup | undefined = new FormGroup({})\r\n\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Converts all keys of an object to lowercase.\r\n * 将对象所有建转化为小写\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class KeysConvertToLowercaseService {\r\n\r\n /**\r\n * 递归将对象属性名首字母转为小写\r\n * @param obj 需要处理的对象或数组\r\n * @param isInsideFormConfig 标记是否在 FormConfiguration 内部\r\n * @returns 处理后的新对象\r\n */\r\n get(obj: any, isInsideFormConfig = false): any {\r\n \r\n if (Array.isArray(obj)) {\r\n return obj.map(item => this.get(item, isInsideFormConfig));\r\n } else if (typeof obj === 'object' && obj !== null) {\r\n return Object.keys(obj).reduce((acc, key) => {\r\n // 判断当前层级是否在 FormConfiguration 内部\r\n const currentIsInsideFormConfig = isInsideFormConfig|| key === 'MatrixBlockTypes'||key==='TableColumns'||key.includes('.');\r\n // 如果在 FormConfiguration 内部,保留原字段名\r\n const newKey = currentIsInsideFormConfig ? key : key.charAt(0).toLowerCase() + key.slice(1);\r\n // 递归处理子属性,并传递是否在 FormConfiguration 内部的状态\r\n acc[newKey] = this.get(obj[key], key === 'FormConfiguration');\r\n return acc;\r\n }, {} as Record<string, any>);\r\n }\r\n return obj;\r\n }\r\n}\r\n","/* eslint-disable no-async-promise-executor */\n/* eslint-disable @angular-eslint/component-selector */\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatrixConfig, MatrixItemConfig } from './matrix-config';\nimport { KeysConvertToLowercaseService, FieldsDataService } from '../../../services';\nimport { CdkDrag, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ValidatorsService } from '@dignite-ng/expand.core';\nimport { ToPinyinService } from '@dignite-ng/expand.core'\n@Component({\n selector: 'df-matrix-config',\n templateUrl: './matrix-config.component.html',\n styleUrls: ['./matrix-config.component.scss'],\n})\nexport class MatrixConfigComponent {\n constructor(\n private fb: FormBuilder,\n private _KeysConvertToLowercaseService: KeysConvertToLowercaseService,\n private _FieldsDataService: FieldsDataService,\n private toPinyinService:ToPinyinService\n ) {}\n\n /**表单控件组 */\n _FieldControlGroup: any[]=[];\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n }\n\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n if (v) {\n for (const key in v.formConfiguration) {\n if (Array.isArray(v.formConfiguration[key])) {\n v.formConfiguration[key] = this._KeysConvertToLowercaseService.get(v.formConfiguration[key]);\n }\n }\n this._selected = v;\n }\n }\n /**表单实体 */\n _Entity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this._Entity = v;\n this.dataLoaded();\n }\n\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._Entity && this._type) {\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n // this.submitclick?.nativeElement?.click();\n }\n }\n\n AfterInit() {\n return new Promise(async (resolve) => {\n this._FieldControlGroup = await this._FieldsDataService.getControlsfieldTypes();\n this._Entity.setControl('formConfiguration', this.fb.group(new MatrixConfig()));\n await this.setSelectValue();\n this.formConfiguration.patchValue(this._selected.formConfiguration);\n \n resolve(true);\n });\n }\n /**\n * 设置选择值\n * @returns void\n */\n setSelectValue() {\n return new Promise((resolve) => {\n if (this._selected && this._selected.formControlName == this._type) {\n this._selected.formConfiguration['MatrixBlockTypes'].forEach((el, index) => {\n this.addMatrixBlockTypeItem(el);\n el.fields.forEach((elf) => {\n this.addMatrixFieldItem(elf, index);\n });\n });\n resolve(true);\n }\n });\n }\n\n /**获取表单配置 */\n get formConfiguration() {\n return this._Entity.get('formConfiguration') as FormGroup;\n }\n\n /**获取表单配置下的矩阵块表单数组 */\n get MatrixBlockTypes() {\n return this.formConfiguration.controls['MatrixBlockTypes'] as FormArray;\n }\n\n /**模态框-状态 */\n matrixModalOpen: boolean | any = false;\n /**模态框-是否正在编辑 */\n isMatrixModalEdit: any = false;\n\n /**模态框-用于确定模态的繁忙状态是否为真 */\n modalBusy: boolean | any = false;\n\n /**模态框-表单 */\n matrixModalForm: FormGroup | undefined;\n\n /**表单控件模板-用于在form外提交submit */\n @ViewChild('matrixModalModalSubmit', { static: false }) matrixModalModalSubmit: ElementRef;\n\n /**矩阵块-选择的下标 */\n selectMatrixBlockIndex: any = 0;\n\n /**矩阵块-选择的矩阵下字段的下标 */\n selectMatrixFieldIndex: any = 0;\n\n /**模态框-状态改变 */\n matrixModalVisibleChange(event) {\n if (!event) {\n this.isMatrixModalEdit = false;\n this.matrixModalForm = undefined;\n return;\n }\n }\n\n /**矩阵块--新增-打开模态框 */\n addMatrixBlockType() {\n this.matrixModalForm = this.fb.group(new MatrixItemConfig());\n this.matrixModalOpen = true;\n }\n formValidation: any;\n private _ValidatorsService = inject(ValidatorsService);\n /**模态框--矩阵表单保存提交 */\n createOrEditSave() {\n const input = this.matrixModalForm.value;\n this.formValidation = this._ValidatorsService.getFormValidationStatus(this.matrixModalForm);\n if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')) return;\n if (!this.matrixModalForm.valid) return;\n if (this.isMatrixModalEdit) {\n const MatrixBlockTypesItem = this.MatrixBlockTypes.at(\n this.selectMatrixBlockIndex\n ) as FormGroup;\n MatrixBlockTypesItem.patchValue({\n ...input,\n });\n } else {\n this.addMatrixBlockTypeItem(input);\n }\n this.matrixModalOpen = false;\n this.matrixModalVisibleChange(false);\n }\n /**新增矩阵块-向数组表单中增加项 */\n addMatrixBlockTypeItem(input) {\n this.MatrixBlockTypes.push(\n new FormGroup({\n displayName: new FormControl(input.displayName, Validators.required),\n name: new FormControl(input.name, Validators.required),\n fields: new FormArray([]),\n })\n );\n }\n /**编辑矩阵块 */\n EditMatrixBlock(input) {\n this.matrixModalForm = this.fb.group(new MatrixItemConfig());\n this.matrixModalForm.patchValue({\n ...input,\n });\n this.matrixModalOpen = true;\n this.isMatrixModalEdit = true;\n \n }\n\n /**删除矩阵块 */\n DeleteMatrixBlock(index) {\n this.MatrixBlockTypes.removeAt(index);\n }\n\n /**矩阵块-选择 */\n selectMatrixBlockChange(index) {\n this.selectMatrixBlockIndex = index;\n }\n\n /**矩阵字段-新增 */\n addMatrixField() {\n this.addMatrixFieldItem('', this.selectMatrixBlockIndex);\n const MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(\n this.selectMatrixBlockIndex\n ) as FormGroup;\n const MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields') as FormArray;\n this.selectMatrixFieldChange(0, MatrixFieldItemForm.length - 1);\n }\n /**矩阵字段-新增矩阵字段项 */\n addMatrixFieldItem(input: any = '', selectMatrixBlockIndex) {\n /**矩阵下标的矩阵项Form */\n const MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(selectMatrixBlockIndex) as FormGroup;\n const MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields') as FormArray;\n MatrixFieldItemForm.push(\n this.fb.group({\n /**字段名称 Display name of this field */\n displayName: [input.displayName, [Validators.required]],\n /**字段唯一名称 Unique Name*/\n name: [input.name, [Validators.required]],\n /**描述 说明 */\n description: [input.description, []],\n /**FieldType字段类型 表单控件名称 */\n formControlName: [input.formControlName || 'TextEdit', [Validators.required]],\n //动态表单配置\n formConfiguration: new FormGroup({}),\n })\n );\n //\n }\n\n /**删除矩阵字段项 */\n deleteMatrixField(MatrixFieldForm, index) {\n MatrixFieldForm.removeAt(index);\n this.selectMatrixFieldIndex = 0;\n }\n\n /**矩阵字段-选择 */\n selectMatrixFieldChange(MatrixBlockIndex, MatrixFieldIndex) {\n this.selectMatrixFieldIndex = MatrixFieldIndex;\n }\n\n get nameInput() {\n return this.matrixModalForm?.get('name');\n }\n get FieldnameInput() {\n const MatrixBlockTypesItemForm = this.MatrixBlockTypes.at(\n this.selectMatrixBlockIndex\n ) as FormGroup;\n const MatrixFieldItemForm = MatrixBlockTypesItemForm.get('fields') as FormArray;\n return MatrixFieldItemForm.at(this.selectMatrixFieldIndex).get('name');\n }\n\n /**矩阵displayNameInput字段失去焦点 */\n displayNameInputBlur(event) {\n const value = event.target.value;\n const pinyin = this.toPinyinService.get(value);\n const nameInput = this.nameInput;\n if (nameInput.value) return;\n nameInput.patchValue(pinyin);\n }\n /**矩阵displayNameInput字段失去焦点 */\n MatrixFieldDisplayNameInputBlur(event) {\n const value = event.target.value;\n const pinyin = this.toPinyinService.get(value);\n const FieldnameInput = this.FieldnameInput;\n if (FieldnameInput.value) return;\n FieldnameInput.patchValue(pinyin);\n }\n\n dropMatrix(event) {\n if (event.container.data === event.previousContainer.data) {\n moveItemInArray(this.MatrixBlockTypes.controls, event.previousIndex, event.currentIndex);\n this.MatrixBlockTypes.updateValueAndValidity();\n this.selectMatrixBlockIndex = event.currentIndex;\n } else {\n const object1 = this.MatrixBlockTypes.controls[this.selectMatrixBlockIndex].get(\n 'fields'\n ) as FormArray;\n const controlsItem = object1.at(event.previousIndex);\n object1.removeAt(event.previousIndex);\n event.container.data[event.currentIndex-1].controls['fields'].push(controlsItem);\n }\n this.fieldStartDrag=false;\n }\n dropFields(event) {\n const object1 = this.MatrixBlockTypes.controls[this.selectMatrixBlockIndex].get(\n 'fields'\n ) as FormArray;\n moveItemInArray(object1.controls, event.previousIndex, event.currentIndex);\n this.MatrixBlockTypes.updateValueAndValidity();\n this.selectMatrixFieldIndex = event.currentIndex;\n this.fieldStartDrag=false;\n }\n sortPredicate(index: number, item: CdkDrag<number>) {\n return index!==0;\n }\n sortPredicateTrue(){\n return true;\n }\n /**字段开始拖拽 */\n fieldStartDrag:any=false;\n CdkDragStart(event) {\n this.fieldStartDrag=true;\n }\n}\n","<div [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\" *ngIf=\"MatrixBlockTypes\">\n <div class=\"col-md-3\" >\n <div class=\"list-group\" [class.fieldStartDragClass]=\"fieldStartDrag\" cdkDropList (cdkDropListDropped)=\"dropMatrix($event)\" #todoList=\"cdkDropList\"\n [cdkDropListData]=\"MatrixBlockTypes.controls\" [cdkDropListSortPredicate]=\"fieldStartDrag?sortPredicate:sortPredicateTrue\"> \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\" type=\"button\" (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 pe-2\"\n [class.active]=\"i===selectMatrixBlockIndex\" cdkDrag>\n <div style=\"line-break: anywhere;\">\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div class=\"d-flex align-items-center justify-content-between\">\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm me-2\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem type=\"button\"\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' |\n abpLocalization}}</button>\n <button ngbDropdownItem type=\"button\"\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' |\n abpLocalization}}</button>\n </div>\n </div>\n <span class=\"bi bi-arrows-move fs-5 drag-handle\" cdkDragHandle></span>\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\" cdkDropList\n (cdkDropListDropped)=\"dropFields($event)\" [cdkDropListData]=\"MatrixBlockTypes.controls[selectMatrixBlockIndex].get('fields').controls\" [cdkDropListConnectedTo]=\"[todoList]\">\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\" type=\"button\" (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 pe-2\"\n [class.active]=\"fi===selectMatrixFieldIndex\" cdkDrag (cdkDragStarted)=\"CdkDragStart($event)\">\n <div style=\"line-break: anywhere;\">\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <div class=\"d-flex align-items-center justify-content-between\">\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n <span class=\"bi bi-arrows-move fs-5 drag-handle\" cdkDragHandle></span>\n </div>\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-3\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' |\n abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"name\">{{'AbpDynamicForm::FieldName' |\n abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <small class=\"form-text text-muted d-block\">\n {{'AbpDynamicForm::FieldNameHelpText' | abpLocalization}}</small>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"description\">{{'Cms::Description' |\n abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\" for=\"formControlName\">{{'Cms::FieldType' |\n abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\">\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 <ng-container *ngIf=\"itemf.value.formControlName&&itemf\">\n <df-dynamic-config [type]=\"itemf.value.formControlName\"\n [selected]=\"_selected?_selected.formConfiguration?.MatrixBlockTypes[i]?.fields[fi]:''\"\n [form]=\"itemf\"></df-dynamic-config>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</div>\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 [formGroup]=\"matrixModalForm\" (submit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-3\">\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-3\">\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\" (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' |\n abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>\n\n","/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { KeysConvertToLowercaseService } from '../../../services';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'df-matrix-control',\n templateUrl: './matrix-control.component.html',\n styleUrls: ['./matrix-control.component.scss'],\n})\nexport class MatrixControlComponent {\n constructor(private fb: FormBuilder, private _KeysConvertToLowercaseService: KeysConvertToLowercaseService) {}\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n if (v) {\n for (const key in v.field?.formConfiguration) {\n if (Array.isArray(v.field?.formConfiguration[key])) {\n v.field.formConfiguration[key] = this._KeysConvertToLowercaseService.get(\n v.field?.formConfiguration[key],\n );\n }\n }\n\n this._fields = v;\n }\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n if (v) {\n v = this._KeysConvertToLowercaseService.get(v);\n this._selected = v;\n }\n }\n /**语言 */\n _culture: any;\n @Input()\n public set culture(v: any) {\n this._culture = v;\n }\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n if (v) {\n this.dataLoaded();\n }\n }\n\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /** 获取父级字段代表的表单组*/\n extraProperties: FormGroup | undefined;\n\n private cdr = inject(ChangeDetectorRef);\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity && this._parentFiledName) {\n this.extraProperties = this._entity.get(this._parentFiledName) as FormGroup;\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n if (this._selected) {\n this.fieldNameControl.patchValue(this._selected);\n for (const index of Object.keys(this.fieldNameControl.controls)) {\n const item = this.fieldNameControl.at(Number(index)) as FormGroup;\n item.get('isOpen').patchValue(false);\n }\n }\n this._selected = '';\n // console.log(this.fieldNameControl, 'fieldNameControl', this._fields.field.name);\n }\n }\n\n formConfiguration: any;\n /**获取表格字段代表的控件 */\n fieldNameControl: FormArray | undefined;\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const formConfiguration = this._fields.field.formConfiguration;\n const ValidatorsArray = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n const newArrayGroup = this.fb.array([], ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newArrayGroup);\n this.fieldNameControl = this.extraProperties.get(this._fields.field.name) as FormArray;\n if (this._fields.required) {\n this.fieldNameControl.addValidators(this.hasValueValidator);\n // for (const element of formConfiguration.MatrixBlockTypes) {\n // element.required = true;\n // }\n }\n\n if (this._selected) {\n this._selected.forEach(el => {\n this.addMatrixControl(\n formConfiguration.MatrixBlockTypes.find(item => item.name == el.matrixBlockTypeName),\n );\n });\n // this.isAllExpanded=false;\n }else{\n this.isAllExpanded=true;\n }\n\n\n this.MatrixBlockTypesList = formConfiguration.MatrixBlockTypes;\n resolve(true);\n });\n }\n\n /**是否带有值验证器 */\n hasValueValidator(g: FormArray) {\n // 检查是否有任何控件包含有效值\n const hasValue = g.controls.some(element => {\n const extraProperties = element.get('extraProperties');\n return Object.keys(extraProperties.value).some(key => {\n const value = extraProperties.value[key];\n // 检查数组类型值\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n // 检查非空值\n return value !== null && value !== undefined && value !== '';\n });\n });\n\n // 根据验证结果设置表单状态\n g.controls.forEach(element => {\n const extraProperties = element.get('extraProperties');\n Object.keys(extraProperties.value).forEach(key => {\n if (!hasValue) {\n // 如果没有值,设置所有字段为必填\n extraProperties.get(key).setValidators(Validators.required);\n extraProperties.get(key).setErrors({ required: true });\n } else {\n // 如果有值,清除错误\n extraProperties.get(key).setErrors(null);\n }\n });\n });\n\n // 返回验证结果\n return hasValue? null : { required: true };\n // return hasValue? null : null;\n }\n\n /**矩阵列表 */\n MatrixBlockTypesList: any[] = [];\n\n /**增加指定矩阵控件项 */\n addMatrixControl(item) {\n this.fieldNameControl.push(\n new FormGroup({\n extraProperties: new FormGroup({}),\n matrixBlockTypeName: new FormControl(item.name),\n displayName: new FormControl(item.displayName),\n isOpen: new FormControl(true),\n }),\n );\n }\n\n /**展开,收缩矩阵 */\n ExpandChange(index) {\n const fieldNameControlItem = this.fieldNameControl.controls[index] as FormGroup;\n fieldNameControlItem.get('isOpen').patchValue(!fieldNameControlItem.get('isOpen').value);\n }\n /**删除矩阵控件 */\n deleteMatrixControl(index, item) {\n this.fieldNameControl.removeAt(index);\n }\n /**调整表格位置 */\n drop(event: any) {\n moveItemInArray(this.fieldNameControl.controls, event.previousIndex, event.currentIndex);\n this.fieldNameControl.updateValueAndValidity();\n }\n\n /**是否全部展开 */\n isAllExpanded = false;\n\n /**切换全部展开/折叠状态 */\n toggleAll() {\n this.isAllExpanded = !this.isAllExpanded;\n if (this.fieldNameControl) {\n this.fieldNameControl.controls.forEach((control: FormGroup) => {\n control.get('isOpen').patchValue(this.isAllExpanded);\n });\n }\n }\n}\n","<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\">\n <div class=\"mb-3 position-relative\">\n <div class=\"d-flex align-items-center justify-content-between position-sticky bg-white py-1\" style=\"top: 42px;z-index: 10;\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n @if(fieldNameControl?.controls?.length>0){\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"toggleAll()\">\n <i class=\"bi\" [class.bi-arrows-expand]=\"!isAllExpanded\" [class.bi-arrows-collapse]=\"isAllExpanded\"></i>\n <!-- {{ isAllExpanded ? '折叠全部' : '展开全部' }} -->\n </button>\n }\n </div>\n <div [class]=\"fieldNameControl?.controls?.length>0?'border p-2 rounded-2':''\">\n <div [formArrayName]=\"_fields.field.name\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <ng-container *ngFor=\"let item of fieldNameControl.controls;let i=index\">\n <div class=\"card mb-3 border \" [formGroupName]=\"i\" cdkDrag cdkDragLockAxis=\"y\"\n [cdkDragData]=\"item\">\n <div type=\"button\"\n class=\"card-header d-flex align-items-center justify-content-between border-bottom pt-1\" (click.stop)=\"ExpandChange(i)\">\n <div class=\"d-flex\">\n <div class=\"drag-handle me-2\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>{{item.value.displayName}}\n </div>\n <div class=\"d-flex align-items-center\">\n <button class=\"btn btn-sm btn-light p-0\"\n (click.stop)=\"deleteMatrixControl(i,item)\"><i\n class=\"fas fa-trash p-2\"></i></button>\n <i class=\"bi bi-chevron-down ms-2 \" [style]=\"{display: 'inline-block', transform: item.value.isOpen?'rotate(180deg)':'rotate(0deg)'}\" ></i>\n </div>\n </div>\n <div class=\"card-body\" style=\"overflow:hidden;transition: all 0.2s;\" [style]=\"item.value.isOpen?'height:auto;':'height:0px;padding-top:0px;padding-bottom:0px;'\">\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-control [fields]=\"{ field: elf,displayName:elf.displayName }\"\n [selected]=\"_selected ? _selected[i]?_selected[i][_parentFiledName][elf.name]:'': ''\"\n [parentFiledName]=\"'extraProperties'\" [culture]=\"_culture\"\n [entity]=\"item\"></df-dynamic-control>\n \n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n \n </ng-container>\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-dark soft btn-sm\" (click.stop)=\"addMatrixControl(item)\"><i\n class=\"fas fa-plus me-1\"></i>{{item.displayName}}</button>\n </ng-container>\n </div>\n @if(fieldNameControl?.errors?.required && fieldNameControl.touched){\n <span class=\"form-text invalid-feedback d-block\">{{\"AbpValidation::ThisFieldIsRequired.\"|abpLocalization}}</span>\n }\n \n <small class=\"form-text text-muted d-block\"\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none\" #submitclick></button>\n</form>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cms-matrix-view',\r\n templateUrl: './matrix-view.component.html',\r\n styleUrl: './matrix-view.component.scss',\r\n})\r\nexport class MatrixViewComponent {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList: boolean = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n let valueOptions = this._value;\r\n if (this.type && valueOptions) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{'Cms::NotShowInList'|abpLocalization}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n</div>\r\n}","import { FormArray, FormControl, FormGroup, Validators } from \"@angular/forms\";\r\n\r\nexport class TableConfig {\r\n\r\n // 选项\r\n TableColumns: any = new FormArray([])\r\n}\r\nexport class TableFormControl {\r\n /**列标题 */\r\n displayName: any = ['', [Validators.required]];\r\n /**空间配置 */\r\n formConfiguration: any = new FormGroup({})\r\n /**列名 */\r\n name: any = ['', [Validators.required]];\r\n //控件标识\r\n formControlName: any = ['', [Validators.required]];\r\n\r\n /**是否必填 */\r\n required: any = [false];\r\n /**描述 */\r\n description: any = [''];\r\n\r\n\r\n}","/* eslint-disable no-async-promise-executor */\n/* eslint-disable @angular-eslint/component-selector */\nimport { ChangeDetectorRef, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup } from '@angular/forms';\nimport { TableConfig, TableFormControl } from './table-config';\nimport { KeysConvertToLowercaseService, FieldsDataService } from '../../../services';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ToPinyinService } from '@dignite-ng/expand.core';\n@Component({\n selector: 'df-table-config',\n templateUrl: './table-config.component.html',\n styleUrls: ['./table-config.component.scss'],\n})\nexport class TableConfigComponent {\n constructor(\n private fb: FormBuilder,\n private _KeysConvertToLowercaseService: KeysConvertToLowercaseService,\n private _FieldsDataService: FieldsDataService,\n private toPinyinService: ToPinyinService,\n ) {}\n /**表单实体 */\n _Entity: FormGroup | undefined;\n @Input()\n public set Entity(v: FormGroup) {\n this._Entity = v;\n this.dataLoaded();\n }\n /**选择的表单信息 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n if (v) {\n for (const key in v.formConfiguration) {\n if (Array.isArray(v.formConfiguration[key])) {\n v.formConfiguration[key] = this._KeysConvertToLowercaseService.get(\n v.formConfiguration[key],\n );\n }\n }\n this._selected = v;\n this.dataLoaded();\n }\n }\n /**表单控件组 */\n _fieldControlGroup: any = [];\n\n /**表单控件类型 */\n _type: any;\n @Input()\n public set type(v: any) {\n this._type = v;\n this.dataLoaded();\n }\n get formConfiguration() {\n return this._Entity?.get('formConfiguration') as FormGroup;\n }\n get TableColumns() {\n return this.formConfiguration.controls['TableColumns'] as FormArray;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n private cdr = inject(ChangeDetectorRef);\n async dataLoaded() {\n if (this._Entity && this._type) {\n await this.AfterInit();\n }\n }\n /**增加选项 */\n addTableColumns() {\n this.TableColumns.push(\n this.fb.group({\n ...new TableFormControl(),\n formConfiguration: [{}],\n }),\n );\n this.cdr.detectChanges(); // 手动触发变更检测\n }\n /**删除某个选项 */\n deleteTableColumns(index) {\n this.TableColumns.removeAt(index);\n }\n\n async AfterInit() {\n return new Promise(async resolve => {\n this._Entity?.setControl('formConfiguration', this.fb.group(new TableConfig()));\n // this.formConfiguration.addValidators([this.validateTableColumns]);\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n this._fieldControlGroup = await this._FieldsDataService.getControlsfieldTypes();\n if (this._selected && this._selected.formControlName == this._type) {\n this._selected.formConfiguration['TableColumns'].forEach(() => {\n this.addTableColumns();\n });\n this.formConfiguration.patchValue(this._selected.formConfiguration);\n } else {\n this.addTableColumns();\n }\n this.TableColumns.valueChanges.subscribe(value=>{\n console.log(value,'value');\n })\n\n resolve(true);\n });\n }\n /**\n * 自定义验证函数\n * @param formArray 要验证的 FormArray\n * @returns 验证结果,如果所有项都通过验证则返回 null,否则返回 { invalidArray: true }\n */\n validateTableColumns(formArray: FormArray) {\n // console.log(formArray,'自定义验证函数');\n if (formArray.length === 0) {\n return { invalidArray: true };\n }\n return null;\n }\n itemForm: any;\n\n /**选择表格的表单控件 */\n selectTableControl(event, i, item) {\n if (event.target.value === '') return;\n console.log(this.CurrentSelectionTableControlName,'CurrentSelectionTableControlName');\n this.CurrentSelectionTableControlName = event.target.value;\n this.tableSelectOpen = true;\n this.tableSelectForm = this.fb.group(new TableFormControl());\n this.TableColumnsIndex = i;\n this.itemForm = item;\n console.log(this.TableColumns,'TableColumns',this._tableSelected);\n }\n\n CurrentSelectionTableControlName: any;\n\n /**正在创建或编辑的表格项下标 */\n TableColumnsIndex: any;\n /**创建站点模态框状态 */\n tableSelectOpen: boolean | any = false;\n\n /**用于确定模态的繁忙状态是否为真 */\n modalBusy: boolean | any = false;\n /**创建站点表单 */\n tableSelectForm: FormGroup | undefined;\n /**表格已选择数据 */\n _tableSelected: any;\n\n /**表单控件模板-动态赋值表单控件 */\n @ViewChild('tableSelectModalSubmit', { static: false }) tableSelectModalSubmit: ElementRef;\n\n /**创建站点模态框状态改变 */\n tableSelectVisibleChange(event) {\n \n if (!event) {\n \n\n this._tableSelected = undefined;\n this.tableSelectForm = undefined;\n this.CurrentSelectionTableControlName = undefined;\n this.TableColumnsIndex = undefined;\n return;\n }\n }\n /**表单保存提交 */\n createOrEditSave() {\n const formGroup = this.TableColumns.at(this.TableColumnsIndex) as FormGroup;\n const formConfigurationgroup = formGroup.get('formConfiguration') as FormGroup;\n\n formConfigurationgroup.setValue({\n ...this.tableSelectForm?.value['formConfiguration'],\n });\n this.tableSelectOpen = false;\n }\n\n /**编辑站点按钮 */\n EditSitesBtn(rows, i) {\n this.CurrentSelectionTableControlName = rows.get('formControlName').value;\n this.tableSelectForm = this.fb.group(new TableFormControl());\n this.tableSelectForm.patchValue({\n ...rows.value,\n });\n this.tableSelectForm.get('formConfiguration')?.patchValue({\n ...rows.value['formConfiguration'],\n });\n this._tableSelected = rows.value;\n this.TableColumnsIndex = i;\n this.tableSelectOpen = true;\n }\n\n // /**调整表格位置 */\n // TableArrowUpOrDown(type, index) {\n // const controlAt = this.TableColumns.at(index)\n // this.TableColumns.removeAt(index)\n // const lastindex = type == 'up' ? index - 1 : index + 1\n // this.TableColumns.insert(lastindex, controlAt)\n // }\n\n /**字段标签input失去标点生成字段名字 */\n disPlayNameInputBlur(event, item) {\n const value = event.target.value;\n const pinyin = this.toPinyinService.get(value);\n const nameInput = item.get('name');\n if (nameInput.value) return;\n nameInput.patchValue(pinyin);\n }\n /**调整表格位置 */\n drop(event: any) {\n moveItemInArray(this.TableColumns.controls, event.previousIndex, event.currentIndex);\n this.TableColumns.updateValueAndValidity();\n }\n}\n","<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'AbpDynamicForm::SelectListItem' | abpLocalization}}</label>\n <table class=\"table drag-table\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'Cms::TableColumnDisplayName' | abpLocalization}}</th>\n <th scope=\"col\">{{'Cms::TableColumnName' | abpLocalization}}</th>\n <th scope=\"col\">{{'Cms::TableColumnForm' | abpLocalization}}</th>\n <th scope=\"col\" class=\"flex-end\">\n <button class=\"btn btn-light btn-sm\" type=\"button\" (click.stop)=\"addTableColumns()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button> \n </th>\n </tr>\n </thead>\n <tbody formArrayName=\"TableColumns\">\n <ng-container *ngFor=\"let item of TableColumns.controls;let i=index\">\n <tr [formGroupName]=\"i\" cdkDrag cdkDragLockAxis=\"y\" [cdkDragData]=\"item\">\n <td>\n <div class=\"drag-handle\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"displayName\" required (blur)=\"disPlayNameInputBlur($event,item)\" ></td>\n <td><input type=\"text\" class=\"form-control\" formControlName=\"name\" required></td>\n <td>\n <select class=\"form-select\" formControlName=\"formControlName\" required\n (change)=\"selectTableControl($event,i,item)\">\n <option value=\"\">{{'Cms::SelectFormControl' | abpLocalization}}</option>\n <ng-container *ngFor=\"let item_f of _fieldControlGroup;let i_f =index\">\n <option [value]=\"item_f.name\">{{item_f.displayName}}</option>\n </ng-container>\n </select>\n </td>\n <td scope=\"row\">\n <div class=\"flex-start\">\n <button class=\"btn btn-light btn-sm \" type=\"button\" (click.stop)=\"EditSitesBtn(item,i)\">\n <i class=\"fas fa-edit\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\" type=\"button\" (click.stop)=\"deleteTableColumns(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n <button type=\"submit\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n<abp-modal [(visible)]=\"tableSelectOpen\" [busy]=\"modalBusy\" (visibleChange)=\"tableSelectVisibleChange($event)\" [options]=\"{ size: CurrentSelectionTableControlName==='Matrix'?'xl':'' ,scrollable:false }\">\n <ng-template #abpHeader>\n <h3>{{_tableSelected?('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=\"tableSelectForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"tableSelectForm\"\n (submit)=\"createOrEditSave()\">\n <button type=\"submit\" #tableSelectModalSubmit style=\"display: none\"></button>\n <ng-container *ngIf=\"CurrentSelectionTableControlName&&tableSelectForm\">\n <df-dynamic-config [type]=\"CurrentSelectionTableControlName\" \n [selected]=\"_tableSelected\" [formGroup]=\"tableSelectForm\" [form]=\"tableSelectForm\"></df-dynamic-config>\n </ng-container>\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)=\"tableSelectModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>","import { ChangeDetectorRef, Component, ElementRef, Input, ViewChild, inject } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { KeysConvertToLowercaseService } from '../../../services';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'df-table-control',\n templateUrl: './table-control.component.html',\n styleUrls: ['./table-control.component.scss'],\n})\nexport class TableControlComponent {\n constructor(\n private _KeysConvertToLowercaseService: KeysConvertToLowercaseService // private fb: FormBuilder,\n ) {}\n private fb = inject(FormBuilder);\n\n /**表单实体 */\n _entity: FormGroup | undefined;\n @Input()\n public set entity(v: any) {\n this._entity = v;\n this.dataLoaded();\n }\n\n /**字段配置列表 */\n _fields: any = '';\n @Input()\n public set fields(v: any) {\n if (v) {\n for (const key in v.field?.formConfiguration) {\n if (Array.isArray(v.field?.formConfiguration[key])) {\n v.field.formConfiguration[key] = this._KeysConvertToLowercaseService.get(\n v.field?.formConfiguration[key]\n );\n }\n }\n this._fields = v;\n this.dataLoaded();\n }\n }\n\n /**父级字段名称,用于为表单设置控件赋值 */\n _parentFiledName: any;\n @Input()\n public set parentFiledName(v: any) {\n this._parentFiledName = v;\n this.dataLoaded();\n }\n /**父级字段名称,用于为表单设置控件赋值 */\n _selected: any;\n @Input()\n public set selected(v: any) {\n if (v) {\n v = this._KeysConvertToLowercaseService.get(v);\n this._selected = v;\n this.dataLoaded();\n }\n }\n /**语言 */\n _culture: any;\n @Input()\n public set culture(v: any) {\n this._culture = v;\n }\n @ViewChild('submitclick', { static: true }) submitclick: ElementRef;\n\n /** 获取父级字段代表的表单组*/\n extraProperties: FormGroup | undefined;\n private cdr = inject(ChangeDetectorRef);\n /**数据加载完成 */\n async dataLoaded() {\n if (this._fields && this._entity && this._parentFiledName) {\n this.extraProperties = this._entity.get(this._parentFiledName) as FormGroup;\n await this.AfterInit();\n this.cdr.detectChanges(); // 手动触发变更检测\n this.submitclick?.nativeElement?.click();\n }\n }\n\n formConfiguration: any;\n /**获取表格字段代表的控件 */\n fieldNameControl: FormArray | undefined;\n\n AfterInit() {\n return new Promise((resolve, rejects) => {\n const ValidatorsArray = [];\n if (this._fields.required) {\n ValidatorsArray.push(Validators.required);\n }\n const formConfiguration = this._fields.field.formConfiguration;\n \n this.formConfiguration = formConfiguration;\n const newArrayGroup = this.fb.array([],ValidatorsArray);\n this.extraProperties.setControl(this._fields.field.name, newArrayGroup);\n this.fieldNameControl = this.extraProperties.get(this._fields.field.name) as FormArray;\n if(this._fields.required){\n this.fieldNameControl.addValidators(this.hasValueValidator);\n // for (const element of formConfiguration.TableColumns) {\n // element.required = true;\n // }\n }\n if (this._selected) {\n this._selected.forEach(el => {\n this.addTableControlItem();\n });\n this.fieldNameControl.patchValue(this._selected);\n } else {\n this.addTableControlItem();\n }\n resolve(true);\n });\n }\n /**是否带有值验证器 */\n hasValueValidator(g: FormArray) {\n // 检查是否有任何控件包含有效值\n const hasValue = g.controls.some(element => {\n const extraProperties = element.get('extraProperties');\n return Object.keys(extraProperties.value).some(key => {\n const value = extraProperties.value[key];\n // 检查数组类型值\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n // 检查非空值\n return value !== null && value !== undefined && value !== '';\n });\n });\n\n // 根据验证结果设置表单状态\n g.controls.forEach(element => {\n const extraProperties = element.get('extraProperties');\n Object.keys(extraProperties.value).forEach(key => {\n if (!hasValue) {\n // 如果没有值,设置所有字段为必填\n extraProperties.get(key).setValidators(Validators.required);\n extraProperties.get(key).setErrors({ required: true });\n } else {\n // 如果有值,清除错误\n extraProperties.get(key).setErrors(null);\n }\n });\n });\n\n // 返回验证结果\n return hasValue&&g.controls.length>0 ? null : { required: true };\n}\n\n /**增加表格项 */\n addTableControlItem() {\n this.fieldNameControl.push(\n this.fb.group({\n extraProperties: this.fb.group({}),\n })\n );\n // this.fieldNameControl.updateValueAndValidity();\n }\n /**删除表格项 */\n minusTableControlItem(index) {\n this.fieldNameControl.removeAt(index);\n }\n /**调整表格位置 */\n TableArrowUpOrDown(type, index) {\n const controlAt = this.fieldNameControl.at(index);\n this.fieldNameControl.removeAt(index);\n const lastindex = type == 'up' ? index - 1 : index + 1;\n this.fieldNameControl.insert(lastindex, controlAt);\n this._selected = this.fieldNameControl.value;\n }\n /**调整表格位置 */\n drop(event: any) {\n moveItemInArray(this.fieldNameControl.controls, event.previousIndex, event.currentIndex);\n this.fieldNameControl.updateValueAndValidity();\n }\n}\n","<form [formGroup]=\"_entity\">\n <div formGroupName=\"extraProperties\" >\n <div class=\"mb-3 table-control\">\n <label class=\"form-label\" *ngIf=\"_fields.displayName\">{{ _fields.displayName }}</label>\n <div class=\"table-responsive table-fixed-header\">\n <table class=\"table overflow-nowrap mb-0\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <thead>\n <tr>\n <th ></th>\n <ng-container *ngFor=\"let item of formConfiguration.TableColumns\">\n <th [attr.field-type]=\"item.formControlName\" >{{ item.displayName }}</th>\n </ng-container>\n <th class=\"sticky-right-card-bg\" >\n <div class=\"flex-end\">\n <button class=\"btn btn-light btn-sm\" (click.stop)=\"addTableControlItem()\">\n <i class=\"fas fa-plus-circle\"></i>\n </button>\n </div>\n \n </th>\n </tr>\n </thead>\n <tbody [formArrayName]=\"_fields.field.name\">\n <ng-container *ngFor=\"let item of fieldNameControl.controls; let i = index\">\n <tr cdkDrag cdkDragLockAxis=\"y\" [cdkDragData]=\"item\">\n <td>\n <div class=\"drag-handle\" cdkDragHandle>\n <span class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n <ng-container *ngFor=\"let el of formConfiguration.TableColumns\">\n <td>\n <ng-container *ngIf=\"item&&el\">\n <df-dynamic-control [fields]=\"{ field: el }\"\n [selected]=\"_selected?_selected[i]?.extraProperties[''+el.name+'']:''\"\n [parentFiledName]=\"'extraProperties'\" [culture]=\"_culture\"\n [entity]=\"item\"></df-dynamic-control>\n </ng-container>\n </td>\n </ng-container>\n <td scope=\"row\" class=\"sticky-right-card-bg\">\n <div class=\"flex-end mb-3\">\n <button class=\"btn btn-light btn-sm ms-1\"\n (click.stop)=\"minusTableControlItem(i)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n <!-- <button class=\"btn btn-light btn-sm ms-1\"\n (click.stop)=\"TableArrowUpOrDown('up',i)\" *ngIf=\"i!==0\">\n <i class=\"fas fa-arrow-up\"></i>\n </button>\n <button class=\"btn btn-light btn-sm ms-1\"\n (click.stop)=\"TableArrowUpOrDown('down',i)\"\n *ngIf=\"i!==fieldNameControl.controls.length-1\">\n <i class=\"fas fa-arrow-down\"></i>\n </button> -->\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n @if(fieldNameControl?.errors?.required && fieldNameControl.touched){\n <span class=\"form-text invalid-feedback d-block\">{{\"AbpValidation::ThisFieldIsRequired.\"|abpLocalization}}</span>\n }\n <small class=\"form-text text-muted d-block\"\n *ngIf=\"_fields.field.description\">{{_fields.field.description}}</small>\n </div>\n </div>\n <button type=\"submit\" style=\"display: none\" #submitclick></button>\n</form>","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cms-table-view',\r\n templateUrl: './table-view.component.html',\r\n styleUrl: './table-view.component.scss',\r\n})\r\nexport class TableViewComponent implements AfterContentInit {\r\n /**展示则内容 */\r\n showValue: any = '';\r\n\r\n /**是否显示再列表 */\r\n @Input() showInList = false;\r\n /**表单字段数据 */\r\n @Input() fields: any;\r\n\r\n /**表单控件类型 */\r\n @Input() type: any;\r\n\r\n /**表单控件Value */\r\n _value: any = '';\r\n @Input()\r\n public set value(v: any) {\r\n this._value = v;\r\n }\r\n\r\n async ngAfterContentInit(): Promise<void> {\r\n //Called after ngOnInit when the component's or directive's content has been initialized.\r\n //Add 'implements AfterContentInit' to the class.\r\n const valueOptions = this._value;\r\n if (this.type && valueOptions) {\r\n this.showValue = valueOptions;\r\n }\r\n }\r\n}\r\n","@if(showInList){\r\n{{'Cms::NotShowInList'|abpLocalization}}\r\n} @else{\r\n<div class=\"mb-3\">\r\n <label class=\"form-label\" *ngIf=\"fields.displayName\">{{ fields.displayName }}</label>\r\n</div>\r\n}","import { EntryConfigComponent, EntryControlComponent } from \"./entry\";\r\nimport { EntrySearchComponent } from \"./entry/entry-search.component\";\r\nimport { EntryViewComponent } from \"./entry/entry-view.component\";\r\nimport { MatrixConfigComponent } from \"./matrix/matrix-config.component\";\r\nimport { MatrixControlComponent } from \"./matrix/matrix-control.component\";\r\nimport { MatrixViewComponent } from \"./matrix/matrix-view.component\";\r\nimport { TableConfigComponent, TableControlComponent } from \"./table\";\r\nimport { TableViewComponent } from \"./table/table-view.component\";\r\n/**\r\n * 表单控件分组-包含配置,控件,显示的数组\r\n */\r\nexport const cmsFieldControlGroup: any[] = [\r\n {\r\n displayName: '表格',\r\n name: 'Table',\r\n fieldConfigComponent: TableConfigComponent,\r\n fieldComponent: TableControlComponent,\r\n fieldViewComponent: TableViewComponent,\r\n },\r\n {\r\n displayName: '矩阵',\r\n name: 'Matrix',\r\n fieldConfigComponent: MatrixConfigComponent,\r\n fieldComponent: MatrixControlComponent,\r\n fieldViewComponent: MatrixViewComponent,\r\n },\r\n {\r\n displayName: '条目',\r\n name: 'Entry',\r\n fieldConfigComponent: EntryConfigComponent,\r\n fieldComponent: EntryControlComponent,\r\n fieldViewComponent: EntryViewComponent,\r\n fieldSearchComponent: EntrySearchComponent,\r\n },\r\n];\r\n","import { ToolbarAction } from '@abp/ng.components/extensible';\r\nimport {\r\n SectionsComponent,\r\n CreateOrEditComponent,\r\n FieldsComponent,\r\n CreateFieldComponent,\r\n EditFieldComponent,\r\n EntriesComponent,\r\n CreateComponent,\r\n EditComponent,\r\n} from '../components';\r\n\r\n\r\n/**\r\n * 字段列表-新建\r\n * [ECmsComponent.Fields]:Fields_Defaults_Toolbar_Action\r\n */\r\nexport const Fields_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'Cms::New',\r\n action: data => {\r\n const component = data.getInjected(FieldsComponent);\r\n component.toFieldsCreateBtn();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n\r\n/**字段创建页-保存 */\r\nexport const Fields_Create_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'AbpUi::Save',\r\n action: data => {\r\n const component = data.getInjected(CreateFieldComponent);\r\n // component.submitclickBtn();\r\n component.submitclick?.nativeElement?.click();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fas fa-save',\r\n },\r\n]);\r\n/**字段创建页-保存 */\r\nexport const Fields_Edit_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'AbpUi::Save',\r\n action: data => {\r\n const component = data.getInjected(EditFieldComponent);\r\n // component.submitclickBtn();\r\n component.submitclick?.nativeElement?.click();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fas fa-save',\r\n },\r\n]);\r\n\r\n/**版块 */\r\nexport const Sections_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'Cms::New',\r\n action: data => {\r\n const component = data.getInjected(SectionsComponent);\r\n component.createBtn();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n/**版块-创建-编辑 */\r\nexport const Sections_Create_Or_Edit_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'AbpUi::Save',\r\n action: data => {\r\n const component = data.getInjected(CreateOrEditComponent);\r\n component.submitclickBtn();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fas fa-save',\r\n },\r\n]);\r\n/**站点 */\r\n// export const Sites_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n// {\r\n// text: 'Cms::New',\r\n// action: data => {\r\n// const component = data.getInjected(SitesComponent);\r\n// // component.createSitesBtn();\r\n// },\r\n// btnClass: '',\r\n// permission: 'CmsAdmin.Entry.Create',\r\n// icon: 'fa fa-plus',\r\n// },\r\n// ]);\r\n\r\n\r\n/**条目 */\r\nexport const Entries_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'Cms::New',\r\n action: data => {\r\n const component = data.getInjected(EntriesComponent);\r\n component.createEntriesBtn();\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n/**条目-创建 */\r\nexport const Entries_Create_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'AbpUi::Cancel',\r\n action: data => {\r\n const component = data.getInjected(CreateComponent);\r\n component.backTo();\r\n },\r\n btnClass: 'btn btn-light btn-sm',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: '',\r\n },\r\n {\r\n text: 'Cms::SaveDraft',\r\n action: data => {\r\n const component = data.getInjected(CreateComponent);\r\n component.clickSubmit(true);\r\n },\r\n btnClass: 'btn btn-info btn-sm',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fas fa-save',\r\n },\r\n {\r\n text: 'Cms::Publish',\r\n action: data => {\r\n const component = data.getInjected(CreateComponent);\r\n component.clickSubmit(false);\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fa fa-paper-plane',\r\n },\r\n]);\r\n/**条目编辑 */\r\nexport const Entries_Edit_Defaults_Toolbar_Action = ToolbarAction.createMany<any[]>([\r\n {\r\n text: 'AbpUi::Cancel',\r\n action: data => {\r\n const component = data.getInjected(EditComponent);\r\n component.backTo();\r\n },\r\n btnClass: 'btn btn-light btn-sm',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: '',\r\n },\r\n {\r\n text: 'Cms::SaveDraft',\r\n action: data => {\r\n const component = data.getInjected(EditComponent);\r\n component.clickSubmit(true);\r\n },\r\n btnClass: 'btn btn-info btn-sm',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fas fa-save',\r\n },\r\n {\r\n text: 'Cms::Publish',\r\n action: data => {\r\n const component = data.getInjected(EditComponent);\r\n component.clickSubmit(false);\r\n },\r\n btnClass: '',\r\n permission: 'CmsAdmin.Entry.Create',\r\n icon: 'fa fa-paper-plane',\r\n },\r\n]);\r\n","import { EntityProp, ePropType } from '@abp/ng.components/extensible';\r\nimport { of } from 'rxjs';\r\nimport { FieldsDataService } from '../services/fields-data.service';\r\nimport { auto } from '@popperjs/core';\r\n\r\n/**\r\n [ECmsComponent.Fields]: Fields_Entity_Props,\r\n*/\r\nexport const Fields_Entity_Props = EntityProp.createMany<any>([\r\n {\r\n type: ePropType.String,\r\n name: 'displayName',\r\n displayName: 'Cms::DisplayName',\r\n sortable: true,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'Cms::Name',\r\n sortable: true,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'formControlName',\r\n displayName: 'Cms::FormControlName',\r\n sortable: false,\r\n valueResolver: (data: any) => {\r\n const _FieldsDataService = data.getInjected(FieldsDataService);\r\n const fromControlList = _FieldsDataService.fieldControlsTypesList;\r\n const formControlDisplayName=fromControlList.find(el=>el.name==data.record.formControlName)?.displayName\r\n return of(formControlDisplayName||data.record.formControlName);\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'groupName',\r\n displayName: 'Cms::Group',\r\n sortable: false,\r\n valueResolver: (data: any) => {\r\n return of(data.record.groupName||'--');\r\n },\r\n },\r\n {\r\n type: ePropType.DateTime,\r\n name: 'creationTime',\r\n displayName: 'Cms::CreationTime',\r\n sortable: true,\r\n },\r\n ]);\r\n \r\n\r\n// PageName.Guides\r\n// export const Guides_Entity_Props = EntityProp.createMany<any>([\r\n// {\r\n// type: ePropType.String,\r\n// name: 'fullName',\r\n// displayName: 'AbpTenantManagement::全称',\r\n// sortable: true,\r\n// // valueResolver: (data: any) => {\r\n// // let sss = `<a href=\"/guides/${data.record.id}\" class=\"underline-animate\" title=\"${data.record.fullName}\">${data.record.fullName}</a>`\r\n// // return of(sss);\r\n// // },\r\n// action: data => {\r\n// //EntriesComponent对应的工具栏页面\r\n\r\n// },\r\n// },\r\n\r\n// ]);\r\n","import { EntityAction } from \"@abp/ng.components/extensible\";\r\nimport { FieldsComponent } from \"../components\";\r\nimport { Router } from \"@angular/router\";\r\n// import { AbpTableComponent } from \"../view/table/abp-table.component\";\r\n\r\n// [PageName.Area]:Area_Entity_Action,\r\n/**\r\n [ECmsComponent.Fields]: Fields_Entity_Action,\r\n */\r\nexport const Fields_Entity_Action = EntityAction.createMany<any>([\r\n {\r\n text: 'AbpUi::Edit',\r\n action: data => {\r\n const router = data.getInjected(Router);\r\n router.navigate([`/cms/admin/fields/${data.record.id}/edit`])\r\n },\r\n permission: 'CmsAdmin.Field.Update',\r\n },\r\n {\r\n text: 'AbpUi::Delete',\r\n action: data => {\r\n const component = data.getInjected(FieldsComponent);\r\n // component.clickbtn({ data, type: 'delete' })\r\n component.deletefield(data.record)\r\n },\r\n permission: 'CmsAdmin.Field.Delete',\r\n },\r\n]);\r\n\r\n","import { ExtensionsService, getObjectExtensionEntitiesFromStore, mapEntitiesToContributors, mergeWithDefaultActions, mergeWithDefaultProps } from \"@abp/ng.components/extensible\";\r\nimport { inject, InjectionToken, Injector } from \"@angular/core\";\r\nimport { ResolveFn } from \"@angular/router\";\r\nimport { map, tap } from \"rxjs\";\r\nimport { ECmsComponent } from \"../enums\";\r\nimport { Entries_Create_Defaults_Toolbar_Action, Entries_Defaults_Toolbar_Action, Entries_Edit_Defaults_Toolbar_Action, Fields_Create_Defaults_Toolbar_Action, Fields_Defaults_Toolbar_Action, Fields_Edit_Defaults_Toolbar_Action, Sections_Create_Or_Edit_Defaults_Toolbar_Action, Sections_Defaults_Toolbar_Action } from \"./page-default-toolbar-actions\";\r\nimport { Fields_Entity_Props } from \"./table-default-entity-props\";\r\nimport { Fields_Entity_Action } from \"./table-default-entity-actions\";\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**默认-实体-操作 */\r\nexport const Default_Entity_Actions = {\r\n // [ModuleComponent.AbpTable]: Abp_Table_Entity_Action,\r\n [ECmsComponent.Fields]: Fields_Entity_Action,\r\n};\r\n\r\n/**默认实体属性-表格列名 */\r\nexport const Default_Entity_Props = {\r\n // [PageName.Guides]: Guides_Entity_Props,\r\n [ECmsComponent.Fields]: Fields_Entity_Props,\r\n};\r\n\r\n/**默认-工具栏-操作 */\r\nexport const Default_Toolbar_Actions = {\r\n // [ModuleComponent.Page]: Page_Toolbar_Action,\r\n // [eCmsKitPageName.FaqQuestion]:FaqQuestion_Toolbar_Action\r\n [ECmsComponent.Entries]: Entries_Defaults_Toolbar_Action,\r\n [ECmsComponent.Entries_Create]: Entries_Create_Defaults_Toolbar_Action,\r\n [ECmsComponent.Entries_Edit]: Entries_Edit_Defaults_Toolbar_Action,\r\n [ECmsComponent.Fields]: Fields_Defaults_Toolbar_Action,\r\n [ECmsComponent.FieldsCreate]: Fields_Create_Defaults_Toolbar_Action,\r\n [ECmsComponent.FieldsEdit]: Fields_Edit_Defaults_Toolbar_Action,\r\n [ECmsComponent.Sections]: Sections_Defaults_Toolbar_Action,\r\n [ECmsComponent.SectionsCreateOrEdit]: Sections_Create_Or_Edit_Defaults_Toolbar_Action,\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param 在Extensions_Props_Action_Token_Resolver方法中使用\r\n * @param 在.module.ts中使用,\r\n export class CmsModule {\r\n static forChild(options: any = {}): ModuleWithProviders<CmsModule> {\r\n return {\r\n ngModule: CmsModule,\r\n providers: [\r\n {\r\n provide: Toolbar_Action_Contributors,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: Entity_Action_Contributors,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: Entity_Props_Contributors,\r\n useValue: options.entityPropContributors,\r\n },\r\n ]\r\n };\r\n }\r\n static forLazy(options: any = {}): NgModuleFactory<CmsModule> {\r\n return new LazyModuleFactory(CmsModule.forChild(options));\r\n }\r\n }\r\n * \r\n * \r\n */\r\n/**实体-操作-贡献者 */\r\nexport const Entity_Action_Contributors =\r\n new InjectionToken<any>('Entity_Action_Contributors');\r\n\r\n/**实体-属性-贡献者 */\r\nexport const Entity_Props_Contributors =\r\n new InjectionToken<any>('Entity_Props_Contributors');\r\n\r\nexport const Toolbar_Action_Contributors = new InjectionToken<any>(\r\n 'Toolbar_Action_Contributors'\r\n);\r\n\r\n/**\r\n * 属性-操作-贡献者-解析器\r\n * \r\n * 用于放在-routing.module.ts路由守卫中\r\n * \r\n *\r\n const routes: Routes = [\r\n {\r\n path: 'demo',\r\n canActivate: [AuthGuard, PermissionGuard],\r\n resolve: [Extensions_Props_Action_Token_Resolver],\r\n children: []\r\n },\r\n ]\r\n * \r\n * \r\n */\r\n\r\nexport const Extensions_Props_Action_Token_Resolver: ResolveFn<any> = () => {\r\n const extensions = inject(ExtensionsService);\r\n\r\n const config = { optional: true };\r\n\r\n const actionContributors = inject(Entity_Action_Contributors, config) || {};\r\n const propContributors = inject(Entity_Props_Contributors, config) || {};\r\n const toolbarContributors = inject(Toolbar_Action_Contributors, config) || {};\r\n\r\n const injector = inject(Injector);\r\n return getObjectExtensionEntitiesFromStore(injector, 'TenantManagement').pipe(\r\n map(entities => ({\r\n // [ModuleComponent.AbpTable]: entities.Tenant,\r\n })),\r\n mapEntitiesToContributors(injector, 'TenantManagement'),\r\n tap(objectExtensionContributors => {\r\n //actions\r\n mergeWithDefaultActions(\r\n extensions.entityActions,\r\n Default_Entity_Actions,\r\n actionContributors,\r\n );\r\n //props\r\n mergeWithDefaultProps(\r\n extensions.entityProps,\r\n Default_Entity_Props,\r\n objectExtensionContributors.prop,\r\n propContributors,\r\n );\r\n //Toolbar\r\n mergeWithDefaultActions(\r\n extensions.toolbarActions,\r\n Default_Toolbar_Actions,\r\n toolbarContributors\r\n );\r\n\r\n }),\r\n );\r\n};\r\n\r\n\r\n// /**\r\n// * @deprecated Use `tenantManagementExtensions_Props_Action_Token_Resolver` *function* instead.\r\n// */\r\n// @Injectable()\r\n// export class TenantManagementExtensionsGuard implements IAbpGuard {\r\n// protected readonly configState = inject(ConfigStateService);\r\n// protected readonly extensions = inject(ExtensionsService);\r\n\r\n// canActivate(): Observable<boolean> {\r\n// const config = { optional: true };\r\n\r\n// const actionContributors = inject(TENANT_MANAGEMENT_Entity_Action_Contributors, config) || {};\r\n// const propContributors = inject(TENANT_MANAGEMENT_Entity_Props_Contributors, config) || {};\r\n\r\n// return getObjectExtensionEntitiesFromStore(this.configState, 'TenantManagement').pipe(\r\n// map(entities => ({\r\n// // [eTenantManagementComponents.Tenants]: entities.Tenant,\r\n// })),\r\n// mapEntitiesToContributors(this.configState, 'TenantManagement'),\r\n// tap(objectExtensionContributors => {\r\n// mergeWithDefaultActions(\r\n// this.extensions.entityActions,\r\n// DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS,\r\n// actionContributors,\r\n// );\r\n// mergeWithDefaultProps(\r\n// this.extensions.entityProps,\r\n// DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS,\r\n// objectExtensionContributors.prop,\r\n// propContributors,\r\n// );\r\n// }),\r\n// map(() => true),\r\n// );\r\n// }\r\n// }\r\n\r\n","import { NgModule} from '@angular/core';\r\nimport { Routes, RouterModule} from '@angular/router';\r\nimport {\r\n CreateComponent,\r\n CreateFieldComponent,\r\n CreateOrEditComponent,\r\n EditComponent,\r\n EditFieldComponent,\r\n EntriesComponent,\r\n FieldsComponent,\r\n SectionsComponent,\r\n} from './components';\r\nimport {\r\n AuthGuard,\r\n PermissionGuard,\r\n} from '@abp/ng.core';\r\n// import { appentStyle } from './services/appent-content';\r\nimport { Extensions_Props_Action_Token_Resolver } from './resolvers/extensions-props-action-token.resolver';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'admin',\r\n canActivate: [AuthGuard, PermissionGuard],\r\n resolve: [Extensions_Props_Action_Token_Resolver],\r\n children: [\r\n { \r\n path: 'entries',\r\n children: [\r\n {\r\n path: '',\r\n component: EntriesComponent,\r\n data: { keep: true }\r\n },\r\n {\r\n path: 'create',\r\n component: CreateComponent,\r\n },\r\n {\r\n path: ':entrieId/edit',\r\n component: EditComponent,\r\n },\r\n ],\r\n },\r\n {\r\n path: '',\r\n children: [\r\n {\r\n path: 'fields',\r\n children: [\r\n {\r\n path: '',\r\n component: FieldsComponent,\r\n data: { keep: true }\r\n },\r\n {\r\n path: 'create',\r\n component: CreateFieldComponent,\r\n },\r\n {\r\n path: ':id/edit',\r\n component: EditFieldComponent,\r\n },\r\n ],\r\n },\r\n {\r\n path: 'sections',\r\n children: [\r\n {\r\n path: '',\r\n data: { keep: true },\r\n component: SectionsComponent,\r\n },\r\n {\r\n path: ':sectionsId/entry-types',\r\n children: [\r\n {\r\n path: 'create',\r\n component: CreateOrEditComponent,\r\n },\r\n {\r\n path: ':entryTypesId/edit',\r\n component: CreateOrEditComponent,\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n \r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class CmsRoutingModule {\r\n}\r\n","import { NgModule, NgModuleFactory, ModuleWithProviders } from '@angular/core';\r\nimport { CoreModule, LazyModuleFactory } from '@abp/ng.core';\r\nimport { HTTP_ERROR_HANDLER, ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { CmsRoutingModule } from './cms-routing.module';\r\nimport {\r\n CreateComponent,\r\n CreateFieldComponent,\r\n CreateOrEditComponent,\r\n CreateOrEditEntriesComponent,\r\n CreateOrEditFieldComponent,\r\n EditComponent,\r\n EditFieldComponent,\r\n EntriesComponent,\r\n FieldsGroupComponent,\r\n FieldsComponent,\r\n SectionsComponent,\r\n MatrixConfigComponent,\r\n MatrixControlComponent,\r\n TableConfigComponent,\r\n TableControlComponent,\r\n EntryConfigComponent,\r\n EntryControlComponent,\r\n} from './components';\r\nimport {\r\n NgbDropdownModule,\r\n NgbNavModule,\r\n NgbAccordionModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { NzSelectModule } from 'ng-zorro-antd/select';\r\nimport { DynamicFormModule } from '@dignite-ng/expand.dynamic-form';\r\nimport { Toolbar_Action_Contributors, Entity_Action_Contributors, Entity_Props_Contributors } from './resolvers/extensions-props-action-token.resolver';\r\nimport { ExtensibleModule } from '@abp/ng.components/extensible';\r\nimport { CreateOrEditSectionsModalComponent } from './components/admin/sections/create-or-edit-sections-modal.component';\r\nimport {DragDropModule} from '@angular/cdk/drag-drop';\r\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\r\nimport { EntryViewComponent } from './components/dynamic-form/entry/entry-view.component';\r\nimport { MatrixViewComponent } from './components/dynamic-form/matrix/matrix-view.component';\r\nimport { TableViewComponent } from './components/dynamic-form/table/table-view.component';\r\nimport { EntrySearchComponent } from './components/dynamic-form/entry/entry-search.component';\r\nimport { CKEditorModule } from '@ckeditor/ckeditor5-angular';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { GetLocalizedEntriesBySlugPipe } from './pipes/get-localized-entries-by-slug.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n EntriesComponent,\r\n FieldsComponent,\r\n SectionsComponent,\r\n FieldsGroupComponent,\r\n CreateFieldComponent,\r\n EditFieldComponent,\r\n CreateOrEditFieldComponent,\r\n CreateOrEditComponent,\r\n CreateComponent,\r\n EditComponent,\r\n CreateOrEditEntriesComponent,\r\n TableConfigComponent,\r\n TableControlComponent,\r\n MatrixConfigComponent,\r\n MatrixControlComponent,\r\n EntryConfigComponent,\r\n EntryControlComponent,\r\n EntryViewComponent,\r\n CreateOrEditSectionsModalComponent,\r\n MatrixViewComponent,\r\n TableViewComponent,\r\n EntrySearchComponent,\r\n \r\n ],\r\n imports: [\r\n CoreModule,\r\n ThemeSharedModule,\r\n CmsRoutingModule,\r\n NgbNavModule,\r\n NgbAccordionModule,\r\n NgbDropdownModule,\r\n PageModule,\r\n NzSelectModule,\r\n DynamicFormModule,\r\n ExtensibleModule,\r\n DragDropModule,\r\n NgxDatatableModule,\r\n CKEditorModule,\r\n FormsModule,\r\n // CommercialUiModule,\r\n GetLocalizedEntriesBySlugPipe,\r\n ],\r\n exports: [\r\n TableConfigComponent,\r\n TableControlComponent,\r\n MatrixConfigComponent,\r\n MatrixControlComponent,\r\n EntryConfigComponent,\r\n EntryControlComponent,\r\n EntryViewComponent,\r\n MatrixViewComponent,\r\n TableViewComponent,\r\n EntrySearchComponent,\r\n ],\r\n providers: [\r\n \r\n ],\r\n\r\n})\r\nexport class CmsModule {\r\n\r\n static forChild(options: any = {}): ModuleWithProviders<CmsModule> {\r\n return {\r\n ngModule: CmsModule,\r\n providers: [\r\n {\r\n provide: Toolbar_Action_Contributors,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: Entity_Action_Contributors,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: Entity_Props_Contributors,\r\n useValue: options.entityPropContributors,\r\n },\r\n \r\n ],\r\n };\r\n }\r\n static forLazy(options: any = {}): NgModuleFactory<CmsModule> {\r\n return new LazyModuleFactory(CmsModule.forChild(options));\r\n }\r\n}\r\n","/*\r\n * Public API Surface of cms\r\n */\r\n\r\nexport * from './lib/cms.module';\r\nexport * from './lib/components/dynamic-form/form-control-group';\r\nexport * from './lib/components/dynamic-form';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FieldGroupAdminService","i2.FormAdminService","i1.FieldAdminService","i1.FormAdminService","i2.FieldsDataService","i1.EntryAdminService","i2.SectionAdminService","i4","i5","i6.FormAdminService","i7.FieldAdminService","i8.FormControlsService","i9","i10","i12","i13","i15","i16","i17.GetLocalizedEntriesBySlugPipe","i1","i3","i6","i7","i8","i2","i5.CreateOrEditEntriesComponent","i9.FieldsGroupComponent","i9.CreateOrEditFieldComponent","i2.EntryTypeAdminService","i10.CreateOrEditSectionsModalComponent","i4.FieldGroupAdminService","i4.FieldAdminService","i5.EntryTypeAdminService","i7.FormControlsService","i11","i2.KeysConvertToLowercaseService","i1.KeysConvertToLowercaseService"],"mappings":"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"}