projects/ng-dynamic-forms/core/src/lib/model/dynamic-option-control.model.ts
Properties |
|
Methods |
|
Accessors |
Protected
constructor(config: DynamicOptionControlModelConfig
|
|||||||||
Parameters :
|
Private _options |
Type : DynamicFormOption<T>[]
|
Default value : []
|
Decorators :
@serializable('options')
|
options$ |
Type : Observable<DynamicFormOption[]>
|
Private _value |
Type : T | null
|
Decorators :
@serializable('value')
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:22
|
additional |
Type : literal type | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:18
|
hint |
Type : string | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:19
|
required |
Type : boolean
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:20
|
tabIndex |
Type : number | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:21
|
Private Readonly value$ |
Type : BehaviorSubject<T>
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:24
|
Readonly valueChanges |
Type : Observable<T>
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:26
|
_disabled |
Type : boolean
|
Decorators :
@serializable('disabled')
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:28
|
asyncValidators |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:27
|
controlTooltip |
Type : string | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:34
|
Private Readonly disabled$ |
Type : BehaviorSubject<boolean>
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:42
|
Readonly disabledChanges |
Type : Observable<boolean>
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:44
|
errorMessages |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:29
|
hidden |
Type : boolean
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:30
|
id |
Type : string
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:31
|
label |
Type : string | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:32
|
labelTooltip |
Type : string | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:33
|
layout |
Type : DynamicFormControlLayout | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:35
|
name |
Type : string
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:36
|
parent |
Type : DynamicPathable | null
|
Default value : null
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:37
|
relations |
Type : DynamicFormControlRelation[]
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:38
|
Abstract Readonly type |
Type : string
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:46
|
updateOn |
Type : DynamicFormHook | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:39
|
validators |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:40
|
_disabled |
Type : boolean
|
Decorators :
@serializable('disabled')
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:28
|
asyncValidators |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:27
|
controlTooltip |
Type : string | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:34
|
Private Readonly disabled$ |
Type : BehaviorSubject<boolean>
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:42
|
Readonly disabledChanges |
Type : Observable<boolean>
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:44
|
errorMessages |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:29
|
hidden |
Type : boolean
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:30
|
id |
Type : string
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:31
|
label |
Type : string | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:32
|
labelTooltip |
Type : string | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:33
|
layout |
Type : DynamicFormControlLayout | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:35
|
name |
Type : string
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:36
|
parent |
Type : DynamicPathable | null
|
Default value : null
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:37
|
relations |
Type : DynamicFormControlRelation[]
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:38
|
Abstract Readonly type |
Type : string
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:46
|
updateOn |
Type : DynamicFormHook | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:39
|
validators |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:40
|
add | ||||||
add(optionConfig: DynamicFormOptionConfig
|
||||||
Parameters :
Returns :
DynamicFormOption<T>
|
get | ||||||
get(index: number)
|
||||||
Parameters :
Returns :
DynamicFormOption<T>
|
insert | |||||||||
insert(index: number, optionConfig: DynamicFormOptionConfig
|
|||||||||
Parameters :
Returns :
DynamicFormOption<T>
|
remove | ||||||
remove(...indices: number[])
|
||||||
Parameters :
Returns :
void
|
Abstract select | ||||||
select(...indices: number[])
|
||||||
Parameters :
Returns :
void
|
Private updateOptions$ |
updateOptions$()
|
Returns :
void
|
getAdditional | |||||||||
getAdditional(key: string, defaultValue?: any | null)
|
|||||||||
Inherited from
DynamicFormValueControlModel
|
|||||||||
Defined in
DynamicFormValueControlModel:50
|
|||||||||
Parameters :
Returns :
any
|
toJSON |
toJSON()
|
Inherited from
DynamicFormValueControlModel
|
Defined in
DynamicFormValueControlModel:80
|
Returns :
any
|
toJSON |
toJSON()
|
Inherited from
DynamicFormControlModel
|
Defined in
DynamicFormControlModel:80
|
Returns :
any
|
options | ||||||
getoptions()
|
||||||
setoptions(options: any)
|
||||||
Parameters :
Returns :
void
|
import { Observable, isObservable, of } from "rxjs";
import { map } from "rxjs/operators";
import { DynamicFormValueControlModel, DynamicFormValueControlModelConfig } from "./dynamic-form-value-control.model";
import { DynamicFormControlLayout } from "./misc/dynamic-form-control-layout.model";
import { serializable, serialize } from "../decorator/serializable.decorator";
import { isBoolean } from "../utils/core.utils";
export interface DynamicFormOptionConfig<T> {
disabled?: boolean;
label?: string;
value: T;
}
export class DynamicFormOption<T> {
@serializable() disabled: boolean;
@serializable() label: string | null;
@serializable() value: T;
constructor(config: DynamicFormOptionConfig<T>) {
this.disabled = isBoolean(config.disabled) ? config.disabled : false;
this.label = config.label || null;
this.value = config.value;
}
get text() {
return this.label;
}
set text(text: string | null) {
this.label = text;
}
toJSON() {
return serialize(this);
}
}
export interface DynamicOptionControlModelConfig<T> extends DynamicFormValueControlModelConfig<T | T[]> {
options?: DynamicFormOptionConfig<T>[] | Observable<DynamicFormOptionConfig<T>[]>;
}
export abstract class DynamicOptionControlModel<T> extends DynamicFormValueControlModel<T | T[]> {
@serializable("options") private _options: DynamicFormOption<T>[] = [];
options$: Observable<DynamicFormOption<T>[]>;
protected constructor(config: DynamicOptionControlModelConfig<T>, layout?: DynamicFormControlLayout) {
super(config, layout);
this.options = config.options;
}
private updateOptions$(): void {
this.options$ = of(this.options);
}
set options(options: any) {
if (Array.isArray(options)) {
this._options = (options as DynamicFormOptionConfig<T>[]).map(optionConfig => new DynamicFormOption<T>(optionConfig));
this.updateOptions$();
} else if (isObservable(options)) {
this.options$ = (options as Observable<DynamicFormOptionConfig<T>[]>).pipe(
map(optionsConfig => {
this._options = optionsConfig.map(optionConfig => new DynamicFormOption<T>(optionConfig));
return this._options;
}));
} else {
this.updateOptions$();
}
}
get options(): any {
return this._options;
}
add(optionConfig: DynamicFormOptionConfig<T>): DynamicFormOption<T> {
return this.insert(this.options.length, optionConfig);
}
get(index: number): DynamicFormOption<T> {
return this.options[index];
}
insert(index: number, optionConfig: DynamicFormOptionConfig<T>): DynamicFormOption<T> {
const option = new DynamicFormOption(optionConfig);
this.options.splice(index, 0, option);
this.updateOptions$();
return option;
}
remove(...indices: number[]): void {
indices.forEach(index => this.options.splice(index, 1));
this.updateOptions$();
}
abstract select(...indices: number[]): void;
}