mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-01 21:13:09 +00:00
* import marketplac preview for sideload * fix: improve state service (#2977) * fix: fix sideload DI * fix: update Angular * fix: cleanup * fix: fix version selection * Bump node version to fix build for Angular * misc fixes - update node to v22 - fix chroot-and-upgrade access to prune-images - don't self-migrate legacy packages - #2985 - move dataVersion to volume folder - remove "instructions.md" from s9pk - add "docsUrl" to manifest * version bump * include flavor when clicking view listing from updates tab * closes #2980 * fix: fix select button * bring back ssh keys * fix: drop 'portal' from all routes * fix: implement longtap action to select table rows * fix description for ssh page * replace instructions with docsLink and refactor marketplace preview * delete unused translations * fix patchdb diffing algorithm * continue refactor of marketplace lib show components * Booting StartOS instead of Setting up your server on init * misc fixes - closes #2990 - closes #2987 * fix build * docsUrl and clickable service headers * don't cleanup after update until new service install succeeds * update types * misc fixes * beta.35 * sdkversion, githash for sideload, correct logs for init, startos pubkey display * bring back reboot button on install * misc fixes * beta.36 * better handling of setup and init for websocket errors * reopen init and setup logs even on graceful closure * better logging, misc fixes * fix build * dont let package stats hang * dont show docsurl in marketplace if no docsurl * re-add needs-config * show error if init fails, shorten hover state on header icons * fix operator precedemce --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> Co-authored-by: Alex Inkin <alexander@inkin.ru> Co-authored-by: Mariusz Kogen <k0gen@pm.me>
103 lines
2.6 KiB
TypeScript
103 lines
2.6 KiB
TypeScript
import {
|
|
ChangeDetectionStrategy,
|
|
Component,
|
|
inject,
|
|
input,
|
|
output,
|
|
TemplateRef,
|
|
} from '@angular/core'
|
|
import { FormsModule } from '@angular/forms'
|
|
import { DialogService, i18nPipe, SharedPipesModule } from '@start9labs/shared'
|
|
import { TuiButton, TuiDialogContext } from '@taiga-ui/core'
|
|
import { TuiRadioList } from '@taiga-ui/kit'
|
|
import { filter } from 'rxjs'
|
|
import { MarketplaceItemComponent } from './item.component'
|
|
|
|
@Component({
|
|
selector: 'marketplace-versions',
|
|
template: `
|
|
<div class="background-border shadow-color-light box-shadow-lg">
|
|
<div class="box-container">
|
|
<h2 class="additional-detail-title">Versions</h2>
|
|
<marketplace-item
|
|
(click)="promptSelectVersion(versionSelect)"
|
|
data="Select another version"
|
|
icon="@tui.chevron-right"
|
|
label=""
|
|
class="select"
|
|
/>
|
|
<ng-template
|
|
#versionSelect
|
|
let-data="data"
|
|
let-completeWith="completeWith"
|
|
>
|
|
<tui-radio-list [items]="versions()" [(ngModel)]="data.version" />
|
|
<footer class="buttons">
|
|
<button
|
|
tuiButton
|
|
appearance="secondary"
|
|
(click)="completeWith(null)"
|
|
>
|
|
{{ 'Cancel' | i18n }}
|
|
</button>
|
|
<button
|
|
tuiButton
|
|
appearance="secondary"
|
|
(click)="completeWith(data.version)"
|
|
>
|
|
{{ 'Ok' | i18n }}
|
|
</button>
|
|
</footer>
|
|
</ng-template>
|
|
</div>
|
|
</div>
|
|
`,
|
|
styles: `
|
|
.box-container {
|
|
background-color: rgb(39 39 42);
|
|
border-radius: 0.75rem;
|
|
padding: 1.25rem 1.75rem;
|
|
}
|
|
|
|
.select {
|
|
border: 0;
|
|
// border-top-width: 1px;
|
|
border-bottom-width: 1px;
|
|
border-color: rgb(113 113 122);
|
|
border-style: solid;
|
|
cursor: pointer;
|
|
|
|
::ng-deep label {
|
|
cursor: pointer;
|
|
}
|
|
}
|
|
`,
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
imports: [
|
|
MarketplaceItemComponent,
|
|
TuiButton,
|
|
SharedPipesModule,
|
|
FormsModule,
|
|
TuiRadioList,
|
|
i18nPipe,
|
|
],
|
|
})
|
|
export class MarketplaceVersionsComponent {
|
|
private readonly dialog = inject(DialogService)
|
|
readonly version = input.required<string | null>()
|
|
readonly versions = input.required<string[]>()
|
|
|
|
onVersion = output<string>()
|
|
|
|
promptSelectVersion(template: TemplateRef<TuiDialogContext>) {
|
|
this.dialog
|
|
.openComponent<string>(template, {
|
|
label: 'All versions',
|
|
size: 's',
|
|
data: { version: this.version() },
|
|
})
|
|
.pipe(filter(Boolean))
|
|
.subscribe(selected => this.onVersion.emit(selected))
|
|
}
|
|
}
|