ngx-vector-components 6.29.1 → 6.29.2
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/CHANGELOG.md
CHANGED
|
@@ -6194,15 +6194,19 @@ class SubMenusListComponent {
|
|
|
6194
6194
|
this.submenuSelectedChange.emit(option);
|
|
6195
6195
|
}
|
|
6196
6196
|
}
|
|
6197
|
+
onChildSelectedChange(option) {
|
|
6198
|
+
// keep the submenu expanded.
|
|
6199
|
+
this.submenuSelectedChange.emit(option);
|
|
6200
|
+
}
|
|
6197
6201
|
get paddingLeft() {
|
|
6198
6202
|
return this.childLevel * 10 + 'px';
|
|
6199
6203
|
}
|
|
6200
6204
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SubMenusListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6201
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SubMenusListComponent, isStandalone: false, selector: "vector-sub-menus-list", inputs: { showList: "showList", options: "options", childLevel: "childLevel", submenuSelected: "submenuSelected" }, outputs: { submenuSelectedChange: "submenuSelectedChange" }, ngImport: i0, template: "<div class=\"sub-menu-container\">\n <ul *ngIf=\"showList\" class=\"sub-menu\">\n <div *ngFor=\"let submenuItem of options\">\n <li class=\"sub-menu-item\" [ngStyle]=\"{ 'padding-left': paddingLeft }\" (click)=\"submenuClick(submenuItem)\">\n <div\n class=\"current-item\"\n [ngClass]=\"{\n 'active-menu': submenuSelected?.id === submenuItem.id,\n 'always-open': !!submenuItem.alwaysOpen,\n 'last-child': !submenuItem.children?.length || submenuItem.showChildren === false
|
|
6205
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: SubMenusListComponent, isStandalone: false, selector: "vector-sub-menus-list", inputs: { showList: "showList", options: "options", childLevel: "childLevel", submenuSelected: "submenuSelected" }, outputs: { submenuSelectedChange: "submenuSelectedChange" }, ngImport: i0, template: "<div class=\"sub-menu-container\">\n <ul *ngIf=\"showList\" class=\"sub-menu\">\n <div *ngFor=\"let submenuItem of options\">\n <li class=\"sub-menu-item\" [ngStyle]=\"{ 'padding-left': paddingLeft }\" (click)=\"submenuClick(submenuItem)\">\n <div\n class=\"current-item\"\n [ngClass]=\"{\n 'active-menu': submenuSelected?.id === submenuItem.id,\n 'always-open': !!submenuItem.alwaysOpen,\n 'last-child': !submenuItem.children?.length || submenuItem.showChildren === false,\n }\"\n >\n <div *ngIf=\"submenuItem.icon\" class=\"icon-container\">\n <i [class]=\"submenuItem.icon\"></i>\n </div>\n <span class=\"menu-label\">{{ submenuItem.label }}</span>\n <i\n *ngIf=\"submenuItem.children?.length && !submenuItem.alwaysOpen && submenuItem.showChildren !== false\"\n class=\"fas angle-icon\"\n [ngClass]=\"{\n 'fa-angle-down': submenuSelected?.id !== submenuItem.id,\n 'fa-angle-up': submenuSelected?.id === submenuItem.id,\n }\"\n ></i>\n </div>\n </li>\n <vector-sub-menus-list\n *ngIf=\"submenuItem?.children && submenuItem?.showChildren !== false\"\n [options]=\"submenuItem?.children\"\n [showList]=\"submenuItem?.id === submenuSelected?.id || !!submenuItem?.alwaysOpen\"\n [childLevel]=\"childLevel + 1\"\n (submenuSelectedChange)=\"onChildSelectedChange($event)\"\n ></vector-sub-menus-list>\n </div>\n </ul>\n</div>\n", styles: [".angle-icon{position:absolute;right:10px}.menu-icon{filter:brightness(0) saturate(100%) invert(14%) sepia(87%) saturate(1218%) hue-rotate(233deg) brightness(88%) contrast(90%);width:20px;height:20px}.icon-container{width:20px;height:20px;position:relative}.icon-container .menu-icon{display:flex;justify-content:center;align-items:center;font-size:1.4em}.icon-container .menu-notifications-count{padding:0 4.5px;background-color:var(--error-color);border-radius:10px;position:absolute;top:-4px;right:-4px;font-size:8px}.menu-label{color:var(--theme-dark);font-weight:600;text-decoration:none;padding-bottom:1px;padding-right:24px;margin-left:20px;min-width:170px;white-space:normal;overflow:visible}.active-menu:not(.always-open){background-color:var(--gray-light)}.sub-menu-container .sub-menu{list-style:none;display:contents}.sub-menu-container .sub-menu .sub-menu-item{animation:showSubMenu ease-in-out .1s;animation-fill-mode:both}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(n){animation-delay:50ms}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(2n){animation-delay:.1s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(3n){animation-delay:.15s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(4n){animation-delay:.2s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(5n){animation-delay:.25s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(6n){animation-delay:.3s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(7n){animation-delay:.35s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(8n){animation-delay:.4s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(9n){animation-delay:.45s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(10n){animation-delay:.5s}.sub-menu-container .sub-menu .sub-menu-item .current-item{min-height:40px;display:flex;flex-direction:row;align-items:center;transition:background-color ease-in-out .1s;z-index:2;overflow:hidden;padding:0 10px;border-radius:15px;margin:5px 0;position:relative}.sub-menu-container .sub-menu .sub-menu-item .current-item:not(.always-open){cursor:pointer}.sub-menu-container .sub-menu .sub-menu-item .current-item:hover,.sub-menu-container .sub-menu .sub-menu-item .current-item.active{background-color:var(--gray-light)}.sub-menu-container .sub-menu .sub-menu-item .current-item.active span,.sub-menu-container .sub-menu .sub-menu-item .current-item.active i{color:#fff}@keyframes showSubMenu{0%{transform:translate(-100%)}to{transform:translate(0)}}.sub-menu-container .sub-menu .sub-menu-item .last-child .menu-label{font-weight:400}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SubMenusListComponent, selector: "vector-sub-menus-list", inputs: ["showList", "options", "childLevel", "submenuSelected"], outputs: ["submenuSelectedChange"] }] }); }
|
|
6202
6206
|
}
|
|
6203
6207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SubMenusListComponent, decorators: [{
|
|
6204
6208
|
type: Component,
|
|
6205
|
-
args: [{ standalone: false, selector: 'vector-sub-menus-list', template: "<div class=\"sub-menu-container\">\n <ul *ngIf=\"showList\" class=\"sub-menu\">\n <div *ngFor=\"let submenuItem of options\">\n <li class=\"sub-menu-item\" [ngStyle]=\"{ 'padding-left': paddingLeft }\" (click)=\"submenuClick(submenuItem)\">\n <div\n class=\"current-item\"\n [ngClass]=\"{\n 'active-menu': submenuSelected?.id === submenuItem.id,\n 'always-open': !!submenuItem.alwaysOpen,\n 'last-child': !submenuItem.children?.length || submenuItem.showChildren === false
|
|
6209
|
+
args: [{ standalone: false, selector: 'vector-sub-menus-list', template: "<div class=\"sub-menu-container\">\n <ul *ngIf=\"showList\" class=\"sub-menu\">\n <div *ngFor=\"let submenuItem of options\">\n <li class=\"sub-menu-item\" [ngStyle]=\"{ 'padding-left': paddingLeft }\" (click)=\"submenuClick(submenuItem)\">\n <div\n class=\"current-item\"\n [ngClass]=\"{\n 'active-menu': submenuSelected?.id === submenuItem.id,\n 'always-open': !!submenuItem.alwaysOpen,\n 'last-child': !submenuItem.children?.length || submenuItem.showChildren === false,\n }\"\n >\n <div *ngIf=\"submenuItem.icon\" class=\"icon-container\">\n <i [class]=\"submenuItem.icon\"></i>\n </div>\n <span class=\"menu-label\">{{ submenuItem.label }}</span>\n <i\n *ngIf=\"submenuItem.children?.length && !submenuItem.alwaysOpen && submenuItem.showChildren !== false\"\n class=\"fas angle-icon\"\n [ngClass]=\"{\n 'fa-angle-down': submenuSelected?.id !== submenuItem.id,\n 'fa-angle-up': submenuSelected?.id === submenuItem.id,\n }\"\n ></i>\n </div>\n </li>\n <vector-sub-menus-list\n *ngIf=\"submenuItem?.children && submenuItem?.showChildren !== false\"\n [options]=\"submenuItem?.children\"\n [showList]=\"submenuItem?.id === submenuSelected?.id || !!submenuItem?.alwaysOpen\"\n [childLevel]=\"childLevel + 1\"\n (submenuSelectedChange)=\"onChildSelectedChange($event)\"\n ></vector-sub-menus-list>\n </div>\n </ul>\n</div>\n", styles: [".angle-icon{position:absolute;right:10px}.menu-icon{filter:brightness(0) saturate(100%) invert(14%) sepia(87%) saturate(1218%) hue-rotate(233deg) brightness(88%) contrast(90%);width:20px;height:20px}.icon-container{width:20px;height:20px;position:relative}.icon-container .menu-icon{display:flex;justify-content:center;align-items:center;font-size:1.4em}.icon-container .menu-notifications-count{padding:0 4.5px;background-color:var(--error-color);border-radius:10px;position:absolute;top:-4px;right:-4px;font-size:8px}.menu-label{color:var(--theme-dark);font-weight:600;text-decoration:none;padding-bottom:1px;padding-right:24px;margin-left:20px;min-width:170px;white-space:normal;overflow:visible}.active-menu:not(.always-open){background-color:var(--gray-light)}.sub-menu-container .sub-menu{list-style:none;display:contents}.sub-menu-container .sub-menu .sub-menu-item{animation:showSubMenu ease-in-out .1s;animation-fill-mode:both}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(n){animation-delay:50ms}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(2n){animation-delay:.1s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(3n){animation-delay:.15s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(4n){animation-delay:.2s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(5n){animation-delay:.25s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(6n){animation-delay:.3s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(7n){animation-delay:.35s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(8n){animation-delay:.4s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(9n){animation-delay:.45s}.sub-menu-container .sub-menu .sub-menu-item:not(:first-child):nth-child(10n){animation-delay:.5s}.sub-menu-container .sub-menu .sub-menu-item .current-item{min-height:40px;display:flex;flex-direction:row;align-items:center;transition:background-color ease-in-out .1s;z-index:2;overflow:hidden;padding:0 10px;border-radius:15px;margin:5px 0;position:relative}.sub-menu-container .sub-menu .sub-menu-item .current-item:not(.always-open){cursor:pointer}.sub-menu-container .sub-menu .sub-menu-item .current-item:hover,.sub-menu-container .sub-menu .sub-menu-item .current-item.active{background-color:var(--gray-light)}.sub-menu-container .sub-menu .sub-menu-item .current-item.active span,.sub-menu-container .sub-menu .sub-menu-item .current-item.active i{color:#fff}@keyframes showSubMenu{0%{transform:translate(-100%)}to{transform:translate(0)}}.sub-menu-container .sub-menu .sub-menu-item .last-child .menu-label{font-weight:400}\n"] }]
|
|
6206
6210
|
}], propDecorators: { showList: [{
|
|
6207
6211
|
type: Input
|
|
6208
6212
|
}], options: [{
|
|
@@ -6360,12 +6364,15 @@ class MenuComponent {
|
|
|
6360
6364
|
}
|
|
6361
6365
|
onSubmenuClick(submenuItem) {
|
|
6362
6366
|
if (!submenuItem.alwaysOpen) {
|
|
6367
|
+
const isExpandable = !!submenuItem.children?.length && submenuItem.showChildren !== false;
|
|
6363
6368
|
if (this.activeSubmenuOption?.id === submenuItem?.id) {
|
|
6364
6369
|
this.activeSubmenuOption = undefined;
|
|
6365
6370
|
}
|
|
6366
|
-
else {
|
|
6367
|
-
this.activeSubmenuOption =
|
|
6368
|
-
|
|
6371
|
+
else if (isExpandable) {
|
|
6372
|
+
this.activeSubmenuOption = submenuItem;
|
|
6373
|
+
}
|
|
6374
|
+
else if (!this.isDescendantOf(submenuItem, this.activeSubmenuOption)) {
|
|
6375
|
+
this.activeSubmenuOption = undefined;
|
|
6369
6376
|
}
|
|
6370
6377
|
if (submenuItem.frameUrl) {
|
|
6371
6378
|
this.menuService.frameUrl$.next(submenuItem.frameUrl);
|
|
@@ -6384,6 +6391,9 @@ class MenuComponent {
|
|
|
6384
6391
|
}
|
|
6385
6392
|
}
|
|
6386
6393
|
}
|
|
6394
|
+
isDescendantOf(item, parent) {
|
|
6395
|
+
return !!parent?.children?.some((child) => child.id === item.id || this.isDescendantOf(item, child));
|
|
6396
|
+
}
|
|
6387
6397
|
openTermsOfUse() {
|
|
6388
6398
|
this.accountService.termsOfUse$.next();
|
|
6389
6399
|
}
|