1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import { FieldConfig } from 'app/modules/entity/entity-form/models/field-config.interface';
import { FieldSet } from 'app/modules/entity/entity-form/models/fieldset.interface';
export class FieldSets {
readonly advancedDividers = this._init
.filter((set) => !set.divider && set.name.includes('divider'))
.map((set) => set.name);
readonly advancedFields = this._init
.filter((set) => !set.label)
.map((set) => set.config || [])
.reduce((flatList, configs) => flatList.concat(configs), [])
.map((config) => config.name);
readonly advancedSets = this._init
.filter((set) => !set.label && !set.name.includes('divider'))
.map((set) => set.class);
/* Make a local copy of our initial state */
private readonly _fieldSets = [...this._init];
constructor(private readonly _init: FieldSet[] = []) {}
config(configName: string): FieldConfig {
return this.list()
.find(
(set) => set.config && set.config.some((config) => config.name === configName),
)
.config.find((config) => config.name === configName);
}
hideConfig(configName: string): this {
this.config(configName).isHidden = true;
return this;
}
configs(): FieldConfig[] {
return this.list()
.reduce((configList, set) => configList.concat(set.config), [])
.filter((config) => !!config);
}
list(): FieldSet[] {
return this._fieldSets;
}
showConfig(configName: string): this {
this.config(configName).isHidden = false;
return this;
}
toggleSets(setClasses: string[] = this.advancedSets): this {
this._fieldSets
.filter((set) => setClasses.some((className) => className === set.class))
.forEach((set) => (set.label = !set.label));
return this;
}
toggleDividers(divNames: string[] = this.advancedDividers): this {
this._fieldSets
.filter((set) => divNames.some((name) => name === set.name))
.forEach((set) => (set.divider = !set.divider));
return this;
}
/**
* Like showConfig or hideConfig, but for times when the isHidden value
* is computed at runtime.
*/
toggleConfigVisibility(configName: string, isHidden: boolean): this {
this.config(configName).isHidden = isHidden;
return this;
}
}