@kris701/ez-ui 1.3.19 → 1.4.1

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,83 @@ 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
+ if (value == "")
7098
+ open.push(index + "");
7099
+ else
7100
+ open.push(index + ";" + value);
7101
+ }
7102
+ index++;
7103
+ }
7104
+ }
7105
+ return open;
7106
+ }
7107
+ setOpenStates(from, state) {
7108
+ let index = 0;
7109
+ for (let item of from) {
7110
+ this.setOpenStatesRec(item, index + "", state);
7111
+ index++;
7112
+ }
7113
+ }
7114
+ setOpenStatesRec(from, fromIndex, state) {
7115
+ if (from.items) {
7116
+ if (state.includes(fromIndex))
7117
+ from.expanded = true;
7118
+ let index = 0;
7119
+ for (let item of from.items) {
7120
+ this.setOpenStatesRec(item, fromIndex + ";" + index, state);
7121
+ index++;
7122
+ }
7123
+ }
7124
+ }
7056
7125
  hideEmptySections(menu) {
7057
7126
  for (let item of menu) {
7058
7127
  if (item.items) {
@@ -7077,7 +7146,7 @@ class EzUISideBar {
7077
7146
  }
7078
7147
  }
7079
7148
  gotoFirstPage(menu) {
7080
- var first = menu.find((x) => x.visible == true);
7149
+ let first = menu.find((x) => x.visible == true);
7081
7150
  if (first) {
7082
7151
  if (first.items) {
7083
7152
  this.gotoFirstPage(first.items);
@@ -7093,12 +7162,12 @@ class EzUISideBar {
7093
7162
  @if(layoutService.isDesktop()){
7094
7163
  <aside style="height:100%" tuitheme="" [tuiNavigationAside]="layoutService.isMenuExpanded()">
7095
7164
  @for(item of sidebarItems(); track item){
7096
- <ezui-sidebar-item [item]="item"/>
7165
+ <ezui-sidebar-item [item]="item" (onItemClick)="saveState()"/>
7097
7166
  }
7098
7167
 
7099
7168
  <footer>
7100
7169
  @for(item of sidebarFooterItems(); track item){
7101
- <ezui-sidebar-item [item]="item"/>
7170
+ <ezui-sidebar-item [item]="item" (onItemClick)="saveState()"/>
7102
7171
  }
7103
7172
  </footer>
7104
7173
  </aside>
@@ -7106,34 +7175,30 @@ class EzUISideBar {
7106
7175
  @else {
7107
7176
  <aside style="height:100%" tuitheme="" [tuiNavigationAside]="true" [style.display]="layoutService.isMenuExpanded() ? '' : 'none'">
7108
7177
  @for(item of sidebarItems(); track item){
7109
- <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false)"/>
7178
+ <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false);saveState()"/>
7110
7179
  }
7111
7180
 
7112
7181
  <footer>
7113
7182
  @for(item of sidebarFooterItems(); track item){
7114
- <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false)"/>
7183
+ <ezui-sidebar-item [item]="item" (onItemClick)="layoutService.isMenuExpanded.set(false);saveState()"/>
7115
7184
  }
7116
7185
  </footer>
7117
7186
  </aside>
7118
7187
  }
7119
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: i4$2.TuiAsideComponent, selector: "aside[tuiNavigationAside]", inputs: ["tuiNavigationAside"] }, { kind: "component", type: EzUISideBarItem, selector: "ezui-sidebar-item", inputs: ["item"], outputs: ["onItemClick"] }] });
7188
+ `, isInline: true, styles: ["::ng-deep tui-aside-group tui-expand tui-aside-group tui-expand [tuiAsideItem]{padding-inline-start:4rem!important}::ng-deep tui-aside-group tui-expand tui-aside-group tui-expand tui-aside-group tui-expand [tuiAsideItem]{padding-inline-start:6rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: i4$2.TuiAsideComponent, selector: "aside[tuiNavigationAside]", inputs: ["tuiNavigationAside"] }, { kind: "component", type: EzUISideBarItem, selector: "ezui-sidebar-item", inputs: ["item"], outputs: ["onItemClick"] }] });
7120
7189
  }
7121
7190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUISideBar, decorators: [{
7122
7191
  type: Component,
7123
- args: [{
7124
- selector: 'ezui-sidebar',
7125
- standalone: true,
7126
- imports: [CommonModule, TuiNavigation, EzUISideBarItem],
7127
- template: `
7192
+ args: [{ selector: 'ezui-sidebar', standalone: true, imports: [CommonModule, TuiNavigation, EzUISideBarItem], template: `
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,18 +7206,17 @@ 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>
7153
7218
  }
7154
- `
7155
- }]
7219
+ `, styles: ["::ng-deep tui-aside-group tui-expand tui-aside-group tui-expand [tuiAsideItem]{padding-inline-start:4rem!important}::ng-deep tui-aside-group tui-expand tui-aside-group tui-expand tui-aside-group tui-expand [tuiAsideItem]{padding-inline-start:6rem!important}\n"] }]
7156
7220
  }], ctorParameters: () => [{ type: EzUILayoutService }, { type: i2$2.Router }], propDecorators: { sidebarItems: [{
7157
7221
  type: Input
7158
7222
  }], sidebarFooterItems: [{