@meshmakers/shared-ui-legacy 3.4.150 → 3.4.160
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.
|
@@ -77,8 +77,8 @@ class ConfirmationDialogComponent {
|
|
|
77
77
|
onButton3() {
|
|
78
78
|
this.dialogRef.close(new ConfirmationWindowResult(this.button3Result));
|
|
79
79
|
}
|
|
80
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
81
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ConfirmationDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ConfirmationDialogComponent, isStandalone: true, selector: "mm-confirmation-dialog", ngImport: i0, template: `
|
|
82
82
|
<h2 mat-dialog-title>{{ data.title }}</h2>
|
|
83
83
|
<mat-dialog-content>{{ data.message }}</mat-dialog-content>
|
|
84
84
|
<mat-dialog-actions align="end">
|
|
@@ -92,7 +92,7 @@ class ConfirmationDialogComponent {
|
|
|
92
92
|
</mat-dialog-actions>
|
|
93
93
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] });
|
|
94
94
|
}
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
|
|
96
96
|
type: Component,
|
|
97
97
|
args: [{
|
|
98
98
|
selector: 'mm-confirmation-dialog',
|
|
@@ -150,10 +150,10 @@ class ConfirmationService {
|
|
|
150
150
|
});
|
|
151
151
|
return firstValueFrom(dialogRef.afterClosed());
|
|
152
152
|
}
|
|
153
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
154
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
154
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ConfirmationService });
|
|
155
155
|
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ConfirmationService, decorators: [{
|
|
157
157
|
type: Injectable
|
|
158
158
|
}] });
|
|
159
159
|
|
|
@@ -173,11 +173,11 @@ class MmSharedUiModule {
|
|
|
173
173
|
]
|
|
174
174
|
};
|
|
175
175
|
}
|
|
176
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
177
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
178
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
176
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MmSharedUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
177
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: MmSharedUiModule });
|
|
178
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MmSharedUiModule });
|
|
179
179
|
}
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MmSharedUiModule, decorators: [{
|
|
181
181
|
type: NgModule,
|
|
182
182
|
args: [{
|
|
183
183
|
declarations: [],
|
|
@@ -314,8 +314,8 @@ class ProgressWindowComponent {
|
|
|
314
314
|
}
|
|
315
315
|
this.dialogRef.close();
|
|
316
316
|
}
|
|
317
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
318
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
317
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ProgressWindowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
318
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ProgressWindowComponent, isStandalone: true, selector: "mm-progress-window", ngImport: i0, template: `
|
|
319
319
|
<mat-dialog-content>
|
|
320
320
|
<div class="progress-section">
|
|
321
321
|
@if (isDeterminate) {
|
|
@@ -335,7 +335,7 @@ class ProgressWindowComponent {
|
|
|
335
335
|
</mat-dialog-actions>
|
|
336
336
|
`, isInline: true, styles: [".progress-section{display:flex;flex-direction:column;gap:12px;min-width:350px}.status-text{margin:0;font-size:14px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] });
|
|
337
337
|
}
|
|
338
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
338
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ProgressWindowComponent, decorators: [{
|
|
339
339
|
type: Component,
|
|
340
340
|
args: [{ selector: 'mm-progress-window', standalone: true, imports: [MatDialogModule, MatButtonModule, MatProgressBarModule], template: `
|
|
341
341
|
<mat-dialog-content>
|
|
@@ -405,10 +405,10 @@ class ProgressWindowService {
|
|
|
405
405
|
...options
|
|
406
406
|
});
|
|
407
407
|
}
|
|
408
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
409
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
408
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ProgressWindowService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
409
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ProgressWindowService });
|
|
410
410
|
}
|
|
411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
411
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ProgressWindowService, decorators: [{
|
|
412
412
|
type: Injectable
|
|
413
413
|
}] });
|
|
414
414
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meshmakers-shared-ui-legacy.mjs","sources":["../../../../projects/meshmakers/shared-ui-legacy/src/lib/confirmation/confirmation.model.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/confirmation/confirmation-dialog.component.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/confirmation/confirmation.service.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/shared-ui-module/mm-shared-ui-module.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/abstract-details/abstract-details-component.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/common-validators/common-validators.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/progress-window/progress-value.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/progress-window/progress-window.component.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/progress-window/progress-window.service.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/import-strategy/import-strategy-dto.ts","../../../../projects/meshmakers/shared-ui-legacy/src/public-api.ts","../../../../projects/meshmakers/shared-ui-legacy/src/meshmakers-shared-ui-legacy.ts"],"sourcesContent":["export enum ButtonTypes {\n Ok,\n Cancel,\n Yes,\n No\n}\n\nexport enum DialogType {\n YesNo = 0,\n YesNoCancel = 1,\n OkCancel = 2,\n Ok = 3\n}\n\nexport interface ConfirmationWindowData {\n title: string;\n message: string;\n dialogType: DialogType;\n}\n\nexport class ConfirmationWindowResult {\n result: ButtonTypes;\n\n constructor(result: ButtonTypes) {\n this.result = result;\n }\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ButtonTypes, ConfirmationWindowData, ConfirmationWindowResult, DialogType } from './confirmation.model';\n\n@Component({\n selector: 'mm-confirmation-dialog',\n standalone: true,\n imports: [MatDialogModule, MatButtonModule],\n template: `\n <h2 mat-dialog-title>{{ data.title }}</h2>\n <mat-dialog-content>{{ data.message }}</mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button mat-flat-button color=\"primary\" (click)=\"onButton1()\">{{ button1Text }}</button>\n @if (button2Text) {\n <button mat-stroked-button (click)=\"onButton2()\">{{ button2Text }}</button>\n }\n @if (button3Text) {\n <button mat-stroked-button (click)=\"onButton3()\">{{ button3Text }}</button>\n }\n </mat-dialog-actions>\n `\n})\nexport class ConfirmationDialogComponent implements OnInit {\n private readonly dialogRef = inject<MatDialogRef<ConfirmationDialogComponent>>(MatDialogRef);\n readonly data = inject<ConfirmationWindowData>(MAT_DIALOG_DATA);\n\n button1Text = 'OK';\n button2Text: string | null = null;\n button3Text: string | null = null;\n\n private button1Result: ButtonTypes = ButtonTypes.Ok;\n private button2Result: ButtonTypes | null = null;\n private button3Result: ButtonTypes | null = null;\n\n ngOnInit(): void {\n switch (this.data.dialogType) {\n case DialogType.OkCancel:\n this.button1Text = 'OK';\n this.button1Result = ButtonTypes.Ok;\n this.button2Text = 'Cancel';\n this.button2Result = ButtonTypes.Cancel;\n break;\n case DialogType.YesNoCancel:\n this.button1Text = 'Yes';\n this.button1Result = ButtonTypes.Yes;\n this.button2Text = 'No';\n this.button2Result = ButtonTypes.No;\n this.button3Text = 'Cancel';\n this.button3Result = ButtonTypes.Cancel;\n break;\n case DialogType.Ok:\n this.button1Text = 'OK';\n this.button1Result = ButtonTypes.Ok;\n break;\n default: // YesNo\n this.button1Text = 'Yes';\n this.button1Result = ButtonTypes.Yes;\n this.button2Text = 'No';\n this.button2Result = ButtonTypes.No;\n break;\n }\n }\n\n onButton1(): void {\n this.dialogRef.close(new ConfirmationWindowResult(this.button1Result));\n }\n\n onButton2(): void {\n this.dialogRef.close(new ConfirmationWindowResult(this.button2Result!));\n }\n\n onButton3(): void {\n this.dialogRef.close(new ConfirmationWindowResult(this.button3Result!));\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { firstValueFrom } from 'rxjs';\nimport { ConfirmationDialogComponent } from './confirmation-dialog.component';\nimport {\n ButtonTypes,\n ConfirmationWindowData,\n ConfirmationWindowResult,\n DialogType,\n} from './confirmation.model';\n\n@Injectable()\nexport class ConfirmationService {\n private readonly dialog = inject(MatDialog);\n\n public async showYesNoConfirmationDialog(title: string, message: string): Promise<boolean> {\n const result = await this.openDialog(title, message, DialogType.YesNo);\n if (result instanceof ConfirmationWindowResult) {\n return result.result === ButtonTypes.Yes;\n }\n return false;\n }\n\n public async showYesNoCancelConfirmationDialog(title: string, message: string): Promise<ConfirmationWindowResult | undefined> {\n const result = await this.openDialog(title, message, DialogType.YesNoCancel);\n if (result instanceof ConfirmationWindowResult) {\n return result;\n }\n return undefined;\n }\n\n public async showOkCancelConfirmationDialog(title: string, message: string): Promise<boolean> {\n const result = await this.openDialog(title, message, DialogType.OkCancel);\n if (result instanceof ConfirmationWindowResult) {\n return result.result === ButtonTypes.Ok;\n }\n return false;\n }\n\n public async showOkDialog(title: string, message: string): Promise<boolean> {\n const result = await this.openDialog(title, message, DialogType.Ok);\n if (result instanceof ConfirmationWindowResult) {\n return result.result === ButtonTypes.Ok;\n }\n return false;\n }\n\n private async openDialog(title: string, message: string, dialogType: DialogType): Promise<ConfirmationWindowResult | undefined> {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n data: { title, message, dialogType } as ConfirmationWindowData,\n });\n\n return firstValueFrom(dialogRef.afterClosed());\n }\n}\n","/**\n * Backward-compatible MmSharedUiModule for legacy apps that use\n * importProvidersFrom(MmSharedUiModule.forRoot()).\n *\n * Provides a Material-based ConfirmationService as a drop-in replacement\n * for the Kendo-based version from @meshmakers/shared-ui.\n */\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ConfirmationService } from '../confirmation/confirmation.service';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: []\n})\nexport class MmSharedUiModule {\n static forRoot(): ModuleWithProviders<MmSharedUiModule> {\n return {\n ngModule: MmSharedUiModule,\n providers: [\n ConfirmationService,\n ]\n };\n }\n}\n","/**\n * Backward-compatible AbstractDetailsComponent for legacy apps.\n */\nimport { FormGroup } from '@angular/forms';\nimport { IsoDateTime } from '@meshmakers/shared-services';\n\nexport abstract class AbstractDetailsComponent<TEntity> {\n private _loading: boolean;\n private readonly _ownerForm: FormGroup;\n private _entity: TEntity | null;\n\n protected constructor(formGroup: FormGroup) {\n this._loading = true;\n this._entity = null;\n this._ownerForm = formGroup;\n }\n\n public get loading(): boolean {\n return this._loading;\n }\n\n public set loading(value: boolean) {\n this._loading = value;\n }\n\n public get entity(): TEntity | null {\n return this._entity;\n }\n\n public set entity(value: TEntity | null) {\n this._entity = value;\n }\n\n public get ownerForm(): FormGroup {\n return this._ownerForm;\n }\n\n public get isLoaded(): boolean {\n return this._entity !== null;\n }\n\n public hasError = (controlName: string, errorName: string): boolean => {\n return this.ownerForm?.controls[controlName].hasError(errorName);\n };\n\n public hasFormError = (errorName: string): boolean => {\n return this.ownerForm?.hasError(errorName);\n };\n\n public updateDateTime(controlName: string): void {\n this.ownerForm?.get(controlName)?.setValue(IsoDateTime.utcToLocalDateTimeIso(IsoDateTime.currentUtcDateTimeIso()));\n }\n\n public copyInputMessage(inputElement: HTMLInputElement): void {\n inputElement.select();\n document.execCommand('copy');\n inputElement.setSelectionRange(0, 0);\n }\n\n protected onProgressStarting(): void {\n this._loading = true;\n this.ownerForm?.disable();\n this.ownerForm?.updateValueAndValidity();\n }\n\n protected onProgressCompleted(): void {\n this.ownerForm?.enable();\n this._loading = false;\n }\n}\n","/**\n * Backward-compatible CommonValidators for legacy apps.\n */\nimport { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\n\nexport type CompareValueFn<TValue> = (value: TValue) => boolean;\n\nexport class CommonValidators {\n public static phoneNumber(): ValidatorFn {\n return Validators.pattern('^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\\\s\\\\./0-9]*$');\n }\n\n public static httpUri(): ValidatorFn {\n return Validators.pattern(\n '^(http:\\\\/\\\\/|https:\\\\/\\\\/)([a-zA-Z0-9-_]+\\\\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+(\\\\.[a-zA-Z]{2,11}?)*(:[0-9]{2,5}){0,1}\\\\/{0,1}$'\n );\n }\n\n public static ensureSameValue(sourceControlName: string): ValidatorFn {\n return (control: AbstractControl) => {\n const value = control.value;\n return value === control.parent?.get(sourceControlName)?.value ? null : { notSame: true };\n };\n }\n\n public static conditionalRequired<TCompareValue>(\n sourceControlName: string,\n sourceValueCompareExpression: CompareValueFn<TCompareValue>\n ): ValidatorFn {\n return (control: AbstractControl) => {\n if (control.parent != null && sourceValueCompareExpression((control.parent.get(sourceControlName)?.value as TCompareValue))) {\n const val = control.value;\n const isEmpty = val == null || (typeof val === 'string' && val.length === 0) || (Array.isArray(val) && val.length === 0);\n return isEmpty ? { required: true } : null;\n }\n return null;\n };\n }\n\n public static dependentControls(controlNames: string[]): ValidatorFn {\n return (control: AbstractControl) => {\n controlNames.forEach((controlName) => {\n control.parent?.get(controlName)?.updateValueAndValidity();\n });\n return null;\n };\n }\n}\n","export class ProgressValue {\n statusText: string | null;\n progressValue: number;\n\n constructor() {\n this.statusText = null;\n this.progressValue = 0;\n }\n}\n","import { ChangeDetectorRef, Component, inject, OnDestroy, AfterViewInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { Observable, Subscription } from 'rxjs';\nimport { ProgressValue } from './progress-value';\n\nexport interface ProgressWindowData {\n isDeterminate: boolean;\n progress: Observable<ProgressValue>;\n isCancelOperationAvailable: boolean;\n cancelOperation: () => void;\n}\n\n@Component({\n selector: 'mm-progress-window',\n standalone: true,\n imports: [MatDialogModule, MatButtonModule, MatProgressBarModule],\n template: `\n <mat-dialog-content>\n <div class=\"progress-section\">\n @if (isDeterminate) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progressPercent\"></mat-progress-bar>\n } @else {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n @if (statusText) {\n <p class=\"status-text\">{{ statusText }}</p>\n }\n </div>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n @if (isCancelOperationAvailable) {\n <button mat-stroked-button (click)=\"onCancelClick()\">Cancel</button>\n }\n </mat-dialog-actions>\n `,\n styles: [`\n .progress-section {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-width: 350px;\n }\n .status-text {\n margin: 0;\n font-size: 14px;\n text-align: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n `]\n})\nexport class ProgressWindowComponent implements AfterViewInit, OnDestroy {\n private readonly dialogRef = inject<MatDialogRef<ProgressWindowComponent>>(MatDialogRef);\n private readonly data = inject<ProgressWindowData>(MAT_DIALOG_DATA);\n private readonly cdr = inject(ChangeDetectorRef);\n private progressSubscription?: Subscription;\n\n isDeterminate: boolean;\n isCancelOperationAvailable: boolean;\n statusText: string | null = null;\n progressPercent = 0;\n\n constructor() {\n this.isDeterminate = this.data.isDeterminate;\n this.isCancelOperationAvailable = this.data.isCancelOperationAvailable;\n }\n\n ngAfterViewInit(): void {\n if (this.data.progress) {\n this.progressSubscription = this.data.progress.subscribe((value: ProgressValue) => {\n this.statusText = value.statusText;\n this.progressPercent = value.progressValue;\n this.cdr.detectChanges();\n });\n }\n }\n\n ngOnDestroy(): void {\n this.progressSubscription?.unsubscribe();\n }\n\n onCancelClick(): void {\n if (this.data.cancelOperation) {\n this.data.cancelOperation();\n }\n this.dialogRef.close();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { ProgressValue } from './progress-value';\nimport { ProgressWindowComponent, ProgressWindowData } from './progress-window.component';\n\n/**\n * Reference returned by showProgress methods.\n * Provides a close() method compatible with the Kendo DialogRef API.\n */\nexport class ProgressDialogRef {\n constructor(private readonly dialogRef: MatDialogRef<ProgressWindowComponent>) {}\n\n close(): void {\n this.dialogRef.close();\n }\n}\n\nexport interface ProgressWindowConfig {\n title: string;\n progress: Observable<ProgressValue>;\n isDeterminate?: boolean;\n isCancelOperationAvailable?: boolean;\n cancelOperation?: () => void;\n width?: number;\n height?: number | string;\n}\n\nexport interface ProgressWindowOptions {\n isCancelOperationAvailable?: boolean;\n cancelOperation?: () => void;\n width?: number;\n height?: number | string;\n}\n\n@Injectable()\nexport class ProgressWindowService {\n private readonly dialog = inject(MatDialog);\n\n showProgress(config: ProgressWindowConfig): ProgressDialogRef {\n const dialogRef = this.dialog.open(ProgressWindowComponent, {\n data: {\n isDeterminate: config.isDeterminate !== false,\n progress: config.progress,\n isCancelOperationAvailable: config.isCancelOperationAvailable || false,\n cancelOperation: config.cancelOperation || (() => { /* noop */ }),\n } as ProgressWindowData,\n width: config.width ? `${config.width}px` : '450px',\n disableClose: true,\n });\n\n if (config.title) {\n // MatDialog doesn't have a built-in title on the ref, but we set it via the component\n }\n\n return new ProgressDialogRef(dialogRef);\n }\n\n showDeterminateProgress(\n title: string,\n progress: Observable<ProgressValue>,\n options?: Partial<ProgressWindowOptions>\n ): ProgressDialogRef {\n return this.showProgress({\n title,\n isDeterminate: true,\n progress,\n ...options\n });\n }\n\n showIndeterminateProgress(\n title: string,\n progress: Observable<ProgressValue>,\n options?: Partial<ProgressWindowOptions>\n ): ProgressDialogRef {\n return this.showProgress({\n title,\n isDeterminate: false,\n progress,\n ...options\n });\n }\n}\n","export enum ImportStrategyDto {\n InsertOnly = 0,\n Upsert = 1\n}\n","/*\n * Public API Surface of shared-ui-legacy\n */\n\nexport * from './lib/shared-ui-module';\nexport * from './lib/abstract-details';\nexport * from './lib/common-validators';\nexport * from './lib/confirmation';\nexport * from './lib/progress-window';\nexport * from './lib/import-strategy';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"meshmakers-shared-ui-legacy.mjs","sources":["../../../../projects/meshmakers/shared-ui-legacy/src/lib/confirmation/confirmation.model.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/confirmation/confirmation-dialog.component.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/confirmation/confirmation.service.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/shared-ui-module/mm-shared-ui-module.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/abstract-details/abstract-details-component.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/common-validators/common-validators.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/progress-window/progress-value.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/progress-window/progress-window.component.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/progress-window/progress-window.service.ts","../../../../projects/meshmakers/shared-ui-legacy/src/lib/import-strategy/import-strategy-dto.ts","../../../../projects/meshmakers/shared-ui-legacy/src/public-api.ts","../../../../projects/meshmakers/shared-ui-legacy/src/meshmakers-shared-ui-legacy.ts"],"sourcesContent":["export enum ButtonTypes {\n Ok,\n Cancel,\n Yes,\n No\n}\n\nexport enum DialogType {\n YesNo = 0,\n YesNoCancel = 1,\n OkCancel = 2,\n Ok = 3\n}\n\nexport interface ConfirmationWindowData {\n title: string;\n message: string;\n dialogType: DialogType;\n}\n\nexport class ConfirmationWindowResult {\n result: ButtonTypes;\n\n constructor(result: ButtonTypes) {\n this.result = result;\n }\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ButtonTypes, ConfirmationWindowData, ConfirmationWindowResult, DialogType } from './confirmation.model';\n\n@Component({\n selector: 'mm-confirmation-dialog',\n standalone: true,\n imports: [MatDialogModule, MatButtonModule],\n template: `\n <h2 mat-dialog-title>{{ data.title }}</h2>\n <mat-dialog-content>{{ data.message }}</mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n <button mat-flat-button color=\"primary\" (click)=\"onButton1()\">{{ button1Text }}</button>\n @if (button2Text) {\n <button mat-stroked-button (click)=\"onButton2()\">{{ button2Text }}</button>\n }\n @if (button3Text) {\n <button mat-stroked-button (click)=\"onButton3()\">{{ button3Text }}</button>\n }\n </mat-dialog-actions>\n `\n})\nexport class ConfirmationDialogComponent implements OnInit {\n private readonly dialogRef = inject<MatDialogRef<ConfirmationDialogComponent>>(MatDialogRef);\n readonly data = inject<ConfirmationWindowData>(MAT_DIALOG_DATA);\n\n button1Text = 'OK';\n button2Text: string | null = null;\n button3Text: string | null = null;\n\n private button1Result: ButtonTypes = ButtonTypes.Ok;\n private button2Result: ButtonTypes | null = null;\n private button3Result: ButtonTypes | null = null;\n\n ngOnInit(): void {\n switch (this.data.dialogType) {\n case DialogType.OkCancel:\n this.button1Text = 'OK';\n this.button1Result = ButtonTypes.Ok;\n this.button2Text = 'Cancel';\n this.button2Result = ButtonTypes.Cancel;\n break;\n case DialogType.YesNoCancel:\n this.button1Text = 'Yes';\n this.button1Result = ButtonTypes.Yes;\n this.button2Text = 'No';\n this.button2Result = ButtonTypes.No;\n this.button3Text = 'Cancel';\n this.button3Result = ButtonTypes.Cancel;\n break;\n case DialogType.Ok:\n this.button1Text = 'OK';\n this.button1Result = ButtonTypes.Ok;\n break;\n default: // YesNo\n this.button1Text = 'Yes';\n this.button1Result = ButtonTypes.Yes;\n this.button2Text = 'No';\n this.button2Result = ButtonTypes.No;\n break;\n }\n }\n\n onButton1(): void {\n this.dialogRef.close(new ConfirmationWindowResult(this.button1Result));\n }\n\n onButton2(): void {\n this.dialogRef.close(new ConfirmationWindowResult(this.button2Result!));\n }\n\n onButton3(): void {\n this.dialogRef.close(new ConfirmationWindowResult(this.button3Result!));\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { firstValueFrom } from 'rxjs';\nimport { ConfirmationDialogComponent } from './confirmation-dialog.component';\nimport {\n ButtonTypes,\n ConfirmationWindowData,\n ConfirmationWindowResult,\n DialogType,\n} from './confirmation.model';\n\n@Injectable()\nexport class ConfirmationService {\n private readonly dialog = inject(MatDialog);\n\n public async showYesNoConfirmationDialog(title: string, message: string): Promise<boolean> {\n const result = await this.openDialog(title, message, DialogType.YesNo);\n if (result instanceof ConfirmationWindowResult) {\n return result.result === ButtonTypes.Yes;\n }\n return false;\n }\n\n public async showYesNoCancelConfirmationDialog(title: string, message: string): Promise<ConfirmationWindowResult | undefined> {\n const result = await this.openDialog(title, message, DialogType.YesNoCancel);\n if (result instanceof ConfirmationWindowResult) {\n return result;\n }\n return undefined;\n }\n\n public async showOkCancelConfirmationDialog(title: string, message: string): Promise<boolean> {\n const result = await this.openDialog(title, message, DialogType.OkCancel);\n if (result instanceof ConfirmationWindowResult) {\n return result.result === ButtonTypes.Ok;\n }\n return false;\n }\n\n public async showOkDialog(title: string, message: string): Promise<boolean> {\n const result = await this.openDialog(title, message, DialogType.Ok);\n if (result instanceof ConfirmationWindowResult) {\n return result.result === ButtonTypes.Ok;\n }\n return false;\n }\n\n private async openDialog(title: string, message: string, dialogType: DialogType): Promise<ConfirmationWindowResult | undefined> {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n data: { title, message, dialogType } as ConfirmationWindowData,\n });\n\n return firstValueFrom(dialogRef.afterClosed());\n }\n}\n","/**\n * Backward-compatible MmSharedUiModule for legacy apps that use\n * importProvidersFrom(MmSharedUiModule.forRoot()).\n *\n * Provides a Material-based ConfirmationService as a drop-in replacement\n * for the Kendo-based version from @meshmakers/shared-ui.\n */\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ConfirmationService } from '../confirmation/confirmation.service';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: []\n})\nexport class MmSharedUiModule {\n static forRoot(): ModuleWithProviders<MmSharedUiModule> {\n return {\n ngModule: MmSharedUiModule,\n providers: [\n ConfirmationService,\n ]\n };\n }\n}\n","/**\n * Backward-compatible AbstractDetailsComponent for legacy apps.\n */\nimport { FormGroup } from '@angular/forms';\nimport { IsoDateTime } from '@meshmakers/shared-services';\n\nexport abstract class AbstractDetailsComponent<TEntity> {\n private _loading: boolean;\n private readonly _ownerForm: FormGroup;\n private _entity: TEntity | null;\n\n protected constructor(formGroup: FormGroup) {\n this._loading = true;\n this._entity = null;\n this._ownerForm = formGroup;\n }\n\n public get loading(): boolean {\n return this._loading;\n }\n\n public set loading(value: boolean) {\n this._loading = value;\n }\n\n public get entity(): TEntity | null {\n return this._entity;\n }\n\n public set entity(value: TEntity | null) {\n this._entity = value;\n }\n\n public get ownerForm(): FormGroup {\n return this._ownerForm;\n }\n\n public get isLoaded(): boolean {\n return this._entity !== null;\n }\n\n public hasError = (controlName: string, errorName: string): boolean => {\n return this.ownerForm?.controls[controlName].hasError(errorName);\n };\n\n public hasFormError = (errorName: string): boolean => {\n return this.ownerForm?.hasError(errorName);\n };\n\n public updateDateTime(controlName: string): void {\n this.ownerForm?.get(controlName)?.setValue(IsoDateTime.utcToLocalDateTimeIso(IsoDateTime.currentUtcDateTimeIso()));\n }\n\n public copyInputMessage(inputElement: HTMLInputElement): void {\n inputElement.select();\n document.execCommand('copy');\n inputElement.setSelectionRange(0, 0);\n }\n\n protected onProgressStarting(): void {\n this._loading = true;\n this.ownerForm?.disable();\n this.ownerForm?.updateValueAndValidity();\n }\n\n protected onProgressCompleted(): void {\n this.ownerForm?.enable();\n this._loading = false;\n }\n}\n","/**\n * Backward-compatible CommonValidators for legacy apps.\n */\nimport { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\n\nexport type CompareValueFn<TValue> = (value: TValue) => boolean;\n\nexport class CommonValidators {\n public static phoneNumber(): ValidatorFn {\n return Validators.pattern('^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\\\s\\\\./0-9]*$');\n }\n\n public static httpUri(): ValidatorFn {\n return Validators.pattern(\n '^(http:\\\\/\\\\/|https:\\\\/\\\\/)([a-zA-Z0-9-_]+\\\\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+(\\\\.[a-zA-Z]{2,11}?)*(:[0-9]{2,5}){0,1}\\\\/{0,1}$'\n );\n }\n\n public static ensureSameValue(sourceControlName: string): ValidatorFn {\n return (control: AbstractControl) => {\n const value = control.value;\n return value === control.parent?.get(sourceControlName)?.value ? null : { notSame: true };\n };\n }\n\n public static conditionalRequired<TCompareValue>(\n sourceControlName: string,\n sourceValueCompareExpression: CompareValueFn<TCompareValue>\n ): ValidatorFn {\n return (control: AbstractControl) => {\n if (control.parent != null && sourceValueCompareExpression((control.parent.get(sourceControlName)?.value as TCompareValue))) {\n const val = control.value;\n const isEmpty = val == null || (typeof val === 'string' && val.length === 0) || (Array.isArray(val) && val.length === 0);\n return isEmpty ? { required: true } : null;\n }\n return null;\n };\n }\n\n public static dependentControls(controlNames: string[]): ValidatorFn {\n return (control: AbstractControl) => {\n controlNames.forEach((controlName) => {\n control.parent?.get(controlName)?.updateValueAndValidity();\n });\n return null;\n };\n }\n}\n","export class ProgressValue {\n statusText: string | null;\n progressValue: number;\n\n constructor() {\n this.statusText = null;\n this.progressValue = 0;\n }\n}\n","import { ChangeDetectorRef, Component, inject, OnDestroy, AfterViewInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { Observable, Subscription } from 'rxjs';\nimport { ProgressValue } from './progress-value';\n\nexport interface ProgressWindowData {\n isDeterminate: boolean;\n progress: Observable<ProgressValue>;\n isCancelOperationAvailable: boolean;\n cancelOperation: () => void;\n}\n\n@Component({\n selector: 'mm-progress-window',\n standalone: true,\n imports: [MatDialogModule, MatButtonModule, MatProgressBarModule],\n template: `\n <mat-dialog-content>\n <div class=\"progress-section\">\n @if (isDeterminate) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progressPercent\"></mat-progress-bar>\n } @else {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n @if (statusText) {\n <p class=\"status-text\">{{ statusText }}</p>\n }\n </div>\n </mat-dialog-content>\n <mat-dialog-actions align=\"end\">\n @if (isCancelOperationAvailable) {\n <button mat-stroked-button (click)=\"onCancelClick()\">Cancel</button>\n }\n </mat-dialog-actions>\n `,\n styles: [`\n .progress-section {\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-width: 350px;\n }\n .status-text {\n margin: 0;\n font-size: 14px;\n text-align: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n `]\n})\nexport class ProgressWindowComponent implements AfterViewInit, OnDestroy {\n private readonly dialogRef = inject<MatDialogRef<ProgressWindowComponent>>(MatDialogRef);\n private readonly data = inject<ProgressWindowData>(MAT_DIALOG_DATA);\n private readonly cdr = inject(ChangeDetectorRef);\n private progressSubscription?: Subscription;\n\n isDeterminate: boolean;\n isCancelOperationAvailable: boolean;\n statusText: string | null = null;\n progressPercent = 0;\n\n constructor() {\n this.isDeterminate = this.data.isDeterminate;\n this.isCancelOperationAvailable = this.data.isCancelOperationAvailable;\n }\n\n ngAfterViewInit(): void {\n if (this.data.progress) {\n this.progressSubscription = this.data.progress.subscribe((value: ProgressValue) => {\n this.statusText = value.statusText;\n this.progressPercent = value.progressValue;\n this.cdr.detectChanges();\n });\n }\n }\n\n ngOnDestroy(): void {\n this.progressSubscription?.unsubscribe();\n }\n\n onCancelClick(): void {\n if (this.data.cancelOperation) {\n this.data.cancelOperation();\n }\n this.dialogRef.close();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { ProgressValue } from './progress-value';\nimport { ProgressWindowComponent, ProgressWindowData } from './progress-window.component';\n\n/**\n * Reference returned by showProgress methods.\n * Provides a close() method compatible with the Kendo DialogRef API.\n */\nexport class ProgressDialogRef {\n constructor(private readonly dialogRef: MatDialogRef<ProgressWindowComponent>) {}\n\n close(): void {\n this.dialogRef.close();\n }\n}\n\nexport interface ProgressWindowConfig {\n title: string;\n progress: Observable<ProgressValue>;\n isDeterminate?: boolean;\n isCancelOperationAvailable?: boolean;\n cancelOperation?: () => void;\n width?: number;\n height?: number | string;\n}\n\nexport interface ProgressWindowOptions {\n isCancelOperationAvailable?: boolean;\n cancelOperation?: () => void;\n width?: number;\n height?: number | string;\n}\n\n@Injectable()\nexport class ProgressWindowService {\n private readonly dialog = inject(MatDialog);\n\n showProgress(config: ProgressWindowConfig): ProgressDialogRef {\n const dialogRef = this.dialog.open(ProgressWindowComponent, {\n data: {\n isDeterminate: config.isDeterminate !== false,\n progress: config.progress,\n isCancelOperationAvailable: config.isCancelOperationAvailable || false,\n cancelOperation: config.cancelOperation || (() => { /* noop */ }),\n } as ProgressWindowData,\n width: config.width ? `${config.width}px` : '450px',\n disableClose: true,\n });\n\n if (config.title) {\n // MatDialog doesn't have a built-in title on the ref, but we set it via the component\n }\n\n return new ProgressDialogRef(dialogRef);\n }\n\n showDeterminateProgress(\n title: string,\n progress: Observable<ProgressValue>,\n options?: Partial<ProgressWindowOptions>\n ): ProgressDialogRef {\n return this.showProgress({\n title,\n isDeterminate: true,\n progress,\n ...options\n });\n }\n\n showIndeterminateProgress(\n title: string,\n progress: Observable<ProgressValue>,\n options?: Partial<ProgressWindowOptions>\n ): ProgressDialogRef {\n return this.showProgress({\n title,\n isDeterminate: false,\n progress,\n ...options\n });\n }\n}\n","export enum ImportStrategyDto {\n InsertOnly = 0,\n Upsert = 1\n}\n","/*\n * Public API Surface of shared-ui-legacy\n */\n\nexport * from './lib/shared-ui-module';\nexport * from './lib/abstract-details';\nexport * from './lib/common-validators';\nexport * from './lib/confirmation';\nexport * from './lib/progress-window';\nexport * from './lib/import-strategy';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|