@openremote/or-mwc-components 1.8.0-snapshot.20250725120000 → 1.8.0-snapshot.20250725123024
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/README.md +32 -32
- package/build.gradle +19 -19
- package/custom-elements.json +4 -4
- package/lib/or-mwc-dialog.js +76 -329
- package/lib/or-mwc-drawer.js +10 -114
- package/lib/or-mwc-input.js +439 -1760
- package/lib/or-mwc-list.js +71 -283
- package/lib/or-mwc-menu.js +45 -237
- package/lib/or-mwc-snackbar.d.ts +1 -1
- package/lib/or-mwc-snackbar.js +17 -141
- package/lib/or-mwc-table.js +245 -685
- package/lib/or-mwc-tabs.js +53 -173
- package/lib/style.js +121 -125
- package/package.json +5 -5
- package/rspack.config.js +7 -7
- package/src/or-mwc-dialog.ts +374 -374
- package/src/or-mwc-drawer.ts +100 -100
- package/src/or-mwc-input.ts +1876 -1876
- package/src/or-mwc-list.ts +335 -335
- package/src/or-mwc-menu.ts +279 -279
- package/src/or-mwc-snackbar.ts +157 -157
- package/src/or-mwc-table.ts +712 -712
- package/src/or-mwc-tabs.ts +175 -175
- package/src/style.ts +125 -125
- package/tsconfig.json +15 -15
- package/tsconfig.tsbuildinfo +1 -1
package/lib/or-mwc-list.js
CHANGED
|
@@ -1,283 +1,71 @@
|
|
|
1
|
-
var __decorate =
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const text = listItem.text !== undefined ? listItem.text : listItem.value;
|
|
73
|
-
const secondaryText = listItem.secondaryText;
|
|
74
|
-
let role = "menuitem";
|
|
75
|
-
let ariaSelected;
|
|
76
|
-
let ariaChecked;
|
|
77
|
-
let tabIndex;
|
|
78
|
-
let textTemplate = ``;
|
|
79
|
-
let leftTemplate = ``;
|
|
80
|
-
let rightTemplate = ``;
|
|
81
|
-
let icon = listItem.icon;
|
|
82
|
-
let selectedClassName = "mdc-list-item--selected";
|
|
83
|
-
translate = translate || item.translate;
|
|
84
|
-
if (multiSelect && type === ListType.MULTI_TICK) {
|
|
85
|
-
icon = isSelected ? "checkbox-marked" : "checkbox-blank-outline";
|
|
86
|
-
}
|
|
87
|
-
if (type === ListType.MULTI_TICK || icon) {
|
|
88
|
-
leftTemplate = html `
|
|
89
|
-
<span class="mdc-list-item__graphic">
|
|
90
|
-
<or-icon icon="${icon}"></or-icon>
|
|
91
|
-
</span>
|
|
92
|
-
`;
|
|
93
|
-
}
|
|
94
|
-
if (listItem.trailingIcon) {
|
|
95
|
-
rightTemplate = html `
|
|
96
|
-
<span class="mdc-list-item__meta" aria-hidden="true">
|
|
97
|
-
<or-icon icon="${listItem.trailingIcon}"></or-icon>
|
|
98
|
-
</span>
|
|
99
|
-
`;
|
|
100
|
-
}
|
|
101
|
-
switch (type) {
|
|
102
|
-
case ListType.SELECT:
|
|
103
|
-
ariaSelected = isSelected ? "true" : "false";
|
|
104
|
-
tabIndex = isSelected || ((!selectedValues || selectedValues.length === 0) && index === 0) ? "0" : undefined;
|
|
105
|
-
role = "option";
|
|
106
|
-
break;
|
|
107
|
-
case ListType.RADIO:
|
|
108
|
-
ariaChecked = isSelected ? "true" : "false";
|
|
109
|
-
role = "radio";
|
|
110
|
-
leftTemplate = html `
|
|
111
|
-
<span class="mdc-list-item__graphic">
|
|
112
|
-
<div class="mdc-radio">
|
|
113
|
-
<input class="mdc-radio__native-control" id="radio-item-${index + 1}" type="radio" value="${value}" />
|
|
114
|
-
<div class="mdc-radio__background">
|
|
115
|
-
<div class="mdc-radio__outer-circle"></div>
|
|
116
|
-
<div class="mdc-radio__inner-circle"></div>
|
|
117
|
-
</div>
|
|
118
|
-
</div>
|
|
119
|
-
</span>
|
|
120
|
-
`;
|
|
121
|
-
break;
|
|
122
|
-
case ListType.MULTI_CHECKBOX:
|
|
123
|
-
ariaChecked = isSelected ? "true" : "false";
|
|
124
|
-
role = "checkbox";
|
|
125
|
-
leftTemplate = html `
|
|
126
|
-
<div class="mdc-checkbox">
|
|
127
|
-
<input type="checkbox" class="mdc-checkbox__native-control" />
|
|
128
|
-
<div class="mdc-checkbox__background">
|
|
129
|
-
<svg class="mdc-checkbox__checkmark" viewBox="0 0 24 24">
|
|
130
|
-
<path class="mdc-checkbox__checkmark-path" fill="none" d="M1.73,12.91 8.1,19.28 22.79,4.59"/>
|
|
131
|
-
</svg>
|
|
132
|
-
<div class="mdc-checkbox__mixedmark"></div>
|
|
133
|
-
</div>
|
|
134
|
-
</div>
|
|
135
|
-
`;
|
|
136
|
-
break;
|
|
137
|
-
case ListType.MULTI_TICK:
|
|
138
|
-
ariaChecked = isSelected ? "true" : "false";
|
|
139
|
-
selectedClassName = "mdc-list-item--selected";
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
if (text) {
|
|
143
|
-
if (secondaryText !== undefined) {
|
|
144
|
-
textTemplate = html `
|
|
145
|
-
<span class="mdc-list-item__text">
|
|
146
|
-
<span class="mdc-list-item__primary-text">${translate && !!text ? html `<or-translate value="${text}"></or-translate>` : text}</span>
|
|
147
|
-
<span class="mdc-list-item__secondary-text">${translate && !!secondaryText ? html `<or-translate value="${secondaryText}"></or-translate>` : secondaryText}</span>
|
|
148
|
-
</span>
|
|
149
|
-
`;
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
if (type === ListType.RADIO) {
|
|
153
|
-
textTemplate = html `<label class="mdc-list-item__text" for="radio-item-${index + 1}">${translate && !!text ? html `<or-translate value="${text}"></or-translate>` : text}</label>`;
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
textTemplate = html `<span class="mdc-list-item__text" title="${translate && !!text ? i18next.t(text) : text}">${translate && !!text ? html `<or-translate value="${text}"></or-translate>` : text}</span>`;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return html `
|
|
161
|
-
<li @click="${(e) => { itemClickCallback && itemClickCallback(e, item); }}" style="${listItem.styleMap ? styleMap(listItem.styleMap) : ""}" class="mdc-list-item ${isSelected ? selectedClassName : ""}" role="${ifDefined(role)}" tabindex="${ifDefined(tabIndex)}" aria-checked="${ifDefined(ariaChecked)}" aria-selected="${ifDefined(ariaSelected)}" data-value="${value}">
|
|
162
|
-
<span class="mdc-list-item__ripple"></span>
|
|
163
|
-
${leftTemplate}
|
|
164
|
-
${textTemplate}
|
|
165
|
-
${rightTemplate}
|
|
166
|
-
</li>
|
|
167
|
-
`;
|
|
168
|
-
}
|
|
169
|
-
// language=CSS
|
|
170
|
-
const style = css `
|
|
171
|
-
:host {
|
|
172
|
-
white-space: nowrap;
|
|
173
|
-
--internal-or-mwc-input-color: var(--or-mwc-input-color, var(--or-app-color4, ${unsafeCSS(DefaultColor4)}));
|
|
174
|
-
--internal-or-mwc-input-text-color: var(--or-mwc-input-text-color, var(--or-app-color8, ${unsafeCSS(DefaultColor8)}));
|
|
175
|
-
|
|
176
|
-
--mdc-theme-primary: var(--internal-or-mwc-input-color);
|
|
177
|
-
--mdc-theme-on-primary: var(--internal-or-mwc-input-text-color);
|
|
178
|
-
--mdc-theme-secondary: var(--internal-or-mwc-input-color);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
.mdc-list-item__graphic {
|
|
182
|
-
margin-right: 16px;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
a {
|
|
186
|
-
text-decoration: none;
|
|
187
|
-
color: rgba(0, 0, 0, 0.87);
|
|
188
|
-
}
|
|
189
|
-
`;
|
|
190
|
-
let OrMwcList = class OrMwcList extends LitElement {
|
|
191
|
-
static get styles() {
|
|
192
|
-
return [
|
|
193
|
-
css `${unsafeCSS(listStyle)}`,
|
|
194
|
-
css `${unsafeCSS(checkboxStyle)}`,
|
|
195
|
-
style
|
|
196
|
-
];
|
|
197
|
-
}
|
|
198
|
-
constructor() {
|
|
199
|
-
super();
|
|
200
|
-
this.type = ListType.SELECT;
|
|
201
|
-
}
|
|
202
|
-
disconnectedCallback() {
|
|
203
|
-
super.disconnectedCallback();
|
|
204
|
-
if (this._mdcComponent) {
|
|
205
|
-
this._mdcComponent.destroy();
|
|
206
|
-
this._mdcComponent = undefined;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
shouldUpdate(_changedProperties) {
|
|
210
|
-
if (this._mdcComponent && _changedProperties.has("values")) {
|
|
211
|
-
if (!Util.objectsEqual(this.values, _changedProperties.get("values"))) {
|
|
212
|
-
const vals = this.values ? Array.isArray(this.values) ? this.values : [this.values] : [];
|
|
213
|
-
this.setSelectedItems(this.values && this.listItems ? this.listItems.filter((li) => li && (vals === null || vals === void 0 ? void 0 : vals.includes(li.value))) : undefined);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
return true;
|
|
217
|
-
}
|
|
218
|
-
render() {
|
|
219
|
-
const content = !this.listItems ? html `` : html `${this.listItems.map((listItem, index) => getItemTemplate(listItem, index, (Array.isArray(this.values) ? this.values : this.values ? [this.values] : []), this.type))}`;
|
|
220
|
-
const isTwoLine = this.listItems && this.listItems.some((item) => item && !!item.secondaryText);
|
|
221
|
-
return getListTemplate(this.type, content, isTwoLine, undefined, (ev) => this._onSelected(ev));
|
|
222
|
-
}
|
|
223
|
-
firstUpdated(_changedProperties) {
|
|
224
|
-
super.firstUpdated(_changedProperties);
|
|
225
|
-
if (this._mdcElem) {
|
|
226
|
-
this._mdcComponent = new MDCList(this._mdcElem);
|
|
227
|
-
if (this.type === ListType.SELECT || this.type === ListType.RADIO) {
|
|
228
|
-
this._mdcComponent.singleSelection = true;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
get selectedItems() {
|
|
233
|
-
if (!this._mdcComponent) {
|
|
234
|
-
return [];
|
|
235
|
-
}
|
|
236
|
-
const selectedIndexes = Array.isArray(this._mdcComponent.selectedIndex) ? this._mdcComponent.selectedIndex : [this._mdcComponent.selectedIndex];
|
|
237
|
-
const items = this.listItems ? this.listItems.filter((item) => item !== null) : [];
|
|
238
|
-
return selectedIndexes.map((index) => items[index]);
|
|
239
|
-
}
|
|
240
|
-
setSelectedItems(items) {
|
|
241
|
-
if (!this._mdcComponent || !this.listItems) {
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
if (!items) {
|
|
245
|
-
this._mdcComponent.selectedIndex = -1;
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
const itemArr = (!Array.isArray(items) ? [items] : items).map((item) => typeof (item) === "string" ? item : item.value);
|
|
249
|
-
const listItems = this.listItems.filter((item) => item !== null);
|
|
250
|
-
const indexes = listItems.reduce((indexes, listItem, index) => {
|
|
251
|
-
if (listItem && itemArr.includes(listItem.value)) {
|
|
252
|
-
indexes.push(index);
|
|
253
|
-
}
|
|
254
|
-
return indexes;
|
|
255
|
-
}, []);
|
|
256
|
-
this._mdcComponent.selectedIndex = this.type === ListType.MULTI_CHECKBOX ? indexes : indexes.length >= 1 ? indexes[0] : -1;
|
|
257
|
-
}
|
|
258
|
-
_onSelected(ev) {
|
|
259
|
-
this.values = this.selectedItems.map((item) => item.value);
|
|
260
|
-
ev.stopPropagation();
|
|
261
|
-
this.dispatchEvent(new OrMwcListChangedEvent(this.selectedItems));
|
|
262
|
-
}
|
|
263
|
-
};
|
|
264
|
-
__decorate([
|
|
265
|
-
property({ type: Array })
|
|
266
|
-
], OrMwcList.prototype, "listItems", void 0);
|
|
267
|
-
__decorate([
|
|
268
|
-
property({ type: Array })
|
|
269
|
-
], OrMwcList.prototype, "values", void 0);
|
|
270
|
-
__decorate([
|
|
271
|
-
property({ type: String, attribute: true })
|
|
272
|
-
], OrMwcList.prototype, "type", void 0);
|
|
273
|
-
__decorate([
|
|
274
|
-
query("#wrapper")
|
|
275
|
-
], OrMwcList.prototype, "_wrapperElem", void 0);
|
|
276
|
-
__decorate([
|
|
277
|
-
query("#list")
|
|
278
|
-
], OrMwcList.prototype, "_mdcElem", void 0);
|
|
279
|
-
OrMwcList = __decorate([
|
|
280
|
-
customElement("or-mwc-list")
|
|
281
|
-
], OrMwcList);
|
|
282
|
-
export { OrMwcList };
|
|
283
|
-
//# sourceMappingURL=or-mwc-list.js.map
|
|
1
|
+
var __decorate=this&&this.__decorate||function(t,e,s,i){var r,a=arguments.length,c=a<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(t,e,s,i);else for(var o=t.length-1;o>=0;o--)(r=t[o])&&(c=(a<3?r(c):a>3?r(e,s,c):r(e,s))||c);return a>3&&c&&Object.defineProperty(e,s,c),c};import{css as t,html as e,LitElement as s,unsafeCSS as i}from"lit";import{customElement as r,property as a,query as c}from"lit/decorators.js";import{styleMap as o}from"lit/directives/style-map.js";import{ifDefined as l}from"lit/directives/if-defined.js";import{MDCList as n}from"@material/list";import{DefaultColor8 as d,DefaultColor4 as m,Util as p}from"@openremote/core";import"@openremote/or-translate";import{i18next as h}from"@openremote/or-translate";let listStyle=require("@material/list/dist/mdc.list.css"),checkboxStyle=require("@material/checkbox/dist/mdc.checkbox.css");export class OrMwcListChangedEvent extends CustomEvent{constructor(t){super(OrMwcListChangedEvent.NAME,{detail:t,bubbles:!0,composed:!0})}}OrMwcListChangedEvent.NAME="or-mwc-list-changed";export var ListType;!function(t){t.PLAIN="PLAIN",t.SELECT="SELECT",t.RADIO="RADIO",t.MULTI_CHECKBOX="MULTI_CHECKBOX",t.MULTI_TICK="MULTI_TICK"}(ListType||(ListType={}));export function createListGroup(t){return e`
|
|
2
|
+
<div class="mdc-list-group">
|
|
3
|
+
${t.map(t=>e`
|
|
4
|
+
<h3 class="mdc-list-group__subheader">${t.heading}</h3>
|
|
5
|
+
${t.list}
|
|
6
|
+
`)}
|
|
7
|
+
</div>
|
|
8
|
+
`}export function getListTemplate(t,s,i,r,a){switch(r=r||"listbox",t){case ListType.RADIO:r="radiogroup";break;case ListType.MULTI_CHECKBOX:r="group"}return e`
|
|
9
|
+
<ul id="list" class="mdc-list${i?" mdc-list--two-line":""}" role="${l(r)}" @MDCList:action="${t=>a&&a(t)}" aria-hidden="true" aria-orientation="vertical" tabindex="-1">
|
|
10
|
+
${s}
|
|
11
|
+
</ul>
|
|
12
|
+
`}export function getItemTemplate(t,s,i,r,a,c){let n,d,m;if(null===t)return e`<li role="separator" class="mdc-list-divider"></li>`;let p=r===ListType.MULTI_CHECKBOX||r===ListType.MULTI_TICK,u=t.value,_=r!==ListType.PLAIN&&i.length>0&&i.some(t=>t===u),v=void 0!==t.text?t.text:t.value,y=t.secondaryText,L="menuitem",I="",T="",x="",C=t.icon,f="mdc-list-item--selected";switch(a=a||t.translate,p&&r===ListType.MULTI_TICK&&(C=_?"checkbox-marked":"checkbox-blank-outline"),(r===ListType.MULTI_TICK||C)&&(T=e`
|
|
13
|
+
<span class="mdc-list-item__graphic">
|
|
14
|
+
<or-icon icon="${C}"></or-icon>
|
|
15
|
+
</span>
|
|
16
|
+
`),t.trailingIcon&&(x=e`
|
|
17
|
+
<span class="mdc-list-item__meta" aria-hidden="true">
|
|
18
|
+
<or-icon icon="${t.trailingIcon}"></or-icon>
|
|
19
|
+
</span>
|
|
20
|
+
`),r){case ListType.SELECT:n=_?"true":"false",m=_||(!i||0===i.length)&&0===s?"0":void 0,L="option";break;case ListType.RADIO:d=_?"true":"false",L="radio",T=e`
|
|
21
|
+
<span class="mdc-list-item__graphic">
|
|
22
|
+
<div class="mdc-radio">
|
|
23
|
+
<input class="mdc-radio__native-control" id="radio-item-${s+1}" type="radio" value="${u}" />
|
|
24
|
+
<div class="mdc-radio__background">
|
|
25
|
+
<div class="mdc-radio__outer-circle"></div>
|
|
26
|
+
<div class="mdc-radio__inner-circle"></div>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</span>
|
|
30
|
+
`;break;case ListType.MULTI_CHECKBOX:d=_?"true":"false",L="checkbox",T=e`
|
|
31
|
+
<div class="mdc-checkbox">
|
|
32
|
+
<input type="checkbox" class="mdc-checkbox__native-control" />
|
|
33
|
+
<div class="mdc-checkbox__background">
|
|
34
|
+
<svg class="mdc-checkbox__checkmark" viewBox="0 0 24 24">
|
|
35
|
+
<path class="mdc-checkbox__checkmark-path" fill="none" d="M1.73,12.91 8.1,19.28 22.79,4.59"/>
|
|
36
|
+
</svg>
|
|
37
|
+
<div class="mdc-checkbox__mixedmark"></div>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
`;break;case ListType.MULTI_TICK:d=_?"true":"false",f="mdc-list-item--selected"}return v&&(I=void 0!==y?e`
|
|
41
|
+
<span class="mdc-list-item__text">
|
|
42
|
+
<span class="mdc-list-item__primary-text">${a&&v?e`<or-translate value="${v}"></or-translate>`:v}</span>
|
|
43
|
+
<span class="mdc-list-item__secondary-text">${a&&y?e`<or-translate value="${y}"></or-translate>`:y}</span>
|
|
44
|
+
</span>
|
|
45
|
+
`:r===ListType.RADIO?e`<label class="mdc-list-item__text" for="radio-item-${s+1}">${a&&v?e`<or-translate value="${v}"></or-translate>`:v}</label>`:e`<span class="mdc-list-item__text" title="${a&&v?h.t(v):v}">${a&&v?e`<or-translate value="${v}"></or-translate>`:v}</span>`),e`
|
|
46
|
+
<li @click="${e=>{c&&c(e,t)}}" style="${t.styleMap?o(t.styleMap):""}" class="mdc-list-item ${_?f:""}" role="${l(L)}" tabindex="${l(m)}" aria-checked="${l(d)}" aria-selected="${l(n)}" data-value="${u}">
|
|
47
|
+
<span class="mdc-list-item__ripple"></span>
|
|
48
|
+
${T}
|
|
49
|
+
${I}
|
|
50
|
+
${x}
|
|
51
|
+
</li>
|
|
52
|
+
`}let style=t`
|
|
53
|
+
:host {
|
|
54
|
+
white-space: nowrap;
|
|
55
|
+
--internal-or-mwc-input-color: var(--or-mwc-input-color, var(--or-app-color4, ${i(m)}));
|
|
56
|
+
--internal-or-mwc-input-text-color: var(--or-mwc-input-text-color, var(--or-app-color8, ${i(d)}));
|
|
57
|
+
|
|
58
|
+
--mdc-theme-primary: var(--internal-or-mwc-input-color);
|
|
59
|
+
--mdc-theme-on-primary: var(--internal-or-mwc-input-text-color);
|
|
60
|
+
--mdc-theme-secondary: var(--internal-or-mwc-input-color);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.mdc-list-item__graphic {
|
|
64
|
+
margin-right: 16px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
a {
|
|
68
|
+
text-decoration: none;
|
|
69
|
+
color: rgba(0, 0, 0, 0.87);
|
|
70
|
+
}
|
|
71
|
+
`,OrMwcList=class extends s{static get styles(){return[t`${i(listStyle)}`,t`${i(checkboxStyle)}`,style]}constructor(){super(),this.type=ListType.SELECT}disconnectedCallback(){super.disconnectedCallback(),this._mdcComponent&&(this._mdcComponent.destroy(),this._mdcComponent=void 0)}shouldUpdate(t){if(this._mdcComponent&&t.has("values")&&!p.objectsEqual(this.values,t.get("values"))){let t=this.values?Array.isArray(this.values)?this.values:[this.values]:[];this.setSelectedItems(this.values&&this.listItems?this.listItems.filter(e=>e&&(null==t?void 0:t.includes(e.value))):void 0)}return!0}render(){let t=this.listItems?e`${this.listItems.map((t,e)=>getItemTemplate(t,e,Array.isArray(this.values)?this.values:this.values?[this.values]:[],this.type))}`:e``,s=this.listItems&&this.listItems.some(t=>t&&!!t.secondaryText);return getListTemplate(this.type,t,s,void 0,t=>this._onSelected(t))}firstUpdated(t){super.firstUpdated(t),this._mdcElem&&(this._mdcComponent=new n(this._mdcElem),(this.type===ListType.SELECT||this.type===ListType.RADIO)&&(this._mdcComponent.singleSelection=!0))}get selectedItems(){if(!this._mdcComponent)return[];let t=Array.isArray(this._mdcComponent.selectedIndex)?this._mdcComponent.selectedIndex:[this._mdcComponent.selectedIndex],e=this.listItems?this.listItems.filter(t=>null!==t):[];return t.map(t=>e[t])}setSelectedItems(t){if(!this._mdcComponent||!this.listItems)return;if(!t){this._mdcComponent.selectedIndex=-1;return}let e=(!Array.isArray(t)?[t]:t).map(t=>"string"==typeof t?t:t.value),s=this.listItems.filter(t=>null!==t).reduce((t,s,i)=>(s&&e.includes(s.value)&&t.push(i),t),[]);this._mdcComponent.selectedIndex=this.type===ListType.MULTI_CHECKBOX?s:s.length>=1?s[0]:-1}_onSelected(t){this.values=this.selectedItems.map(t=>t.value),t.stopPropagation(),this.dispatchEvent(new OrMwcListChangedEvent(this.selectedItems))}};__decorate([a({type:Array})],OrMwcList.prototype,"listItems",void 0),__decorate([a({type:Array})],OrMwcList.prototype,"values",void 0),__decorate([a({type:String,attribute:!0})],OrMwcList.prototype,"type",void 0),__decorate([c("#wrapper")],OrMwcList.prototype,"_wrapperElem",void 0),__decorate([c("#list")],OrMwcList.prototype,"_mdcElem",void 0),OrMwcList=__decorate([r("or-mwc-list")],OrMwcList);export{OrMwcList};
|