mok ux, autofill device and pf forms, docss for st, docs for start-sdk

This commit is contained in:
Matt Hill
2026-03-12 14:15:45 -06:00
parent 50004da782
commit 0fa069126b
21 changed files with 1147 additions and 154 deletions

View File

@@ -6,7 +6,6 @@ import {
Validators,
} from '@angular/forms'
import { ErrorService, LoadingService } from '@start9labs/shared'
import { utils } from '@start9labs/start-sdk'
import {
TUI_IS_MOBILE,
TuiAutoFocus,
@@ -121,15 +120,23 @@ export class DevicesAdd {
protected readonly context =
injectContext<TuiDialogContext<void, DeviceData>>()
private readonly autoSubnet =
!this.context.data.device && this.context.data.subnets().length === 1
? this.context.data.subnets().at(0)
: undefined
protected readonly form = inject(NonNullableFormBuilder).group({
name: [this.context.data.device?.name || '', Validators.required],
subnet: [
this.context.data.device?.subnet,
this.context.data.device?.subnet ?? this.autoSubnet,
[Validators.required, subnetValidator],
],
ip: [
this.context.data.device?.ip || '',
[Validators.required, Validators.pattern(utils.Patterns.ipv4.regex)],
this.context.data.device?.ip ||
(this.autoSubnet ? getIp(this.autoSubnet) : ''),
this.autoSubnet
? [Validators.required, ipInSubnetValidator(this.autoSubnet.range)]
: [],
],
})

View File

@@ -22,10 +22,10 @@ import {
TuiCheckbox,
TuiChevron,
TuiDataListWrapper,
TuiElasticContainer,
TuiFieldErrorPipe,
TuiInputNumber,
TuiSelect,
TuiElasticContainer,
} from '@taiga-ui/kit'
import { TuiForm } from '@taiga-ui/layout'
import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus'
@@ -167,7 +167,12 @@ export class PortForwardsAdd {
protected readonly form = inject(NonNullableFormBuilder).group({
label: ['', Validators.required],
externalip: ['', Validators.required],
externalip: [
this.context.data.ips().length === 1
? (this.context.data.ips().at(0) ?? '')
: '',
Validators.required,
],
externalport: [null as number | null, Validators.required],
device: [null as MappedDevice | null, Validators.required],
internalport: [null as number | null, Validators.required],

View File

@@ -16,6 +16,6 @@ export interface MappedForward {
}
export interface PortForwardsData {
readonly ips: Signal<any>
readonly ips: Signal<readonly string[]>
readonly devices: Signal<readonly MappedDevice[]>
}