@six-group/ui-library-angular 0.0.0-insider.8e861a9 → 0.0.0-insider.92fb7a6

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 (32) hide show
  1. package/fesm2022/six-group-ui-library-angular.mjs +503 -342
  2. package/fesm2022/six-group-ui-library-angular.mjs.map +1 -1
  3. package/lib/control-value-accessors/value-accessor.d.ts +1 -1
  4. package/lib/stencil-generated/components.d.ts +52 -6
  5. package/lib/stencil-generated/index.d.ts +1 -1
  6. package/lib/ui-library-angular-config.d.ts +2 -1
  7. package/lib/ui-library-angular.module.d.ts +1 -1
  8. package/package.json +6 -15
  9. package/esm2022/lib/control-value-accessors/checkbox-value-accessor.mjs +0 -41
  10. package/esm2022/lib/control-value-accessors/date-value-accessor.mjs +0 -41
  11. package/esm2022/lib/control-value-accessors/datepicker-value-accessor.mjs +0 -37
  12. package/esm2022/lib/control-value-accessors/numeric-value-accessor.mjs +0 -42
  13. package/esm2022/lib/control-value-accessors/radio-value-accessor.mjs +0 -62
  14. package/esm2022/lib/control-value-accessors/range-value-accessor.mjs +0 -42
  15. package/esm2022/lib/control-value-accessors/select-value-accessor.mjs +0 -37
  16. package/esm2022/lib/control-value-accessors/switch-value-accessor.mjs +0 -41
  17. package/esm2022/lib/control-value-accessors/text-value-accessor.mjs +0 -37
  18. package/esm2022/lib/control-value-accessors/timepicker-value-accessor.mjs +0 -37
  19. package/esm2022/lib/control-value-accessors/value-accessor.mjs +0 -144
  20. package/esm2022/lib/form/six-form.directive.mjs +0 -134
  21. package/esm2022/lib/link/six-router-link.directive.mjs +0 -61
  22. package/esm2022/lib/services/alert.service.mjs +0 -21
  23. package/esm2022/lib/services/validation-messages.service.mjs +0 -15
  24. package/esm2022/lib/sidebar/active-sidebar.directive.mjs +0 -110
  25. package/esm2022/lib/stencil-generated/angular-component-lib/utils.mjs +0 -59
  26. package/esm2022/lib/stencil-generated/components.mjs +0 -1414
  27. package/esm2022/lib/stencil-generated/index.mjs +0 -61
  28. package/esm2022/lib/ui-library-angular-config.mjs +0 -6
  29. package/esm2022/lib/ui-library-angular.module.mjs +0 -175
  30. package/esm2022/lib/validators/six-ui-library-validators.mjs +0 -203
  31. package/esm2022/public-api.mjs +0 -31
  32. package/esm2022/six-group-ui-library-angular.mjs +0 -5
@@ -1,37 +0,0 @@
1
- import { Directive, HostListener } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { ValueAccessor } from './value-accessor';
4
- import * as i0 from "@angular/core";
5
- export class TextValueAccessor extends ValueAccessor {
6
- constructor(injector, el) {
7
- super(injector, el);
8
- }
9
- handleInputEvent(el) {
10
- this.handleValueChange(el, el.value);
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextValueAccessor, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
13
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TextValueAccessor, selector: "six-input:not([type=number]),six-textarea", host: { listeners: { "input": "handleInputEvent($event.target)" } }, providers: [
14
- {
15
- provide: NG_VALUE_ACCESSOR,
16
- useExisting: TextValueAccessor,
17
- multi: true,
18
- },
19
- ], usesInheritance: true, ngImport: i0 }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextValueAccessor, decorators: [{
22
- type: Directive,
23
- args: [{
24
- selector: 'six-input:not([type=number]),six-textarea',
25
- providers: [
26
- {
27
- provide: NG_VALUE_ACCESSOR,
28
- useExisting: TextValueAccessor,
29
- multi: true,
30
- },
31
- ],
32
- }]
33
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { handleInputEvent: [{
34
- type: HostListener,
35
- args: ['input', ['$event.target']]
36
- }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC12YWx1ZS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29udHJvbC12YWx1ZS1hY2Nlc3NvcnMvdGV4dC12YWx1ZS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBWWpELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBQ2xELFlBQVksUUFBa0IsRUFBRSxFQUFjO1FBQzVDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUdELGdCQUFnQixDQUFDLEVBQXVCO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBUlUsaUJBQWlCO21HQUFqQixpQkFBaUIseUlBUmpCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLGlCQUFpQjtnQkFDOUIsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzs0RkFFVSxpQkFBaUI7a0JBVjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJDQUEyQztvQkFDckQsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsbUJBQW1COzRCQUM5QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjt3SEFPQyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnLi92YWx1ZS1hY2Nlc3Nvcic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3NpeC1pbnB1dDpub3QoW3R5cGU9bnVtYmVyXSksc2l4LXRleHRhcmVhJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogVGV4dFZhbHVlQWNjZXNzb3IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0VmFsdWVBY2Nlc3NvciBleHRlbmRzIFZhbHVlQWNjZXNzb3Ige1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIGVsKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQudGFyZ2V0J10pXG4gIGhhbmRsZUlucHV0RXZlbnQoZWw6IEhUTUxTaXhJbnB1dEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZVZhbHVlQ2hhbmdlKGVsLCBlbC52YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,37 +0,0 @@
1
- import { Directive, HostListener } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { ValueAccessor } from './value-accessor';
4
- import * as i0 from "@angular/core";
5
- export class TimepickerValueAccessor extends ValueAccessor {
6
- constructor(injector, el) {
7
- super(injector, el);
8
- }
9
- handleChangeEvent(el) {
10
- this.handleValueChange(el, el.value);
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimepickerValueAccessor, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
13
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TimepickerValueAccessor, selector: "six-timepicker", host: { listeners: { "change": "handleChangeEvent($event.target)" } }, providers: [
14
- {
15
- provide: NG_VALUE_ACCESSOR,
16
- useExisting: TimepickerValueAccessor,
17
- multi: true,
18
- },
19
- ], usesInheritance: true, ngImport: i0 }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimepickerValueAccessor, decorators: [{
22
- type: Directive,
23
- args: [{
24
- selector: 'six-timepicker',
25
- providers: [
26
- {
27
- provide: NG_VALUE_ACCESSOR,
28
- useExisting: TimepickerValueAccessor,
29
- multi: true,
30
- },
31
- ],
32
- }]
33
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { handleChangeEvent: [{
34
- type: HostListener,
35
- args: ['change', ['$event.target']]
36
- }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci12YWx1ZS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29udHJvbC12YWx1ZS1hY2Nlc3NvcnMvdGltZXBpY2tlci12YWx1ZS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBWWpELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxhQUFhO0lBQ3hELFlBQVksUUFBa0IsRUFBRSxFQUFjO1FBQzVDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUdELGlCQUFpQixDQUFDLEVBQTRCO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBUlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsZ0hBUnZCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLHVCQUF1QjtnQkFDcEMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzs0RkFFVSx1QkFBdUI7a0JBVm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcseUJBQXlCOzRCQUNwQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjt3SEFPQyxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFZhbHVlQWNjZXNzb3IgfSBmcm9tICcuL3ZhbHVlLWFjY2Vzc29yJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnc2l4LXRpbWVwaWNrZXInLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBUaW1lcGlja2VyVmFsdWVBY2Nlc3NvcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVwaWNrZXJWYWx1ZUFjY2Vzc29yIGV4dGVuZHMgVmFsdWVBY2Nlc3NvciB7XG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3RvciwgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihpbmplY3RvciwgZWwpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIGhhbmRsZUNoYW5nZUV2ZW50KGVsOiBIVE1MU2l4VGltZXBpY2tlckVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZVZhbHVlQ2hhbmdlKGVsLCBlbC52YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,144 +0,0 @@
1
- import { Directive, HostListener, inject } from '@angular/core';
2
- import { NgControl, Validators } from '@angular/forms';
3
- import { getLanguage } from '@six-group/ui-library';
4
- import { ValidationMessagesService } from '../services/validation-messages.service';
5
- import { UI_LIBRARY_CONFIG } from '../ui-library-angular-config';
6
- import * as i0 from "@angular/core";
7
- export class ValueAccessor {
8
- constructor(injector, el) {
9
- this.injector = injector;
10
- this.el = el;
11
- this.validationMessagesService = inject(ValidationMessagesService);
12
- this.config = inject(UI_LIBRARY_CONFIG);
13
- this.onChange = () => { };
14
- this.onTouched = () => { };
15
- }
16
- registerOnChange(fn) {
17
- this.onChange = fn;
18
- }
19
- registerOnTouched(fn) {
20
- this.onTouched = fn;
21
- }
22
- writeValue(value) {
23
- this.el.nativeElement.value = value;
24
- this.updateValidation();
25
- }
26
- /**
27
- * Notifies the ControlValueAccessor of a change in the value of the control.
28
- *
29
- * This is called by each of the ValueAccessor directives when we want to update
30
- * the status and validity of the form control. For example with text components this
31
- * is called when the input event is fired. For select components this is called
32
- * when the change event is fired.
33
- *
34
- * This also updates the form status on the element by setting the 'invalid' property to true/false.
35
- *
36
- * @param el The component element.
37
- * @param value The new value of the control.
38
- */
39
- handleValueChange(el, value) {
40
- if (el === this.el.nativeElement) {
41
- this.onChange(value);
42
- this.updateValidation();
43
- }
44
- }
45
- _handleBlurEvent(el) {
46
- if (el === this.el.nativeElement) {
47
- this.onTouched();
48
- this.updateValidation();
49
- }
50
- }
51
- updateValidation() {
52
- nextTick(() => {
53
- if (this.ngControl?.control == null)
54
- return;
55
- const element = this.el.nativeElement;
56
- const control = this.ngControl?.control;
57
- const invalid = control.status === 'INVALID' && control.dirty && control.touched;
58
- let errorTexts;
59
- if (invalid) {
60
- errorTexts = this.initialErrorText || this.getErrorTexts(control);
61
- }
62
- element.invalid = invalid;
63
- element.errorText = errorTexts ?? '';
64
- // When the module is configured to do so, display an asterisk next to any form control that has a required validator
65
- if (this.config.showAsteriskOnRequiredValidator && this.ngControl.control.hasValidator(Validators.required)) {
66
- element.required = true;
67
- }
68
- });
69
- }
70
- setDisabledState(isDisabled) {
71
- this.el.nativeElement.disabled = isDisabled;
72
- }
73
- ngOnDestroy() {
74
- if (this.statusChanges) {
75
- this.statusChanges.unsubscribe();
76
- }
77
- }
78
- ngAfterViewInit() {
79
- this.initialErrorText = this.el.nativeElement?.errorText?.trim() || undefined;
80
- try {
81
- this.ngControl = this.injector.get(NgControl);
82
- }
83
- catch {
84
- /* No FormControl or ngModel binding */
85
- }
86
- if (!this.ngControl) {
87
- return;
88
- }
89
- // Listen for changes in validity, disabled, or pending states
90
- if (this.ngControl.statusChanges) {
91
- this.statusChanges = this.ngControl.statusChanges.subscribe(() => this.updateValidation());
92
- }
93
- /**
94
- * TODO FW-2787: Remove this in favor of https://github.com/angular/angular/issues/10887
95
- * whenever it is implemented.
96
- */
97
- const formControl = this.ngControl.control;
98
- if (formControl) {
99
- const methodsToPatch = ['markAsTouched', 'markAllAsTouched', 'markAsUntouched', 'markAsDirty', 'markAsPristine'];
100
- methodsToPatch.forEach((method) => {
101
- if (typeof formControl[method] !== 'undefined') {
102
- const oldFn = formControl[method].bind(formControl);
103
- formControl[method] = (...params) => {
104
- oldFn(...params);
105
- this.updateValidation();
106
- };
107
- }
108
- });
109
- }
110
- }
111
- getErrorTexts(control) {
112
- if (control.errors == null) {
113
- console.warn('no errors for invalid control', control);
114
- return [];
115
- }
116
- const errorList = Object.entries(control.errors);
117
- if (errorList.length <= 0) {
118
- console.warn('no errors for invalid control', control);
119
- return [];
120
- }
121
- return errorList.map((error) => {
122
- const [key, value] = error;
123
- return (this.validationMessagesService.getErrorMessage(getLanguage(), { key: key, ...value }) ?? key);
124
- });
125
- }
126
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValueAccessor, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
127
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ValueAccessor, host: { listeners: { "blur": "_handleBlurEvent($event.target)" } }, ngImport: i0 }); }
128
- }
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValueAccessor, decorators: [{
130
- type: Directive
131
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { _handleBlurEvent: [{
132
- type: HostListener,
133
- args: ['blur', ['$event.target']]
134
- }] } });
135
- const nextTick = (h) => {
136
- if (typeof __zone_symbol__requestAnimationFrame === 'function') {
137
- return __zone_symbol__requestAnimationFrame(h);
138
- }
139
- if (typeof requestAnimationFrame === 'function') {
140
- return requestAnimationFrame(h);
141
- }
142
- return setTimeout(h);
143
- };
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3JzL3ZhbHVlLWFjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBeUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlGLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLDhCQUE4QixDQUFDOztBQUdsRixNQUFNLE9BQU8sYUFBYTtJQVF4QixZQUNZLFFBQWtCLEVBQ2xCLEVBQWM7UUFEZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFObEIsOEJBQXlCLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFNUQsV0FBTSxHQUFvQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQU90RCxhQUFRLEdBQXlCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQWUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBSHRDLENBQUM7SUFJSixnQkFBZ0IsQ0FBQyxFQUF3QjtRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEtB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QWUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQXFCLENBQUMsSUFBSSxHQUFHLENBQ2hILENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBNUlVLGFBQWE7bUdBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFEekIsU0FBUzt3SEFpRFIsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsZUFBZSxDQUFDOztBQWtHekMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQU8sRUFBRTtJQUMvQixJQUFJLE9BQU8sb0NBQW9DLEtBQUssVUFBVSxFQUFFO1FBQzlELE9BQU8sb0NBQW9DLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDaEQ7SUFDRCxJQUFJLE9BQU8scUJBQXFCLEtBQUssVUFBVSxFQUFFO1FBQy9DLE9BQU8scUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakM7SUFDRCxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbmplY3RvciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldExhbmd1YWdlLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAc2l4LWdyb3VwL3VpLWxpYnJhcnknO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24tbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBVSV9MSUJSQVJZX0NPTkZJRywgVWlMaWJyYXJ5Q29uZmlnIH0gZnJvbSAnLi4vdWktbGlicmFyeS1hbmd1bGFyLWNvbmZpZyc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdGF0dXNDaGFuZ2VzPzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIG5nQ29udHJvbD86IE5nQ29udHJvbDtcbiAgcHJpdmF0ZSBpbml0aWFsRXJyb3JUZXh0Pzogc3RyaW5nO1xuICBwcml2YXRlIHZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2UgPSBpbmplY3QoVmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGNvbmZpZzogVWlMaWJyYXJ5Q29uZmlnID0gaW5qZWN0KFVJX0xJQlJBUllfQ09ORklHKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBlbDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogTm90aWZpZXMgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG9mIGEgY2hhbmdlIGluIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbC5cbiAgICpcbiAgICogVGhpcyBpcyBjYWxsZWQgYnkgZWFjaCBvZiB0aGUgVmFsdWVBY2Nlc3NvciBkaXJlY3RpdmVzIHdoZW4gd2Ugd2FudCB0byB1cGRhdGVcbiAgICogdGhlIHN0YXR1cyBhbmQgdmFsaWRpdHkgb2YgdGhlIGZvcm0gY29udHJvbC4gRm9yIGV4YW1wbGUgd2l0aCB0ZXh0IGNvbXBvbmVudHMgdGhpc1xuICAgKiBpcyBjYWxsZWQgd2hlbiB0aGUgaW5wdXQgZXZlbnQgaXMgZmlyZWQuIEZvciBzZWxlY3QgY29tcG9uZW50cyB0aGlzIGlzIGNhbGxlZFxuICAgKiB3aGVuIHRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQuXG4gICAqXG4gICAqIFRoaXMgYWxzbyB1cGRhdGVzIHRoZSBmb3JtIHN0YXR1cyBvbiB0aGUgZWxlbWVudCBieSBzZXR0aW5nIHRoZSAnaW52YWxpZCcgcHJvcGVydHkgdG8gdHJ1ZS9mYWxzZS5cbiAgICpcbiAgICogQHBhcmFtIGVsIFRoZSBjb21wb25lbnQgZWxlbWVudC5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBuZXcgdmFsdWUgb2YgdGhlIGNvbnRyb2wuXG4gICAqL1xuICBoYW5kbGVWYWx1ZUNoYW5nZShlbDogSFRNTEVsZW1lbnQsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZWwgPT09IHRoaXMuZWwubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIF9oYW5kbGVCbHVyRXZlbnQoZWw6IGFueSk6IHZvaWQge1xuICAgIGlmIChlbCA9PT0gdGhpcy5lbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVmFsaWRhdGlvbigpIHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxTaXhJbnB1dEVsZW1lbnQ7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w7XG5cbiAgICAgIGNvbnN0IGludmFsaWQgPSBjb250cm9sLnN0YXR1cyA9PT0gJ0lOVkFMSUQnICYmIGNvbnRyb2wuZGlydHkgJiYgY29udHJvbC50b3VjaGVkO1xuICAgICAgbGV0IGVycm9yVGV4dHM7XG4gICAgICBpZiAoaW52YWxpZCkge1xuICAgICAgICBlcnJvclRleHRzID0gdGhpcy5pbml0aWFsRXJyb3JUZXh0IHx8IHRoaXMuZ2V0RXJyb3JUZXh0cyhjb250cm9sKTtcbiAgICAgIH1cbiAgICAgIGVsZW1lbnQuaW52YWxpZCA9IGludmFsaWQ7XG4gICAgICBlbGVtZW50LmVycm9yVGV4dCA9IGVycm9yVGV4dHMgPz8gJyc7XG5cbiAgICAgIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBjb25maWd1cmVkIHRvIGRvIHNvLCBkaXNwbGF5IGFuIGFzdGVyaXNrIG5leHQgdG8gYW55IGZvcm0gY29udHJvbCB0aGF0IGhhcyBhIHJlcXVpcmVkIHZhbGlkYXRvclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnNob3dBc3Rlcmlza09uUmVxdWlyZWRWYWxpZGF0b3IgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkpIHtcbiAgICAgICAgZWxlbWVudC5yZXF1aXJlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdHVzQ2hhbmdlcykge1xuICAgICAgdGhpcy5zdGF0dXNDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbEVycm9yVGV4dCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudD8uZXJyb3JUZXh0Py50cmltKCkgfHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0PE5nQ29udHJvbD4oTmdDb250cm9sKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8qIE5vIEZvcm1Db250cm9sIG9yIG5nTW9kZWwgYmluZGluZyAqL1xuICAgIH1cbiAgICBpZiAoIXRoaXMubmdDb250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTGlzdGVuIGZvciBjaGFuZ2VzIGluIHZhbGlkaXR5LCBkaXNhYmxlZCwgb3IgcGVuZGluZyBzdGF0ZXNcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlcykge1xuICAgICAgdGhpcy5zdGF0dXNDaGFuZ2VzID0gdGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVWYWxpZGF0aW9uKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRPRE8gRlctMjc4NzogUmVtb3ZlIHRoaXMgaW4gZmF2b3Igb2YgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTA4ODdcbiAgICAgKiB3aGVuZXZlciBpdCBpcyBpbXBsZW1lbnRlZC5cbiAgICAgKi9cbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMubmdDb250cm9sLmNvbnRyb2wgYXMgYW55O1xuICAgIGlmIChmb3JtQ29udHJvbCkge1xuICAgICAgY29uc3QgbWV0aG9kc1RvUGF0Y2ggPSBbJ21hcmtBc1RvdWNoZWQnLCAnbWFya0FsbEFzVG91Y2hlZCcsICdtYXJrQXNVbnRvdWNoZWQnLCAnbWFya0FzRGlydHknLCAnbWFya0FzUHJpc3RpbmUnXTtcbiAgICAgIG1ldGhvZHNUb1BhdGNoLmZvckVhY2goKG1ldGhvZCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGZvcm1Db250cm9sW21ldGhvZF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgY29uc3Qgb2xkRm4gPSBmb3JtQ29udHJvbFttZXRob2RdLmJpbmQoZm9ybUNvbnRyb2wpO1xuICAgICAgICAgIGZvcm1Db250cm9sW21ldGhvZF0gPSAoLi4ucGFyYW1zOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgb2xkRm4oLi4ucGFyYW1zKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEVycm9yVGV4dHMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nW10ge1xuICAgIGlmIChjb250cm9sLmVycm9ycyA9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ25vIGVycm9ycyBmb3IgaW52YWxpZCBjb250cm9sJywgY29udHJvbCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JMaXN0ID0gT2JqZWN0LmVudHJpZXMoY29udHJvbC5lcnJvcnMpO1xuICAgIGlmIChlcnJvckxpc3QubGVuZ3RoIDw9IDApIHtcbiAgICAgIGNvbnNvbGUud2Fybignbm8gZXJyb3JzIGZvciBpbnZhbGlkIGNvbnRyb2wnLCBjb250cm9sKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JMaXN0Lm1hcCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGVycm9yO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLmdldEVycm9yTWVzc2FnZShnZXRMYW5ndWFnZSgpLCB7IGtleToga2V5LCAuLi52YWx1ZSB9IGFzIFZhbGlkYXRpb25FcnJvcikgPz8ga2V5XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG5cbmRlY2xhcmUgY29uc3QgX196b25lX3N5bWJvbF9fcmVxdWVzdEFuaW1hdGlvbkZyYW1lOiBhbnk7XG5kZWNsYXJlIGNvbnN0IHJlcXVlc3RBbmltYXRpb25GcmFtZTogYW55O1xuY29uc3QgbmV4dFRpY2sgPSAoaDogYW55KTogYW55ID0+IHtcbiAgaWYgKHR5cGVvZiBfX3pvbmVfc3ltYm9sX19yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gX196b25lX3N5bWJvbF9fcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGgpO1xuICB9XG4gIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShoKTtcbiAgfVxuICByZXR1cm4gc2V0VGltZW91dChoKTtcbn07XG4iXX0=
@@ -1,134 +0,0 @@
1
- import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
2
- import { FormArray, FormControl, FormGroup } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/forms";
5
- /**
6
- * This directive intercepts the ngSubmit event of an Angular form and introduces
7
- * a supplementary event named sixSubmit. The sixSubmit event is triggered exclusively
8
- * when the form is valid. In cases where the form is considered invalid, this directive
9
- * takes proactive actions by marking all form controls as touched and dirty. Additionally,
10
- * it shifts the focus to the initial invalid form element, facilitating quick error
11
- * resolution.
12
- *
13
- * To utilize this directive, apply it to an Angular form.
14
- * ```html
15
- * <form [formGroup]="form" sixForm (sixSubmit)="onSubmit($event)">
16
- * <!-- form content -->
17
- * </form>
18
- * ```
19
- *
20
- * For users needing greater flexibility in determining when error messages are displayed,
21
- * or for those who prefer not to rely solely on the form submission event,
22
- * an alternative is to use the SixFormUtilDirective.
23
- */
24
- export class SixFormDirective {
25
- onNgSubmit(event) {
26
- if (this.formGroupDirective.invalid) {
27
- focusInvalidField(this.formGroupDirective, this.elementRef);
28
- }
29
- else {
30
- this.sixSubmit.emit(event);
31
- }
32
- }
33
- constructor(elementRef, formGroupDirective) {
34
- this.elementRef = elementRef;
35
- this.formGroupDirective = formGroupDirective;
36
- /**
37
- * Emits an event when the form is valid and the form submission has been triggered.
38
- */
39
- this.sixSubmit = new EventEmitter();
40
- }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixFormDirective, deps: [{ token: i0.ElementRef }, { token: i1.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Directive }); }
42
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SixFormDirective, selector: "form[sixForm]", outputs: { sixSubmit: "sixSubmit" }, host: { listeners: { "ngSubmit": "onNgSubmit($event)" } }, ngImport: i0 }); }
43
- }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixFormDirective, decorators: [{
45
- type: Directive,
46
- args: [{
47
- selector: 'form[sixForm]',
48
- }]
49
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FormGroupDirective }]; }, propDecorators: { sixSubmit: [{
50
- type: Output
51
- }], onNgSubmit: [{
52
- type: HostListener,
53
- args: ['ngSubmit', ['$event']]
54
- }] } });
55
- /**
56
- * This directive provides a utility method, that marks all form controls
57
- * as touched and dirty, and focuses the first invalid form element.
58
- *
59
- * To utilize this directive, apply it to an Angular form.
60
- * ```html
61
- * <form [formGroup]="form" sixFormUtil (ngSubmit)="onSubmit($event)">
62
- * <!-- form content -->
63
- * </form>
64
- * ```
65
- *
66
- * Then, get a reference to the directive and invoke `focusInvalidField()` if the
67
- * form is invalid:
68
- * ```ts
69
- * @ViewChild(SixFormUtilDirective) sixFormUtil!: SixFormUtilDirective;
70
- * // ...
71
- * onSubmit() {
72
- * if (this.form.invalid) {
73
- * this.sixFormUtil.focusInvalidField();
74
- * } else {
75
- * // ...
76
- * }
77
- * }
78
- * ```
79
- */
80
- export class SixFormUtilDirective {
81
- constructor(elementRef, formGroupDirective) {
82
- this.elementRef = elementRef;
83
- this.formGroupDirective = formGroupDirective;
84
- }
85
- /** markAllControlsAsDirty(Object.values(formGroup.controls));
86
- * Marks all form controls as touched and dirty, and focuses the first
87
- * invalid form element.
88
- */
89
- focusInvalidField() {
90
- focusInvalidField(this.formGroupDirective, this.elementRef);
91
- }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixFormUtilDirective, deps: [{ token: i0.ElementRef }, { token: i1.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Directive }); }
93
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SixFormUtilDirective, selector: "[sixFormUtil]", ngImport: i0 }); }
94
- }
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixFormUtilDirective, decorators: [{
96
- type: Directive,
97
- args: [{
98
- selector: '[sixFormUtil]',
99
- }]
100
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FormGroupDirective }]; } });
101
- function focusInvalidField(formGroupDirective, formElement) {
102
- formGroupDirective.form.markAllAsTouched();
103
- markAllAsDirty([formGroupDirective.form]);
104
- const invalidElement = getInvalidElement(formElement.nativeElement);
105
- if ('setFocus' in invalidElement && typeof invalidElement?.setFocus === 'function') {
106
- invalidElement.setFocus();
107
- }
108
- if ('focus' in invalidElement && typeof invalidElement?.focus === 'function') {
109
- invalidElement.focus();
110
- }
111
- }
112
- function getInvalidElement(parent) {
113
- const invalidElement = parent.querySelector('.ng-invalid');
114
- if (invalidElement == null) {
115
- return parent;
116
- }
117
- return getInvalidElement(invalidElement);
118
- }
119
- function markAllAsDirty(controls) {
120
- controls.forEach((control) => {
121
- if (control instanceof FormControl) {
122
- control.markAsDirty({ onlySelf: true });
123
- }
124
- else if (control instanceof FormGroup) {
125
- control.markAsDirty({ onlySelf: true });
126
- markAllAsDirty(Object.values(control.controls));
127
- }
128
- else if (control instanceof FormArray) {
129
- control.markAsDirty({ onlySelf: true });
130
- markAllAsDirty(control.controls);
131
- }
132
- });
133
- }
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l4LWZvcm0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtL3NpeC1mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7OztBQUV4Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQixVQUFVLENBQUMsS0FBa0I7UUFDM0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO1lBQ25DLGlCQUFpQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELFlBQ1UsVUFBbUMsRUFDbkMsa0JBQXNDO1FBRHRDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFoQmhEOztXQUVHO1FBQ08sY0FBUyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7SUFjbkQsQ0FBQzsrR0FsQk8sZ0JBQWdCO21HQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBSDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7aUJBQzFCO2tJQUtXLFNBQVM7c0JBQWxCLE1BQU07Z0JBR1AsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFldEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxVQUFtQyxFQUNuQyxrQkFBc0M7UUFEdEMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUM3QyxDQUFDO0lBRUo7OztPQUdHO0lBQ0ksaUJBQWlCO1FBQ3RCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUQsQ0FBQzsrR0FaVSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUI7O0FBZ0JELFNBQVMsaUJBQWlCLENBQUMsa0JBQXNDLEVBQUUsV0FBb0M7SUFDckcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDM0MsY0FBYyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUUxQyxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEUsSUFBSSxVQUFVLElBQUksY0FBYyxJQUFJLE9BQU8sY0FBYyxFQUFFLFFBQVEsS0FBSyxVQUFVLEVBQUU7UUFDbEYsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQzNCO0lBQ0QsSUFBSSxPQUFPLElBQUksY0FBYyxJQUFJLE9BQU8sY0FBYyxFQUFFLEtBQUssS0FBSyxVQUFVLEVBQUU7UUFDNUUsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsTUFBZTtJQUN4QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNELElBQUksY0FBYyxJQUFJLElBQUksRUFBRTtRQUMxQixPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQ0QsT0FBTyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsUUFBMkI7SUFDakQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzNCLElBQUksT0FBTyxZQUFZLFdBQVcsRUFBRTtZQUNsQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDekM7YUFBTSxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUU7WUFDdkMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ2pEO2FBQU0sSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN4QyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIGludGVyY2VwdHMgdGhlIG5nU3VibWl0IGV2ZW50IG9mIGFuIEFuZ3VsYXIgZm9ybSBhbmQgaW50cm9kdWNlc1xuICogYSBzdXBwbGVtZW50YXJ5IGV2ZW50IG5hbWVkIHNpeFN1Ym1pdC4gVGhlIHNpeFN1Ym1pdCBldmVudCBpcyB0cmlnZ2VyZWQgZXhjbHVzaXZlbHlcbiAqIHdoZW4gdGhlIGZvcm0gaXMgdmFsaWQuIEluIGNhc2VzIHdoZXJlIHRoZSBmb3JtIGlzIGNvbnNpZGVyZWQgaW52YWxpZCwgdGhpcyBkaXJlY3RpdmVcbiAqIHRha2VzIHByb2FjdGl2ZSBhY3Rpb25zIGJ5IG1hcmtpbmcgYWxsIGZvcm0gY29udHJvbHMgYXMgdG91Y2hlZCBhbmQgZGlydHkuIEFkZGl0aW9uYWxseSxcbiAqIGl0IHNoaWZ0cyB0aGUgZm9jdXMgdG8gdGhlIGluaXRpYWwgaW52YWxpZCBmb3JtIGVsZW1lbnQsIGZhY2lsaXRhdGluZyBxdWljayBlcnJvclxuICogcmVzb2x1dGlvbi5cbiAqXG4gKiBUbyB1dGlsaXplIHRoaXMgZGlyZWN0aXZlLCBhcHBseSBpdCB0byBhbiBBbmd1bGFyIGZvcm0uXG4gKiBgYGBodG1sXG4gKiA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBzaXhGb3JtIChzaXhTdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiPlxuICogICA8IS0tIGZvcm0gY29udGVudCAtLT5cbiAqIDwvZm9ybT5cbiAqIGBgYFxuICpcbiAqIEZvciB1c2VycyBuZWVkaW5nIGdyZWF0ZXIgZmxleGliaWxpdHkgaW4gZGV0ZXJtaW5pbmcgd2hlbiBlcnJvciBtZXNzYWdlcyBhcmUgZGlzcGxheWVkLFxuICogb3IgZm9yIHRob3NlIHdobyBwcmVmZXIgbm90IHRvIHJlbHkgc29sZWx5IG9uIHRoZSBmb3JtIHN1Ym1pc3Npb24gZXZlbnQsXG4gKiBhbiBhbHRlcm5hdGl2ZSBpcyB0byB1c2UgdGhlIFNpeEZvcm1VdGlsRGlyZWN0aXZlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdmb3JtW3NpeEZvcm1dJyxcbn0pXG5leHBvcnQgY2xhc3MgU2l4Rm9ybURpcmVjdGl2ZSB7XG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSBmb3JtIGlzIHZhbGlkIGFuZCB0aGUgZm9ybSBzdWJtaXNzaW9uIGhhcyBiZWVuIHRyaWdnZXJlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzaXhTdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFN1Ym1pdEV2ZW50PigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ25nU3VibWl0JywgWyckZXZlbnQnXSlcbiAgb25OZ1N1Ym1pdChldmVudDogU3VibWl0RXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXBEaXJlY3RpdmUuaW52YWxpZCkge1xuICAgICAgZm9jdXNJbnZhbGlkRmllbGQodGhpcy5mb3JtR3JvdXBEaXJlY3RpdmUsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2l4U3VibWl0LmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBmb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHt9XG59XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgcHJvdmlkZXMgYSB1dGlsaXR5IG1ldGhvZCwgdGhhdCBtYXJrcyBhbGwgZm9ybSBjb250cm9sc1xuICogYXMgdG91Y2hlZCBhbmQgZGlydHksIGFuZCBmb2N1c2VzIHRoZSBmaXJzdCBpbnZhbGlkIGZvcm0gZWxlbWVudC5cbiAqXG4gKiBUbyB1dGlsaXplIHRoaXMgZGlyZWN0aXZlLCBhcHBseSBpdCB0byBhbiBBbmd1bGFyIGZvcm0uXG4gKiBgYGBodG1sXG4gKiA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBzaXhGb3JtVXRpbCAobmdTdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiPlxuICogICA8IS0tIGZvcm0gY29udGVudCAtLT5cbiAqIDwvZm9ybT5cbiAqIGBgYFxuICpcbiAqIFRoZW4sIGdldCBhIHJlZmVyZW5jZSB0byB0aGUgZGlyZWN0aXZlIGFuZCBpbnZva2UgYGZvY3VzSW52YWxpZEZpZWxkKClgIGlmIHRoZVxuICogZm9ybSBpcyBpbnZhbGlkOlxuICogYGBgdHNcbiAqIEBWaWV3Q2hpbGQoU2l4Rm9ybVV0aWxEaXJlY3RpdmUpIHNpeEZvcm1VdGlsITogU2l4Rm9ybVV0aWxEaXJlY3RpdmU7XG4gKiAvLyAuLi5cbiAqIG9uU3VibWl0KCkge1xuICogICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAqICAgICB0aGlzLnNpeEZvcm1VdGlsLmZvY3VzSW52YWxpZEZpZWxkKCk7XG4gKiAgIH0gZWxzZSB7XG4gKiAgICAgIC8vIC4uLlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NpeEZvcm1VdGlsXScsXG59KVxuZXhwb3J0IGNsYXNzIFNpeEZvcm1VdGlsRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGZvcm1Hcm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlXG4gICkge31cblxuICAvKiogbWFya0FsbENvbnRyb2xzQXNEaXJ0eShPYmplY3QudmFsdWVzKGZvcm1Hcm91cC5jb250cm9scykpO1xuICAgKiBNYXJrcyBhbGwgZm9ybSBjb250cm9scyBhcyB0b3VjaGVkIGFuZCBkaXJ0eSwgYW5kIGZvY3VzZXMgdGhlIGZpcnN0XG4gICAqIGludmFsaWQgZm9ybSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGZvY3VzSW52YWxpZEZpZWxkKCkge1xuICAgIGZvY3VzSW52YWxpZEZpZWxkKHRoaXMuZm9ybUdyb3VwRGlyZWN0aXZlLCB0aGlzLmVsZW1lbnRSZWYpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvY3VzSW52YWxpZEZpZWxkKGZvcm1Hcm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlLCBmb3JtRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgZm9ybUdyb3VwRGlyZWN0aXZlLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICBtYXJrQWxsQXNEaXJ0eShbZm9ybUdyb3VwRGlyZWN0aXZlLmZvcm1dKTtcblxuICBjb25zdCBpbnZhbGlkRWxlbWVudCA9IGdldEludmFsaWRFbGVtZW50KGZvcm1FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICBpZiAoJ3NldEZvY3VzJyBpbiBpbnZhbGlkRWxlbWVudCAmJiB0eXBlb2YgaW52YWxpZEVsZW1lbnQ/LnNldEZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaW52YWxpZEVsZW1lbnQuc2V0Rm9jdXMoKTtcbiAgfVxuICBpZiAoJ2ZvY3VzJyBpbiBpbnZhbGlkRWxlbWVudCAmJiB0eXBlb2YgaW52YWxpZEVsZW1lbnQ/LmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaW52YWxpZEVsZW1lbnQuZm9jdXMoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbnZhbGlkRWxlbWVudChwYXJlbnQ6IEVsZW1lbnQpOiBFbGVtZW50IHtcbiAgY29uc3QgaW52YWxpZEVsZW1lbnQgPSBwYXJlbnQucXVlcnlTZWxlY3RvcignLm5nLWludmFsaWQnKTtcbiAgaWYgKGludmFsaWRFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4gcGFyZW50O1xuICB9XG4gIHJldHVybiBnZXRJbnZhbGlkRWxlbWVudChpbnZhbGlkRWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG1hcmtBbGxBc0RpcnR5KGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSk6IHZvaWQge1xuICBjb250cm9scy5mb3JFYWNoKChjb250cm9sKSA9PiB7XG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgbWFya0FsbEFzRGlydHkoT2JqZWN0LnZhbHVlcyhjb250cm9sLmNvbnRyb2xzKSk7XG4gICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICBjb250cm9sLm1hcmtBc0RpcnR5KHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICBtYXJrQWxsQXNEaXJ0eShjb250cm9sLmNvbnRyb2xzKTtcbiAgICB9XG4gIH0pO1xufVxuIl19
@@ -1,61 +0,0 @@
1
- import { Directive, HostListener, Input, Optional } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/router";
5
- /**
6
- * Forked from https://github.com/ionic-team/ionic-framework/blob/main/packages/angular/common/src/directives/navigation/router-link-delegate.ts.
7
- */
8
- export class SixRouterLinkDirective {
9
- constructor(locationStrategy, elementRef, router, renderer, routerLinkDirective) {
10
- this.locationStrategy = locationStrategy;
11
- this.elementRef = elementRef;
12
- this.router = router;
13
- this.renderer = renderer;
14
- this.routerLinkDirective = routerLinkDirective;
15
- }
16
- onClick(event) {
17
- // Prevents the browser from performing a page reload when pressing a SIX-component with routerLink.
18
- event.preventDefault();
19
- }
20
- ngOnInit() {
21
- this.updateTargetUrlAndHref();
22
- }
23
- ngOnChanges() {
24
- this.updateTargetUrlAndHref();
25
- }
26
- updateTargetUrlAndHref() {
27
- if (this.routerLinkDirective?.urlTree) {
28
- const url = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.routerLinkDirective.urlTree));
29
- this.renderer.setAttribute(this.elementRef.nativeElement, 'href', url);
30
- // Remove the `tabindex` attribute to prevent redundant focus behavior.
31
- // Angular's RouterLink adds `tabindex="0"` to non-focusable elements (e.g., `<div>`),
32
- // but custom components like `six-button` already handle focusability.
33
- // Keeping the tabindex would cause the element to receive focus twice.
34
- this.renderer.removeAttribute(this.elementRef.nativeElement, 'tabindex');
35
- }
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixRouterLinkDirective, deps: [{ token: i1.LocationStrategy }, { token: i0.ElementRef }, { token: i2.Router }, { token: i0.Renderer2 }, { token: i2.RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
38
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SixRouterLinkDirective, selector: "six-sidebar-item[routerLink],six-sidebar-item-group[routerLink],six-button[routerLink],six-icon-button[routerLink]", inputs: { routerLink: "routerLink", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", relativeTo: "relativeTo" }, host: { listeners: { "click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0 }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixRouterLinkDirective, decorators: [{
41
- type: Directive,
42
- args: [{
43
- selector: 'six-sidebar-item[routerLink],six-sidebar-item-group[routerLink],six-button[routerLink],six-icon-button[routerLink]',
44
- }]
45
- }], ctorParameters: function () { return [{ type: i1.LocationStrategy }, { type: i0.ElementRef }, { type: i2.Router }, { type: i0.Renderer2 }, { type: i2.RouterLink, decorators: [{
46
- type: Optional
47
- }] }]; }, propDecorators: { onClick: [{
48
- type: HostListener,
49
- args: ['click', ['$event']]
50
- }], routerLink: [{
51
- type: Input
52
- }], queryParams: [{
53
- type: Input
54
- }], fragment: [{
55
- type: Input
56
- }], queryParamsHandling: [{
57
- type: Input
58
- }], relativeTo: [{
59
- type: Input
60
- }] } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l4LXJvdXRlci1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbGluay9zaXgtcm91dGVyLWxpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7O0FBSW5IOztHQUVHO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUNVLGdCQUFrQyxFQUNsQyxVQUFzQixFQUN0QixNQUFjLEVBQ2QsUUFBbUIsRUFDUCxtQkFBZ0M7UUFKNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ1Asd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFhO0lBQ25ELENBQUM7SUFHSixPQUFPLENBQUMsS0FBYztRQUNwQixvR0FBb0c7UUFDcEcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFRRCxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sRUFBRTtZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDakgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRXZFLHVFQUF1RTtZQUN2RSxzRkFBc0Y7WUFDdEYsdUVBQXVFO1lBQ3ZFLHVFQUF1RTtZQUN2RSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMxRTtJQUNILENBQUM7K0dBeENVLHNCQUFzQjttR0FBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFDTixvSEFBb0g7aUJBQ3ZIOzswQkFPSSxRQUFROzRDQUlYLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXhCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3B0aW9uYWwsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvY2F0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIEZvcmtlZCBmcm9tICBodHRwczovL2dpdGh1Yi5jb20vaW9uaWMtdGVhbS9pb25pYy1mcmFtZXdvcmsvYmxvYi9tYWluL3BhY2thZ2VzL2FuZ3VsYXIvY29tbW9uL3NyYy9kaXJlY3RpdmVzL25hdmlnYXRpb24vcm91dGVyLWxpbmstZGVsZWdhdGUudHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAnc2l4LXNpZGViYXItaXRlbVtyb3V0ZXJMaW5rXSxzaXgtc2lkZWJhci1pdGVtLWdyb3VwW3JvdXRlckxpbmtdLHNpeC1idXR0b25bcm91dGVyTGlua10sc2l4LWljb24tYnV0dG9uW3JvdXRlckxpbmtdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2l4Um91dGVyTGlua0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsb2NhdGlvblN0cmF0ZWd5OiBMb2NhdGlvblN0cmF0ZWd5LFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJvdXRlckxpbmtEaXJlY3RpdmU/OiBSb3V0ZXJMaW5rXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2soZXZlbnQ6IFVJRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBQcmV2ZW50cyB0aGUgYnJvd3NlciBmcm9tIHBlcmZvcm1pbmcgYSBwYWdlIHJlbG9hZCB3aGVuIHByZXNzaW5nIGEgU0lYLWNvbXBvbmVudCB3aXRoIHJvdXRlckxpbmsuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHJvdXRlckxpbms/OiBhbnk7XG4gIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zPzogYW55O1xuICBASW5wdXQoKSBmcmFnbWVudD86IGFueTtcbiAgQElucHV0KCkgcXVlcnlQYXJhbXNIYW5kbGluZz86IGFueTtcbiAgQElucHV0KCkgcmVsYXRpdmVUbz86IGFueTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVRhcmdldFVybEFuZEhyZWYoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVGFyZ2V0VXJsQW5kSHJlZigpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYXJnZXRVcmxBbmRIcmVmKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvdXRlckxpbmtEaXJlY3RpdmU/LnVybFRyZWUpIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb25TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHRoaXMucm91dGVyTGlua0RpcmVjdGl2ZS51cmxUcmVlKSk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hyZWYnLCB1cmwpO1xuXG4gICAgICAvLyBSZW1vdmUgdGhlIGB0YWJpbmRleGAgYXR0cmlidXRlIHRvIHByZXZlbnQgcmVkdW5kYW50IGZvY3VzIGJlaGF2aW9yLlxuICAgICAgLy8gQW5ndWxhcidzIFJvdXRlckxpbmsgYWRkcyBgdGFiaW5kZXg9XCIwXCJgIHRvIG5vbi1mb2N1c2FibGUgZWxlbWVudHMgKGUuZy4sIGA8ZGl2PmApLFxuICAgICAgLy8gYnV0IGN1c3RvbSBjb21wb25lbnRzIGxpa2UgYHNpeC1idXR0b25gIGFscmVhZHkgaGFuZGxlIGZvY3VzYWJpbGl0eS5cbiAgICAgIC8vIEtlZXBpbmcgdGhlIHRhYmluZGV4IHdvdWxkIGNhdXNlIHRoZSBlbGVtZW50IHRvIHJlY2VpdmUgZm9jdXMgdHdpY2UuXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3RhYmluZGV4Jyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,21 +0,0 @@
1
- import { inject, Injectable, NgZone } from '@angular/core';
2
- import { showAlert } from '@six-group/ui-library';
3
- import * as i0 from "@angular/core";
4
- export class AlertService {
5
- constructor() {
6
- this.ngZone = inject(NgZone);
7
- }
8
- /**
9
- * Displays an alert as a toast notification.
10
- */
11
- showAlert(message, alertType, duration, iconName) {
12
- this.ngZone.runOutsideAngular(() => showAlert(message, alertType, duration, iconName));
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
15
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertService, providedIn: 'root' }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertService, decorators: [{
18
- type: Injectable,
19
- args: [{ providedIn: 'root' }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvYWxlcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUc3RCxNQUFNLE9BQU8sWUFBWTtJQUR6QjtRQUVVLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0FRakM7SUFOQzs7T0FFRztJQUNJLFNBQVMsQ0FBQyxPQUFlLEVBQUUsU0FBcUIsRUFBRSxRQUFpQixFQUFFLFFBQWlCO1FBQzNGLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQzsrR0FSVSxZQUFZO21IQUFaLFlBQVksY0FEQyxNQUFNOzs0RkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRUeXBlLCBzaG93QWxlcnQgfSBmcm9tICdAc2l4LWdyb3VwL3VpLWxpYnJhcnknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFsZXJ0U2VydmljZSB7XG4gIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGFuIGFsZXJ0IGFzIGEgdG9hc3Qgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgcHVibGljIHNob3dBbGVydChtZXNzYWdlOiBzdHJpbmcsIGFsZXJ0VHlwZT86IEFsZXJ0VHlwZSwgZHVyYXRpb24/OiBudW1iZXIsIGljb25OYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gc2hvd0FsZXJ0KG1lc3NhZ2UsIGFsZXJ0VHlwZSwgZHVyYXRpb24sIGljb25OYW1lKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { getErrorMessage } from '@six-group/ui-library';
2
- import { Injectable } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- export class ValidationMessagesService {
5
- getErrorMessage(language, error) {
6
- return getErrorMessage(language, error);
7
- }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationMessagesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationMessagesService, providedIn: 'root' }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationMessagesService, decorators: [{
12
- type: Injectable,
13
- args: [{ providedIn: 'root' }]
14
- }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy92YWxpZGF0aW9uLW1lc3NhZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBNkIsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8seUJBQXlCO0lBQzdCLGVBQWUsQ0FBQyxRQUFrQixFQUFFLEtBQXNCO1FBQy9ELE9BQU8sZUFBZSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQUhVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRFosTUFBTTs7NEZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIExhbmd1YWdlLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAc2l4LWdyb3VwL3VpLWxpYnJhcnknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2Uge1xuICBwdWJsaWMgZ2V0RXJyb3JNZXNzYWdlKGxhbmd1YWdlOiBMYW5ndWFnZSwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldEVycm9yTWVzc2FnZShsYW5ndWFnZSwgZXJyb3IpO1xuICB9XG59XG4iXX0=
@@ -1,110 +0,0 @@
1
- import { ContentChildren, Directive, HostBinding, inject } from '@angular/core';
2
- import { RouterLinkActive } from '@angular/router';
3
- import { SixSidebarItem, SixSidebarItemGroup } from '../stencil-generated/components';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/router";
6
- /**
7
- * Enables Angular router integration for the six-sidebar component.
8
- *
9
- * When this directive is added to a six-sidebar component using the 'sixRouterLinkActive' attribute,
10
- * it activates automatic route-based selection for sidebar items and groups.
11
- *
12
- * @recommended Add this directive to enable automatic route-based navigation in sidebars.
13
- *
14
- * @example
15
- * ```html
16
- * <six-sidebar sixRouterLinkActive>
17
- * <six-sidebar-item routerLink="/home">Home</six-sidebar-item>
18
- * <six-sidebar-item-group>
19
- * <six-sidebar-item routerLink="/settings/profile">Profile</six-sidebar-item>
20
- * </six-sidebar-item-group>
21
- * </six-sidebar>
22
- * ```
23
- */
24
- export class ActiveSidebarDirective {
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActiveSidebarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ActiveSidebarDirective, selector: "six-sidebar[sixRouterLinkActive]", ngImport: i0 }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActiveSidebarDirective, decorators: [{
29
- type: Directive,
30
- args: [{
31
- selector: 'six-sidebar[sixRouterLinkActive]',
32
- }]
33
- }] });
34
- /**
35
- * Enhances six-sidebar-item with Angular router integration.
36
- *
37
- * This directive automatically manages the 'selected' state of sidebar items based on the current route.
38
- * When used with ActiveSidebarDirective, it switches from manual selection to route-based selection.
39
- *
40
- * @requires RouterLinkActive
41
- * @optional ActiveSidebarDirective - If present, enables route-based selection
42
- */
43
- export class ActiveSidebarItemDirective {
44
- constructor() {
45
- this.routerLinkActive = inject(RouterLinkActive);
46
- this.sidebarItem = inject(SixSidebarItem);
47
- this.activeSidebarDirective = inject(ActiveSidebarDirective, { optional: true });
48
- }
49
- get selected() {
50
- if (this.activeSidebarDirective == null) {
51
- return this.sidebarItem.selected;
52
- }
53
- else {
54
- return this.routerLinkActive.isActive;
55
- }
56
- }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActiveSidebarItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
58
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ActiveSidebarItemDirective, selector: "six-sidebar-item", host: { properties: { "selected": "this.selected" } }, hostDirectives: [{ directive: i1.RouterLinkActive }], ngImport: i0 }); }
59
- }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActiveSidebarItemDirective, decorators: [{
61
- type: Directive,
62
- args: [{
63
- selector: 'six-sidebar-item',
64
- hostDirectives: [RouterLinkActive],
65
- }]
66
- }], propDecorators: { selected: [{
67
- type: HostBinding,
68
- args: ['selected']
69
- }] } });
70
- /**
71
- * Enhances six-sidebar-item-group with Angular router integration.
72
- *
73
- * This directive automatically manages the 'open' state of sidebar groups based on the active route.
74
- * When a child route is active, the group automatically expands to show the active item.
75
- *
76
- * @requires RouterLinkActive
77
- * @optional ActiveSidebarDirective - If present, enables route-based expansion
78
- */
79
- export class ActiveSidebarItemGroupDirective {
80
- constructor() {
81
- this.routerLinkActive = inject(RouterLinkActive);
82
- this.sidebarItemGroup = inject(SixSidebarItemGroup);
83
- this.activeSidebarDirective = inject(ActiveSidebarDirective, { optional: true });
84
- }
85
- get open() {
86
- if (this.activeSidebarDirective == null) {
87
- return this.sidebarItemGroup.open;
88
- }
89
- if (this.sidebarItems?.length > 0) {
90
- return this.routerLinkActive.isActive ? true : this.sidebarItemGroup.open;
91
- }
92
- return this.routerLinkActive.isActive;
93
- }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActiveSidebarItemGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
95
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ActiveSidebarItemGroupDirective, selector: "six-sidebar-item-group", host: { properties: { "open": "this.open" } }, queries: [{ propertyName: "sidebarItems", predicate: SixSidebarItem }], hostDirectives: [{ directive: i1.RouterLinkActive }], ngImport: i0 }); }
96
- }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActiveSidebarItemGroupDirective, decorators: [{
98
- type: Directive,
99
- args: [{
100
- selector: 'six-sidebar-item-group',
101
- hostDirectives: [RouterLinkActive],
102
- }]
103
- }], propDecorators: { sidebarItems: [{
104
- type: ContentChildren,
105
- args: [SixSidebarItem]
106
- }], open: [{
107
- type: HostBinding,
108
- args: ['open']
109
- }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLXNpZGViYXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zaWRlYmFyL2FjdGl2ZS1zaWRlYmFyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQWdCLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQUV0Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCOytHQUF0QixzQkFBc0I7bUdBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFIbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0NBQWtDO2lCQUM3Qzs7QUFHRDs7Ozs7Ozs7R0FRRztBQUtILE1BQU0sT0FBTywwQkFBMEI7SUFKdkM7UUFLVSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyQywyQkFBc0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQVVyRjtJQVJDLElBQ0ksUUFBUTtRQUNWLElBQUksSUFBSSxDQUFDLHNCQUFzQixJQUFJLElBQUksRUFBRTtZQUN2QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1NBQ2xDO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7U0FDdkM7SUFDSCxDQUFDOytHQWJVLDBCQUEwQjttR0FBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUp0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLGNBQWMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUNuQzs4QkFRSyxRQUFRO3NCQURYLFdBQVc7dUJBQUMsVUFBVTs7QUFVekI7Ozs7Ozs7O0dBUUc7QUFLSCxNQUFNLE9BQU8sK0JBQStCO0lBSjVDO1FBS1UscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDL0MsMkJBQXNCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7S0FnQnJGO0lBWkMsSUFDSSxJQUFJO1FBQ04sSUFBSSxJQUFJLENBQUMsc0JBQXNCLElBQUksSUFBSSxFQUFFO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztTQUNuQztRQUVELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1NBQzNFO1FBRUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO0lBQ3hDLENBQUM7K0dBbEJVLCtCQUErQjttR0FBL0IsK0JBQStCLDBJQUt6QixjQUFjOzs0RkFMcEIsK0JBQStCO2tCQUozQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLGNBQWMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUNuQzs4QkFNMEMsWUFBWTtzQkFBcEQsZUFBZTt1QkFBQyxjQUFjO2dCQUczQixJQUFJO3NCQURQLFdBQVc7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBpbmplY3QsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTGlua0FjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTaXhTaWRlYmFySXRlbSwgU2l4U2lkZWJhckl0ZW1Hcm91cCB9IGZyb20gJy4uL3N0ZW5jaWwtZ2VuZXJhdGVkL2NvbXBvbmVudHMnO1xuXG4vKipcbiAqIEVuYWJsZXMgQW5ndWxhciByb3V0ZXIgaW50ZWdyYXRpb24gZm9yIHRoZSBzaXgtc2lkZWJhciBjb21wb25lbnQuXG4gKlxuICogV2hlbiB0aGlzIGRpcmVjdGl2ZSBpcyBhZGRlZCB0byBhIHNpeC1zaWRlYmFyIGNvbXBvbmVudCB1c2luZyB0aGUgJ3NpeFJvdXRlckxpbmtBY3RpdmUnIGF0dHJpYnV0ZSxcbiAqIGl0IGFjdGl2YXRlcyBhdXRvbWF0aWMgcm91dGUtYmFzZWQgc2VsZWN0aW9uIGZvciBzaWRlYmFyIGl0ZW1zIGFuZCBncm91cHMuXG4gKlxuICogQHJlY29tbWVuZGVkIEFkZCB0aGlzIGRpcmVjdGl2ZSB0byBlbmFibGUgYXV0b21hdGljIHJvdXRlLWJhc2VkIG5hdmlnYXRpb24gaW4gc2lkZWJhcnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxzaXgtc2lkZWJhciBzaXhSb3V0ZXJMaW5rQWN0aXZlPlxuICogICA8c2l4LXNpZGViYXItaXRlbSByb3V0ZXJMaW5rPVwiL2hvbWVcIj5Ib21lPC9zaXgtc2lkZWJhci1pdGVtPlxuICogICA8c2l4LXNpZGViYXItaXRlbS1ncm91cD5cbiAqICAgICA8c2l4LXNpZGViYXItaXRlbSByb3V0ZXJMaW5rPVwiL3NldHRpbmdzL3Byb2ZpbGVcIj5Qcm9maWxlPC9zaXgtc2lkZWJhci1pdGVtPlxuICogICA8L3NpeC1zaWRlYmFyLWl0ZW0tZ3JvdXA+XG4gKiA8L3NpeC1zaWRlYmFyPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3NpeC1zaWRlYmFyW3NpeFJvdXRlckxpbmtBY3RpdmVdJyxcbn0pXG5leHBvcnQgY2xhc3MgQWN0aXZlU2lkZWJhckRpcmVjdGl2ZSB7fVxuXG4vKipcbiAqIEVuaGFuY2VzIHNpeC1zaWRlYmFyLWl0ZW0gd2l0aCBBbmd1bGFyIHJvdXRlciBpbnRlZ3JhdGlvbi5cbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSBhdXRvbWF0aWNhbGx5IG1hbmFnZXMgdGhlICdzZWxlY3RlZCcgc3RhdGUgb2Ygc2lkZWJhciBpdGVtcyBiYXNlZCBvbiB0aGUgY3VycmVudCByb3V0ZS5cbiAqIFdoZW4gdXNlZCB3aXRoIEFjdGl2ZVNpZGViYXJEaXJlY3RpdmUsIGl0IHN3aXRjaGVzIGZyb20gbWFudWFsIHNlbGVjdGlvbiB0byByb3V0ZS1iYXNlZCBzZWxlY3Rpb24uXG4gKlxuICogQHJlcXVpcmVzIFJvdXRlckxpbmtBY3RpdmVcbiAqIEBvcHRpb25hbCBBY3RpdmVTaWRlYmFyRGlyZWN0aXZlIC0gSWYgcHJlc2VudCwgZW5hYmxlcyByb3V0ZS1iYXNlZCBzZWxlY3Rpb25cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnc2l4LXNpZGViYXItaXRlbScsXG4gIGhvc3REaXJlY3RpdmVzOiBbUm91dGVyTGlua0FjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFjdGl2ZVNpZGViYXJJdGVtRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSByb3V0ZXJMaW5rQWN0aXZlID0gaW5qZWN0KFJvdXRlckxpbmtBY3RpdmUpO1xuXG4gIHByaXZhdGUgc2lkZWJhckl0ZW0gPSBpbmplY3QoU2l4U2lkZWJhckl0ZW0pO1xuICBwcml2YXRlIGFjdGl2ZVNpZGViYXJEaXJlY3RpdmUgPSBpbmplY3QoQWN0aXZlU2lkZWJhckRpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBASG9zdEJpbmRpbmcoJ3NlbGVjdGVkJylcbiAgZ2V0IHNlbGVjdGVkKCkge1xuICAgIGlmICh0aGlzLmFjdGl2ZVNpZGViYXJEaXJlY3RpdmUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2lkZWJhckl0ZW0uc2VsZWN0ZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlckxpbmtBY3RpdmUuaXNBY3RpdmU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRW5oYW5jZXMgc2l4LXNpZGViYXItaXRlbS1ncm91cCB3aXRoIEFuZ3VsYXIgcm91dGVyIGludGVncmF0aW9uLlxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIGF1dG9tYXRpY2FsbHkgbWFuYWdlcyB0aGUgJ29wZW4nIHN0YXRlIG9mIHNpZGViYXIgZ3JvdXBzIGJhc2VkIG9uIHRoZSBhY3RpdmUgcm91dGUuXG4gKiBXaGVuIGEgY2hpbGQgcm91dGUgaXMgYWN0aXZlLCB0aGUgZ3JvdXAgYXV0b21hdGljYWxseSBleHBhbmRzIHRvIHNob3cgdGhlIGFjdGl2ZSBpdGVtLlxuICpcbiAqIEByZXF1aXJlcyBSb3V0ZXJMaW5rQWN0aXZlXG4gKiBAb3B0aW9uYWwgQWN0aXZlU2lkZWJhckRpcmVjdGl2ZSAtIElmIHByZXNlbnQsIGVuYWJsZXMgcm91dGUtYmFzZWQgZXhwYW5zaW9uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3NpeC1zaWRlYmFyLWl0ZW0tZ3JvdXAnLFxuICBob3N0RGlyZWN0aXZlczogW1JvdXRlckxpbmtBY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBBY3RpdmVTaWRlYmFySXRlbUdyb3VwRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSByb3V0ZXJMaW5rQWN0aXZlID0gaW5qZWN0KFJvdXRlckxpbmtBY3RpdmUpO1xuICBwcml2YXRlIHNpZGViYXJJdGVtR3JvdXAgPSBpbmplY3QoU2l4U2lkZWJhckl0ZW1Hcm91cCk7XG4gIHByaXZhdGUgYWN0aXZlU2lkZWJhckRpcmVjdGl2ZSA9IGluamVjdChBY3RpdmVTaWRlYmFyRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2l4U2lkZWJhckl0ZW0pIHByaXZhdGUgc2lkZWJhckl0ZW1zITogUXVlcnlMaXN0PFNpeFNpZGViYXJJdGVtPjtcblxuICBASG9zdEJpbmRpbmcoJ29wZW4nKVxuICBnZXQgb3BlbigpIHtcbiAgICBpZiAodGhpcy5hY3RpdmVTaWRlYmFyRGlyZWN0aXZlID09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLnNpZGViYXJJdGVtR3JvdXAub3BlbjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaWRlYmFySXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlckxpbmtBY3RpdmUuaXNBY3RpdmUgPyB0cnVlIDogdGhpcy5zaWRlYmFySXRlbUdyb3VwLm9wZW47XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZTtcbiAgfVxufVxuIl19