verben-workflow-ui 0.5.44 → 0.5.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/lib/components/form-response/form-response.component.mjs +52 -47
- package/esm2022/src/lib/components/form-response/form-response.service.mjs +2 -2
- package/esm2022/src/lib/components/forms/forms.component.mjs +3 -3
- package/fesm2022/verben-workflow-ui-src-lib-components-form-response.mjs +52 -47
- package/fesm2022/verben-workflow-ui-src-lib-components-form-response.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-forms.mjs +2 -2
- package/fesm2022/verben-workflow-ui-src-lib-components-forms.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/components/form-response/form-response.component.d.ts +25 -24
- package/src/lib/components/form-response/form-response.service.d.ts +1 -1
- package/styles/styles.css +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verben-workflow-ui-src-lib-components-forms.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/forms/base-table-style.ts","../../../projects/verben-workflow-ui/src/lib/components/forms/forms.service.ts","../../../projects/verben-workflow-ui/src/lib/components/forms/forms.component.ts","../../../projects/verben-workflow-ui/src/lib/components/forms/forms.component.html","../../../projects/verben-workflow-ui/src/lib/components/forms/forms.module.ts","../../../projects/verben-workflow-ui/src/lib/components/forms/verben-workflow-ui-src-lib-components-forms.ts"],"sourcesContent":["export const baseStyle: any = {\n width: '100%',\n fontFamily: '\"Fraunces\", serif',\n fontSize: '125%',\n whiteSpace: 'nowrap',\n margin: '0',\n border: '1px solid #D4A007',\n borderRadius: '16px',\n borderCollapse: 'separate',\n borderSpacing: '0',\n // tableLayout: 'fixed',\n overflow: 'hidden',\n rows: {\n even: {\n backgroundColor: '#FDFDFD',\n },\n odd: {\n backgroundColor: '#F1F4FB',\n },\n height: '68px',\n },\n cells: {\n padding: '0.5rem 1rem',\n },\n header: {\n // stickyTop: true,\n // zIndex: 2,\n backgroundColor: '#EFF2FB',\n fontWeight: 'bold',\n textAlign: 'left',\n padding: '12px 16px',\n height: '30px',\n },\n footer: {\n // stickyBottom: true,\n // zIndex: 2,\n padding: '3px',\n },\n // body: {\n // background: '#fff',\n // padding: '4px 5px',\n // textAlign: 'center',\n // },\n // firstColumn: {\n // stickyLeft: true,\n // zIndex: 1,\n // },\n lastColumn: {\n // stickyRight: true,\n // zIndex: 1,\n },\n};\n","import { Injectable } from '@angular/core';\nimport { ColumnDefinition } from 'verben-ng-ui';\nimport { Form } from 'verben-workflow-ui/src/lib/models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormsService {\n constructor() {}\n\n get formColumns(): ColumnDefinition<Form>[] {\n return [\n {\n id: 'select',\n header: '',\n canExport: false,\n },\n {\n id: 'createdAt',\n header: 'DATE',\n accessorKey: 'CreatedAt',\n },\n {\n id: 'name',\n header: 'NAME',\n accessorFn: (row: Form) => {\n return row;\n },\n importKey: 'Name',\n },\n {\n id: 'groups',\n header: 'FORM GROUPS',\n accessorFn: (row: Form) => {\n return row;\n },\n canExport: false,\n },\n {\n id: 'expiry',\n header: 'EXPIRY DATE',\n accessorFn: (row: Form) => {\n return row;\n },\n importKey: 'ExpiryDate',\n },\n {\n id: 'anonymous',\n header: 'ANONYMOUS',\n accessorFn: (row: Form) => {\n return row;\n },\n importKey: 'AllowAnonymous',\n },\n {\n id: 'actions',\n header: 'ACTIONS',\n accessorFn: (row: Form) => {\n return row;\n },\n canExport: false,\n },\n ];\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport {\n CardData,\n CardDataViewComponent,\n ColumnDefinition,\n DataFilterType,\n DataTableComponent,\n DataViewComponent,\n DropdownChangeEvent,\n DropdownLoadEvent,\n IDataFilter,\n VerbenPopUpComponent,\n} from 'verben-ng-ui';\nimport { FormsService } from './forms.service';\nimport { baseStyle } from './base-table-style';\nimport { UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { HttpWebRequestService } from 'verben-workflow-ui/src/lib/services';\nimport { ErrorResponse } from 'verben-workflow-ui/src/lib/models';\nimport { PagedResult } from 'verben-workflow-ui/src/lib/models';\nimport { SearchPropertyValue } from 'verben-workflow-ui/src/lib/models';\nimport { SearchOperator } from 'verben-workflow-ui/src/lib/models';\nimport { SearchPropertySign } from 'verben-workflow-ui/src/lib/models';\nimport { EnvironmentService } from 'verben-workflow-ui/src/lib/services';\nimport { SearchPropertyValueType } from 'verben-workflow-ui/src/lib/models';\nimport { debounceTime, Subject } from 'rxjs';\nimport { Form } from 'verben-workflow-ui/src/lib/models';\nimport { Status } from 'verben-workflow-ui/src/lib/models';\nimport { User } from 'verben-workflow-ui/src/lib/models';\nimport { ObjectState } from 'verben-workflow-ui/src/lib/models';\nimport { SortDirection } from 'verben-workflow-ui/src/lib/models';\nimport { FormEntity } from 'verben-workflow-ui/src/lib/models';\nimport { PermissionConfig } from 'verben-workflow-ui/src/lib/models';\n\nenum FormPropertyName {\n Name = 'Name',\n CreatedAt = 'Created At',\n Anonymous = 'Anonymous',\n ExpiryDate = 'Expiry Date',\n}\n\nenum FormPropertyMap {\n Name = 'Name',\n CreatedAt = 'CreatedAt',\n Anonymous = 'AllowAnonymous',\n ExpiryDate = 'ExpiryDate',\n}\n\nenum FilterTypes {\n Before = SearchPropertySign.LT,\n On = SearchPropertySign.EQ,\n After = SearchPropertySign.GT,\n NEQ = SearchPropertySign.NEQ,\n}\n\n@Component({\n selector: 'lib-forms',\n templateUrl: './forms.component.html',\n styleUrl: './forms.component.css',\n})\nexport class FormsComponent implements OnInit {\n visibleColumnDef: ColumnDefinition<Form>[] = [];\n styles = baseStyle;\n data: Form[] = [];\n cardData: CardData[] = [];\n currentData: CardData | null = null;\n @ViewChild('vdcv') cardDataView!: CardDataViewComponent;\n @ViewChild('vdv') dataView!: DataViewComponent;\n @ViewChild('dt') tableView!: DataTableComponent<Form>;\n @ViewChildren('popup') popUps!: QueryList<VerbenPopUpComponent>;\n @Input() pageSize: number = 10;\n @Input() searchDebounceTime: number = 500;\n @Input() permissionConfig: PermissionConfig | null = null;\n pageState: PagedResult<Form> | null = null;\n isOpen: boolean = false;\n openDropdownId: string | null = null;\n isGroupOpen: boolean = false;\n openGroupDropdownId: string | null = null;\n currentFilters: IDataFilter[] = [];\n currentSorts: IDataFilter[] = [];\n searchTerm$ = new Subject<string>();\n groups: FormEntity[] = [];\n visibleColumns: IDataFilter[] = [];\n\n filterArray: IDataFilter[] = [\n {\n name: FormPropertyName.Name,\n type: DataFilterType.String,\n checked: false,\n },\n {\n name: FormPropertyName.CreatedAt,\n type: DataFilterType.Date,\n checked: false,\n },\n {\n name: FormPropertyName.Anonymous,\n type: DataFilterType.Bool,\n checked: false,\n },\n {\n name: FormPropertyName.ExpiryDate,\n type: DataFilterType.Date,\n checked: false,\n },\n ];\n\n sortOptions: IDataFilter[] = [\n {\n name: FormPropertyName.Name,\n type: DataFilterType.String,\n checked: false,\n },\n {\n name: FormPropertyName.CreatedAt,\n type: DataFilterType.Date,\n checked: false,\n },\n {\n name: FormPropertyName.Anonymous,\n type: DataFilterType.Bool,\n checked: false,\n },\n {\n name: FormPropertyName.ExpiryDate,\n type: DataFilterType.Date,\n checked: false,\n },\n ];\n\n private currentSearchTerm: string = '';\n\n constructor(\n private utilService: UtilService,\n private server: HttpWebRequestService,\n private cdr: ChangeDetectorRef,\n private fb: FormBuilder,\n private envSvc: EnvironmentService,\n private formsSvc: FormsService\n ) {\n this.visibleColumnDef = formsSvc.formColumns;\n this.visibleColumns = formsSvc.formColumns.map((col) => ({\n checked: true,\n name: typeof col.header === 'string' ? col.header : col.id,\n type: DataFilterType.Bool,\n }));\n }\n\n async ngOnInit(): Promise<void> {\n this.getFormEntities().then((res) => {\n if (res) {\n this.groups = res;\n }\n });\n const forms = await this.getAllForms();\n if (forms) {\n this.data = forms.map((x) => {\n return {\n ...x,\n Id: x.Code,\n id: x.Code,\n ExpiryDate: new Date(x.ExpiryDate.toString()),\n Entities: x.Entities.map((y) => {\n return {\n ...y,\n DataState: ObjectState.Unchanged,\n };\n }),\n };\n });\n this.setUpCardData();\n }\n this.searchTerm$\n .pipe(debounceTime(this.searchDebounceTime)) // Adjust debounce time here (in ms)\n .subscribe(async (searchTerm) => {\n this.currentSearchTerm = searchTerm;\n this.updateFiltersAndSorts(true);\n });\n }\n\n async getFormEntities(): Promise<FormEntity[] | undefined> {\n this.utilService.sendBI(true);\n const res = await this.server.get(\n `Form/GetFormEntities/0/${this.pageSize}`\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return undefined;\n } else {\n var result = (res as PagedResult<FormEntity>).Result;\n return result;\n }\n }\n\n async loadMoreFormEntities(event: DropdownLoadEvent): Promise<FormEntity[]> {\n const res = await this.server.get(\n `Form/GetFormEntities/${event.loadTimes * this.pageSize}/${this.pageSize}`\n );\n if (res instanceof ErrorResponse) {\n return [];\n } else {\n var result = (res as PagedResult<FormEntity>).Result;\n return result;\n }\n }\n async searchFormEntities(\n data: string,\n event: DropdownLoadEvent\n ): Promise<FormEntity[]> {\n const res = await this.server.get(\n `Form/GetFormEntitiesWithParam/${data}/${\n event.loadTimes * this.pageSize\n }/${this.pageSize}`\n );\n if (res instanceof ErrorResponse) {\n return [];\n } else {\n var result = (res as PagedResult<FormEntity>).Result;\n return result;\n }\n }\n\n async getAsyncLabel(value: any): Promise<string> {\n return value ? value.Name : '';\n }\n\n async getAllForms(): Promise<Form[] | undefined> {\n this.utilService.sendBI(true);\n const res = await this.server.get(\n `Form/GetForms/0/${this.pageSize}`,\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return undefined;\n } else {\n this.pageState = res as PagedResult<Form>;\n var result = (res as PagedResult<Form>).Result;\n return result;\n }\n }\n\n async loadMore() {\n if (!this.pageState) {\n return;\n }\n this.utilService.sendBI(true);\n const res =\n this.currentFilters.length > 0 ||\n this.currentSorts.length > 0 ||\n this.currentSearchTerm.trim().length > 0\n ? await this.loadMoreFiltersAndSorts()\n : await this.server.get(\n `Form/GetForms/${this.pageState.Skip}/${this.pageSize}`,\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return;\n } else {\n this.pageState = res as PagedResult<Form>;\n var result = (res as PagedResult<Form>).Result;\n this.data = this.data.concat(\n result.map((x) => {\n return {\n ...x,\n id: x.Code,\n Id: x.Code,\n };\n })\n );\n this.setUpCardDataExtra(result);\n }\n }\n\n setUpCardData() {\n const cardData: CardData[] = this.data.map((x) => {\n return {\n selected: false,\n title: x.Name,\n data: x,\n body: [],\n children: [],\n };\n });\n this.cardData = cardData;\n }\n\n setUpCardDataExtra(baseData: Form[]) {\n const cardData: CardData[] = baseData.map((x) => {\n return {\n selected: false,\n title: x.Name,\n data: x,\n body: [],\n children: [],\n };\n });\n this.cardData = this.cardData.concat(cardData);\n }\n\n goToCardView(data: Form) {\n const item = this.cardData.find((x) => x.data == data);\n if (item) {\n this.formCardClicked(item, true);\n }\n }\n\n goToTableView() {\n if (!this.currentData) {\n return;\n }\n this.dataView.toggleView();\n const id = this.currentData.data ? this.currentData.data.Id : '';\n if (id.trim().length > 0 && !this.tableView.isRowEditing(id)) {\n this.tableView.toggleRowEdit(id);\n }\n }\n\n viewResponses(code: string) {\n if (code.trim().length == 0) {\n return;\n }\n // this.onViewProcessClicked.emit(code);\n this.closePopUp();\n }\n\n formCardClicked(item: CardData, toggleView: boolean = false) {\n this.currentData = this.cardDataView.onItemClick(item);\n if (toggleView) {\n this.dataView.toggleView();\n }\n }\n\n async saveForm() {\n if (this.currentData) {\n var form: Form = this.currentData.data as Form;\n\n if (this.currentData.data.Name.trim().length == 0) {\n this.utilService.showInfo('Name cannot be empty');\n return;\n }\n form.DataState =\n form.DataState == ObjectState.New\n ? ObjectState.New\n : ObjectState.Changed;\n form.Id = '';\n this.utilService.sendBI(true);\n const res = await this.server.post(\n `Form/SaveForms`,\n [form],\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n } else {\n this.utilService.showSuccess('Form saved successfully');\n const result = res as Form[];\n if (result.length > 0) {\n var userResult = result[0];\n const itemIndex = this.data.findIndex(\n (x) => x == this.currentData?.data\n );\n if (itemIndex > -1) {\n this.data[itemIndex].Code = userResult.Code;\n this.data[itemIndex].Id = userResult.Code;\n this.data[itemIndex].id = userResult.Code;\n this.data[itemIndex].DataState = userResult.DataState;\n this.data[itemIndex].TenantId = userResult.TenantId;\n this.data[itemIndex].ServiceName = userResult.ServiceName;\n this.data = this.data.map((x) => x);\n this.cacheItem(this.data[itemIndex]);\n }\n }\n }\n }\n }\n async tableSaveForm(form: Form, callBack: () => any) {\n if (form.Name.trim().length == 0) {\n this.utilService.showInfo('Name cannot be empty');\n return;\n }\n form.DataState =\n form.DataState == ObjectState.New ? ObjectState.New : ObjectState.Changed;\n form.Id = '';\n this.utilService.sendBI(true);\n const res = await this.server.post(\n `Form/SaveForms`,\n [form],\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n } else {\n this.utilService.showSuccess('Form saved successfully');\n const result = res as Form[];\n if (result.length > 0) {\n var userResult = result[0];\n const itemIndex = this.data.findIndex((x) => x == form);\n if (itemIndex > -1) {\n this.data[itemIndex].Code = userResult.Code;\n this.data[itemIndex].Id = userResult.Code;\n this.data[itemIndex].id = userResult.Code;\n this.data[itemIndex].DataState = userResult.DataState;\n this.data[itemIndex].TenantId = userResult.TenantId;\n this.data[itemIndex].ServiceName = userResult.ServiceName;\n this.data = this.data.map((x) => x);\n this.cacheItem(this.data[itemIndex]);\n }\n callBack();\n }\n }\n }\n\n updateTable() {\n this.data = this.data.map((x) => x);\n }\n\n updateItem(value: any, key: string): any {\n return {\n [key]: value,\n };\n }\n\n closePopUp() {\n this.openDropdownId = null;\n this.popUps.forEach((popUp) => {\n if (popUp.dropdownOpen) {\n popUp.toggleDropdown();\n }\n });\n }\n closeGroupPopUp() {\n this.openGroupDropdownId = null;\n }\n\n onViewChange(isGridView: boolean): void {}\n\n onStateChange(event: { key: string; value: boolean }): void {\n switch (event.key) {\n case 'create':\n var newForm: Form = {\n Name: '',\n TenantId: '',\n ServiceName: '',\n id: (this.cardData.length + 1).toString(),\n Id: (this.cardData.length + 1).toString(),\n CreatedAt: new Date(),\n UpdatedAt: new Date(),\n DataState: ObjectState.New,\n Code: '',\n Entities: [],\n IsValid: false,\n AllowAnonymous: false,\n Workflow: '',\n URL: '',\n Duration: 0,\n ExpiryDate: new Date(),\n FormValuesModified: false,\n };\n const cardData: CardData = {\n selected: false,\n title: newForm.Name,\n data: newForm,\n body: [],\n children: [],\n };\n this.data = this.data.concat([newForm]);\n this.cardData.push(cardData);\n this.formCardClicked(cardData);\n this.dataView.isTableView = false;\n break;\n default:\n break;\n }\n }\n\n showTableView: boolean = false;\n onSelectionChange(selectedRows: Form[]) {}\n\n onColumnsUpdated(updatedColumns: IDataFilter[]) {\n const updatedColumnDef: ColumnDefinition<Form>[] = [];\n updatedColumns.forEach((col) => {\n const matchingCol = this.formsSvc.formColumns.find(\n (column) => column.header === col.name || column.id === col.name\n );\n if (matchingCol) {\n updatedColumnDef.push(matchingCol);\n }\n });\n\n this.visibleColumnDef = [...updatedColumnDef];\n }\n\n exportFiltersAndSorts = async (pageState: {\n skip: number;\n limit: number;\n }) => {\n var payload: SearchPropertyValue[] = this.currentFilters.map((x) => {\n return {\n PropertyName:\n FormPropertyMap[\n x.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: x.value,\n Operator: SearchOperator.And,\n Sign:\n x.condition && Object.keys(FilterTypes).includes(x.condition)\n ? (FilterTypes[\n x.condition as keyof typeof FilterTypes\n ] as unknown as SearchPropertySign)\n : SearchPropertySign.EQ,\n Type:\n x.name == FormPropertyName.CreatedAt ||\n x.name == FormPropertyName.ExpiryDate\n ? SearchPropertyValueType.Date\n : x.name == FormPropertyName.Anonymous\n ? SearchPropertyValueType.Bool\n : SearchPropertyValueType.String,\n };\n });\n // payload.push({\n // PropertyName: 'APIKey',\n // EntityValue: this.envSvc.environment.APIKey,\n // Operator: SearchOperator.And,\n // Sign: SearchPropertySign.EQ,\n // });\n for (let sort of this.currentSorts) {\n payload.push({\n PropertyName:\n FormPropertyMap[\n sort.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: '',\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n Sort:\n sort.value.toLowerCase() == SortDirection.Asc.toLowerCase()\n ? SortDirection.Asc\n : sort.value.toLowerCase() == SortDirection.Desc.toLowerCase()\n ? SortDirection.Desc\n : SortDirection.None,\n });\n }\n const searchTermExists = this.currentSearchTerm.trim().length > 0;\n this.utilService.sendBI(true);\n const res = searchTermExists\n ? await this.server.get(\n `Form/GetFormWithParam/${this.currentSearchTerm.trim()}/${\n pageState.skip\n }/${pageState.limit}`,\n this.envSvc.environment.WorkFlowAPI\n )\n : payload.length == 0\n ? await this.server.get(\n `Form/GetForms/${pageState.skip}/${pageState.limit}`,\n this.envSvc.environment.WorkFlowAPI\n )\n : await this.server.post(\n `Form/SearchForms/${pageState.skip}/${pageState.limit}`,\n payload,\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return [];\n } else {\n var result = (res as PagedResult<Form>).Result;\n return result;\n }\n };\n\n async updateFiltersAndSorts(isSearch: boolean = false) {\n if (!isSearch) {\n this.dataView.onClearSearch();\n this.currentSearchTerm = '';\n this.cdr.detectChanges();\n const clickEvent = new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window,\n });\n document.dispatchEvent(clickEvent);\n }\n var payload: SearchPropertyValue[] = this.currentFilters.map((x) => {\n return {\n PropertyName:\n FormPropertyMap[\n x.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: x.value,\n Operator: SearchOperator.And,\n Sign:\n x.condition && Object.keys(FilterTypes).includes(x.condition)\n ? (FilterTypes[\n x.condition as keyof typeof FilterTypes\n ] as unknown as SearchPropertySign)\n : SearchPropertySign.EQ,\n Type:\n x.name == FormPropertyName.CreatedAt ||\n x.name == FormPropertyName.ExpiryDate\n ? SearchPropertyValueType.Date\n : x.name == FormPropertyName.Anonymous\n ? SearchPropertyValueType.Bool\n : SearchPropertyValueType.String,\n };\n });\n // payload.push({\n // PropertyName: 'APIKey',\n // EntityValue: this.envSvc.environment.APIKey,\n // Operator: SearchOperator.And,\n // Sign: SearchPropertySign.EQ,\n // });\n for (let sort of this.currentSorts) {\n payload.push({\n PropertyName:\n FormPropertyMap[\n sort.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: '',\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n Sort:\n sort.value.toLowerCase() == SortDirection.Asc.toLowerCase()\n ? SortDirection.Asc\n : sort.value.toLowerCase() == SortDirection.Desc.toLowerCase()\n ? SortDirection.Desc\n : SortDirection.None,\n });\n }\n const searchTermExists = this.currentSearchTerm.trim().length > 0;\n this.utilService.sendBI(true);\n const res = searchTermExists\n ? await this.server.get(\n `Form/GetFormWithParam/${this.currentSearchTerm.trim()}/0/${\n this.pageSize\n }`,\n this.envSvc.environment.WorkFlowAPI\n )\n : payload.length == 0\n ? await this.server.get(\n `Form/GetForms/0/${this.pageSize}`,\n this.envSvc.environment.WorkFlowAPI\n )\n : await this.server.post(\n `Form/SearchForms/0/${this.pageSize}`,\n payload,\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n this.currentFilters = [];\n this.currentSorts = [];\n return undefined;\n } else {\n this.cardDataView.clearData();\n this.currentData = null;\n this.pageState = res as PagedResult<Form>;\n var result = (res as PagedResult<Form>).Result;\n this.data = result.map((x) => {\n return {\n ...x,\n Id: x.Code,\n id: x.Code,\n };\n });\n this.setUpCardData();\n }\n }\n async loadMoreFiltersAndSorts(): Promise<PagedResult<Form> | undefined> {\n if (!this.pageState) {\n return;\n }\n var payload: SearchPropertyValue[] = this.currentFilters.map((x) => {\n return {\n PropertyName:\n FormPropertyMap[\n x.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: x.value,\n Operator: SearchOperator.And,\n Sign:\n x.condition && Object.keys(FilterTypes).includes(x.condition)\n ? (FilterTypes[\n x.condition as keyof typeof FilterTypes\n ] as unknown as SearchPropertySign)\n : SearchPropertySign.EQ,\n Type:\n x.name == FormPropertyName.CreatedAt ||\n x.name == FormPropertyName.ExpiryDate\n ? SearchPropertyValueType.Date\n : x.name == FormPropertyName.Anonymous\n ? SearchPropertyValueType.Bool\n : SearchPropertyValueType.String,\n };\n });\n for (let sort of this.currentSorts) {\n payload.push({\n PropertyName:\n FormPropertyMap[\n sort.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: '',\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n Sort:\n sort.value.toLowerCase() == SortDirection.Asc.toLowerCase()\n ? SortDirection.Asc\n : sort.value.toLowerCase() == SortDirection.Desc.toLowerCase()\n ? SortDirection.Desc\n : SortDirection.None,\n });\n }\n const searchTermExists = this.currentSearchTerm.trim().length > 0;\n this.utilService.sendBI(true);\n const res = searchTermExists\n ? await this.server.get(\n `Form/GetFormWithParam/${this.currentSearchTerm.trim()}/${\n this.pageState.Skip\n }/${this.pageSize}`,\n this.envSvc.environment.WorkFlowAPI\n )\n : payload.length == 0\n ? await this.server.get(\n `Form/GetForms/${this.pageState.Skip}/${this.pageSize}`,\n this.envSvc.environment.WorkFlowAPI\n )\n : await this.server.post(\n `Form/SearchForms/${this.pageState.Skip}/${this.pageSize}`,\n payload,\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return undefined;\n } else {\n var result = res as PagedResult<Form>;\n return result;\n }\n }\n\n onFilterUpdated(updatedFilters: IDataFilter[] | string) {\n // Ensure updatedFilters is an array\n if (Array.isArray(updatedFilters)) {\n this.currentFilters = updatedFilters;\n this.updateFiltersAndSorts();\n }\n }\n onSortUpdated(updatedSorts: IDataFilter[]) {\n this.currentSorts = updatedSorts;\n this.updateFiltersAndSorts();\n }\n\n handleSearch(event: { key: string; value: string }) {\n this.searchTerm$.next(event.value);\n }\n\n handleExport(exportedData: Partial<any>[]) {\n // console.log('Exported data:', exportedData);\n this.downloadCSV(exportedData);\n }\n\n private downloadCSV(data: Partial<any>[]) {\n const headers = Object.keys(data[0]);\n const csvContent = [\n headers.join(','),\n ...data.map((row) => headers.map((header) => row[header]).join(',')),\n ].join('\\n');\n\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', 'export.csv');\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n tableCache = new Map<string, Form>();\n\n cacheItem(item: Form) {\n const cacheKey = item.Id;\n this.tableCache.set(cacheKey, JSON.parse(JSON.stringify(item)));\n }\n\n restoreCache(item: Form) {\n const cacheKey = item.Id;\n const itemCache = this.tableCache.get(cacheKey);\n if (itemCache) {\n item.Name = itemCache.Name;\n item.Entities = itemCache.Entities;\n item.ExpiryDate = itemCache.ExpiryDate;\n item.AllowAnonymous = itemCache.AllowAnonymous;\n }\n this.tableCache.delete(cacheKey);\n }\n}\n","<div #messageLog class=\"flex flex-col gap-4 message-log-container\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: (!permissionConfig || permissionConfig.Actions['Export']),\n isSelect: true,\n isCreate: (!permissionConfig || permissionConfig.Actions['Create']),\n isToggle:true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"0\"\n [selectedSortCount]=\"0\"\n [selectedFilterTableCount]=\"0\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div class=\"mt-2\" table-content>\n <lib-data-table\n [dataKey]=\"'Id'\"\n class=\"form-table\"\n #dt\n [data]=\"data\"\n [columns]=\"visibleColumnDef\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <ng-container libColumn=\"select\">\n <ng-template\n #cell\n let-isSelected=\"isSelected\"\n let-toggleRowSelection=\"toggleRowSelection\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected\"\n (change)=\"toggleRowSelection()\"\n />\n </ng-template>\n <ng-template\n #header\n let-allRowsSelected=\"allRowsSelected\"\n let-someRowsSelected=\"someRowsSelected\"\n let-toggleAllRows=\"toggleAllRows\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"allRowsSelected()\"\n [indeterminate]=\"someRowsSelected()\"\n (change)=\"toggleAllRows()\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"name\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value.Name }}\n </ng-template>\n <ng-template\n #cellEdit\n let-row=\"row\"\n let-updateData=\"updateData\"\n let-value\n >\n <div class=\"width-max\">\n <verbena-input [(ngModel)]=\"value.Name\"></verbena-input>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"groups\">\n <ng-template #cell let-row=\"row\" let-value>\n <div class=\"flex flex-col gap-1\">\n <div class=\"groups-summary-container gap-2\">\n <div\n *ngFor=\"let group of value.Entities.slice(0, 4)\"\n class=\"group-chip px-2\"\n >\n {{ group.Name }}\n </div>\n </div>\n <verben-pop-Up\n *ngIf=\"value.Entities.length > 3\"\n [customStyles]=\"{ 'z-index': '99' }\"\n [enableMouseLeave]=\"false\"\n >\n <span class=\"see-more-section flex\" dropdown-trigger>\n <div>See more</div>\n <verben-svg\n icon=\"chevron-down\"\n fill=\"#3479E9\"\n [width]=\"10\"\n [height]=\"6\"\n ></verben-svg>\n </span>\n <div\n class=\"groups-summary-container pop-up gap-2 p-2\"\n dropdown-content\n >\n <div\n class=\"group-chip px-2\"\n *ngFor=\"let group of value.Entities\"\n >\n {{ group.Name }}\n </div>\n </div>\n </verben-pop-Up>\n </div>\n </ng-template>\n <ng-template\n #cellEdit\n let-row=\"row\"\n let-updateData=\"updateData\"\n let-value\n >\n <verben-drop-down\n selectKey=\"Code\"\n display=\"chip\"\n width=\"100%\"\n placeholder=\"Select Groups\"\n [showClear]=\"true\"\n [filter]=\"true\"\n [load]=\"this.loadMoreFormEntities.bind(this)\"\n [search]=\"this.searchFormEntities.bind(this)\"\n [(options)]=\"groups\"\n optionLabel=\"Name\"\n [multiselect]=\"true\"\n [(ngModel)]=\"value.Entities\"\n [lazyLoad]=\"true\"\n [asyncLabel]=\"this.getAsyncLabel.bind(this)\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"expiry\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value.ExpiryDate | date }}\n </ng-template>\n <ng-template\n #cellEdit\n let-row=\"row\"\n let-updateData=\"updateData\"\n let-value\n >\n <div class=\"width-max\">\n <input\n class=\"date-picker\"\n type=\"date\"\n [(ngModel)]=\"value.ExpiryDate\"\n />\n <!-- <verbena-input [(ngModel)]=\"value.ExpiryDate\"></verbena-input> -->\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"anonymous\">\n <ng-template #cell let-row=\"row\" let-value>\n <verben-svg\n [width]=\"15\"\n [height]=\"15\"\n [icon]=\"value.IsProtected ? 'on' : 'off'\"\n ></verben-svg>\n </ng-template>\n <ng-template\n #cellEdit\n let-row=\"row\"\n let-updateData=\"updateData\"\n let-value\n >\n <verbena-switch\n onText=\"\"\n offText=\"\"\n [(ngModel)]=\"value.AllowAnonymous\"\n [onColor]=\"'#1A237E'\"\n ></verbena-switch>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-value\n >\n <verben-pop-Up\n #popup\n [customStyles]=\"{ 'z-index': '99' }\"\n [enableMouseLeave]=\"false\"\n >\n <verben-svg\n class=\"cursor-pointer actions-icon\"\n dropdown-trigger\n icon=\"list\"\n ></verben-svg>\n <div class=\"pop-up-content flex flex-col\" dropdown-content>\n <div\n (click)=\"viewResponses(value.Code)\"\n class=\"pop-up-value cursor-pointer\"\n >\n View responses\n </div>\n <div\n *ngIf=\"\n !permissionConfig || permissionConfig.Actions['Create']\n \"\n (click)=\"toggleRowEdit(); cacheItem(value); closePopUp()\"\n class=\"pop-up-value cursor-pointer\"\n >\n Edit\n </div>\n <!-- <div class=\"pop-up-value cursor-pointer\">Delete</div> -->\n </div>\n </verben-pop-Up>\n </ng-template>\n <ng-template\n #cellEdit\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-value\n >\n <div class=\"flex gap-2 items-center\">\n <verben-svg\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"tableSaveForm(value, toggleRowEdit)\"\n ></verben-svg>\n <verben-svg\n (click)=\"restoreCache(value); toggleRowEdit()\"\n icon=\"close-no-circle\"\n [width]=\"15\"\n [height]=\"15\"\n ></verben-svg>\n <!-- <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n ></verben-svg> -->\n <verben-svg\n icon=\"cardViewAlt\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"goToCardView(value)\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n #vdcv\n dataId=\"Id\"\n border=\"5px\"\n [cardDataList]=\"cardData\"\n rbgColor=\"#f5f6f9\"\n mg=\"0px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"MailAddress\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData\"\n >\n <ng-template #card let-item>\n <div\n (click)=\"formCardClicked(item)\"\n class=\"flex cursor-pointer h-[max-content]\"\n >\n <!-- <verben-svg [width]=\"15\" [height]=\"15\" (click)=\"toggleChildren(item); $event.stopPropagation()\"\n [ngClass]=\"item.children && item.children.length?'visible':'invisible'\"\n class=\"items-center flex pr-1 cursor-pointer\" [icon]=\"item.isChildrenExpanded?'minus':'plus'\" /> -->\n <div class=\"flex w-full bg-secondary rounded-xl\">\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"py-3 px-4 flex-1 h-[100%]\">\n <div\n class=\"flex items-start flex-1 gap-1 justify-between h-[100%]\"\n >\n <div\n class=\"flex flex-col flex-1 card-min-height justify-between h-[100%]\"\n >\n <h3\n class=\"my-0 font-bold text-[#404040] leading-[19.5px]\"\n >\n {{ item.data.Name }}\n </h3>\n <span class=\"flex items-center gap-1\">\n <span class=\"!text-[10px] font-light text-[#404040]\"\n >Expiry Date:</span\n >\n <span class=\"!text-[12px]\">{{\n item.data.ExpiryDate | date\n }}</span>\n </span>\n </div>\n\n <div class=\"flex items-end h-[100%]\">\n <!-- <span class=\"enum-val {{item.data.Status}}\">{{item.data.Status}}</span> -->\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n <verben-right-card-data-view>\n <ng-template #parent>\n <div\n *ngIf=\"this.currentData\"\n class=\"flex flex-col rounded-xl h-full w-full justify-between relative space-y-4\"\n >\n <verbena-input\n name=\"Name\"\n label=\"Name\"\n (ngModelChange)=\"updateTable()\"\n [(ngModel)]=\"this.currentData.data.Name\"\n />\n <div class=\"flex flex-col gap-1\">\n <div>Expiry Date</div>\n <input\n class=\"date-picker\"\n type=\"date\"\n [(ngModel)]=\"this.currentData.data.ExpiryDate\"\n />\n </div>\n <!-- <verbena-input name=\"ExpiryDate\" label=\"Expiry Date\" (ngModelChange)=\"updateTable()\"\n [(ngModel)]=\"this.currentData.data.ExpiryDate\" /> -->\n <div class=\"flex flex-col gap-1\">\n <div>Anonymous</div>\n <verbena-switch\n onText=\"\"\n offText=\"\"\n [(ngModel)]=\"this.currentData.data.AllowAnonymous\"\n [onColor]=\"'#1A237E'\"\n ></verbena-switch>\n </div>\n <div class=\"flex flex-col gap-1\">\n <div>Form Groups</div>\n <verben-drop-down\n selectKey=\"Code\"\n display=\"chip\"\n width=\"100%\"\n placeholder=\"Select Groups\"\n [showClear]=\"true\"\n [filter]=\"true\"\n [load]=\"this.loadMoreFormEntities.bind(this)\"\n [search]=\"this.searchFormEntities.bind(this)\"\n [(options)]=\"groups\"\n optionLabel=\"Name\"\n [multiselect]=\"true\"\n [(ngModel)]=\"this.currentData.data.Entities\"\n [lazyLoad]=\"true\"\n [asyncLabel]=\"this.getAsyncLabel.bind(this)\"\n >\n </verben-drop-down>\n </div>\n\n <!-- buttons -->\n <div class=\"flex justify-between bottom-8 left-0 right-0\">\n <!-- <verbena-button\n class=\"verben-delete-button\"\n text=\"Delete\"\n ></verbena-button> -->\n <div></div>\n <div class=\"flex gap-3\">\n <verbena-button\n class=\"verben-switch-button\"\n (click)=\"\n viewResponses(\n this.currentData\n ? this.currentData.data\n ? this.currentData.data.Code\n : ''\n : ''\n )\n \"\n text=\"View Responses\"\n ></verbena-button>\n <verbena-button\n class=\"verben-switch-button\"\n (click)=\"goToTableView()\"\n text=\"Switch To Table\"\n ></verbena-button>\n <verbena-button\n *ngIf=\"\n !permissionConfig || permissionConfig.Actions['Create']\n \"\n class=\"verben-primary-button\"\n (click)=\"this.saveForm()\"\n text=\"Save\"\n ></verbena-button>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-right-card-data-view>\n <!-- <verben-right-card-data-view>\n yeshhhhhh\n </verben-right-card-data-view> -->\n\n <verben-card-data-view-footer>\n <div class=\"flex gap-2 justify-between\">\n <div\n *ngIf=\"!vdcv.hasCurrentItem()\"\n class=\"message-log-button-container flex justify-between\"\n >\n <!-- <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n </div>\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData.length }} records loaded</span\n >\n <button (click)=\"loadMore()\" class=\"load-more view-links\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n (filtersApplied)=\"onFilterUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-xport\n [useImportKey]=\"true\"\n [columns]=\"visibleColumnDef\"\n [data]=\"data\"\n [dataQueryFunction]=\"exportFiltersAndSorts\"\n >\n </lib-data-xport>\n <!-- <lib-data-export [data]=\"data\" (exportDataEvent)=\"handleExport($event)\">\n </lib-data-export> -->\n </div>\n </verben-data-view>\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-between\">\n <div class=\"message-log-button-container flex justify-between\">\n <!-- <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n </div>\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData.length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links\">\n Load more\n </button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsComponent } from './forms.component';\nimport { SharedModule } from 'verben-workflow-ui/src/lib/shared';\n\n@NgModule({\n declarations: [FormsComponent],\n imports: [SharedModule],\n exports: [FormsComponent],\n})\nexport class FormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.FormsService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verben-workflow-ui-src-lib-components-forms.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/forms/base-table-style.ts","../../../projects/verben-workflow-ui/src/lib/components/forms/forms.service.ts","../../../projects/verben-workflow-ui/src/lib/components/forms/forms.component.ts","../../../projects/verben-workflow-ui/src/lib/components/forms/forms.component.html","../../../projects/verben-workflow-ui/src/lib/components/forms/forms.module.ts","../../../projects/verben-workflow-ui/src/lib/components/forms/verben-workflow-ui-src-lib-components-forms.ts"],"sourcesContent":["export const baseStyle: any = {\n width: '100%',\n fontFamily: '\"Fraunces\", serif',\n fontSize: '125%',\n whiteSpace: 'nowrap',\n margin: '0',\n border: '1px solid #D4A007',\n borderRadius: '16px',\n borderCollapse: 'separate',\n borderSpacing: '0',\n // tableLayout: 'fixed',\n overflow: 'hidden',\n rows: {\n even: {\n backgroundColor: '#FDFDFD',\n },\n odd: {\n backgroundColor: '#F1F4FB',\n },\n height: '68px',\n },\n cells: {\n padding: '0.5rem 1rem',\n },\n header: {\n // stickyTop: true,\n // zIndex: 2,\n backgroundColor: '#EFF2FB',\n fontWeight: 'bold',\n textAlign: 'left',\n padding: '12px 16px',\n height: '30px',\n },\n footer: {\n // stickyBottom: true,\n // zIndex: 2,\n padding: '3px',\n },\n // body: {\n // background: '#fff',\n // padding: '4px 5px',\n // textAlign: 'center',\n // },\n // firstColumn: {\n // stickyLeft: true,\n // zIndex: 1,\n // },\n lastColumn: {\n // stickyRight: true,\n // zIndex: 1,\n },\n};\n","import { Injectable } from '@angular/core';\nimport { ColumnDefinition } from 'verben-ng-ui';\nimport { Form } from 'verben-workflow-ui/src/lib/models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormsService {\n constructor() {}\n\n get formColumns(): ColumnDefinition<Form>[] {\n return [\n {\n id: 'select',\n header: '',\n canExport: false,\n },\n {\n id: 'createdAt',\n header: 'DATE',\n accessorKey: 'CreatedAt',\n },\n {\n id: 'name',\n header: 'NAME',\n accessorFn: (row: Form) => {\n return row;\n },\n importKey: 'Name',\n },\n {\n id: 'groups',\n header: 'FORM GROUPS',\n accessorFn: (row: Form) => {\n return row;\n },\n canExport: false,\n },\n {\n id: 'expiry',\n header: 'EXPIRY DATE',\n accessorFn: (row: Form) => {\n return row;\n },\n importKey: 'ExpiryDate',\n },\n {\n id: 'anonymous',\n header: 'ANONYMOUS',\n accessorFn: (row: Form) => {\n return row;\n },\n importKey: 'AllowAnonymous',\n },\n {\n id: 'actions',\n header: 'ACTIONS',\n accessorFn: (row: Form) => {\n return row;\n },\n canExport: false,\n },\n ];\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport {\n CardData,\n CardDataViewComponent,\n ColumnDefinition,\n DataFilterType,\n DataTableComponent,\n DataViewComponent,\n DropdownChangeEvent,\n DropdownLoadEvent,\n IDataFilter,\n VerbenPopUpComponent,\n} from 'verben-ng-ui';\nimport { FormsService } from './forms.service';\nimport { baseStyle } from './base-table-style';\nimport { UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { HttpWebRequestService } from 'verben-workflow-ui/src/lib/services';\nimport { ErrorResponse } from 'verben-workflow-ui/src/lib/models';\nimport { PagedResult } from 'verben-workflow-ui/src/lib/models';\nimport { SearchPropertyValue } from 'verben-workflow-ui/src/lib/models';\nimport { SearchOperator } from 'verben-workflow-ui/src/lib/models';\nimport { SearchPropertySign } from 'verben-workflow-ui/src/lib/models';\nimport { EnvironmentService } from 'verben-workflow-ui/src/lib/services';\nimport { SearchPropertyValueType } from 'verben-workflow-ui/src/lib/models';\nimport { debounceTime, Subject } from 'rxjs';\nimport { Form } from 'verben-workflow-ui/src/lib/models';\nimport { Status } from 'verben-workflow-ui/src/lib/models';\nimport { User } from 'verben-workflow-ui/src/lib/models';\nimport { ObjectState } from 'verben-workflow-ui/src/lib/models';\nimport { SortDirection } from 'verben-workflow-ui/src/lib/models';\nimport { FormEntity } from 'verben-workflow-ui/src/lib/models';\nimport { PermissionConfig } from 'verben-workflow-ui/src/lib/models';\n\nenum FormPropertyName {\n Name = 'Name',\n CreatedAt = 'Created At',\n Anonymous = 'Anonymous',\n ExpiryDate = 'Expiry Date',\n}\n\nenum FormPropertyMap {\n Name = 'Name',\n CreatedAt = 'CreatedAt',\n Anonymous = 'AllowAnonymous',\n ExpiryDate = 'ExpiryDate',\n}\n\nenum FilterTypes {\n Before = SearchPropertySign.LT,\n On = SearchPropertySign.EQ,\n After = SearchPropertySign.GT,\n NEQ = SearchPropertySign.NEQ,\n}\n\n@Component({\n selector: 'lib-forms',\n templateUrl: './forms.component.html',\n styleUrl: './forms.component.css',\n})\nexport class FormsComponent implements OnInit {\n visibleColumnDef: ColumnDefinition<Form>[] = [];\n styles = baseStyle;\n data: Form[] = [];\n cardData: CardData[] = [];\n currentData: CardData | null = null;\n @ViewChild('vdcv') cardDataView!: CardDataViewComponent;\n @ViewChild('vdv') dataView!: DataViewComponent;\n @ViewChild('dt') tableView!: DataTableComponent<Form>;\n @ViewChildren('popup') popUps!: QueryList<VerbenPopUpComponent>;\n @Input() pageSize: number = 10;\n @Input() searchDebounceTime: number = 500;\n @Input() permissionConfig: PermissionConfig | null = null;\n pageState: PagedResult<Form> | null = null;\n isOpen: boolean = false;\n openDropdownId: string | null = null;\n isGroupOpen: boolean = false;\n openGroupDropdownId: string | null = null;\n currentFilters: IDataFilter[] = [];\n currentSorts: IDataFilter[] = [];\n searchTerm$ = new Subject<string>();\n groups: FormEntity[] = [];\n visibleColumns: IDataFilter[] = [];\n\n filterArray: IDataFilter[] = [\n {\n name: FormPropertyName.Name,\n type: DataFilterType.String,\n checked: false,\n },\n {\n name: FormPropertyName.CreatedAt,\n type: DataFilterType.Date,\n checked: false,\n },\n {\n name: FormPropertyName.Anonymous,\n type: DataFilterType.Bool,\n checked: false,\n },\n {\n name: FormPropertyName.ExpiryDate,\n type: DataFilterType.Date,\n checked: false,\n },\n ];\n\n sortOptions: IDataFilter[] = [\n {\n name: FormPropertyName.Name,\n type: DataFilterType.String,\n checked: false,\n },\n {\n name: FormPropertyName.CreatedAt,\n type: DataFilterType.Date,\n checked: false,\n },\n {\n name: FormPropertyName.Anonymous,\n type: DataFilterType.Bool,\n checked: false,\n },\n {\n name: FormPropertyName.ExpiryDate,\n type: DataFilterType.Date,\n checked: false,\n },\n ];\n\n private currentSearchTerm: string = '';\n\n constructor(\n private utilService: UtilService,\n private server: HttpWebRequestService,\n private cdr: ChangeDetectorRef,\n private fb: FormBuilder,\n private envSvc: EnvironmentService,\n private formsSvc: FormsService\n ) {\n this.visibleColumnDef = formsSvc.formColumns;\n this.visibleColumns = formsSvc.formColumns.map((col) => ({\n checked: true,\n name: typeof col.header === 'string' ? col.header : col.id,\n type: DataFilterType.Bool,\n }));\n }\n\n async ngOnInit(): Promise<void> {\n this.getFormEntities().then((res) => {\n if (res) {\n this.groups = res;\n }\n });\n const forms = await this.getAllForms();\n if (forms) {\n this.data = forms.map((x) => {\n return {\n ...x,\n Id: x.Code,\n id: x.Code,\n ExpiryDate: new Date(x.ExpiryDate.toString()),\n Entities: x.Entities.map((y) => {\n return {\n ...y,\n DataState: ObjectState.Unchanged,\n };\n }),\n };\n });\n this.setUpCardData();\n }\n this.searchTerm$\n .pipe(debounceTime(this.searchDebounceTime)) // Adjust debounce time here (in ms)\n .subscribe(async (searchTerm) => {\n this.currentSearchTerm = searchTerm;\n this.updateFiltersAndSorts(true);\n });\n }\n\n async getFormEntities(): Promise<FormEntity[] | undefined> {\n this.utilService.sendBI(true);\n const res = await this.server.get(\n `Form/GetFormEntities/0/${this.pageSize}`\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return undefined;\n } else {\n var result = (res as PagedResult<FormEntity>).Result;\n return result;\n }\n }\n\n async loadMoreFormEntities(event: DropdownLoadEvent): Promise<FormEntity[]> {\n const res = await this.server.get(\n `Form/GetFormEntities/${event.loadTimes * this.pageSize}/${this.pageSize}`\n );\n if (res instanceof ErrorResponse) {\n return [];\n } else {\n var result = (res as PagedResult<FormEntity>).Result;\n return result;\n }\n }\n async searchFormEntities(\n data: string,\n event: DropdownLoadEvent\n ): Promise<FormEntity[]> {\n const res = await this.server.get(\n `Form/GetFormEntitiesWithParam/${data}/${\n event.loadTimes * this.pageSize\n }/${this.pageSize}`\n );\n if (res instanceof ErrorResponse) {\n return [];\n } else {\n var result = (res as PagedResult<FormEntity>).Result;\n return result;\n }\n }\n\n async getAsyncLabel(value: any): Promise<string> {\n return value ? value.Name : '';\n }\n\n async getAllForms(): Promise<Form[] | undefined> {\n this.utilService.sendBI(true);\n const res = await this.server.get(\n `Form/GetForms/0/${this.pageSize}`,\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return undefined;\n } else {\n this.pageState = res as PagedResult<Form>;\n var result = (res as PagedResult<Form>).Result;\n return result;\n }\n }\n\n async loadMore() {\n if (!this.pageState) {\n return;\n }\n this.utilService.sendBI(true);\n const res =\n this.currentFilters.length > 0 ||\n this.currentSorts.length > 0 ||\n this.currentSearchTerm.trim().length > 0\n ? await this.loadMoreFiltersAndSorts()\n : await this.server.get(\n `Form/GetForms/${this.pageState.Skip}/${this.pageSize}`,\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return;\n } else {\n this.pageState = res as PagedResult<Form>;\n var result = (res as PagedResult<Form>).Result;\n this.data = this.data.concat(\n result.map((x) => {\n return {\n ...x,\n id: x.Code,\n Id: x.Code,\n };\n })\n );\n this.setUpCardDataExtra(result);\n }\n }\n\n setUpCardData() {\n const cardData: CardData[] = this.data.map((x) => {\n return {\n selected: false,\n title: x.Name,\n data: x,\n body: [],\n children: [],\n };\n });\n this.cardData = cardData;\n }\n\n setUpCardDataExtra(baseData: Form[]) {\n const cardData: CardData[] = baseData.map((x) => {\n return {\n selected: false,\n title: x.Name,\n data: x,\n body: [],\n children: [],\n };\n });\n this.cardData = this.cardData.concat(cardData);\n }\n\n goToCardView(data: Form) {\n const item = this.cardData.find((x) => x.data == data);\n if (item) {\n this.formCardClicked(item, true);\n }\n }\n\n goToTableView() {\n if (!this.currentData) {\n return;\n }\n this.dataView.toggleView();\n const id = this.currentData.data ? this.currentData.data.Id : '';\n if (id.trim().length > 0 && !this.tableView.isRowEditing(id)) {\n this.tableView.toggleRowEdit(id);\n }\n }\n\n viewResponses(code: string) {\n if (code.trim().length == 0) {\n return;\n }\n // this.onViewProcessClicked.emit(code);\n this.closePopUp();\n }\n\n formCardClicked(item: CardData, toggleView: boolean = false) {\n this.currentData = this.cardDataView.onItemClick(item);\n if (toggleView) {\n this.dataView.toggleView();\n }\n }\n\n async saveForm() {\n if (this.currentData) {\n var form: Form = this.currentData.data as Form;\n\n if (this.currentData.data.Name.trim().length == 0) {\n this.utilService.showInfo('Name cannot be empty');\n return;\n }\n form.DataState =\n form.DataState == ObjectState.New\n ? ObjectState.New\n : ObjectState.Changed;\n form.Id = '';\n this.utilService.sendBI(true);\n const res = await this.server.post(\n `Form/SaveForms`,\n [form],\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n } else {\n this.utilService.showSuccess('Form saved successfully');\n const result = res as Form[];\n if (result.length > 0) {\n var userResult = result[0];\n const itemIndex = this.data.findIndex(\n (x) => x == this.currentData?.data\n );\n if (itemIndex > -1) {\n this.data[itemIndex].Code = userResult.Code;\n this.data[itemIndex].Id = userResult.Code;\n this.data[itemIndex].id = userResult.Code;\n this.data[itemIndex].DataState = userResult.DataState;\n this.data[itemIndex].TenantId = userResult.TenantId;\n this.data[itemIndex].ServiceName = userResult.ServiceName;\n this.data = this.data.map((x) => x);\n this.cacheItem(this.data[itemIndex]);\n }\n }\n }\n }\n }\n async tableSaveForm(form: Form, callBack: () => any) {\n if (form.Name.trim().length == 0) {\n this.utilService.showInfo('Name cannot be empty');\n return;\n }\n form.DataState =\n form.DataState == ObjectState.New ? ObjectState.New : ObjectState.Changed;\n form.Id = '';\n this.utilService.sendBI(true);\n const res = await this.server.post(\n `Form/SaveForms`,\n [form],\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n } else {\n this.utilService.showSuccess('Form saved successfully');\n const result = res as Form[];\n if (result.length > 0) {\n var userResult = result[0];\n const itemIndex = this.data.findIndex((x) => x == form);\n if (itemIndex > -1) {\n this.data[itemIndex].Code = userResult.Code;\n this.data[itemIndex].Id = userResult.Code;\n this.data[itemIndex].id = userResult.Code;\n this.data[itemIndex].DataState = userResult.DataState;\n this.data[itemIndex].TenantId = userResult.TenantId;\n this.data[itemIndex].ServiceName = userResult.ServiceName;\n this.data = this.data.map((x) => x);\n this.cacheItem(this.data[itemIndex]);\n }\n callBack();\n }\n }\n }\n\n updateTable() {\n this.data = this.data.map((x) => x);\n }\n\n updateItem(value: any, key: string): any {\n return {\n [key]: value,\n };\n }\n\n closePopUp() {\n this.openDropdownId = null;\n this.popUps.forEach((popUp) => {\n if (popUp.dropdownOpen) {\n popUp.toggleDropdown();\n }\n });\n }\n closeGroupPopUp() {\n this.openGroupDropdownId = null;\n }\n\n onViewChange(isGridView: boolean): void {}\n\n onStateChange(event: { key: string; value: boolean }): void {\n switch (event.key) {\n case 'create':\n var newForm: Form = {\n Name: '',\n TenantId: '',\n ServiceName: '',\n id: (this.cardData.length + 1).toString(),\n Id: (this.cardData.length + 1).toString(),\n CreatedAt: new Date(),\n UpdatedAt: new Date(),\n DataState: ObjectState.New,\n Code: '',\n Entities: [],\n IsValid: false,\n AllowAnonymous: false,\n Workflow: '',\n URL: '',\n Duration: 0,\n ExpiryDate: new Date(),\n FormValuesModified: false,\n };\n const cardData: CardData = {\n selected: false,\n title: newForm.Name,\n data: newForm,\n body: [],\n children: [],\n };\n this.data = this.data.concat([newForm]);\n this.cardData.push(cardData);\n this.formCardClicked(cardData);\n this.dataView.isTableView = false;\n break;\n default:\n break;\n }\n }\n\n showTableView: boolean = false;\n onSelectionChange(selectedRows: Form[]) {}\n\n onColumnsUpdated(updatedColumns: IDataFilter[]) {\n const updatedColumnDef: ColumnDefinition<Form>[] = [];\n updatedColumns.forEach((col) => {\n const matchingCol = this.formsSvc.formColumns.find(\n (column) => column.header === col.name || column.id === col.name\n );\n if (matchingCol) {\n updatedColumnDef.push(matchingCol);\n }\n });\n\n this.visibleColumnDef = [...updatedColumnDef];\n }\n\n exportFiltersAndSorts = async (pageState: {\n skip: number;\n limit: number;\n }) => {\n var payload: SearchPropertyValue[] = this.currentFilters.map((x) => {\n return {\n PropertyName:\n FormPropertyMap[\n x.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: x.value,\n Operator: SearchOperator.And,\n Sign:\n x.condition && Object.keys(FilterTypes).includes(x.condition)\n ? (FilterTypes[\n x.condition as keyof typeof FilterTypes\n ] as unknown as SearchPropertySign)\n : SearchPropertySign.EQ,\n Type:\n x.name == FormPropertyName.CreatedAt ||\n x.name == FormPropertyName.ExpiryDate\n ? SearchPropertyValueType.Date\n : x.name == FormPropertyName.Anonymous\n ? SearchPropertyValueType.Bool\n : SearchPropertyValueType.String,\n };\n });\n // payload.push({\n // PropertyName: 'APIKey',\n // EntityValue: this.envSvc.environment.APIKey,\n // Operator: SearchOperator.And,\n // Sign: SearchPropertySign.EQ,\n // });\n for (let sort of this.currentSorts) {\n payload.push({\n PropertyName:\n FormPropertyMap[\n sort.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: '',\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n Sort:\n sort.value.toLowerCase() == SortDirection.Asc.toLowerCase()\n ? SortDirection.Asc\n : sort.value.toLowerCase() == SortDirection.Desc.toLowerCase()\n ? SortDirection.Desc\n : SortDirection.None,\n });\n }\n const searchTermExists = this.currentSearchTerm.trim().length > 0;\n this.utilService.sendBI(true);\n const res = searchTermExists\n ? await this.server.get(\n `Form/GetFormWithParam/${this.currentSearchTerm.trim()}/${\n pageState.skip\n }/${pageState.limit}`,\n this.envSvc.environment.WorkFlowAPI\n )\n : payload.length == 0\n ? await this.server.get(\n `Form/GetForms/${pageState.skip}/${pageState.limit}`,\n this.envSvc.environment.WorkFlowAPI\n )\n : await this.server.post(\n `Form/SearchForms/${pageState.skip}/${pageState.limit}`,\n payload,\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return [];\n } else {\n var result = (res as PagedResult<Form>).Result;\n return result;\n }\n };\n\n async updateFiltersAndSorts(isSearch: boolean = false) {\n if (!isSearch) {\n this.dataView.onClearSearch();\n this.currentSearchTerm = '';\n this.cdr.detectChanges();\n const clickEvent = new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window,\n });\n document.dispatchEvent(clickEvent);\n }\n var payload: SearchPropertyValue[] = this.currentFilters.map((x) => {\n return {\n PropertyName:\n FormPropertyMap[\n x.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: x.value,\n Operator: SearchOperator.And,\n Sign:\n x.condition && Object.keys(FilterTypes).includes(x.condition)\n ? (FilterTypes[\n x.condition as keyof typeof FilterTypes\n ] as unknown as SearchPropertySign)\n : SearchPropertySign.EQ,\n Type:\n x.name == FormPropertyName.CreatedAt ||\n x.name == FormPropertyName.ExpiryDate\n ? SearchPropertyValueType.Date\n : x.name == FormPropertyName.Anonymous\n ? SearchPropertyValueType.Bool\n : SearchPropertyValueType.String,\n };\n });\n // payload.push({\n // PropertyName: 'APIKey',\n // EntityValue: this.envSvc.environment.APIKey,\n // Operator: SearchOperator.And,\n // Sign: SearchPropertySign.EQ,\n // });\n for (let sort of this.currentSorts) {\n payload.push({\n PropertyName:\n FormPropertyMap[\n sort.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: '',\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n Sort:\n sort.value.toLowerCase() == SortDirection.Asc.toLowerCase()\n ? SortDirection.Asc\n : sort.value.toLowerCase() == SortDirection.Desc.toLowerCase()\n ? SortDirection.Desc\n : SortDirection.None,\n });\n }\n const searchTermExists = this.currentSearchTerm.trim().length > 0;\n this.utilService.sendBI(true);\n const res = searchTermExists\n ? await this.server.get(\n `Form/GetFormWithParam/${this.currentSearchTerm.trim()}/0/${\n this.pageSize\n }`,\n this.envSvc.environment.WorkFlowAPI\n )\n : payload.length == 0\n ? await this.server.get(\n `Form/GetForms/0/${this.pageSize}`,\n this.envSvc.environment.WorkFlowAPI\n )\n : await this.server.post(\n `Form/SearchForms/0/${this.pageSize}`,\n payload,\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n this.currentFilters = [];\n this.currentSorts = [];\n return undefined;\n } else {\n this.cardDataView.clearData();\n this.currentData = null;\n this.pageState = res as PagedResult<Form>;\n var result = (res as PagedResult<Form>).Result;\n this.data = result.map((x) => {\n return {\n ...x,\n Id: x.Code,\n id: x.Code,\n };\n });\n this.setUpCardData();\n }\n }\n async loadMoreFiltersAndSorts(): Promise<PagedResult<Form> | undefined> {\n if (!this.pageState) {\n return;\n }\n var payload: SearchPropertyValue[] = this.currentFilters.map((x) => {\n return {\n PropertyName:\n FormPropertyMap[\n x.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: x.value,\n Operator: SearchOperator.And,\n Sign:\n x.condition && Object.keys(FilterTypes).includes(x.condition)\n ? (FilterTypes[\n x.condition as keyof typeof FilterTypes\n ] as unknown as SearchPropertySign)\n : SearchPropertySign.EQ,\n Type:\n x.name == FormPropertyName.CreatedAt ||\n x.name == FormPropertyName.ExpiryDate\n ? SearchPropertyValueType.Date\n : x.name == FormPropertyName.Anonymous\n ? SearchPropertyValueType.Bool\n : SearchPropertyValueType.String,\n };\n });\n for (let sort of this.currentSorts) {\n payload.push({\n PropertyName:\n FormPropertyMap[\n sort.name.split(' ').join('') as keyof typeof FormPropertyMap\n ],\n EntityValue: '',\n Operator: SearchOperator.And,\n Sign: SearchPropertySign.EQ,\n Sort:\n sort.value.toLowerCase() == SortDirection.Asc.toLowerCase()\n ? SortDirection.Asc\n : sort.value.toLowerCase() == SortDirection.Desc.toLowerCase()\n ? SortDirection.Desc\n : SortDirection.None,\n });\n }\n const searchTermExists = this.currentSearchTerm.trim().length > 0;\n this.utilService.sendBI(true);\n const res = searchTermExists\n ? await this.server.get(\n `Form/GetFormWithParam/${this.currentSearchTerm.trim()}/${\n this.pageState.Skip\n }/${this.pageSize}`,\n this.envSvc.environment.WorkFlowAPI\n )\n : payload.length == 0\n ? await this.server.get(\n `Form/GetForms/${this.pageState.Skip}/${this.pageSize}`,\n this.envSvc.environment.WorkFlowAPI\n )\n : await this.server.post(\n `Form/SearchForms/${this.pageState.Skip}/${this.pageSize}`,\n payload,\n this.envSvc.environment.WorkFlowAPI\n );\n this.utilService.sendBI(false);\n if (res instanceof ErrorResponse) {\n return undefined;\n } else {\n var result = res as PagedResult<Form>;\n return result;\n }\n }\n\n onFilterUpdated(updatedFilters: IDataFilter[] | string) {\n // Ensure updatedFilters is an array\n if (Array.isArray(updatedFilters)) {\n this.currentFilters = updatedFilters;\n this.updateFiltersAndSorts();\n }\n }\n onSortUpdated(updatedSorts: IDataFilter[]) {\n this.currentSorts = updatedSorts;\n this.updateFiltersAndSorts();\n }\n\n handleSearch(event: { key: string; value: string }) {\n this.searchTerm$.next(event.value);\n }\n\n handleExport(exportedData: Partial<any>[]) {\n // console.log('Exported data:', exportedData);\n this.downloadCSV(exportedData);\n }\n\n private downloadCSV(data: Partial<any>[]) {\n const headers = Object.keys(data[0]);\n const csvContent = [\n headers.join(','),\n ...data.map((row) => headers.map((header) => row[header]).join(',')),\n ].join('\\n');\n\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', 'export.csv');\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n tableCache = new Map<string, Form>();\n\n cacheItem(item: Form) {\n const cacheKey = item.Id;\n this.tableCache.set(cacheKey, JSON.parse(JSON.stringify(item)));\n }\n\n restoreCache(item: Form) {\n const cacheKey = item.Id;\n const itemCache = this.tableCache.get(cacheKey);\n if (itemCache) {\n item.Name = itemCache.Name;\n item.Entities = itemCache.Entities;\n item.ExpiryDate = itemCache.ExpiryDate;\n item.AllowAnonymous = itemCache.AllowAnonymous;\n }\n this.tableCache.delete(cacheKey);\n }\n}\n","<div #messageLog class=\"flex flex-col gap-4 message-log-container\">\n <verben-data-view\n #vdv\n [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: (!permissionConfig || permissionConfig.Actions['Export']),\n isSelect: true,\n isCreate: (!permissionConfig || permissionConfig.Actions['Create']),\n isToggle:true,\n }\"\n [buttonClass]=\"'my-custom-button-class'\"\n [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\"\n [selectedColumnCount]=\"0\"\n [selectedSortCount]=\"0\"\n [selectedFilterTableCount]=\"0\"\n (viewChange)=\"onViewChange($event)\"\n (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\"\n >\n <div class=\"mt-2\" table-content>\n <lib-data-table\n [dataKey]=\"'Id'\"\n class=\"form-table\"\n #dt\n [data]=\"data\"\n [columns]=\"visibleColumnDef\"\n [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <ng-container libColumn=\"select\">\n <ng-template\n #cell\n let-isSelected=\"isSelected\"\n let-toggleRowSelection=\"toggleRowSelection\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected\"\n (change)=\"toggleRowSelection()\"\n />\n </ng-template>\n <ng-template\n #header\n let-allRowsSelected=\"allRowsSelected\"\n let-someRowsSelected=\"someRowsSelected\"\n let-toggleAllRows=\"toggleAllRows\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"allRowsSelected()\"\n [indeterminate]=\"someRowsSelected()\"\n (change)=\"toggleAllRows()\"\n />\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"createdAt\">\n <ng-template #cell let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n <ng-container libColumn=\"name\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value.Name }}\n </ng-template>\n <ng-template\n #cellEdit\n let-row=\"row\"\n let-updateData=\"updateData\"\n let-value\n >\n <div class=\"width-max\">\n <verbena-input [(ngModel)]=\"value.Name\"></verbena-input>\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"groups\">\n <ng-template #cell let-row=\"row\" let-value>\n <div class=\"flex flex-col gap-1\">\n <div class=\"groups-summary-container gap-2\">\n <div\n *ngFor=\"let group of value.Entities.slice(0, 4)\"\n class=\"group-chip px-2\"\n >\n {{ group.Name }}\n </div>\n </div>\n <verben-pop-Up\n *ngIf=\"value.Entities.length > 3\"\n [customStyles]=\"{ 'z-index': '99' }\"\n [enableMouseLeave]=\"false\"\n >\n <span class=\"see-more-section flex\" dropdown-trigger>\n <div>See more</div>\n <verben-svg\n icon=\"chevron-down\"\n fill=\"#3479E9\"\n [width]=\"10\"\n [height]=\"6\"\n ></verben-svg>\n </span>\n <div\n class=\"groups-summary-container pop-up gap-2 p-2\"\n dropdown-content\n >\n <div\n class=\"group-chip px-2\"\n *ngFor=\"let group of value.Entities\"\n >\n {{ group.Name }}\n </div>\n </div>\n </verben-pop-Up>\n </div>\n </ng-template>\n <ng-template\n #cellEdit\n let-row=\"row\"\n let-updateData=\"updateData\"\n let-value\n >\n <verben-drop-down\n selectKey=\"Code\"\n display=\"chip\"\n width=\"100%\"\n placeholder=\"Select Groups\"\n [showClear]=\"true\"\n [filter]=\"true\"\n [load]=\"this.loadMoreFormEntities.bind(this)\"\n [search]=\"this.searchFormEntities.bind(this)\"\n [(options)]=\"groups\"\n optionLabel=\"Name\"\n [multiselect]=\"true\"\n [(ngModel)]=\"value.Entities\"\n [lazyLoad]=\"true\"\n [asyncLabel]=\"this.getAsyncLabel.bind(this)\"\n >\n </verben-drop-down>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"expiry\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value.ExpiryDate | date }}\n </ng-template>\n <ng-template\n #cellEdit\n let-row=\"row\"\n let-updateData=\"updateData\"\n let-value\n >\n <div class=\"width-max\">\n <input\n class=\"date-picker\"\n type=\"date\"\n [(ngModel)]=\"value.ExpiryDate\"\n />\n <!-- <verbena-input [(ngModel)]=\"value.ExpiryDate\"></verbena-input> -->\n </div>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"anonymous\">\n <ng-template #cell let-row=\"row\" let-value>\n <verben-svg\n [width]=\"15\"\n [height]=\"15\"\n [icon]=\"value.IsProtected ? 'on' : 'off'\"\n ></verben-svg>\n </ng-template>\n <ng-template\n #cellEdit\n let-row=\"row\"\n let-updateData=\"updateData\"\n let-value\n >\n <verbena-switch\n onText=\"\"\n offText=\"\"\n [(ngModel)]=\"value.AllowAnonymous\"\n [onColor]=\"'#1A237E'\"\n ></verbena-switch>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-value\n >\n <verben-pop-Up\n #popup\n [customStyles]=\"{ 'z-index': '99' }\"\n [enableMouseLeave]=\"false\"\n >\n <verben-svg\n class=\"cursor-pointer actions-icon\"\n dropdown-trigger\n icon=\"list\"\n ></verben-svg>\n <div class=\"pop-up-content flex flex-col\" dropdown-content>\n <div\n (click)=\"viewResponses(value.Code)\"\n class=\"pop-up-value cursor-pointer\"\n >\n View responses\n </div>\n <div\n *ngIf=\"\n !permissionConfig || permissionConfig.Actions['Create']\n \"\n (click)=\"toggleRowEdit(); cacheItem(value); closePopUp()\"\n class=\"pop-up-value cursor-pointer\"\n >\n Edit\n </div>\n <!-- <div class=\"pop-up-value cursor-pointer\">Delete</div> -->\n </div>\n </verben-pop-Up>\n </ng-template>\n <ng-template\n #cellEdit\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-value\n >\n <div class=\"flex gap-2 items-center\">\n <verben-svg\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"tableSaveForm(value, toggleRowEdit)\"\n ></verben-svg>\n <verben-svg\n (click)=\"restoreCache(value); toggleRowEdit()\"\n icon=\"close-no-circle\"\n [width]=\"15\"\n [height]=\"15\"\n ></verben-svg>\n <!-- <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n ></verben-svg> -->\n <verben-svg\n icon=\"cardViewAlt\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"goToCardView(value)\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view\n borderRadius=\"12px\"\n #vdcv\n dataId=\"Id\"\n border=\"5px\"\n [cardDataList]=\"cardData\"\n rbgColor=\"#f5f6f9\"\n mg=\"0px\"\n >\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data\n #vlcd\n [parent]=\"vdcv\"\n dataId=\"MailAddress\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n [cardDataList]=\"cardData\"\n >\n <ng-template #card let-item>\n <div\n (click)=\"formCardClicked(item)\"\n class=\"flex cursor-pointer h-[max-content]\"\n >\n <!-- <verben-svg [width]=\"15\" [height]=\"15\" (click)=\"toggleChildren(item); $event.stopPropagation()\"\n [ngClass]=\"item.children && item.children.length?'visible':'invisible'\"\n class=\"items-center flex pr-1 cursor-pointer\" [icon]=\"item.isChildrenExpanded?'minus':'plus'\" /> -->\n <div class=\"flex w-full bg-secondary rounded-xl\">\n <div\n class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"\n ></div>\n <div class=\"py-3 px-4 flex-1 h-[100%]\">\n <div\n class=\"flex items-start flex-1 gap-1 justify-between h-[100%]\"\n >\n <div\n class=\"flex flex-col flex-1 card-min-height justify-between h-[100%]\"\n >\n <h3\n class=\"my-0 font-bold text-[#404040] leading-[19.5px]\"\n >\n {{ item.data.Name }}\n </h3>\n <span class=\"flex items-center gap-1\">\n <span class=\"!text-[10px] font-light text-[#404040]\"\n >Expiry Date:</span\n >\n <span class=\"!text-[12px]\">{{\n item.data.ExpiryDate | date\n }}</span>\n </span>\n </div>\n\n <div class=\"flex items-end h-[100%]\">\n <!-- <span class=\"enum-val {{item.data.Status}}\">{{item.data.Status}}</span> -->\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n <verben-right-card-data-view>\n <ng-template #parent>\n <div\n *ngIf=\"this.currentData\"\n class=\"flex flex-col rounded-xl h-full w-full justify-between relative space-y-4\"\n >\n <div class=\"flex flex-col gap-3\">\n <verbena-input\n name=\"Name\"\n label=\"Name\"\n (ngModelChange)=\"updateTable()\"\n [(ngModel)]=\"this.currentData.data.Name\"\n />\n <div class=\"flex flex-col gap-1\">\n <div>Expiry Date</div>\n <input\n class=\"date-picker\"\n type=\"date\"\n [(ngModel)]=\"this.currentData.data.ExpiryDate\"\n />\n </div>\n <!-- <verbena-input name=\"ExpiryDate\" label=\"Expiry Date\" (ngModelChange)=\"updateTable()\"\n [(ngModel)]=\"this.currentData.data.ExpiryDate\" /> -->\n <div class=\"flex flex-col gap-1\">\n <div>Anonymous</div>\n <verbena-switch\n onText=\"\"\n offText=\"\"\n [(ngModel)]=\"this.currentData.data.AllowAnonymous\"\n [onColor]=\"'#1A237E'\"\n ></verbena-switch>\n </div>\n <div class=\"flex flex-col gap-1\">\n <div>Form Groups</div>\n <verben-drop-down\n selectKey=\"Code\"\n display=\"chip\"\n width=\"100%\"\n placeholder=\"Select Groups\"\n [showClear]=\"true\"\n [filter]=\"true\"\n [load]=\"this.loadMoreFormEntities.bind(this)\"\n [search]=\"this.searchFormEntities.bind(this)\"\n [(options)]=\"groups\"\n optionLabel=\"Name\"\n [multiselect]=\"true\"\n [(ngModel)]=\"this.currentData.data.Entities\"\n [lazyLoad]=\"true\"\n [asyncLabel]=\"this.getAsyncLabel.bind(this)\"\n >\n </verben-drop-down>\n </div>\n </div>\n\n <!-- buttons -->\n <div class=\"flex justify-between bottom-8 left-0 right-0\">\n <!-- <verbena-button\n class=\"verben-delete-button\"\n text=\"Delete\"\n ></verbena-button> -->\n <div></div>\n <div class=\"flex gap-3\">\n <verbena-button\n class=\"verben-switch-button\"\n (click)=\"\n viewResponses(\n this.currentData\n ? this.currentData.data\n ? this.currentData.data.Code\n : ''\n : ''\n )\n \"\n text=\"View Responses\"\n ></verbena-button>\n <verbena-button\n class=\"verben-switch-button\"\n (click)=\"goToTableView()\"\n text=\"Switch To Table\"\n ></verbena-button>\n <verbena-button\n *ngIf=\"\n !permissionConfig || permissionConfig.Actions['Create']\n \"\n class=\"verben-primary-button\"\n (click)=\"this.saveForm()\"\n text=\"Save\"\n ></verbena-button>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-right-card-data-view>\n <!-- <verben-right-card-data-view>\n yeshhhhhh\n </verben-right-card-data-view> -->\n\n <verben-card-data-view-footer>\n <div class=\"flex gap-2 justify-between\">\n <div\n *ngIf=\"!vdcv.hasCurrentItem()\"\n class=\"message-log-button-container flex justify-between\"\n >\n <!-- <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n </div>\n <div\n class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\"\n >\n <span class=\"paginator-text\"\n >{{ cardData.length }} records loaded</span\n >\n <button (click)=\"loadMore()\" class=\"load-more view-links\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <verben-visible-column\n (columnsUpdated)=\"onColumnsUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n [columns]=\"visibleColumns\"\n [displayedColumns]=\"5\"\n ></verben-visible-column>\n </div>\n <div filter-content>\n <verben-table-filter\n (filtersApplied)=\"onFilterUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"420px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"\n ></verben-table-filter>\n </div>\n <div sort-content>\n <verben-sort-table\n (selectedOptions)=\"onSortUpdated($event)\"\n [border]=\"'1px solid rgba(212, 160, 7, 1)'\"\n borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\"\n bgColor=\"white\"\n width=\"400px\"\n textColor=\"black\"\n pd=\"1rem\"\n primaryColor=\"#FFE681\"\n secondaryColor=\"#3479E9\"\n tertiaryColor=\"#404040\"\n [enableDragAndDrop]=\"true\"\n [sortOptions]=\"sortOptions\"\n ></verben-sort-table>\n </div>\n <div export-content>\n <lib-data-xport\n [useImportKey]=\"true\"\n [columns]=\"visibleColumnDef\"\n [data]=\"data\"\n [dataQueryFunction]=\"exportFiltersAndSorts\"\n >\n </lib-data-xport>\n <!-- <lib-data-export [data]=\"data\" (exportDataEvent)=\"handleExport($event)\">\n </lib-data-export> -->\n </div>\n </verben-data-view>\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-between\">\n <div class=\"message-log-button-container flex justify-between\">\n <!-- <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n </div>\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData.length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links\">\n Load more\n </button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsComponent } from './forms.component';\nimport { SharedModule } from 'verben-workflow-ui/src/lib/shared';\n\n@NgModule({\n declarations: [FormsComponent],\n imports: [SharedModule],\n exports: [FormsComponent],\n})\nexport class FormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.FormsService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@ import { Subject } from 'rxjs';
|
|
|
10
10
|
import { Status } from 'verben-workflow-ui/src/lib/models';
|
|
11
11
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
12
12
|
import { Location } from '@angular/common';
|
|
13
|
-
import { Form
|
|
13
|
+
import { Form } from 'verben-workflow-ui/src/lib/models';
|
|
14
14
|
import { DataType } from 'verben-workflow-ui/src/lib/models';
|
|
15
15
|
import * as i0 from "@angular/core";
|
|
16
16
|
export declare class FormResponseComponent implements OnInit {
|
|
@@ -20,12 +20,12 @@ export declare class FormResponseComponent implements OnInit {
|
|
|
20
20
|
private fb;
|
|
21
21
|
private envSvc;
|
|
22
22
|
private router;
|
|
23
|
-
private
|
|
23
|
+
private formResponseSvc;
|
|
24
24
|
private _location;
|
|
25
25
|
private route;
|
|
26
|
-
visibleColumnDef: ColumnDefinition<
|
|
26
|
+
visibleColumnDef: ColumnDefinition<Form>[];
|
|
27
27
|
styles: any;
|
|
28
|
-
data:
|
|
28
|
+
data: Form[];
|
|
29
29
|
path: string;
|
|
30
30
|
cardData: CardData[];
|
|
31
31
|
selectedFilterTableCount: number;
|
|
@@ -33,14 +33,15 @@ export declare class FormResponseComponent implements OnInit {
|
|
|
33
33
|
currentData: CardData | null;
|
|
34
34
|
cardDataView: CardDataViewComponent;
|
|
35
35
|
dataView: DataViewComponent;
|
|
36
|
-
tableView: DataTableComponent<
|
|
36
|
+
tableView: DataTableComponent<Form>;
|
|
37
37
|
application: string | null;
|
|
38
38
|
pageSize: number;
|
|
39
|
+
taskCodeKey: string;
|
|
39
40
|
skip: number;
|
|
40
41
|
hasMore: boolean;
|
|
41
42
|
onViewProcessClicked: EventEmitter<string>;
|
|
42
43
|
searchTerm: string;
|
|
43
|
-
pageState: PagedResult<
|
|
44
|
+
pageState: PagedResult<Form> | null;
|
|
44
45
|
isOpen: boolean;
|
|
45
46
|
openDropdownId: string | null;
|
|
46
47
|
currentFilters: IDataFilter[];
|
|
@@ -50,36 +51,36 @@ export declare class FormResponseComponent implements OnInit {
|
|
|
50
51
|
statusOptions: Status[];
|
|
51
52
|
active: number;
|
|
52
53
|
taskCode: string;
|
|
53
|
-
users:
|
|
54
|
+
users: Form[];
|
|
54
55
|
visibleColumns: IDataFilter[];
|
|
55
56
|
filterArray: IDataFilter[];
|
|
56
|
-
closePopUp(row:
|
|
57
|
+
closePopUp(row: Form): void;
|
|
57
58
|
toggleTable(rowId: any): void;
|
|
58
59
|
sortOptions: IDataFilter[];
|
|
59
60
|
private currentSearchTerm;
|
|
60
|
-
constructor(utilService: UtilService, server: HttpWebRequestService, cdr: ChangeDetectorRef, fb: FormBuilder, envSvc: EnvironmentService, router: Router,
|
|
61
|
+
constructor(utilService: UtilService, server: HttpWebRequestService, cdr: ChangeDetectorRef, fb: FormBuilder, envSvc: EnvironmentService, router: Router, formResponseSvc: FormResponseService, _location: Location, route: ActivatedRoute);
|
|
61
62
|
goBack(): void;
|
|
62
63
|
ngOnInit(): Promise<void>;
|
|
63
64
|
setActive(i?: number): void;
|
|
64
|
-
getAllTaskUsers(): Promise<
|
|
65
|
+
getAllTaskUsers(): Promise<Form[] | undefined>;
|
|
65
66
|
clearLogs(sortValue?: string, order?: string): void;
|
|
66
|
-
getForms(taskCode: string): Promise<
|
|
67
|
+
getForms(taskCode: string): Promise<Form[] | undefined>;
|
|
67
68
|
loadMore(): void;
|
|
68
69
|
reset(): void;
|
|
69
|
-
onUserSelected(event: DropdownChangeEvent, item:
|
|
70
|
-
onClear(event: Event, item:
|
|
70
|
+
onUserSelected(event: DropdownChangeEvent, item: Form): void;
|
|
71
|
+
onClear(event: Event, item: Form): void;
|
|
71
72
|
setUpCardData(): void;
|
|
72
|
-
goToCardView(data:
|
|
73
|
-
areRequiredPropertiesFilled(data:
|
|
73
|
+
goToCardView(data: Form): void;
|
|
74
|
+
areRequiredPropertiesFilled(data: Form): boolean;
|
|
74
75
|
goToTableView(): void;
|
|
75
76
|
viewProcesses(code: string): void;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
cardClicked(item: CardData, toggleView?: boolean): void;
|
|
78
|
+
saveItem(): Promise<void>;
|
|
79
|
+
tableSaveItem(form: Form, callBack: () => any): Promise<void>;
|
|
79
80
|
updateTable(): void;
|
|
80
|
-
navigateToFields(card:
|
|
81
|
+
navigateToFields(card: Form): void;
|
|
81
82
|
onClose(): void;
|
|
82
|
-
openDropdown(item:
|
|
83
|
+
openDropdown(item: Form): void;
|
|
83
84
|
onSearch(event: {
|
|
84
85
|
key: string;
|
|
85
86
|
value: string;
|
|
@@ -91,12 +92,12 @@ export declare class FormResponseComponent implements OnInit {
|
|
|
91
92
|
value: boolean;
|
|
92
93
|
}): void;
|
|
93
94
|
showTableView: boolean;
|
|
94
|
-
onSelectionChange(selectedRows:
|
|
95
|
+
onSelectionChange(selectedRows: Form[]): void;
|
|
95
96
|
retryMessage(): void;
|
|
96
97
|
onColumnsUpdated(updatedColumns: IDataFilter[]): void;
|
|
97
98
|
updateFiltersAndSorts(isSearch?: boolean): Promise<undefined>;
|
|
98
|
-
postSearch(payload: any): Promise<
|
|
99
|
-
loadMoreFiltersAndSorts(): Promise<PagedResult<
|
|
99
|
+
postSearch(payload: any): Promise<Form[] | undefined>;
|
|
100
|
+
loadMoreFiltersAndSorts(): Promise<PagedResult<Form> | undefined>;
|
|
100
101
|
onFilterApplied(appliedFilter: IDataFilter[]): void;
|
|
101
102
|
getCondition(value: any): any;
|
|
102
103
|
onSortUpdated(updatedSorts: IDataFilter[]): void;
|
|
@@ -107,5 +108,5 @@ export declare class FormResponseComponent implements OnInit {
|
|
|
107
108
|
handleExport(exportedData: Partial<any>[]): void;
|
|
108
109
|
private downloadCSV;
|
|
109
110
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormResponseComponent, never>;
|
|
110
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FormResponseComponent, "lib-form-response", never, { "path": { "alias": "path"; "required": false; }; "application": { "alias": "application"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; }, { "onViewProcessClicked": "onViewProcessClicked"; }, never, never, false, never>;
|
|
111
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormResponseComponent, "lib-form-response", never, { "path": { "alias": "path"; "required": false; }; "application": { "alias": "application"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "taskCodeKey": { "alias": "taskCodeKey"; "required": false; }; }, { "onViewProcessClicked": "onViewProcessClicked"; }, never, never, false, never>;
|
|
111
112
|
}
|
|
@@ -3,7 +3,7 @@ import { Form } from 'verben-workflow-ui/src/lib/models';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class FormResponseService {
|
|
5
5
|
constructor();
|
|
6
|
-
get
|
|
6
|
+
get formColumns(): ColumnDefinition<Form>[];
|
|
7
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormResponseService, never>;
|
|
8
8
|
static ɵprov: i0.ɵɵInjectableDeclaration<FormResponseService>;
|
|
9
9
|
}
|
package/styles/styles.css
CHANGED
|
@@ -1037,20 +1037,12 @@ video {
|
|
|
1037
1037
|
.bg-\[\#1A237E33\] {
|
|
1038
1038
|
background-color: #1A237E33;
|
|
1039
1039
|
}
|
|
1040
|
-
.bg-\[\#4ABB54\] {
|
|
1041
|
-
--tw-bg-opacity: 1;
|
|
1042
|
-
background-color: rgb(74 187 84 / var(--tw-bg-opacity, 1));
|
|
1043
|
-
}
|
|
1044
1040
|
.bg-\[\#9A9FBF80\] {
|
|
1045
1041
|
background-color: #9A9FBF80;
|
|
1046
1042
|
}
|
|
1047
1043
|
.bg-\[\#9a9fbf27\] {
|
|
1048
1044
|
background-color: #9a9fbf27;
|
|
1049
1045
|
}
|
|
1050
|
-
.bg-\[\#BEB8FF\] {
|
|
1051
|
-
--tw-bg-opacity: 1;
|
|
1052
|
-
background-color: rgb(190 184 255 / var(--tw-bg-opacity, 1));
|
|
1053
|
-
}
|
|
1054
1046
|
.bg-\[\#D4A00773\] {
|
|
1055
1047
|
background-color: #D4A00773;
|
|
1056
1048
|
}
|