@schukai/monster 4.43.2 → 4.43.3
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 +8 -0
- package/package.json +1 -1
- package/source/components/accessibility/locale-picker.mjs +538 -538
- package/source/components/accessibility/locale-select.mjs +172 -172
- package/source/components/content/viewer.mjs +823 -823
- package/source/components/datatable/constants.mjs +15 -15
- package/source/components/datatable/datatable/header.mjs +253 -253
- package/source/components/datatable/datatable.mjs +1284 -1284
- package/source/components/datatable/filter.mjs +1339 -1342
- package/source/components/datatable/pagination.mjs +502 -502
- package/source/components/datatable/stylesheet/datatable.mjs +13 -6
- package/source/components/form/quantity.mjs +229 -229
- package/source/components/form/select.mjs +2963 -2963
- package/source/components/form/stylesheet/quantity.mjs +13 -6
- package/source/components/form/stylesheet/select.mjs +13 -6
- package/source/components/navigation/site-navigation.mjs +330 -330
- package/source/components/navigation/stylesheet/site-navigation.mjs +13 -6
- package/source/components/style/typography.css +4 -2
- package/source/dom/customelement.mjs +959 -963
- package/source/dom/slotted.mjs +87 -87
- package/source/i18n/util.mjs +149 -149
- package/source/monster.mjs +3 -0
- package/source/types/is.mjs +64 -64
- package/source/types/typeof.mjs +16 -16
- package/source/types/version.mjs +1 -1
- package/test/cases/monster.mjs +1 -1
- package/test/web/test.html +2 -2
- package/test/web/tests.js +2724 -1287
@@ -13,8 +13,8 @@ import { instanceSymbol } from "../../constants.mjs";
|
|
13
13
|
import { ATTRIBUTE_ROLE } from "../../dom/constants.mjs";
|
14
14
|
import { CustomElement } from "../../dom/customelement.mjs";
|
15
15
|
import {
|
16
|
-
|
17
|
-
|
16
|
+
assembleMethodSymbol,
|
17
|
+
registerCustomElement,
|
18
18
|
} from "../../dom/customelement.mjs";
|
19
19
|
import { isFunction, isObject } from "../../types/is.mjs";
|
20
20
|
import { LocalePickerStyleSheet } from "./stylesheet/locale-picker.mjs";
|
@@ -43,63 +43,63 @@ const detectedLanguagesSymbol = Symbol("detectedLanguages");
|
|
43
43
|
* @return {string}
|
44
44
|
*/
|
45
45
|
function getLocalizedLabel() {
|
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
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
46
|
+
const lang = document.documentElement.lang || navigator.language || "en";
|
47
|
+
switch (lang.split("-")[0]) {
|
48
|
+
case "de":
|
49
|
+
return "Sprache wählen";
|
50
|
+
case "fr":
|
51
|
+
return "Sélectionnez une langue";
|
52
|
+
case "es":
|
53
|
+
return "Seleccione un idioma";
|
54
|
+
case "it":
|
55
|
+
return "Seleziona una lingua";
|
56
|
+
case "pt":
|
57
|
+
return "Selecione um idioma";
|
58
|
+
case "nl":
|
59
|
+
return "Selecteer een taal";
|
60
|
+
case "pl":
|
61
|
+
return "Wybierz język";
|
62
|
+
case "ru":
|
63
|
+
return "Выберите язык";
|
64
|
+
case "cs":
|
65
|
+
return "Vyberte jazyk";
|
66
|
+
case "sk":
|
67
|
+
return "Vyberte jazyk";
|
68
|
+
case "bg":
|
69
|
+
return "Изберете език";
|
70
|
+
case "hr":
|
71
|
+
return "Odaberite jezik";
|
72
|
+
case "fi":
|
73
|
+
return "Valitse kieli";
|
74
|
+
case "sv":
|
75
|
+
return "Välj ett språk";
|
76
|
+
case "el":
|
77
|
+
return "Επιλέξτε γλώσσα";
|
78
|
+
case "hu":
|
79
|
+
return "Válasszon egy nyelvet";
|
80
|
+
case "ro":
|
81
|
+
return "Selectați o limbă";
|
82
|
+
case "da":
|
83
|
+
return "Vælg et sprog";
|
84
|
+
case "no":
|
85
|
+
return "Velg et språk";
|
86
|
+
case "hi":
|
87
|
+
return "एक भाषा चुनें";
|
88
|
+
case "bn":
|
89
|
+
return "একটি ভাষা নির্বাচন করুন";
|
90
|
+
case "ta":
|
91
|
+
return "ஒரு மொழியைத் தேர்ந்தெடுக்கவும்";
|
92
|
+
case "te":
|
93
|
+
return "భాషను ఎంచుకోండి";
|
94
|
+
case "mr":
|
95
|
+
return "एक भाषा निवडा";
|
96
|
+
case "zh":
|
97
|
+
return "选择一种语言";
|
98
|
+
case "ja":
|
99
|
+
return "言語を選択してください";
|
100
|
+
default:
|
101
|
+
return "Select a language";
|
102
|
+
}
|
103
103
|
}
|
104
104
|
|
105
105
|
/**
|
@@ -112,92 +112,92 @@ function getLocalizedLabel() {
|
|
112
112
|
* @summary A simple language switcher as a select.
|
113
113
|
*/
|
114
114
|
class LocaleSelect extends CustomElement {
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
115
|
+
/**
|
116
|
+
* Used by the instanceof operator.
|
117
|
+
* @returns {symbol}
|
118
|
+
*/
|
119
|
+
static get [instanceSymbol]() {
|
120
|
+
return Symbol.for(
|
121
|
+
"@schukai/monster/components/accessibility/local-selector@@instance",
|
122
|
+
);
|
123
|
+
}
|
124
124
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
125
|
+
/**
|
126
|
+
* Initializes the component.
|
127
|
+
* @return {LocaleSelect}
|
128
|
+
*/
|
129
|
+
[assembleMethodSymbol]() {
|
130
|
+
super[assembleMethodSymbol]();
|
131
|
+
initControlReferences.call(this);
|
132
|
+
initSelectOptions.call(this);
|
133
|
+
initEventHandler.call(this);
|
134
|
+
return this;
|
135
|
+
}
|
136
136
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
137
|
+
/**
|
138
|
+
* Default options
|
139
|
+
*/
|
140
|
+
get defaults() {
|
141
|
+
return Object.assign({}, super.defaults, {
|
142
|
+
templates: {
|
143
|
+
main: getTemplate(),
|
144
|
+
},
|
145
|
+
labels: {
|
146
|
+
"select-an-option": getLocalizedLabel(),
|
147
|
+
},
|
148
|
+
callbacks: {},
|
149
|
+
disabled: false,
|
150
|
+
});
|
151
|
+
}
|
152
152
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
153
|
+
/**
|
154
|
+
* connectedCallback
|
155
|
+
*/
|
156
|
+
connectedCallback() {
|
157
|
+
super.connectedCallback();
|
158
|
+
this[detectedLanguagesSymbol] = detectUserLanguagePreference();
|
159
|
+
initSelectOptions.call(this);
|
160
|
+
}
|
161
161
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
162
|
+
/**
|
163
|
+
* @return {string}
|
164
|
+
*/
|
165
|
+
static getTag() {
|
166
|
+
return "monster-locale-select";
|
167
|
+
}
|
168
168
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
169
|
+
/**
|
170
|
+
* @return {CSSStyleSheet[]}
|
171
|
+
*/
|
172
|
+
static getCSSStyleSheet() {
|
173
|
+
return [LocalePickerStyleSheet];
|
174
|
+
}
|
175
175
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
176
|
+
/**
|
177
|
+
* Export parts from monster-select to make them available for styling outside.
|
178
|
+
*/
|
179
|
+
static get exportparts() {
|
180
|
+
// The parts from monster-select, as defined in source/components/form/select.mjs:
|
181
|
+
return [
|
182
|
+
"control",
|
183
|
+
"container",
|
184
|
+
"popper",
|
185
|
+
"option",
|
186
|
+
"option-label",
|
187
|
+
"option-control",
|
188
|
+
"badge",
|
189
|
+
"badge-label",
|
190
|
+
"remove-badge",
|
191
|
+
"summary",
|
192
|
+
"status-or-remove-badges",
|
193
|
+
"remote-info",
|
194
|
+
"no-options",
|
195
|
+
"selection",
|
196
|
+
"inline-filter",
|
197
|
+
"popper-filter",
|
198
|
+
"content",
|
199
|
+
].join(",");
|
200
|
+
}
|
201
201
|
}
|
202
202
|
|
203
203
|
/**
|
@@ -205,9 +205,9 @@ class LocaleSelect extends CustomElement {
|
|
205
205
|
* @private
|
206
206
|
*/
|
207
207
|
function initControlReferences() {
|
208
|
-
|
209
|
-
|
210
|
-
|
208
|
+
this[selectElementSymbol] = this.shadowRoot.querySelector(
|
209
|
+
`[${ATTRIBUTE_ROLE}="select"]`,
|
210
|
+
);
|
211
211
|
}
|
212
212
|
|
213
213
|
/**
|
@@ -215,29 +215,29 @@ function initControlReferences() {
|
|
215
215
|
* @private
|
216
216
|
*/
|
217
217
|
function initSelectOptions() {
|
218
|
-
|
219
|
-
|
218
|
+
const detected =
|
219
|
+
this[detectedLanguagesSymbol] || detectUserLanguagePreference();
|
220
220
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
221
|
+
let options = [];
|
222
|
+
if (Array.isArray(detected.available)) {
|
223
|
+
const currentLang = detected.current;
|
224
|
+
options = detected.available.filter(
|
225
|
+
(lang) => lang.baseLang !== currentLang && lang.fullLang !== currentLang,
|
226
|
+
);
|
227
|
+
} else if (Array.isArray(detected.allOfferable)) {
|
228
|
+
options = detected.allOfferable;
|
229
|
+
}
|
230
230
|
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
231
|
+
options = detected.allOfferable;
|
232
|
+
if (this[selectElementSymbol]) {
|
233
|
+
this[selectElementSymbol].setOption("mapping.labelTemplate", "${label}");
|
234
|
+
this[selectElementSymbol].setOption("mapping.valueTemplate", "${href}");
|
235
|
+
this[selectElementSymbol].setOption(
|
236
|
+
"labels.select-an-option",
|
237
|
+
this.getOption("labels.select-an-option"),
|
238
|
+
);
|
239
|
+
this[selectElementSymbol].importOptions(options);
|
240
|
+
}
|
241
241
|
}
|
242
242
|
|
243
243
|
/**
|
@@ -245,14 +245,14 @@ function initSelectOptions() {
|
|
245
245
|
* @private
|
246
246
|
*/
|
247
247
|
function initEventHandler() {
|
248
|
-
|
248
|
+
if (!this[selectElementSymbol]) return;
|
249
249
|
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
250
|
+
this[selectElementSymbol].addEventListener("change", (event) => {
|
251
|
+
const selected = event.target?.value;
|
252
|
+
if (selected) {
|
253
|
+
window.location.href = selected;
|
254
|
+
}
|
255
|
+
});
|
256
256
|
}
|
257
257
|
|
258
258
|
/**
|
@@ -261,8 +261,8 @@ function initEventHandler() {
|
|
261
261
|
* @return {string}
|
262
262
|
*/
|
263
263
|
function getTemplate() {
|
264
|
-
|
265
|
-
|
264
|
+
// language=HTML
|
265
|
+
return `
|
266
266
|
<monster-select exportparts="control,container,popper,option,option-label,option-control,badge,badge-label,remove-badge,summary,status-or-remove-badges,remote-info,no-options,selection,inline-filter,popper-filter,content" data-monster-role="select"></monster-select>
|
267
267
|
`;
|
268
268
|
}
|