Skip to content

Commit f7a06a7

Browse files
committed
SVY-21044 Error when changing menu of the sidenav
1 parent ee3307e commit f7a06a7

1 file changed

Lines changed: 67 additions & 65 deletions

File tree

  • bootstrapextracomponents/projects/bootstrapextracomponents/src/navbar

bootstrapextracomponents/projects/bootstrapextracomponents/src/navbar/navbar.ts

Lines changed: 67 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ export class ServoyBootstrapExtraNavbar extends ServoyBaseComponent<HTMLDivEleme
3030

3131
readonly onMenuItemClicked = input<(e: Event, menuItem: BaseMenuItem) => void>(undefined);
3232
readonly onBrandClicked = input<(e: Event) => void>(undefined);
33-
34-
_menuItems = signal<Array<MenuItem>>(undefined);
33+
34+
_menuItems = signal<Array<MenuItem>>(undefined);
3535

3636
focusSubjects = new Array<Subject<string>>();
3737
typeaheadInit = false;
@@ -60,15 +60,15 @@ export class ServoyBootstrapExtraNavbar extends ServoyBaseComponent<HTMLDivEleme
6060

6161
svyOnInit() {
6262
super.svyOnInit();
63-
this._menuItems.set(this.menuItems());
63+
this._menuItems.set(this.menuItems());
6464
this.copyServoyMenu();
6565
}
6666

6767
svyOnChanges(changes: SimpleChanges) {
6868
super.svyOnChanges(changes);
69-
if (changes.menuItems) {
70-
this._menuItems.set(changes.menuItems.currentValue);
71-
}
69+
if (changes.menuItems) {
70+
this._menuItems.set(changes.menuItems.currentValue);
71+
}
7272
if (changes.menuItems && !this.servoyMenu()) {
7373
this.initTypeaheads(changes.menuItems.currentValue);
7474
}
@@ -104,7 +104,7 @@ export class ServoyBootstrapExtraNavbar extends ServoyBaseComponent<HTMLDivEleme
104104

105105
onInputChange(menuItem: MenuItem, index: number) {
106106
const servoyMenu = this.servoyMenu();
107-
if (servoyMenu) {
107+
if (servoyMenu) {
108108
servoyMenu.pushDataProviderValue('Navbar', 'dataProviderValue', index, menuItem.dataProvider);
109109
} else {
110110
this.servoyApi.apply('menuItems[' + index + '].dataProvider', menuItem.dataProvider);
@@ -209,7 +209,7 @@ export class ServoyBootstrapExtraNavbar extends ServoyBaseComponent<HTMLDivEleme
209209
const itemClicked = this.getItem(event);
210210
this.makeItemActive(itemClicked);
211211
const onMenuItemClicked = this.onMenuItemClicked();
212-
if (itemClicked && itemClicked.onAction) {
212+
if (itemClicked && itemClicked.onAction) {
213213
const jsEvent = this.servoyService.createJSEvent(event, 'action');
214214
itemClicked.onAction(jsEvent, this.createItemArg(itemClicked));
215215
} else if (itemClicked && onMenuItemClicked) {
@@ -420,17 +420,17 @@ export class ServoyBootstrapExtraNavbar extends ServoyBaseComponent<HTMLDivEleme
420420
}
421421

422422
getFilterValues(index: number) {
423-
const menuItems = this._menuItems();
424-
this.initTypeaheads(menuItems);
425-
const item = menuItems[index];
426-
const focus$ = this.focusSubjects[index];
427-
return (text$: Observable<string>) => {
428-
const debouncedText$ = text$.pipe(debounceTime(200), distinctUntilChanged());
429-
const inputFocus$ = focus$;
423+
const menuItems = this._menuItems();
424+
this.initTypeaheads(menuItems);
425+
const item = menuItems[index];
426+
const focus$ = this.focusSubjects[index];
427+
return (text$: Observable<string>) => {
428+
const debouncedText$ = text$.pipe(debounceTime(200), distinctUntilChanged());
429+
const inputFocus$ = focus$;
430430

431-
return merge(debouncedText$, inputFocus$).pipe(switchMap(term => (term === '' ? of(item.valuelist)
432-
: item.valuelist.filterList(term))));
433-
};
431+
return merge(debouncedText$, inputFocus$).pipe(switchMap(term => (term === '' ? of(item.valuelist)
432+
: item.valuelist.filterList(term))));
433+
};
434434
}
435435

436436
initTypeaheads(items: Array<MenuItem>) {
@@ -454,7 +454,7 @@ export class ServoyBootstrapExtraNavbar extends ServoyBaseComponent<HTMLDivEleme
454454
clickBrand(event: Event) {
455455
event.preventDefault();
456456
const onBrandClicked = this.onBrandClicked();
457-
if (onBrandClicked) {
457+
if (onBrandClicked) {
458458
onBrandClicked(event);
459459
}
460460
}
@@ -549,48 +549,50 @@ export class ServoyBootstrapExtraNavbar extends ServoyBaseComponent<HTMLDivEleme
549549
}
550550

551551
private copyServoyMenu() {
552-
const servoyMenu = this.servoyMenu();
553-
if (servoyMenu) {
554-
const oldMenu = new Array();
555-
for (let i = 0;i < servoyMenu.items.length;i++) {
556-
const source = servoyMenu.items[i];
557-
const menuItem = {} as MenuItem;
558-
menuItem.text = source.menuText;
559-
menuItem.itemId = source.itemID;
560-
menuItem.styleClass = source.styleClass;
561-
menuItem.enabled = source.enabled;
562-
menuItem.iconName = source.iconStyleClass;
563-
menuItem.tabindex = source.extraProperties?.Navbar?.tabindex;
564-
menuItem.userData = source.extraProperties?.Navbar?.userData;
565-
menuItem.attributes = source.extraProperties?.Navbar?.attributes;
566-
menuItem.position = source.extraProperties?.Navbar?.position;
567-
menuItem.displayType = source.extraProperties?.Navbar?.displayType;
568-
menuItem.dataProvider = source.extraProperties?.Navbar?.dataProviderValue;
569-
menuItem.valuelist = source.extraProperties?.Navbar?.valuelist;
570-
menuItem.tooltip = source.tooltipText;
571-
menuItem.inputButtonText = source.extraProperties?.Navbar?.inputButtonText;
572-
menuItem.inputButtonStyleClass = source.extraProperties?.Navbar?.inputButtonStyleClass;
573-
menuItem.isActive = source.isSelected;
574-
if (source.items && source.items.length > 0) {
575-
menuItem.subMenuItems = new Array();
576-
for (let i = 0;i < source.items.length;i++) {
577-
const subMenuItem = {} as SubMenuItem;
578-
const childSource = source.items[i];
579-
subMenuItem.text = childSource.menuText;
580-
subMenuItem.itemId = childSource.itemID;
581-
subMenuItem.styleClass = childSource.styleClass;
582-
subMenuItem.enabled = childSource.enabled;
583-
subMenuItem.iconName = childSource.iconStyleClass;
584-
subMenuItem.tabindex = childSource.extraProperties?.Navbar?.tabindex;
585-
subMenuItem.userData = childSource.extraProperties?.Navbar?.userData;
586-
subMenuItem.isDivider = childSource.extraProperties?.Navbar?.isDivider;
587-
menuItem.subMenuItems.push(subMenuItem);
588-
}
589-
}
590-
oldMenu.push(menuItem);
591-
}
592-
this._menuItems.set(oldMenu);
593-
}
552+
const servoyMenu = this.servoyMenu();
553+
if (servoyMenu) {
554+
const oldMenu = new Array();
555+
if (servoyMenu.items && servoyMenu.items.length > 0) {
556+
for (let i = 0; i < servoyMenu.items.length; i++) {
557+
const source = servoyMenu.items[i];
558+
const menuItem = {} as MenuItem;
559+
menuItem.text = source.menuText;
560+
menuItem.itemId = source.itemID;
561+
menuItem.styleClass = source.styleClass;
562+
menuItem.enabled = source.enabled;
563+
menuItem.iconName = source.iconStyleClass;
564+
menuItem.tabindex = source.extraProperties?.Navbar?.tabindex;
565+
menuItem.userData = source.extraProperties?.Navbar?.userData;
566+
menuItem.attributes = source.extraProperties?.Navbar?.attributes;
567+
menuItem.position = source.extraProperties?.Navbar?.position;
568+
menuItem.displayType = source.extraProperties?.Navbar?.displayType;
569+
menuItem.dataProvider = source.extraProperties?.Navbar?.dataProviderValue;
570+
menuItem.valuelist = source.extraProperties?.Navbar?.valuelist;
571+
menuItem.tooltip = source.tooltipText;
572+
menuItem.inputButtonText = source.extraProperties?.Navbar?.inputButtonText;
573+
menuItem.inputButtonStyleClass = source.extraProperties?.Navbar?.inputButtonStyleClass;
574+
menuItem.isActive = source.isSelected;
575+
if (source.items && source.items.length > 0) {
576+
menuItem.subMenuItems = new Array();
577+
for (let i = 0; i < source.items.length; i++) {
578+
const subMenuItem = {} as SubMenuItem;
579+
const childSource = source.items[i];
580+
subMenuItem.text = childSource.menuText;
581+
subMenuItem.itemId = childSource.itemID;
582+
subMenuItem.styleClass = childSource.styleClass;
583+
subMenuItem.enabled = childSource.enabled;
584+
subMenuItem.iconName = childSource.iconStyleClass;
585+
subMenuItem.tabindex = childSource.extraProperties?.Navbar?.tabindex;
586+
subMenuItem.userData = childSource.extraProperties?.Navbar?.userData;
587+
subMenuItem.isDivider = childSource.extraProperties?.Navbar?.isDivider;
588+
menuItem.subMenuItems.push(subMenuItem);
589+
}
590+
}
591+
oldMenu.push(menuItem);
592+
}
593+
}
594+
this._menuItems.set(oldMenu);
595+
}
594596
}
595597
}
596598
class BaseMenuItem extends BaseCustomObject {
@@ -633,17 +635,17 @@ class SubMenuItem extends BaseMenuItem {
633635
// eslint-disable-next-line @angular-eslint/directive-class-suffix
634636
export class SvyAttributes implements OnInit {
635637
readonly attributes = input<Array<{
636-
key: string;
637-
value: string;
638-
}>>(undefined, { alias: "svyAttributes" });
638+
key: string;
639+
value: string;
640+
}>>(undefined, { alias: "svyAttributes" });
639641

640642
constructor(private el: ElementRef, private renderer: Renderer2) {
641643

642644
}
643645

644646
ngOnInit(): void {
645647
const attributes = this.attributes();
646-
if (attributes) {
648+
if (attributes) {
647649
attributes.forEach(attribute => this.renderer.setAttribute(this.el.nativeElement, attribute.key, attribute.value));
648650
}
649651
}

0 commit comments

Comments
 (0)