@gravitee/ui-particles-angular 7.14.0-theme-submenu-ea8c6a9 → 7.15.0
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.
- package/esm2020/lib/gio-form-json-schema/gio-form-json-schema.component.mjs +21 -12
- package/esm2020/lib/gio-submenu/gio-submenu-item/gio-submenu-item.component.mjs +2 -2
- package/esm2020/lib/gio-submenu/gio-submenu.component.mjs +5 -8
- package/fesm2015/gravitee-ui-particles-angular.mjs +29 -23
- package/fesm2015/gravitee-ui-particles-angular.mjs.map +1 -1
- package/fesm2020/gravitee-ui-particles-angular.mjs +25 -19
- package/fesm2020/gravitee-ui-particles-angular.mjs.map +1 -1
- package/lib/gio-form-json-schema/gio-form-json-schema.component.d.ts +1 -0
- package/lib/gio-submenu/gio-submenu.component.d.ts +1 -3
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { trigger, transition, style, animate } from '@angular/animations';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { EventEmitter, Component, HostBinding, Input, Output, HostListener, NgModule, Optional, Self, ViewChild, Directive, Inject, forwardRef, ChangeDetectionStrategy, Injectable, ViewEncapsulation, ContentChildren, Host, ContentChild, InjectionToken } from '@angular/core';
|
|
4
|
-
import { timer, Subject, fromEvent, of, BehaviorSubject,
|
|
4
|
+
import { timer, Subject, fromEvent, of, BehaviorSubject, ReplaySubject, merge } from 'rxjs';
|
|
5
5
|
import * as i1 from '@angular/material/card';
|
|
6
6
|
import { MatCardModule } from '@angular/material/card';
|
|
7
7
|
import * as i2 from '@angular/material/button';
|
|
@@ -13,7 +13,7 @@ import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
|
13
13
|
import * as i3$1 from '@angular/material/form-field';
|
|
14
14
|
import { MatFormFieldControl, MatFormFieldModule, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
|
|
15
15
|
import { isEmpty, toLower, dropRight, isNil, isArray, remove, isObject, cloneDeep, uniqueId, set } from 'lodash';
|
|
16
|
-
import { startWith, map, distinctUntilChanged, tap, debounce, takeUntil, delay, filter, switchMap, debounceTime } from 'rxjs/operators';
|
|
16
|
+
import { startWith, map, distinctUntilChanged, tap, debounce, takeUntil, delay, filter, switchMap, take, debounceTime } from 'rxjs/operators';
|
|
17
17
|
import * as i7 from '@angular/forms';
|
|
18
18
|
import { FormsModule, FormArray, FormGroup, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, NgControl } from '@angular/forms';
|
|
19
19
|
import * as i2$2 from '@angular/cdk/a11y';
|
|
@@ -2132,7 +2132,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
2132
2132
|
class GioSubmenuComponent {
|
|
2133
2133
|
constructor(gioMenuService) {
|
|
2134
2134
|
this.gioMenuService = gioMenuService;
|
|
2135
|
-
this.theme = 'dark';
|
|
2136
2135
|
this.reduced = false;
|
|
2137
2136
|
this.loaded = false;
|
|
2138
2137
|
this.overlayOptions = { open: false };
|
|
@@ -2182,13 +2181,11 @@ class GioSubmenuComponent {
|
|
|
2182
2181
|
}
|
|
2183
2182
|
}
|
|
2184
2183
|
GioSubmenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioSubmenuComponent, deps: [{ token: GioMenuService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2185
|
-
GioSubmenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioSubmenuComponent, selector: "gio-submenu",
|
|
2184
|
+
GioSubmenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioSubmenuComponent, selector: "gio-submenu", host: { listeners: { "keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "gioSubmenu", first: true, predicate: ["gioSubmenu"], descendants: true }], ngImport: i0, template: "<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div\n #gioSubmenu\n class=\"gio-submenu\"\n [class.gio-submenu__loaded]=\"loaded\"\n [class.gio-submenu__reduced]=\"reduced\"\n [class.gio-submenu__overlay]=\"overlayOptions.open\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <div #title class=\"gio-submenu__title\" [class.hide]=\"!title.children.length || reduced\">\n <ng-content select=\"[gioSubmenuTitle]\"></ng-content>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [":host{z-index:100}.gio-submenu{display:none;width:266px;height:100%;flex:none;flex-direction:column;flex-grow:0;justify-content:flex-start;padding:16px;background:#100c27}.gio-submenu__reduced{position:absolute;overflow:auto;border-radius:8px;margin:0 0 0 8px;opacity:0;visibility:hidden}.gio-submenu__loaded{display:flex}.gio-submenu__overlay,.gio-submenu:hover{opacity:1;transition:opacity .15s,visibility .15s;visibility:visible}.gio-submenu__title{padding-bottom:8px;color:#fff}.gio-submenu .hide{display:none}\n"] });
|
|
2186
2185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioSubmenuComponent, decorators: [{
|
|
2187
2186
|
type: Component,
|
|
2188
|
-
args: [{ selector: 'gio-submenu', template: "<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div\n #gioSubmenu\n class=\"gio-submenu\"\n [class.gio-submenu__loaded]=\"loaded\"\n [class.gio-submenu__reduced]=\"reduced\"\n [class.gio-submenu__overlay]=\"overlayOptions.open\"\n
|
|
2189
|
-
}], ctorParameters: function () { return [{ type: GioMenuService }]; }, propDecorators: {
|
|
2190
|
-
type: Input
|
|
2191
|
-
}], gioSubmenu: [{
|
|
2187
|
+
args: [{ selector: 'gio-submenu', template: "<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div\n #gioSubmenu\n class=\"gio-submenu\"\n [class.gio-submenu__loaded]=\"loaded\"\n [class.gio-submenu__reduced]=\"reduced\"\n [class.gio-submenu__overlay]=\"overlayOptions.open\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <div #title class=\"gio-submenu__title\" [class.hide]=\"!title.children.length || reduced\">\n <ng-content select=\"[gioSubmenuTitle]\"></ng-content>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [":host{z-index:100}.gio-submenu{display:none;width:266px;height:100%;flex:none;flex-direction:column;flex-grow:0;justify-content:flex-start;padding:16px;background:#100c27}.gio-submenu__reduced{position:absolute;overflow:auto;border-radius:8px;margin:0 0 0 8px;opacity:0;visibility:hidden}.gio-submenu__loaded{display:flex}.gio-submenu__overlay,.gio-submenu:hover{opacity:1;transition:opacity .15s,visibility .15s;visibility:visible}.gio-submenu__title{padding-bottom:8px;color:#fff}.gio-submenu .hide{display:none}\n"] }]
|
|
2188
|
+
}], ctorParameters: function () { return [{ type: GioMenuService }]; }, propDecorators: { gioSubmenu: [{
|
|
2192
2189
|
type: ViewChild,
|
|
2193
2190
|
args: ['gioSubmenu', { static: false }]
|
|
2194
2191
|
}], onKeydownHandler: [{
|
|
@@ -2251,10 +2248,10 @@ class GioSubmenuItemComponent {
|
|
|
2251
2248
|
}
|
|
2252
2249
|
}
|
|
2253
2250
|
GioSubmenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioSubmenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2254
|
-
GioSubmenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioSubmenuItemComponent, selector: "gio-submenu-item", inputs: { active: "active", iconRight: "iconRight" }, host: { listeners: { "keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "gioSubmenuItem", first: true, predicate: ["gioSubmenuItem"], descendants: true }], ngImport: i0, template: "<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div #gioSubmenuItem class=\"gio-submenu-item\" [class.gio-submenu-item__active]=\"active\">\n <span class=\"gio-submenu-item__title\"><ng-content></ng-content></span>\n <mat-icon *ngIf=\"iconRight\" class=\"gio-submenu-item__icon-right\" [svgIcon]=\"iconRight\"></mat-icon>\n</div>\n", styles: [":host{display:block}.gio-submenu-item{width:234px;height:36px;flex:none;flex-grow:0;order:2;padding:8px 12px;border-radius:4px;margin:1px 0;cursor:pointer}.gio-submenu-item__active{background:#494b61}.gio-submenu-item__title{width:37px;height:20px;flex:none;flex-grow:0;color:#fff;letter-spacing:.4px}.gio-submenu-item__icon-right{width:20px;height:20px;color:#fff;float:right}:host-context(.gio-submenu-group) .gio-submenu-item{padding:8px 20px}
|
|
2251
|
+
GioSubmenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioSubmenuItemComponent, selector: "gio-submenu-item", inputs: { active: "active", iconRight: "iconRight" }, host: { listeners: { "keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "gioSubmenuItem", first: true, predicate: ["gioSubmenuItem"], descendants: true }], ngImport: i0, template: "<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div #gioSubmenuItem class=\"gio-submenu-item\" [class.gio-submenu-item__active]=\"active\">\n <span class=\"gio-submenu-item__title\"><ng-content></ng-content></span>\n <mat-icon *ngIf=\"iconRight\" class=\"gio-submenu-item__icon-right\" [svgIcon]=\"iconRight\"></mat-icon>\n</div>\n", styles: [":host{display:block}.gio-submenu-item{width:234px;height:36px;flex:none;flex-grow:0;order:2;padding:8px 12px;border-radius:4px;margin:1px 0;cursor:pointer}.gio-submenu-item__active{background:#494b61}.gio-submenu-item__title{width:37px;height:20px;flex:none;flex-grow:0;color:#fff;letter-spacing:.4px}.gio-submenu-item__icon-right{width:20px;height:20px;color:#fff;float:right}:host-context(.gio-submenu-group) .gio-submenu-item{padding:8px 20px}.gio-submenu-item:hover:not(.gio-submenu-item__active){background:#33354d}\n"], components: [{ type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
2255
2252
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioSubmenuItemComponent, decorators: [{
|
|
2256
2253
|
type: Component,
|
|
2257
|
-
args: [{ selector: 'gio-submenu-item', template: "<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div #gioSubmenuItem class=\"gio-submenu-item\" [class.gio-submenu-item__active]=\"active\">\n <span class=\"gio-submenu-item__title\"><ng-content></ng-content></span>\n <mat-icon *ngIf=\"iconRight\" class=\"gio-submenu-item__icon-right\" [svgIcon]=\"iconRight\"></mat-icon>\n</div>\n", styles: [":host{display:block}.gio-submenu-item{width:234px;height:36px;flex:none;flex-grow:0;order:2;padding:8px 12px;border-radius:4px;margin:1px 0;cursor:pointer}.gio-submenu-item__active{background:#494b61}.gio-submenu-item__title{width:37px;height:20px;flex:none;flex-grow:0;color:#fff;letter-spacing:.4px}.gio-submenu-item__icon-right{width:20px;height:20px;color:#fff;float:right}:host-context(.gio-submenu-group) .gio-submenu-item{padding:8px 20px}
|
|
2254
|
+
args: [{ selector: 'gio-submenu-item', template: "<!--\n\n Copyright (C) 2022 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div #gioSubmenuItem class=\"gio-submenu-item\" [class.gio-submenu-item__active]=\"active\">\n <span class=\"gio-submenu-item__title\"><ng-content></ng-content></span>\n <mat-icon *ngIf=\"iconRight\" class=\"gio-submenu-item__icon-right\" [svgIcon]=\"iconRight\"></mat-icon>\n</div>\n", styles: [":host{display:block}.gio-submenu-item{width:234px;height:36px;flex:none;flex-grow:0;order:2;padding:8px 12px;border-radius:4px;margin:1px 0;cursor:pointer}.gio-submenu-item__active{background:#494b61}.gio-submenu-item__title{width:37px;height:20px;flex:none;flex-grow:0;color:#fff;letter-spacing:.4px}.gio-submenu-item__icon-right{width:20px;height:20px;color:#fff;float:right}:host-context(.gio-submenu-group) .gio-submenu-item{padding:8px 20px}.gio-submenu-item:hover:not(.gio-submenu-item__active){background:#33354d}\n"] }]
|
|
2258
2255
|
}], propDecorators: { active: [{
|
|
2259
2256
|
type: Input
|
|
2260
2257
|
}], iconRight: [{
|
|
@@ -2941,6 +2938,7 @@ class GioFormJsonSchemaComponent {
|
|
|
2941
2938
|
this._onChange = () => ({});
|
|
2942
2939
|
this._onTouched = () => ({});
|
|
2943
2940
|
this.touched = false;
|
|
2941
|
+
this.isValid$ = new ReplaySubject(1); // Wait JsonSchema to be loaded to check if it's valid
|
|
2944
2942
|
this.stateChanges$ = new Subject();
|
|
2945
2943
|
if (ngControl) {
|
|
2946
2944
|
// Setting the value accessor directly (instead of using
|
|
@@ -2968,25 +2966,33 @@ class GioFormJsonSchemaComponent {
|
|
|
2968
2966
|
}
|
|
2969
2967
|
}
|
|
2970
2968
|
ngOnInit() {
|
|
2969
|
+
// Invalid by default.
|
|
2970
|
+
this.ngControl?.control?.addAsyncValidators(() => {
|
|
2971
|
+
return this.isValid$.pipe(takeUntil(this.unsubscribe$), take(1), map(isValid => (isValid ? null : { invalid: true })));
|
|
2972
|
+
});
|
|
2973
|
+
this.ngControl?.control?.updateValueAndValidity({ emitEvent: false });
|
|
2971
2974
|
// Subscribe to state changes to manage touches, status and value
|
|
2972
|
-
this.stateChanges$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
2975
|
+
this.stateChanges$.pipe(takeUntil(this.unsubscribe$), debounceTime(100)).subscribe(() => {
|
|
2973
2976
|
const { status, value, touched } = this.formGroup;
|
|
2974
2977
|
if (this.isDisabled) {
|
|
2975
2978
|
return;
|
|
2976
2979
|
}
|
|
2977
|
-
if (touched) {
|
|
2978
|
-
this._onTouched();
|
|
2979
|
-
this.touched = true;
|
|
2980
|
-
}
|
|
2981
|
-
if (this.touched) {
|
|
2982
|
-
this._onChange(value);
|
|
2983
|
-
}
|
|
2984
2980
|
if (status === 'VALID') {
|
|
2981
|
+
this.isValid$.next(true);
|
|
2985
2982
|
this.ngControl?.control?.setErrors(null);
|
|
2986
2983
|
}
|
|
2987
2984
|
if (status === 'INVALID') {
|
|
2985
|
+
this.isValid$.next(false);
|
|
2988
2986
|
this.ngControl?.control?.setErrors({ invalid: true });
|
|
2989
2987
|
}
|
|
2988
|
+
if (touched && !this.touched) {
|
|
2989
|
+
this._onTouched();
|
|
2990
|
+
this.touched = true;
|
|
2991
|
+
}
|
|
2992
|
+
if (this.touched) {
|
|
2993
|
+
this._onChange(value);
|
|
2994
|
+
}
|
|
2995
|
+
this.ngControl?.control?.updateValueAndValidity({ emitEvent: false });
|
|
2990
2996
|
this.changeDetectorRef.detectChanges();
|
|
2991
2997
|
});
|
|
2992
2998
|
// When the parent form is touched, mark all the sub formGroup as touched if not already touched
|
|
@@ -3002,7 +3008,7 @@ class GioFormJsonSchemaComponent {
|
|
|
3002
3008
|
});
|
|
3003
3009
|
// Group all valueChanges events emit by formly in a single one
|
|
3004
3010
|
merge(this.formGroup.statusChanges, this.formGroup.valueChanges)
|
|
3005
|
-
.pipe(takeUntil(this.unsubscribe$)
|
|
3011
|
+
.pipe(takeUntil(this.unsubscribe$))
|
|
3006
3012
|
.subscribe(() => {
|
|
3007
3013
|
this.stateChanges$.next();
|
|
3008
3014
|
});
|