diff --git a/web/projects/shared/src/i18n/dictionaries/de.ts b/web/projects/shared/src/i18n/dictionaries/de.ts index 82148a20a..8270e8f60 100644 --- a/web/projects/shared/src/i18n/dictionaries/de.ts +++ b/web/projects/shared/src/i18n/dictionaries/de.ts @@ -521,4 +521,5 @@ export default { 520: 'Update verfügbar', 521: 'Um das Problem zu beheben, siehe', 522: 'SDK Version', + 523: 'Sicherungsbericht', } satisfies i18n diff --git a/web/projects/shared/src/i18n/dictionaries/en.ts b/web/projects/shared/src/i18n/dictionaries/en.ts index f21c3e1c0..389d2fee9 100644 --- a/web/projects/shared/src/i18n/dictionaries/en.ts +++ b/web/projects/shared/src/i18n/dictionaries/en.ts @@ -520,4 +520,5 @@ export const ENGLISH = { 'Update available': 520, 'To resolve the issue, refer to': 521, 'SDK Version': 522, + 'Backup Report': 523, } as const diff --git a/web/projects/shared/src/i18n/dictionaries/es.ts b/web/projects/shared/src/i18n/dictionaries/es.ts index 08d55960a..940534deb 100644 --- a/web/projects/shared/src/i18n/dictionaries/es.ts +++ b/web/projects/shared/src/i18n/dictionaries/es.ts @@ -521,4 +521,5 @@ export default { 520: 'Actualización disponible', 521: 'Para resolver el problema, consulta', 522: 'Versión de SDK', + 523: 'Informe de respaldo', } satisfies i18n diff --git a/web/projects/shared/src/i18n/dictionaries/fr.ts b/web/projects/shared/src/i18n/dictionaries/fr.ts index 6e8f87a21..720e175c2 100644 --- a/web/projects/shared/src/i18n/dictionaries/fr.ts +++ b/web/projects/shared/src/i18n/dictionaries/fr.ts @@ -521,4 +521,5 @@ export default { 520: 'Mise à jour disponible', 521: 'Pour résoudre le problème, consultez', 522: 'Version de SDK', + 523: 'Rapport de sauvegarde', } satisfies i18n diff --git a/web/projects/shared/src/i18n/dictionaries/pl.ts b/web/projects/shared/src/i18n/dictionaries/pl.ts index 0c6a08756..940c4af58 100644 --- a/web/projects/shared/src/i18n/dictionaries/pl.ts +++ b/web/projects/shared/src/i18n/dictionaries/pl.ts @@ -521,4 +521,5 @@ export default { 520: 'Aktualizacja dostępna', 521: 'Aby rozwiązać problem, zapoznaj się z', 522: 'Wersja SDK', + 523: 'Raport kopii zapasowej', } satisfies i18n diff --git a/web/projects/shared/src/services/dialog.service.ts b/web/projects/shared/src/services/dialog.service.ts index 45abb13b2..64216fad0 100644 --- a/web/projects/shared/src/services/dialog.service.ts +++ b/web/projects/shared/src/services/dialog.service.ts @@ -1,10 +1,13 @@ -import { inject, Injectable, TemplateRef } from '@angular/core' +import { inject, Injectable } from '@angular/core' import { TuiResponsiveDialogOptions, TuiResponsiveDialogService, } from '@taiga-ui/addon-mobile' import { TUI_CONFIRM, TuiConfirmData } from '@taiga-ui/kit' -import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' +import { + PolymorpheusComponent, + PolymorpheusContent, +} from '@taiga-ui/polymorpheus' import { PROMPT, PromptOptions } from '../components/prompt.component' import { i18nPipe } from '../i18n/i18n.pipe' import { i18nKey } from '../i18n/i18n.providers' @@ -73,7 +76,7 @@ export class DialogService { } openComponent( - component: PolymorpheusComponent | TemplateRef, + component: PolymorpheusContent, options: Partial> & { label?: i18nKey } = {}, diff --git a/web/projects/ui/src/app/routes/portal/components/form/control.ts b/web/projects/ui/src/app/routes/portal/components/form/control.ts index f21f06736..5cd79f260 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/control.ts +++ b/web/projects/ui/src/app/routes/portal/components/form/control.ts @@ -18,8 +18,16 @@ export abstract class Control< } get readOnly(): boolean { + const def = + 'default' in this.spec && + this.spec.default != null && + this.spec.default !== this.value + return ( - !!this.value && !!this.control.control?.pristine && this.control.immutable + !!this.value && + !def && + !!this.control.control?.pristine && + this.control.immutable ) } diff --git a/web/projects/ui/src/app/routes/portal/routes/marketplace/components/controls.component.ts b/web/projects/ui/src/app/routes/portal/routes/marketplace/components/controls.component.ts index 2af99495c..99bd375f1 100644 --- a/web/projects/ui/src/app/routes/portal/routes/marketplace/components/controls.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/marketplace/components/controls.component.ts @@ -1,4 +1,3 @@ -import { TuiButton } from '@taiga-ui/core' import { CommonModule, TitleCasePipe } from '@angular/common' import { ChangeDetectionStrategy, @@ -6,37 +5,41 @@ import { inject, Input, } from '@angular/core' +import { toSignal } from '@angular/core/rxjs-interop' import { Router } from '@angular/router' import { MarketplacePkgBase } from '@start9labs/marketplace' import { - Exver, ErrorService, + Exver, + ExverPipesModule, + i18nPipe, isEmptyObject, LoadingService, sameUrl, - ExverPipesModule, - i18nPipe, } from '@start9labs/shared' +import { TuiButton } from '@taiga-ui/core' import { PatchDB } from 'patch-db-client' import { firstValueFrom } from 'rxjs' +import { ToManifestPipe } from 'src/app/routes/portal/pipes/to-manifest' +import { ApiService } from 'src/app/services/api/embassy-api.service' +import { MarketplaceService } from 'src/app/services/marketplace.service' import { DataModel, PackageDataEntry, } from 'src/app/services/patch-db/data-model' -import { MarketplaceService } from 'src/app/services/marketplace.service' -import { hasCurrentDeps } from 'src/app/utils/has-deps' -import { getAllPackages, getManifest } from 'src/app/utils/get-package-data' import { dryUpdate } from 'src/app/utils/dry-update' +import { getAllPackages, getManifest } from 'src/app/utils/get-package-data' +import { hasCurrentDeps } from 'src/app/utils/has-deps' + +import { MarketplacePreviewComponent } from '../modals/preview.component' import { MarketplaceAlertsService } from '../services/alerts.service' -import { ToManifestPipe } from 'src/app/routes/portal/pipes/to-manifest' -import { ApiService } from 'src/app/services/api/embassy-api.service' @Component({ selector: 'marketplace-controls', template: ` @if (localPkg) { @if (localPkg | toManifest; as localManifest) { - @switch (localManifest.version | compareExver: pkg.version) { + @switch (localManifest.version | compareExver: version() || '') { @case (1) {