@schukai/monster 3.96.0 → 3.96.2

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 (40) hide show
  1. package/CHANGELOG.md +22 -5
  2. package/package.json +1 -1
  3. package/source/components/content/copy.mjs +1 -1
  4. package/source/components/datatable/change-button.mjs +39 -41
  5. package/source/components/datatable/dataset.mjs +337 -327
  6. package/source/components/datatable/datasource/rest.mjs +3 -22
  7. package/source/components/datatable/embedded-pagination.mjs +3 -1
  8. package/source/components/datatable/pagination.mjs +14 -7
  9. package/source/components/datatable/save-button.mjs +25 -3
  10. package/source/components/datatable/status.mjs +21 -26
  11. package/source/components/datatable/style/status.pcss +12 -2
  12. package/source/components/datatable/stylesheet/status.mjs +1 -1
  13. package/source/components/datatable/util.mjs +1 -2
  14. package/source/components/form/api-bar.mjs +1 -1
  15. package/source/components/form/api-button.mjs +1 -1
  16. package/source/components/form/button-bar.mjs +1 -1
  17. package/source/components/form/button.mjs +2 -2
  18. package/source/components/form/confirm-button.mjs +1 -1
  19. package/source/components/form/form.mjs +6 -5
  20. package/source/components/form/select.mjs +12 -9
  21. package/source/components/form/style/field-set.pcss +35 -5
  22. package/source/components/form/style/toggle-switch.pcss +16 -2
  23. package/source/components/form/stylesheet/field-set.mjs +1 -1
  24. package/source/components/form/stylesheet/toggle-switch.mjs +1 -1
  25. package/source/components/form/toggle-switch.mjs +139 -91
  26. package/source/components/layout/tabs.mjs +4 -5
  27. package/source/components/layout/width-toggle.mjs +1 -1
  28. package/source/components/navigation/table-of-content.mjs +1 -1
  29. package/source/components/notify/message.mjs +1 -1
  30. package/source/components/notify/notify.mjs +2 -2
  31. package/source/components/state/log.mjs +1 -1
  32. package/source/components/state/state.mjs +1 -1
  33. package/source/components/style/theme.css +4 -4
  34. package/source/dom/constants.mjs +7 -5
  35. package/source/dom/updater.mjs +3 -6
  36. package/source/types/version.mjs +1 -1
  37. package/test/cases/components/form/toggle-switch.mjs +80 -65
  38. package/test/cases/monster.mjs +1 -1
  39. package/test/web/test.html +2 -2
  40. package/test/web/tests.js +154 -104
@@ -68,9 +68,9 @@ const filterObserverSymbol = Symbol("filterObserver");
68
68
  *
69
69
  * @fragments /fragments/components/datatable/datasource/rest
70
70
  *
71
- * @example /examples/components/datatable/datasource-rest-simple
72
- * @example /examples/components/datatable/datasource-rest-auto-init
73
- * @example /examples/components/datatable/datasource-rest-do-fetch
71
+ * @example /examples/components/datatable/datasource-rest-simple Simple Rest datasource
72
+ * @example /examples/components/datatable/datasource-rest-auto-init Auto init
73
+ * @example /examples/components/datatable/datasource-rest-do-fetch Rest datasource with fetch
74
74
  *
75
75
  * @issue https://localhost.alvine.dev:8443/development/issues/closed/272.html
76
76
  *
@@ -368,25 +368,6 @@ class Rest extends Datasource {
368
368
  });
369
369
  });
370
370
  }
371
-
372
- // /**
373
- // * @return {int}
374
- // */
375
- // currentPage() {
376
- //
377
- // const key = this.getOption("read.mapping.currentPage")
378
- // if (key === undefined) {
379
- // return 1;
380
- // }
381
- //
382
- // const pf = new Pathfinder(this.data);
383
- // if (pf.exists(key)) {
384
- // return parseInt(pf.getVia(key), 10);
385
- // }
386
- //
387
- // return 1;
388
- //
389
- // }
390
371
  }
391
372
 
392
373
  /**
@@ -39,7 +39,9 @@ class EmbeddedPagination extends Pagination {
39
39
  * @return {symbol}
40
40
  */
41
41
  static get [instanceSymbol]() {
42
- return Symbol.for("@schukai/monster/components/embedded-pagination");
42
+ return Symbol.for(
43
+ "@schukai/monster/components/datatable/embedded-pagination",
44
+ );
43
45
  }
44
46
 
45
47
  /**
@@ -75,7 +75,7 @@ const debounceSizeSymbol = Symbol("debounceSize");
75
75
  *
76
76
  * @fragments /fragments/components/datatable/pagination
77
77
  *
78
- * @example /examples/components/datatable/pagination-simple
78
+ * @example /examples/components/datatable/pagination-simple Pagination
79
79
  *
80
80
  * @copyright schukai GmbH
81
81
  * @summary The Pagination component is used to show the current page and the total number of pages.
@@ -211,7 +211,7 @@ class Pagination extends CustomElement {
211
211
  showNumbers: ownWidth < parentWidth,
212
212
  };
213
213
 
214
- this[resizeObserverSymbol] = new ResizeObserver((entries) => {
214
+ this[resizeObserverSymbol] = new ResizeObserver(() => {
215
215
  if (this[debounceSizeSymbol] instanceof DeadMansSwitch) {
216
216
  try {
217
217
  this[debounceSizeSymbol].touch();
@@ -359,6 +359,7 @@ function initEventHandler() {
359
359
  if (
360
360
  !page ||
361
361
  page === "" ||
362
+ page === "…" ||
362
363
  page === null ||
363
364
  page === undefined ||
364
365
  page === "undefined" ||
@@ -460,7 +461,7 @@ function buildPagination(current, max) {
460
461
  let next = current === max ? null : current + 1;
461
462
  const itemList = [1];
462
463
 
463
- if (current > 4) itemList.push("…");
464
+ if (current > 4) itemList.push(-1);
464
465
 
465
466
  const r = 2;
466
467
  const r1 = current - r;
@@ -468,7 +469,7 @@ function buildPagination(current, max) {
468
469
 
469
470
  for (let i = r1 > 2 ? r1 : 2; i <= Math.min(max, r2); i++) itemList.push(i);
470
471
 
471
- if (r2 + 1 < max) itemList.push("…");
472
+ if (r2 + 1 < max) itemList.push(-1);
472
473
  if (r2 < max) itemList.push(max);
473
474
 
474
475
  let prevClass = "";
@@ -483,7 +484,13 @@ function buildPagination(current, max) {
483
484
  }
484
485
 
485
486
  const items = itemList.map((item) => {
486
- const p = `${item}`;
487
+ let p = `${item}`;
488
+
489
+ if (item === -1) {
490
+ item = null;
491
+ p = "…";
492
+ }
493
+
487
494
  const c = `${current}`;
488
495
 
489
496
  const obj = {
@@ -493,7 +500,7 @@ function buildPagination(current, max) {
493
500
  class: (p === c ? "current" : "").trim(),
494
501
  };
495
502
 
496
- if (p === "…") {
503
+ if (item === null) {
497
504
  obj.class += " disabled".trim();
498
505
  }
499
506
 
@@ -502,7 +509,7 @@ function buildPagination(current, max) {
502
509
  obj.description = formatter.format(this.getOption("labels.description"));
503
510
  obj.label = formatter.format(this.getOption("labels.page"));
504
511
  obj.href =
505
- p === "…"
512
+ item === null
506
513
  ? "#"
507
514
  : p === c
508
515
  ? "#"
@@ -19,7 +19,6 @@ import { ATTRIBUTE_ERRORMESSAGE } from "../../dom/constants.mjs";
19
19
  import {
20
20
  assembleMethodSymbol,
21
21
  CustomElement,
22
- attributeObserverSymbol,
23
22
  registerCustomElement,
24
23
  } from "../../dom/customelement.mjs";
25
24
  import { findElementWithSelectorUpwards } from "../../dom/util.mjs";
@@ -30,6 +29,7 @@ import { clone } from "../../util/clone.mjs";
30
29
  import { State } from "../form/types/state.mjs";
31
30
  import { ATTRIBUTE_DATASOURCE_SELECTOR } from "./constants.mjs";
32
31
  import { Datasource } from "./datasource.mjs";
32
+ import { Rest as RestDatasource } from "./datasource/rest.mjs";
33
33
  import { BadgeStyleSheet } from "../stylesheet/badge.mjs";
34
34
  import { SaveButtonStyleSheet } from "./stylesheet/save-button.mjs";
35
35
 
@@ -59,7 +59,16 @@ const originValuesSymbol = Symbol("originValues");
59
59
  const badgeElementSymbol = Symbol("badgeElement");
60
60
 
61
61
  /**
62
+ * A save button component
62
63
  *
64
+ * @fragments /fragments/components/datatable/save-button
65
+ *
66
+ * @example /examples/components/datatable/save-button-simple Simple example
67
+ *
68
+ * @issue https://localhost.alvine.dev:8443/development/issues/closed/274.html
69
+ *
70
+ * @copyright schukai GmbH
71
+ * @summary This is a save button component that can be used to save changes to a datasource.
63
72
  */
64
73
  class SaveButton extends CustomElement {
65
74
  /**
@@ -68,7 +77,7 @@ class SaveButton extends CustomElement {
68
77
  */
69
78
  static get [instanceSymbol]() {
70
79
  return Symbol.for(
71
- "@schukai/monster/components/datasource/save-button@@instance",
80
+ "@schukai/monster/components/datatable/save-button@@instance",
72
81
  );
73
82
  }
74
83
 
@@ -165,6 +174,12 @@ class SaveButton extends CustomElement {
165
174
  throw new TypeError("the element must be a datasource");
166
175
  }
167
176
 
177
+ if (element instanceof RestDatasource) {
178
+ element.addEventListener("monster-datasource-fetch", (event) => {
179
+ self[originValuesSymbol] = null;
180
+ });
181
+ }
182
+
168
183
  this[datasourceLinkedElementSymbol] = element;
169
184
  element.datasource.attachObserver(
170
185
  new Observer(handleDataSourceChanges.bind(this)),
@@ -247,7 +262,13 @@ class SaveButton extends CustomElement {
247
262
 
248
263
  /**
249
264
  * @private
250
- * @return {Monster.Components.Datatable.Form}
265
+ * @return {SaveButton}
266
+ * @throws {Error} no shadow-root is defined
267
+ * @throws {TypeError} the element must be a datasource
268
+ * @throws {Error} the selector must match exactly one element
269
+ * @throws {Error} the selector must match exactly one element
270
+ * @throws {TypeError} the element must be a datasource
271
+ * @throws {Error} the selector must match exactly one element
251
272
  */
252
273
  function initControlReferences() {
253
274
  if (!this.shadowRoot) {
@@ -316,6 +337,7 @@ function initEventHandler() {
316
337
 
317
338
  /**
318
339
  * @param {Object} options
340
+ * @deprecated 2024-12-31
319
341
  */
320
342
  function updateOptionsFromArguments(options) {
321
343
  const selector = this.getAttribute(ATTRIBUTE_DATASOURCE_SELECTOR);
@@ -46,35 +46,16 @@ const errorElementSymbol = Symbol.for("errorElement");
46
46
  const datasourceLinkedElementSymbol = Symbol("datasourceLinkedElement");
47
47
 
48
48
  /**
49
- * The Status component is used to show the current status of a datasource.
49
+ * A simple dataset status component
50
50
  *
51
- * <img src="./images/datasource-status.png">
51
+ * @fragments /fragments/components/datatable/datasource-status
52
52
  *
53
- * Dependencies: the system uses functions of the [monsterjs](https://monsterjs.org/) library
53
+ * @example /examples/components/datatable/datasource-status-simple Simple dataset status
54
54
  *
55
- * You can create this control either by specifying the HTML tag <monster-datatable-status />` directly in the HTML or using
56
- * Javascript via the `document.createElement('monster-pagination');` method.
57
- *
58
- * ```html
59
- * <monster-pagination></monster-pagination>
60
- * ```
61
- *
62
- * Or you can create this CustomControl directly in Javascript:
63
- *
64
- * ```js
65
- * import '@schukai/component-datatable/source/pagination.mjs';
66
- * document.createElement('monster-pagination');
67
- * ```
68
- *
69
- * @startuml datasource-status.png
70
- * skinparam monochrome true
71
- * skinparam shadowing false
72
- * HTMLElement <|-- CustomElement
73
- * CustomElement <|-- Pagination
74
- * @enduml
55
+ * @issue https://localhost.alvine.dev:8443/development/issues/closed/274.html
75
56
  *
76
57
  * @copyright schukai GmbH
77
- * @summary A datatable
58
+ * @summary The Status component is used to show the current status of a datasource.
78
59
  */
79
60
  class DatasourceStatus extends CustomElement {
80
61
  /**
@@ -181,16 +162,30 @@ function initEventHandler() {
181
162
  throw new TypeError("the element must be a datasource");
182
163
  }
183
164
 
165
+ let fadeOutTimer = null;
166
+
184
167
  this[datasourceLinkedElementSymbol] = element;
185
168
  element.addEventListener("monster-datasource-fetched", function () {
186
- self.setOption("state.spinner", "hide");
169
+ fadeOutTimer = setTimeout(() => {
170
+ self.setOption("state.spinner", "hide");
171
+ }, 800);
187
172
  });
188
173
 
189
174
  element.addEventListener("monster-datasource-fetch", function () {
175
+ if (fadeOutTimer) {
176
+ clearTimeout(fadeOutTimer);
177
+ fadeOutTimer = null;
178
+ }
179
+
190
180
  self.setOption("state.spinner", "show");
191
181
  });
192
182
 
193
183
  element.addEventListener("monster-datasource-error", function (event) {
184
+ if (fadeOutTimer) {
185
+ clearTimeout(fadeOutTimer);
186
+ fadeOutTimer = null;
187
+ }
188
+
194
189
  self.setOption("state.spinner", "hide");
195
190
 
196
191
  const timeout = self.getOption("timeouts.message", 4000);
@@ -227,7 +222,7 @@ function getTemplate() {
227
222
  data-monster-attributes="disabled path:disabled | if:true">
228
223
  <monster-context-error
229
224
  data-monster-option-classes-button="monster-theme-error-2 monster-theme-background-inherit"></monster-context-error>
230
- <div class="monster-theme-control-element"
225
+ <div class="monster-spinner"
231
226
  data-monster-attributes="data-monster-state-loader path:state.spinner"></div>
232
227
  </div>
233
228
  `;
@@ -7,6 +7,7 @@
7
7
  @import "../../style/control.pcss";
8
8
  @import "../../style/property.pcss";
9
9
  @import "../../style/ripple.pcss";
10
+ @import "../../style/spinner.pcss";
10
11
 
11
12
 
12
13
  [data-monster-role=control] {
@@ -22,11 +23,20 @@
22
23
  width: 1.5rem !important;
23
24
  height: 1.5rem !important;
24
25
  visibility: hidden;
26
+ color: var(--monster-color-secondary-4);
27
+ background-color: var(--monster-bg-color-secondary-4);
25
28
  }
26
-
27
-
29
+
28
30
  & [data-monster-state-loader=show] {
29
31
  visibility: visible;
32
+ opacity: 1;
33
+ transition: opacity 1s ease-in-out, visibility 1.1s ease-in-out;
34
+ }
35
+
36
+ & [data-monster-state-loader=hide] {
37
+ visibility: hidden;
38
+ opacity: 0;
39
+ transition: opacity 1s ease-in-out, visibility 1.1s ease-in-out;
30
40
  }
31
41
  }
32
42
 
@@ -25,7 +25,7 @@ try {
25
25
  StatusStyleSheet.insertRule(
26
26
  `
27
27
  @layer status {
28
- :where(html){line-height:1.15;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}:where(h1){font-size:2em;margin-block-end:.67em;margin-block-start:.67em}:where(dl,ol,ul) :where(dl,ol,ul){margin-block-end:0;margin-block-start:0}:where(hr){box-sizing:content-box;color:inherit;height:0}:where(abbr[title]){text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:where(b,strong){font-weight:bolder}:where(code,kbd,pre,samp){font-family:monospace,monospace;font-size:1em}:where(small){font-size:80%}:where(table){border-color:currentColor;text-indent:0}:where(button,input,select){margin:0}:where(button){text-transform:none}:where(button,input:is([type=button i],[type=reset i],[type=submit i])){-webkit-appearance:button}:where(progress){vertical-align:baseline}:where(select){text-transform:none}:where(textarea){margin:0}:where(input[type=search i]){-webkit-appearance:textfield;outline-offset:-2px}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}:where(button,input:is([type=button i],[type=color i],[type=reset i],[type=submit i]))::-moz-focus-inner{border-style:none;padding:0}:where(button,input:is([type=button i],[type=color i],[type=reset i],[type=submit i]))::-moz-focusring{outline:1px dotted ButtonText}:where(:-moz-ui-invalid){box-shadow:none}:where(dialog){background-color:#fff;border:solid;color:#000;height:-moz-fit-content;height:fit-content;left:0;margin:auto;padding:1em;position:absolute;right:0;width:-moz-fit-content;width:fit-content}:where(dialog:not([open])){display:none}:where(summary){display:list-item}html{height:100%}body,html{min-height:calc(100vh - 40px)}body{box-sizing:border-box;margin:0;padding:0;word-break:break-word}.block{display:block}.inline{display:inline}.inline-block{display:inline-block}.grid{display:grid}.inline-grid{display:inline-grid}.flex{display:flex}.inline-flex{display:inline-flex}.hidden,.hide,.none{display:none}.visible{visibility:visible}.invisible{visibility:hidden}.monster-button-primary,button{align-items:center;background-color:var(--monster-bg-color-primary-1);background-position:50%;border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);box-shadow:var(--monster-box-shadow-1);color:var(--monster-color-primary-1);cursor:pointer;display:flex;font-family:var(--monster-font-family);font-size:1rem;font-weight:400;gap:.4rem;justify-content:center;line-height:1.5;outline:none;overflow:hidden;padding:.375rem .75rem;position:relative;text-align:center;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:-webkit-fill-available;width:-moz-available;width:stretch}.monster-button-primary{background-color:var(--monster-bg-color-primary-4);border-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-button-secondary{background-color:var(--monster-bg-color-primary-1);background-color:var(--monster-bg-color-secondary-4);border-color:var(--monster-bg-color-secondary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);color:var(--monster-color-primary-1);color:var(--monster-color-secondary-4)}.monster-button-secondary,.monster-button-tertiary{align-items:center;background-position:50%;box-shadow:var(--monster-box-shadow-1);cursor:pointer;display:flex;font-family:var(--monster-font-family);font-size:1rem;font-weight:400;gap:.4rem;justify-content:center;line-height:1.5;outline:none;overflow:hidden;padding:.375rem .75rem;position:relative;text-align:center;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:-webkit-fill-available;width:-moz-available;width:stretch}.monster-button-tertiary{background-color:var(--monster-bg-color-primary-1);background-color:var(--monster-bg-color-tertiary-4);border-color:var(--monster-bg-color-tertiary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);color:var(--monster-color-primary-1);color:var(--monster-color-tertiary-4)}.monster-button-outline-primary{background-color:var(--monster-bg-color-primary-1);background-color:var(--monster-color-primary-4);border-color:var(--monster-bg-color-primary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);color:var(--monster-color-primary-1);color:var(--monster-bg-color-primary-4)}.monster-button-outline-primary,.monster-button-outline-secondary{align-items:center;background-position:50%;box-shadow:var(--monster-box-shadow-1);cursor:pointer;display:flex;font-family:var(--monster-font-family);font-size:1rem;font-weight:400;gap:.4rem;justify-content:center;line-height:1.5;outline:none;overflow:hidden;padding:.375rem .75rem;position:relative;text-align:center;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:-webkit-fill-available;width:-moz-available;width:stretch}.monster-button-outline-secondary{background-color:var(--monster-bg-color-primary-1);background-color:var(--monster-color-secondary-4);border-color:var(--monster-bg-color-secondary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);color:var(--monster-color-primary-1);color:var(--monster-bg-color-secondary-4)}.monster-button-outline-tertiary{align-items:center;background-color:var(--monster-bg-color-primary-1);background-color:var(--monster-color-tertiary-4);background-position:50%;border-color:var(--monster-bg-color-tertiary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);box-shadow:var(--monster-box-shadow-1);color:var(--monster-color-primary-1);color:var(--monster-bg-color-tertiary-4);cursor:pointer;display:flex;font-family:var(--monster-font-family);font-size:1rem;font-weight:400;gap:.4rem;justify-content:center;line-height:1.5;outline:none;overflow:hidden;padding:.375rem .75rem;position:relative;text-align:center;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:-webkit-fill-available;width:-moz-available;width:stretch}button:active,button:hover{box-shadow:var(--monster-box-shadow-2);transition:background .8s,color .25s .0833333333s}button:active{z-index:var(--monster-z-index-outline)}.monster-button-bar,.monster-button-group{align-content:center;align-items:stretch;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.monster-button-group{box-sizing:border-box;gap:0;margin:1rem 0}.monster-button-group>:not(:last-child){margin-right:calc(var(--monster-border-width)*-1)}.monster-button-group :hover{box-shadow:none}button:focus{outline:1px dashed var(--monster-color-selection-4);outline-offset:2px;z-index:var(--monster-z-index-outline)}@media (prefers-color-scheme:light){button:focus{outline:1px dashed var(--monster-color-selection-3);outline-offset:2px;z-index:var(--monster-z-index-outline)}}[data-monster-role=control]{box-sizing:border-box;outline:none;width:100%}[data-monster-role=control].flex{align-items:center;display:flex;flex-direction:row}:host{box-sizing:border-box;display:block}:after,:before,:root{--monster-font-family:-apple-system,BlinkMacSystemFont,\"Quicksand\",\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";--monster-font-family-monospace:\"Consolas\",\"Courier New\",\"Roboto Mono\",\"Source Code Pro\",\"Fira Mono\",monospace;--monster-color-primary-1:var(--monster-color-gray-6);--monster-color-primary-2:var(--monster-color-gray-6);--monster-color-primary-3:var(--monster-color-cinnamon-1);--monster-color-primary-4:var(--monster-color-cinnamon-1);--monster-bg-color-primary-1:var(--monster-color-gray-1);--monster-bg-color-primary-2:var(--monster-color-gray-2);--monster-bg-color-primary-3:var(--monster-color-gray-6);--monster-bg-color-primary-4:var(--monster-color-gray-4)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-primary-1:var(--monster-color-gray-1);--monster-color-primary-2:var(--monster-color-gray-1);--monster-color-primary-3:var(--monster-color-gray-6);--monster-color-primary-4:var(--monster-color-gray-6);--monster-bg-color-primary-1:var(--monster-color-gray-6);--monster-bg-color-primary-2:var(--monster-color-gray-3);--monster-bg-color-primary-3:var(--monster-color-gray-2);--monster-bg-color-primary-4:var(--monster-color-gray-1)}}:after,:before,:root{--monster-color-secondary-1:var(--monster-color-red-4);--monster-color-secondary-2:var(--monster-color-red-4);--monster-color-secondary-3:var(--monster-color-red-1);--monster-color-secondary-4:var(--monster-color-red-1);--monster-bg-color-secondary-1:var(--monster-color-gray-1);--monster-bg-color-secondary-2:var(--monster-color-red-2);--monster-bg-color-secondary-3:var(--monster-color-red-3);--monster-bg-color-secondary-4:var(--monster-color-red-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-secondary-1:var(--monster-color-red-1);--monster-color-secondary-2:var(--monster-color-red-1);--monster-color-secondary-3:var(--monster-color-red-6);--monster-color-secondary-4:var(--monster-color-red-4);--monster-bg-color-secondary-1:var(--monster-color-gray-6);--monster-bg-color-secondary-2:var(--monster-color-red-3);--monster-bg-color-secondary-3:var(--monster-color-red-2);--monster-bg-color-secondary-4:var(--monster-color-red-1)}}:after,:before,:root{--monster-color-tertiary-1:var(--monster-color-magenta-4);--monster-color-tertiary-2:var(--monster-color-magenta-4);--monster-color-tertiary-3:var(--monster-color-magenta-6);--monster-color-tertiary-4:var(--monster-color-magenta-1);--monster-bg-color-tertiary-1:var(--monster-color-gray-1);--monster-bg-color-tertiary-2:var(--monster-color-magenta-1);--monster-bg-color-tertiary-3:var(--monster-color-magenta-2);--monster-bg-color-tertiary-4:var(--monster-color-magenta-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-tertiary-1:var(--monster-color-magenta-1);--monster-color-tertiary-2:var(--monster-color-magenta-6);--monster-color-tertiary-3:var(--monster-color-magenta-4);--monster-color-tertiary-4:var(--monster-color-magenta-4);--monster-bg-color-tertiary-1:var(--monster-color-gray-6);--monster-bg-color-tertiary-2:var(--monster-color-magenta-2);--monster-bg-color-tertiary-3:var(--monster-color-magenta-1);--monster-bg-color-tertiary-4:var(--monster-color-magenta-1)}}:after,:before,:root{--monster-color-destructive-1:var(--monster-color-red-1);--monster-color-destructive-2:var(--monster-color-red-4);--monster-color-destructive-3:var(--monster-color-red-6);--monster-color-destructive-4:var(--monster-color-red-1);--monster-bg-color-destructive-1:var(--monster-color-red-4);--monster-bg-color-destructive-2:var(--monster-color-gray-1);--monster-bg-color-destructive-3:var(--monster-color-red-2);--monster-bg-color-destructive-4:var(--monster-color-red-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-destructive-1:var(--monster-color-red-1);--monster-color-destructive-2:var(--monster-color-red-3);--monster-color-destructive-3:var(--monster-color-red-4);--monster-color-destructive-4:var(--monster-color-red-1);--monster-bg-color-destructive-1:var(--monster-color-red-5);--monster-bg-color-destructive-2:var(--monster-color-gray-6);--monster-bg-color-destructive-3:var(--monster-color-red-1);--monster-bg-color-destructive-4:var(--monster-color-red-4)}}:after,:before,:root{--monster-color-success-1:var(--monster-color-green-1);--monster-color-success-2:var(--monster-color-green-4);--monster-color-success-3:var(--monster-color-green-6);--monster-color-success-4:var(--monster-color-green-1);--monster-bg-color-success-1:var(--monster-color-green-3);--monster-bg-color-success-2:var(--monster-color-gray-1);--monster-bg-color-success-3:var(--monster-color-green-2);--monster-bg-color-success-4:var(--monster-color-green-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-success-1:var(--monster-color-green-1);--monster-color-success-2:var(--monster-color-green-2);--monster-color-success-3:var(--monster-color-green-4);--monster-color-success-4:var(--monster-color-green-1);--monster-bg-color-success-1:var(--monster-color-green-5);--monster-bg-color-success-2:var(--monster-color-gray-6);--monster-bg-color-success-3:var(--monster-color-green-1);--monster-bg-color-success-4:var(--monster-color-green-3)}}:after,:before,:root{--monster-color-warning-1:var(--monster-color-orange-1);--monster-color-warning-2:var(--monster-color-orange-4);--monster-color-warning-3:var(--monster-color-orange-6);--monster-color-warning-4:var(--monster-color-orange-1);--monster-bg-color-warning-1:var(--monster-color-orange-3);--monster-bg-color-warning-2:var(--monster-color-gray-1);--monster-bg-color-warning-3:var(--monster-color-orange-2);--monster-bg-color-warning-4:var(--monster-color-orange-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-warning-1:var(--monster-color-orange-1);--monster-color-warning-2:var(--monster-color-orange-3);--monster-color-warning-3:var(--monster-color-orange-4);--monster-color-warning-4:var(--monster-color-orange-1);--monster-bg-color-warning-1:var(--monster-color-orange-5);--monster-bg-color-warning-2:var(--monster-color-gray-6);--monster-bg-color-warning-3:var(--monster-color-orange-1);--monster-bg-color-warning-4:var(--monster-color-orange-3)}}:after,:before,:root{--monster-color-error-1:var(--monster-color-red-1);--monster-color-error-2:var(--monster-color-red-4);--monster-color-error-3:var(--monster-color-red-6);--monster-color-error-4:var(--monster-color-red-1);--monster-bg-color-error-1:var(--monster-color-red-4);--monster-bg-color-error-2:var(--monster-color-gray-1);--monster-bg-color-error-3:var(--monster-color-red-2);--monster-bg-color-error-4:var(--monster-color-red-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-error-1:var(--monster-color-red-1);--monster-color-error-2:var(--monster-color-red-3);--monster-color-error-3:var(--monster-color-red-4);--monster-color-error-4:var(--monster-color-red-1);--monster-bg-color-error-1:var(--monster-color-red-5);--monster-bg-color-error-2:var(--monster-color-gray-6);--monster-bg-color-error-3:var(--monster-color-red-1);--monster-bg-color-error-4:var(--monster-color-red-4)}}:after,:before,:root{--monster-color-selection-1:var(--monster-color-gray-6);--monster-color-selection-2:var(--monster-color-gray-6);--monster-color-selection-3:var(--monster-color-gray-6);--monster-color-selection-4:var(--monster-color-gray-1);--monster-bg-color-selection-1:var(--monster-color-yellow-2);--monster-bg-color-selection-2:var(--monster-color-yellow-1);--monster-bg-color-selection-3:var(--monster-color-yellow-2);--monster-bg-color-selection-4:var(--monster-color-yellow-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-selection-1:var(--monster-color-gray-6);--monster-color-selection-2:var(--monster-color-gray-6);--monster-color-selection-3:var(--monster-color-gray-6);--monster-color-selection-4:var(--monster-color-gray-1);--monster-bg-color-selection-1:var(--monster-color-yellow-2);--monster-bg-color-selection-2:var(--monster-color-yellow-1);--monster-bg-color-selection-3:var(--monster-color-yellow-2);--monster-bg-color-selection-4:var(--monster-color-yellow-6)}}:after,:before,:root{--monster-color-primary-disabled-1:var(--monster-color-gray-4);--monster-color-primary-disabled-2:var(--monster-color-gray-4);--monster-color-primary-disabled-3:var(--monster-color-gray-4);--monster-color-primary-disabled-4:var(--monster-color-gray-4);--monster-bg-color-primary-disabled-1:var(--monster-color-gray-1);--monster-bg-color-primary-disabled-2:var(--monster-color-gray-2);--monster-bg-color-primary-disabled-3:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-4:var(--monster-color-gray-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-primary-disabled-1:var(--monster-color-gray-4);--monster-color-primary-disabled-2:var(--monster-color-gray-4);--monster-color-primary-disabled-3:var(--monster-color-gray-3);--monster-color-primary-disabled-4:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-1:var(--monster-color-gray-6);--monster-bg-color-primary-disabled-2:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-3:var(--monster-color-gray-2);--monster-bg-color-primary-disabled-4:var(--monster-color-gray-1)}}:after,:before,:root{--monster-color-gradient-1:#833ab4;--monster-color-gradient-2:#fd1d1d;--monster-color-gradient-3:#fcb045;--monster-box-shadow-1:none;--monster-box-shadow-2:-1px 1px 10px 1px hsla(0,0%,76%,.61);--monster-text-shadow:none;--monster-theme-control-bg-color:var(--monster-color-seashell-1);--monster-theme-control-color:var(--monster-color-seashell-6);--monster-theme-control-hover-color:var(--monster-color-seashell-6);--monster-theme-control-hover-bg-color:var(--monster-color-seashell-2);--monster-theme-control-border-width:2px;--monster-theme-control-border-style:solid;--monster-theme-control-border-radius:0;--monster-theme-control-border-color:var(--monster-color-primary-1)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-theme-control-bg-color:var(--monster-color-gray-5);--monster-theme-control-color:var(--monster-color-gray-1);--monster-theme-control-border-color:var(--monster-color-gray-3);--monster-theme-control-hover-color:var(--monster-color-gray-1);--monster-theme-control-hover-bg-color:var(--monster-color-gray-6)}}:after,:before,:root{--monster-theme-on-color:var(--monster-color-green-1);--monster-theme-on-bg-color:var(--monster-color-green-5);--monster-theme-off-color:var(--monster-color-gray-1);--monster-theme-off-bg-color:var(--monster-color-gray-4)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-theme-on-color:var(--monster-color-gray-6);--monster-theme-on-bg-color:var(--monster-color-gray-1);--monster-theme-off-color:var(--monster-color-gray-1);--monster-theme-off-bg-color:var(--monster-color-gray-5)}}:after,:before,:root{--monster-border-style:solid;--monster-border-width:3px;--monster-border-radius:0;--monster-popper-witharrrow-distance:-4px;--monster-z-index-default:0;--monster-z-index-outline:10;--monster-z-index-dropdown:200;--monster-z-index-dropdown-overlay:210;--monster-z-index-sticky:300;--monster-z-index-sticky-overlay:310;--monster-z-index-fixed:400;--monster-z-index-fixed-overlay:410;--monster-z-index-modal-backdrop:500;--monster-z-index-modal-backdrop-overlay:510;--monster-z-index-offcanvas:600;--monster-z-index-offcanvas-overlay:610;--monster-z-index-modal:700;--monster-z-index-modal-overlay:710;--monster-z-index-popover:800;--monster-z-index-popover-overlay:810;--monster-z-index-tooltip:800;--monster-z-index-tooltip-overlay:910;--monster-space-0:0;--monster-space-1:2px;--monster-space-2:4px;--monster-space-3:6px;--monster-space-4:10px;--monster-space-5:16px;--monster-space-6:26px;--monster-space-7:42px;--monster-breakpoint-0:480px;--monster-breakpoint-4:480px;--monster-breakpoint-7:768px;--monster-breakpoint-9:992px;--monster-breakpoint-12:1200px;--monster-dragger-width:2px;--monster-dragger-handle-width:4px;--monster-dragger-handle-height:50px}span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:hsla(0,0%,100%,.7);border-radius:50%;position:absolute;transform:scale(0)}@keyframes monster-fx-ripple{to{opacity:0;transform:scale(4)}}[data-monster-role=control]{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;width:-moz-fit-content;width:fit-content}[data-monster-role=control] .monster-spinner{height:1.5rem!important;visibility:hidden;width:1.5rem!important}[data-monster-role=control] [data-monster-state-loader=show]{visibility:visible}:host{align-items:center;align-self:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;width:-moz-fit-content;width:fit-content}
28
+ :where(html){line-height:1.15;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}:where(h1){font-size:2em;margin-block-end:.67em;margin-block-start:.67em}:where(dl,ol,ul) :where(dl,ol,ul){margin-block-end:0;margin-block-start:0}:where(hr){box-sizing:content-box;color:inherit;height:0}:where(abbr[title]){text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:where(b,strong){font-weight:bolder}:where(code,kbd,pre,samp){font-family:monospace,monospace;font-size:1em}:where(small){font-size:80%}:where(table){border-color:currentColor;text-indent:0}:where(button,input,select){margin:0}:where(button){text-transform:none}:where(button,input:is([type=button i],[type=reset i],[type=submit i])){-webkit-appearance:button}:where(progress){vertical-align:baseline}:where(select){text-transform:none}:where(textarea){margin:0}:where(input[type=search i]){-webkit-appearance:textfield;outline-offset:-2px}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}:where(button,input:is([type=button i],[type=color i],[type=reset i],[type=submit i]))::-moz-focus-inner{border-style:none;padding:0}:where(button,input:is([type=button i],[type=color i],[type=reset i],[type=submit i]))::-moz-focusring{outline:1px dotted ButtonText}:where(:-moz-ui-invalid){box-shadow:none}:where(dialog){background-color:#fff;border:solid;color:#000;height:-moz-fit-content;height:fit-content;left:0;margin:auto;padding:1em;position:absolute;right:0;width:-moz-fit-content;width:fit-content}:where(dialog:not([open])){display:none}:where(summary){display:list-item}html{height:100%}body,html{min-height:calc(100vh - 40px)}body{box-sizing:border-box;margin:0;padding:0;word-break:break-word}body:focus-visible{outline:none}:focus-visible{outline:none}.block{display:block}.inline{display:inline}.inline-block{display:inline-block}.grid{display:grid}.inline-grid{display:inline-grid}.flex{display:flex}.inline-flex{display:inline-flex}.hidden,.hide,.none{display:none}.visible{visibility:visible}.invisible{visibility:hidden}.monster-button-primary,button{align-items:center;background-color:var(--monster-bg-color-primary-1);background-position:50%;border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);box-shadow:var(--monster-box-shadow-1);color:var(--monster-color-primary-1);cursor:pointer;display:flex;font-family:var(--monster-font-family);font-size:1rem;font-weight:400;gap:.4rem;justify-content:center;line-height:1.5;outline:none;overflow:hidden;padding:.375rem .75rem;position:relative;text-align:center;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:-webkit-fill-available;width:-moz-available;width:stretch}.monster-button-primary{background-color:var(--monster-bg-color-primary-4);border-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-button-secondary{background-color:var(--monster-bg-color-primary-1);background-color:var(--monster-bg-color-secondary-4);border-color:var(--monster-bg-color-secondary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);color:var(--monster-color-primary-1);color:var(--monster-color-secondary-4)}.monster-button-secondary,.monster-button-tertiary{align-items:center;background-position:50%;box-shadow:var(--monster-box-shadow-1);cursor:pointer;display:flex;font-family:var(--monster-font-family);font-size:1rem;font-weight:400;gap:.4rem;justify-content:center;line-height:1.5;outline:none;overflow:hidden;padding:.375rem .75rem;position:relative;text-align:center;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:-webkit-fill-available;width:-moz-available;width:stretch}.monster-button-tertiary{background-color:var(--monster-bg-color-primary-1);background-color:var(--monster-bg-color-tertiary-4);border-color:var(--monster-bg-color-tertiary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);color:var(--monster-color-primary-1);color:var(--monster-color-tertiary-4)}.monster-button-outline-primary{background-color:var(--monster-bg-color-primary-1);background-color:var(--monster-color-primary-4);border-color:var(--monster-bg-color-primary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);color:var(--monster-color-primary-1);color:var(--monster-bg-color-primary-4)}.monster-button-outline-primary,.monster-button-outline-secondary{align-items:center;background-position:50%;box-shadow:var(--monster-box-shadow-1);cursor:pointer;display:flex;font-family:var(--monster-font-family);font-size:1rem;font-weight:400;gap:.4rem;justify-content:center;line-height:1.5;outline:none;overflow:hidden;padding:.375rem .75rem;position:relative;text-align:center;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:-webkit-fill-available;width:-moz-available;width:stretch}.monster-button-outline-secondary{background-color:var(--monster-bg-color-primary-1);background-color:var(--monster-color-secondary-4);border-color:var(--monster-bg-color-secondary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);color:var(--monster-color-primary-1);color:var(--monster-bg-color-secondary-4)}.monster-button-outline-tertiary{align-items:center;background-color:var(--monster-bg-color-primary-1);background-color:var(--monster-color-tertiary-4);background-position:50%;border-color:var(--monster-bg-color-tertiary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);box-shadow:var(--monster-box-shadow-1);color:var(--monster-color-primary-1);color:var(--monster-bg-color-tertiary-4);cursor:pointer;display:flex;font-family:var(--monster-font-family);font-size:1rem;font-weight:400;gap:.4rem;justify-content:center;line-height:1.5;outline:none;overflow:hidden;padding:.375rem .75rem;position:relative;text-align:center;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:-webkit-fill-available;width:-moz-available;width:stretch}button:active,button:hover{box-shadow:var(--monster-box-shadow-2);transition:background .8s,color .25s .0833333333s}button:active{z-index:var(--monster-z-index-outline)}.monster-button-bar,.monster-button-group{align-content:center;align-items:stretch;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.monster-button-group{box-sizing:border-box;gap:0;margin:1rem 0}.monster-button-group>:not(:last-child){margin-right:calc(var(--monster-border-width)*-1)}.monster-button-group :hover{box-shadow:none}button:focus{outline:1px dashed var(--monster-color-selection-4);outline-offset:2px;z-index:var(--monster-z-index-outline)}@media (prefers-color-scheme:light){button:focus{outline:1px dashed var(--monster-color-selection-3);outline-offset:2px;z-index:var(--monster-z-index-outline)}}[data-monster-role=control]{box-sizing:border-box;outline:none;width:100%}[data-monster-role=control].flex{align-items:center;display:flex;flex-direction:row}:host{box-sizing:border-box;display:block}:after,:before,:root{--monster-font-family:-apple-system,BlinkMacSystemFont,\"Quicksand\",\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";--monster-font-family-monospace:\"Consolas\",\"Courier New\",\"Roboto Mono\",\"Source Code Pro\",\"Fira Mono\",monospace;--monster-color-primary-1:var(--monster-color-gray-6);--monster-color-primary-2:var(--monster-color-gray-6);--monster-color-primary-3:var(--monster-color-cinnamon-1);--monster-color-primary-4:var(--monster-color-cinnamon-1);--monster-bg-color-primary-1:var(--monster-color-gray-1);--monster-bg-color-primary-2:var(--monster-color-gray-2);--monster-bg-color-primary-3:var(--monster-color-gray-6);--monster-bg-color-primary-4:var(--monster-color-gray-4)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-primary-1:var(--monster-color-gray-1);--monster-color-primary-2:var(--monster-color-gray-1);--monster-color-primary-3:var(--monster-color-gray-6);--monster-color-primary-4:var(--monster-color-gray-6);--monster-bg-color-primary-1:var(--monster-color-gray-6);--monster-bg-color-primary-2:var(--monster-color-gray-3);--monster-bg-color-primary-3:var(--monster-color-gray-2);--monster-bg-color-primary-4:var(--monster-color-gray-1)}}:after,:before,:root{--monster-color-secondary-1:var(--monster-color-red-4);--monster-color-secondary-2:var(--monster-color-red-4);--monster-color-secondary-3:var(--monster-color-red-1);--monster-color-secondary-4:var(--monster-color-red-1);--monster-bg-color-secondary-1:var(--monster-color-gray-1);--monster-bg-color-secondary-2:var(--monster-color-red-2);--monster-bg-color-secondary-3:var(--monster-color-red-3);--monster-bg-color-secondary-4:var(--monster-color-red-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-secondary-1:var(--monster-color-red-1);--monster-color-secondary-2:var(--monster-color-red-1);--monster-color-secondary-3:var(--monster-color-red-6);--monster-color-secondary-4:var(--monster-color-red-4);--monster-bg-color-secondary-1:var(--monster-color-gray-6);--monster-bg-color-secondary-2:var(--monster-color-red-3);--monster-bg-color-secondary-3:var(--monster-color-red-2);--monster-bg-color-secondary-4:var(--monster-color-red-1)}}:after,:before,:root{--monster-color-tertiary-1:var(--monster-color-magenta-4);--monster-color-tertiary-2:var(--monster-color-magenta-4);--monster-color-tertiary-3:var(--monster-color-magenta-6);--monster-color-tertiary-4:var(--monster-color-magenta-1);--monster-bg-color-tertiary-1:var(--monster-color-gray-1);--monster-bg-color-tertiary-2:var(--monster-color-magenta-1);--monster-bg-color-tertiary-3:var(--monster-color-magenta-2);--monster-bg-color-tertiary-4:var(--monster-color-magenta-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-tertiary-1:var(--monster-color-magenta-1);--monster-color-tertiary-2:var(--monster-color-magenta-6);--monster-color-tertiary-3:var(--monster-color-magenta-4);--monster-color-tertiary-4:var(--monster-color-magenta-4);--monster-bg-color-tertiary-1:var(--monster-color-gray-6);--monster-bg-color-tertiary-2:var(--monster-color-magenta-2);--monster-bg-color-tertiary-3:var(--monster-color-magenta-1);--monster-bg-color-tertiary-4:var(--monster-color-magenta-1)}}:after,:before,:root{--monster-color-destructive-1:var(--monster-color-red-1);--monster-color-destructive-2:var(--monster-color-red-4);--monster-color-destructive-3:var(--monster-color-red-6);--monster-color-destructive-4:var(--monster-color-red-1);--monster-bg-color-destructive-1:var(--monster-color-red-4);--monster-bg-color-destructive-2:var(--monster-color-gray-1);--monster-bg-color-destructive-3:var(--monster-color-red-2);--monster-bg-color-destructive-4:var(--monster-color-red-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-destructive-1:var(--monster-color-red-1);--monster-color-destructive-2:var(--monster-color-red-3);--monster-color-destructive-3:var(--monster-color-red-4);--monster-color-destructive-4:var(--monster-color-red-1);--monster-bg-color-destructive-1:var(--monster-color-red-5);--monster-bg-color-destructive-2:var(--monster-color-gray-6);--monster-bg-color-destructive-3:var(--monster-color-red-1);--monster-bg-color-destructive-4:var(--monster-color-red-4)}}:after,:before,:root{--monster-color-success-1:var(--monster-color-green-1);--monster-color-success-2:var(--monster-color-green-4);--monster-color-success-3:var(--monster-color-green-6);--monster-color-success-4:var(--monster-color-green-1);--monster-bg-color-success-1:var(--monster-color-green-3);--monster-bg-color-success-2:var(--monster-color-gray-1);--monster-bg-color-success-3:var(--monster-color-green-2);--monster-bg-color-success-4:var(--monster-color-green-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-success-1:var(--monster-color-green-1);--monster-color-success-2:var(--monster-color-green-2);--monster-color-success-3:var(--monster-color-green-4);--monster-color-success-4:var(--monster-color-green-1);--monster-bg-color-success-1:var(--monster-color-green-5);--monster-bg-color-success-2:var(--monster-color-gray-6);--monster-bg-color-success-3:var(--monster-color-green-1);--monster-bg-color-success-4:var(--monster-color-green-3)}}:after,:before,:root{--monster-color-warning-1:var(--monster-color-orange-1);--monster-color-warning-2:var(--monster-color-orange-4);--monster-color-warning-3:var(--monster-color-orange-6);--monster-color-warning-4:var(--monster-color-orange-1);--monster-bg-color-warning-1:var(--monster-color-orange-3);--monster-bg-color-warning-2:var(--monster-color-gray-1);--monster-bg-color-warning-3:var(--monster-color-orange-2);--monster-bg-color-warning-4:var(--monster-color-orange-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-warning-1:var(--monster-color-orange-1);--monster-color-warning-2:var(--monster-color-orange-3);--monster-color-warning-3:var(--monster-color-orange-4);--monster-color-warning-4:var(--monster-color-orange-1);--monster-bg-color-warning-1:var(--monster-color-orange-5);--monster-bg-color-warning-2:var(--monster-color-gray-6);--monster-bg-color-warning-3:var(--monster-color-orange-1);--monster-bg-color-warning-4:var(--monster-color-orange-3)}}:after,:before,:root{--monster-color-error-1:var(--monster-color-red-1);--monster-color-error-2:var(--monster-color-red-4);--monster-color-error-3:var(--monster-color-red-6);--monster-color-error-4:var(--monster-color-red-1);--monster-bg-color-error-1:var(--monster-color-red-4);--monster-bg-color-error-2:var(--monster-color-gray-1);--monster-bg-color-error-3:var(--monster-color-red-2);--monster-bg-color-error-4:var(--monster-color-red-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-error-1:var(--monster-color-red-1);--monster-color-error-2:var(--monster-color-red-3);--monster-color-error-3:var(--monster-color-red-4);--monster-color-error-4:var(--monster-color-red-1);--monster-bg-color-error-1:var(--monster-color-red-5);--monster-bg-color-error-2:var(--monster-color-gray-6);--monster-bg-color-error-3:var(--monster-color-red-1);--monster-bg-color-error-4:var(--monster-color-red-4)}}:after,:before,:root{--monster-color-selection-1:var(--monster-color-gray-6);--monster-color-selection-2:var(--monster-color-gray-6);--monster-color-selection-3:var(--monster-color-gray-6);--monster-color-selection-4:var(--monster-color-gray-1);--monster-bg-color-selection-1:var(--monster-color-yellow-2);--monster-bg-color-selection-2:var(--monster-color-yellow-1);--monster-bg-color-selection-3:var(--monster-color-yellow-2);--monster-bg-color-selection-4:var(--monster-color-yellow-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-selection-1:var(--monster-color-gray-6);--monster-color-selection-2:var(--monster-color-gray-6);--monster-color-selection-3:var(--monster-color-gray-6);--monster-color-selection-4:var(--monster-color-gray-1);--monster-bg-color-selection-1:var(--monster-color-yellow-2);--monster-bg-color-selection-2:var(--monster-color-yellow-1);--monster-bg-color-selection-3:var(--monster-color-yellow-2);--monster-bg-color-selection-4:var(--monster-color-yellow-6)}}:after,:before,:root{--monster-color-primary-disabled-1:var(--monster-color-gray-4);--monster-color-primary-disabled-2:var(--monster-color-gray-4);--monster-color-primary-disabled-3:var(--monster-color-gray-4);--monster-color-primary-disabled-4:var(--monster-color-gray-4);--monster-bg-color-primary-disabled-1:var(--monster-color-gray-1);--monster-bg-color-primary-disabled-2:var(--monster-color-gray-2);--monster-bg-color-primary-disabled-3:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-4:var(--monster-color-gray-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-primary-disabled-1:var(--monster-color-gray-4);--monster-color-primary-disabled-2:var(--monster-color-gray-4);--monster-color-primary-disabled-3:var(--monster-color-gray-3);--monster-color-primary-disabled-4:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-1:var(--monster-color-gray-6);--monster-bg-color-primary-disabled-2:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-3:var(--monster-color-gray-2);--monster-bg-color-primary-disabled-4:var(--monster-color-gray-1)}}:after,:before,:root{--monster-color-gradient-1:#833ab4;--monster-color-gradient-2:#fd1d1d;--monster-color-gradient-3:#fcb045;--monster-box-shadow-1:none;--monster-box-shadow-2:-1px 1px 10px 1px hsla(0,0%,76%,.61);--monster-text-shadow:none;--monster-theme-control-bg-color:var(--monster-color-seashell-1);--monster-theme-control-color:var(--monster-color-seashell-6);--monster-theme-control-hover-color:var(--monster-color-seashell-6);--monster-theme-control-hover-bg-color:var(--monster-color-seashell-2);--monster-theme-control-border-width:2px;--monster-theme-control-border-style:solid;--monster-theme-control-border-radius:0;--monster-theme-control-border-color:var(--monster-color-primary-1)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-theme-control-bg-color:var(--monster-color-gray-5);--monster-theme-control-color:var(--monster-color-gray-1);--monster-theme-control-border-color:var(--monster-color-gray-3);--monster-theme-control-hover-color:var(--monster-color-gray-1);--monster-theme-control-hover-bg-color:var(--monster-color-gray-6)}}:after,:before,:root{--monster-theme-on-color:var(--monster-color-green-1);--monster-theme-on-bg-color:var(--monster-color-green-5);--monster-theme-off-color:var(--monster-color-gray-1);--monster-theme-off-bg-color:var(--monster-color-gray-4)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-theme-on-color:var(--monster-color-gray-6);--monster-theme-on-bg-color:var(--monster-color-gray-1);--monster-theme-off-color:var(--monster-color-gray-1);--monster-theme-off-bg-color:var(--monster-color-gray-5)}}:after,:before,:root{--monster-border-style:solid;--monster-border-width:3px;--monster-border-radius:0;--monster-outline-width:1px;--monster-popper-witharrrow-distance:-4px;--monster-z-index-default:0;--monster-z-index-outline:10;--monster-z-index-dropdown:200;--monster-z-index-dropdown-overlay:210;--monster-z-index-sticky:300;--monster-z-index-sticky-overlay:310;--monster-z-index-fixed:400;--monster-z-index-fixed-overlay:410;--monster-z-index-modal-backdrop:500;--monster-z-index-modal-backdrop-overlay:510;--monster-z-index-offcanvas:600;--monster-z-index-offcanvas-overlay:610;--monster-z-index-modal:700;--monster-z-index-modal-overlay:710;--monster-z-index-popover:800;--monster-z-index-popover-overlay:810;--monster-z-index-tooltip:800;--monster-z-index-tooltip-overlay:910;--monster-space-0:0;--monster-space-1:2px;--monster-space-2:4px;--monster-space-3:6px;--monster-space-4:10px;--monster-space-5:16px;--monster-space-6:26px;--monster-space-7:42px;--monster-breakpoint-0:480px;--monster-breakpoint-4:480px;--monster-breakpoint-7:768px;--monster-breakpoint-9:992px;--monster-breakpoint-12:1200px;--monster-dragger-width:2px;--monster-dragger-handle-width:4px;--monster-dragger-handle-height:50px}span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:hsla(0,0%,100%,.7);border-radius:50%;position:absolute;transform:scale(0)}@keyframes monster-fx-ripple{to{opacity:0;transform:scale(4)}}.monster-spinner{height:100%;-webkit-mask:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='red' viewBox='0 0 44 44'%3E%3Cg fill='none' fill-rule='evenodd' stroke-width='2'%3E%3Ccircle cx='22' cy='22' r='1'%3E%3Canimate attributeName='r' begin='0s' calcMode='spline' dur='1.8s' keySplines='0.165, 0.84, 0.44, 1' keyTimes='0; 1' repeatCount='indefinite' values='1; 20'/%3E%3Canimate attributeName='stroke-opacity' begin='0s' calcMode='spline' dur='1.8s' keySplines='0.3, 0.61, 0.355, 1' keyTimes='0; 1' repeatCount='indefinite' values='1; 0'/%3E%3C/circle%3E%3Ccircle cx='22' cy='22' r='1'%3E%3Canimate attributeName='r' begin='-0.9s' calcMode='spline' dur='1.8s' keySplines='0.165, 0.84, 0.44, 1' keyTimes='0; 1' repeatCount='indefinite' values='1; 20'/%3E%3Canimate attributeName='stroke-opacity' begin='-0.9s' calcMode='spline' dur='1.8s' keySplines='0.3, 0.61, 0.355, 1' keyTimes='0; 1' repeatCount='indefinite' values='1; 0'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\") no-repeat 50% 50%;mask:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke='red' viewBox='0 0 44 44'%3E%3Cg fill='none' fill-rule='evenodd' stroke-width='2'%3E%3Ccircle cx='22' cy='22' r='1'%3E%3Canimate attributeName='r' begin='0s' calcMode='spline' dur='1.8s' keySplines='0.165, 0.84, 0.44, 1' keyTimes='0; 1' repeatCount='indefinite' values='1; 20'/%3E%3Canimate attributeName='stroke-opacity' begin='0s' calcMode='spline' dur='1.8s' keySplines='0.3, 0.61, 0.355, 1' keyTimes='0; 1' repeatCount='indefinite' values='1; 0'/%3E%3C/circle%3E%3Ccircle cx='22' cy='22' r='1'%3E%3Canimate attributeName='r' begin='-0.9s' calcMode='spline' dur='1.8s' keySplines='0.165, 0.84, 0.44, 1' keyTimes='0; 1' repeatCount='indefinite' values='1; 20'/%3E%3Canimate attributeName='stroke-opacity' begin='-0.9s' calcMode='spline' dur='1.8s' keySplines='0.3, 0.61, 0.355, 1' keyTimes='0; 1' repeatCount='indefinite' values='1; 0'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\") no-repeat 50% 50%}[data-monster-role=control]{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;width:-moz-fit-content;width:fit-content}[data-monster-role=control] .monster-spinner{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4);height:1.5rem!important;visibility:hidden;width:1.5rem!important}[data-monster-role=control] [data-monster-state-loader=show]{opacity:1;transition:opacity 1s ease-in-out,visibility 1.1s ease-in-out;visibility:visible}[data-monster-role=control] [data-monster-state-loader=hide]{opacity:0;transition:opacity 1s ease-in-out,visibility 1.1s ease-in-out;visibility:hidden}:host{align-items:center;align-self:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;width:-moz-fit-content;width:fit-content}
29
29
  }`,
30
30
  0,
31
31
  );
@@ -29,8 +29,7 @@ const datasourceLinkedElementSymbol = Symbol("datasourceLinkedElement");
29
29
  * @private
30
30
  */
31
31
  function handleDataSourceChanges() {
32
-
33
- if (!this[datasourceLinkedElementSymbol]) {
32
+ if (!this[datasourceLinkedElementSymbol]) {
34
33
  return;
35
34
  }
36
35
 
@@ -51,7 +51,7 @@ export { ApiBar };
51
51
  *
52
52
  * @fragments /fragments/components/form/api-bar/
53
53
  *
54
- * @example /examples/components/form/api-bar-simple
54
+ * @example /examples/components/form/api-bar-simple API Bar
55
55
  *
56
56
  * @since 3.90.0
57
57
  * @copyright schukai GmbH
@@ -56,7 +56,7 @@ const containerElementSymbol = Symbol("containerElement");
56
56
  *
57
57
  * @fragments /fragments/components/form/api-button/
58
58
  *
59
- * @example /examples/components/form/api-button-simple
59
+ * @example /examples/components/form/api-button-simple API Button
60
60
  *
61
61
  * @since 3.32.0
62
62
  * @copyright schukai GmbH
@@ -129,7 +129,7 @@ const ATTRIBUTE_POPPER_POSITION = "data-monster-popper-position";
129
129
  *
130
130
  * @fragments /fragments/components/form/button-bar/
131
131
  *
132
- * @example /examples/components/form/button-bar-simple
132
+ * @example /examples/components/form/button-bar-simple Button bar
133
133
  *
134
134
  * @copyright schukai GmbH
135
135
  * @summary This is a button bar control that can be used to display a set of buttons.
@@ -44,8 +44,8 @@ export const buttonElementSymbol = Symbol("buttonElement");
44
44
  *
45
45
  * @fragments /fragments/components/form/button/
46
46
  *
47
- * @example /examples/components/form/button-simple
48
- * @example /examples/components/form/button-with-click-event
47
+ * @example /examples/components/form/button-simple Simple Button
48
+ * @example /examples/components/form/button-with-click-event Button with event
49
49
  *
50
50
  * @copyright schukai GmbH
51
51
  * @summary A beautiful button that can make your life easier and also looks good.
@@ -93,7 +93,7 @@ const cancelButtonElementSymbol = Symbol("cancelButtonElement");
93
93
  *
94
94
  * @fragments /fragments/components/form/confirm-button/
95
95
  *
96
- * @example /examples/components/form/confirm-button-simple
96
+ * @example /examples/components/form/confirm-button-simple confirm button
97
97
  *
98
98
  * @since 1.5.0
99
99
  * @copyright schukai GmbH
@@ -83,7 +83,7 @@ class Form extends DataSet {
83
83
  },
84
84
 
85
85
  reportValidity: {
86
- selector: "input,select,textarea",
86
+ selector: "input,select,textarea,monster-select,monster-toggle-switch",
87
87
  },
88
88
 
89
89
  eventProcessing: true,
@@ -130,12 +130,13 @@ class Form extends DataSet {
130
130
  /**
131
131
  * This method is called when the component is created.
132
132
  * @since 3.70.0
133
- * @return {DataSet}
133
+ * @return {Promise}
134
134
  */
135
135
  refresh() {
136
- this.write();
137
- super.refresh();
138
- return this;
136
+ return this.write().then(() => {
137
+ super.refresh();
138
+ return this;
139
+ });
139
140
  }
140
141
 
141
142
  /**
@@ -38,7 +38,7 @@ import {
38
38
  fireCustomEvent,
39
39
  fireEvent,
40
40
  } from "../../dom/events.mjs";
41
- import { getDocument } from "../../dom/util.mjs";
41
+ import { getDocument, getWindow } from "../../dom/util.mjs";
42
42
  import { Formatter } from "../../text/formatter.mjs";
43
43
  import { getGlobal } from "../../types/global.mjs";
44
44
  import { ID } from "../../types/id.mjs";
@@ -281,6 +281,7 @@ const FILTER_POSITION_INLINE = "inline";
281
281
  * @fragments /fragments/components/form/select/
282
282
  *
283
283
  * @example /examples/components/form/select-with-options Select with options
284
+ * @example /examples/components/form/select-with-html-options Select with HTML options
284
285
  * @example /examples/components/form/select-multiple Multiple selection
285
286
  * @example /examples/components/form/select-filter Filter
286
287
  * @example /examples/components/form/select-fetch Fetch options
@@ -1011,12 +1012,12 @@ function parseSlotsToOptions() {
1011
1012
  value = node.getAttribute("data-monster-value");
1012
1013
  }
1013
1014
 
1015
+ let label = node.outerHTML;
1016
+
1014
1017
  if (node.style.display === "none") {
1015
1018
  visibility = "hidden";
1016
1019
  }
1017
1020
 
1018
- const label = node.outerHTML;
1019
-
1020
1021
  options.push({
1021
1022
  value,
1022
1023
  label,
@@ -1171,7 +1172,7 @@ function initOptionObserver() {
1171
1172
  try {
1172
1173
  self.updateI18n();
1173
1174
  } catch (e) {
1174
- console.error(e);
1175
+ addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, e.message);
1175
1176
  requestAnimationFrame(() => {
1176
1177
  setStatusOrRemoveBadges.call(self, "error");
1177
1178
  });
@@ -1179,7 +1180,7 @@ function initOptionObserver() {
1179
1180
  try {
1180
1181
  areOptionsAvailableAndInit.call(self);
1181
1182
  } catch (e) {
1182
- console.error(e);
1183
+ addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, e.message);
1183
1184
  requestAnimationFrame(() => {
1184
1185
  setStatusOrRemoveBadges.call(self, "error");
1185
1186
  });
@@ -1233,7 +1234,7 @@ function setSummaryAndControlText() {
1233
1234
  current === msg ||
1234
1235
  current === null
1235
1236
  ) {
1236
- if (selections === undefined || selections.length === 0) {
1237
+ if (selections.length === 0) {
1237
1238
  this.setOption("messages.control", msg);
1238
1239
  } else {
1239
1240
  this.setOption("messages.control", "");
@@ -2069,17 +2070,17 @@ function convertSelectionToValue(selection) {
2069
2070
  * @throws {Error} no shadow-root is defined
2070
2071
  */
2071
2072
  function setSelection(selection) {
2072
- if (isString(selection)) {
2073
+ if (isString(selection) || isInteger(selection)) {
2073
2074
  const result = convertValueToSelection.call(this, selection);
2074
2075
  selection = result?.selection;
2075
- } else if (selection === undefined) {
2076
+ } else if (selection === undefined || selection === null) {
2076
2077
  selection = [];
2077
2078
  }
2078
2079
 
2079
2080
  validateArray(selection);
2080
2081
 
2081
2082
  for (let i = 0; i < selection.length; i++) {
2082
- var l = getSelectionLabel.call(this, selection[i].value);
2083
+ let l = getSelectionLabel.call(this, selection[i].value);
2083
2084
  if (l === selection[i].value) {
2084
2085
  l = selection[i].label;
2085
2086
  }
@@ -2092,6 +2093,7 @@ function setSelection(selection) {
2092
2093
 
2093
2094
  this.setOption("selection", selection);
2094
2095
  checkOptionState.call(this);
2096
+ setSummaryAndControlText.call(this);
2095
2097
 
2096
2098
  try {
2097
2099
  this?.setFormValue(this.value);
@@ -2124,6 +2126,7 @@ function setSelection(selection) {
2124
2126
  }
2125
2127
 
2126
2128
  const selected = this.shadowRoot.querySelectorAll(":checked");
2129
+
2127
2130
  if (selected) {
2128
2131
  selected.forEach((node) => {
2129
2132
  const parent = node.closest(`[${ATTRIBUTE_ROLE}=option]`);