@acorex-platform/module-help-desk-client 0.0.32 → 0.0.33

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.
Files changed (39) hide show
  1. package/fesm2022/{acorex-platform-module-help-desk-client-acorex-platform-module-help-desk-client-OtDtf3iY.mjs → acorex-platform-module-help-desk-client-acorex-platform-module-help-desk-client-8uBzGpHC.mjs} +7 -7
  2. package/fesm2022/{acorex-platform-module-help-desk-client-acorex-platform-module-help-desk-client-OtDtf3iY.mjs.map → acorex-platform-module-help-desk-client-acorex-platform-module-help-desk-client-8uBzGpHC.mjs.map} +1 -1
  3. package/fesm2022/{acorex-platform-module-help-desk-client-capture-screen.component-AyM-9U5W.mjs → acorex-platform-module-help-desk-client-capture-screen.component-D8azYPyS.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-help-desk-client-capture-screen.component-AyM-9U5W.mjs.map → acorex-platform-module-help-desk-client-capture-screen.component-D8azYPyS.mjs.map} +1 -1
  5. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entities-issue-type.mjs +258 -0
  6. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entities-issue-type.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entities-my-reported-issues.mjs +577 -0
  8. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entities-my-reported-issues.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entities-reported-issues.mjs +588 -0
  10. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entities-reported-issues.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entity-catalog-acorex-platform-module-help-desk-client-contracts-entity-catalog-otgMMFlK.mjs +63 -0
  12. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entity-catalog-acorex-platform-module-help-desk-client-contracts-entity-catalog-otgMMFlK.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entity-catalog-issue-type.entity-CAuZWL3c.mjs +216 -0
  14. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entity-catalog-issue-type.entity-CAuZWL3c.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entity-catalog-my-reported-issues.entity-Dpg2-NaY.mjs +535 -0
  16. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entity-catalog-my-reported-issues.entity-Dpg2-NaY.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entity-catalog-reported-issues.entity-Bb_nYMZe.mjs +546 -0
  18. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entity-catalog-reported-issues.entity-Bb_nYMZe.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entity-catalog.mjs +2 -0
  20. package/fesm2022/acorex-platform-module-help-desk-client-contracts-entity-catalog.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-help-desk-client-contracts.mjs +1 -1283
  22. package/fesm2022/acorex-platform-module-help-desk-client-contracts.mjs.map +1 -1
  23. package/fesm2022/{acorex-platform-module-help-desk-client-download-log-file.command-eMaHHzLd.mjs → acorex-platform-module-help-desk-client-download-log-file.command-6OhUT3KQ.mjs} +2 -2
  24. package/fesm2022/{acorex-platform-module-help-desk-client-download-log-file.command-eMaHHzLd.mjs.map → acorex-platform-module-help-desk-client-download-log-file.command-6OhUT3KQ.mjs.map} +1 -1
  25. package/fesm2022/acorex-platform-module-help-desk-client-local-entities.mjs +31 -0
  26. package/fesm2022/acorex-platform-module-help-desk-client-local-entities.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-module-help-desk-client-report-new-issue.component-C-vY_x_C.mjs → acorex-platform-module-help-desk-client-report-new-issue.component-DYlXM6Zs.mjs} +40 -17
  28. package/fesm2022/acorex-platform-module-help-desk-client-report-new-issue.component-DYlXM6Zs.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-module-help-desk-client-show-report-issue.command-q2fqdnAS.mjs → acorex-platform-module-help-desk-client-show-report-issue.command-D5riRQv7.mjs} +2 -2
  30. package/fesm2022/{acorex-platform-module-help-desk-client-show-report-issue.command-q2fqdnAS.mjs.map → acorex-platform-module-help-desk-client-show-report-issue.command-D5riRQv7.mjs.map} +1 -1
  31. package/fesm2022/acorex-platform-module-help-desk-client.mjs +1 -1
  32. package/package.json +21 -1
  33. package/types/acorex-platform-module-help-desk-client-contracts-entities-issue-type.d.ts +5 -0
  34. package/types/acorex-platform-module-help-desk-client-contracts-entities-my-reported-issues.d.ts +5 -0
  35. package/types/acorex-platform-module-help-desk-client-contracts-entities-reported-issues.d.ts +5 -0
  36. package/types/acorex-platform-module-help-desk-client-contracts-entity-catalog.d.ts +10 -0
  37. package/types/acorex-platform-module-help-desk-client-contracts.d.ts +2 -8
  38. package/types/acorex-platform-module-help-desk-client-local-entities.d.ts +12 -0
  39. package/fesm2022/acorex-platform-module-help-desk-client-report-new-issue.component-C-vY_x_C.mjs.map +0 -1
@@ -0,0 +1,5 @@
1
+ import { AXPEntity } from '@acorex-platform/framework-shared/entity';
2
+
3
+ declare function myReportedIssuesEntityFactory(): Promise<AXPEntity | null>;
4
+
5
+ export { myReportedIssuesEntityFactory };
@@ -0,0 +1,5 @@
1
+ import { AXPEntity } from '@acorex-platform/framework-shared/entity';
2
+
3
+ declare function reportedIssuesEntityFactory(): Promise<AXPEntity | null>;
4
+
5
+ export { reportedIssuesEntityFactory };
@@ -0,0 +1,10 @@
1
+ import { AXPLocalEntityCatalog } from '@acorex-platform/framework-shared/entity';
2
+
3
+ /**
4
+ * Lazy per-entity layout factories. Do not re-export from the contracts barrel
5
+ * so RootConfig imports stay light. Server seed and client `local-entities`
6
+ * consume this catalog explicitly.
7
+ */
8
+ declare const helpDeskLocalEntityCatalog: AXPLocalEntityCatalog;
9
+
10
+ export { helpDeskLocalEntityCatalog };
@@ -1,4 +1,4 @@
1
- import { AXPEntity, AXPEntityModel } from '@acorex-platform/framework-shared/entity';
1
+ import { AXPEntityModel } from '@acorex-platform/framework-shared/entity';
2
2
 
3
3
  interface AXMLogMessage {
4
4
  type: 'log' | 'error' | 'warning';
@@ -93,16 +93,12 @@ declare const RootConfig: {
93
93
  };
94
94
  };
95
95
 
96
- declare function issueTypeEntityFactory(): Promise<AXPEntity | null>;
97
-
98
96
  interface AXMHelpDeskIssueTypeEntityModel extends AXPEntityModel<string> {
99
97
  name: string;
100
98
  title: string;
101
99
  description?: string;
102
100
  }
103
101
 
104
- declare function myReportedIssuesEntityFactory(): Promise<AXPEntity | null>;
105
-
106
102
  interface AXMHelpDeskMyReportedIssuesEntityModel extends AXPEntityModel<string> {
107
103
  id: string;
108
104
  user: any;
@@ -123,8 +119,6 @@ interface AXMHelpDeskMyReportedIssuesEntityModel extends AXPEntityModel<string>
123
119
  createdAt: Date;
124
120
  }
125
121
 
126
- declare function reportedIssuesEntityFactory(): Promise<AXPEntity | null>;
127
-
128
122
  interface AXMHelpDeskReportedIssuesEntityModel extends AXPEntityModel<string> {
129
123
  id: string;
130
124
  user: any;
@@ -145,5 +139,5 @@ interface AXMHelpDeskReportedIssuesEntityModel extends AXPEntityModel<string> {
145
139
  createdAt: Date;
146
140
  }
147
141
 
148
- export { AXMPermissionsKeys, AXPCollaborationPermissionKeys, AXPHelpDeskMenuKeys, RootConfig, issueTypeEntityFactory, myReportedIssuesEntityFactory, reportedIssuesEntityFactory };
142
+ export { AXMPermissionsKeys, AXPCollaborationPermissionKeys, AXPHelpDeskMenuKeys, RootConfig };
149
143
  export type { AXMHelpDeskIssueTypeEntityModel, AXMHelpDeskMyReportedIssuesEntityModel, AXMHelpDeskReportedIssuesEntityModel, AXMLogCaptureState, AXMLogMessage };
@@ -0,0 +1,12 @@
1
+ import * as _angular_core from '@angular/core';
2
+ export { helpDeskLocalEntityCatalog } from '@acorex-platform/module-help-desk-client/contracts/entity-catalog';
3
+
4
+ /**
5
+ * Registers help-desk layouts on the client from packaged factories.
6
+ * Each `import()` targets a secondary entry so unused entities stay out of the
7
+ * bundle. Do not add this to the demo app; demo continues to load layouts via
8
+ * `Domain:GetEntityLayout`.
9
+ */
10
+ declare function provideHelpDeskLocalEntities(): _angular_core.EnvironmentProviders;
11
+
12
+ export { provideHelpDeskLocalEntities };
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-module-help-desk-client-report-new-issue.component-C-vY_x_C.mjs","sources":["../../../../libs/modules/help-desk/client/src/lib/features/report-issue/components/report-new-issue/report-new-issue.component.ts","../../../../libs/modules/help-desk/client/src/lib/features/report-issue/components/report-new-issue/report-new-issue.component.html"],"sourcesContent":["import { AXPFileListItem, type AXPFileStorageInfo, type AXPWidgetNode, AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXMediaViewerData, AXMediaViewerModule } from '@acorex/components/media-viewer';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\n// import { RootConfig } from '@acorex-platform/module-issue-management-client/contracts';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\n\nimport { AXPFileStorageService } from '@acorex-platform/framework-client/common';\n\nimport { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, ViewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RootConfig } from '@acorex-platform/module-help-desk-client/contracts';\nimport { AXMHelpDeskReportedIssuesEntityModel } from '@acorex-platform/module-help-desk-client/contracts';\nimport { AXMLogCaptureService } from '../../../console-monitor';\nimport { AXMReportNewIssueViewModel } from '../../services/report-new-issue.viewmodel';\n@Component({\n selector: 'axm-report-new-issue',\n templateUrl: './report-new-issue.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n CommonModule,\n FormsModule,\n //\n AXTranslationModule,\n AXFormModule,\n AXLabelModule,\n AXTextBoxModule,\n AXSelectBoxModule,\n AXTextAreaModule,\n AXDecoratorModule,\n AXButtonModule,\n AXMediaViewerModule,\n AXPWidgetCoreModule,\n ],\n})\nexport class AXMReportNewIssueComponent extends AXBasePageComponent {\n private readonly entityService = inject(AXPEntityService);\n constructor() {\n super();\n }\n\n @ViewChild(AXFormComponent)\n private form!: AXFormComponent;\n protected vm = inject(AXMReportNewIssueViewModel);\n protected logCaptureService = inject(AXMLogCaptureService);\n protected sessionService = inject(AXPSessionService);\n protected issueTypeService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.issueType.name).data<any, any>();\n protected reportedIssuesService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.reportedIssues.name).data<any, any>();\n protected fileStorageService = inject(AXPFileStorageService);\n protected issueTypeDataSource = new AXDataSource({\n load: async (_) => {\n const issueTypeList = await this.issueTypeService.query();\n return issueTypeList;\n },\n pageSize: 20,\n });\n protected priorityList = [\n {\n title: 'Low',\n id: 1,\n },\n {\n title: 'Medium',\n id: 2,\n },\n {\n title: 'High',\n id: 3,\n },\n {\n title: 'Critical',\n id: 4,\n },\n ];\n attachNode: AXPWidgetNode = {\n type: AXPWidgetsCatalog.attachments,\n name: 'attach',\n path: 'attach',\n defaultValue: this.vm.media().map<AXPFileListItem>((el) => {\n // Handle url that can be string or () => Promise<string>\n const urlValue = typeof el.url === 'string' ? el.url : undefined;\n return {\n name: el.name ?? '',\n status: 'uploaded',\n id: el.id,\n size: parseInt(el.size ?? '0'),\n source: {\n kind: 'url',\n value: urlValue,\n },\n };\n }),\n options: {\n multiple: true,\n entity: `${RootConfig.module.name}.${RootConfig.entities.reportedIssues.name}`,\n record: this.vm.id(),\n },\n };\n context = {};\n\n protected async handleSubmitClick() {\n const formResult = await this.form.validate();\n if (formResult.result) {\n const params: AXMHelpDeskReportedIssuesEntityModel = {\n id: this.vm.id(),\n createdAt: new Date(),\n description: this.vm.data().description,\n errorLogs: this.logCaptureService.logs(),\n issueType: this.vm.data().issueType,\n priority: this.vm.data().priority,\n status: 'new',\n systemInfo: navigator.userAgent,\n title: this.vm.data().title,\n user: this.sessionService.user,\n };\n const reportedIssue = await this.reportedIssuesService.create(params);\n if (reportedIssue && reportedIssue.length) {\n const attachments: AXPFileListItem[] = [];\n for (const res of this.vm.media()) {\n const file = await this.fileStorageSaver(reportedIssue, res);\n console.log(file);\n attachments.push(file);\n\n // const fileStorageInfo: AXPFileStorageInfo = await this.fileStorageService.save({\n // file: await this.convertURLToFile(res.url, res.name as string),\n // refId: reportedIssue,\n // refType: `${RootConfig.module.name}.${RootConfig.entities.reportedIssues.name}`,\n // category: '',\n // name: res.name,\n // });\n // await this.fileStorageService.commit(fileStorageInfo.fileId);\n // attachments.push({\n // name: res.name ?? '',\n // status: 'uploaded',\n // id: fileStorageInfo.fileId,\n // size: parseInt(res.size ?? '0'),\n // source: {\n // kind: 'fileId',\n // value: fileStorageInfo.fileId,\n // },\n // });\n }\n await this.reportedIssuesService.update(reportedIssue, { attachments });\n this.vm.resetState();\n this.close({ insertResult: true });\n }\n }\n }\n\n private async fileStorageSaver(reportedIssueId: string, file: AXMediaViewerData): Promise<AXPFileListItem> {\n // Resolve url whether it's a string or a function that returns Promise<string>\n const resolvedUrl = typeof file.url === 'function' ? await file.url() : file.url;\n const fileStorageInfo: AXPFileStorageInfo = await this.fileStorageService.save({\n file: await this.convertURLToFile(resolvedUrl, file.name as string),\n refId: reportedIssueId,\n refType: `${RootConfig.module.name}.${RootConfig.entities.reportedIssues.name}`,\n category: '',\n name: file.name,\n });\n await this.fileStorageService.commit(fileStorageInfo.fileId);\n return {\n name: file.name ?? '',\n status: 'uploaded',\n id: fileStorageInfo.fileId,\n size: parseInt(file.size ?? '0'),\n source: {\n kind: 'fileId',\n value: fileStorageInfo.fileId,\n },\n };\n // attachments.push({\n // name: res.name ?? '',\n // status: 'uploaded',\n // id: fileStorageInfo.fileId,\n // size: parseInt(res.size ?? '0'),\n // source: {\n // kind: 'fileId',\n // value: fileStorageInfo.fileId,\n // },\n // });\n // await this.reportedIssuesService.updateOne(reportedIssueId, {\n // attachments: [\n // ...(this.vm.media() ?? []),\n // {\n // name: file.name ?? '',\n // status: 'uploaded',\n // id: fileStorageInfo.fileId,\n // size: parseInt(file.size ?? '0'),\n // source: {\n // kind: 'fileId',\n // value: fileStorageInfo.fileId,\n // },\n // },\n // ],\n // });\n }\n\n private async convertURLToFile(url: string, fileName: string): Promise<File> {\n const response = await fetch(url);\n const blob = await response.blob();\n const file = new File([blob], fileName);\n return file;\n }\n\n protected async handleStartRecordingClick() {\n await this.vm.startCapturing();\n this.close();\n }\n\n protected async onDeleteMediaClick(index: number) {\n this.vm.deleteCapturedItem(index);\n }\n\n protected async onCancelClick() {\n this.vm.resetState();\n this.close();\n }\n\n handleIssueTypeChange(event: any) {\n this.vm.data().issueType = event.component.selectedItems[0];\n }\n\n handlePriorityChange(event: any) {\n this.vm.data().priority = event.component.selectedItems[0];\n }\n\n override ngOnDestroy(): void {\n if (this.vm.status() !== 'recording') {\n this.vm.resetState();\n }\n }\n}\n","<div class=\"p-6\">\n <ax-form #form>\n <div class=\"grid gap-2\">\n <ax-form-field>\n <ax-label>{{ '@help-desk:report-new-issue.components.report-new-issue-form.fields.title' | translate | async }}</ax-label>\n <ax-text-box [(ngModel)]=\"vm.data().title\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@help-desk:report-new-issue.components.report-new-issue-form.fields.issue-type' | translate | async }}</ax-label>\n <ax-select-box\n valueField=\"id\"\n textField=\"title\"\n [dataSource]=\"issueTypeDataSource\"\n [value]=\"vm.data().issueType\"\n (onValueChanged)=\"handleIssueTypeChange($event)\"\n ></ax-select-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@help-desk:report-new-issue.components.report-new-issue-form.fields.priority' | translate | async }}</ax-label>\n <ax-select-box\n valueField=\"id\"\n textField=\"title\"\n [dataSource]=\"priorityList\"\n [value]=\"vm.data().priority\"\n (onValueChanged)=\"handlePriorityChange($event)\"\n ></ax-select-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@help-desk:report-new-issue.components.report-new-issue-form.fields.description' | translate | async }}</ax-label>\n <ax-text-area [(ngModel)]=\"vm.data().description\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-area>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@help-desk:report-new-issue.components.report-new-issue-form.fields.attachments' | translate | async }}</ax-label>\n <axp-widgets-container class=\"flex flex-col gap-2 p-4\" [context]=\"context\">\n <ng-container axp-widget-renderer [node]=\"attachNode\" [mode]=\"'edit'\"> </ng-container>\n </axp-widgets-container>\n </ax-form-field>\n </div>\n </ax-form>\n <!-- @if(vm.media().length > 0){\n <div class=\"py-4\">\n <ax-content>\n <ax-media-viewer-container #mediaViewer [dataArray]=\"vm.media()\" class=\"block\">\n <ax-header>\n <ax-file-info></ax-file-info>\n <ax-suffix>\n <ax-button class=\"ax-sm\" color=\"danger\" (onClick)=\"onDeleteMediaClick(mediaViewer.getActiveIndex())\">\n <ax-icon class=\"icon icon-trash\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-header>\n <ax-prefix>\n <ax-button (click)=\"mediaViewer.next()\">\n <ax-icon class=\"icon icon-chevron-right\"> </ax-icon>\n </ax-button>\n </ax-prefix>\n <ax-suffix>\n <ax-button (click)=\"mediaViewer.prev()\">\n <ax-icon class=\"icon icon-chevron-left\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-media-viewer-container>\n </ax-content>\n </div>\n } -->\n <!-- <div>\n <ax-label>{{ t('report-new-issue.attach', { scope: 'help-desk' }) | async }}</ax-label>\n <div\n class=\"flex flex-col items-center justify-center border border-dashed border-secondary-500 rounded-lg p-6\"\n >\n <div class=\"rounded-full bg-surface px-4 py-3\">\n <ax-icon class=\"fa-solid fa-paperclip text-on-surface text-xl\"></ax-icon>\n </div>\n <p class=\"text-lg text-on-surface\">\n {{ t('report-new-issue.attach-box-description', { scope: 'help-desk' }) | async }}\n </p>\n <ax-button\n class=\"w-fit mt-6\"\n [text]=\"t('report-new-issue.start-capture-screen', { scope: 'help-desk' }) | async\"\n color=\"secondary\"\n (onClick)=\"handleStartRecordingClick()\"\n ></ax-button>\n </div>\n </div> -->\n</div>\n<ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"default\"\n [text]=\"'@general:actions.cancel.title' | translate | async\"\n (onClick)=\"onCancelClick()\"\n ></ax-button>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'@general:actions.save.title' | translate | async\"\n (onClick)=\"handleSubmitClick()\"\n ></ax-button>\n </ax-suffix>\n</ax-footer>\n"],"names":["i7","i8","i10"],"mappings":"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"}