@meshmakers/shared-ui-legacy 3.3.460 → 3.3.480

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/README.md ADDED
@@ -0,0 +1,106 @@
1
+ # @meshmakers/shared-ui-legacy
2
+
3
+ Legacy Angular UI library based on **Angular Material** for backward compatibility with older OctoMesh applications.
4
+
5
+ **Note:** For new projects, use `@meshmakers/shared-ui` (Kendo UI based) instead.
6
+
7
+ Part of the [@meshmakers](https://www.npmjs.com/org/meshmakers) package ecosystem.
8
+
9
+ ## Purpose
10
+
11
+ This library provides Material Design-based UI components for applications that have not yet migrated to the Kendo UI based `@meshmakers/shared-ui`. It contains dialog services, form utilities, and base classes that were part of the original shared UI layer.
12
+
13
+ ## Build & Test
14
+
15
+ ```bash
16
+ # Build
17
+ npm run build:shared-ui-legacy
18
+
19
+ # Lint
20
+ npm run lint:shared-ui-legacy
21
+
22
+ # Run tests
23
+ npm test -- --project=@meshmakers/shared-ui-legacy --watch=false
24
+ ```
25
+
26
+ ## Architecture
27
+
28
+ ```
29
+ shared-ui-legacy/
30
+ ├── src/
31
+ │ ├── public-api.ts
32
+ │ └── lib/
33
+ │ ├── shared-ui-module/
34
+ │ │ └── mm-shared-ui-module.ts # NgModule (backward compat)
35
+ │ ├── abstract-details/
36
+ │ │ └── abstract-details-component.ts # Base class for detail forms
37
+ │ ├── common-validators/
38
+ │ │ └── common-validators.ts # Custom form validators
39
+ │ ├── confirmation/
40
+ │ │ ├── confirmation.model.ts # Dialog types/enums
41
+ │ │ ├── confirmation.service.ts # Dialog service (Material)
42
+ │ │ └── confirmation-dialog.component.ts
43
+ │ ├── progress-window/
44
+ │ │ ├── progress-value.ts # Progress data model
45
+ │ │ ├── progress-window.component.ts # Progress dialog
46
+ │ │ └── progress-window.service.ts # Progress service
47
+ │ └── import-strategy/
48
+ │ └── import-strategy-dto.ts # ImportStrategyDto enum
49
+ ```
50
+
51
+ ## Components
52
+
53
+ | Component | Description |
54
+ |-----------|-------------|
55
+ | `ConfirmationDialogComponent` | Material Dialog with configurable buttons (Yes/No, Ok/Cancel) |
56
+ | `ProgressWindowComponent` | Determinate/indeterminate progress dialog with cancel |
57
+
58
+ ## Services
59
+
60
+ | Service | Description |
61
+ |---------|-------------|
62
+ | `ConfirmationService` | Show confirmation dialogs (YesNo, YesNoCancel, OkCancel, Ok) |
63
+ | `ProgressWindowService` | Show progress dialogs (determinate/indeterminate) |
64
+
65
+ ## Base Classes & Utilities
66
+
67
+ | Class | Description |
68
+ |-------|-------------|
69
+ | `AbstractDetailsComponent<T>` | Generic base for form-based detail components |
70
+ | `CommonValidators` | Form validators: `phoneNumber()`, `httpUri()`, `ensureSameValue()`, `conditionalRequired()`, `dependentControls()` |
71
+ | `MmSharedUiModule` | NgModule with `forRoot()` for legacy module-based apps |
72
+
73
+ ## Models
74
+
75
+ | Model | Description |
76
+ |-------|-------------|
77
+ | `DialogType` | Enum: YesNo, YesNoCancel, OkCancel, Ok |
78
+ | `ButtonTypes` | Enum: Ok, Cancel, Yes, No |
79
+ | `ConfirmationWindowData` | Dialog configuration interface |
80
+ | `ConfirmationWindowResult` | Dialog result with button type |
81
+ | `ProgressValue` | Status text + progress percentage |
82
+ | `ImportStrategyDto` | Enum: InsertOnly, Upsert |
83
+
84
+ ## Dependencies
85
+
86
+ - **Angular 21** with Angular Material and CDK
87
+ - **@meshmakers/shared-services** (sibling library)
88
+
89
+ ## Migration to shared-ui
90
+
91
+ | Legacy (Material) | Modern (Kendo) |
92
+ |-------------------|----------------|
93
+ | `ConfirmationService` | `ConfirmationService` from `@meshmakers/shared-ui` |
94
+ | `ProgressWindowService` | `ProgressWindowService` from `@meshmakers/shared-ui` |
95
+ | `AbstractDetailsComponent` | `BaseFormComponent` from `@meshmakers/shared-ui` |
96
+ | `CommonValidators` | Angular built-in validators or custom |
97
+ | `MmSharedUiModule.forRoot()` | `provideMmSharedUi()` |
98
+
99
+ ## Documentation and Testing Standards
100
+
101
+ - **All developer documentation must be written in English**
102
+ - **Every code change must include updated documentation** — update README.md, CLAUDE.md, or inline docs when adding, modifying, or removing features
103
+ - **Unit tests and integration tests must be executed** after every code change
104
+ - **Existing tests must be updated** when the behavior of tested code changes
105
+ - **New tests must be added** when new features, components, or services are implemented
106
+ - Never commit code with failing tests
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Component, Injectable, NgModule } from '@angular/core';
2
+ import { inject, Component, Injectable, NgModule, ChangeDetectorRef } from '@angular/core';
3
3
  import * as i1 from '@angular/material/dialog';
4
4
  import { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule, MatDialog } from '@angular/material/dialog';
5
5
  import { firstValueFrom } from 'rxjs';
@@ -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.1.5", ngImport: i0, type: ConfirmationDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: ConfirmationDialogComponent, isStandalone: true, selector: "mm-confirmation-dialog", ngImport: i0, template: `
80
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ConfirmationDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", 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.1.5", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", 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.1.5", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
154
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ConfirmationService });
153
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
154
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ConfirmationService });
155
155
  }
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ConfirmationService, decorators: [{
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", 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.1.5", ngImport: i0, type: MmSharedUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
177
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.5", ngImport: i0, type: MmSharedUiModule });
178
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: MmSharedUiModule });
176
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MmSharedUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
177
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: MmSharedUiModule });
178
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MmSharedUiModule });
179
179
  }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: MmSharedUiModule, decorators: [{
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MmSharedUiModule, decorators: [{
181
181
  type: NgModule,
182
182
  args: [{
183
183
  declarations: [],
@@ -286,6 +286,7 @@ class ProgressValue {
286
286
  class ProgressWindowComponent {
287
287
  dialogRef = inject(MatDialogRef);
288
288
  data = inject(MAT_DIALOG_DATA);
289
+ cdr = inject(ChangeDetectorRef);
289
290
  progressSubscription;
290
291
  isDeterminate;
291
292
  isCancelOperationAvailable;
@@ -300,6 +301,7 @@ class ProgressWindowComponent {
300
301
  this.progressSubscription = this.data.progress.subscribe((value) => {
301
302
  this.statusText = value.statusText;
302
303
  this.progressPercent = value.progressValue;
304
+ this.cdr.detectChanges();
303
305
  });
304
306
  }
305
307
  }
@@ -312,8 +314,8 @@ class ProgressWindowComponent {
312
314
  }
313
315
  this.dialogRef.close();
314
316
  }
315
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ProgressWindowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
316
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: ProgressWindowComponent, isStandalone: true, selector: "mm-progress-window", ngImport: i0, template: `
317
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ProgressWindowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
318
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ProgressWindowComponent, isStandalone: true, selector: "mm-progress-window", ngImport: i0, template: `
317
319
  <mat-dialog-content>
318
320
  <div class="progress-section">
319
321
  @if (isDeterminate) {
@@ -333,7 +335,7 @@ class ProgressWindowComponent {
333
335
  </mat-dialog-actions>
334
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"] }] });
335
337
  }
336
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ProgressWindowComponent, decorators: [{
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ProgressWindowComponent, decorators: [{
337
339
  type: Component,
338
340
  args: [{ selector: 'mm-progress-window', standalone: true, imports: [MatDialogModule, MatButtonModule, MatProgressBarModule], template: `
339
341
  <mat-dialog-content>
@@ -403,10 +405,10 @@ class ProgressWindowService {
403
405
  ...options
404
406
  });
405
407
  }
406
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ProgressWindowService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
407
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ProgressWindowService });
408
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ProgressWindowService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
409
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ProgressWindowService });
408
410
  }
409
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ProgressWindowService, decorators: [{
411
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ProgressWindowService, decorators: [{
410
412
  type: Injectable
411
413
  }] });
412
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 { 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 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 });\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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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@meshmakers/shared-ui-legacy",
3
- "version": "3.3.460",
3
+ "version": "3.3.480",
4
4
  "peerDependencies": {
5
- "@angular/cdk": "^21.0.0",
6
- "@angular/common": "^21.0.6",
7
- "@angular/core": "^21.0.6",
8
- "@angular/forms": "^21.0.6",
9
- "@angular/material": "^21.0.0",
5
+ "@angular/cdk": "^21.2.0",
6
+ "@angular/common": "^21.2.0",
7
+ "@angular/core": "^21.2.0",
8
+ "@angular/forms": "^21.2.0",
9
+ "@angular/material": "^21.2.0",
10
10
  "@meshmakers/shared-services": "*"
11
11
  },
12
12
  "dependencies": {
@@ -120,6 +120,7 @@ interface ProgressWindowData {
120
120
  declare class ProgressWindowComponent implements AfterViewInit, OnDestroy {
121
121
  private readonly dialogRef;
122
122
  private readonly data;
123
+ private readonly cdr;
123
124
  private progressSubscription?;
124
125
  isDeterminate: boolean;
125
126
  isCancelOperationAvailable: boolean;