@schukai/monster 3.64.0 → 3.65.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/example/components/form/button.mjs +1 -1
  3. package/example/components/form/field-set.mjs +4 -0
  4. package/example/components/form/select.mjs +1 -1
  5. package/package.json +2 -1
  6. package/source/components/datatable/datatable/header.mjs +228 -221
  7. package/source/components/datatable/style/dataset.pcss +1 -0
  8. package/source/components/datatable/style/datatable.pcss +1 -0
  9. package/source/components/datatable/stylesheet/change-button.mjs +8 -4
  10. package/source/components/datatable/stylesheet/column-bar.mjs +8 -4
  11. package/source/components/datatable/stylesheet/dataset.mjs +9 -5
  12. package/source/components/datatable/stylesheet/datasource.mjs +8 -4
  13. package/source/components/datatable/stylesheet/datatable.mjs +9 -5
  14. package/source/components/datatable/stylesheet/embedded-pagination.mjs +8 -4
  15. package/source/components/datatable/stylesheet/filter-button.mjs +8 -4
  16. package/source/components/datatable/stylesheet/filter-controls-defaults.mjs +8 -4
  17. package/source/components/datatable/stylesheet/filter-date-range.mjs +8 -4
  18. package/source/components/datatable/stylesheet/filter-range.mjs +8 -4
  19. package/source/components/datatable/stylesheet/filter.mjs +8 -4
  20. package/source/components/datatable/stylesheet/pagination.mjs +8 -4
  21. package/source/components/datatable/stylesheet/save-button.mjs +8 -4
  22. package/source/components/datatable/stylesheet/select-filter.mjs +8 -4
  23. package/source/components/datatable/stylesheet/status.mjs +8 -4
  24. package/source/components/form/button.mjs +263 -281
  25. package/source/components/form/field-set.mjs +300 -0
  26. package/source/components/form/popper.mjs +13 -480
  27. package/source/components/form/style/field-set.pcss +13 -0
  28. package/source/components/form/stylesheet/action-button.mjs +8 -4
  29. package/source/components/form/stylesheet/api-button.mjs +8 -4
  30. package/source/components/form/stylesheet/button-bar.mjs +9 -5
  31. package/source/components/form/stylesheet/button.mjs +8 -4
  32. package/source/components/form/stylesheet/confirm-button.mjs +9 -5
  33. package/source/components/form/stylesheet/context-error.mjs +8 -4
  34. package/source/components/form/stylesheet/context-help.mjs +8 -4
  35. package/source/components/form/stylesheet/field-set.mjs +31 -0
  36. package/source/components/form/stylesheet/form.mjs +9 -5
  37. package/source/components/form/stylesheet/message-state-button.mjs +8 -4
  38. package/source/components/form/stylesheet/popper-button.mjs +8 -4
  39. package/source/components/form/stylesheet/select.mjs +8 -4
  40. package/source/components/form/stylesheet/state-button.mjs +8 -4
  41. package/source/components/form/stylesheet/toggle-switch.mjs +8 -4
  42. package/source/components/form/stylesheet/tree-select.mjs +8 -4
  43. package/source/components/host/collapse.mjs +14 -516
  44. package/source/components/host/config-manager.mjs +9 -2
  45. package/source/components/host/constants.mjs +9 -4
  46. package/source/components/host/details.mjs +14 -253
  47. package/source/components/host/stylesheet/call-button.mjs +8 -4
  48. package/source/components/host/stylesheet/config-manager.mjs +8 -4
  49. package/source/components/host/stylesheet/host.mjs +9 -5
  50. package/source/components/host/stylesheet/overlay.mjs +9 -5
  51. package/source/components/host/stylesheet/toggle-button.mjs +8 -4
  52. package/source/components/host/stylesheet/viewer.mjs +8 -4
  53. package/source/components/layout/collapse.mjs +542 -0
  54. package/source/components/layout/details.mjs +271 -0
  55. package/source/components/layout/panel.mjs +6 -0
  56. package/source/components/layout/popper.mjs +476 -0
  57. package/source/components/{host → layout}/stylesheet/collapse.mjs +8 -4
  58. package/source/components/{host → layout}/stylesheet/details.mjs +8 -4
  59. package/source/components/layout/stylesheet/panel.mjs +8 -4
  60. package/source/components/{form → layout}/stylesheet/popper.mjs +8 -4
  61. package/source/components/layout/stylesheet/split-panel.mjs +8 -4
  62. package/source/components/layout/stylesheet/tabs.mjs +8 -4
  63. package/source/components/layout/stylesheet/width-toggle.mjs +8 -4
  64. package/source/components/layout/tabs.mjs +3 -3
  65. package/source/components/layout/width-toggle.mjs +3 -3
  66. package/source/components/navigation/style/table-of-content.pcss +84 -0
  67. package/source/components/navigation/stylesheet/table-of-content.mjs +31 -0
  68. package/source/components/navigation/table-of-content.mjs +418 -0
  69. package/source/components/notify/stylesheet/message.mjs +8 -4
  70. package/source/components/notify/stylesheet/notify.mjs +8 -4
  71. package/source/components/state/stylesheet/log.mjs +8 -4
  72. package/source/components/state/stylesheet/state.mjs +9 -5
  73. package/source/components/style/link.pcss +0 -1
  74. package/source/components/style/mixin/typography.pcss +7 -7
  75. package/source/components/style/typography.pcss +1 -1
  76. package/source/components/stylesheet/badge.mjs +8 -4
  77. package/source/components/stylesheet/border.mjs +8 -4
  78. package/source/components/stylesheet/button.mjs +8 -4
  79. package/source/components/stylesheet/card.mjs +8 -4
  80. package/source/components/stylesheet/color.mjs +8 -4
  81. package/source/components/stylesheet/common.mjs +8 -4
  82. package/source/components/stylesheet/control.mjs +8 -4
  83. package/source/components/stylesheet/data-grid.mjs +8 -4
  84. package/source/components/stylesheet/display.mjs +8 -4
  85. package/source/components/stylesheet/floating-ui.mjs +8 -4
  86. package/source/components/stylesheet/form.mjs +8 -4
  87. package/source/components/stylesheet/host.mjs +8 -4
  88. package/source/components/stylesheet/icons.mjs +8 -4
  89. package/source/components/stylesheet/link.mjs +8 -4
  90. package/source/components/stylesheet/mixin/badge.mjs +31 -0
  91. package/source/components/stylesheet/mixin/button.mjs +31 -0
  92. package/source/components/stylesheet/mixin/form.mjs +31 -0
  93. package/source/components/stylesheet/mixin/hover.mjs +31 -0
  94. package/source/components/stylesheet/mixin/icon.mjs +31 -0
  95. package/source/components/stylesheet/mixin/media.mjs +31 -0
  96. package/source/components/stylesheet/mixin/property.mjs +31 -0
  97. package/source/components/stylesheet/mixin/skeleton.mjs +31 -0
  98. package/source/components/stylesheet/mixin/spinner.mjs +31 -0
  99. package/source/components/stylesheet/mixin/typography.mjs +31 -0
  100. package/source/components/stylesheet/normalize.mjs +8 -4
  101. package/source/components/stylesheet/popper.mjs +8 -4
  102. package/source/components/stylesheet/property.mjs +8 -4
  103. package/source/components/stylesheet/ripple.mjs +8 -4
  104. package/source/components/stylesheet/skeleton.mjs +8 -4
  105. package/source/components/stylesheet/space.mjs +8 -4
  106. package/source/components/stylesheet/spinner.mjs +8 -4
  107. package/source/components/stylesheet/table.mjs +8 -4
  108. package/source/components/stylesheet/theme.mjs +8 -4
  109. package/source/components/stylesheet/typography.mjs +9 -5
  110. package/source/components/tree-menu/stylesheet/tree-menu.mjs +8 -4
  111. package/source/dom/ready.mjs +10 -4
  112. package/source/monster.mjs +17 -80
  113. package/source/types/proxyobserver.mjs +4 -2
  114. package/source/types/version.mjs +1 -1
  115. package/test/cases/monster.mjs +1 -1
  116. package/test/web/tests.js +4 -4
  117. package/source/components/form/form-field.mjs +0 -341
  118. package/source/components/form/style/form-field.pcss +0 -4
  119. package/source/components/form/stylesheet/form-field.mjs +0 -27
  120. /package/source/components/{host → layout}/style/collapse.pcss +0 -0
  121. /package/source/components/{host → layout}/style/details.pcss +0 -0
  122. /package/source/components/{form → layout}/style/popper.pcss +0 -0
@@ -1,13 +1,16 @@
1
-
2
1
  /**
3
- * Copyright schukai GmbH and contributors 2023. All Rights Reserved.
2
+ * Copyright © schukai GmbH and all contributing authors, 2024. All rights reserved.
4
3
  * Node module: @schukai/monster
5
- * This file is licensed under the AGPLv3 License.
6
- * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
7
- * SPDX-License-Identifier: AGPL-3.0-only or COMMERCIAL
4
+ *
5
+ * This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
6
+ * The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html
7
+ *
8
+ * For those who do not wish to adhere to the AGPLv3, a commercial license is available.
9
+ * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
10
+ * For more information about purchasing a commercial license, please contact schukai GmbH.
8
11
  */
9
12
 
10
- /** THIS FILE IS AUTOGENERATED AND SHOULD NOT BE EDITED DIRECTLY. **/
13
+ // THIS FILE IS AUTOGENERATED. DO NOT EDIT THIS FILE DIRECTLY.
11
14
 
12
15
  /**
13
16
  * Main namespace for Monster.
@@ -15,11 +18,13 @@
15
18
  * @namespace Monster
16
19
  * @author schukai GmbH
17
20
  */
18
-
21
+ export * from "./components/layout/collapse.mjs";
19
22
  export * from "./components/layout/tabs.mjs";
20
23
  export * from "./components/layout/split-panel.mjs";
21
- export * from "./components/layout/stylesheet/tabs.mjs";
22
- export * from "./components/layout/stylesheet/split-screen.mjs";
24
+ export * from "./components/layout/popper.mjs";
25
+ export * from "./components/layout/width-toggle.mjs";
26
+ export * from "./components/layout/panel.mjs";
27
+ export * from "./components/layout/details.mjs";
23
28
  export * from "./components/form/message-state-button.mjs";
24
29
  export * from "./components/form/button-bar.mjs";
25
30
  export * from "./components/form/reload.mjs";
@@ -29,7 +34,6 @@ export * from "./components/form/util/floating-ui.mjs";
29
34
  export * from "./components/form/context-help.mjs";
30
35
  export * from "./components/form/tabs.mjs";
31
36
  export * from "./components/form/state-button.mjs";
32
- export * from "./components/form/form-field.mjs";
33
37
  export * from "./components/form/popper.mjs";
34
38
  export * from "./components/form/select.mjs";
35
39
  export * from "./components/form/confirm-button.mjs";
@@ -41,33 +45,15 @@ export * from "./components/form/tree-select.mjs";
41
45
  export * from "./components/form/popper-button.mjs";
42
46
  export * from "./components/form/shadow-reload.mjs";
43
47
  export * from "./components/form/button.mjs";
48
+ export * from "./components/form/field-set.mjs";
44
49
  export * from "./components/form/toggle-switch.mjs";
45
50
  export * from "./components/form/types/state.mjs";
46
51
  export * from "./components/form/template.mjs";
47
52
  export * from "./components/form/constants.mjs";
48
- export * from "./components/form/stylesheet/message-state-button.mjs";
49
- export * from "./components/form/stylesheet/button-bar.mjs";
50
- export * from "./components/form/stylesheet/context-help.mjs";
51
- export * from "./components/form/stylesheet/state-button.mjs";
52
- export * from "./components/form/stylesheet/form-field.mjs";
53
- export * from "./components/form/stylesheet/popper.mjs";
54
- export * from "./components/form/stylesheet/select.mjs";
55
- export * from "./components/form/stylesheet/confirm-button.mjs";
56
- export * from "./components/form/stylesheet/context-error.mjs";
57
- export * from "./components/form/stylesheet/action-button.mjs";
58
- export * from "./components/form/stylesheet/form.mjs";
59
- export * from "./components/form/stylesheet/api-button.mjs";
60
- export * from "./components/form/stylesheet/tree-select.mjs";
61
- export * from "./components/form/stylesheet/popper-button.mjs";
62
- export * from "./components/form/stylesheet/button.mjs";
63
- export * from "./components/form/stylesheet/toggle-switch.mjs";
64
53
  export * from "./components/notify/message.mjs";
65
54
  export * from "./components/notify/notify.mjs";
66
55
  export * from "./components/notify/constants.mjs";
67
- export * from "./components/notify/stylesheet/message.mjs";
68
- export * from "./components/notify/stylesheet/notify.mjs";
69
56
  export * from "./components/tree-menu/tree-menu.mjs";
70
- export * from "./components/tree-menu/stylesheet/tree-menu.mjs";
71
57
  export * from "./components/host/collapse.mjs";
72
58
  export * from "./components/host/config-manager.mjs";
73
59
  export * from "./components/host/host.mjs";
@@ -78,14 +64,6 @@ export * from "./components/host/util.mjs";
78
64
  export * from "./components/host/call-button.mjs";
79
65
  export * from "./components/host/details.mjs";
80
66
  export * from "./components/host/constants.mjs";
81
- export * from "./components/host/stylesheet/collapse.mjs";
82
- export * from "./components/host/stylesheet/config-manager.mjs";
83
- export * from "./components/host/stylesheet/host.mjs";
84
- export * from "./components/host/stylesheet/overlay.mjs";
85
- export * from "./components/host/stylesheet/toggle-button.mjs";
86
- export * from "./components/host/stylesheet/viewer.mjs";
87
- export * from "./components/host/stylesheet/call-button.mjs";
88
- export * from "./components/host/stylesheet/details.mjs";
89
67
  export * from "./components/datatable/filter/input.mjs";
90
68
  export * from "./components/datatable/filter/date-range.mjs";
91
69
  export * from "./components/datatable/filter/abstract-base.mjs";
@@ -107,53 +85,12 @@ export * from "./components/datatable/embedded-pagination.mjs";
107
85
  export * from "./components/datatable/status.mjs";
108
86
  export * from "./components/datatable/change-button.mjs";
109
87
  export * from "./components/datatable/constants.mjs";
110
- export * from "./components/datatable/stylesheet/select-filter.mjs";
111
- export * from "./components/datatable/stylesheet/datasource.mjs";
112
- export * from "./components/datatable/stylesheet/column-bar.mjs";
113
- export * from "./components/datatable/stylesheet/filter-button.mjs";
114
- export * from "./components/datatable/stylesheet/filter-date-range.mjs";
115
- export * from "./components/datatable/stylesheet/datatable.mjs";
116
- export * from "./components/datatable/stylesheet/pagination.mjs";
117
- export * from "./components/datatable/stylesheet/filter.mjs";
118
- export * from "./components/datatable/stylesheet/save-button.mjs";
119
- export * from "./components/datatable/stylesheet/dataset.mjs";
120
- export * from "./components/datatable/stylesheet/embedded-pagination.mjs";
121
- export * from "./components/datatable/stylesheet/filter-controls-defaults.mjs";
122
- export * from "./components/datatable/stylesheet/status.mjs";
123
- export * from "./components/datatable/stylesheet/change-button.mjs";
124
- export * from "./components/datatable/stylesheet/filter-range.mjs";
125
88
  export * from "./components/state/log/entry.mjs";
126
89
  export * from "./components/state/state.mjs";
127
90
  export * from "./components/state/log.mjs";
128
- export * from "./components/state/stylesheet/state.mjs";
129
- export * from "./components/state/stylesheet/log.mjs";
91
+ export * from "./components/navigation/table-of-content.mjs";
130
92
  export * from "./components/constants.mjs";
131
93
  export * from "./components/constants.mjs";
132
- export * from "./components/stylesheet/host.mjs";
133
- export * from "./components/stylesheet/badge.mjs";
134
- export * from "./components/stylesheet/border.mjs";
135
- export * from "./components/stylesheet/spinner.mjs";
136
- export * from "./components/stylesheet/control.mjs";
137
- export * from "./components/stylesheet/card.mjs";
138
- export * from "./components/stylesheet/common.mjs";
139
- export * from "./components/stylesheet/icons.mjs";
140
- export * from "./components/stylesheet/popper.mjs";
141
- export * from "./components/stylesheet/theme.mjs";
142
- export * from "./components/stylesheet/data-grid.mjs";
143
- export * from "./components/stylesheet/space.mjs";
144
- export * from "./components/stylesheet/normalize.mjs";
145
- export * from "./components/stylesheet/ripple.mjs";
146
- export * from "./components/stylesheet/link.mjs";
147
- export * from "./components/stylesheet/property.mjs";
148
- export * from "./components/stylesheet/form.mjs";
149
- export * from "./components/stylesheet/skeleton.mjs";
150
- export * from "./components/stylesheet/typography.mjs";
151
- export * from "./components/stylesheet/tree-menu.mjs";
152
- export * from "./components/stylesheet/table.mjs";
153
- export * from "./components/stylesheet/button.mjs";
154
- export * from "./components/stylesheet/display.mjs";
155
- export * from "./components/stylesheet/color.mjs";
156
- export * from "./components/stylesheet/floating-ui.mjs";
157
94
  export * from "./text/formatter.mjs";
158
95
  export * from "./text/generate-range-comparison-expression.mjs";
159
96
  export * from "./text/util.mjs";
@@ -261,7 +198,7 @@ export { Monster };
261
198
  /**
262
199
  * This class has no other purpose than to exist.
263
200
  *
264
- * @license AGPLv3
201
+ * @license AGPLv3 or commercial license
265
202
  * @since 2.0.0
266
203
  * @copyright schukai GmbH
267
204
  * @memberOf Monster
@@ -12,13 +12,14 @@ import { ObserverList } from "./observerlist.mjs";
12
12
  import { validateObject } from "./validate.mjs";
13
13
  import { extend } from "../data/extend.mjs";
14
14
  import { instanceSymbol } from "../constants.mjs";
15
+ import { clone } from "../util/clone.mjs";
15
16
  export { ProxyObserver };
16
17
 
17
18
  /**
18
19
  * An observer manages a callback function
19
20
  *
20
21
  * With the ProxyObserver you can attach observer for observation.
21
- * With each change at the object to be observed an update takes place.
22
+ * With each change at the object to be observed, an update takes place.
22
23
  *
23
24
  * This also applies to nested objects.
24
25
  *
@@ -72,12 +73,13 @@ class ProxyObserver extends Base {
72
73
  */
73
74
  setSubject(obj) {
74
75
  let i;
76
+ const clonedObject = clone(obj);
75
77
  const k = Object.keys(this.subject);
76
78
  for (i = 0; i < k.length; i++) {
77
79
  delete this.subject[k[i]];
78
80
  }
79
81
 
80
- this.subject = extend(this.subject, obj);
82
+ this.subject = extend(this.subject, clonedObject);
81
83
  return this;
82
84
  }
83
85
 
@@ -152,7 +152,7 @@ function getMonsterVersion() {
152
152
  }
153
153
 
154
154
  /** don't touch, replaced by make with package.json version */
155
- monsterVersion = new Version("3.64.0");
155
+ monsterVersion = new Version("3.65.0");
156
156
 
157
157
  return monsterVersion;
158
158
  }
@@ -7,7 +7,7 @@ describe('Monster', function () {
7
7
  let monsterVersion
8
8
 
9
9
  /** don´t touch, replaced by make with package.json version */
10
- monsterVersion = new Version("3.64.0")
10
+ monsterVersion = new Version("3.65.0")
11
11
 
12
12
  let m = getMonsterVersion();
13
13
 
package/test/web/tests.js CHANGED
@@ -24173,7 +24173,7 @@ ${key.data.toString("base64")}
24173
24173
  }
24174
24174
  var splitScreenElementSymbol, draggerElementSymbol, startPanelElementSymbol, endPanelElementSymbol, handleElementSymbol, TYPE_VERTICAL, TYPE_HORIZONTAL, SplitScreen;
24175
24175
  var init_split_screen2 = __esm({
24176
- "source/components/layout/split-screen.mjs"() {
24176
+ "source/components/layout/split-panel.mjs"() {
24177
24177
  init_customelement();
24178
24178
  init_notify2();
24179
24179
  init_events();
@@ -24271,7 +24271,7 @@ ${key.data.toString("base64")}
24271
24271
  * @return {string}
24272
24272
  */
24273
24273
  static getTag() {
24274
- return "monster-split-screen";
24274
+ return "monster-split-panel";
24275
24275
  }
24276
24276
  /**
24277
24277
  * @return {CSSStyleSheet[]}
@@ -35838,9 +35838,9 @@ span.monster-fx-ripple{animation:monster-fx-ripple .6s linear;background-color:h
35838
35838
  chai_default.use(chaiDom);
35839
35839
  var global3 = getGlobal();
35840
35840
  var html12 = `
35841
- <monster-split-screen id="my-split-screen">
35841
+ <monster-split-panel id="my-split-screen">
35842
35842
 
35843
- </monster-split-screen>
35843
+ </monster-split-panel>
35844
35844
  `;
35845
35845
  var SplitScreen2;
35846
35846
  describe("SplitScreen", function() {
@@ -1,341 +0,0 @@
1
- /**
2
- * Copyright schukai GmbH and contributors 2023. All Rights Reserved.
3
- * Node module: @schukai/monster
4
- * This file is licensed under the AGPLv3 License.
5
- * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
- */
7
- import { instanceSymbol } from "../../constants.mjs";
8
- import { addAttributeToken } from "../../dom/attributes.mjs";
9
- import {
10
- ATTRIBUTE_ERRORMESSAGE,
11
- ATTRIBUTE_ROLE,
12
- } from "../../dom/constants.mjs";
13
- import { CustomControl } from "../../dom/customcontrol.mjs";
14
- import {
15
- assembleMethodSymbol,
16
- attributeObserverSymbol,
17
- registerCustomElement,
18
- } from "../../dom/customelement.mjs";
19
- import { findTargetElementFromEvent } from "../../dom/events.mjs";
20
- import { isFunction } from "../../types/is.mjs";
21
- import { ATTRIBUTE_BUTTON_CLASS } from "./constants.mjs";
22
- import { ButtonStyleSheet } from "./stylesheet/button.mjs";
23
- import { RippleStyleSheet } from "../stylesheet/ripple.mjs";
24
- import { fireCustomEvent } from "../../dom/events.mjs";
25
-
26
- export { FormField };
27
-
28
-
29
- /**
30
- * This CustomControl creates a container for form elements.
31
- *
32
- * <img src="./images/form-field.png">
33
- *
34
- * You can create this control either by specifying the HTML tag <monster-form-field />` directly in the HTML or using
35
- * Javascript via the `document.createElement('monster-form-field');` method.
36
- *
37
- * ```html
38
- * <monster-form-field></monster-form-field>
39
- * ```
40
- *
41
- * Or you can create this CustomControl directly in Javascript:
42
- *
43
- * ```js
44
- * import {Button} from '@schukai/monster/components/form/form-field.mjs';
45
- * document.createElement('monster-form-field');
46
- * ```
47
- *
48
- * The `data-monster-button-class` attribute can be used to change the CSS class of the button.
49
- *
50
- * @startuml form-field.png
51
- * skinparam monochrome true
52
- * skinparam shadowing false
53
- * HTMLElement <|-- CustomElement
54
- * CustomElement <|-- CustomControl
55
- * CustomControl <|-- FormField
56
- * @enduml
57
- *
58
- * @since 1.5.0
59
- * @copyright schukai GmbH
60
- * @memberOf Monster.Components.Form
61
- * @summary A simple button
62
- */
63
- class FormField extends CustomControl {
64
- /**
65
- * This method is called by the `instanceof` operator.
66
- * @returns {symbol}
67
- * @since 2.1.0
68
- */
69
- static get [instanceSymbol]() {
70
- return Symbol.for("@schukai/monster/components/form/button@@instance");
71
- }
72
-
73
- /**
74
- *
75
- * @return {Monster.Components.Form.Button}
76
- */
77
- [assembleMethodSymbol]() {
78
- super[assembleMethodSymbol]();
79
- initControlReferences.call(this);
80
- initEventHandler.call(this);
81
- return this;
82
- }
83
-
84
- /**
85
- * The Button.click() method simulates a click on the internal button element.
86
- *
87
- * @since 3.27.0
88
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click}
89
- */
90
- click() {
91
- if (this.getOption("disabled") === true) {
92
- return;
93
- }
94
-
95
- if (
96
- this[buttonElementSymbol] &&
97
- isFunction(this[buttonElementSymbol].click)
98
- ) {
99
- this[buttonElementSymbol].click();
100
- }
101
- }
102
-
103
- /**
104
- * The Button.focus() method sets focus on the internal button element.
105
- *
106
- * @since 3.27.0
107
- * @param {Object} options
108
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus}
109
- */
110
- focus(options) {
111
- if (this.getOption("disabled") === true) {
112
- return;
113
- }
114
-
115
- if (
116
- this[buttonElementSymbol] &&
117
- isFunction(this[buttonElementSymbol].focus)
118
- ) {
119
- this[buttonElementSymbol].focus(options);
120
- }
121
- }
122
-
123
- /**
124
- * The Button.blur() method removes focus from the internal button element.
125
- */
126
- blur() {
127
- if (
128
- this[buttonElementSymbol] &&
129
- isFunction(this[buttonElementSymbol].blur)
130
- ) {
131
- this[buttonElementSymbol].blur();
132
- }
133
- }
134
-
135
- /**
136
- * This method determines which attributes are to be monitored by `attributeChangedCallback()`.
137
- *
138
- * @return {string[]}
139
- */
140
- static get observedAttributes() {
141
- const attributes = super.observedAttributes;
142
- attributes.push(ATTRIBUTE_BUTTON_CLASS);
143
- return attributes;
144
- }
145
-
146
- /**
147
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals}
148
- * @return {boolean}
149
- */
150
- static get formAssociated() {
151
- return true;
152
- }
153
-
154
- /**
155
- * The current selection of the Select
156
- *
157
- * ```
158
- * e = document.querySelector('monster-select');
159
- * console.log(e.value)
160
- * // ↦ 1
161
- * // ↦ ['1','2']
162
- * ```
163
- *
164
- * @property {string|array}
165
- */
166
- get value() {
167
- return this.getOption("value");
168
- }
169
-
170
- /**
171
- * Set selection
172
- *
173
- * ```
174
- * e = document.querySelector('monster-select');
175
- * e.value=1
176
- * ```
177
- *
178
- * @property {string|array} value
179
- * @since 1.2.0
180
- * @throws {Error} unsupported type
181
- */
182
- set value(value) {
183
- this.setOption("value", value);
184
- try {
185
- this?.setFormValue(this.value);
186
- } catch (e) {
187
- addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, e.message);
188
- }
189
- }
190
-
191
- /**
192
- * To set the options via the html tag the attribute `data-monster-options` must be used.
193
- * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
194
- *
195
- * The individual configuration values can be found in the table.
196
- *
197
- * @property {Object} templates Template definitions
198
- * @property {string} templates.main Main template
199
- * @property {Object} labels Labels
200
- * @property {string} labels.button=<slot></slot> Button label
201
- * @property {Object} actions Callbacks
202
- * @property {string} actions.click="throw Error" Callback when clicked
203
- * @property {Object} classes CSS classes
204
- * @property {string} classes.button="monster-button-primary" CSS class for the button
205
- * @property {boolean} disabled=false Disabled state
206
- * @property {Object} effects Effects
207
- * @property {boolean} effects.ripple=true Ripple effect
208
- */
209
- get defaults() {
210
- return Object.assign({}, super.defaults, {
211
- templates: {
212
- main: getTemplate(),
213
- },
214
- labels: {
215
- button: "<slot></slot>",
216
- },
217
- classes: {
218
- button: "monster-button-primary",
219
- },
220
- disabled: false,
221
- actions: {
222
- click: () => {
223
- throw new Error("the click action is not defined");
224
- },
225
- },
226
- effects: {
227
- ripple: true,
228
- },
229
- value: null,
230
- });
231
- }
232
-
233
- /**
234
- *
235
- * @return {string}
236
- */
237
- static getTag() {
238
- return "monster-form-field";
239
- }
240
-
241
- /**
242
- *
243
- * @return {Array<CSSStyleSheet>}
244
- */
245
- static getCSSStyleSheet() {
246
- return [FormFieldStyleSheet];
247
- }
248
- }
249
-
250
- /**
251
- * @private
252
- * @return {initEventHandler}
253
- * @fires Monster.Components.Form.event:monster-button-clicked
254
- */
255
- function initEventHandler() {
256
- const self = this;
257
- const button = this[buttonElementSymbol];
258
-
259
- const type = "click";
260
-
261
- button.addEventListener(type, function (event) {
262
- const callback = self.getOption("actions.click");
263
-
264
- fireCustomEvent(self, "monster-button-clicked", {
265
- button: self,
266
- });
267
-
268
- if (!isFunction(callback)) {
269
- return;
270
- }
271
-
272
- const element = findTargetElementFromEvent(
273
- event,
274
- ATTRIBUTE_ROLE,
275
- "control",
276
- );
277
-
278
- if (!(element instanceof Node && self.hasNode(element))) {
279
- return;
280
- }
281
-
282
- callback.call(self, event);
283
- });
284
-
285
- if (self.getOption("effects.ripple")) {
286
- button.addEventListener("click", createRipple.bind(self));
287
- }
288
-
289
- // data-monster-options
290
- self[attributeObserverSymbol][ATTRIBUTE_BUTTON_CLASS] = function (value) {
291
- self.setOption("classes.button", value);
292
- };
293
-
294
- return this;
295
- }
296
-
297
- /**
298
- * @private
299
- */
300
- function initControlReferences() {
301
- this[buttonElementSymbol] = this.shadowRoot.querySelector(
302
- `[${ATTRIBUTE_ROLE}=button]`,
303
- );
304
- }
305
-
306
- /**
307
- * @private
308
- * @return {string}
309
- */
310
- function getTemplate() {
311
- // language=HTML
312
- return `
313
- <div data-monster-role="control" part="control">
314
- <button data-monster-attributes="disabled path:disabled | if:true, class path:classes.button"
315
- data-monster-role="button"
316
- part="button"
317
- data-monster-replace="path:labels.button"></button>
318
- </div>`;
319
- }
320
-
321
- function createRipple(event) {
322
- const button = this[buttonElementSymbol];
323
-
324
- const circle = document.createElement("span");
325
- const diameter = Math.max(button.clientWidth, button.clientHeight);
326
- const radius = diameter / 2;
327
-
328
- circle.style.width = circle.style.height = `${diameter}px`;
329
- circle.style.left = `${event.clientX - button.offsetLeft - radius}px`;
330
- circle.style.top = `${event.clientY - button.offsetTop - radius}px`;
331
- circle.classList.add("monster-fx-ripple");
332
-
333
- const ripples = button.getElementsByClassName("monster-fx-ripple");
334
- for (const ripple of ripples) {
335
- ripple.remove();
336
- }
337
-
338
- button.appendChild(circle);
339
- }
340
-
341
- registerCustomElement(FormField);
@@ -1,27 +0,0 @@
1
-
2
- /**
3
- * Copyright schukai GmbH and contributors 2024. All Rights Reserved.
4
- * Node module: @schukai/monster
5
- * This file is licensed under the AGPLv3 License.
6
- * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
7
- */
8
-
9
- import {addAttributeToken} from "../../../dom/attributes.mjs";
10
- import {ATTRIBUTE_ERRORMESSAGE} from "../../../dom/constants.mjs";
11
-
12
- export {FormFieldStyleSheet}
13
-
14
- /**
15
- * @private
16
- * @type {CSSStyleSheet}
17
- */
18
- const FormFieldStyleSheet = new CSSStyleSheet();
19
-
20
- try {
21
- FormFieldStyleSheet.insertRule(`
22
- @layer formfield {
23
-
24
- }`, 0);
25
- } catch (e) {
26
- addAttributeToken(document.getRootNode().querySelector('html'), ATTRIBUTE_ERRORMESSAGE, e + "");
27
- }