@schukai/monster 3.111.0 → 3.112.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 (29) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/package.json +1 -1
  3. package/source/components/content/camera.mjs +339 -329
  4. package/source/components/content/stylesheet/camera-capture.mjs +13 -6
  5. package/source/components/datatable/status.mjs +175 -177
  6. package/source/components/form/reload.mjs +1 -2
  7. package/source/components/form/util/fetch.mjs +5 -2
  8. package/source/components/layout/popper.mjs +1 -1
  9. package/source/components/layout/slider.mjs +1 -1
  10. package/source/components/time/month-calendar.mjs +819 -0
  11. package/source/components/time/style/month-calendar.pcss +100 -0
  12. package/source/components/time/stylesheet/month-calendar.mjs +31 -0
  13. package/source/components/time/timeline/collection.mjs +205 -0
  14. package/source/components/time/timeline/item.mjs +184 -0
  15. package/source/components/time/timeline/segment.mjs +169 -0
  16. package/source/components/time/timeline/style/segment.pcss +18 -0
  17. package/source/components/time/timeline/stylesheet/segment.mjs +38 -0
  18. package/source/data/datasource/server/restapi/data-fetch-error.mjs +3 -3
  19. package/source/data/datasource/server/restapi.mjs +1 -1
  20. package/source/data/transformer.mjs +60 -0
  21. package/source/monster.mjs +4 -0
  22. package/source/text/bracketed-key-value-hash.mjs +187 -187
  23. package/source/types/base.mjs +6 -5
  24. package/source/types/basewithoptions.mjs +4 -1
  25. package/source/types/internal.mjs +1 -1
  26. package/source/types/version.mjs +1 -1
  27. package/test/cases/monster.mjs +1 -1
  28. package/test/web/test.html +2 -2
  29. package/test/web/tests.js +1135 -976
@@ -10,10 +10,10 @@
10
10
  * For more information about purchasing a commercial license, please contact schukai GmbH.
11
11
  */
12
12
 
13
- import {addAttributeToken} from "../../../dom/attributes.mjs";
14
- import {ATTRIBUTE_ERRORMESSAGE} from "../../../dom/constants.mjs";
13
+ import { addAttributeToken } from "../../../dom/attributes.mjs";
14
+ import { ATTRIBUTE_ERRORMESSAGE } from "../../../dom/constants.mjs";
15
15
 
16
- export {CameraCaptureStyleSheet}
16
+ export { CameraCaptureStyleSheet };
17
17
 
18
18
  /**
19
19
  * @private
@@ -22,10 +22,17 @@ export {CameraCaptureStyleSheet}
22
22
  const CameraCaptureStyleSheet = new CSSStyleSheet();
23
23
 
24
24
  try {
25
- CameraCaptureStyleSheet.insertRule(`
25
+ CameraCaptureStyleSheet.insertRule(
26
+ `
26
27
  @layer cameracapture {
27
28
  [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}div[data-monster-role=popper]{align-content:center;background:var(--monster-bg-color-primary-1);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);box-shadow:var(--monster-box-shadow-1);box-sizing:border-box;color:var(--monster-color-primary-1);display:none;justify-content:space-between;left:0;padding:1.1em;position:absolute;top:0;width:-moz-max-content;width:max-content;z-index:var(--monster-z-index-modal)}div[data-monster-role=popper] div[data-monster-role=arrow]{background:var(--monster-bg-color-primary-1);height:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);pointer-events:none;position:absolute;width:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);z-index:-1}[data-monster-role=control]{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);box-shadow:var(--monster-box-shadow-1);color:var(--monster-bg-color-primary-4);display:flex;flex-direction:column;justify-content:space-between;margin:0;padding:0}canvas,video{display:block;max-height:100%;max-width:100%}monster-button::part(button){border:none}
28
- }`, 0);
29
+ }`,
30
+ 0,
31
+ );
29
32
  } catch (e) {
30
- addAttributeToken(document.getRootNode().querySelector('html'), ATTRIBUTE_ERRORMESSAGE, e + "");
33
+ addAttributeToken(
34
+ document.getRootNode().querySelector("html"),
35
+ ATTRIBUTE_ERRORMESSAGE,
36
+ e + "",
37
+ );
31
38
  }
@@ -13,26 +13,26 @@
13
13
  */
14
14
 
15
15
  import {
16
- assembleMethodSymbol,
17
- CustomElement,
18
- registerCustomElement,
16
+ assembleMethodSymbol,
17
+ CustomElement,
18
+ registerCustomElement,
19
19
  } from "../../dom/customelement.mjs";
20
- import {findElementWithSelectorUpwards} from "../../dom/util.mjs";
21
- import {ThemeStyleSheet} from "../stylesheet/theme.mjs";
22
- import {Datasource} from "./datasource.mjs";
23
- import {SpinnerStyleSheet} from "../stylesheet/spinner.mjs";
24
- import {isString} from "../../types/is.mjs";
25
- import {instanceSymbol} from "../../constants.mjs";
20
+ import { findElementWithSelectorUpwards } from "../../dom/util.mjs";
21
+ import { ThemeStyleSheet } from "../stylesheet/theme.mjs";
22
+ import { Datasource } from "./datasource.mjs";
23
+ import { SpinnerStyleSheet } from "../stylesheet/spinner.mjs";
24
+ import { isString } from "../../types/is.mjs";
25
+ import { instanceSymbol } from "../../constants.mjs";
26
26
  import "../form/select.mjs";
27
27
 
28
28
  import "./datasource/dom.mjs";
29
29
  import "./datasource/rest.mjs";
30
30
  import "../form/popper.mjs";
31
31
  import "../form/context-error.mjs";
32
- import {StatusStyleSheet} from "./stylesheet/status.mjs";
33
- import {Formatter} from "../../text/formatter.mjs";
32
+ import { StatusStyleSheet } from "./stylesheet/status.mjs";
33
+ import { Formatter } from "../../text/formatter.mjs";
34
34
 
35
- export {DatasourceStatus};
35
+ export { DatasourceStatus };
36
36
 
37
37
  /**
38
38
  * @private
@@ -59,97 +59,96 @@ const datasourceLinkedElementSymbol = Symbol("datasourceLinkedElement");
59
59
  * @summary The Status component is used to show the current status of a datasource.
60
60
  */
61
61
  class DatasourceStatus extends CustomElement {
62
- /**
63
- */
64
- constructor() {
65
- super();
66
- }
67
-
68
- /**
69
- * This method is called by the `instanceof` operator.
70
- * @return {symbol}
71
- */
72
- static get [instanceSymbol]() {
73
- return Symbol.for("@schukai/monster/components/datatable/status@@instance");
74
- }
75
-
76
- /**
77
- * To set the options via the HTML tag, the attribute `data-monster-options` must be used.
78
- * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
79
- *
80
- * The individual configuration values can be found in the table.
81
- *
82
- * @property {Object} templates Template definitions
83
- * @property {string} templates.main Main template
84
- * @property {Object} datasource Datasource configuration
85
- * @property {string} datasource.selector The selector of the datasource
86
- * @property {Object} callbacks Callbacks
87
- * @property {Function} callbacks.onError Callback function for error handling <code>function(message: string, event: Event): string</code>
88
- * @property {Object} timeouts Timeouts
89
- * @property {number} timeouts.message Timeout for the message
90
- * @property {Object} state State
91
- */
92
- get defaults() {
93
- return Object.assign({}, super.defaults, {
94
- templates: {
95
- main: getTemplate(),
96
- },
97
-
98
- datasource: {
99
- selector: null,
100
- },
101
-
102
- callbacks: {
103
- onError: null
104
- },
105
-
106
-
107
- timeouts: {
108
- message: 4000,
109
- },
110
-
111
- state: {
112
- spinner: "hide",
113
- },
114
- });
115
- }
116
-
117
- /**
118
- *
119
- * @return {string}
120
- */
121
- static getTag() {
122
- return "monster-datasource-status";
123
- }
124
-
125
- /**
126
- * @private
127
- */
128
- [assembleMethodSymbol]() {
129
- super[assembleMethodSymbol]();
130
-
131
- initControlReferences.call(this);
132
- initEventHandler.call(this);
133
- }
134
-
135
- /**
136
- *
137
- * @param message
138
- * @param timeout
139
- * @returns {DatasourceStatus}
140
- */
141
- setErrorMessage(message, timeout) {
142
- this[errorElementSymbol].setErrorMessage(message, timeout);
143
- return this;
144
- }
145
-
146
- /**
147
- *
148
- * @return [CSSStyleSheet]
149
- */
150
- static getCSSStyleSheet() {
151
- return [StatusStyleSheet, SpinnerStyleSheet, ThemeStyleSheet];
152
- }
62
+ /**
63
+ */
64
+ constructor() {
65
+ super();
66
+ }
67
+
68
+ /**
69
+ * This method is called by the `instanceof` operator.
70
+ * @return {symbol}
71
+ */
72
+ static get [instanceSymbol]() {
73
+ return Symbol.for("@schukai/monster/components/datatable/status@@instance");
74
+ }
75
+
76
+ /**
77
+ * To set the options via the HTML tag, the attribute `data-monster-options` must be used.
78
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
79
+ *
80
+ * The individual configuration values can be found in the table.
81
+ *
82
+ * @property {Object} templates Template definitions
83
+ * @property {string} templates.main Main template
84
+ * @property {Object} datasource Datasource configuration
85
+ * @property {string} datasource.selector The selector of the datasource
86
+ * @property {Object} callbacks Callbacks
87
+ * @property {Function} callbacks.onError Callback function for error handling <code>function(message: string, event: Event): string</code>
88
+ * @property {Object} timeouts Timeouts
89
+ * @property {number} timeouts.message Timeout for the message
90
+ * @property {Object} state State
91
+ */
92
+ get defaults() {
93
+ return Object.assign({}, super.defaults, {
94
+ templates: {
95
+ main: getTemplate(),
96
+ },
97
+
98
+ datasource: {
99
+ selector: null,
100
+ },
101
+
102
+ callbacks: {
103
+ onError: null,
104
+ },
105
+
106
+ timeouts: {
107
+ message: 4000,
108
+ },
109
+
110
+ state: {
111
+ spinner: "hide",
112
+ },
113
+ });
114
+ }
115
+
116
+ /**
117
+ *
118
+ * @return {string}
119
+ */
120
+ static getTag() {
121
+ return "monster-datasource-status";
122
+ }
123
+
124
+ /**
125
+ * @private
126
+ */
127
+ [assembleMethodSymbol]() {
128
+ super[assembleMethodSymbol]();
129
+
130
+ initControlReferences.call(this);
131
+ initEventHandler.call(this);
132
+ }
133
+
134
+ /**
135
+ *
136
+ * @param message
137
+ * @param timeout
138
+ * @returns {DatasourceStatus}
139
+ */
140
+ setErrorMessage(message, timeout) {
141
+ this[errorElementSymbol].setErrorMessage(message, timeout);
142
+ return this;
143
+ }
144
+
145
+ /**
146
+ *
147
+ * @return [CSSStyleSheet]
148
+ */
149
+ static getCSSStyleSheet() {
150
+ return [StatusStyleSheet, SpinnerStyleSheet, ThemeStyleSheet];
151
+ }
153
152
  }
154
153
 
155
154
  /**
@@ -158,85 +157,84 @@ class DatasourceStatus extends CustomElement {
158
157
  * @throws {Error} no shadow-root is defined
159
158
  */
160
159
  function initControlReferences() {
161
- if (!this.shadowRoot) {
162
- throw new Error("no shadow-root is defined");
163
- }
160
+ if (!this.shadowRoot) {
161
+ throw new Error("no shadow-root is defined");
162
+ }
164
163
 
165
- this[errorElementSymbol] = this.shadowRoot.querySelector(
166
- "monster-context-error",
167
- );
164
+ this[errorElementSymbol] = this.shadowRoot.querySelector(
165
+ "monster-context-error",
166
+ );
168
167
  }
169
168
 
170
169
  /**
171
170
  * @private
172
171
  */
173
172
  function initEventHandler() {
174
- const selector = this.getOption("datasource.selector", "");
175
- const self = this;
176
-
177
- if (isString(selector)) {
178
- const element = findElementWithSelectorUpwards(this, selector);
179
- if (element === null) {
180
- throw new Error("the selector must match exactly one element");
181
- }
182
-
183
- if (!(element instanceof Datasource)) {
184
- throw new TypeError("the element must be a datasource");
185
- }
186
-
187
- let fadeOutTimer = null;
188
-
189
- this[datasourceLinkedElementSymbol] = element;
190
- element.addEventListener("monster-datasource-fetched", function () {
191
- fadeOutTimer = setTimeout(() => {
192
- self.setOption("state.spinner", "hide");
193
- }, 800);
194
- });
195
-
196
- element.addEventListener("monster-datasource-fetch", function () {
197
- if (fadeOutTimer) {
198
- clearTimeout(fadeOutTimer);
199
- fadeOutTimer = null;
200
- }
201
-
202
- self.setOption("state.spinner", "show");
203
- });
204
-
205
- element.addEventListener("monster-datasource-error", function (event) {
206
- if (fadeOutTimer) {
207
- clearTimeout(fadeOutTimer);
208
- fadeOutTimer = null;
209
- }
210
-
211
- self.setOption("state.spinner", "hide");
212
-
213
- const timeout = self.getOption("timeouts.message", 4000);
214
- let msg = "Cannot load data";
215
-
216
- try {
217
- if (event.detail.error instanceof Error) {
218
- msg = event.detail.error.message;
219
- } else if (event.detail.error instanceof Object) {
220
- msg = JSON.stringify(event.detail.error);
221
- } else if (event.detail.error instanceof String) {
222
- msg = event.detail.error;
223
- } else if (event.detail.error instanceof Number) {
224
- msg = event.detail.error.toString();
225
- } else {
226
- msg = event.detail.error;
227
- }
228
- } catch (e) {
229
- } finally {
230
-
231
- const callback = self.getOption("callbacks.onError", null);
232
- if (callback) {
233
- callback.call(self, msg, event);
234
- } else {
235
- self[errorElementSymbol].setErrorMessage(msg, timeout);
236
- }
237
- }
238
- });
239
- }
173
+ const selector = this.getOption("datasource.selector", "");
174
+ const self = this;
175
+
176
+ if (isString(selector)) {
177
+ const element = findElementWithSelectorUpwards(this, selector);
178
+ if (element === null) {
179
+ throw new Error("the selector must match exactly one element");
180
+ }
181
+
182
+ if (!(element instanceof Datasource)) {
183
+ throw new TypeError("the element must be a datasource");
184
+ }
185
+
186
+ let fadeOutTimer = null;
187
+
188
+ this[datasourceLinkedElementSymbol] = element;
189
+ element.addEventListener("monster-datasource-fetched", function () {
190
+ fadeOutTimer = setTimeout(() => {
191
+ self.setOption("state.spinner", "hide");
192
+ }, 800);
193
+ });
194
+
195
+ element.addEventListener("monster-datasource-fetch", function () {
196
+ if (fadeOutTimer) {
197
+ clearTimeout(fadeOutTimer);
198
+ fadeOutTimer = null;
199
+ }
200
+
201
+ self.setOption("state.spinner", "show");
202
+ });
203
+
204
+ element.addEventListener("monster-datasource-error", function (event) {
205
+ if (fadeOutTimer) {
206
+ clearTimeout(fadeOutTimer);
207
+ fadeOutTimer = null;
208
+ }
209
+
210
+ self.setOption("state.spinner", "hide");
211
+
212
+ const timeout = self.getOption("timeouts.message", 4000);
213
+ let msg = "Cannot load data";
214
+
215
+ try {
216
+ if (event.detail.error instanceof Error) {
217
+ msg = event.detail.error.message;
218
+ } else if (event.detail.error instanceof Object) {
219
+ msg = JSON.stringify(event.detail.error);
220
+ } else if (event.detail.error instanceof String) {
221
+ msg = event.detail.error;
222
+ } else if (event.detail.error instanceof Number) {
223
+ msg = event.detail.error.toString();
224
+ } else {
225
+ msg = event.detail.error;
226
+ }
227
+ } catch (e) {
228
+ } finally {
229
+ const callback = self.getOption("callbacks.onError", null);
230
+ if (callback) {
231
+ callback.call(self, msg, event);
232
+ } else {
233
+ self[errorElementSymbol].setErrorMessage(msg, timeout);
234
+ }
235
+ }
236
+ });
237
+ }
240
238
  }
241
239
 
242
240
  /**
@@ -244,8 +242,8 @@ function initEventHandler() {
244
242
  * @return {string}
245
243
  */
246
244
  function getTemplate() {
247
- // language=HTML
248
- return `
245
+ // language=HTML
246
+ return `
249
247
  <div data-monster-role="control" part="control"
250
248
  data-monster-attributes="disabled path:disabled | if:true">
251
249
  <monster-context-error
@@ -175,9 +175,8 @@ class Reload extends CustomElement {
175
175
  return loadContent.call(this);
176
176
  } catch (e) {
177
177
  addErrorAttribute(this, e);
178
- return Promise.reject(e)
178
+ return Promise.reject(e);
179
179
  }
180
-
181
180
  }
182
181
  }
183
182
 
@@ -76,7 +76,8 @@ function loadAndAssignContent(element, url, options, filter) {
76
76
  if (oldScript.defer) newScript.defer = oldScript.defer;
77
77
  if (oldScript.crossOrigin) newScript.crossOrigin = oldScript.crossOrigin;
78
78
  if (oldScript.integrity) newScript.integrity = oldScript.integrity;
79
- if (oldScript.referrerPolicy) newScript.referrerPolicy = oldScript.referrerPolicy;
79
+ if (oldScript.referrerPolicy)
80
+ newScript.referrerPolicy = oldScript.referrerPolicy;
80
81
  newScript.textContent = oldScript.textContent;
81
82
  document.head.appendChild(newScript);
82
83
  if (oldScript.parentNode) {
@@ -121,7 +122,9 @@ function loadContent(url, options) {
121
122
  if (statusClass === "4") {
122
123
  throw new Error(`client error ${response.statusText}`);
123
124
  }
124
- throw new Error(`undefined status (${response.status} / ${response.statusText}) or type (${response.type})`);
125
+ throw new Error(
126
+ `undefined status (${response.status} / ${response.statusText}) or type (${response.type})`,
127
+ );
125
128
  }
126
129
  return response.text().then((content) => ({
127
130
  content,
@@ -202,7 +202,7 @@ class Popper extends CustomElement {
202
202
  }
203
203
 
204
204
  /**
205
- * With this method you can show the popper.
205
+ * With this method, you can show the popper.
206
206
  *
207
207
  * @return {Popper}
208
208
  */
@@ -745,7 +745,7 @@ function getTemplate() {
745
745
  <div data-monster-role="slider" part="slides">
746
746
  <slot></slot>
747
747
  </div>
748
- <div data-monster-role="thumbnails"></div>
748
+ <div data-monster-role="thumbnails" part="thumbnails"></div>
749
749
  <div class="next" data-monster-role="next" part="next" part="next">
750
750
  <slot name="next"></slot>
751
751
  </div>