@schukai/monster 3.98.2 → 3.99.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.
Files changed (35) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/package.json +1 -1
  3. package/source/components/datatable/columnbar.mjs +19 -20
  4. package/source/components/datatable/datatable.mjs +94 -80
  5. package/source/components/datatable/filter/date-range.mjs +19 -20
  6. package/source/components/datatable/filter/input.mjs +19 -20
  7. package/source/components/datatable/filter/range.mjs +19 -19
  8. package/source/components/datatable/filter-button.mjs +19 -20
  9. package/source/components/datatable/filter.mjs +48 -31
  10. package/source/components/datatable/pagination.mjs +19 -20
  11. package/source/components/datatable/save-button.mjs +19 -20
  12. package/source/components/datatable/stylesheet/datatable.mjs +13 -6
  13. package/source/components/form/action-button.mjs +2 -1
  14. package/source/components/form/api-button.mjs +4 -4
  15. package/source/components/form/button-bar.mjs +2 -3
  16. package/source/components/form/button.mjs +1 -0
  17. package/source/components/form/context-error.mjs +1 -0
  18. package/source/components/form/field-set.mjs +21 -21
  19. package/source/components/form/popper-button.mjs +274 -273
  20. package/source/components/form/reload.mjs +1 -0
  21. package/source/components/form/select.mjs +56 -34
  22. package/source/components/form/toggle-switch.mjs +2 -2
  23. package/source/components/layout/details.mjs +19 -20
  24. package/source/components/layout/tabs.mjs +19 -20
  25. package/source/components/notify/monitor-attribute-errors.mjs +184 -179
  26. package/source/data/buildtree.mjs +1 -1
  27. package/source/dom/customelement.mjs +944 -945
  28. package/source/dom/error.mjs +106 -0
  29. package/source/monster.mjs +1 -0
  30. package/source/types/version.mjs +1 -1
  31. package/test/cases/dom/customcontrol.mjs +1 -1
  32. package/test/cases/dom/customelement.mjs +3 -3
  33. package/test/cases/monster.mjs +1 -1
  34. package/test/web/test.html +2 -2
  35. package/test/web/tests.js +334 -63
package/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
 
4
4
 
5
+ ## [3.99.0] - 2025-01-07
6
+
7
+ ### Add Features
8
+
9
+ - new error functions addErrorAttribute and removeErrorAttribute; small database changes
10
+ ### Bug Fixes
11
+
12
+ - update tests
13
+ ### Changes
14
+
15
+ - update webtest
16
+
17
+
18
+
19
+ ## [3.98.3] - 2025-01-07
20
+
21
+ ### Bug Fixes
22
+
23
+ - update doc
24
+
25
+
26
+
5
27
  ## [3.98.2] - 2025-01-07
6
28
 
7
29
  ### Bug Fixes
package/package.json CHANGED
@@ -1 +1 @@
1
- {"author":"schukai GmbH","dependencies":{"@floating-ui/dom":"^1.6.12","@popperjs/core":"^2.11.8"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"3.98.2"}
1
+ {"author":"schukai GmbH","dependencies":{"@floating-ui/dom":"^1.6.13","@popperjs/core":"^2.11.8"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"3.99.0"}
@@ -22,7 +22,7 @@ import { findTargetElementFromEvent } from "../../dom/events.mjs";
22
22
  import { clone } from "../../util/clone.mjs";
23
23
  import { ColumnBarStyleSheet } from "./stylesheet/column-bar.mjs";
24
24
  import { createPopper } from "@popperjs/core";
25
- import {getLocaleOfDocument} from "../../dom/locale.mjs";
25
+ import { getLocaleOfDocument } from "../../dom/locale.mjs";
26
26
 
27
27
  export { ColumnBar };
28
28
 
@@ -133,47 +133,46 @@ class ColumnBar extends CustomElement {
133
133
  function getTranslations() {
134
134
  const locale = getLocaleOfDocument();
135
135
  switch (locale.language) {
136
- case 'de':
136
+ case "de":
137
137
  return {
138
- settings: "Einstellungen"
138
+ settings: "Einstellungen",
139
139
  };
140
- case 'fr':
140
+ case "fr":
141
141
  return {
142
- settings: "Paramètres"
142
+ settings: "Paramètres",
143
143
  };
144
- case 'sp':
144
+ case "sp":
145
145
  return {
146
- settings: "Configuración"
146
+ settings: "Configuración",
147
147
  };
148
- case 'it':
148
+ case "it":
149
149
  return {
150
- settings: "Impostazioni"
150
+ settings: "Impostazioni",
151
151
  };
152
- case 'pl':
152
+ case "pl":
153
153
  return {
154
- settings: "Ustawienia"
154
+ settings: "Ustawienia",
155
155
  };
156
- case 'no':
156
+ case "no":
157
157
  return {
158
- settings: "Innstillinger"
158
+ settings: "Innstillinger",
159
159
  };
160
- case 'dk':
160
+ case "dk":
161
161
  return {
162
- settings: "Indstillinger"
162
+ settings: "Indstillinger",
163
163
  };
164
- case 'sw':
164
+ case "sw":
165
165
  return {
166
- settings: "Inställningar"
166
+ settings: "Inställningar",
167
167
  };
168
168
  default:
169
- case 'en':
169
+ case "en":
170
170
  return {
171
- settings: "Settings"
171
+ settings: "Settings",
172
172
  };
173
173
  }
174
174
  }
175
175
 
176
-
177
176
  /**
178
177
  * @private
179
178
  * @return {ColumnBar}
@@ -71,8 +71,7 @@ import {
71
71
  getDocument,
72
72
  getWindow,
73
73
  } from "../../dom/util.mjs";
74
- import {addAttributeToken} from "../../dom/attributes.mjs";
75
- import {ATTRIBUTE_ERRORMESSAGE} from "../../dom/constants.mjs";
74
+
76
75
  import {getDocumentTranslations} from "../../i18n/translations.mjs";
77
76
  import "../state/state.mjs";
78
77
  import "../host/collapse.mjs";
@@ -83,7 +82,7 @@ import "./datasource/rest.mjs";
83
82
 
84
83
  import "../form/context-help.mjs";
85
84
  import {getLocaleOfDocument} from "../../dom/locale.mjs";
86
-
85
+ import {addErrorAttribute} from "../../dom/error.mjs";
87
86
 
88
87
  export {DataTable};
89
88
 
@@ -251,7 +250,7 @@ class DataTable extends CustomElement {
251
250
  /**
252
251
  *
253
252
  * @param {string} selector
254
- * @return {NodeListOf<*>}
253
+ * @return {NodeList}
255
254
  */
256
255
  getGridElements(selector) {
257
256
  return this[gridElementSymbol].querySelectorAll(selector);
@@ -299,7 +298,9 @@ class DataTable extends CustomElement {
299
298
  const selectedRows = [];
300
299
  rows.forEach((row) => {
301
300
  if (row.checked) {
302
- const key = row.parentNode.getAttribute("data-monster-insert-reference");
301
+ const key = row.parentNode.getAttribute(
302
+ "data-monster-insert-reference",
303
+ );
303
304
  const index = key.split("-").pop();
304
305
  selectedRows.push(parseInt(index, 10));
305
306
  }
@@ -336,28 +337,6 @@ class DataTable extends CustomElement {
336
337
  initControlReferences.call(this);
337
338
  initEventHandler.call(this);
338
339
 
339
- const selector = this.getOption("datasource.selector");
340
-
341
- if (isString(selector)) {
342
- const element = findElementWithSelectorUpwards(this, selector);
343
- if (element === null) {
344
- throw new Error("the selector must match exactly one element");
345
- }
346
-
347
- if (!isInstance(element, Datasource)) {
348
- throw new TypeError("the element must be a datasource");
349
- }
350
-
351
- this[datasourceLinkedElementSymbol] = element;
352
-
353
- queueMicrotask(() => {
354
- handleDataSourceChanges.call(this);
355
- element.datasource.attachObserver(
356
- new Observer(handleDataSourceChanges.bind(this)),
357
- );
358
- });
359
- }
360
-
361
340
  getHostConfig
362
341
  .call(this, getColumnVisibilityConfigKey)
363
342
  .then((config) => {
@@ -380,30 +359,54 @@ class DataTable extends CustomElement {
380
359
  try {
381
360
  initGridAndStructs.call(this, config, headerOrderMap);
382
361
  } catch (error) {
383
- addAttributeToken(
362
+ addErrorAttribute(
384
363
  this,
385
- ATTRIBUTE_ERRORMESSAGE,
386
- error?.message || error.toString(),
364
+ error
387
365
  );
388
366
  }
389
367
 
390
368
  updateColumnBar.call(this);
391
369
  })
392
370
  .catch((error) => {
393
- addAttributeToken(
394
- this,
395
- ATTRIBUTE_ERRORMESSAGE,
396
- error?.message || error.toString(),
371
+ addErrorAttribute(
372
+ this, error,
397
373
  );
398
374
  });
399
375
  })
400
376
  .catch((error) => {
401
- addAttributeToken(
377
+ addErrorAttribute(
402
378
  this,
403
- ATTRIBUTE_ERRORMESSAGE,
404
- error?.message || error.toString(),
379
+ error
405
380
  );
381
+ })
382
+ .finally(() => {
383
+
384
+ const selector = this.getOption("datasource.selector");
385
+
386
+ if (isString(selector)) {
387
+ const element = findElementWithSelectorUpwards(this, selector);
388
+ if (element === null) {
389
+ throw new Error("the selector must match exactly one element");
390
+ }
391
+
392
+ if (!isInstance(element, Datasource)) {
393
+ throw new TypeError("the element must be a datasource");
394
+ }
395
+
396
+ this[datasourceLinkedElementSymbol] = element;
397
+
398
+ getWindow().requestAnimationFrame(() => {
399
+
400
+ handleDataSourceChanges.call(this);
401
+ if (element && "datasource" in element) {
402
+ element.datasource.attachObserver(
403
+ new Observer(handleDataSourceChanges.bind(this)),
404
+ );
405
+ }
406
+ });
407
+ }
406
408
  });
409
+
407
410
  }
408
411
 
409
412
  /**
@@ -588,14 +591,13 @@ function getHostConfig(callback) {
588
591
  const host = findElementWithSelectorUpwards(this, "monster-host");
589
592
 
590
593
  if (!host) {
591
- addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, "no host found");
594
+ addErrorAttribute(this, "no host found");
592
595
  return Promise.resolve({});
593
596
  }
594
597
 
595
598
  if (!this.id) {
596
- addAttributeToken(
599
+ addErrorAttribute(
597
600
  this,
598
- ATTRIBUTE_ERRORMESSAGE,
599
601
  "no id found; id is required for config",
600
602
  );
601
603
  return Promise.resolve({});
@@ -700,7 +702,7 @@ function updateConfigColumnBar() {
700
702
  try {
701
703
  host.setConfig(configKey, map);
702
704
  } catch (error) {
703
- addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, String(error));
705
+ addErrorAttribute(this, error);
704
706
  }
705
707
  }
706
708
 
@@ -874,9 +876,15 @@ function initEventHandler() {
874
876
  }
875
877
 
876
878
  const selectRowCallback = (event) => {
877
- const element = findTargetElementFromEvent(event, "data-monster-role", "select-row");
879
+ const element = findTargetElementFromEvent(
880
+ event,
881
+ "data-monster-role",
882
+ "select-row",
883
+ );
878
884
  if (element) {
879
- const key = element.parentNode.getAttribute("data-monster-insert-reference");
885
+ const key = element.parentNode.getAttribute(
886
+ "data-monster-insert-reference",
887
+ );
880
888
  const row = self.getGridElements(
881
889
  `[data-monster-insert-reference="${key}"]`,
882
890
  );
@@ -889,37 +897,40 @@ function initEventHandler() {
889
897
  });
890
898
 
891
899
  fireCustomEvent(self, "monster-datatable-row-selected", {
892
- index: index
893
- })
894
-
900
+ index: index,
901
+ });
895
902
  } else {
896
903
  row.forEach((col) => {
897
904
  col.classList.remove("selected");
898
905
  });
899
906
 
900
907
  fireCustomEvent(self, "monster-datatable-row-deselected", {
901
- index: index
902
- })
908
+ index: index,
909
+ });
903
910
  }
904
911
 
905
- fireCustomEvent(this, "monster-datatable-selection-changed", {})
912
+ fireCustomEvent(this, "monster-datatable-selection-changed", {});
906
913
  }
907
914
 
908
915
  const rows = self.getGridElements(`[data-monster-role="select-row"]`);
909
916
  const allSelected = Array.from(rows).every((row) => row.checked);
910
- const selectAll = this[gridHeadersElementSymbol].querySelector(`[data-monster-role="select-all"]`);
917
+ const selectAll = this[gridHeadersElementSymbol].querySelector(
918
+ `[data-monster-role="select-all"]`,
919
+ );
911
920
  selectAll.checked = allSelected;
912
-
913
-
914
- }
921
+ };
915
922
 
916
923
  this[gridElementSymbol].addEventListener("click", selectRowCallback);
917
924
  this[gridElementSymbol].addEventListener("touch", selectRowCallback);
918
925
 
919
926
  const selectAllCallback = (event) => {
920
- const element = findTargetElementFromEvent(event, "data-monster-role", "select-all");
927
+ const element = findTargetElementFromEvent(
928
+ event,
929
+ "data-monster-role",
930
+ "select-all",
931
+ );
921
932
  if (element) {
922
- const mode = element.checked
933
+ const mode = element.checked;
923
934
 
924
935
  const rows = this.getGridElements(`[data-monster-role="select-row"]`);
925
936
  rows.forEach((row) => {
@@ -927,20 +938,17 @@ function initEventHandler() {
927
938
  });
928
939
 
929
940
  if (mode) {
930
- fireCustomEvent(this, "monster-datatable-all-rows-selected", {})
941
+ fireCustomEvent(this, "monster-datatable-all-rows-selected", {});
931
942
  } else {
932
- fireCustomEvent(this, "monster-datatable-all-rows-deselected", {})
943
+ fireCustomEvent(this, "monster-datatable-all-rows-deselected", {});
933
944
  }
934
945
 
935
- fireCustomEvent(this, "monster-datatable-selection-changed", {})
936
-
946
+ fireCustomEvent(this, "monster-datatable-selection-changed", {});
937
947
  }
938
- }
939
-
940
- this[gridHeadersElementSymbol].addEventListener("click", selectAllCallback)
941
- this[gridHeadersElementSymbol].addEventListener("touch", selectAllCallback)
942
-
948
+ };
943
949
 
950
+ this[gridHeadersElementSymbol].addEventListener("click", selectAllCallback);
951
+ this[gridHeadersElementSymbol].addEventListener("touch", selectAllCallback);
944
952
  }
945
953
 
946
954
  /**
@@ -950,19 +958,23 @@ function initGridAndStructs(hostConfig, headerOrderMap) {
950
958
  const rowID = this.getOption("templateMapping.row-key");
951
959
 
952
960
  if (!this[gridElementSymbol]) {
953
- throw new Error("no grid element is defined");
961
+ addErrorAttribute(this, "no grid element found");
962
+ return;
954
963
  }
955
964
 
956
965
  let template;
957
966
  getSlottedElements.call(this).forEach((e) => {
958
-
959
967
  if (e instanceof HTMLTemplateElement && e.id === rowID) {
960
968
  template = e;
961
969
  }
962
970
  });
963
971
 
964
972
  if (!template) {
965
- throw new Error("no template is defined");
973
+ addErrorAttribute(
974
+ this,
975
+ "no template found, please add a template",
976
+ );
977
+ return;
966
978
  }
967
979
 
968
980
  const rowCount = template.content.children.length;
@@ -1055,9 +1067,13 @@ function initGridAndStructs(hostConfig, headerOrderMap) {
1055
1067
  }
1056
1068
 
1057
1069
  const features = [];
1070
+
1058
1071
  if (row.hasAttribute(ATTRIBUTE_DATATABLE_FEATURES)) {
1059
- const features = row.getAttribute(ATTRIBUTE_DATATABLE_FEATURES).split(" ");
1060
- features.forEach((feature) => {
1072
+ const fl = row
1073
+ .getAttribute(ATTRIBUTE_DATATABLE_FEATURES)
1074
+ .split(" ");
1075
+
1076
+ fl.forEach((feature) => {
1061
1077
  features.push(feature.trim());
1062
1078
 
1063
1079
  if (feature === "select") {
@@ -1072,7 +1088,6 @@ function initGridAndStructs(hostConfig, headerOrderMap) {
1072
1088
  checkbox.setAttribute("data-monster-role", "select-row");
1073
1089
  row.appendChild(checkbox);
1074
1090
  }
1075
-
1076
1091
  });
1077
1092
  }
1078
1093
 
@@ -1105,7 +1120,7 @@ function initGridAndStructs(hostConfig, headerOrderMap) {
1105
1120
  function getTranslations() {
1106
1121
  const locale = getLocaleOfDocument();
1107
1122
  switch (locale.language) {
1108
- case 'de':
1123
+ case "de":
1109
1124
  return {
1110
1125
  theListContainsNoEntries: "Die Liste enthält keine Einträge",
1111
1126
  copyAll: "Alles kopieren",
@@ -1115,7 +1130,7 @@ function getTranslations() {
1115
1130
  "<p>Um eine ganze Zeile zu kopieren, halten Sie die Umschalttaste gedrückt, während Sie klicken.<br>" +
1116
1131
  "Wenn Sie alle Zeilen kopieren möchten, können Sie die Schaltfläche <strong>Alles kopieren</strong> verwenden.</p>",
1117
1132
  };
1118
- case 'fr':
1133
+ case "fr":
1119
1134
  return {
1120
1135
  theListContainsNoEntries: "La liste ne contient aucune entrée",
1121
1136
  copyAll: "Copier tout",
@@ -1125,7 +1140,7 @@ function getTranslations() {
1125
1140
  "<p>Pour copier une rangée entière, maintenez la touche Maj enfoncée tout en cliquant.<br>" +
1126
1141
  "Si vous souhaitez copier toutes les rangées, vous pouvez utiliser le bouton <strong>Copier tout</strong>.</p>",
1127
1142
  };
1128
- case 'sp':
1143
+ case "sp":
1129
1144
  return {
1130
1145
  theListContainsNoEntries: "La lista no contiene entradas",
1131
1146
  copyAll: "Copiar todo",
@@ -1135,7 +1150,7 @@ function getTranslations() {
1135
1150
  "<p>Para copiar una fila entera, mantén presionada la tecla Shift mientras haces clic.<br>" +
1136
1151
  "Si quieres copiar todas las filas, puedes usar el botón <strong>Copiar todo</strong>.</p>",
1137
1152
  };
1138
- case 'it':
1153
+ case "it":
1139
1154
  return {
1140
1155
  theListContainsNoEntries: "L'elenco non contiene voci",
1141
1156
  copyAll: "Copia tutto",
@@ -1145,7 +1160,7 @@ function getTranslations() {
1145
1160
  "<p>Per copiare un'intera riga, tieni premuto il tasto Shift mentre clicchi.<br>" +
1146
1161
  "Se vuoi copiare tutte le righe, puoi usare il pulsante <strong>Copia tutto</strong>.</p>",
1147
1162
  };
1148
- case 'pl':
1163
+ case "pl":
1149
1164
  return {
1150
1165
  theListContainsNoEntries: "Lista nie zawiera wpisów",
1151
1166
  copyAll: "Kopiuj wszystko",
@@ -1155,7 +1170,7 @@ function getTranslations() {
1155
1170
  "<p>Aby skopiować cały wiersz, przytrzymaj klawisz Shift podczas klikania.<br>" +
1156
1171
  "Jeśli chcesz skopiować wszystkie wiersze, możesz użyć przycisku <strong>Kopiuj wszystko</strong>.</p>",
1157
1172
  };
1158
- case 'no':
1173
+ case "no":
1159
1174
  return {
1160
1175
  theListContainsNoEntries: "Listen inneholder ingen oppføringer",
1161
1176
  copyAll: "Kopier alt",
@@ -1165,7 +1180,7 @@ function getTranslations() {
1165
1180
  "<p>For å kopiere en hel rad, hold nede Skift-tasten mens du klikker.<br>" +
1166
1181
  "Hvis du vil kopiere alle radene, kan du bruke knappen <strong>Kopier alt</strong>.</p>",
1167
1182
  };
1168
- case 'dk':
1183
+ case "dk":
1169
1184
  return {
1170
1185
  theListContainsNoEntries: "Listen indeholder ingen poster",
1171
1186
  copyAll: "Kopiér alt",
@@ -1175,7 +1190,7 @@ function getTranslations() {
1175
1190
  "<p>For at kopiere en hel række, hold Shift-tasten nede, mens du klikker.<br>" +
1176
1191
  "Hvis du vil kopiere alle rækker, kan du bruge knappen <strong>Kopiér alt</strong>.</p>",
1177
1192
  };
1178
- case 'sw':
1193
+ case "sw":
1179
1194
  return {
1180
1195
  theListContainsNoEntries: "Listan innehåller inga poster",
1181
1196
  copyAll: "Kopiera allt",
@@ -1186,8 +1201,7 @@ function getTranslations() {
1186
1201
  "Om du vill kopiera alla rader kan du använda knappen <strong>Kopiera allt</strong>.</p>",
1187
1202
  };
1188
1203
 
1189
-
1190
- case 'en':
1204
+ case "en":
1191
1205
  default:
1192
1206
  return {
1193
1207
  theListContainsNoEntries: "The list contains no entries",
@@ -30,7 +30,7 @@ import {
30
30
  removeAttributeToken,
31
31
  } from "../../../dom/attributes.mjs";
32
32
  import { findTargetElementFromEvent } from "../../../dom/events.mjs";
33
- import {getLocaleOfDocument} from "../../../dom/locale.mjs";
33
+ import { getLocaleOfDocument } from "../../../dom/locale.mjs";
34
34
 
35
35
  export { DateRange };
36
36
 
@@ -305,7 +305,7 @@ class DateRange extends AbstractBase {
305
305
  function getTranslations() {
306
306
  const locale = getLocaleOfDocument();
307
307
  switch (locale.language) {
308
- case 'de':
308
+ case "de":
309
309
  return {
310
310
  singleValue: "Wert",
311
311
  fromValue: "Von",
@@ -318,9 +318,9 @@ function getTranslations() {
318
318
  days: "Tage",
319
319
  years: "Jahre",
320
320
  weeks: "Wochen",
321
- moreThanValue: "Mehr als"
321
+ moreThanValue: "Mehr als",
322
322
  };
323
- case 'fr':
323
+ case "fr":
324
324
  return {
325
325
  singleValue: "Valeur",
326
326
  fromValue: "De",
@@ -333,9 +333,9 @@ function getTranslations() {
333
333
  days: "Jours",
334
334
  years: "Années",
335
335
  weeks: "Semaines",
336
- moreThanValue: "Plus de"
336
+ moreThanValue: "Plus de",
337
337
  };
338
- case 'sp':
338
+ case "sp":
339
339
  return {
340
340
  singleValue: "Valor",
341
341
  fromValue: "Desde",
@@ -348,9 +348,9 @@ function getTranslations() {
348
348
  days: "Días",
349
349
  years: "Años",
350
350
  weeks: "Semanas",
351
- moreThanValue: "Más de"
351
+ moreThanValue: "Más de",
352
352
  };
353
- case 'it':
353
+ case "it":
354
354
  return {
355
355
  singleValue: "Valore",
356
356
  fromValue: "Da",
@@ -363,9 +363,9 @@ function getTranslations() {
363
363
  days: "Giorni",
364
364
  years: "Anni",
365
365
  weeks: "Settimane",
366
- moreThanValue: "Più di"
366
+ moreThanValue: "Più di",
367
367
  };
368
- case 'pl':
368
+ case "pl":
369
369
  return {
370
370
  singleValue: "Wartość",
371
371
  fromValue: "Od",
@@ -378,9 +378,9 @@ function getTranslations() {
378
378
  days: "Dni",
379
379
  years: "Lata",
380
380
  weeks: "Tygodnie",
381
- moreThanValue: "Więcej niż"
381
+ moreThanValue: "Więcej niż",
382
382
  };
383
- case 'no':
383
+ case "no":
384
384
  return {
385
385
  singleValue: "Verdi",
386
386
  fromValue: "Fra",
@@ -393,9 +393,9 @@ function getTranslations() {
393
393
  days: "Dager",
394
394
  years: "År",
395
395
  weeks: "Uker",
396
- moreThanValue: "Mer enn"
396
+ moreThanValue: "Mer enn",
397
397
  };
398
- case 'dk':
398
+ case "dk":
399
399
  return {
400
400
  singleValue: "Værdi",
401
401
  fromValue: "Fra",
@@ -408,9 +408,9 @@ function getTranslations() {
408
408
  days: "Dage",
409
409
  years: "År",
410
410
  weeks: "Uger",
411
- moreThanValue: "Mere end"
411
+ moreThanValue: "Mere end",
412
412
  };
413
- case 'sw':
413
+ case "sw":
414
414
  return {
415
415
  singleValue: "Värde",
416
416
  fromValue: "Från",
@@ -423,10 +423,10 @@ function getTranslations() {
423
423
  days: "Dagar",
424
424
  years: "År",
425
425
  weeks: "Veckor",
426
- moreThanValue: "Mer än"
426
+ moreThanValue: "Mer än",
427
427
  };
428
428
  default:
429
- case 'en':
429
+ case "en":
430
430
  return {
431
431
  singleValue: "Value",
432
432
  fromValue: "From",
@@ -439,12 +439,11 @@ function getTranslations() {
439
439
  days: "Days",
440
440
  years: "Years",
441
441
  weeks: "Weeks",
442
- moreThanValue: "More than"
442
+ moreThanValue: "More than",
443
443
  };
444
444
  }
445
445
  }
446
446
 
447
-
448
447
  /**
449
448
  *
450
449
  * @param {HTMLElement} group