@ui5/webcomponents-fiori 2.22.0-rc.4 → 2.22.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.
- package/CHANGELOG.md +16 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/NavigationMenuItemTemplate.d.ts +2 -2
- package/dist/NavigationMenuItemTemplate.js.map +1 -1
- package/dist/Timeline.d.ts +3 -35
- package/dist/Timeline.js +4 -62
- package/dist/Timeline.js.map +1 -1
- package/dist/TimelineItem.d.ts +0 -2
- package/dist/TimelineItem.js +0 -2
- package/dist/TimelineItem.js.map +1 -1
- package/dist/TimelineTemplate.js +1 -1
- package/dist/TimelineTemplate.js.map +1 -1
- package/dist/UserMenuItem.d.ts +24 -0
- package/dist/UserMenuItem.js +52 -3
- package/dist/UserMenuItem.js.map +1 -1
- package/dist/UserMenuItemTemplate.js +10 -1
- package/dist/UserMenuItemTemplate.js.map +1 -1
- package/dist/ViewSettingsDialog.d.ts +12 -11
- package/dist/ViewSettingsDialog.js +26 -23
- package/dist/ViewSettingsDialog.js.map +1 -1
- package/dist/ViewSettingsDialogCustomTab.d.ts +5 -5
- package/dist/ViewSettingsDialogCustomTab.js +7 -7
- package/dist/ViewSettingsDialogCustomTab.js.map +1 -1
- package/dist/ViewSettingsDialogTemplate.js +2 -2
- package/dist/ViewSettingsDialogTemplate.js.map +1 -1
- package/dist/bundle.esm.js +0 -2
- package/dist/bundle.esm.js.map +1 -1
- package/dist/css/themes/Timeline.css +1 -1
- package/dist/css/themes/UserMenuItem.css +1 -1
- package/dist/custom-elements-internal.json +205 -694
- package/dist/custom-elements.json +109 -440
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +1 -11
- package/dist/generated/i18n/i18n-defaults.js +2 -12
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/Timeline.css.d.ts +1 -1
- package/dist/generated/themes/Timeline.css.js +1 -1
- package/dist/generated/themes/Timeline.css.js.map +1 -1
- package/dist/generated/themes/UserMenuItem.css.d.ts +1 -1
- package/dist/generated/themes/UserMenuItem.css.js +1 -1
- package/dist/generated/themes/UserMenuItem.css.js.map +1 -1
- package/dist/vscode.html-custom-data.json +17 -65
- package/dist/web-types.json +41 -195
- package/package.json +7 -7
- package/src/NavigationMenuItemTemplate.tsx +3 -3
- package/src/TimelineTemplate.tsx +0 -7
- package/src/UserMenuItemTemplate.tsx +19 -1
- package/src/ViewSettingsDialogTemplate.tsx +3 -3
- package/src/i18n/messagebundle.properties +1 -31
- package/src/i18n/messagebundle_en.properties +1 -1
- package/src/i18n/messagebundle_en_GB.properties +1 -1
- package/src/themes/Timeline.css +7 -21
- package/src/themes/UserMenuItem.css +37 -3
- package/dist/TimelineFilterOption.d.ts +0 -37
- package/dist/TimelineFilterOption.js +0 -59
- package/dist/TimelineFilterOption.js.map +0 -1
- package/dist/TimelineHeaderBar.d.ts +0 -114
- package/dist/TimelineHeaderBar.js +0 -264
- package/dist/TimelineHeaderBar.js.map +0 -1
- package/dist/TimelineHeaderBarTemplate.d.ts +0 -2
- package/dist/TimelineHeaderBarTemplate.js +0 -18
- package/dist/TimelineHeaderBarTemplate.js.map +0 -1
- package/dist/css/themes/TimelineHeaderBar.css +0 -1
- package/dist/generated/themes/TimelineHeaderBar.css.d.ts +0 -2
- package/dist/generated/themes/TimelineHeaderBar.css.js +0 -8
- package/dist/generated/themes/TimelineHeaderBar.css.js.map +0 -1
- package/dist/types/TimelineSortOrder.d.ts +0 -18
- package/dist/types/TimelineSortOrder.js +0 -20
- package/dist/types/TimelineSortOrder.js.map +0 -1
- package/src/TimelineHeaderBarTemplate.tsx +0 -104
- package/src/themes/TimelineHeaderBar.css +0 -17
|
@@ -89,7 +89,7 @@ declare class ViewSettingsDialog extends UI5Element {
|
|
|
89
89
|
"before-open": void;
|
|
90
90
|
"open": void;
|
|
91
91
|
"close": void;
|
|
92
|
-
"reset
|
|
92
|
+
"reset": void;
|
|
93
93
|
};
|
|
94
94
|
/**
|
|
95
95
|
* Defines the initial sort order.
|
|
@@ -112,17 +112,22 @@ declare class ViewSettingsDialog extends UI5Element {
|
|
|
112
112
|
*/
|
|
113
113
|
open: boolean;
|
|
114
114
|
/**
|
|
115
|
-
*
|
|
115
|
+
* Controls whether the Reset button is always enabled.
|
|
116
116
|
*
|
|
117
|
-
*
|
|
118
|
-
* differ from their initial state
|
|
119
|
-
*
|
|
120
|
-
*
|
|
117
|
+
* By default, the Reset button is enabled only when the built-in settings (Sort, Filter, Group)
|
|
118
|
+
* differ from their initial state — the component can detect these changes automatically.
|
|
119
|
+
* However, when the dialog contains custom tabs, the component has no way to detect
|
|
120
|
+
* whether the custom tab content has been modified by the user.
|
|
121
|
+
*
|
|
122
|
+
* Set this property to `true` when the user has made changes inside a custom tab, so that
|
|
123
|
+
* the Reset button becomes enabled and the user can trigger a reset.
|
|
124
|
+
* Set it back to `false` once the custom tab content is back to its initial state
|
|
125
|
+
* (e.g. after the user confirms or after a reset is applied).
|
|
121
126
|
* @default false
|
|
122
127
|
* @public
|
|
123
128
|
* @since 2.22.0
|
|
124
129
|
*/
|
|
125
|
-
|
|
130
|
+
resetEnabled: boolean;
|
|
126
131
|
/**
|
|
127
132
|
* Keeps recently focused list in order to focus it on next dialog open.
|
|
128
133
|
* @private
|
|
@@ -206,10 +211,6 @@ declare class ViewSettingsDialog extends UI5Element {
|
|
|
206
211
|
get shouldBuildFilter(): boolean;
|
|
207
212
|
get shouldBuildGroup(): boolean;
|
|
208
213
|
get shouldBuildCustomTabs(): boolean;
|
|
209
|
-
/**
|
|
210
|
-
* Returns only custom tabs that have an icon defined and can be rendered.
|
|
211
|
-
*/
|
|
212
|
-
get _renderableCustomTabs(): ViewSettingsDialogCustomTab[];
|
|
213
214
|
get hasPagination(): boolean;
|
|
214
215
|
get _defaultMode(): ViewSettingsDialogInternalMode;
|
|
215
216
|
get _selectedCustomTab(): ViewSettingsDialogCustomTab | undefined;
|
|
@@ -80,17 +80,22 @@ let ViewSettingsDialog = ViewSettingsDialog_1 = class ViewSettingsDialog extends
|
|
|
80
80
|
*/
|
|
81
81
|
this.open = false;
|
|
82
82
|
/**
|
|
83
|
-
*
|
|
83
|
+
* Controls whether the Reset button is always enabled.
|
|
84
84
|
*
|
|
85
|
-
*
|
|
86
|
-
* differ from their initial state
|
|
87
|
-
*
|
|
88
|
-
*
|
|
85
|
+
* By default, the Reset button is enabled only when the built-in settings (Sort, Filter, Group)
|
|
86
|
+
* differ from their initial state — the component can detect these changes automatically.
|
|
87
|
+
* However, when the dialog contains custom tabs, the component has no way to detect
|
|
88
|
+
* whether the custom tab content has been modified by the user.
|
|
89
|
+
*
|
|
90
|
+
* Set this property to `true` when the user has made changes inside a custom tab, so that
|
|
91
|
+
* the Reset button becomes enabled and the user can trigger a reset.
|
|
92
|
+
* Set it back to `false` once the custom tab content is back to its initial state
|
|
93
|
+
* (e.g. after the user confirms or after a reset is applied).
|
|
89
94
|
* @default false
|
|
90
95
|
* @public
|
|
91
96
|
* @since 2.22.0
|
|
92
97
|
*/
|
|
93
|
-
this.
|
|
98
|
+
this.resetEnabled = false;
|
|
94
99
|
/**
|
|
95
100
|
* Stores current settings of the dialog.
|
|
96
101
|
* @private
|
|
@@ -183,20 +188,14 @@ let ViewSettingsDialog = ViewSettingsDialog_1 = class ViewSettingsDialog extends
|
|
|
183
188
|
return !!this.groupItems.length;
|
|
184
189
|
}
|
|
185
190
|
get shouldBuildCustomTabs() {
|
|
186
|
-
return !!this.
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Returns only custom tabs that have an icon defined and can be rendered.
|
|
190
|
-
*/
|
|
191
|
-
get _renderableCustomTabs() {
|
|
192
|
-
return this.customTabs.filter(tab => tab.icon);
|
|
191
|
+
return !!this.customTabs.length;
|
|
193
192
|
}
|
|
194
193
|
get hasPagination() {
|
|
195
194
|
const builtInTabsCount = [this.shouldBuildSort, this.shouldBuildFilter, this.shouldBuildGroup]
|
|
196
195
|
.filter(condition => condition)
|
|
197
196
|
.length;
|
|
198
197
|
if (this.shouldBuildCustomTabs) {
|
|
199
|
-
return builtInTabsCount + this.
|
|
198
|
+
return builtInTabsCount + this.customTabs.length > 1;
|
|
200
199
|
}
|
|
201
200
|
return builtInTabsCount > 1;
|
|
202
201
|
}
|
|
@@ -211,7 +210,7 @@ let ViewSettingsDialog = ViewSettingsDialog_1 = class ViewSettingsDialog extends
|
|
|
211
210
|
return ViewSettingsDialogMode.Group;
|
|
212
211
|
}
|
|
213
212
|
if (this.shouldBuildCustomTabs) {
|
|
214
|
-
return this._customTabMode(this.
|
|
213
|
+
return this._customTabMode(this.customTabs[0]);
|
|
215
214
|
}
|
|
216
215
|
return ViewSettingsDialogMode.Sort;
|
|
217
216
|
}
|
|
@@ -219,7 +218,7 @@ let ViewSettingsDialog = ViewSettingsDialog_1 = class ViewSettingsDialog extends
|
|
|
219
218
|
if (!this._isCustomMode(this._currentMode)) {
|
|
220
219
|
return;
|
|
221
220
|
}
|
|
222
|
-
return this.
|
|
221
|
+
return this.customTabs.find(tab => this._customTabMode(tab) === this._currentMode);
|
|
223
222
|
}
|
|
224
223
|
get _filterByTitle() {
|
|
225
224
|
const selectedFilterText = this._selectedFilter ? this._selectedFilter.text : "";
|
|
@@ -285,7 +284,7 @@ let ViewSettingsDialog = ViewSettingsDialog_1 = class ViewSettingsDialog extends
|
|
|
285
284
|
* Determines disabled state of the `Reset` button.
|
|
286
285
|
*/
|
|
287
286
|
get _disableResetButton() {
|
|
288
|
-
if (this.
|
|
287
|
+
if (this.resetEnabled) {
|
|
289
288
|
return false;
|
|
290
289
|
}
|
|
291
290
|
return this._dialog && this._settingsAreInitial && this._filteresAreInitial;
|
|
@@ -556,7 +555,7 @@ let ViewSettingsDialog = ViewSettingsDialog_1 = class ViewSettingsDialog extends
|
|
|
556
555
|
this._recentlyFocused = this._sortOrder;
|
|
557
556
|
this._focusRecentlyUsedControl();
|
|
558
557
|
announce(this._resetButtonAction, InvisibleMessageMode.Assertive);
|
|
559
|
-
this.fireDecoratorEvent("reset
|
|
558
|
+
this.fireDecoratorEvent("reset");
|
|
560
559
|
}
|
|
561
560
|
/**
|
|
562
561
|
* Sets current settings to ones passed as `settings` argument.
|
|
@@ -583,7 +582,7 @@ let ViewSettingsDialog = ViewSettingsDialog_1 = class ViewSettingsDialog extends
|
|
|
583
582
|
return true;
|
|
584
583
|
}
|
|
585
584
|
if (this._isCustomMode(mode)) {
|
|
586
|
-
return this.
|
|
585
|
+
return this.customTabs.some(tab => this._customTabMode(tab) === mode);
|
|
587
586
|
}
|
|
588
587
|
return false;
|
|
589
588
|
}
|
|
@@ -721,7 +720,7 @@ __decorate([
|
|
|
721
720
|
], ViewSettingsDialog.prototype, "open", void 0);
|
|
722
721
|
__decorate([
|
|
723
722
|
property({ type: Boolean })
|
|
724
|
-
], ViewSettingsDialog.prototype, "
|
|
723
|
+
], ViewSettingsDialog.prototype, "resetEnabled", void 0);
|
|
725
724
|
__decorate([
|
|
726
725
|
property({ type: Object })
|
|
727
726
|
], ViewSettingsDialog.prototype, "_recentlyFocused", void 0);
|
|
@@ -856,13 +855,17 @@ ViewSettingsDialog = ViewSettingsDialog_1 = __decorate([
|
|
|
856
855
|
/**
|
|
857
856
|
* Fired when the Reset button is clicked.
|
|
858
857
|
*
|
|
859
|
-
* **Note:**
|
|
860
|
-
*
|
|
858
|
+
* **Note:** This event is particularly relevant when the dialog contains custom tabs.
|
|
859
|
+
* By default, the Reset button resets all built-in settings (sort, filter, group) to their
|
|
860
|
+
* initial values. However, the component has no knowledge of the content or state inside
|
|
861
|
+
* custom tabs — it cannot detect what has changed or what the "default" values are.
|
|
862
|
+
* Therefore, when this event is fired, it is the application developer's responsibility
|
|
863
|
+
* to listen for it and manually reset the custom tab content to its initial state.
|
|
861
864
|
* @since 2.22.0
|
|
862
865
|
* @public
|
|
863
866
|
*/
|
|
864
867
|
,
|
|
865
|
-
event("reset
|
|
868
|
+
event("reset", {
|
|
866
869
|
bubbles: true,
|
|
867
870
|
})
|
|
868
871
|
], ViewSettingsDialog);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewSettingsDialog.js","sourceRoot":"","sources":["../src/ViewSettingsDialog.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,wDAAwD,CAAC;AAC1E,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,KAAK,MAAM,kDAAkD,CAAC;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAIxE,OAAO,QAAQ,MAAM,uDAAuD,CAAC;AAC7E,OAAO,oBAAoB,MAAM,4DAA4D,CAAC;AAC9F,OAAO,sBAAsB,MAAM,mCAAmC,CAAC;AAEvE,OAAO,uCAAuC,CAAC;AAC/C,OAAO,yCAAyC,CAAC;AACjD,OAAO,0CAA0C,CAAC;AAClD,OAAO,2CAA2C,CAAC;AAMnD,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,GAC1B,MAAM,mCAAmC,CAAC;AAE3C,WAAW;AACX,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,SAAS;AACT,OAAO,qBAAqB,MAAM,8CAA8C,CAAC;AAyCjF,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAKzC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AA4EH,IAAM,kBAAkB,0BAAxB,MAAM,kBAAmB,SAAQ,UAAU;IAA3C;;QASC;;;;WAIG;QAEH,mBAAc,GAAG,KAAK,CAAC;QAEvB;;;;;WAKG;QAEH,oBAAe,GAAG,KAAK,CAAC;QAExB;;;;;WAKG;QAEH,SAAI,GAAG,KAAK,CAAC;QAEb;;;;;;;;;;WAUG;QAEH,gBAAW,GAAG,KAAK,CAAC;QASpB;;;WAGG;QAEH,qBAAgB,GAAwB;YACvC,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,EAAE;SACX,CAAC;QAEF;;;WAGG;QAEH,qBAAgB,GAAwB,IAAI,CAAC,gBAAgB,CAAC;QAE9D;;;WAGG;QAEH,uBAAkB,GAAwB,IAAI,CAAC,gBAAgB,CAAC;QAEhE;;;;WAIG;QAEH,iBAAY,GAAmC,sBAAsB,CAAC,IAAI,CAAC;QAE3E;;;;WAIG;QAEH,mBAAc,GAAG,KAAK,CAAC;IAywBxB,CAAC;IA9rBA,iBAAiB;QAChB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3E,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC;YAClD,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,KAAK,CAAC;YACjD,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACpF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,CAAC;IACF,CAAC;IAED,cAAc,CAAC,UAAsB;QACpC,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,CAAC;IACF,CAAC;IAED,mBAAmB;QAClB,gDAAgD;QAChD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC1C,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACpE,aAAa,EAAE,CAAC;gBACjB,CAAC;YACF,CAAC;YAED,MAAM,CAAC,cAAc,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,aAAa,EAAE,CAAC;QAClE,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,eAAe;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/D,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;QACF,CAAC;IACF,CAAC;IAED,qBAAqB,CAAC,IAAgB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,cAAc,CAAC,CAAC,CAAC,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,0BAA0B,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxH,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAI,gBAAgB;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,IAAI,qBAAqB;QACxB,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,IAAI,qBAAqB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,aAAa;QAChB,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC;aAC5F,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;aAC9B,MAAM,CAAC;QAET,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,OAAO,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,gBAAgB,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,YAAY;QACf,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,sBAAsB,CAAC,IAAI,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO,sBAAsB,CAAC,MAAM,CAAC;QACtC,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO,sBAAsB,CAAC,KAAK,CAAC;QACrC,CAAC;QAED,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,sBAAsB,CAAC,IAAI,CAAC;IACpC,CAAC;IAED,IAAI,kBAAkB;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5C,OAAO;QACR,CAAC;QAED,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,cAAc;QACjB,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,OAAO,GAAG,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,kBAAkB,EAAE,CAAC;IACzF,CAAC;IAED,IAAI,YAAY;QACf,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,kBAAkB;QACrB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,gBAAgB;QACnB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,gBAAgB;QACnB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,YAAY;QACf,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,kBAAkB;QACrB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,oBAAoB;QACvB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,mBAAmB;QACtB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,kBAAkB;QACrB,OAAO,oBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,OAAO,EAAE,CAAC;IAClB,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,cAAc;YACzB,CAAC,CAAC,IAAI,CAAC,cAAc;YACrB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,mBAAmB;QACtB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC;IAC7E,CAAC;IAED,IAAI,mBAAmB;QACtB,IAAI,kBAAkB,GAAG,IAAI,CAAC;QAC9B,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACvE,IAAI,CAAC,gBAAgB,CAAC,YAAyC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACxF,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,gBAAgB,CAAC,YAAyC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACxG,kBAAkB,GAAG,KAAK,CAAC;gBAC5B,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC;IAC3B,CAAC;IAED,IAAI,mBAAmB;QACtB,IAAI,iBAAiB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtD,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACzG,iBAAiB,GAAG,KAAK,CAAC;gBAC3B,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,OAAO,iBAAiB,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACZ,OAAO;YACN,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC9D,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACxD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC1D,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACpC,OAAO;oBACN,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;oBACrB,QAAQ,EAAE,KAAK;oBACf,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;wBAC5C,OAAO;4BACN,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE;4BAC5B,QAAQ,EAAE,WAAW,CAAC,QAAQ;yBAC9B,CAAC;oBACH,CAAC,CAAC;iBACF,CAAC;YACH,CAAC,CAAC;SACF,CAAC;IACH,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACzC,OAAO;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK;aACL,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,gBAAgB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC1C,OAAO;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK;aACL,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,kBAAkB;QACrB,OAAO;YACN;gBACC,IAAI,EAAE,IAAI,CAAC,eAAe;gBAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC,cAAc;aAC9B;YACD;gBACC,IAAI,EAAE,IAAI,CAAC,gBAAgB;gBAC3B,QAAQ,EAAE,IAAI,CAAC,cAAc;aAC7B;SACD,CAAC;IACH,CAAC;IAED,IAAI,mBAAmB;QACtB,OAAO;YACN;gBACC,IAAI,EAAE,IAAI,CAAC,eAAe;gBAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC,eAAe;aAC/B;YACD;gBACC,IAAI,EAAE,IAAI,CAAC,gBAAgB;gBAC3B,QAAQ,EAAE,IAAI,CAAC,eAAe;aAC9B;SACD,CAAC;IACH,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;IACnD,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,YAAY,KAAK,sBAAsB,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,YAAY,KAAK,sBAAsB,CAAC,MAAM,CAAC;IAC5D,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,YAAY,KAAK,sBAAsB,CAAC,KAAK,CAAC;IAC3D,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,gBAAgB;QACf,2CAA2C;QAC3C,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED,eAAe;QACd,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;QAE7B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,gBAAgB;QACf,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,iBAAiB,CAAC,CAAc;QAC/B,MAAM,IAAI,GAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAmB,CAAC;QAEpF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO;QACR,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,2BAA2B,CAAC,CAA8C;QACzE,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;QAE/C,6BAA6B;QAC7B,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC1E,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACrC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC9B,MAAM,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACpC,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,QAAgB;QAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACrC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAClC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC9B,MAAM,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACpC,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB;QACvB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,MAAM,cAAc,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;IACF,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,CAAwC;QAClE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC1E,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1D,OAAO,MAAM,CAAC;QACf,CAAC,CAAC,CAAC;QACH,MAAM,cAAc,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;YAC7D,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC1B,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACH,yBAAyB;QACxB,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1E,OAAO;QACR,CAAC;QAED,MAAM,4BAA4B,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;QAC9E,IAAI,4BAA4B,CAAC,MAAM,EAAE,CAAC;YACzC,4BAA4B,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC;IACF,CAAC;IAED;;OAEG;IACH,gBAAgB;QACf,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAEhD,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,eAAe;QACd,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE/C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,YAAY;QACf,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACjG,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACtF,0BAA0B,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC9F,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACxF,SAAS,GAAG,yBAAyB,IAAI,CAAC,yBAAyB,CAAC,IAAI,IAAI,EAAE,CAAC,EAC/E,cAAc,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAC7D,MAAM,GAAG,sBAAsB,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,EAAE,CAAC,EACtE,kBAAkB,GAAG,sBAAsB,IAAI,sBAAsB,CAAC,KAAK,EAC3E,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAC/C,UAAU,GAAG,0BAA0B,IAAI,CAAC,0BAA0B,CAAC,IAAI,IAAI,EAAE,CAAC,EAClF,eAAe,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAC/D,OAAO,GAAG,uBAAuB,IAAI,CAAC,uBAAuB,CAAC,IAAI,IAAI,EAAE,CAAC,EACzE,mBAAmB,GAAG,uBAAuB,IAAI,uBAAuB,CAAC,KAAK,EAC9E,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAClD,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5G,OAAO;YACN,SAAS;YACT,cAAc;YACd,MAAM;YACN,UAAU;YACV,UAAU;YACV,eAAe;YACf,OAAO;YACP,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,eAAe;YAC7B,WAAW,EAAE,mBAAmB;SAChC,CAAC;IACH,CAAC;IAED,IAAI,eAAe;QAClB,MAAM,MAAM,GAAe,EAAE,CAAC;QAE9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC9C,MAAM,eAAe,GAAkB,EAAE,CAAC;YAE1C,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACrB,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBACzC,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC;YAChE,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,yBAAyB,CAAC,GAAgB;QACzC,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACtC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC7B,CAAC;IACF,CAAC;IAED;;OAEG;IACH,cAAc;QACb,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAW,CAAC;QACzC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAClE,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,QAA6B;QAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,GAAgC;QACtD,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,cAAc,CAAC,GAAgC;QAC9C,OAAO,GAAG,CAAC,eAAyC,CAAC;IACtD,CAAC;IAED,aAAa,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAED,YAAY,CAAC,IAAY;QACxB,IAAI,IAAI,KAAM,sBAAsB,CAAC,IAAe;eAChD,IAAI,KAAM,sBAAsB,CAAC,MAAiB;eAClD,IAAI,KAAM,sBAAsB,CAAC,KAAgB,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,CAA8C;QAChE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAW,CAAC;QACzC,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACpE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;YAC5D,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,aAAa;QACb,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,CAA8C;QAC7D,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAQ,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACvE,IAAI,CAAC,QAAQ,GAAG,KAAK,KAAK,iBAAiB,CAAC;YAC5C,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QACH,aAAa;QACb,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,CAA8C;QACjE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAY,CAAC;QAC1C,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACtE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;YAC5D,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,aAAa;QACb,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,CAA8C;QAC9D,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAS,CAAC;QACvC,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACzE,IAAI,CAAC,QAAQ,GAAG,KAAK,KAAK,iBAAiB,CAAC;YAC5C,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,aAAa;QACb,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;;;;OASG;IACH,oBAAoB,CAAC,QAAqB;QACzC,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,YAAY,GAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9F,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxD,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;wBAC3D,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC3C,CAAC;yBAAM,CAAC;wBACP,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC5C,CAAC;gBACF,CAAC;YACF,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrD,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACrD,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBACP,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACzC,CAAC;gBACF,CAAC;YACF,CAAC;YAED,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzD,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;wBAC7D,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC5C,CAAC;yBAAM,CAAC;wBACP,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC7C,CAAC;gBACF,CAAC;YACF,CAAC;YAED,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtD,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACvD,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACzC,CAAC;yBAAM,CAAC;wBACP,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC1C,CAAC;gBACF,CAAC;YACF,CAAC;YAED,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,MAAM,YAAY,GAAc,EAAE,CAAC;gBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClD,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9G,CAAC;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvE,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;4BAC5K,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;wBAC1D,CAAC;6BAAM,CAAC;4BACP,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;wBAC3D,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;YAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QACpE,CAAC;IACF,CAAC;CACD,CAAA;AA31BA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0DACL;AASvB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;2DACJ;AASxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gDACf;AAcb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;uDACR;AAOpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4DACH;AAOxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4DAOzB;AAOF;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4DACmC;AAO9D;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8DACqC;AAQhE;IADC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;wDAC2C;AAQ3E;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;0DACxB;AASvB;IADC,IAAI,EAAE;qDACoB;AAS3B;IADC,IAAI,EAAE;uDACwB;AAS/B;IADC,IAAI,EAAE;sDACsB;AAmB7B;IARC,IAAI,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE,IAAI;QACrB,uBAAuB,EAAE;YACxB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,KAAK;SACZ;KACD,CAAC;sDAC6C;AAG/C;IADC,KAAK,CAAC,YAAY,CAAC;iDACP;AAGb;IADC,KAAK,CAAC,cAAc,CAAC;mDACL;AAGjB;IADC,KAAK,CAAC,wBAAwB,CAAC;sDACd;AAGlB;IADC,KAAK,CAAC,qBAAqB,CAAC;mDACd;AAGf;IADC,KAAK,CAAC,yBAAyB,CAAC;uDACd;AAGnB;IADC,KAAK,CAAC,sBAAsB,CAAC;oDACd;AAGhB;IADC,KAAK,CAAC,yBAAyB,CAAC;uDACd;AAGnB;IADC,KAAK,CAAC,4BAA4B,CAAC;0DACd;AAGf;IADN,IAAI,CAAC,0BAA0B,CAAC;4CACH;AA1KzB,kBAAkB;IA3EvB,aAAa,CAAC;QACd,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,qBAAqB;QAC7B,QAAQ,EAAE,0BAA0B;KACpC,CAAC;IAEF;;;;;;;;;;;;OAYG;;IACF,KAAK,CAAC,SAAS,EAAE;QACjB,OAAO,EAAE,IAAI;KACb,CAAC;IAEF;;;;;;;;;;;;OAYG;;IACF,KAAK,CAAC,QAAQ,EAAE;QAChB,OAAO,EAAE,IAAI;KACb,CAAC;IAEF;;;OAGG;;IACF,KAAK,CAAC,aAAa,EAAE;QACrB,UAAU,EAAE,IAAI;KAChB,CAAC;IACF;;;;OAIG;;IACF,KAAK,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,IAAI;KACb,CAAC;IACF;;;;OAIG;;IACF,KAAK,CAAC,OAAO,EAAE;QACf,OAAO,EAAE,IAAI;KACb,CAAC;IACF;;;;;;;OAOG;;IACF,KAAK,CAAC,aAAa,EAAE;QACrB,OAAO,EAAE,IAAI;KACb,CAAC;GACI,kBAAkB,CA02BvB;AAED,kBAAkB,CAAC,MAAM,EAAE,CAAC;AAE5B,eAAe,kBAAkB,CAAC","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { Slot, ChangeInfo } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport type Dialog from \"@ui5/webcomponents/dist/Dialog.js\";\nimport type List from \"@ui5/webcomponents/dist/List.js\";\nimport type { ListItemClickEventDetail, ListSelectionChangeEventDetail } from \"@ui5/webcomponents/dist/List.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport ViewSettingsDialogMode from \"./types/ViewSettingsDialogMode.js\";\n\nimport \"@ui5/webcomponents-icons/dist/sort.js\";\nimport \"@ui5/webcomponents-icons/dist/filter.js\";\nimport \"@ui5/webcomponents-icons/dist/group-2.js\";\nimport \"@ui5/webcomponents-icons/dist/nav-back.js\";\nimport type SortItem from \"./SortItem.js\";\nimport type FilterItem from \"./FilterItem.js\";\nimport type GroupItem from \"./GroupItem.js\";\nimport type ViewSettingsDialogCustomTab from \"./ViewSettingsDialogCustomTab.js\";\n\nimport {\n\tVSD_DIALOG_TITLE_SORT,\n\tVSD_SUBMIT_BUTTON,\n\tVSD_CANCEL_BUTTON,\n\tVSD_RESET_BUTTON,\n\tVSD_SORT_ORDER,\n\tVSD_SORT_BY,\n\tVSD_GROUP_ORDER,\n\tVSD_GROUP_BY,\n\tVSD_ORDER_ASCENDING,\n\tVSD_ORDER_DESCENDING,\n\tVSD_FILTER_BY,\n\tVSD_SORT_TOOLTIP,\n\tVSD_FILTER_TOOLTIP,\n\tVSD_GROUP_TOOLTIP,\n\tVSD_RESET_BUTTON_ACTION,\n\tVSD_FILTER_ITEM_LABEL_TEXT,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport ViewSettingsDialogTemplate from \"./ViewSettingsDialogTemplate.js\";\n\n// Styles\nimport viewSettingsDialogCSS from \"./generated/themes/ViewSettingsDialog.css.js\";\n\ntype VSDFilter = Record<string, Array<string>> // {\"Filter 1\": [\"Filter 5\", \"Filter 6\"]}\ntype VSDFilters = Array<VSDFilter> // [{\"Filter 1\": [\"Filter 5\", \"Filter 6\"]}, {\"Filter 3\": [\"Filter 8\"]}]\n\n// The data, passed to the public method + part of the events' detail\ntype VSDSettings = {\n\tsortOrder: string,\n\tsortBy: string,\n\tfilters: VSDFilters,\n\tgroupOrder: string,\n\tgroupBy: string,\n}\n\n// Events' detail\ntype ViewSettingsDialogConfirmEventDetail = VSDSettings & {\n\tsortByItem: SortItem,\n\tsortDescending: boolean,\n\tgroupByItem: GroupItem,\n\tgroupDescending: boolean,\n}\n\ntype ViewSettingsDialogCancelEventDetail = VSDSettings & {\n\tsortByItem: SortItem,\n\tsortDescending: boolean,\n\tgroupByItem: GroupItem,\n\tgroupDescending: boolean,\n}\n\n// Common properties for several VSDInternalSettings fields\ntype VSDItem = {text?: string, selected: boolean}\n\n// Used for the private properties _initialSettings, _confirmedSettings and _currentSettings\ntype VSDInternalSettings = {\n\tsortOrder: Array<VSDItem>,\n\tsortBy: Array<VSDItem & {index: number}>,\n\tfilters: Array<VSDItem & {filterOptions: Array<VSDItem>}>,\n\tgroupOrder: Array<VSDItem>,\n\tgroupBy: Array<VSDItem & {index: number}>,\n}\n\nconst CUSTOM_MODE_PREFIX = \"customTabs-\";\n\ntype ViewSettingsCustomMode = `${typeof CUSTOM_MODE_PREFIX}${number}`;\ntype ViewSettingsDialogInternalMode = `${ViewSettingsDialogMode}` | ViewSettingsCustomMode;\n\n/**\n * @class\n * ### Overview\n * The `ui5-view-settings-dialog` component helps the user to sort data within a list or a table.\n * It consists of several lists like `Sort order` which is built-in and `Sort By` and `Filter By` lists,\n * for which you must be provide items(`ui5-sort-item` & `ui5-filter-item` respectively)\n * These options can be used to create sorters for a table.\n *\n * The `ui5-view-settings-dialog` interrupts the current application processing as it is the only focused UI element and\n * the main screen is dimmed/blocked.\n * The `ui5-view-settings-dialog` is modal, which means that user action is required before returning to the parent window is possible.\n *\n * ### Structure\n * A `ui5-view-settings-dialog` consists of a header, content, and a footer for action buttons.\n * The `ui5-view-settings-dialog` is usually displayed at the center of the screen.\n *\n * ### Responsive Behavior\n * `ui5-view-settings-dialog` stretches on full screen on phones.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/ViewSettingsDialog.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.16\n * @public\n * @csspart header - Used to style the header.\n */\n@customElement({\n\ttag: \"ui5-view-settings-dialog\",\n\trenderer: jsxRenderer,\n\tstyles: viewSettingsDialogCSS,\n\ttemplate: ViewSettingsDialogTemplate,\n})\n\n/**\n * Fired when confirmation button is activated.\n * @param {String} sortOrder The current sort order selected.\n * @param {String} sortBy The currently selected `ui5-sort-item` text attribute.\n * @param {HTMLElement} sortByItem The currently selected `ui5-sort-item`.\n * @param {Boolean} sortDescending The selected sort order (true = descending, false = ascending).\n * @param {String} groupOrder The current group order selected.\n * @param {String} groupBy The currently selected `ui5-group-item` text attribute.\n * @param {HTMLElement} groupByItem The currently selected `ui5-group-item`.\n * @param {Boolean} groupDescending The selected group order (true = descending, false = ascending).\n * @param {Array} filters The selected filters items.\n * @public\n */\n@event(\"confirm\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when cancel button is activated.\n * @param {String} sortOrder The current sort order selected.\n * @param {String} sortBy The currently selected `ui5-sort-item` text attribute.\n * @param {HTMLElement} sortByItem The currently selected `ui5-sort-item`.\n * @param {Boolean} sortDescending The selected sort order (true = descending, false = ascending).\n * @param {String} groupOrder The current group order selected.\n * @param {String} groupBy The currently selected `ui5-group-item` text attribute.\n * @param {HTMLElement} groupByItem The currently selected `ui5-group-item`.\n * @param {Boolean} groupDescending The selected group order (true = descending, false = ascending).\n * @param {Array} filters The selected filters items.\n * @public\n */\n@event(\"cancel\", {\n\tbubbles: true,\n})\n\n/**\n * Fired before the component is opened.\n * @public\n */\n@event(\"before-open\", {\n\tcancelable: true,\n})\n/**\n * Fired after the dialog is opened.\n * @since 2.0.0\n * @public\n */\n@event(\"open\", {\n\tbubbles: true,\n})\n/**\n * Fired after the dialog is closed.\n * @since 2.0.0\n * @public\n */\n@event(\"close\", {\n\tbubbles: true,\n})\n/**\n * Fired when the Reset button is clicked.\n *\n * **Note:** Use this event to reset the state of custom tab content,\n * as the component cannot detect changes within custom tabs.\n * @since 2.22.0\n * @public\n */\n@event(\"reset-click\", {\n\tbubbles: true,\n})\nclass ViewSettingsDialog extends UI5Element {\n\teventDetails!: {\n\t\t\"confirm\": ViewSettingsDialogConfirmEventDetail,\n\t\t\"cancel\": ViewSettingsDialogCancelEventDetail,\n\t\t\"before-open\": void,\n\t\t\"open\": void,\n\t\t\"close\": void,\n\t\t\"reset-click\": void,\n\t}\n\t/**\n\t * Defines the initial sort order.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tsortDescending = false;\n\n\t/**\n\t * Defines the initial group order.\n\t * @default false\n\t * @since 2.13.0\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tgroupDescending = false;\n\n\t/**\n\t * Indicates if the dialog is open.\n\t * @public\n\t * @default false\n\t * @since 2.0.0\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t/**\n\t * Defines whether the Reset button is always enabled.\n\t *\n\t * **Note:** By default, the Reset button is only enabled when the dialog settings\n\t * differ from their initial state. Set this property to `true` to keep the Reset\n\t * button always enabled, which is useful when working with custom tabs\n\t * whose internal state changes cannot be detected by the component.\n\t * @default false\n\t * @public\n\t * @since 2.22.0\n\t */\n\t@property({ type: Boolean })\n\tenableReset = false;\n\n\t/**\n\t * Keeps recently focused list in order to focus it on next dialog open.\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_recentlyFocused?: List;\n\n\t/**\n\t * Stores current settings of the dialog.\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_currentSettings: VSDInternalSettings = {\n\t\tsortOrder: [],\n\t\tsortBy: [],\n\t\tfilters: [],\n\t\tgroupOrder: [],\n\t\tgroupBy: [],\n\t};\n\n\t/**\n\t * Stores settings of the dialog before the initial open.\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_initialSettings: VSDInternalSettings = this._currentSettings;\n\n\t/**\n\t * Stores settings of the dialog after confirmation.\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_confirmedSettings: VSDInternalSettings = this._currentSettings;\n\n\t/**\n\t * Defnies the current mode of the component.\n\t * @since 1.0.0-rc.16\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\t_currentMode: ViewSettingsDialogInternalMode = ViewSettingsDialogMode.Sort;\n\n\t/**\n\t * When in Filter By mode, defines whether we need to show the list of keys, or the list with values.\n\t * @since 1.0.0-rc.16\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\t_filterStepTwo = false;\n\n\t/**\n\t * Defines the list of items against which the user could sort data.\n\t *\n\t * **Note:** If you want to use this slot, you need to import used item: `import \"@ui5/webcomponents-fiori/dist/SortItem.js\";`\n\t * @public\n\t */\n\t@slot()\n\tsortItems!: Slot<SortItem>;\n\n\t/**\n\t * Defines the `filterItems` list.\n\t *\n\t * **Note:** If you want to use this slot, you need to import used item: `import \"@ui5/webcomponents-fiori/dist/FilterItem.js\";`\n\t * @public\n\t */\n\t@slot()\n\tfilterItems!: Slot<FilterItem>;\n\n\t/**\n\t * Defines the list of items against which the user could group data.\n\t *\n\t * **Note:** If you want to use this slot, you need to import used item: `import \"@ui5/webcomponents-fiori/dist/GroupItem.js\";`\n\t * @public\n\t */\n\t@slot()\n\tgroupItems!: Slot<GroupItem>;\n\n\t/**\n\t * Defines custom tabs for the dialog.\n\t *\n\t * The custom tabs are rendered after the built-in tabs (`Sort`, `Filter`, `Group`).\n\t *\n\t * **Note:** If you want to use this slot, you need to import the item: `import \"@ui5/webcomponents-fiori/dist/ViewSettingsDialogCustomTab.js\";`\n\t * @public\n\t * @since 2.22.0\n\t */\n\t@slot({\n\t\ttype: HTMLElement,\n\t\tindividualSlots: true,\n\t\tinvalidateOnChildChange: {\n\t\t\tproperties: true,\n\t\t\tslots: false,\n\t\t},\n\t})\n\tcustomTabs!: Slot<ViewSettingsDialogCustomTab>;\n\n\t@query(\"[ui5-list]\")\n\t_list!: List;\n\n\t@query(\"[ui5-dialog]\")\n\t_dialog?: Dialog;\n\n\t@query(\"[ui5-list][sort-order]\")\n\t_sortOrder?: List;\n\n\t@query(\"[ui5-list][sort-by]\")\n\t_sortBy?: List;\n\n\t@query(\"[ui5-list][group-order]\")\n\t_groupOrder?: List;\n\n\t@query(\"[ui5-list][group-by]\")\n\t_groupBy?: List;\n\n\t@query(\"[ui5-list][filter-list]\")\n\t_filterList?: List;\n\n\t@query(\"[ui5-list][filter-options]\")\n\t_filterOptions?: List;\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\n\tonBeforeRendering() {\n\t\tif (this._currentSettings.filters && this._currentSettings.filters.length) {\n\t\t\tthis._setAdditionalTexts();\n\t\t}\n\n\t\tif (this.shouldBuildSort) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.shouldBuildFilter) {\n\t\t\tthis._currentMode = ViewSettingsDialogMode.Filter;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.shouldBuildGroup) {\n\t\t\tthis._currentMode = ViewSettingsDialogMode.Group;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.shouldBuildCustomTabs && (!this.isModeCustom || !this._selectedCustomTab)) {\n\t\t\tthis._currentMode = this._defaultMode;\n\t\t}\n\t}\n\n\tonInvalidation(changeInfo: ChangeInfo) {\n\t\tif (changeInfo.type === \"slot\") {\n\t\t\tthis._confirmedSettings = this._settings;\n\t\t}\n\t}\n\n\t_setAdditionalTexts() {\n\t\t// Add the additional text to the filter options\n\t\tthis.filterItems.forEach((filter, index) => {\n\t\t\tlet selectedCount = 0;\n\t\t\tfor (let i = 0; i < filter.values.length; i++) {\n\t\t\t\tif (this._currentSettings.filters[index].filterOptions[i].selected) {\n\t\t\t\t\tselectedCount++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfilter.additionalText = !selectedCount ? \"\" : `${selectedCount}`;\n\t\t});\n\t}\n\n\tget _selectedFilter() {\n\t\tfor (let i = 0; i < this._currentSettings.filters.length; i++) {\n\t\t\tif (this._currentSettings.filters[i].selected) {\n\t\t\t\treturn this._currentSettings.filters[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t_selectedFiltersLabel(item: FilterItem) {\n\t\tconst text = item.text ? `${item.text},` : \"\";\n\t\tconst additionalText = item.additionalText ? `${item.additionalText},` : \"\";\n\t\treturn additionalText ? ViewSettingsDialog.i18nBundle.getText(VSD_FILTER_ITEM_LABEL_TEXT, text, additionalText) : text;\n\t}\n\n\tget shouldBuildSort() {\n\t\treturn !!this.sortItems.length;\n\t}\n\n\tget shouldBuildFilter() {\n\t\treturn !!this.filterItems.length;\n\t}\n\n\tget shouldBuildGroup() {\n\t\treturn !!this.groupItems.length;\n\t}\n\n\tget shouldBuildCustomTabs() {\n\t\treturn !!this._renderableCustomTabs.length;\n\t}\n\n\t/**\n\t * Returns only custom tabs that have an icon defined and can be rendered.\n\t */\n\tget _renderableCustomTabs() {\n\t\treturn this.customTabs.filter(tab => tab.icon);\n\t}\n\n\tget hasPagination() {\n\t\tconst builtInTabsCount = [this.shouldBuildSort, this.shouldBuildFilter, this.shouldBuildGroup]\n\t\t\t.filter(condition => condition)\n\t\t\t.length;\n\n\t\tif (this.shouldBuildCustomTabs) {\n\t\t\treturn builtInTabsCount + this._renderableCustomTabs.length > 1;\n\t\t}\n\n\t\treturn builtInTabsCount > 1;\n\t}\n\n\tget _defaultMode(): ViewSettingsDialogInternalMode {\n\t\tif (this.shouldBuildSort) {\n\t\t\treturn ViewSettingsDialogMode.Sort;\n\t\t}\n\n\t\tif (this.shouldBuildFilter) {\n\t\t\treturn ViewSettingsDialogMode.Filter;\n\t\t}\n\n\t\tif (this.shouldBuildGroup) {\n\t\t\treturn ViewSettingsDialogMode.Group;\n\t\t}\n\n\t\tif (this.shouldBuildCustomTabs) {\n\t\t\treturn this._customTabMode(this._renderableCustomTabs[0]);\n\t\t}\n\n\t\treturn ViewSettingsDialogMode.Sort;\n\t}\n\n\tget _selectedCustomTab() {\n\t\tif (!this._isCustomMode(this._currentMode)) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._renderableCustomTabs.find(tab => this._customTabMode(tab) === this._currentMode);\n\t}\n\n\tget _filterByTitle() {\n\t\tconst selectedFilterText = this._selectedFilter ? this._selectedFilter.text : \"\";\n\t\treturn `${ViewSettingsDialog.i18nBundle.getText(VSD_FILTER_BY)}: ${selectedFilterText}`;\n\t}\n\n\tget _dialogTitle() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_DIALOG_TITLE_SORT);\n\t}\n\n\tget _okButtonLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_SUBMIT_BUTTON);\n\t}\n\n\tget _cancelButtonLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_CANCEL_BUTTON);\n\t}\n\n\tget _resetButtonLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_RESET_BUTTON);\n\t}\n\n\tget _ascendingLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_ORDER_ASCENDING);\n\t}\n\n\tget _descendingLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_ORDER_DESCENDING);\n\t}\n\n\tget _sortOrderLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_SORT_ORDER);\n\t}\n\n\tget _groupOrderLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_GROUP_ORDER);\n\t}\n\n\tget _filterByLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_FILTER_BY);\n\t}\n\n\tget _sortByLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_SORT_BY);\n\t}\n\n\tget _groupByLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_GROUP_BY);\n\t}\n\n\tget _sortButtonTooltip() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_SORT_TOOLTIP);\n\t}\n\n\tget _filterButtonTooltip() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_FILTER_TOOLTIP);\n\t}\n\n\tget _groupButtonTooltip() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_GROUP_TOOLTIP);\n\t}\n\n\tget _resetButtonAction() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_RESET_BUTTON_ACTION);\n\t}\n\n\tget _isPhone() {\n\t\treturn isPhone();\n\t}\n\n\tget _sortAscending() {\n\t\treturn !this.sortDescending;\n\t}\n\n\tget _title() {\n\t\treturn this.showBackButton\n\t\t\t? this._filterByTitle\n\t\t\t: this._dialogTitle;\n\t}\n\n\t/**\n\t * Determines disabled state of the `Reset` button.\n\t */\n\tget _disableResetButton() {\n\t\tif (this.enableReset) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this._dialog && this._settingsAreInitial && this._filteresAreInitial;\n\t}\n\n\tget _settingsAreInitial() {\n\t\tlet settingsAreInitial = true;\n\t\t[\"sortBy\", \"sortOrder\", \"groupBy\", \"groupOrder\"].forEach(settingsList => {\n\t\t\tthis._currentSettings[settingsList as keyof VSDInternalSettings].forEach((item, index) => {\n\t\t\t\tif (item.selected !== this._initialSettings[settingsList as keyof VSDInternalSettings][index].selected) {\n\t\t\t\t\tsettingsAreInitial = false;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn settingsAreInitial;\n\t}\n\n\tget _filteresAreInitial() {\n\t\tlet filtersAreInitial = true;\n\t\tthis._currentSettings.filters.forEach((filter, index) => {\n\t\t\tfor (let i = 0; i < filter.filterOptions.length; i++) {\n\t\t\t\tif (filter.filterOptions[i].selected !== this._initialSettings.filters[index].filterOptions[i].selected) {\n\t\t\t\t\tfiltersAreInitial = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn filtersAreInitial;\n\t}\n\n\t/**\n\t * Returns the current settings (current state of all lists).\n\t */\n\tget _settings(): VSDInternalSettings {\n\t\treturn {\n\t\t\tsortOrder: JSON.parse(JSON.stringify(this.initSortOrderItems)),\n\t\t\tsortBy: JSON.parse(JSON.stringify(this.initSortByItems)),\n\t\t\tgroupOrder: JSON.parse(JSON.stringify(this.initGroupOrderItems)),\n\t\t\tgroupBy: JSON.parse(JSON.stringify(this.initGroupByItems)),\n\t\t\tfilters: this.filterItems.map(item => {\n\t\t\t\treturn {\n\t\t\t\t\ttext: item.text || \"\",\n\t\t\t\t\tselected: false,\n\t\t\t\t\tfilterOptions: item.values.map(optionValue => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: optionValue.text || \"\",\n\t\t\t\t\t\t\tselected: optionValue.selected,\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t}\n\n\tget initSortByItems() {\n\t\treturn this.sortItems.map((item, index) => {\n\t\t\treturn {\n\t\t\t\ttext: item.text,\n\t\t\t\tselected: item.selected,\n\t\t\t\tindex,\n\t\t\t};\n\t\t});\n\t}\n\n\tget initGroupByItems() {\n\t\treturn this.groupItems.map((item, index) => {\n\t\t\treturn {\n\t\t\t\ttext: item.text,\n\t\t\t\tselected: item.selected,\n\t\t\t\tindex,\n\t\t\t};\n\t\t});\n\t}\n\n\tget initSortOrderItems() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttext: this._ascendingLabel,\n\t\t\t\tselected: !this.sortDescending,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: this._descendingLabel,\n\t\t\t\tselected: this.sortDescending,\n\t\t\t},\n\t\t];\n\t}\n\n\tget initGroupOrderItems() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttext: this._ascendingLabel,\n\t\t\t\tselected: !this.groupDescending,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: this._descendingLabel,\n\t\t\t\tselected: this.groupDescending,\n\t\t\t},\n\t\t];\n\t}\n\n\tget expandContent() {\n\t\treturn this._filterStepTwo || !this.hasPagination;\n\t}\n\n\tget isModeSort() {\n\t\treturn this._currentMode === ViewSettingsDialogMode.Sort;\n\t}\n\n\tget isModeFilter() {\n\t\treturn this._currentMode === ViewSettingsDialogMode.Filter;\n\t}\n\n\tget isModeGroup() {\n\t\treturn this._currentMode === ViewSettingsDialogMode.Group;\n\t}\n\n\tget isModeCustom() {\n\t\treturn this._isCustomMode(this._currentMode);\n\t}\n\n\tget showBackButton() {\n\t\treturn this.isModeFilter && this._filterStepTwo;\n\t}\n\n\t/**\n\t * Shows the dialog.\n\t */\n\tbeforeDialogOpen(): void {\n\t\t// first time opening - initialize settings\n\t\tif (this._currentSettings.sortOrder.length === 0) {\n\t\t\tthis._initialSettings = this._settings;\n\t\t\tthis._currentSettings = this._settings;\n\t\t\tthis._confirmedSettings = this._settings;\n\t\t} else {\n\t\t\tthis._restoreSettings(this._confirmedSettings);\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"before-open\");\n\t}\n\n\tafterDialogOpen(): void {\n\t\tthis._list?.focusFirstItem();\n\n\t\tthis._focusRecentlyUsedControl();\n\n\t\tthis.fireDecoratorEvent(\"open\");\n\t}\n\n\tafterDialogClose(): void {\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\t_handleModeChange(e: CustomEvent) { // use SegmentedButton event when done\n\t\tconst mode = (e.detail.selectedItems[0].getAttribute(\"data-mode\") as string | null);\n\n\t\tif (!mode || !this._isValidMode(mode)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._currentMode = mode;\n\t}\n\n\t_handleFilterValueItemClick(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tconst itemText = e.detail.targetItem.innerText;\n\n\t\t// Update the component state\n\t\tthis._currentSettings.filters = this._currentSettings.filters.map(filter => {\n\t\t\tif (filter.selected) {\n\t\t\t\tfilter.filterOptions.forEach(option => {\n\t\t\t\t\tif (option.text === itemText) {\n\t\t\t\t\t\toption.selected = !option.selected;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn filter;\n\t\t});\n\n\t\tthis._setSelectedProp(itemText);\n\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(this._currentSettings));\n\t}\n\n\t/**\n\t * Sets the selected property of the clicked item.\n\t * @private\n\t */\n\t_setSelectedProp(itemText: string) {\n\t\tthis.filterItems.forEach(filterItem => {\n\t\t\tfilterItem.values.forEach(option => {\n\t\t\t\tif (option.text === itemText) {\n\t\t\t\t\toption.selected = !option.selected;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tasync _navigateToFilters() {\n\t\tthis._filterStepTwo = false;\n\t\tawait renderFinished();\n\t\tif (this._filterList) {\n\t\t\tthis._filterList.focusFirstItem();\n\t\t}\n\t}\n\n\tasync _changeCurrentFilter(e: CustomEvent<ListItemClickEventDetail>) {\n\t\tthis._filterStepTwo = true;\n\t\tthis._currentSettings.filters = this._currentSettings.filters.map(filter => {\n\t\t\tfilter.selected = filter.text === e.detail.item.innerText;\n\t\t\treturn filter;\n\t\t});\n\t\tawait renderFinished();\n\t\tif (this._filterOptions) {\n\t\t\tconst selectedItems = this._filterOptions.getSelectedItems();\n\t\t\tif (selectedItems.length) {\n\t\t\t\tselectedItems[0].focus();\n\t\t\t} else {\n\t\t\t\tthis._filterOptions.focusFirstItem();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Sets focus on recently used control within the dialog.\n\t */\n\t_focusRecentlyUsedControl() {\n\t\tif (!this._recentlyFocused || !Object.keys(this._recentlyFocused).length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst recentlyFocusedSelectedItems = this._recentlyFocused.getSelectedItems();\n\t\tif (recentlyFocusedSelectedItems.length) {\n\t\t\trecentlyFocusedSelectedItems[0].focus();\n\t\t}\n\t}\n\n\t/**\n\t * Stores current settings as confirmed and fires `confirm` event.\n\t */\n\t_confirmSettings() {\n\t\tthis.open = false;\n\t\tthis._confirmedSettings = this._currentSettings;\n\n\t\tthis.fireDecoratorEvent(\"confirm\", this.eventsParams);\n\t}\n\n\t/**\n\t * Sets current settings to recently confirmed ones and fires `cancel` event.\n\t */\n\t_cancelSettings() {\n\t\tthis._restoreSettings(this._confirmedSettings);\n\n\t\tthis.fireDecoratorEvent(\"cancel\", this.eventsParams);\n\t\tthis.open = false;\n\t}\n\n\tget eventsParams() {\n\t\tconst _currentSortOrderSelected = this._currentSettings.sortOrder.filter(item => item.selected)[0],\n\t\t\t_currentSortBySelected = this._currentSettings.sortBy.filter(item => item.selected)[0],\n\t\t\t_currentGroupOrderSelected = this._currentSettings.groupOrder.filter(item => item.selected)[0],\n\t\t\t_currentGroupBySelected = this._currentSettings.groupBy.filter(item => item.selected)[0],\n\t\t\tsortOrder = _currentSortOrderSelected && (_currentSortOrderSelected.text || \"\"),\n\t\t\tsortDescending = !this._currentSettings.sortOrder[0].selected,\n\t\t\tsortBy = _currentSortBySelected && (_currentSortBySelected.text || \"\"),\n\t\t\tsortByElementIndex = _currentSortBySelected && _currentSortBySelected.index,\n\t\t\tsortByItem = this.sortItems[sortByElementIndex],\n\t\t\tgroupOrder = _currentGroupOrderSelected && (_currentGroupOrderSelected.text || \"\"),\n\t\t\tgroupDescending = !this._currentSettings.groupOrder[0].selected,\n\t\t\tgroupBy = _currentGroupBySelected && (_currentGroupBySelected.text || \"\"),\n\t\t\tgroupByElementIndex = _currentGroupBySelected && _currentGroupBySelected.index,\n\t\t\tgroupByItem = this.groupItems[groupByElementIndex],\n\t\t\tselectedFilterItems = this.filterItems.filter(filterItem => filterItem.values.some(item => item.selected));\n\t\treturn {\n\t\t\tsortOrder,\n\t\t\tsortDescending,\n\t\t\tsortBy,\n\t\t\tsortByItem,\n\t\t\tgroupOrder,\n\t\t\tgroupDescending,\n\t\t\tgroupBy,\n\t\t\tgroupByItem,\n\t\t\tfilters: this.selectedFilters,\n\t\t\tfilterItems: selectedFilterItems,\n\t\t};\n\t}\n\n\tget selectedFilters() {\n\t\tconst result: VSDFilters = [];\n\n\t\tthis._currentSettings.filters.forEach(filter => {\n\t\t\tconst selectedOptions: Array<string> = [];\n\n\t\t\tfilter.filterOptions.forEach(option => {\n\t\t\t\tif (option.selected) {\n\t\t\t\t\tselectedOptions.push(option.text || \"\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (selectedOptions.length) {\n\t\t\t\tresult.push({});\n\t\t\t\tresult[result.length - 1][filter.text || \"\"] = selectedOptions;\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * If the dialog is closed by [Escape] key, do the same as if the `Cancel` button is pressed.\n\t * @param evt\n\t */\n\t_restoreConfirmedOnEscape(evt: CustomEvent) { // Dialog#before-close\n\t\tif (evt.detail.escPressed) {\n\t\t\tthis._cancelSettings();\n\t\t\tthis._currentMode = this._defaultMode;\n\t\t\tthis._filterStepTwo = false;\n\t\t}\n\t}\n\n\t/**\n\t * Resets the control settings to their initial state.\n\t */\n\t_resetSettings() {\n\t\tthis._restoreSettings(this._initialSettings);\n\t\tthis._recentlyFocused = this._sortOrder!;\n\t\tthis._focusRecentlyUsedControl();\n\t\tannounce(this._resetButtonAction, InvisibleMessageMode.Assertive);\n\t\tthis.fireDecoratorEvent(\"reset-click\");\n\t}\n\n\t/**\n\t * Sets current settings to ones passed as `settings` argument.\n\t * @param settings\n\t */\n\t_restoreSettings(settings: VSDInternalSettings) {\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(settings));\n\t\tthis._currentMode = this._defaultMode;\n\t\tthis._filterStepTwo = false;\n\t}\n\n\tisCurrentCustomTabMode(tab: ViewSettingsDialogCustomTab) {\n\t\treturn this._currentMode === this._customTabMode(tab);\n\t}\n\n\t_customTabMode(tab: ViewSettingsDialogCustomTab): ViewSettingsCustomMode {\n\t\treturn tab._individualSlot as ViewSettingsCustomMode;\n\t}\n\n\t_isCustomMode(mode: string): mode is ViewSettingsCustomMode {\n\t\treturn mode.startsWith(CUSTOM_MODE_PREFIX);\n\t}\n\n\t_isValidMode(mode: string): mode is ViewSettingsDialogInternalMode {\n\t\tif (mode === (ViewSettingsDialogMode.Sort as string)\n\t\t\t|| mode === (ViewSettingsDialogMode.Filter as string)\n\t\t\t|| mode === (ViewSettingsDialogMode.Group as string)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this._isCustomMode(mode)) {\n\t\t\treturn this._renderableCustomTabs.some(tab => this._customTabMode(tab) === mode);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Stores `Sort Order` list as recently used control and its selected item in current state.\n\t */\n\t_onSortOrderChange(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tthis._recentlyFocused = this._sortOrder!;\n\t\tthis._currentSettings.sortOrder = this.initSortOrderItems.map(item => {\n\t\t\titem.selected = item.text === e.detail.targetItem.innerText;\n\t\t\treturn item;\n\t\t});\n\n\t\t// Invalidate\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(this._currentSettings));\n\t}\n\n\t/**\n\t * Stores `Sort By` list as recently used control and its selected item in current state.\n\t */\n\t_onSortByChange(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tconst selectedItemIndex = Number(e.detail.targetItem.getAttribute(\"data-ui5-external-action-item-index\"));\n\t\tthis._recentlyFocused = this._sortBy!;\n\t\tthis._currentSettings.sortBy = this.initSortByItems.map((item, index) => {\n\t\t\titem.selected = index === selectedItemIndex;\n\t\t\treturn item;\n\t\t});\n\t\t// Invalidate\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(this._currentSettings));\n\t}\n\n\t/**\n\t * Stores `Group Order` list as recently used control and its selected item in current state.\n\t */\n\t_onGroupOrderChange(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tthis._recentlyFocused = this._groupOrder!;\n\t\tthis._currentSettings.groupOrder = this.initGroupOrderItems.map(item => {\n\t\t\titem.selected = item.text === e.detail.targetItem.innerText;\n\t\t\treturn item;\n\t\t});\n\n\t\t// Invalidate\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(this._currentSettings));\n\t}\n\n\t/**\n\t * Stores `Group By` list as recently used control and its selected item in current state.\n\t */\n\t_onGroupByChange(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tconst selectedItemIndex = Number(e.detail.targetItem.getAttribute(\"data-ui5-external-action-item-index\"));\n\t\tthis._recentlyFocused = this._groupBy!;\n\t\tthis._currentSettings.groupBy = this.initGroupByItems.map((item, index) => {\n\t\t\titem.selected = index === selectedItemIndex;\n\t\t\treturn item;\n\t\t});\n\n\t\t// Invalidate\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(this._currentSettings));\n\t}\n\n\t/**\n\t * Sets a JavaScript object, as settings to the `ui5-view-settings-dialog`.\n\t * This method can be used after the dialog is initially open, as the dialog needs\n\t * to set its initial settings.\n\t * The `ui5-view-settings-dialog` throws an event called \"before-open\",\n\t * which can be used as a trigger point.\n\t * The object should have the following format:\n\t * @param settings - predefined settings.\n\t * @public\n\t */\n\tsetConfirmedSettings(settings: VSDSettings): void {\n\t\tif (settings && this._dialog && !this._dialog.open) {\n\t\t\tconst tempSettings: VSDInternalSettings = JSON.parse(JSON.stringify(this._confirmedSettings));\n\t\t\tif (settings.sortOrder) {\n\t\t\t\tfor (let i = 0; i < tempSettings.sortOrder.length; i++) {\n\t\t\t\t\tif (tempSettings.sortOrder[i].text === settings.sortOrder) {\n\t\t\t\t\t\ttempSettings.sortOrder[i].selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttempSettings.sortOrder[i].selected = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (settings.sortBy) {\n\t\t\t\tfor (let i = 0; i < tempSettings.sortBy.length; i++) {\n\t\t\t\t\tif (tempSettings.sortBy[i].text === settings.sortBy) {\n\t\t\t\t\t\ttempSettings.sortBy[i].selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttempSettings.sortBy[i].selected = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (settings.groupOrder) {\n\t\t\t\tfor (let i = 0; i < tempSettings.groupOrder.length; i++) {\n\t\t\t\t\tif (tempSettings.groupOrder[i].text === settings.groupOrder) {\n\t\t\t\t\t\ttempSettings.groupOrder[i].selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttempSettings.groupOrder[i].selected = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (settings.groupBy) {\n\t\t\t\tfor (let i = 0; i < tempSettings.groupBy.length; i++) {\n\t\t\t\t\tif (tempSettings.groupBy[i].text === settings.groupBy) {\n\t\t\t\t\t\ttempSettings.groupBy[i].selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttempSettings.groupBy[i].selected = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (settings.filters) {\n\t\t\t\tconst inputFilters: VSDFilter = {};\n\t\t\t\tfor (let i = 0; i < settings.filters.length; i++) {\n\t\t\t\t\tinputFilters[Object.keys(settings.filters[i])[0]] = settings.filters[i][Object.keys(settings.filters[i])[0]];\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < tempSettings.filters.length; i++) {\n\t\t\t\t\tfor (let j = 0; j < tempSettings.filters[i].filterOptions.length; j++) {\n\t\t\t\t\t\tif (inputFilters[tempSettings.filters[i].text || \"\"] && inputFilters[tempSettings.filters[i].text || \"\"].indexOf(tempSettings.filters[i].filterOptions[j].text || \"\") > -1) {\n\t\t\t\t\t\t\ttempSettings.filters[i].filterOptions[j].selected = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttempSettings.filters[i].filterOptions[j].selected = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._confirmedSettings = JSON.parse(JSON.stringify(tempSettings));\n\t\t}\n\t}\n}\n\nViewSettingsDialog.define();\n\nexport default ViewSettingsDialog;\nexport type {\n\tViewSettingsDialogConfirmEventDetail,\n\tViewSettingsDialogCancelEventDetail,\n\tVSDSettings,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ViewSettingsDialog.js","sourceRoot":"","sources":["../src/ViewSettingsDialog.ts"],"names":[],"mappings":"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","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { Slot, ChangeInfo } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport type Dialog from \"@ui5/webcomponents/dist/Dialog.js\";\nimport type List from \"@ui5/webcomponents/dist/List.js\";\nimport type { ListItemClickEventDetail, ListSelectionChangeEventDetail } from \"@ui5/webcomponents/dist/List.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport ViewSettingsDialogMode from \"./types/ViewSettingsDialogMode.js\";\n\nimport \"@ui5/webcomponents-icons/dist/sort.js\";\nimport \"@ui5/webcomponents-icons/dist/filter.js\";\nimport \"@ui5/webcomponents-icons/dist/group-2.js\";\nimport \"@ui5/webcomponents-icons/dist/nav-back.js\";\nimport type SortItem from \"./SortItem.js\";\nimport type FilterItem from \"./FilterItem.js\";\nimport type GroupItem from \"./GroupItem.js\";\nimport type ViewSettingsDialogCustomTab from \"./ViewSettingsDialogCustomTab.js\";\n\nimport {\n\tVSD_DIALOG_TITLE_SORT,\n\tVSD_SUBMIT_BUTTON,\n\tVSD_CANCEL_BUTTON,\n\tVSD_RESET_BUTTON,\n\tVSD_SORT_ORDER,\n\tVSD_SORT_BY,\n\tVSD_GROUP_ORDER,\n\tVSD_GROUP_BY,\n\tVSD_ORDER_ASCENDING,\n\tVSD_ORDER_DESCENDING,\n\tVSD_FILTER_BY,\n\tVSD_SORT_TOOLTIP,\n\tVSD_FILTER_TOOLTIP,\n\tVSD_GROUP_TOOLTIP,\n\tVSD_RESET_BUTTON_ACTION,\n\tVSD_FILTER_ITEM_LABEL_TEXT,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport ViewSettingsDialogTemplate from \"./ViewSettingsDialogTemplate.js\";\n\n// Styles\nimport viewSettingsDialogCSS from \"./generated/themes/ViewSettingsDialog.css.js\";\n\ntype VSDFilter = Record<string, Array<string>> // {\"Filter 1\": [\"Filter 5\", \"Filter 6\"]}\ntype VSDFilters = Array<VSDFilter> // [{\"Filter 1\": [\"Filter 5\", \"Filter 6\"]}, {\"Filter 3\": [\"Filter 8\"]}]\n\n// The data, passed to the public method + part of the events' detail\ntype VSDSettings = {\n\tsortOrder: string,\n\tsortBy: string,\n\tfilters: VSDFilters,\n\tgroupOrder: string,\n\tgroupBy: string,\n}\n\n// Events' detail\ntype ViewSettingsDialogConfirmEventDetail = VSDSettings & {\n\tsortByItem: SortItem,\n\tsortDescending: boolean,\n\tgroupByItem: GroupItem,\n\tgroupDescending: boolean,\n}\n\ntype ViewSettingsDialogCancelEventDetail = VSDSettings & {\n\tsortByItem: SortItem,\n\tsortDescending: boolean,\n\tgroupByItem: GroupItem,\n\tgroupDescending: boolean,\n}\n\n// Common properties for several VSDInternalSettings fields\ntype VSDItem = {text?: string, selected: boolean}\n\n// Used for the private properties _initialSettings, _confirmedSettings and _currentSettings\ntype VSDInternalSettings = {\n\tsortOrder: Array<VSDItem>,\n\tsortBy: Array<VSDItem & {index: number}>,\n\tfilters: Array<VSDItem & {filterOptions: Array<VSDItem>}>,\n\tgroupOrder: Array<VSDItem>,\n\tgroupBy: Array<VSDItem & {index: number}>,\n}\n\nconst CUSTOM_MODE_PREFIX = \"customTabs-\";\n\ntype ViewSettingsCustomMode = `${typeof CUSTOM_MODE_PREFIX}${number}`;\ntype ViewSettingsDialogInternalMode = `${ViewSettingsDialogMode}` | ViewSettingsCustomMode;\n\n/**\n * @class\n * ### Overview\n * The `ui5-view-settings-dialog` component helps the user to sort data within a list or a table.\n * It consists of several lists like `Sort order` which is built-in and `Sort By` and `Filter By` lists,\n * for which you must be provide items(`ui5-sort-item` & `ui5-filter-item` respectively)\n * These options can be used to create sorters for a table.\n *\n * The `ui5-view-settings-dialog` interrupts the current application processing as it is the only focused UI element and\n * the main screen is dimmed/blocked.\n * The `ui5-view-settings-dialog` is modal, which means that user action is required before returning to the parent window is possible.\n *\n * ### Structure\n * A `ui5-view-settings-dialog` consists of a header, content, and a footer for action buttons.\n * The `ui5-view-settings-dialog` is usually displayed at the center of the screen.\n *\n * ### Responsive Behavior\n * `ui5-view-settings-dialog` stretches on full screen on phones.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/ViewSettingsDialog.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.16\n * @public\n * @csspart header - Used to style the header.\n */\n@customElement({\n\ttag: \"ui5-view-settings-dialog\",\n\trenderer: jsxRenderer,\n\tstyles: viewSettingsDialogCSS,\n\ttemplate: ViewSettingsDialogTemplate,\n})\n\n/**\n * Fired when confirmation button is activated.\n * @param {String} sortOrder The current sort order selected.\n * @param {String} sortBy The currently selected `ui5-sort-item` text attribute.\n * @param {HTMLElement} sortByItem The currently selected `ui5-sort-item`.\n * @param {Boolean} sortDescending The selected sort order (true = descending, false = ascending).\n * @param {String} groupOrder The current group order selected.\n * @param {String} groupBy The currently selected `ui5-group-item` text attribute.\n * @param {HTMLElement} groupByItem The currently selected `ui5-group-item`.\n * @param {Boolean} groupDescending The selected group order (true = descending, false = ascending).\n * @param {Array} filters The selected filters items.\n * @public\n */\n@event(\"confirm\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when cancel button is activated.\n * @param {String} sortOrder The current sort order selected.\n * @param {String} sortBy The currently selected `ui5-sort-item` text attribute.\n * @param {HTMLElement} sortByItem The currently selected `ui5-sort-item`.\n * @param {Boolean} sortDescending The selected sort order (true = descending, false = ascending).\n * @param {String} groupOrder The current group order selected.\n * @param {String} groupBy The currently selected `ui5-group-item` text attribute.\n * @param {HTMLElement} groupByItem The currently selected `ui5-group-item`.\n * @param {Boolean} groupDescending The selected group order (true = descending, false = ascending).\n * @param {Array} filters The selected filters items.\n * @public\n */\n@event(\"cancel\", {\n\tbubbles: true,\n})\n\n/**\n * Fired before the component is opened.\n * @public\n */\n@event(\"before-open\", {\n\tcancelable: true,\n})\n/**\n * Fired after the dialog is opened.\n * @since 2.0.0\n * @public\n */\n@event(\"open\", {\n\tbubbles: true,\n})\n/**\n * Fired after the dialog is closed.\n * @since 2.0.0\n * @public\n */\n@event(\"close\", {\n\tbubbles: true,\n})\n/**\n * Fired when the Reset button is clicked.\n *\n * **Note:** This event is particularly relevant when the dialog contains custom tabs.\n * By default, the Reset button resets all built-in settings (sort, filter, group) to their\n * initial values. However, the component has no knowledge of the content or state inside\n * custom tabs — it cannot detect what has changed or what the \"default\" values are.\n * Therefore, when this event is fired, it is the application developer's responsibility\n * to listen for it and manually reset the custom tab content to its initial state.\n * @since 2.22.0\n * @public\n */\n@event(\"reset\", {\n\tbubbles: true,\n})\nclass ViewSettingsDialog extends UI5Element {\n\teventDetails!: {\n\t\t\"confirm\": ViewSettingsDialogConfirmEventDetail,\n\t\t\"cancel\": ViewSettingsDialogCancelEventDetail,\n\t\t\"before-open\": void,\n\t\t\"open\": void,\n\t\t\"close\": void,\n\t\t\"reset\": void,\n\t}\n\t/**\n\t * Defines the initial sort order.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tsortDescending = false;\n\n\t/**\n\t * Defines the initial group order.\n\t * @default false\n\t * @since 2.13.0\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tgroupDescending = false;\n\n\t/**\n\t * Indicates if the dialog is open.\n\t * @public\n\t * @default false\n\t * @since 2.0.0\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t/**\n\t * Controls whether the Reset button is always enabled.\n\t *\n\t * By default, the Reset button is enabled only when the built-in settings (Sort, Filter, Group)\n\t * differ from their initial state — the component can detect these changes automatically.\n\t * However, when the dialog contains custom tabs, the component has no way to detect\n\t * whether the custom tab content has been modified by the user.\n\t *\n\t * Set this property to `true` when the user has made changes inside a custom tab, so that\n\t * the Reset button becomes enabled and the user can trigger a reset.\n\t * Set it back to `false` once the custom tab content is back to its initial state\n\t * (e.g. after the user confirms or after a reset is applied).\n\t * @default false\n\t * @public\n\t * @since 2.22.0\n\t */\n\t@property({ type: Boolean })\n\tresetEnabled = false;\n\n\t/**\n\t * Keeps recently focused list in order to focus it on next dialog open.\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_recentlyFocused?: List;\n\n\t/**\n\t * Stores current settings of the dialog.\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_currentSettings: VSDInternalSettings = {\n\t\tsortOrder: [],\n\t\tsortBy: [],\n\t\tfilters: [],\n\t\tgroupOrder: [],\n\t\tgroupBy: [],\n\t};\n\n\t/**\n\t * Stores settings of the dialog before the initial open.\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_initialSettings: VSDInternalSettings = this._currentSettings;\n\n\t/**\n\t * Stores settings of the dialog after confirmation.\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_confirmedSettings: VSDInternalSettings = this._currentSettings;\n\n\t/**\n\t * Defnies the current mode of the component.\n\t * @since 1.0.0-rc.16\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\t_currentMode: ViewSettingsDialogInternalMode = ViewSettingsDialogMode.Sort;\n\n\t/**\n\t * When in Filter By mode, defines whether we need to show the list of keys, or the list with values.\n\t * @since 1.0.0-rc.16\n\t * @private\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\t_filterStepTwo = false;\n\n\t/**\n\t * Defines the list of items against which the user could sort data.\n\t *\n\t * **Note:** If you want to use this slot, you need to import used item: `import \"@ui5/webcomponents-fiori/dist/SortItem.js\";`\n\t * @public\n\t */\n\t@slot()\n\tsortItems!: Slot<SortItem>;\n\n\t/**\n\t * Defines the `filterItems` list.\n\t *\n\t * **Note:** If you want to use this slot, you need to import used item: `import \"@ui5/webcomponents-fiori/dist/FilterItem.js\";`\n\t * @public\n\t */\n\t@slot()\n\tfilterItems!: Slot<FilterItem>;\n\n\t/**\n\t * Defines the list of items against which the user could group data.\n\t *\n\t * **Note:** If you want to use this slot, you need to import used item: `import \"@ui5/webcomponents-fiori/dist/GroupItem.js\";`\n\t * @public\n\t */\n\t@slot()\n\tgroupItems!: Slot<GroupItem>;\n\n\t/**\n\t * Defines custom tabs for the dialog.\n\t *\n\t * The custom tabs are rendered after the built-in tabs (`Sort`, `Filter`, `Group`).\n\t *\n\t * **Note:** If you want to use this slot, you need to import the item: `import \"@ui5/webcomponents-fiori/dist/ViewSettingsDialogCustomTab.js\";`\n\t * @public\n\t * @since 2.22.0\n\t */\n\t@slot({\n\t\ttype: HTMLElement,\n\t\tindividualSlots: true,\n\t\tinvalidateOnChildChange: {\n\t\t\tproperties: true,\n\t\t\tslots: false,\n\t\t},\n\t})\n\tcustomTabs!: Slot<ViewSettingsDialogCustomTab>;\n\n\t@query(\"[ui5-list]\")\n\t_list!: List;\n\n\t@query(\"[ui5-dialog]\")\n\t_dialog?: Dialog;\n\n\t@query(\"[ui5-list][sort-order]\")\n\t_sortOrder?: List;\n\n\t@query(\"[ui5-list][sort-by]\")\n\t_sortBy?: List;\n\n\t@query(\"[ui5-list][group-order]\")\n\t_groupOrder?: List;\n\n\t@query(\"[ui5-list][group-by]\")\n\t_groupBy?: List;\n\n\t@query(\"[ui5-list][filter-list]\")\n\t_filterList?: List;\n\n\t@query(\"[ui5-list][filter-options]\")\n\t_filterOptions?: List;\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\n\tonBeforeRendering() {\n\t\tif (this._currentSettings.filters && this._currentSettings.filters.length) {\n\t\t\tthis._setAdditionalTexts();\n\t\t}\n\n\t\tif (this.shouldBuildSort) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.shouldBuildFilter) {\n\t\t\tthis._currentMode = ViewSettingsDialogMode.Filter;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.shouldBuildGroup) {\n\t\t\tthis._currentMode = ViewSettingsDialogMode.Group;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.shouldBuildCustomTabs && (!this.isModeCustom || !this._selectedCustomTab)) {\n\t\t\tthis._currentMode = this._defaultMode;\n\t\t}\n\t}\n\n\tonInvalidation(changeInfo: ChangeInfo) {\n\t\tif (changeInfo.type === \"slot\") {\n\t\t\tthis._confirmedSettings = this._settings;\n\t\t}\n\t}\n\n\t_setAdditionalTexts() {\n\t\t// Add the additional text to the filter options\n\t\tthis.filterItems.forEach((filter, index) => {\n\t\t\tlet selectedCount = 0;\n\t\t\tfor (let i = 0; i < filter.values.length; i++) {\n\t\t\t\tif (this._currentSettings.filters[index].filterOptions[i].selected) {\n\t\t\t\t\tselectedCount++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfilter.additionalText = !selectedCount ? \"\" : `${selectedCount}`;\n\t\t});\n\t}\n\n\tget _selectedFilter() {\n\t\tfor (let i = 0; i < this._currentSettings.filters.length; i++) {\n\t\t\tif (this._currentSettings.filters[i].selected) {\n\t\t\t\treturn this._currentSettings.filters[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t_selectedFiltersLabel(item: FilterItem) {\n\t\tconst text = item.text ? `${item.text},` : \"\";\n\t\tconst additionalText = item.additionalText ? `${item.additionalText},` : \"\";\n\t\treturn additionalText ? ViewSettingsDialog.i18nBundle.getText(VSD_FILTER_ITEM_LABEL_TEXT, text, additionalText) : text;\n\t}\n\n\tget shouldBuildSort() {\n\t\treturn !!this.sortItems.length;\n\t}\n\n\tget shouldBuildFilter() {\n\t\treturn !!this.filterItems.length;\n\t}\n\n\tget shouldBuildGroup() {\n\t\treturn !!this.groupItems.length;\n\t}\n\n\tget shouldBuildCustomTabs() {\n\t\treturn !!this.customTabs.length;\n\t}\n\n\tget hasPagination() {\n\t\tconst builtInTabsCount = [this.shouldBuildSort, this.shouldBuildFilter, this.shouldBuildGroup]\n\t\t\t.filter(condition => condition)\n\t\t\t.length;\n\n\t\tif (this.shouldBuildCustomTabs) {\n\t\t\treturn builtInTabsCount + this.customTabs.length > 1;\n\t\t}\n\n\t\treturn builtInTabsCount > 1;\n\t}\n\n\tget _defaultMode(): ViewSettingsDialogInternalMode {\n\t\tif (this.shouldBuildSort) {\n\t\t\treturn ViewSettingsDialogMode.Sort;\n\t\t}\n\n\t\tif (this.shouldBuildFilter) {\n\t\t\treturn ViewSettingsDialogMode.Filter;\n\t\t}\n\n\t\tif (this.shouldBuildGroup) {\n\t\t\treturn ViewSettingsDialogMode.Group;\n\t\t}\n\n\t\tif (this.shouldBuildCustomTabs) {\n\t\t\treturn this._customTabMode(this.customTabs[0]);\n\t\t}\n\n\t\treturn ViewSettingsDialogMode.Sort;\n\t}\n\n\tget _selectedCustomTab() {\n\t\tif (!this._isCustomMode(this._currentMode)) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.customTabs.find(tab => this._customTabMode(tab) === this._currentMode);\n\t}\n\n\tget _filterByTitle() {\n\t\tconst selectedFilterText = this._selectedFilter ? this._selectedFilter.text : \"\";\n\t\treturn `${ViewSettingsDialog.i18nBundle.getText(VSD_FILTER_BY)}: ${selectedFilterText}`;\n\t}\n\n\tget _dialogTitle() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_DIALOG_TITLE_SORT);\n\t}\n\n\tget _okButtonLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_SUBMIT_BUTTON);\n\t}\n\n\tget _cancelButtonLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_CANCEL_BUTTON);\n\t}\n\n\tget _resetButtonLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_RESET_BUTTON);\n\t}\n\n\tget _ascendingLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_ORDER_ASCENDING);\n\t}\n\n\tget _descendingLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_ORDER_DESCENDING);\n\t}\n\n\tget _sortOrderLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_SORT_ORDER);\n\t}\n\n\tget _groupOrderLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_GROUP_ORDER);\n\t}\n\n\tget _filterByLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_FILTER_BY);\n\t}\n\n\tget _sortByLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_SORT_BY);\n\t}\n\n\tget _groupByLabel() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_GROUP_BY);\n\t}\n\n\tget _sortButtonTooltip() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_SORT_TOOLTIP);\n\t}\n\n\tget _filterButtonTooltip() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_FILTER_TOOLTIP);\n\t}\n\n\tget _groupButtonTooltip() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_GROUP_TOOLTIP);\n\t}\n\n\tget _resetButtonAction() {\n\t\treturn ViewSettingsDialog.i18nBundle.getText(VSD_RESET_BUTTON_ACTION);\n\t}\n\n\tget _isPhone() {\n\t\treturn isPhone();\n\t}\n\n\tget _sortAscending() {\n\t\treturn !this.sortDescending;\n\t}\n\n\tget _title() {\n\t\treturn this.showBackButton\n\t\t\t? this._filterByTitle\n\t\t\t: this._dialogTitle;\n\t}\n\n\t/**\n\t * Determines disabled state of the `Reset` button.\n\t */\n\tget _disableResetButton() {\n\t\tif (this.resetEnabled) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this._dialog && this._settingsAreInitial && this._filteresAreInitial;\n\t}\n\n\tget _settingsAreInitial() {\n\t\tlet settingsAreInitial = true;\n\t\t[\"sortBy\", \"sortOrder\", \"groupBy\", \"groupOrder\"].forEach(settingsList => {\n\t\t\tthis._currentSettings[settingsList as keyof VSDInternalSettings].forEach((item, index) => {\n\t\t\t\tif (item.selected !== this._initialSettings[settingsList as keyof VSDInternalSettings][index].selected) {\n\t\t\t\t\tsettingsAreInitial = false;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn settingsAreInitial;\n\t}\n\n\tget _filteresAreInitial() {\n\t\tlet filtersAreInitial = true;\n\t\tthis._currentSettings.filters.forEach((filter, index) => {\n\t\t\tfor (let i = 0; i < filter.filterOptions.length; i++) {\n\t\t\t\tif (filter.filterOptions[i].selected !== this._initialSettings.filters[index].filterOptions[i].selected) {\n\t\t\t\t\tfiltersAreInitial = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn filtersAreInitial;\n\t}\n\n\t/**\n\t * Returns the current settings (current state of all lists).\n\t */\n\tget _settings(): VSDInternalSettings {\n\t\treturn {\n\t\t\tsortOrder: JSON.parse(JSON.stringify(this.initSortOrderItems)),\n\t\t\tsortBy: JSON.parse(JSON.stringify(this.initSortByItems)),\n\t\t\tgroupOrder: JSON.parse(JSON.stringify(this.initGroupOrderItems)),\n\t\t\tgroupBy: JSON.parse(JSON.stringify(this.initGroupByItems)),\n\t\t\tfilters: this.filterItems.map(item => {\n\t\t\t\treturn {\n\t\t\t\t\ttext: item.text || \"\",\n\t\t\t\t\tselected: false,\n\t\t\t\t\tfilterOptions: item.values.map(optionValue => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: optionValue.text || \"\",\n\t\t\t\t\t\t\tselected: optionValue.selected,\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t}\n\n\tget initSortByItems() {\n\t\treturn this.sortItems.map((item, index) => {\n\t\t\treturn {\n\t\t\t\ttext: item.text,\n\t\t\t\tselected: item.selected,\n\t\t\t\tindex,\n\t\t\t};\n\t\t});\n\t}\n\n\tget initGroupByItems() {\n\t\treturn this.groupItems.map((item, index) => {\n\t\t\treturn {\n\t\t\t\ttext: item.text,\n\t\t\t\tselected: item.selected,\n\t\t\t\tindex,\n\t\t\t};\n\t\t});\n\t}\n\n\tget initSortOrderItems() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttext: this._ascendingLabel,\n\t\t\t\tselected: !this.sortDescending,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: this._descendingLabel,\n\t\t\t\tselected: this.sortDescending,\n\t\t\t},\n\t\t];\n\t}\n\n\tget initGroupOrderItems() {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttext: this._ascendingLabel,\n\t\t\t\tselected: !this.groupDescending,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: this._descendingLabel,\n\t\t\t\tselected: this.groupDescending,\n\t\t\t},\n\t\t];\n\t}\n\n\tget expandContent() {\n\t\treturn this._filterStepTwo || !this.hasPagination;\n\t}\n\n\tget isModeSort() {\n\t\treturn this._currentMode === ViewSettingsDialogMode.Sort;\n\t}\n\n\tget isModeFilter() {\n\t\treturn this._currentMode === ViewSettingsDialogMode.Filter;\n\t}\n\n\tget isModeGroup() {\n\t\treturn this._currentMode === ViewSettingsDialogMode.Group;\n\t}\n\n\tget isModeCustom() {\n\t\treturn this._isCustomMode(this._currentMode);\n\t}\n\n\tget showBackButton() {\n\t\treturn this.isModeFilter && this._filterStepTwo;\n\t}\n\n\t/**\n\t * Shows the dialog.\n\t */\n\tbeforeDialogOpen(): void {\n\t\t// first time opening - initialize settings\n\t\tif (this._currentSettings.sortOrder.length === 0) {\n\t\t\tthis._initialSettings = this._settings;\n\t\t\tthis._currentSettings = this._settings;\n\t\t\tthis._confirmedSettings = this._settings;\n\t\t} else {\n\t\t\tthis._restoreSettings(this._confirmedSettings);\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"before-open\");\n\t}\n\n\tafterDialogOpen(): void {\n\t\tthis._list?.focusFirstItem();\n\n\t\tthis._focusRecentlyUsedControl();\n\n\t\tthis.fireDecoratorEvent(\"open\");\n\t}\n\n\tafterDialogClose(): void {\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\t_handleModeChange(e: CustomEvent) { // use SegmentedButton event when done\n\t\tconst mode = (e.detail.selectedItems[0].getAttribute(\"data-mode\") as string | null);\n\n\t\tif (!mode || !this._isValidMode(mode)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._currentMode = mode;\n\t}\n\n\t_handleFilterValueItemClick(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tconst itemText = e.detail.targetItem.innerText;\n\n\t\t// Update the component state\n\t\tthis._currentSettings.filters = this._currentSettings.filters.map(filter => {\n\t\t\tif (filter.selected) {\n\t\t\t\tfilter.filterOptions.forEach(option => {\n\t\t\t\t\tif (option.text === itemText) {\n\t\t\t\t\t\toption.selected = !option.selected;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn filter;\n\t\t});\n\n\t\tthis._setSelectedProp(itemText);\n\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(this._currentSettings));\n\t}\n\n\t/**\n\t * Sets the selected property of the clicked item.\n\t * @private\n\t */\n\t_setSelectedProp(itemText: string) {\n\t\tthis.filterItems.forEach(filterItem => {\n\t\t\tfilterItem.values.forEach(option => {\n\t\t\t\tif (option.text === itemText) {\n\t\t\t\t\toption.selected = !option.selected;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tasync _navigateToFilters() {\n\t\tthis._filterStepTwo = false;\n\t\tawait renderFinished();\n\t\tif (this._filterList) {\n\t\t\tthis._filterList.focusFirstItem();\n\t\t}\n\t}\n\n\tasync _changeCurrentFilter(e: CustomEvent<ListItemClickEventDetail>) {\n\t\tthis._filterStepTwo = true;\n\t\tthis._currentSettings.filters = this._currentSettings.filters.map(filter => {\n\t\t\tfilter.selected = filter.text === e.detail.item.innerText;\n\t\t\treturn filter;\n\t\t});\n\t\tawait renderFinished();\n\t\tif (this._filterOptions) {\n\t\t\tconst selectedItems = this._filterOptions.getSelectedItems();\n\t\t\tif (selectedItems.length) {\n\t\t\t\tselectedItems[0].focus();\n\t\t\t} else {\n\t\t\t\tthis._filterOptions.focusFirstItem();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Sets focus on recently used control within the dialog.\n\t */\n\t_focusRecentlyUsedControl() {\n\t\tif (!this._recentlyFocused || !Object.keys(this._recentlyFocused).length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst recentlyFocusedSelectedItems = this._recentlyFocused.getSelectedItems();\n\t\tif (recentlyFocusedSelectedItems.length) {\n\t\t\trecentlyFocusedSelectedItems[0].focus();\n\t\t}\n\t}\n\n\t/**\n\t * Stores current settings as confirmed and fires `confirm` event.\n\t */\n\t_confirmSettings() {\n\t\tthis.open = false;\n\t\tthis._confirmedSettings = this._currentSettings;\n\n\t\tthis.fireDecoratorEvent(\"confirm\", this.eventsParams);\n\t}\n\n\t/**\n\t * Sets current settings to recently confirmed ones and fires `cancel` event.\n\t */\n\t_cancelSettings() {\n\t\tthis._restoreSettings(this._confirmedSettings);\n\n\t\tthis.fireDecoratorEvent(\"cancel\", this.eventsParams);\n\t\tthis.open = false;\n\t}\n\n\tget eventsParams() {\n\t\tconst _currentSortOrderSelected = this._currentSettings.sortOrder.filter(item => item.selected)[0],\n\t\t\t_currentSortBySelected = this._currentSettings.sortBy.filter(item => item.selected)[0],\n\t\t\t_currentGroupOrderSelected = this._currentSettings.groupOrder.filter(item => item.selected)[0],\n\t\t\t_currentGroupBySelected = this._currentSettings.groupBy.filter(item => item.selected)[0],\n\t\t\tsortOrder = _currentSortOrderSelected && (_currentSortOrderSelected.text || \"\"),\n\t\t\tsortDescending = !this._currentSettings.sortOrder[0].selected,\n\t\t\tsortBy = _currentSortBySelected && (_currentSortBySelected.text || \"\"),\n\t\t\tsortByElementIndex = _currentSortBySelected && _currentSortBySelected.index,\n\t\t\tsortByItem = this.sortItems[sortByElementIndex],\n\t\t\tgroupOrder = _currentGroupOrderSelected && (_currentGroupOrderSelected.text || \"\"),\n\t\t\tgroupDescending = !this._currentSettings.groupOrder[0].selected,\n\t\t\tgroupBy = _currentGroupBySelected && (_currentGroupBySelected.text || \"\"),\n\t\t\tgroupByElementIndex = _currentGroupBySelected && _currentGroupBySelected.index,\n\t\t\tgroupByItem = this.groupItems[groupByElementIndex],\n\t\t\tselectedFilterItems = this.filterItems.filter(filterItem => filterItem.values.some(item => item.selected));\n\t\treturn {\n\t\t\tsortOrder,\n\t\t\tsortDescending,\n\t\t\tsortBy,\n\t\t\tsortByItem,\n\t\t\tgroupOrder,\n\t\t\tgroupDescending,\n\t\t\tgroupBy,\n\t\t\tgroupByItem,\n\t\t\tfilters: this.selectedFilters,\n\t\t\tfilterItems: selectedFilterItems,\n\t\t};\n\t}\n\n\tget selectedFilters() {\n\t\tconst result: VSDFilters = [];\n\n\t\tthis._currentSettings.filters.forEach(filter => {\n\t\t\tconst selectedOptions: Array<string> = [];\n\n\t\t\tfilter.filterOptions.forEach(option => {\n\t\t\t\tif (option.selected) {\n\t\t\t\t\tselectedOptions.push(option.text || \"\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (selectedOptions.length) {\n\t\t\t\tresult.push({});\n\t\t\t\tresult[result.length - 1][filter.text || \"\"] = selectedOptions;\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * If the dialog is closed by [Escape] key, do the same as if the `Cancel` button is pressed.\n\t * @param evt\n\t */\n\t_restoreConfirmedOnEscape(evt: CustomEvent) { // Dialog#before-close\n\t\tif (evt.detail.escPressed) {\n\t\t\tthis._cancelSettings();\n\t\t\tthis._currentMode = this._defaultMode;\n\t\t\tthis._filterStepTwo = false;\n\t\t}\n\t}\n\n\t/**\n\t * Resets the control settings to their initial state.\n\t */\n\t_resetSettings() {\n\t\tthis._restoreSettings(this._initialSettings);\n\t\tthis._recentlyFocused = this._sortOrder!;\n\t\tthis._focusRecentlyUsedControl();\n\t\tannounce(this._resetButtonAction, InvisibleMessageMode.Assertive);\n\t\tthis.fireDecoratorEvent(\"reset\");\n\t}\n\n\t/**\n\t * Sets current settings to ones passed as `settings` argument.\n\t * @param settings\n\t */\n\t_restoreSettings(settings: VSDInternalSettings) {\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(settings));\n\t\tthis._currentMode = this._defaultMode;\n\t\tthis._filterStepTwo = false;\n\t}\n\n\tisCurrentCustomTabMode(tab: ViewSettingsDialogCustomTab) {\n\t\treturn this._currentMode === this._customTabMode(tab);\n\t}\n\n\t_customTabMode(tab: ViewSettingsDialogCustomTab): ViewSettingsCustomMode {\n\t\treturn tab._individualSlot as ViewSettingsCustomMode;\n\t}\n\n\t_isCustomMode(mode: string): mode is ViewSettingsCustomMode {\n\t\treturn mode.startsWith(CUSTOM_MODE_PREFIX);\n\t}\n\n\t_isValidMode(mode: string): mode is ViewSettingsDialogInternalMode {\n\t\tif (mode === (ViewSettingsDialogMode.Sort as string)\n\t\t\t|| mode === (ViewSettingsDialogMode.Filter as string)\n\t\t\t|| mode === (ViewSettingsDialogMode.Group as string)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this._isCustomMode(mode)) {\n\t\t\treturn this.customTabs.some(tab => this._customTabMode(tab) === mode);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Stores `Sort Order` list as recently used control and its selected item in current state.\n\t */\n\t_onSortOrderChange(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tthis._recentlyFocused = this._sortOrder!;\n\t\tthis._currentSettings.sortOrder = this.initSortOrderItems.map(item => {\n\t\t\titem.selected = item.text === e.detail.targetItem.innerText;\n\t\t\treturn item;\n\t\t});\n\n\t\t// Invalidate\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(this._currentSettings));\n\t}\n\n\t/**\n\t * Stores `Sort By` list as recently used control and its selected item in current state.\n\t */\n\t_onSortByChange(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tconst selectedItemIndex = Number(e.detail.targetItem.getAttribute(\"data-ui5-external-action-item-index\"));\n\t\tthis._recentlyFocused = this._sortBy!;\n\t\tthis._currentSettings.sortBy = this.initSortByItems.map((item, index) => {\n\t\t\titem.selected = index === selectedItemIndex;\n\t\t\treturn item;\n\t\t});\n\t\t// Invalidate\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(this._currentSettings));\n\t}\n\n\t/**\n\t * Stores `Group Order` list as recently used control and its selected item in current state.\n\t */\n\t_onGroupOrderChange(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tthis._recentlyFocused = this._groupOrder!;\n\t\tthis._currentSettings.groupOrder = this.initGroupOrderItems.map(item => {\n\t\t\titem.selected = item.text === e.detail.targetItem.innerText;\n\t\t\treturn item;\n\t\t});\n\n\t\t// Invalidate\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(this._currentSettings));\n\t}\n\n\t/**\n\t * Stores `Group By` list as recently used control and its selected item in current state.\n\t */\n\t_onGroupByChange(e: CustomEvent<ListSelectionChangeEventDetail>) {\n\t\tconst selectedItemIndex = Number(e.detail.targetItem.getAttribute(\"data-ui5-external-action-item-index\"));\n\t\tthis._recentlyFocused = this._groupBy!;\n\t\tthis._currentSettings.groupBy = this.initGroupByItems.map((item, index) => {\n\t\t\titem.selected = index === selectedItemIndex;\n\t\t\treturn item;\n\t\t});\n\n\t\t// Invalidate\n\t\tthis._currentSettings = JSON.parse(JSON.stringify(this._currentSettings));\n\t}\n\n\t/**\n\t * Sets a JavaScript object, as settings to the `ui5-view-settings-dialog`.\n\t * This method can be used after the dialog is initially open, as the dialog needs\n\t * to set its initial settings.\n\t * The `ui5-view-settings-dialog` throws an event called \"before-open\",\n\t * which can be used as a trigger point.\n\t * The object should have the following format:\n\t * @param settings - predefined settings.\n\t * @public\n\t */\n\tsetConfirmedSettings(settings: VSDSettings): void {\n\t\tif (settings && this._dialog && !this._dialog.open) {\n\t\t\tconst tempSettings: VSDInternalSettings = JSON.parse(JSON.stringify(this._confirmedSettings));\n\t\t\tif (settings.sortOrder) {\n\t\t\t\tfor (let i = 0; i < tempSettings.sortOrder.length; i++) {\n\t\t\t\t\tif (tempSettings.sortOrder[i].text === settings.sortOrder) {\n\t\t\t\t\t\ttempSettings.sortOrder[i].selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttempSettings.sortOrder[i].selected = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (settings.sortBy) {\n\t\t\t\tfor (let i = 0; i < tempSettings.sortBy.length; i++) {\n\t\t\t\t\tif (tempSettings.sortBy[i].text === settings.sortBy) {\n\t\t\t\t\t\ttempSettings.sortBy[i].selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttempSettings.sortBy[i].selected = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (settings.groupOrder) {\n\t\t\t\tfor (let i = 0; i < tempSettings.groupOrder.length; i++) {\n\t\t\t\t\tif (tempSettings.groupOrder[i].text === settings.groupOrder) {\n\t\t\t\t\t\ttempSettings.groupOrder[i].selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttempSettings.groupOrder[i].selected = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (settings.groupBy) {\n\t\t\t\tfor (let i = 0; i < tempSettings.groupBy.length; i++) {\n\t\t\t\t\tif (tempSettings.groupBy[i].text === settings.groupBy) {\n\t\t\t\t\t\ttempSettings.groupBy[i].selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttempSettings.groupBy[i].selected = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (settings.filters) {\n\t\t\t\tconst inputFilters: VSDFilter = {};\n\t\t\t\tfor (let i = 0; i < settings.filters.length; i++) {\n\t\t\t\t\tinputFilters[Object.keys(settings.filters[i])[0]] = settings.filters[i][Object.keys(settings.filters[i])[0]];\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < tempSettings.filters.length; i++) {\n\t\t\t\t\tfor (let j = 0; j < tempSettings.filters[i].filterOptions.length; j++) {\n\t\t\t\t\t\tif (inputFilters[tempSettings.filters[i].text || \"\"] && inputFilters[tempSettings.filters[i].text || \"\"].indexOf(tempSettings.filters[i].filterOptions[j].text || \"\") > -1) {\n\t\t\t\t\t\t\ttempSettings.filters[i].filterOptions[j].selected = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttempSettings.filters[i].filterOptions[j].selected = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._confirmedSettings = JSON.parse(JSON.stringify(tempSettings));\n\t\t}\n\t}\n}\n\nViewSettingsDialog.define();\n\nexport default ViewSettingsDialog;\nexport type {\n\tViewSettingsDialogConfirmEventDetail,\n\tViewSettingsDialogCancelEventDetail,\n\tVSDSettings,\n};\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
2
|
import type { DefaultSlot } from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
3
|
+
import "@ui5/webcomponents-icons/dist/action-settings.js";
|
|
3
4
|
/**
|
|
4
5
|
* @class
|
|
5
6
|
*
|
|
@@ -20,13 +21,13 @@ import type { DefaultSlot } from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
|
20
21
|
*/
|
|
21
22
|
declare class ViewSettingsDialogCustomTab extends UI5Element {
|
|
22
23
|
/**
|
|
23
|
-
* Defines the title of the custom tab.
|
|
24
|
+
* Defines the title text of the custom tab.
|
|
24
25
|
*
|
|
25
26
|
* **Note:** It is displayed in the dialog header when this tab is selected.
|
|
26
27
|
* @default ""
|
|
27
28
|
* @public
|
|
28
29
|
*/
|
|
29
|
-
|
|
30
|
+
titleText: string;
|
|
30
31
|
/**
|
|
31
32
|
* Defines the tooltip of the custom tab button.
|
|
32
33
|
*
|
|
@@ -36,10 +37,9 @@ declare class ViewSettingsDialogCustomTab extends UI5Element {
|
|
|
36
37
|
*/
|
|
37
38
|
tooltip: string;
|
|
38
39
|
/**
|
|
39
|
-
* Defines the icon of the custom tab.
|
|
40
|
+
* Defines the icon of the custom tab button in the segmented button.
|
|
40
41
|
*
|
|
41
|
-
*
|
|
42
|
-
* @default ""
|
|
42
|
+
* @default "action-settings"
|
|
43
43
|
* @public
|
|
44
44
|
*/
|
|
45
45
|
icon: string;
|
|
@@ -10,6 +10,7 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
|
10
10
|
import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
|
|
11
11
|
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
12
12
|
import ViewSettingsDialogCustomTabTemplate from "./ViewSettingsDialogCustomTabTemplate.js";
|
|
13
|
+
import "@ui5/webcomponents-icons/dist/action-settings.js";
|
|
13
14
|
/**
|
|
14
15
|
* @class
|
|
15
16
|
*
|
|
@@ -32,13 +33,13 @@ let ViewSettingsDialogCustomTab = class ViewSettingsDialogCustomTab extends UI5E
|
|
|
32
33
|
constructor() {
|
|
33
34
|
super(...arguments);
|
|
34
35
|
/**
|
|
35
|
-
* Defines the title of the custom tab.
|
|
36
|
+
* Defines the title text of the custom tab.
|
|
36
37
|
*
|
|
37
38
|
* **Note:** It is displayed in the dialog header when this tab is selected.
|
|
38
39
|
* @default ""
|
|
39
40
|
* @public
|
|
40
41
|
*/
|
|
41
|
-
this.
|
|
42
|
+
this.titleText = "";
|
|
42
43
|
/**
|
|
43
44
|
* Defines the tooltip of the custom tab button.
|
|
44
45
|
*
|
|
@@ -48,18 +49,17 @@ let ViewSettingsDialogCustomTab = class ViewSettingsDialogCustomTab extends UI5E
|
|
|
48
49
|
*/
|
|
49
50
|
this.tooltip = "";
|
|
50
51
|
/**
|
|
51
|
-
* Defines the icon of the custom tab.
|
|
52
|
+
* Defines the icon of the custom tab button in the segmented button.
|
|
52
53
|
*
|
|
53
|
-
*
|
|
54
|
-
* @default ""
|
|
54
|
+
* @default "action-settings"
|
|
55
55
|
* @public
|
|
56
56
|
*/
|
|
57
|
-
this.icon = "";
|
|
57
|
+
this.icon = "action-settings";
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
60
|
__decorate([
|
|
61
61
|
property({ type: String })
|
|
62
|
-
], ViewSettingsDialogCustomTab.prototype, "
|
|
62
|
+
], ViewSettingsDialogCustomTab.prototype, "titleText", void 0);
|
|
63
63
|
__decorate([
|
|
64
64
|
property({ type: String })
|
|
65
65
|
], ViewSettingsDialogCustomTab.prototype, "tooltip", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewSettingsDialogCustomTab.js","sourceRoot":"","sources":["../src/ViewSettingsDialogCustomTab.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAEpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,wDAAwD,CAAC;AAC1E,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,mCAAmC,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"ViewSettingsDialogCustomTab.js","sourceRoot":"","sources":["../src/ViewSettingsDialogCustomTab.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAEpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,wDAAwD,CAAC;AAC1E,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,mCAAmC,MAAM,0CAA0C,CAAC;AAC3F,OAAO,kDAAkD,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AAMH,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,UAAU;IAApD;;QACC;;;;;;WAMG;QAEH,cAAS,GAAG,EAAE,CAAC;QAEf;;;;;;WAMG;QAEH,YAAO,GAAG,EAAE,CAAC;QAEb;;;;;WAKG;QAEH,SAAI,GAAG,iBAAiB,CAAC;IAQ1B,CAAC;CAAA,CAAA;AA3BA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8DACZ;AAUf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4DACd;AASb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yDACF;AAOzB;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;4DACV;AAnCvB,2BAA2B;IALhC,aAAa,CAAC;QACd,GAAG,EAAE,qCAAqC;QAC1C,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,mCAAmC;KAC7C,CAAC;GACI,2BAA2B,CAoChC;AAED,2BAA2B,CAAC,MAAM,EAAE,CAAC;AAErC,eAAe,2BAA2B,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport ViewSettingsDialogCustomTabTemplate from \"./ViewSettingsDialogCustomTabTemplate.js\";\nimport \"@ui5/webcomponents-icons/dist/action-settings.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-view-settings-dialog-custom-tab` component allows defining custom tabs for the `ui5-view-settings-dialog`.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-fiori/dist/ViewSettingsDialogCustomTab.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @since 2.22.0\n * @public\n * @abstract\n * @slot {Node[]} default - Defines the custom tab content.\n */\n@customElement({\n\ttag: \"ui5-view-settings-dialog-custom-tab\",\n\trenderer: jsxRenderer,\n\ttemplate: ViewSettingsDialogCustomTabTemplate,\n})\nclass ViewSettingsDialogCustomTab extends UI5Element {\n\t/**\n\t * Defines the title text of the custom tab.\n\t *\n\t * **Note:** It is displayed in the dialog header when this tab is selected.\n\t * @default \"\"\n\t * @public\n\t */\n\t@property({ type: String })\n\ttitleText = \"\";\n\n\t/**\n\t * Defines the tooltip of the custom tab button.\n\t *\n\t * **Note:** It is shown on the segmented button item.\n\t * @default \"\"\n\t * @public\n\t */\n\t@property({ type: String })\n\ttooltip = \"\";\n\n\t/**\n\t * Defines the icon of the custom tab button in the segmented button.\n\t *\n\t * @default \"action-settings\"\n\t * @public\n\t */\n\t@property({ type: String })\n\ticon = \"action-settings\";\n\n\t/**\n\t * Defines the custom tab content.\n\t * @public\n\t */\n\t@slot({ type: Node, \"default\": true })\n\tcontent!: DefaultSlot<Node>;\n}\n\nViewSettingsDialogCustomTab.define();\n\nexport default ViewSettingsDialogCustomTab;\n"]}
|
|
@@ -26,7 +26,7 @@ function _getSplitButtonItems() {
|
|
|
26
26
|
buttonItems.push(_jsx(SegmentedButtonItem, { selected: this.isModeGroup, icon: groupIcon, "data-mode": "Group", tooltip: this._groupButtonTooltip }));
|
|
27
27
|
}
|
|
28
28
|
if (this.shouldBuildCustomTabs) {
|
|
29
|
-
this.
|
|
29
|
+
this.customTabs.forEach(customTab => {
|
|
30
30
|
buttonItems.push(_jsx(SegmentedButtonItem, { selected: this.isCurrentCustomTabMode(customTab), "data-mode": this._customTabMode(customTab), tooltip: customTab.tooltip, icon: customTab.icon }));
|
|
31
31
|
});
|
|
32
32
|
}
|
|
@@ -36,7 +36,7 @@ function ViewSettingsDialogTemplateContent() {
|
|
|
36
36
|
return (_jsxs("div", { class: {
|
|
37
37
|
"ui5-vsd-content": true,
|
|
38
38
|
"ui5-vsd-content-expand": this.expandContent,
|
|
39
|
-
}, children: [this.shouldBuildSort && this.isModeSort && (ViewSettingsDialogSortAndGroupTemplate.call(this, true)), this.shouldBuildFilter && this.isModeFilter && (ViewSettingsDialogFilterTemplate.call(this)), this.shouldBuildGroup && this.isModeGroup && (ViewSettingsDialogSortAndGroupTemplate.call(this, false)), this.isModeCustom && this._selectedCustomTab && (_jsxs("div", { class: "ui5-vsd-custom-tab-content", children: [this._selectedCustomTab.
|
|
39
|
+
}, children: [this.shouldBuildSort && this.isModeSort && (ViewSettingsDialogSortAndGroupTemplate.call(this, true)), this.shouldBuildFilter && this.isModeFilter && (ViewSettingsDialogFilterTemplate.call(this)), this.shouldBuildGroup && this.isModeGroup && (ViewSettingsDialogSortAndGroupTemplate.call(this, false)), this.isModeCustom && this._selectedCustomTab && (_jsxs("div", { class: "ui5-vsd-custom-tab-content", children: [this._selectedCustomTab.titleText && (_jsx("div", { class: "ui5-vsd-custom-tab-title", children: this._selectedCustomTab.titleText })), _jsx("slot", { class: "ui5-vsd-custom-tab-slot", name: this._selectedCustomTab._individualSlot })] })), _jsx("div", { class: "ui5-vsd-hidden-tabs", children: this.customTabs
|
|
40
40
|
.filter(tab => tab !== this._selectedCustomTab)
|
|
41
41
|
.map(tab => (_jsx("slot", { name: tab._individualSlot }))) })] }));
|
|
42
42
|
}
|