@kris701/ez-ui 1.3.19 → 1.4.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.
@@ -6889,6 +6889,7 @@ class EzUISideBarItem {
6889
6889
  tuiAsideItem
6890
6890
  tuiChevron
6891
6891
  type="button"
6892
+ (click)="item.expanded = !item.expanded;onItemClick.emit()"
6892
6893
  >
6893
6894
  {{item.label}}
6894
6895
 
@@ -6931,6 +6932,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
6931
6932
  tuiAsideItem
6932
6933
  tuiChevron
6933
6934
  type="button"
6935
+ (click)="item.expanded = !item.expanded;onItemClick.emit()"
6934
6936
  >
6935
6937
  {{item.label}}
6936
6938
 
@@ -7030,6 +7032,7 @@ class EzUISideBar {
7030
7032
  ...(ngDevMode ? [{ debugName: "haveMoved" }] : /* istanbul ignore next */ []));
7031
7033
  baseRoute = signal("/", /* @ts-ignore */
7032
7034
  ...(ngDevMode ? [{ debugName: "baseRoute" }] : /* istanbul ignore next */ []));
7035
+ openStateKey = "ezui-sidebar-state";
7033
7036
  constructor(layoutService, router) {
7034
7037
  this.layoutService = layoutService;
7035
7038
  this.router = router;
@@ -7042,17 +7045,79 @@ class EzUISideBar {
7042
7045
  this.initialize();
7043
7046
  }
7044
7047
  initialize() {
7045
- var sidebarItems = [...this.sidebarItems()];
7046
- var sidebarFooterItems = [...this.sidebarFooterItems()];
7048
+ let sidebarItems = [...this.sidebarItems()];
7049
+ let sidebarFooterItems = [...this.sidebarFooterItems()];
7047
7050
  this.hideEmptySections(sidebarItems);
7048
7051
  this.hideEmptySections(sidebarFooterItems);
7049
7052
  if (!this.haveMoved() && this.router.routerState.snapshot.url == this.baseRoute())
7050
7053
  this.gotoFirstPage(sidebarItems);
7051
7054
  this.setActiveRoute(sidebarItems);
7052
7055
  this.setActiveRoute(sidebarFooterItems);
7056
+ let stateStr = localStorage.getItem(this.openStateKey);
7057
+ if (stateStr) {
7058
+ let state = JSON.parse(stateStr);
7059
+ this.setOpenStates(sidebarItems, state.sidebar);
7060
+ this.setOpenStates(sidebarFooterItems, state.footer);
7061
+ }
7053
7062
  this.sidebarItems.set(sidebarItems);
7054
7063
  this.sidebarFooterItems.set(sidebarFooterItems);
7055
7064
  }
7065
+ saveState() {
7066
+ let state = {
7067
+ sidebar: this.getOpenStates(this.sidebarItems()),
7068
+ footer: this.getOpenStates(this.sidebarFooterItems())
7069
+ };
7070
+ console.log(state);
7071
+ localStorage.setItem(this.openStateKey, JSON.stringify(state));
7072
+ }
7073
+ getOpenStates(from) {
7074
+ let open = [];
7075
+ let index = 0;
7076
+ for (let item of from) {
7077
+ let subOpen = this.getOpenStatesRec(item);
7078
+ for (let value of subOpen) {
7079
+ if (value == "")
7080
+ open.push(index + "");
7081
+ else
7082
+ open.push(index + ";" + value);
7083
+ }
7084
+ index++;
7085
+ }
7086
+ return open;
7087
+ }
7088
+ getOpenStatesRec(from) {
7089
+ let open = [];
7090
+ if (from.items) {
7091
+ if (from.expanded)
7092
+ open.push("");
7093
+ let index = 0;
7094
+ for (let item of from.items) {
7095
+ let subOpen = this.getOpenStatesRec(item);
7096
+ for (let value of subOpen)
7097
+ open.push(index + ";" + value);
7098
+ index++;
7099
+ }
7100
+ }
7101
+ return open;
7102
+ }
7103
+ setOpenStates(from, state) {
7104
+ let index = 0;
7105
+ for (let item of from) {
7106
+ this.setOpenStatesRec(item, index + "", state);
7107
+ index++;
7108
+ }
7109
+ }
7110
+ setOpenStatesRec(from, fromIndex, state) {
7111
+ if (from.items) {
7112
+ if (state.includes(fromIndex))
7113
+ from.expanded = true;
7114
+ let index = 0;
7115
+ for (let item of from.items) {
7116
+ this.setOpenStatesRec(item, fromIndex + ";" + index, state);
7117
+ index++;
7118
+ }
7119
+ }
7120
+ }
7056
7121
  hideEmptySections(menu) {
7057
7122
  for (let item of menu) {
7058
7123
  if (item.items) {
@@ -7077,7 +7142,7 @@ class EzUISideBar {
7077
7142
  }
7078
7143
  }
7079
7144
  gotoFirstPage(menu) {
7080
- var first = menu.find((x) => x.visible == true);
7145
+ let first = menu.find((x) => x.visible == true);
7081
7146
  if (first) {
7082
7147
  if (first.items) {
7083
7148
  this.gotoFirstPage(first.items);
@@ -7093,12 +7158,12 @@ class EzUISideBar {
7093
7158
  @if(layoutService.isDesktop()){
7094
7159
  <aside style="height:100%" tuitheme="" [tuiNavigationAside]="layoutService.isMenuExpanded()">
7095
7160
  @for(item of sidebarItems(); track item){
7096
- <ezui-sidebar-item [item]="item"/>
7161
+ <ezui-sidebar-item [item]="item" (onItemClick)="saveState()"/>
7097
7162
  }
7098
7163
 
7099
7164
  <footer>
7100
7165
  @for(item of sidebarFooterItems(); track item){
7101
- <ezui-sidebar-item [item]="item"/>
7166
+ <ezui-sidebar-item [item]="item" (onItemClick)="saveState()"/>
7102
7167
  }
7103
7168
  </footer>
7104
7169
  </aside>
@@ -7106,12 +7171,12 @@ class EzUISideBar {
7106
7171
  @else {
7107
7172
  <aside style="height:100%" tuitheme="" [tuiNavigationAside]="true" [style.display]="layoutService.isMenuExpanded() ? '' : 'none'">
7108
7173
  @for(item of sidebarItems(); track item){
7109
- <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false)"/>
7174
+ <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false);saveState()"/>
7110
7175
  }
7111
7176
 
7112
7177
  <footer>
7113
7178
  @for(item of sidebarFooterItems(); track item){
7114
- <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false)"/>
7179
+ <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false);saveState()"/>
7115
7180
  }
7116
7181
  </footer>
7117
7182
  </aside>
@@ -7128,12 +7193,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
7128
7193
  @if(layoutService.isDesktop()){
7129
7194
  <aside style="height:100%" tuitheme="" [tuiNavigationAside]="layoutService.isMenuExpanded()">
7130
7195
  @for(item of sidebarItems(); track item){
7131
- <ezui-sidebar-item [item]="item"/>
7196
+ <ezui-sidebar-item [item]="item" (onItemClick)="saveState()"/>
7132
7197
  }
7133
7198
 
7134
7199
  <footer>
7135
7200
  @for(item of sidebarFooterItems(); track item){
7136
- <ezui-sidebar-item [item]="item"/>
7201
+ <ezui-sidebar-item [item]="item" (onItemClick)="saveState()"/>
7137
7202
  }
7138
7203
  </footer>
7139
7204
  </aside>
@@ -7141,12 +7206,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
7141
7206
  @else {
7142
7207
  <aside style="height:100%" tuitheme="" [tuiNavigationAside]="true" [style.display]="layoutService.isMenuExpanded() ? '' : 'none'">
7143
7208
  @for(item of sidebarItems(); track item){
7144
- <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false)"/>
7209
+ <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false);saveState()"/>
7145
7210
  }
7146
7211
 
7147
7212
  <footer>
7148
7213
  @for(item of sidebarFooterItems(); track item){
7149
- <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false)"/>
7214
+ <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false);saveState()"/>
7150
7215
  }
7151
7216
  </footer>
7152
7217
  </aside>