@eui/mobile-core 18.0.0-next.7 → 18.0.0-next.8

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.
@@ -110,6 +110,9 @@
110
110
  <tr>
111
111
  <td class="col-md-4">
112
112
  <ul class="index-list">
113
+ <li>
114
+ <a href="#IconColor" title="packages/eui-mobile/packages/core/src/lib/components/layout/euim-sidebar/euim-sidebar-content/euim-sidebar-content.component.ts" ><b>IconColor</b>&nbsp;&nbsp;&nbsp;(packages/.../euim-sidebar-content.component.ts)</a>
115
+ </li>
113
116
  <li>
114
117
  <a href="#SkeletonItemInputs" title="packages/eui-mobile/packages/core/src/lib/components/euim-skeleton-list/euim-skeleton-list.component.ts" ><b>SkeletonItemInputs</b>&nbsp;&nbsp;&nbsp;(packages/.../euim-skeleton-list.component.ts)</a>
115
118
  </li>
@@ -123,7 +126,25 @@
123
126
  </table>
124
127
  </section>
125
128
 
126
- <h3>packages/eui-mobile/packages/core/src/lib/components/euim-skeleton-list/euim-skeleton-list.component.ts</h3>
129
+ <h3>packages/eui-mobile/packages/core/src/lib/components/layout/euim-sidebar/euim-sidebar-content/euim-sidebar-content.component.ts</h3>
130
+ <section data-compodoc="block-typealias">
131
+ <table class="table table-sm table-bordered">
132
+ <tbody>
133
+ <tr>
134
+ <td class="col-md-4">
135
+ <a name="IconColor"></a>
136
+ <span class="name "><b>IconColor</b><a href="#IconColor"><span class="icon ion-ios-link"></span></a></span>
137
+ </td>
138
+ </tr>
139
+ <tr>
140
+ <td class="col-md-4">
141
+ <code> <code>&quot;primary&quot; | &quot;default&quot; | &quot;info&quot; | &quot;success&quot; | &quot;warning&quot; | &quot;danger&quot; | &quot;dark&quot; | &quot;white&quot; | &quot;accent&quot; | &quot;secondary&quot;</code>
142
+ </code>
143
+ </td>
144
+ </tr>
145
+ </tbody>
146
+ </table>
147
+ </section> <h3>packages/eui-mobile/packages/core/src/lib/components/euim-skeleton-list/euim-skeleton-list.component.ts</h3>
127
148
  <section data-compodoc="block-typealias">
128
149
  <table class="table table-sm table-bordered">
129
150
  <tbody>
@@ -1,18 +1,45 @@
1
- import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ViewChild, Output, EventEmitter, Component, HostBinding, Input, booleanAttribute } from '@angular/core';
2
+ import { IonSearchbar } from '@ionic/angular';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "@eui/core";
4
5
  import * as i2 from "@ionic/angular";
5
6
  export class EuimSidebarContentComponent {
6
- constructor(i18nService, asService, navCtrl) {
7
+ constructor(i18nService, asService, menuCtrl, navCtrl) {
7
8
  this.i18nService = i18nService;
8
9
  this.asService = asService;
10
+ this.menuCtrl = menuCtrl;
9
11
  this.navCtrl = navCtrl;
10
12
  this.className = 'euim-sidebar-content';
11
13
  this.sidebarItems = [];
14
+ this.hasSearchbar = false;
15
+ this.sidebarItemsFilter = new EventEmitter();
16
+ this.filteredItems = [];
17
+ this.query = '';
12
18
  i18nService.init().subscribe();
13
19
  }
14
20
  ngOnInit() {
15
21
  this.sortSidebarItems();
22
+ if (this.hasSearchbar) {
23
+ this.filteredItems = [...this.sidebarItems];
24
+ this.sidebarItemsFilter.emit(this.filteredItems);
25
+ }
26
+ }
27
+ handleInput(event) {
28
+ this.query = event.detail.value.toLowerCase();
29
+ this.filteredItems = this.filterMenuItems(this.sidebarItems, this.query);
30
+ this.sidebarItemsFilter.emit(this.filteredItems);
31
+ if (this.query === '') {
32
+ this.sidebarItemsFilter.emit(this.sidebarItems);
33
+ }
34
+ }
35
+ closeMenu() {
36
+ if (!this.hasSearchbar)
37
+ return;
38
+ this.menuCtrl.close().then(() => {
39
+ this.sidebarItemsFilter.emit(this.sidebarItems);
40
+ this.query = '';
41
+ this.searchbar.value = '';
42
+ });
16
43
  }
17
44
  sortSidebarItems() {
18
45
  this.sidebarItems.sort((a, b) => {
@@ -22,15 +49,28 @@ export class EuimSidebarContentComponent {
22
49
  return a.group - b.group;
23
50
  });
24
51
  }
25
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EuimSidebarContentComponent, deps: [{ token: i1.I18nService }, { token: i1.EuiAppShellService }, { token: i2.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
26
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: EuimSidebarContentComponent, selector: "euim-sidebar-content", inputs: { sidebarItems: "sidebarItems" }, host: { properties: { "className": "this.className" } }, ngImport: i0, template: "<ion-list class=\"euim-sidebar-content__list\">\n <ion-menu-toggle auto-hide=\"true\">\n <ng-content></ng-content>\n </ion-menu-toggle>\n</ion-list>\n", dependencies: [{ kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonMenuToggle, selector: "ion-menu-toggle", inputs: ["autoHide", "menu"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
+ filterMenuItems(items, searchPhrase) {
53
+ return items.filter(item => {
54
+ return !item.isSection && item.label.toLowerCase().includes(searchPhrase.toLowerCase());
55
+ });
56
+ }
57
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EuimSidebarContentComponent, deps: [{ token: i1.I18nService }, { token: i1.EuiAppShellService }, { token: i2.MenuController }, { token: i2.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
58
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: EuimSidebarContentComponent, selector: "euim-sidebar-content", inputs: { sidebarItems: "sidebarItems", hasSearchbar: ["hasSearchbar", "hasSearchbar", booleanAttribute] }, outputs: { sidebarItemsFilter: "sidebarItemsFilter" }, host: { properties: { "className": "this.className" } }, viewQueries: [{ propertyName: "searchbar", first: true, predicate: IonSearchbar, descendants: true }], ngImport: i0, template: "<ion-list class=\"euim-sidebar-content__list\">\n @if (hasSearchbar) {\n <ion-searchbar (ionInput)=\"handleInput($event)\"></ion-searchbar>\n }\n <ion-menu-toggle auto-hide=\"true\" (click)=\"closeMenu()\">\n <ng-content></ng-content>\n </ion-menu-toggle>\n</ion-list>\n\n", dependencies: [{ kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonMenuToggle, selector: "ion-menu-toggle", inputs: ["autoHide", "menu"] }, { kind: "component", type: i2.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
59
  }
28
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EuimSidebarContentComponent, decorators: [{
29
61
  type: Component,
30
- args: [{ selector: 'euim-sidebar-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-list class=\"euim-sidebar-content__list\">\n <ion-menu-toggle auto-hide=\"true\">\n <ng-content></ng-content>\n </ion-menu-toggle>\n</ion-list>\n" }]
31
- }], ctorParameters: () => [{ type: i1.I18nService }, { type: i1.EuiAppShellService }, { type: i2.NavController }], propDecorators: { className: [{
62
+ args: [{ selector: 'euim-sidebar-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-list class=\"euim-sidebar-content__list\">\n @if (hasSearchbar) {\n <ion-searchbar (ionInput)=\"handleInput($event)\"></ion-searchbar>\n }\n <ion-menu-toggle auto-hide=\"true\" (click)=\"closeMenu()\">\n <ng-content></ng-content>\n </ion-menu-toggle>\n</ion-list>\n\n" }]
63
+ }], ctorParameters: () => [{ type: i1.I18nService }, { type: i1.EuiAppShellService }, { type: i2.MenuController }, { type: i2.NavController }], propDecorators: { className: [{
32
64
  type: HostBinding
33
65
  }], sidebarItems: [{
34
66
  type: Input
67
+ }], hasSearchbar: [{
68
+ type: Input,
69
+ args: [{ transform: booleanAttribute }]
70
+ }], sidebarItemsFilter: [{
71
+ type: Output
72
+ }], searchbar: [{
73
+ type: ViewChild,
74
+ args: [IonSearchbar, { static: false }]
35
75
  }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpbS1zaWRlYmFyLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC9ldWltLXNpZGViYXIvZXVpbS1zaWRlYmFyLWNvbnRlbnQvZXVpbS1zaWRlYmFyLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC9ldWltLXNpZGViYXIvZXVpbS1zaWRlYmFyLWNvbnRlbnQvZXVpbS1zaWRlYmFyLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7O0FBVS9GLE1BQU0sT0FBTywyQkFBMkI7SUFJcEMsWUFBb0IsV0FBd0IsRUFDakMsU0FBNkIsRUFDNUIsT0FBc0I7UUFGZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM1QixZQUFPLEdBQVAsT0FBTyxDQUFlO1FBTG5CLGNBQVMsR0FBRyxzQkFBc0IsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUtuQixXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRVMsZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7aUlBckJRLDJCQUEyQjtxSEFBM0IsMkJBQTJCLCtKQ1Z4QyxxS0FLQTs7MkZES2EsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNJLHNCQUFzQixtQkFFZix1QkFBdUIsQ0FBQyxNQUFNOzZJQUdoQyxTQUFTO3NCQUF2QixXQUFXO2dCQUNILFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXVpbVNpZGViYXJDb21wb25lbnQgfSBmcm9tICcuLi9ldWltLXNpZGViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlLCBFdWlBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWltLXNpZGViYXItY29udGVudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aW0tc2lkZWJhci1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRXVpbVNpZGViYXJDb250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoKSBjbGFzc05hbWUgPSAnZXVpbS1zaWRlYmFyLWNvbnRlbnQnO1xuICAgIEBJbnB1dCgpIHNpZGViYXJJdGVtcyA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpMThuU2VydmljZTogSTE4blNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBhc1NlcnZpY2U6IEV1aUFwcFNoZWxsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuYXZDdHJsOiBOYXZDb250cm9sbGVyKSB7XG4gICAgICAgICAgICBpMThuU2VydmljZS5pbml0KCkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc29ydFNpZGViYXJJdGVtcygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzb3J0U2lkZWJhckl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNpZGViYXJJdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBpZiAoYS5ncm91cCA9PT0gYi5ncm91cCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYS5ncm91cCAtIGIuZ3JvdXA7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgIH1cblxuIiwiPGlvbi1saXN0IGNsYXNzPVwiZXVpbS1zaWRlYmFyLWNvbnRlbnRfX2xpc3RcIj5cbiAgICA8aW9uLW1lbnUtdG9nZ2xlIGF1dG8taGlkZT1cInRydWVcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvaW9uLW1lbnUtdG9nZ2xlPlxuPC9pb24tbGlzdD5cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpbS1zaWRlYmFyLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC9ldWltLXNpZGViYXIvZXVpbS1zaWRlYmFyLWNvbnRlbnQvZXVpbS1zaWRlYmFyLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xheW91dC9ldWltLXNpZGViYXIvZXVpbS1zaWRlYmFyLWNvbnRlbnQvZXVpbS1zaWRlYmFyLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxKLE9BQU8sRUFBaUMsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFTN0UsTUFBTSxPQUFPLDJCQUEyQjtJQVdwQyxZQUFvQixXQUF3QixFQUNqQyxTQUE2QixFQUM1QixRQUF3QixFQUN4QixPQUFzQjtRQUhkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFibkIsY0FBUyxHQUFHLHNCQUFzQixDQUFDO1FBQ3pDLGlCQUFZLEdBQWUsRUFBRSxDQUFDO1FBRXZDLGlCQUFZLEdBQWlCLEtBQUssQ0FBQztRQUN6Qix1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBR3BELGtCQUFhLEdBQWUsRUFBRSxDQUFDO1FBQy9CLFVBQUssR0FBRSxFQUFFLENBQUM7UUFNWixXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFF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ZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIGJvb2xlYW5BdHRyaWJ1dGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlLCBFdWlBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciwgTWVudUNvbnRyb2xsZXIsIElvblNlYXJjaGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmV4cG9ydCB0eXBlIEljb25Db2xvciA9ICdwcmltYXJ5JyB8ICdkZWZhdWx0JyB8ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInIHwgJ2RhcmsnIHwgJ3doaXRlJyB8ICdhY2NlbnQnIHwgJ3NlY29uZGFyeSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aW0tc2lkZWJhci1jb250ZW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpbS1zaWRlYmFyLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFdWltU2lkZWJhckNvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygpIGNsYXNzTmFtZSA9ICdldWltLXNpZGViYXItY29udGVudCc7XG4gICAgQElucHV0KCkgc2lkZWJhckl0ZW1zOiBNZW51SXRlbVtdID0gW107XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgaGFzU2VhcmNoYmFyOiBCb29sZWFuSW5wdXQgPSBmYWxzZTtcbiAgICBAT3V0cHV0KCkgc2lkZWJhckl0ZW1zRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxNZW51SXRlbVtdPigpO1xuICAgIEBWaWV3Q2hpbGQoSW9uU2VhcmNoYmFyLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VhcmNoYmFyOiBJb25TZWFyY2hiYXI7XG5cbiAgICBwcm90ZWN0ZWQgZmlsdGVyZWRJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICAgIHByb3RlY3RlZCBxdWVyeSA9Jyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSxcbiAgICAgICAgcHVibGljIGFzU2VydmljZTogRXVpQXBwU2hlbGxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG1lbnVDdHJsOiBNZW51Q29udHJvbGxlcixcbiAgICAgICAgcHJpdmF0ZSBuYXZDdHJsOiBOYXZDb250cm9sbGVyKSB7XG4gICAgICAgICAgICBpMThuU2VydmljZS5pbml0KCkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc29ydFNpZGViYXJJdGVtcygpO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc1NlYXJjaGJhcikge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gWy4uLnRoaXMuc2lkZWJhckl0ZW1zXTtcbiAgICAgICAgICAgIHRoaXMuc2lkZWJhckl0ZW1zRmlsdGVyLmVtaXQodGhpcy5maWx0ZXJlZEl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZUlucHV0KGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gZXZlbnQuZGV0YWlsLnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuZmlsdGVyTWVudUl0ZW1zKHRoaXMuc2lkZWJhckl0ZW1zLCB0aGlzLnF1ZXJ5KTtcbiAgICAgICAgdGhpcy5zaWRlYmFySXRlbXNGaWx0ZXIuZW1pdCh0aGlzLmZpbHRlcmVkSXRlbXMpO1xuXG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5ID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5zaWRlYmFySXRlbXNGaWx0ZXIuZW1pdCh0aGlzLnNpZGViYXJJdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbG9zZU1lbnUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWFyY2hiYXIpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVDdHJsLmNsb3NlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNpZGViYXJJdGVtc0ZpbHRlci5lbWl0KHRoaXMuc2lkZWJhckl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoYmFyLnZhbHVlID0gJyc7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzb3J0U2lkZWJhckl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNpZGViYXJJdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBpZiAoYS5ncm91cCA9PT0gYi5ncm91cCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYS5ncm91cCAtIGIuZ3JvdXA7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZmlsdGVyTWVudUl0ZW1zKGl0ZW1zLCBzZWFyY2hQaHJhc2U6IHN0cmluZyk6IE1lbnVJdGVtW10ge1xuICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFpdGVtLmlzU2VjdGlvbiAmJiBpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoUGhyYXNlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmludGVyZmFjZSBNZW51SXRlbSB7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBpY29uQ29sb3I/OiBJY29uQ29sb3I7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgaXNTZWN0aW9uPzogYm9vbGVhbjtcbiAgICBzZWN0aW9uPzogc3RyaW5nO1xuICAgIGdyb3VwPzogbnVtYmVyO1xuICAgIGdyb3VwSGVhZGVyPzogc3RyaW5nO1xufVxuXG4iLCI8aW9uLWxpc3QgY2xhc3M9XCJldWltLXNpZGViYXItY29udGVudF9fbGlzdFwiPlxuICAgIEBpZiAoaGFzU2VhcmNoYmFyKSB7XG4gICAgPGlvbi1zZWFyY2hiYXIgKGlvbklucHV0KT1cImhhbmRsZUlucHV0KCRldmVudClcIj48L2lvbi1zZWFyY2hiYXI+XG4gICAgfVxuICAgIDxpb24tbWVudS10b2dnbGUgYXV0by1oaWRlPVwidHJ1ZVwiIChjbGljayk9XCJjbG9zZU1lbnUoKVwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9pb24tbWVudS10b2dnbGU+XG48L2lvbi1saXN0PlxuXG4iXX0=
@@ -1,12 +1,12 @@
1
1
  import { getI18nServiceConfig } from '@eui/base';
2
2
  export * from '@eui/base';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, booleanAttribute, Directive, Input, numberAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, NgModule, Inject, EventEmitter, Output, ContentChildren, ContentChild, ViewChild, HostListener } from '@angular/core';
4
+ import { Injectable, booleanAttribute, Directive, Input, numberAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, NgModule, Inject, EventEmitter, Output, ViewChild, ContentChildren, ContentChild, HostListener } from '@angular/core';
5
5
  import { BehaviorSubject, Subject, throwError } from 'rxjs';
6
6
  import * as i2$1 from '@angular/common';
7
7
  import { CommonModule } from '@angular/common';
8
8
  import * as i3 from '@ionic/angular';
9
- import { IonicModule } from '@ionic/angular';
9
+ import { IonicModule, IonSearchbar } from '@ionic/angular';
10
10
  import * as i1 from '@eui/core';
11
11
  import { EuiEuLanguages, GLOBAL_CONFIG_TOKEN } from '@eui/core';
12
12
  import { takeUntil, startWith, switchMap, map, catchError } from 'rxjs/operators';
@@ -1128,16 +1128,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
1128
1128
  }] } });
1129
1129
 
1130
1130
  class EuimSidebarContentComponent {
1131
- constructor(i18nService, asService, navCtrl) {
1131
+ constructor(i18nService, asService, menuCtrl, navCtrl) {
1132
1132
  this.i18nService = i18nService;
1133
1133
  this.asService = asService;
1134
+ this.menuCtrl = menuCtrl;
1134
1135
  this.navCtrl = navCtrl;
1135
1136
  this.className = 'euim-sidebar-content';
1136
1137
  this.sidebarItems = [];
1138
+ this.hasSearchbar = false;
1139
+ this.sidebarItemsFilter = new EventEmitter();
1140
+ this.filteredItems = [];
1141
+ this.query = '';
1137
1142
  i18nService.init().subscribe();
1138
1143
  }
1139
1144
  ngOnInit() {
1140
1145
  this.sortSidebarItems();
1146
+ if (this.hasSearchbar) {
1147
+ this.filteredItems = [...this.sidebarItems];
1148
+ this.sidebarItemsFilter.emit(this.filteredItems);
1149
+ }
1150
+ }
1151
+ handleInput(event) {
1152
+ this.query = event.detail.value.toLowerCase();
1153
+ this.filteredItems = this.filterMenuItems(this.sidebarItems, this.query);
1154
+ this.sidebarItemsFilter.emit(this.filteredItems);
1155
+ if (this.query === '') {
1156
+ this.sidebarItemsFilter.emit(this.sidebarItems);
1157
+ }
1158
+ }
1159
+ closeMenu() {
1160
+ if (!this.hasSearchbar)
1161
+ return;
1162
+ this.menuCtrl.close().then(() => {
1163
+ this.sidebarItemsFilter.emit(this.sidebarItems);
1164
+ this.query = '';
1165
+ this.searchbar.value = '';
1166
+ });
1141
1167
  }
1142
1168
  sortSidebarItems() {
1143
1169
  this.sidebarItems.sort((a, b) => {
@@ -1147,16 +1173,29 @@ class EuimSidebarContentComponent {
1147
1173
  return a.group - b.group;
1148
1174
  });
1149
1175
  }
1150
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EuimSidebarContentComponent, deps: [{ token: i1.I18nService }, { token: i1.EuiAppShellService }, { token: i3.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
1151
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: EuimSidebarContentComponent, selector: "euim-sidebar-content", inputs: { sidebarItems: "sidebarItems" }, host: { properties: { "className": "this.className" } }, ngImport: i0, template: "<ion-list class=\"euim-sidebar-content__list\">\n <ion-menu-toggle auto-hide=\"true\">\n <ng-content></ng-content>\n </ion-menu-toggle>\n</ion-list>\n", dependencies: [{ kind: "component", type: i3.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i3.IonMenuToggle, selector: "ion-menu-toggle", inputs: ["autoHide", "menu"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1176
+ filterMenuItems(items, searchPhrase) {
1177
+ return items.filter(item => {
1178
+ return !item.isSection && item.label.toLowerCase().includes(searchPhrase.toLowerCase());
1179
+ });
1180
+ }
1181
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EuimSidebarContentComponent, deps: [{ token: i1.I18nService }, { token: i1.EuiAppShellService }, { token: i3.MenuController }, { token: i3.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
1182
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: EuimSidebarContentComponent, selector: "euim-sidebar-content", inputs: { sidebarItems: "sidebarItems", hasSearchbar: ["hasSearchbar", "hasSearchbar", booleanAttribute] }, outputs: { sidebarItemsFilter: "sidebarItemsFilter" }, host: { properties: { "className": "this.className" } }, viewQueries: [{ propertyName: "searchbar", first: true, predicate: IonSearchbar, descendants: true }], ngImport: i0, template: "<ion-list class=\"euim-sidebar-content__list\">\n @if (hasSearchbar) {\n <ion-searchbar (ionInput)=\"handleInput($event)\"></ion-searchbar>\n }\n <ion-menu-toggle auto-hide=\"true\" (click)=\"closeMenu()\">\n <ng-content></ng-content>\n </ion-menu-toggle>\n</ion-list>\n\n", dependencies: [{ kind: "component", type: i3.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i3.IonMenuToggle, selector: "ion-menu-toggle", inputs: ["autoHide", "menu"] }, { kind: "component", type: i3.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "directive", type: i3.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1152
1183
  }
1153
1184
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EuimSidebarContentComponent, decorators: [{
1154
1185
  type: Component,
1155
- args: [{ selector: 'euim-sidebar-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-list class=\"euim-sidebar-content__list\">\n <ion-menu-toggle auto-hide=\"true\">\n <ng-content></ng-content>\n </ion-menu-toggle>\n</ion-list>\n" }]
1156
- }], ctorParameters: () => [{ type: i1.I18nService }, { type: i1.EuiAppShellService }, { type: i3.NavController }], propDecorators: { className: [{
1186
+ args: [{ selector: 'euim-sidebar-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-list class=\"euim-sidebar-content__list\">\n @if (hasSearchbar) {\n <ion-searchbar (ionInput)=\"handleInput($event)\"></ion-searchbar>\n }\n <ion-menu-toggle auto-hide=\"true\" (click)=\"closeMenu()\">\n <ng-content></ng-content>\n </ion-menu-toggle>\n</ion-list>\n\n" }]
1187
+ }], ctorParameters: () => [{ type: i1.I18nService }, { type: i1.EuiAppShellService }, { type: i3.MenuController }, { type: i3.NavController }], propDecorators: { className: [{
1157
1188
  type: HostBinding
1158
1189
  }], sidebarItems: [{
1159
1190
  type: Input
1191
+ }], hasSearchbar: [{
1192
+ type: Input,
1193
+ args: [{ transform: booleanAttribute }]
1194
+ }], sidebarItemsFilter: [{
1195
+ type: Output
1196
+ }], searchbar: [{
1197
+ type: ViewChild,
1198
+ args: [IonSearchbar, { static: false }]
1160
1199
  }] } });
1161
1200
 
1162
1201
  class EuimSidebarModule {