@wemake4u/form-player-se 1.0.39 → 1.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/esm2022/lib/builtIn/builtIn.mjs +24 -0
  2. package/esm2022/lib/builtIn/console.json +253 -0
  3. package/esm2022/lib/builtIn/dialog.json +109 -0
  4. package/esm2022/lib/builtIn/feel.json +26 -0
  5. package/esm2022/lib/builtIn/form.json +172 -0
  6. package/esm2022/lib/builtIn/formGroup.json +218 -0
  7. package/esm2022/lib/builtIn/formatter.json +112 -0
  8. package/esm2022/lib/builtIn/function.json +53 -0
  9. package/esm2022/lib/builtIn/register.json +14 -0
  10. package/esm2022/lib/components/setFilter/setFilter.component.mjs +35 -5
  11. package/esm2022/lib/controls/accordion.mjs +50 -3
  12. package/esm2022/lib/controls/control.mjs +70 -25
  13. package/esm2022/lib/controls/factory.mjs +42 -42
  14. package/esm2022/lib/controls/tab.mjs +47 -25
  15. package/esm2022/lib/controls/table.mjs +89 -15
  16. package/esm2022/lib/controls/textfield.mjs +4 -3
  17. package/esm2022/lib/directives/accordionpanel.directive.mjs +10 -5
  18. package/esm2022/lib/directives/collapse.directive.mjs +22 -12
  19. package/esm2022/lib/directives/collapsepatch.directive.mjs +2 -1
  20. package/esm2022/lib/directives/datetime.directive.mjs +18 -21
  21. package/esm2022/lib/directives/dropdown.directive.mjs +31 -16
  22. package/esm2022/lib/directives/grid.directive.mjs +10 -8
  23. package/esm2022/lib/directives/readonly.directive.mjs +10 -9
  24. package/esm2022/lib/directives/register.directive.mjs +32 -15
  25. package/esm2022/lib/directives/required.directive.mjs +57 -0
  26. package/esm2022/lib/directives/tabcontrol.directive.mjs +10 -9
  27. package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +28 -5
  28. package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +46 -21
  29. package/esm2022/lib/dynamic-host/dynamic-host.component.mjs +32 -10
  30. package/esm2022/lib/services/event.service.mjs +17 -6
  31. package/esm2022/lib/services/formatter.service.mjs +3 -1
  32. package/esm2022/lib/services/grid.service.mjs +4 -1
  33. package/esm2022/lib/services/listener.service.mjs +23 -0
  34. package/esm2022/lib/services/navigation.service.mjs +35 -0
  35. package/esm2022/lib/services/programmability.service.mjs +54 -38
  36. package/esm2022/lib/services/register.service.mjs +40 -2
  37. package/esm2022/lib/services/state.service.mjs +40 -0
  38. package/esm2022/lib/services/status.service.mjs +10 -5
  39. package/esm2022/lib/services/subscribe.service.mjs +54 -0
  40. package/esm2022/lib/services/validation.service.mjs +11 -2
  41. package/esm2022/lib/utils/deepEqual.mjs +46 -0
  42. package/esm2022/lib/utils/navigation.mjs +20 -0
  43. package/esm2022/lib/utils/observable.mjs +7 -0
  44. package/esm2022/lib/utils/patch.mjs +17 -0
  45. package/esm2022/lib/utils/proxy.mjs +28 -1
  46. package/esm2022/lib/utils/resolveRefs.mjs +67 -0
  47. package/esm2022/public-api.mjs +7 -1
  48. package/fesm2022/wemake4u-form-player-se.mjs +2027 -276
  49. package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
  50. package/lib/builtIn/builtIn.d.ts +32 -0
  51. package/lib/components/setFilter/setFilter.component.d.ts +1 -0
  52. package/lib/controls/accordion.d.ts +5 -1
  53. package/lib/controls/control.d.ts +31 -12
  54. package/lib/controls/factory.d.ts +2 -4
  55. package/lib/controls/tab.d.ts +9 -6
  56. package/lib/controls/table.d.ts +16 -5
  57. package/lib/controls/textfield.d.ts +1 -1
  58. package/lib/directives/accordionpanel.directive.d.ts +4 -2
  59. package/lib/directives/collapse.directive.d.ts +5 -3
  60. package/lib/directives/datetime.directive.d.ts +7 -8
  61. package/lib/directives/dropdown.directive.d.ts +6 -3
  62. package/lib/directives/grid.directive.d.ts +4 -3
  63. package/lib/directives/readonly.directive.d.ts +3 -4
  64. package/lib/directives/register.directive.d.ts +4 -3
  65. package/lib/directives/required.directive.d.ts +17 -0
  66. package/lib/directives/tabcontrol.directive.d.ts +5 -6
  67. package/lib/dynamic-fields/dynamic-fields.component.d.ts +4 -1
  68. package/lib/dynamic-form/dynamic-form.component.d.ts +4 -1
  69. package/lib/dynamic-host/dynamic-host.component.d.ts +6 -2
  70. package/lib/services/event.service.d.ts +8 -2
  71. package/lib/services/listener.service.d.ts +11 -0
  72. package/lib/services/navigation.service.d.ts +11 -0
  73. package/lib/services/programmability.service.d.ts +8 -9
  74. package/lib/services/register.service.d.ts +9 -0
  75. package/lib/services/state.service.d.ts +14 -0
  76. package/lib/services/status.service.d.ts +5 -1
  77. package/lib/services/subscribe.service.d.ts +14 -0
  78. package/lib/services/validation.service.d.ts +5 -2
  79. package/lib/utils/deepEqual.d.ts +1 -0
  80. package/lib/utils/navigation.d.ts +6 -0
  81. package/lib/utils/observable.d.ts +2 -0
  82. package/lib/utils/patch.d.ts +1 -0
  83. package/lib/utils/proxy.d.ts +2 -0
  84. package/lib/utils/resolveRefs.d.ts +12 -0
  85. package/package.json +1 -1
  86. package/public-api.d.ts +6 -0
@@ -0,0 +1,218 @@
1
+ {
2
+ "name": "formGroup",
3
+ "detail": "Form",
4
+ "info": "Tracks the value and validity state of a group of FormControl instances.\n\n---\n\n### Description\n\nA FormGroup aggregates the values and validation status of multiple child controls and allows managing them as a single unit.\n\n---\n\n### Examples\n\n```ts\nconst form = new FormGroup({\n name: new FormControl(''),\n age: new FormControl(0)\n});\n```",
5
+ "entries": [
6
+ {
7
+ "name": "get",
8
+ "type": "function",
9
+ "detail": "Returns a child control given its path",
10
+ "info": "Returns a child control identified by the given path.\n\n---\n\n### Function signature\n\n```\nget(path: string | (string | number)[]): AbstractControl | null\n```\n\n---\n\n### Examples\n\n```ts\nform.get('name');\nform.get(['address', 'street']);\n```",
11
+ "params": [
12
+ {
13
+ "name": "path",
14
+ "type": "string | (string | number)[]"
15
+ }
16
+ ]
17
+ },
18
+ {
19
+ "name": "setValue",
20
+ "type": "function",
21
+ "detail": "Sets the value of the FormGroup",
22
+ "info": "Sets the value of the entire FormGroup.\n\n---\n\n### Function signature\n\n```\nsetValue(value: object, options?: object): void\n```\n\n---\n\n### Examples\n\n```ts\nform.setValue({ name: 'Mario', age: 30 });\n```",
23
+ "params": [
24
+ {
25
+ "name": "value",
26
+ "type": "object"
27
+ },
28
+ {
29
+ "name": "options",
30
+ "type": "object",
31
+ "optional": true
32
+ }
33
+ ]
34
+ },
35
+ {
36
+ "name": "patchValue",
37
+ "type": "function",
38
+ "detail": "Patches the value of the FormGroup",
39
+ "info": "Updates one or more values of the FormGroup without affecting other controls.\n\n---\n\n### Function signature\n\n```\npatchValue(value: object, options?: object): void\n```\n\n---\n\n### Examples\n\n```ts\nform.patchValue({ name: 'Luigi' });\n```",
40
+ "params": [
41
+ {
42
+ "name": "value",
43
+ "type": "object"
44
+ },
45
+ {
46
+ "name": "options",
47
+ "type": "object",
48
+ "optional": true
49
+ }
50
+ ]
51
+ },
52
+ {
53
+ "name": "reset",
54
+ "type": "function",
55
+ "detail": "Resets the FormGroup",
56
+ "info": "Resets the FormGroup to an initial or provided state.\n\n---\n\n### Function signature\n\n```\nreset(value?: object, options?: object): void\n```\n\n---\n\n### Examples\n\n```ts\nform.reset();\nform.reset({ name: 'Anna', age: 25 });\n```",
57
+ "params": [
58
+ {
59
+ "name": "value",
60
+ "type": "object",
61
+ "optional": true
62
+ },
63
+ {
64
+ "name": "options",
65
+ "type": "object",
66
+ "optional": true
67
+ }
68
+ ]
69
+ },
70
+ {
71
+ "name": "addControl",
72
+ "type": "function",
73
+ "detail": "Adds a new control to the group",
74
+ "info": "Adds a new control to the FormGroup.\n\n---\n\n### Function signature\n\n```\naddControl(name: string, control: AbstractControl): void\n```\n\n---\n\n### Examples\n\n```ts\nform.addControl('email', new FormControl(''));\n```",
75
+ "params": [
76
+ {
77
+ "name": "name",
78
+ "type": "string"
79
+ },
80
+ {
81
+ "name": "control",
82
+ "type": "AbstractControl"
83
+ }
84
+ ]
85
+ },
86
+ {
87
+ "name": "removeControl",
88
+ "type": "function",
89
+ "detail": "Removes an existing control from the group",
90
+ "info": "Removes a control from the FormGroup.\n\n---\n\n### Function signature\n\n```\nremoveControl(name: string): void\n```\n\n---\n\n### Examples\n\n```ts\nform.removeControl('age');\n```",
91
+ "params": [
92
+ {
93
+ "name": "name",
94
+ "type": "string"
95
+ }
96
+ ]
97
+ },
98
+ {
99
+ "name": "contains",
100
+ "type": "function",
101
+ "detail": "Checks if the group contains a control",
102
+ "info": "Checks whether a control with the given name exists in the FormGroup.\n\n---\n\n### Function signature\n\n```\ncontains(controlName: string): boolean\n```\n\n---\n\n### Examples\n\n```ts\nform.contains('name'); // true\n```",
103
+ "params": [
104
+ {
105
+ "name": "controlName",
106
+ "type": "string"
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "name": "setControl",
112
+ "type": "function",
113
+ "detail": "Replaces an existing control",
114
+ "info": "Replaces an existing control with a new one.\n\n---\n\n### Function signature\n\n```\nsetControl(name: string, control: AbstractControl): void\n```\n\n---\n\n### Examples\n\n```ts\nform.setControl('name', new FormControl('Giulia'));\n```",
115
+ "params": [
116
+ {
117
+ "name": "name",
118
+ "type": "string"
119
+ },
120
+ {
121
+ "name": "control",
122
+ "type": "AbstractControl"
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "name": "markAsTouched",
128
+ "type": "function",
129
+ "detail": "",
130
+ "info": "Marks all controls in the FormGroup as touched.\n\n---\n\n### Function signature\n\n```\nmarkAsTouched(options?: object): void\n```\n\n---\n\n### Examples\n\n```ts\nform.markAsTouched();\n```",
131
+ "params": [
132
+ {
133
+ "name": "options",
134
+ "type": "object",
135
+ "optional": true
136
+ }
137
+ ]
138
+ },
139
+ {
140
+ "name": "markAsUntouched",
141
+ "type": "function",
142
+ "detail": "",
143
+ "info": "Marks all controls in the FormGroup as untouched.\n\n---\n\n### Function signature\n\n```\nmarkAsUntouched(options?: object): void\n```\n\n---\n\n### Examples\n\n```ts\nform.markAsUntouched();\n```",
144
+ "params": [
145
+ {
146
+ "name": "options",
147
+ "type": "object",
148
+ "optional": true
149
+ }
150
+ ]
151
+ },
152
+ {
153
+ "name": "markAsDirty",
154
+ "type": "function",
155
+ "detail": "",
156
+ "info": "Marks all controls in the FormGroup as dirty.\n\n---\n\n### Function signature\n\n```\nmarkAsDirty(options?: object): void\n```\n\n---\n\n### Examples\n\n```ts\nform.markAsDirty();\n```",
157
+ "params": [
158
+ {
159
+ "name": "options",
160
+ "type": "object",
161
+ "optional": true
162
+ }
163
+ ]
164
+ },
165
+ {
166
+ "name": "markAsPristine",
167
+ "type": "function",
168
+ "detail": "",
169
+ "info": "Marks all controls in the FormGroup as pristine.\n\n---\n\n### Function signature\n\n```\nmarkAsPristine(options?: object): void\n```\n\n---\n\n### Examples\n\n```ts\nform.markAsPristine();\n```",
170
+ "params": [
171
+ {
172
+ "name": "options",
173
+ "type": "object",
174
+ "optional": true
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ "name": "disable",
180
+ "type": "function",
181
+ "detail": "Disables the control",
182
+ "info": "Disables the FormGroup and all its child controls.\n\n---\n\n### Function signature\n\n```\ndisable(options?: object): void\n```\n\n---\n\n### Examples\n\n```ts\nform.disable();\n```",
183
+ "params": [
184
+ {
185
+ "name": "options",
186
+ "type": "object",
187
+ "optional": true
188
+ }
189
+ ]
190
+ },
191
+ {
192
+ "name": "enable",
193
+ "type": "function",
194
+ "detail": "Enables the control",
195
+ "info": "Enables the FormGroup and all its child controls.\n\n---\n\n### Function signature\n\n```\nenable(options?: object): void\n```\n\n---\n\n### Examples\n\n```ts\nform.enable();\n```",
196
+ "params": [
197
+ {
198
+ "name": "options",
199
+ "type": "object",
200
+ "optional": true
201
+ }
202
+ ]
203
+ },
204
+ {
205
+ "name": "updateValueAndValidity",
206
+ "type": "function",
207
+ "detail": "Recalculates the value and validation status",
208
+ "info": "Recalculates the value and validation status of the FormGroup.\n\n---\n\n### Function signature\n\n```\nupdateValueAndValidity(options?: object): void\n```\n\n---\n\n### Examples\n\n```ts\nform.updateValueAndValidity();\n```",
209
+ "params": [
210
+ {
211
+ "name": "options",
212
+ "type": "object",
213
+ "optional": true
214
+ }
215
+ ]
216
+ }
217
+ ]
218
+ }
@@ -0,0 +1,112 @@
1
+ [
2
+ {
3
+ "name": "formatDate",
4
+ "type": "function",
5
+ "detail": "Formats a date value",
6
+ "info": "Formats an ISO date string into a localized date representation.\n\n---\n\n### Function signature\n\n```\nformatDate(isoDate: string | null | undefined, options?: Intl.DateTimeFormatOptions, locale?: string): string\n```\n\n---\n\n### Examples\n\n```feel\nformatDate(\"2024-01-15\")\n// \"15/01/2024\"\n\nformatDate(\"2024-01-15\", { month: \"long\" })\n// \"15 gennaio 2024\"\n\nformatDate(null)\n// \"\"\n```",
7
+ "params": [
8
+ {
9
+ "name": "isoDate",
10
+ "type": "string | null | undefined"
11
+ },
12
+ {
13
+ "name": "options",
14
+ "type": "Intl.DateTimeFormatOptions",
15
+ "optional": true
16
+ },
17
+ {
18
+ "name": "locale",
19
+ "type": "string",
20
+ "optional": true
21
+ }
22
+ ]
23
+ },
24
+ {
25
+ "name": "formatTime",
26
+ "type": "function",
27
+ "detail": "Formats a time value",
28
+ "info": "Formats an ISO date string into a localized time representation using a 24-hour clock.\n\n---\n\n### Function signature\n\n```\nformatTime(isoDate: string | null | undefined, options?: Intl.DateTimeFormatOptions, locale?: string): string\n```\n\n---\n\n### Examples\n\n```feel\nformatTime(\"2024-01-15T14:30:45\")\n// \"14:30:45\"\n\nformatTime(\"2024-01-15T14:30:45\", { second: undefined })\n// \"14:30\"\n```",
29
+ "params": [
30
+ {
31
+ "name": "isoDate",
32
+ "type": "string | null | undefined"
33
+ },
34
+ {
35
+ "name": "options",
36
+ "type": "Intl.DateTimeFormatOptions",
37
+ "optional": true
38
+ },
39
+ {
40
+ "name": "locale",
41
+ "type": "string",
42
+ "optional": true
43
+ }
44
+ ]
45
+ },
46
+ {
47
+ "name": "formatDateTime",
48
+ "type": "function",
49
+ "detail": "Formats a date and time value",
50
+ "info": "Formats an ISO date string into a localized date and time representation.\n\n---\n\n### Function signature\n\n```\nformatDateTime(isoDate: string | null | undefined, options?: Intl.DateTimeFormatOptions, locale?: string): string\n```\n\n---\n\n### Examples\n\n```feel\nformatDateTime(\"2024-01-15T14:30:45\")\n// \"15/01/2024 14:30:45\"\n```",
51
+ "params": [
52
+ {
53
+ "name": "isoDate",
54
+ "type": "string | null | undefined"
55
+ },
56
+ {
57
+ "name": "options",
58
+ "type": "Intl.DateTimeFormatOptions",
59
+ "optional": true
60
+ },
61
+ {
62
+ "name": "locale",
63
+ "type": "string",
64
+ "optional": true
65
+ }
66
+ ]
67
+ },
68
+ {
69
+ "name": "formatCurrency",
70
+ "type": "function",
71
+ "detail": "Formats a currency value",
72
+ "info": "Formats a numeric value as a localized currency string.\n\n---\n\n### Function signature\n\n```\nformatCurrency(value: number, currency?: string, locale?: string): string\n```\n\n---\n\n### Examples\n\n```feel\nformatCurrency(1234.5)\n// \"€ 1.234,50\"\n\nformatCurrency(1234.5, \"USD\", \"en-US\")\n// \"$1,234.50\"\n```",
73
+ "params": [
74
+ {
75
+ "name": "value",
76
+ "type": "number"
77
+ },
78
+ {
79
+ "name": "currency",
80
+ "type": "string",
81
+ "optional": true
82
+ },
83
+ {
84
+ "name": "locale",
85
+ "type": "string",
86
+ "optional": true
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ "name": "formatNumber",
92
+ "type": "function",
93
+ "detail": "Formats a numeric value",
94
+ "info": "Formats a numeric value using localized decimal formatting and a fixed number of decimal places.\n\n---\n\n### Function signature\n\n```\nformatNumber(value: number, decimals?: number, locale?: string): string\n```\n\n---\n\n### Examples\n\n```feel\nformatNumber(1234.567)\n// \"1.234,57\"\n\nformatNumber(1234.5, 0)\n// \"1.235\"\n\nformatNumber(1234.5, 3, \"en-US\")\n// \"1,234.500\"\n```",
95
+ "params": [
96
+ {
97
+ "name": "value",
98
+ "type": "number"
99
+ },
100
+ {
101
+ "name": "decimals",
102
+ "type": "number",
103
+ "optional": true
104
+ },
105
+ {
106
+ "name": "locale",
107
+ "type": "string",
108
+ "optional": true
109
+ }
110
+ ]
111
+ }
112
+ ]
@@ -0,0 +1,53 @@
1
+ [
2
+ {
3
+ "name": "invokable",
4
+ "type": "function",
5
+ "detail": "Wraps an invokable object into a function",
6
+ "info": "Wraps an object exposing an `invoke` method into a callable function.\n\n---\n\n### Function signature\n\n```\ninvokable(func: any): Function\n```\n\n---\n\n### Notes\n\nIf the provided object does not expose an `invoke` method, a no-op function is returned.\n\n---\n\n### Examples\n\n```ts\nconst fn = {\n invoke: (args: any[]) => console.log(args)\n};\n\nconst wrapped = invokable(fn);\nwrapped(1, 2, 3);\n```",
7
+ "params": [
8
+ {
9
+ "name": "func",
10
+ "type": "any"
11
+ }
12
+ ]
13
+ },
14
+ {
15
+ "name": "executeOnce",
16
+ "type": "function",
17
+ "detail": "Executes a callback once on an observable",
18
+ "info": "Executes a callback when the first value is emitted by an observable.\n\n---\n\n### Function signature\n\n```\nexecuteOnce<T>(observable: Observable<T>, callback: any): void\n```\n\n---\n\n### Notes\n\nThe observable is automatically completed after the first emitted value using `take(1)`.\n\n---\n\n### Examples\n\n```ts\nexecuteOnce(userLoaded$, {\n invoke: user => console.log(user)\n});\n```",
19
+ "params": [
20
+ {
21
+ "name": "observable",
22
+ "type": "Observable<any>"
23
+ },
24
+ {
25
+ "name": "callback",
26
+ "type": "any"
27
+ }
28
+ ]
29
+ },
30
+ {
31
+ "name": "openForm",
32
+ "type": "function",
33
+ "detail": "Opens a form dialog",
34
+ "info": "Opens a dialog using a form template or a form schema object.\n\n---\n\n### Function signature\n\n```\nopenForm(template: string | object, options: DialogOptions): void\n```\n\n---\n\n### Notes\n\nIf a template name is provided, the form schema is resolved through metadata. Dependency injection is applied to the dialog context.\n\n---\n\n### Examples\n\n```ts\nopenForm(\"userForm\", {\n title: \"Edit user\"\n});\n```\n\n```ts\nopenForm({ forms: [] }, {\n title: \"Custom form\",\n buttons: \"OKCancel\"\n});\n```",
35
+ "params": [
36
+ {
37
+ "name": "template",
38
+ "type": "string | object"
39
+ },
40
+ {
41
+ "name": "options",
42
+ "type": "DialogOptions"
43
+ }
44
+ ]
45
+ },
46
+ {
47
+ "name": "newGuid",
48
+ "type": "function",
49
+ "detail": "Generates a new unique identifier",
50
+ "info": "Generates and returns a new globally unique identifier.\n\n---\n\n### Function signature\n\n```\nnewGuid(): string\n```\n\n---\n\n### Examples\n\n```ts\nconst id = newGuid();\n// \"550e8400-e29b-41d4-a716-446655440000\"\n```",
51
+ "params": []
52
+ }
53
+ ]
@@ -0,0 +1,14 @@
1
+ [
2
+ {
3
+ "name": "control",
4
+ "type": "function",
5
+ "detail": "Returns a form control by name",
6
+ "info": "Returns the form control associated with the provided control name.\n\n---\n\n### Function signature\n\n```\ncontrol(name: string): Control | null\n```\n\n---\n\n### Notes\n\nThe control is resolved from the local registry. If not found, the lookup continues in parent scopes. A name starting with `\"../\"` explicitly resolves the control from the parent scope.\n\n---\n\n### Examples\n\n```ts\ncontrol(\"username\")\n```\n\n```ts\ncontrol(\"address\")\n```\n\n```ts\n// Resolve control from parent scope\ncontrol(\"../total\")\n```\n\n```ts\n// Returns null if not found\ncontrol(\"unknown\")\n```",
7
+ "params": [
8
+ {
9
+ "name": "name",
10
+ "type": "string"
11
+ }
12
+ ]
13
+ }
14
+ ]
@@ -52,22 +52,38 @@ export class SetFilterComponent {
52
52
  type: 'excludeAll'
53
53
  };
54
54
  }
55
+ const filterType = this.getFilterType();
55
56
  const filters = selectedValues.map(value => ({
56
- filterType: 'number',
57
+ filterType: filterType,
57
58
  type: 'equals',
58
59
  filter: value
59
60
  }));
60
61
  if (filters.length === 1)
61
62
  return filters[0];
62
63
  return {
63
- filterType: 'number',
64
+ filterType: filterType,
64
65
  operator: 'OR',
65
66
  conditions: filters
66
67
  };
67
68
  }
68
69
  setModel(model) {
69
- const selected = model?.values ?? this.options.map(o => o.value);
70
- this.options.forEach(o => o.selected = selected.includes(o.value));
70
+ // no filter = all selected
71
+ if (model == null)
72
+ return;
73
+ this.selectAll = false;
74
+ // all unselected
75
+ if (model?.type === 'excludeAll') {
76
+ this.options.forEach(o => o.selected = false);
77
+ }
78
+ // one selected
79
+ else if (model?.type === 'equals') {
80
+ this.options.forEach(o => o.selected = (o.value == model.filter));
81
+ }
82
+ // many selected
83
+ else if (model?.operator === 'OR' && Array.isArray(model.conditions)) {
84
+ const selected = model.conditions.map((x) => x.filter);
85
+ this.options.forEach(o => o.selected = selected.includes(o.value));
86
+ }
71
87
  this.updateFilteredOptions();
72
88
  }
73
89
  onSelectionChange() {
@@ -99,6 +115,20 @@ export class SetFilterComponent {
99
115
  resolvePath(obj, path) {
100
116
  return path.split('.').reduce((acc, part) => acc?.[part], obj);
101
117
  }
118
+ getFilterType() {
119
+ const cellDataType = this.params?.colDef?.cellDataType;
120
+ switch (cellDataType) {
121
+ case 'number':
122
+ return 'number';
123
+ case 'date':
124
+ case 'dateTime':
125
+ return 'date';
126
+ case 'text':
127
+ return 'text';
128
+ default:
129
+ return 'number';
130
+ }
131
+ }
102
132
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SetFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
103
133
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SetFilterComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div style=\"padding: 5px;background-color: white;\">\r\n\r\n <div style=\"padding: 5px\">\r\n <ngx-sirio-input type=\"text\"\r\n [placeholder]=\"Texts.TypeToSearch\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange()\">\r\n </ngx-sirio-input>\r\n </div>\r\n\r\n <div style=\"padding: 5px; max-height: 200px; overflow-y: auto;\">\r\n <ngx-sirio-checkbox [(ngModel)]=\"selectAll\" (ngModelChange)=\"onSelectAllChange()\">{{Texts.SelectAll}}</ngx-sirio-checkbox>\r\n\r\n <ngx-sirio-checkbox-group>\r\n <ngx-sirio-checkbox *ngFor=\"let option of filteredOptions\"\r\n [(ngModel)]=\"option.selected\"\r\n [value]=\"option.value\"\r\n (change)=\"onSelectionChange()\">\r\n {{ option.label }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </div>\r\n\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SirioInputComponent, selector: "ngx-sirio-input", inputs: ["disabledState", "value", "label", "labelPopover", "ariaLabelPopoverButton", "type", "name", "placeholder", "textHelp", "textFeedback", "rows", "cols", "ariaLabel", "ariaAutocomplete", "ariaInvalid", "ariaDescribedBy", "role"], outputs: ["focusEvent", "inputEvent", "blurEvent", "keyupEvent", "keydownEvent"] }, { kind: "component", type: SirioCheckboxComponent, selector: "ngx-sirio-checkbox", inputs: ["disabled", "name", "textHelp", "textFeedback", "value", "ariaInvalid", "ariaDescribedBy", "disabledState", "checked"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "component", type: SirioCheckboxGroupComponent, selector: "ngx-sirio-checkbox-group", inputs: ["textHelp", "textFeedback", "label", "labelPopover", "ariaLabelPopoverButton", "ariaLabel", "ariaInvalid", "ariaDescribedBy", "disabledState", "value"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }] });
104
134
  }
@@ -108,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
108
138
  SirioCheckboxComponent, SirioCheckboxGroupComponent,
109
139
  SirioButtonComponent], template: "<div style=\"padding: 5px;background-color: white;\">\r\n\r\n <div style=\"padding: 5px\">\r\n <ngx-sirio-input type=\"text\"\r\n [placeholder]=\"Texts.TypeToSearch\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange()\">\r\n </ngx-sirio-input>\r\n </div>\r\n\r\n <div style=\"padding: 5px; max-height: 200px; overflow-y: auto;\">\r\n <ngx-sirio-checkbox [(ngModel)]=\"selectAll\" (ngModelChange)=\"onSelectAllChange()\">{{Texts.SelectAll}}</ngx-sirio-checkbox>\r\n\r\n <ngx-sirio-checkbox-group>\r\n <ngx-sirio-checkbox *ngFor=\"let option of filteredOptions\"\r\n [(ngModel)]=\"option.selected\"\r\n [value]=\"option.value\"\r\n (change)=\"onSelectionChange()\">\r\n {{ option.label }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </div>\r\n\r\n</div>\r\n" }]
110
140
  }] });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0RmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2NvbXBvbmVudHMvc2V0RmlsdGVyL3NldEZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9jb21wb25lbnRzL3NldEZpbHRlci9zZXRmaWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBUy9DLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsTUFBTSxDQUFpQjtJQUN2QixTQUFTLENBQVU7SUFFM0IsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUVkLFNBQVMsR0FBWSxJQUFJLENBQUM7SUFDMUIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4QixPQUFPLEdBQXVELEVBQUUsQ0FBQztJQUNqRSxlQUFlLEdBQXdCLEVBQUUsQ0FBQztJQUUxQyxNQUFNLENBQUMsTUFBcUI7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQU0sQ0FBQztRQUV0QyxNQUFNLEdBQUcsR0FBRyxNQUFN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LEVBQUUsQ0FDN0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFDLEdBQVEsRUFBRSxJQUFZO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRSxDQUFDO3dHQXZIVSxrQkFBa0I7NEZBQWxCLGtCQUFrQix3RUNoQi9CLHE4QkF3QkEsMkNEWlksWUFBWSwySkFBRSxXQUFXLCtWQUFFLG1CQUFtQiwyWEFDcEQsc0JBQXNCLHFQQUFFLDJCQUEyQjs7NEZBRzVDLGtCQUFrQjtrQkFQOUIsU0FBUztpQ0FFSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQjt3QkFDcEQsc0JBQXNCLEVBQUUsMkJBQTJCO3dCQUNuRCxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSUZpbHRlclBhcmFtcywgSURvZXNGaWx0ZXJQYXNzUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBJRmlsdGVyQW5ndWxhckNvbXAgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvYW5ndWxhcic7XHJcbmltcG9ydCB7IFNpcmlvSW5wdXRDb21wb25lbnQsIFNpcmlvQ2hlY2tib3hHcm91cENvbXBvbmVudCwgU2lyaW9DaGVja2JveENvbXBvbmVudCwgU2lyaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgaXNSZWNvcmQgfSBmcm9tICcuLi8uLi9jb21tb24vcmVjb3JkJztcclxuaW1wb3J0IHsgVGV4dHMgfSBmcm9tICcuLi8uLi9sb2NhbGUvbG9jYWxlLWl0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXRmaWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFNpcmlvSW5wdXRDb21wb25lbnRcclxuICAgICwgU2lyaW9DaGVja2JveENvbXBvbmVudCwgU2lyaW9DaGVja2JveEdyb3VwQ29tcG9uZW50XHJcbiAgICAsIFNpcmlvQnV0dG9uQ29tcG9uZW50XSwgIFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2V0RmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgSUZpbHRlckFuZ3VsYXJDb21wIHtcclxuICBwcml2YXRlIHBhcmFtcyE6IElGaWx0ZXJQYXJhbXM7XHJcbiAgcHJpdmF0ZSBmaWVsZE5hbWUhOiBzdHJpbmc7XHJcblxyXG4gIFRleHRzID0gVGV4dHM7XHJcblxyXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIG9wdGlvbnM6IHsgdmFsdWU6IGFueTsgbGFiZWw6IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW4gfVtdID0gW107XHJcbiAgZmlsdGVyZWRPcHRpb25zOiB0eXBlb2YgdGhpcy5vcHRpb25zID0gW107XHJcblxyXG4gIGFnSW5pdChwYXJhbXM6IElGaWx0ZXJQYXJhbXMpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgdGhpcy5maWVsZE5hbWUgPSBwYXJhbXMuY29sRGVmLmZpZWxkITtcclxuXHJcbiAgICBjb25zdCBtYXAgPSBwYXJhbXMuY29sRGVmLmZpbHRlclBhcmFtcz8ubWFwO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdCA9IGlzUmVjb3JkKFxyXG4gICAgICBtYXAsXHJcbiAgICAgIGtleSA9PiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyxcclxuICAgICAgdmFsID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmVudHJpZXMobWFwKS5tYXAoKFtrZXksIGxhYmVsXSkgPT4gKHtcclxuICAgICAgICB2YWx1ZTogdGhpcy5wYXJzZUtleShrZXkpLFxyXG4gICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICBzZWxlY3RlZDogdHJ1ZVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc107XHJcbiAgfVxyXG5cclxuICBpc0ZpbHRlckFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc29tZShvID0+ICFvLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIGRvZXNGaWx0ZXJQYXNzKHBhcmFtczogSURvZXNGaWx0ZXJQYXNzUGFyYW1zKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVzb2x2ZVBhdGgocGFyYW1zLmRhdGEsIHRoaXMuZmllbGROYW1lKTtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc29tZShvID0+IG8uc2VsZWN0ZWQgJiYgby52YWx1ZSA9PT0gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMub3B0aW9uc1xyXG4gICAgICAuZmlsdGVyKG8gPT4gby5zZWxlY3RlZClcclxuICAgICAgLm1hcChvID0+IG8udmFsdWUpO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGgpIHsgXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWx0ZXJUeXBlOiAndGV4dCcsXHJcbiAgICAgICAgdHlwZTogJ2V4Y2x1ZGVBbGwnXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gc2VsZWN0ZWRWYWx1ZXMubWFwKHZhbHVlID0+ICh7XHJcbiAgICAgIGZpbHRlclR5cGU6ICdudW1iZXInLFxyXG4gICAgICB0eXBlOiAnZXF1YWxzJyxcclxuICAgICAgZmlsdGVyOiB2YWx1ZVxyXG4gICAgfSkpO1xyXG5cclxuICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgcmV0dXJuIGZpbHRlcnNbMF07XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZmlsdGVyVHlwZTogJ251bWJlcicsXHJcbiAgICAgIG9wZXJhdG9yOiAnT1InLFxyXG4gICAgICBjb25kaXRpb25zOiBmaWx0ZXJzXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRNb2RlbChtb2RlbDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IG1vZGVsPy52YWx1ZXMgPz8gdGhpcy5vcHRpb25zLm1hcChvID0+IG8udmFsdWUpO1xyXG4gICAgdGhpcy5vcHRpb25zLmZvckVhY2gobyA9PiBvLnNlbGVjdGVkID0gc2VsZWN0ZWQuaW5jbHVkZXMoby52YWx1ZSkpO1xyXG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZE9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXJhbXMuZmlsdGVyQ2hhbmdlZENhbGxiYWNrKCk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdEFsbENoYW5nZSgpOiB2b2lkIHsgICAgXHJcbiAgICB0aGlzLnNldEFsbCh0aGlzLnNlbGVjdEFsbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZyB7XHJcbiAgICBpZiAoa2V5ID09PSAndHJ1ZScpIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKGtleSA9PT0gJ2ZhbHNlJykgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgbnVtID0gTnVtYmVyKGtleSk7XHJcbiAgICByZXR1cm4gaXNOYU4obnVtKSA/IGtleSA6IG51bTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QWxsKHNlbGVjdDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5vcHRpb25zLmZvckVhY2gobyA9PiBvLnNlbGVjdGVkID0gc2VsZWN0KTtcclxuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XHJcbiAgICB0aGlzLnBhcmFtcy5maWx0ZXJDaGFuZ2VkQ2FsbGJhY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRmlsdGVyZWRPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIobyA9PlxyXG4gICAgICBvLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZVBhdGgob2JqOiBhbnksIHBhdGg6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2M/LltwYXJ0XSwgb2JqKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBzdHlsZT1cInBhZGRpbmc6IDVweDtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIj5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDVweFwiPlxyXG4gICAgPG5neC1zaXJpby1pbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJUZXh0cy5UeXBlVG9TZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCI+XHJcbiAgICA8L25neC1zaXJpby1pbnB1dD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDVweDsgbWF4LWhlaWdodDogMjAwcHg7IG92ZXJmbG93LXk6IGF1dG87XCI+XHJcbiAgICA8bmd4LXNpcmlvLWNoZWNrYm94IFsobmdNb2RlbCldPVwic2VsZWN0QWxsXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoKVwiPnt7VGV4dHMuU2VsZWN0QWxsfX08L25neC1zaXJpby1jaGVja2JveD5cclxuXHJcbiAgICA8bmd4LXNpcmlvLWNoZWNrYm94LWdyb3VwPlxyXG4gICAgICA8bmd4LXNpcmlvLWNoZWNrYm94ICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm9wdGlvbi5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCI+XHJcbiAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgIDwvbmd4LXNpcmlvLWNoZWNrYm94PlxyXG4gICAgPC9uZ3gtc2lyaW8tY2hlY2tib3gtZ3JvdXA+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0RmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2NvbXBvbmVudHMvc2V0RmlsdGVyL3NldEZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9jb21wb25lbnRzL3NldEZpbHRlci9zZXRmaWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBUy9DLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsTUFBTSxDQUFpQjtJQUN2QixTQUFTLENBQVU7SUFFM0IsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUVkLFNBQVMsR0FBWSxJQUFJLENBQUM7SUFDMUIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4QixPQUFPLEdBQXVELEVBQUUsQ0FBQztJQUNqRSxlQUFlLEdBQXdCLEVBQUUsQ0FBQztJQUUxQyxNQUFNLENBQUMsTUFBcUI7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQU0sQ0FBQztRQUV0QyxNQUFNLEdBQUcsR0FBRyxNQUFN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LE1BQU0sRUFBRSxZQUFZLENBQUM7UUFFdkQsUUFBUSxZQUFZLEVBQUUsQ0FBQztZQUNyQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7WUFDbEIsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxNQUFNLENBQUM7WUFDaEIsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDO1lBQ2hCO2dCQUNFLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUM7SUFFSCxDQUFDO3dHQTdKVSxrQkFBa0I7NEZBQWxCLGtCQUFrQix3RUNoQi9CLHE4QkF3QkEsMkNEWlksWUFBWSwySkFBRSxXQUFXLCtWQUFFLG1CQUFtQiwyWEFDcEQsc0JBQXNCLHFQQUFFLDJCQUEyQjs7NEZBRzVDLGtCQUFrQjtrQkFQOUIsU0FBUztpQ0FFSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQjt3QkFDcEQsc0JBQXNCLEVBQUUsMkJBQTJCO3dCQUNuRCxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSUZpbHRlclBhcmFtcywgSURvZXNGaWx0ZXJQYXNzUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBJRmlsdGVyQW5ndWxhckNvbXAgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvYW5ndWxhcic7XHJcbmltcG9ydCB7IFNpcmlvSW5wdXRDb21wb25lbnQsIFNpcmlvQ2hlY2tib3hHcm91cENvbXBvbmVudCwgU2lyaW9DaGVja2JveENvbXBvbmVudCwgU2lyaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgaXNSZWNvcmQgfSBmcm9tICcuLi8uLi9jb21tb24vcmVjb3JkJztcclxuaW1wb3J0IHsgVGV4dHMgfSBmcm9tICcuLi8uLi9sb2NhbGUvbG9jYWxlLWl0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXRmaWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFNpcmlvSW5wdXRDb21wb25lbnRcclxuICAgICwgU2lyaW9DaGVja2JveENvbXBvbmVudCwgU2lyaW9DaGVja2JveEdyb3VwQ29tcG9uZW50XHJcbiAgICAsIFNpcmlvQnV0dG9uQ29tcG9uZW50XSwgIFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2V0RmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgSUZpbHRlckFuZ3VsYXJDb21wIHtcclxuICBwcml2YXRlIHBhcmFtcyE6IElGaWx0ZXJQYXJhbXM7XHJcbiAgcHJpdmF0ZSBmaWVsZE5hbWUhOiBzdHJpbmc7XHJcblxyXG4gIFRleHRzID0gVGV4dHM7XHJcblxyXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIG9wdGlvbnM6IHsgdmFsdWU6IGFueTsgbGFiZWw6IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW4gfVtdID0gW107XHJcbiAgZmlsdGVyZWRPcHRpb25zOiB0eXBlb2YgdGhpcy5vcHRpb25zID0gW107XHJcblxyXG4gIGFnSW5pdChwYXJhbXM6IElGaWx0ZXJQYXJhbXMpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgdGhpcy5maWVsZE5hbWUgPSBwYXJhbXMuY29sRGVmLmZpZWxkITtcclxuXHJcbiAgICBjb25zdCBtYXAgPSBwYXJhbXMuY29sRGVmLmZpbHRlclBhcmFtcz8ubWFwO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdCA9IGlzUmVjb3JkKFxyXG4gICAgICBtYXAsXHJcbiAgICAgIGtleSA9PiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyxcclxuICAgICAgdmFsID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmVudHJpZXMobWFwKS5tYXAoKFtrZXksIGxhYmVsXSkgPT4gKHtcclxuICAgICAgICB2YWx1ZTogdGhpcy5wYXJzZUtleShrZXkpLFxyXG4gICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICBzZWxlY3RlZDogdHJ1ZVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc107XHJcbiAgfVxyXG5cclxuICBpc0ZpbHRlckFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc29tZShvID0+ICFvLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIGRvZXNGaWx0ZXJQYXNzKHBhcmFtczogSURvZXNGaWx0ZXJQYXNzUGFyYW1zKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVzb2x2ZVBhdGgocGFyYW1zLmRhdGEsIHRoaXMuZmllbGROYW1lKTtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc29tZShvID0+IG8uc2VsZWN0ZWQgJiYgby52YWx1ZSA9PT0gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMub3B0aW9uc1xyXG4gICAgICAuZmlsdGVyKG8gPT4gby5zZWxlY3RlZClcclxuICAgICAgLm1hcChvID0+IG8udmFsdWUpO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGgpIHsgXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWx0ZXJUeXBlOiAndGV4dCcsXHJcbiAgICAgICAgdHlwZTogJ2V4Y2x1ZGVBbGwnXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXJUeXBlID0gdGhpcy5nZXRGaWx0ZXJUeXBlKCk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVycyA9IHNlbGVjdGVkVmFsdWVzLm1hcCh2YWx1ZSA9PiAoe1xyXG4gICAgICBmaWx0ZXJUeXBlOiBmaWx0ZXJUeXBlLFxyXG4gICAgICB0eXBlOiAnZXF1YWxzJyxcclxuICAgICAgZmlsdGVyOiB2YWx1ZVxyXG4gICAgfSkpO1xyXG5cclxuICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgcmV0dXJuIGZpbHRlcnNbMF07XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZmlsdGVyVHlwZTogZmlsdGVyVHlwZSxcclxuICAgICAgb3BlcmF0b3I6ICdPUicsXHJcbiAgICAgIGNvbmRpdGlvbnM6IGZpbHRlcnNcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldE1vZGVsKG1vZGVsOiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBubyBmaWx0ZXIgPSBhbGwgc2VsZWN0ZWRcclxuICAgIGlmIChtb2RlbCA9PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBhbGwgdW5zZWxlY3RlZFxyXG4gICAgaWYgKG1vZGVsPy50eXBlID09PSAnZXhjbHVkZUFsbCcpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2gobyA9PiBvLnNlbGVjdGVkID0gZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgLy8gb25lIHNlbGVjdGVkXHJcbiAgICBlbHNlIGlmIChtb2RlbD8udHlwZSA9PT0gJ2VxdWFscycpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2gobyA9PiBvLnNlbGVjdGVkID0gKG8udmFsdWUgPT0gbW9kZWwuZmlsdGVyKSk7XHJcbiAgICB9XHJcbiAgICAvLyBtYW55IHNlbGVjdGVkXHJcbiAgICBlbHNlIGlmIChtb2RlbD8ub3BlcmF0b3IgPT09ICdPUicgJiYgQXJyYXkuaXNBcnJheShtb2RlbC5jb25kaXRpb25zKSkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZCA9IG1vZGVsLmNvbmRpdGlvbnMubWFwKCh4OiBhbnkpID0+IHguZmlsdGVyKTtcclxuICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2gobyA9PiBvLnNlbGVjdGVkID0gc2VsZWN0ZWQuaW5jbHVkZXMoby52YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyYW1zLmZpbHRlckNoYW5nZWRDYWxsYmFjaygpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RBbGxDaGFuZ2UoKTogdm9pZCB7ICAgIFxyXG4gICAgdGhpcy5zZXRBbGwodGhpcy5zZWxlY3RBbGwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcge1xyXG4gICAgaWYgKGtleSA9PT0gJ3RydWUnKSByZXR1cm4gdHJ1ZTtcclxuICAgIGlmIChrZXkgPT09ICdmYWxzZScpIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IG51bSA9IE51bWJlcihrZXkpO1xyXG4gICAgcmV0dXJuIGlzTmFOKG51bSkgPyBrZXkgOiBudW07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFsbChzZWxlY3Q6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKG8gPT4gby5zZWxlY3RlZCA9IHNlbGVjdCk7XHJcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xyXG4gICAgdGhpcy5wYXJhbXMuZmlsdGVyQ2hhbmdlZENhbGxiYWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKG8gPT5cclxuICAgICAgby5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVQYXRoKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjPy5bcGFydF0sIG9iaik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlclR5cGUoKSB7XHJcbiAgICBjb25zdCBjZWxsRGF0YVR5cGUgPSB0aGlzLnBhcmFtcz8uY29sRGVmPy5jZWxsRGF0YVR5cGU7XHJcblxyXG4gICAgc3dpdGNoIChjZWxsRGF0YVR5cGUpIHtcclxuICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICByZXR1cm4gJ251bWJlcic7XHJcbiAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICBjYXNlICdkYXRlVGltZSc6XHJcbiAgICAgICAgcmV0dXJuICdkYXRlJztcclxuICAgICAgY2FzZSAndGV4dCc6XHJcbiAgICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ251bWJlcic7XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcbn1cclxuIiwiPGRpdiBzdHlsZT1cInBhZGRpbmc6IDVweDtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIj5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDVweFwiPlxyXG4gICAgPG5neC1zaXJpby1pbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJUZXh0cy5UeXBlVG9TZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCI+XHJcbiAgICA8L25neC1zaXJpby1pbnB1dD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDVweDsgbWF4LWhlaWdodDogMjAwcHg7IG92ZXJmbG93LXk6IGF1dG87XCI+XHJcbiAgICA8bmd4LXNpcmlvLWNoZWNrYm94IFsobmdNb2RlbCldPVwic2VsZWN0QWxsXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoKVwiPnt7VGV4dHMuU2VsZWN0QWxsfX08L25neC1zaXJpby1jaGVja2JveD5cclxuXHJcbiAgICA8bmd4LXNpcmlvLWNoZWNrYm94LWdyb3VwPlxyXG4gICAgICA8bmd4LXNpcmlvLWNoZWNrYm94ICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm9wdGlvbi5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCI+XHJcbiAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgIDwvbmd4LXNpcmlvLWNoZWNrYm94PlxyXG4gICAgPC9uZ3gtc2lyaW8tY2hlY2tib3gtZ3JvdXA+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuIl19
@@ -1,7 +1,54 @@
1
1
  import { ContainerControl } from "./control";
2
+ import { SirioAccordionComponent } from "ngx-sirio-lib";
2
3
  export class AccordionControl extends ContainerControl {
3
- getAccordion() {
4
- return this.getComponentRef();
4
+ openPanel(index) {
5
+ const panels = this.accordion.panels?.toArray?.();
6
+ if (!panels
7
+ || panels.length === 0
8
+ || (index < 0 || index >= panels.length)
9
+ || panels[index].panelIsOpen) {
10
+ return;
11
+ }
12
+ const event = new Event('');
13
+ panels[index].onPanelHeaderClicked(event);
14
+ }
15
+ ;
16
+ //#region State
17
+ onLoadState() {
18
+ const state = this.getState();
19
+ if (!state || !Array.isArray(state.openIndexes)) {
20
+ return;
21
+ }
22
+ for (const index of state.openIndexes) {
23
+ this.openPanel(index);
24
+ }
25
+ }
26
+ onSaveState() {
27
+ const state = this.createState();
28
+ if (state) {
29
+ this.setState(state);
30
+ }
31
+ }
32
+ createState() {
33
+ const panels = this.accordion?.panels?.toArray?.();
34
+ if (!panels || panels.length === 0) {
35
+ return null;
36
+ }
37
+ const openIndexes = panels
38
+ .map((panel, index) => (panel?.panelIsOpen ? index : null))
39
+ .filter((index) => index !== null);
40
+ return openIndexes.length > 0
41
+ ? { openIndexes }
42
+ : null;
43
+ }
44
+ //#endregion
45
+ //#region Private Members
46
+ get accordion() {
47
+ const ref = this.getComponentRef();
48
+ if (!(ref instanceof SirioAccordionComponent)) {
49
+ throw new Error('ComponentRef is not a SirioAccordionComponent');
50
+ }
51
+ return ref;
5
52
  }
6
53
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvY29udHJvbHMvYWNjb3JkaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUc3QyxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZ0JBQWdCO0lBRTVDLFlBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUE2QixDQUFDO0lBQzNELENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRhaW5lckNvbnRyb2wgfSBmcm9tIFwiLi9jb250cm9sXCI7XHJcbmltcG9ydCB7IFNpcmlvQWNjb3JkaW9uQ29tcG9uZW50IH0gZnJvbSBcIm5neC1zaXJpby1saWJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db250cm9sIGV4dGVuZHMgQ29udGFpbmVyQ29udHJvbCB7XHJcblxyXG4gIHByaXZhdGUgZ2V0QWNjb3JkaW9uKCk6IFNpcmlvQWNjb3JkaW9uQ29tcG9uZW50IHtcclxuICAgIHJldHVybiB0aGlzLmdldENvbXBvbmVudFJlZigpIGFzIFNpcmlvQWNjb3JkaW9uQ29tcG9uZW50O1xyXG4gIH1cclxuXHJcbn1cclxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvY29udHJvbHMvYWNjb3JkaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQUVwRCxTQUFTLENBQUMsS0FBYTtRQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxNQUFNO2VBQ04sTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO2VBQ25CLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztlQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0IsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUFBLENBQUM7SUFFRixlQUFlO0lBRU4sV0FBVztRQUNsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUF5QixDQUFDO1FBRXJELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2hELE9BQU87UUFDVCxDQUFDO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVRLFdBQVc7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBRW5ELElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNO2FBQ3ZCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxRCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQW1CLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUM7UUFFdEQsT0FBTyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDM0IsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFO1lBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDO0lBRUQsWUFBWTtJQUVaLHlCQUF5QjtJQUV6QixJQUFZLFNBQVM7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSx1QkFBdUIsQ0FBQyxFQUFFLENBQUM7WUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FDYiwrQ0FBK0MsQ0FDaEQsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FJRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRhaW5lckNvbnRyb2wgfSBmcm9tIFwiLi9jb250cm9sXCI7XHJcbmltcG9ydCB7IFNpcmlvQWNjb3JkaW9uQ29tcG9uZW50IH0gZnJvbSBcIm5neC1zaXJpby1saWJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db250cm9sIGV4dGVuZHMgQ29udGFpbmVyQ29udHJvbCB7XHJcblxyXG4gIG9wZW5QYW5lbChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYW5lbHMgPSB0aGlzLmFjY29yZGlvbi5wYW5lbHM/LnRvQXJyYXk/LigpO1xyXG4gICAgaWYgKCFwYW5lbHNcclxuICAgICAgfHwgcGFuZWxzLmxlbmd0aCA9PT0gMFxyXG4gICAgICB8fCAoaW5kZXggPCAwIHx8IGluZGV4ID49IHBhbmVscy5sZW5ndGgpXHJcbiAgICAgIHx8IHBhbmVsc1tpbmRleF0ucGFuZWxJc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJycpO1xyXG4gICAgcGFuZWxzW2luZGV4XS5vblBhbmVsSGVhZGVyQ2xpY2tlZChldmVudCk7XHJcbiAgfTtcclxuXHJcbiAgLy8jcmVnaW9uIFN0YXRlXHJcblxyXG4gIG92ZXJyaWRlIG9uTG9hZFN0YXRlKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFN0YXRlPEFjY29yZGlvbkNvbnRyb2xTdGF0ZT4oKTtcclxuXHJcbiAgICBpZiAoIXN0YXRlIHx8ICFBcnJheS5pc0FycmF5KHN0YXRlLm9wZW5JbmRleGVzKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBpbmRleCBvZiBzdGF0ZS5vcGVuSW5kZXhlcykge1xyXG4gICAgICB0aGlzLm9wZW5QYW5lbChpbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBvblNhdmVTdGF0ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5jcmVhdGVTdGF0ZSgpO1xyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVTdGF0ZSgpOiBBY2NvcmRpb25Db250cm9sU3RhdGUgfCBudWxsIHtcclxuICAgIGNvbnN0IHBhbmVscyA9IHRoaXMuYWNjb3JkaW9uPy5wYW5lbHM/LnRvQXJyYXk/LigpO1xyXG5cclxuICAgIGlmICghcGFuZWxzIHx8IHBhbmVscy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb3BlbkluZGV4ZXMgPSBwYW5lbHNcclxuICAgICAgLm1hcCgocGFuZWwsIGluZGV4KSA9PiAocGFuZWw/LnBhbmVsSXNPcGVuID8gaW5kZXggOiBudWxsKSlcclxuICAgICAgLmZpbHRlcigoaW5kZXgpOiBpbmRleCBpcyBudW1iZXIgPT4gaW5kZXggIT09IG51bGwpO1xyXG5cclxuICAgIHJldHVybiBvcGVuSW5kZXhlcy5sZW5ndGggPiAwXHJcbiAgICAgID8geyBvcGVuSW5kZXhlcyB9XHJcbiAgICAgIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUHJpdmF0ZSBNZW1iZXJzXHJcblxyXG4gIHByaXZhdGUgZ2V0IGFjY29yZGlvbigpOiBTaXJpb0FjY29yZGlvbkNvbXBvbmVudCB7XHJcbiAgICBjb25zdCByZWYgPSB0aGlzLmdldENvbXBvbmVudFJlZigpO1xyXG4gICAgaWYgKCEocmVmIGluc3RhbmNlb2YgU2lyaW9BY2NvcmRpb25Db21wb25lbnQpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnQ29tcG9uZW50UmVmIGlzIG5vdCBhIFNpcmlvQWNjb3JkaW9uQ29tcG9uZW50J1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlZjtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxufVxyXG5cclxuaW50ZXJmYWNlIEFjY29yZGlvbkNvbnRyb2xTdGF0ZSB7XHJcbiAgb3BlbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbDtcclxufVxyXG4iXX0=