@schukai/monster 3.51.4 → 3.52.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 (451) hide show
  1. package/CHANGELOG.md +706 -0
  2. package/README.md +16 -13
  3. package/example/components/form/button.mjs +10 -0
  4. package/example/components/form/select.mjs +25 -0
  5. package/example/components/form/tree-select.mjs +27 -0
  6. package/example/components/host/host.mjs +0 -0
  7. package/example/components/notify/message.mjs +4 -0
  8. package/example/components/notify/notify.mjs +4 -0
  9. package/example/components/state/log.mjs +0 -0
  10. package/example/components/state/state.mjs +0 -0
  11. package/package.json +6 -2
  12. package/source/components/constants.mjs +132 -0
  13. package/source/components/datatable/columnbar.mjs +310 -0
  14. package/source/components/datatable/constants.mjs +121 -0
  15. package/source/components/datatable/dataset.mjs +219 -0
  16. package/source/components/datatable/datasource/dom.mjs +186 -0
  17. package/source/components/datatable/datasource/namespace.mjs +13 -0
  18. package/source/components/datatable/datasource/rest.mjs +400 -0
  19. package/source/components/datatable/datasource.mjs +102 -0
  20. package/source/components/datatable/datatable/header.mjs +268 -0
  21. package/source/components/datatable/datatable/namespace.mjs +13 -0
  22. package/source/components/datatable/datatable.mjs +789 -0
  23. package/source/components/datatable/embedded-pagination.mjs +113 -0
  24. package/source/components/datatable/filter/abstract-base.mjs +31 -0
  25. package/source/components/datatable/filter/date-range.mjs +1041 -0
  26. package/source/components/datatable/filter/input.mjs +175 -0
  27. package/source/components/datatable/filter/namespace.mjs +13 -0
  28. package/source/components/datatable/filter/range.mjs +671 -0
  29. package/source/components/datatable/filter/select.mjs +65 -0
  30. package/source/components/datatable/filter/settings.mjs +116 -0
  31. package/source/components/datatable/filter-button.mjs +98 -0
  32. package/source/components/datatable/filter.mjs +929 -0
  33. package/source/components/datatable/namespace.mjs +11 -0
  34. package/source/components/datatable/pagination.mjs +456 -0
  35. package/source/components/datatable/style/column-bar.pcss +123 -0
  36. package/source/components/datatable/style/dataset.pcss +13 -0
  37. package/source/components/datatable/style/datasource.pcss +16 -0
  38. package/source/components/datatable/style/datatable.pcss +239 -0
  39. package/source/components/datatable/style/embedded-pagination.pcss +101 -0
  40. package/source/components/datatable/style/filter-button.pcss +22 -0
  41. package/source/components/datatable/style/filter-controls-defaults.pcss +46 -0
  42. package/source/components/datatable/style/filter-date-range.pcss +9 -0
  43. package/source/components/datatable/style/filter-range.pcss +5 -0
  44. package/source/components/datatable/style/filter.pcss +156 -0
  45. package/source/components/datatable/style/pagination.pcss +59 -0
  46. package/source/components/datatable/style/select-filter.pcss +27 -0
  47. package/source/components/datatable/stylesheet/column-bar.mjs +33 -0
  48. package/source/components/datatable/stylesheet/dataset.mjs +33 -0
  49. package/source/components/datatable/stylesheet/datasource.mjs +33 -0
  50. package/source/components/datatable/stylesheet/datatable.mjs +33 -0
  51. package/source/components/datatable/stylesheet/embedded-pagination.mjs +33 -0
  52. package/source/components/datatable/stylesheet/filter-button.mjs +33 -0
  53. package/source/components/datatable/stylesheet/filter-controls-defaults.mjs +33 -0
  54. package/source/components/datatable/stylesheet/filter-date-range.mjs +33 -0
  55. package/source/components/datatable/stylesheet/filter-range.mjs +33 -0
  56. package/source/components/datatable/stylesheet/filter.mjs +33 -0
  57. package/source/components/datatable/stylesheet/namespace.mjs +13 -0
  58. package/source/components/datatable/stylesheet/pagination.mjs +33 -0
  59. package/source/components/datatable/stylesheet/select-filter.mjs +33 -0
  60. package/source/components/datatable/util.mjs +60 -0
  61. package/source/components/form/action-button.mjs +262 -0
  62. package/source/components/form/api-button.mjs +515 -0
  63. package/source/components/form/button-bar.mjs +739 -0
  64. package/source/components/form/button.mjs +350 -0
  65. package/source/components/form/confirm-button.mjs +330 -0
  66. package/source/components/form/constants.mjs +111 -0
  67. package/source/components/form/context-help.mjs +123 -0
  68. package/source/components/form/events.mjs +84 -0
  69. package/source/components/form/form.mjs +601 -0
  70. package/source/components/form/message-state-button.mjs +396 -0
  71. package/source/components/form/namespace.mjs +13 -0
  72. package/source/components/form/popper-button.mjs +435 -0
  73. package/source/components/form/popper.mjs +487 -0
  74. package/source/components/form/reload.mjs +360 -0
  75. package/source/components/form/select.mjs +2314 -0
  76. package/source/components/form/shadow-reload.mjs +137 -0
  77. package/source/components/form/state-button.mjs +182 -0
  78. package/source/components/form/style/action-button.pcss +41 -0
  79. package/source/components/form/style/api-button.pcss +0 -0
  80. package/source/components/form/style/button-bar.pcss +51 -0
  81. package/source/components/form/style/button.pcss +8 -0
  82. package/source/components/form/style/confirm-button.pcss +17 -0
  83. package/source/components/form/style/context-help.pcss +16 -0
  84. package/source/components/form/style/form.pcss +10 -0
  85. package/source/components/form/style/message-state-button.pcss +10 -0
  86. package/source/components/form/style/popper-button.pcss +16 -0
  87. package/source/components/form/style/popper.pcss +8 -0
  88. package/source/components/form/style/select.pcss +265 -0
  89. package/source/components/form/style/state-button.pcss +116 -0
  90. package/source/components/form/style/tabs.pcss +170 -0
  91. package/source/components/form/style/tree-select.pcss +81 -0
  92. package/source/components/form/stylesheet/action-button.mjs +33 -0
  93. package/source/components/form/stylesheet/api-button.mjs +33 -0
  94. package/source/components/form/stylesheet/button-bar.mjs +33 -0
  95. package/source/components/form/stylesheet/button.mjs +33 -0
  96. package/source/components/form/stylesheet/confirm-button.mjs +33 -0
  97. package/source/components/form/stylesheet/context-help.mjs +33 -0
  98. package/source/components/form/stylesheet/form.mjs +33 -0
  99. package/source/components/form/stylesheet/message-state-button.mjs +33 -0
  100. package/source/components/form/stylesheet/namespace.mjs +13 -0
  101. package/source/components/form/stylesheet/popper-button.mjs +33 -0
  102. package/source/components/form/stylesheet/popper.mjs +33 -0
  103. package/source/components/form/stylesheet/select.mjs +33 -0
  104. package/source/components/form/stylesheet/state-button.mjs +33 -0
  105. package/source/components/form/stylesheet/tabs.mjs +33 -0
  106. package/source/components/form/stylesheet/tree-select.mjs +33 -0
  107. package/source/components/form/tabs.mjs +1011 -0
  108. package/source/components/form/template.mjs +373 -0
  109. package/source/components/form/tree-select.mjs +527 -0
  110. package/source/components/form/types/namespace.mjs +13 -0
  111. package/source/components/form/types/state.mjs +93 -0
  112. package/source/components/form/util/fetch.mjs +133 -0
  113. package/source/components/form/util/floating-ui.mjs +245 -0
  114. package/source/components/form/util/namespace.mjs +13 -0
  115. package/source/components/form/util/popper.mjs +49 -0
  116. package/source/components/host/call-button.mjs +236 -0
  117. package/source/components/host/collapse.mjs +526 -0
  118. package/source/components/host/config-manager.mjs +304 -0
  119. package/source/components/host/constants.mjs +18 -0
  120. package/source/components/host/details.mjs +268 -0
  121. package/source/components/host/events.mjs +131 -0
  122. package/source/components/host/host.mjs +420 -0
  123. package/source/components/host/namespace.mjs +13 -0
  124. package/source/components/host/overlay.mjs +339 -0
  125. package/source/components/host/style/call-button.pcss +36 -0
  126. package/source/components/host/style/collapse.pcss +67 -0
  127. package/source/components/host/style/config-manager.pcss +5 -0
  128. package/source/components/host/style/details.pcss +68 -0
  129. package/source/components/host/style/host.pcss +43 -0
  130. package/source/components/host/style/overlay.pcss +73 -0
  131. package/source/components/host/style/toggle-button.pcss +36 -0
  132. package/source/components/host/style/viewer.pcss +13 -0
  133. package/source/components/host/stylesheet/call-button.mjs +33 -0
  134. package/source/components/host/stylesheet/collapse.mjs +33 -0
  135. package/source/components/host/stylesheet/config-manager.mjs +33 -0
  136. package/source/components/host/stylesheet/details.mjs +33 -0
  137. package/source/components/host/stylesheet/host.mjs +33 -0
  138. package/source/components/host/stylesheet/namespace.mjs +13 -0
  139. package/source/components/host/stylesheet/overlay.mjs +33 -0
  140. package/source/components/host/stylesheet/toggle-button.mjs +33 -0
  141. package/source/components/host/stylesheet/viewer.mjs +33 -0
  142. package/source/components/host/toggle-button.mjs +88 -0
  143. package/source/components/host/util.mjs +23 -0
  144. package/source/components/host/viewer.mjs +309 -0
  145. package/source/components/namespace.mjs +14 -0
  146. package/source/components/notify/constants.mjs +15 -0
  147. package/source/components/notify/events.mjs +15 -0
  148. package/source/components/notify/message.mjs +374 -0
  149. package/source/components/notify/namespace.mjs +15 -0
  150. package/source/components/notify/notify.mjs +236 -0
  151. package/source/components/notify/style/message.pcss +57 -0
  152. package/source/components/notify/style/notify.pcss +118 -0
  153. package/source/components/notify/stylesheet/message.mjs +33 -0
  154. package/source/components/notify/stylesheet/namespace.mjs +15 -0
  155. package/source/components/notify/stylesheet/notify.mjs +33 -0
  156. package/source/components/state/log/entry.mjs +126 -0
  157. package/source/components/state/log/namespace.mjs +13 -0
  158. package/source/components/state/log.mjs +275 -0
  159. package/source/components/state/namespace.mjs +13 -0
  160. package/source/components/state/state.mjs +131 -0
  161. package/source/components/state/style/log.pcss +111 -0
  162. package/source/components/state/style/state.pcss +113 -0
  163. package/source/components/state/stylesheet/log.mjs +33 -0
  164. package/source/components/state/stylesheet/state.mjs +33 -0
  165. package/source/components/style/badge.pcss +92 -0
  166. package/source/components/style/border.pcss +77 -0
  167. package/source/components/style/button.pcss +105 -0
  168. package/source/components/style/card.pcss +108 -0
  169. package/source/components/style/color.pcss +257 -0
  170. package/source/components/style/common.pcss +103 -0
  171. package/source/components/style/control.pcss +11 -0
  172. package/source/components/style/data-grid.pcss +43 -0
  173. package/source/components/style/display.pcss +42 -0
  174. package/source/components/style/floating-ui.pcss +33 -0
  175. package/source/components/style/form.pcss +5 -0
  176. package/source/components/style/host.pcss +15 -0
  177. package/source/components/style/link.pcss +63 -0
  178. package/source/components/style/mixin/badge.pcss +18 -0
  179. package/source/components/style/mixin/button.pcss +54 -0
  180. package/source/components/style/mixin/form.pcss +247 -0
  181. package/source/components/style/mixin/hover.pcss +8 -0
  182. package/source/components/style/mixin/media.pcss +107 -0
  183. package/source/components/style/mixin/property.pcss +288 -0
  184. package/source/components/style/mixin/skeleton.pcss +26 -0
  185. package/source/components/style/mixin/spinner.pcss +24 -0
  186. package/source/components/style/mixin/typography.pcss +52 -0
  187. package/source/components/style/normalize.pcss +14 -0
  188. package/source/components/style/popper.pcss +78 -0
  189. package/source/components/style/property.pcss +17 -0
  190. package/source/components/style/ripple.pcss +14 -0
  191. package/source/components/style/skeleton.pcss +28 -0
  192. package/source/components/style/space.pcss +47 -0
  193. package/source/components/style/spinner.pcss +6 -0
  194. package/source/components/style/table.pcss +46 -0
  195. package/source/components/style/theme.pcss +119 -0
  196. package/source/components/style/typography.pcss +131 -0
  197. package/source/components/stylesheet/badge.mjs +33 -0
  198. package/source/components/stylesheet/border.mjs +33 -0
  199. package/source/components/stylesheet/button.mjs +33 -0
  200. package/source/components/stylesheet/card.mjs +33 -0
  201. package/source/components/stylesheet/color.mjs +33 -0
  202. package/source/components/stylesheet/common.mjs +33 -0
  203. package/source/components/stylesheet/control.mjs +33 -0
  204. package/source/components/stylesheet/data-grid.mjs +33 -0
  205. package/source/components/stylesheet/display.mjs +33 -0
  206. package/source/components/stylesheet/floating-ui.mjs +33 -0
  207. package/source/components/stylesheet/form.mjs +33 -0
  208. package/source/components/stylesheet/host.mjs +33 -0
  209. package/source/components/stylesheet/link.mjs +33 -0
  210. package/source/components/stylesheet/namespace.mjs +13 -0
  211. package/source/components/stylesheet/normalize.mjs +33 -0
  212. package/source/components/stylesheet/popper.mjs +33 -0
  213. package/source/components/stylesheet/property.mjs +33 -0
  214. package/source/components/stylesheet/ripple.mjs +33 -0
  215. package/source/components/stylesheet/skeleton.mjs +33 -0
  216. package/source/components/stylesheet/space.mjs +33 -0
  217. package/source/components/stylesheet/spinner.mjs +33 -0
  218. package/source/components/stylesheet/table.mjs +33 -0
  219. package/source/components/stylesheet/theme.mjs +33 -0
  220. package/source/components/stylesheet/tree-menu.mjs +33 -0
  221. package/source/components/stylesheet/typography.mjs +33 -0
  222. package/source/components/tree-menu/namespace.mjs +13 -0
  223. package/source/components/tree-menu/style/tree-menu.pcss +107 -0
  224. package/source/components/tree-menu/stylesheet/namespace.mjs +13 -0
  225. package/source/components/tree-menu/stylesheet/tree-menu.mjs +33 -0
  226. package/source/components/tree-menu/tree-menu.mjs +660 -0
  227. package/source/constraints/abstract.mjs +17 -24
  228. package/source/constraints/abstractoperator.mjs +27 -22
  229. package/source/constraints/andoperator.mjs +20 -17
  230. package/source/constraints/invalid.mjs +17 -17
  231. package/source/constraints/isarray.mjs +20 -20
  232. package/source/constraints/isobject.mjs +20 -20
  233. package/source/constraints/oroperator.mjs +45 -45
  234. package/source/constraints/valid.mjs +17 -17
  235. package/source/data/buildmap.mjs +108 -103
  236. package/source/data/buildtree.mjs +59 -57
  237. package/source/data/datasource/dom.mjs +80 -84
  238. package/source/data/datasource/namespace.mjs +1 -1
  239. package/source/data/datasource/server/restapi/data-fetch-error.mjs +27 -25
  240. package/source/data/datasource/server/restapi/writeerror.mjs +34 -32
  241. package/source/data/datasource/server/restapi.mjs +176 -177
  242. package/source/data/datasource/server/webconnect.mjs +150 -156
  243. package/source/data/datasource/server.mjs +58 -59
  244. package/source/data/datasource/storage/localstorage.mjs +25 -24
  245. package/source/data/datasource/storage/sessionstorage.mjs +28 -25
  246. package/source/data/datasource/storage.mjs +74 -73
  247. package/source/data/datasource.mjs +176 -167
  248. package/source/data/diff.mjs +98 -97
  249. package/source/data/extend.mjs +42 -42
  250. package/source/data/pathfinder.mjs +301 -288
  251. package/source/data/pipe.mjs +36 -36
  252. package/source/data/transformer.mjs +742 -726
  253. package/source/dom/assembler.mjs +44 -44
  254. package/source/dom/attributes.mjs +142 -122
  255. package/source/dom/constants.mjs +62 -58
  256. package/source/dom/customcontrol.mjs +299 -299
  257. package/source/dom/customelement.mjs +843 -806
  258. package/source/dom/dimension.mjs +56 -46
  259. package/source/dom/events.mjs +74 -69
  260. package/source/dom/focusmanager.mjs +175 -175
  261. package/source/dom/locale.mjs +28 -28
  262. package/source/dom/ready.mjs +13 -13
  263. package/source/dom/resource/data.mjs +117 -111
  264. package/source/dom/resource/link/stylesheet.mjs +16 -16
  265. package/source/dom/resource/link.mjs +94 -96
  266. package/source/dom/resource/script.mjs +72 -74
  267. package/source/dom/resource.mjs +174 -172
  268. package/source/dom/resourcemanager.mjs +152 -156
  269. package/source/dom/slotted.mjs +78 -80
  270. package/source/dom/template.mjs +126 -112
  271. package/source/dom/theme.mjs +35 -35
  272. package/source/dom/updater.mjs +673 -651
  273. package/source/dom/util/extract-keys.mjs +34 -22
  274. package/source/dom/util/init-options-from-attributes.mjs +46 -38
  275. package/source/dom/util/namespace.mjs +13 -0
  276. package/source/dom/util/set-option-from-attribute.mjs +35 -29
  277. package/source/dom/util.mjs +112 -81
  278. package/source/dom/worker/factory.mjs +83 -83
  279. package/source/i18n/formatter.mjs +75 -73
  280. package/source/i18n/locale.mjs +146 -144
  281. package/source/i18n/provider.mjs +70 -64
  282. package/source/i18n/providers/embed.mjs +136 -127
  283. package/source/i18n/providers/fetch.mjs +84 -76
  284. package/source/i18n/translations.mjs +205 -195
  285. package/source/logging/handler/console.mjs +36 -36
  286. package/source/logging/handler.mjs +140 -140
  287. package/source/logging/logentry.mjs +25 -25
  288. package/source/logging/logger.mjs +177 -175
  289. package/source/math/random.mjs +63 -59
  290. package/source/monster.mjs +226 -217
  291. package/source/net/webconnect/message.mjs +31 -31
  292. package/source/net/webconnect.mjs +278 -271
  293. package/source/text/bracketed-key-value-hash.mjs +182 -179
  294. package/source/text/formatter.mjs +235 -210
  295. package/source/text/generate-range-comparison-expression.mjs +56 -34
  296. package/source/text/namespace.mjs +1 -1
  297. package/source/types/base.mjs +69 -61
  298. package/source/types/basewithoptions.mjs +46 -46
  299. package/source/types/binary.mjs +20 -20
  300. package/source/types/dataurl.mjs +96 -90
  301. package/source/types/global.mjs +45 -39
  302. package/source/types/id.mjs +25 -25
  303. package/source/types/internal.mjs +115 -114
  304. package/source/types/is.mjs +56 -40
  305. package/source/types/mediatype.mjs +119 -119
  306. package/source/types/namespace.mjs +1 -1
  307. package/source/types/node.mjs +160 -150
  308. package/source/types/nodelist.mjs +94 -96
  309. package/source/types/noderecursiveiterator.mjs +50 -50
  310. package/source/types/observablequeue.mjs +73 -73
  311. package/source/types/observer.mjs +104 -104
  312. package/source/types/observerlist.mjs +66 -66
  313. package/source/types/proxyobserver.mjs +210 -210
  314. package/source/types/queue.mjs +63 -63
  315. package/source/types/randomid.mjs +13 -13
  316. package/source/types/regex.mjs +3 -1
  317. package/source/types/stack.mjs +64 -64
  318. package/source/types/tokenlist.mjs +206 -205
  319. package/source/types/typeof.mjs +12 -10
  320. package/source/types/uniquequeue.mjs +48 -48
  321. package/source/types/uuid.mjs +32 -32
  322. package/source/types/validate.mjs +67 -67
  323. package/source/types/version.mjs +115 -105
  324. package/source/util/clone.mjs +103 -91
  325. package/source/util/comparator.mjs +97 -97
  326. package/source/util/deadmansswitch.mjs +40 -44
  327. package/source/util/freeze.mjs +10 -9
  328. package/source/util/namespace.mjs +1 -1
  329. package/source/util/processing.mjs +104 -105
  330. package/source/util/runtime.mjs +56 -44
  331. package/source/util/trimspaces.mjs +24 -24
  332. package/test/cases/components/form/button.mjs +122 -0
  333. package/test/cases/components/form/confirm-button.mjs +127 -0
  334. package/test/cases/components/form/form.mjs +317 -0
  335. package/test/cases/components/form/reload.mjs +188 -0
  336. package/test/cases/components/form/select.mjs +229 -0
  337. package/test/cases/components/form/state-button.mjs +130 -0
  338. package/test/cases/components/form/tabs.mjs +98 -0
  339. package/test/cases/components/form/template.mjs +189 -0
  340. package/test/cases/components/form/tree-select.mjs +216 -0
  341. package/test/cases/components/host/details.mjs +68 -0
  342. package/test/cases/components/host/host.mjs +70 -0
  343. package/test/cases/components/host/overlay.mjs +60 -0
  344. package/test/cases/components/host/util.mjs +79 -0
  345. package/test/cases/components/notify/message.mjs +39 -0
  346. package/test/cases/components/notify/notify.mjs +89 -0
  347. package/test/cases/constraint/abstractoperator.mjs +2 -2
  348. package/test/cases/constraint/andoperator.mjs +3 -3
  349. package/test/cases/constraint/invalid.mjs +1 -1
  350. package/test/cases/constraint/isarray.mjs +1 -1
  351. package/test/cases/constraint/isobject.mjs +1 -1
  352. package/test/cases/constraint/oroperator.mjs +3 -3
  353. package/test/cases/constraint/valid.mjs +1 -1
  354. package/test/cases/data/buildmap.mjs +1 -1
  355. package/test/cases/data/buildtree.mjs +2 -2
  356. package/test/cases/data/datasource/dom.mjs +1 -1
  357. package/test/cases/data/datasource/server/restapi.mjs +2 -2
  358. package/test/cases/data/datasource/server/websocket.mjs +1 -1
  359. package/test/cases/data/datasource/server.mjs +1 -1
  360. package/test/cases/data/datasource/storage/localstorage.mjs +1 -1
  361. package/test/cases/data/datasource/storage/sessionstorage.mjs +1 -1
  362. package/test/cases/data/datasource.mjs +1 -1
  363. package/test/cases/data/diff.mjs +2 -2
  364. package/test/cases/data/extend.mjs +1 -1
  365. package/test/cases/data/pathfinder.mjs +1 -1
  366. package/test/cases/data/pipe.mjs +2 -2
  367. package/test/cases/data/transformer.mjs +3 -4
  368. package/test/cases/dom/assembler.mjs +1 -1
  369. package/test/cases/dom/attributes.mjs +1 -1
  370. package/test/cases/dom/customcontrol.mjs +8 -7
  371. package/test/cases/dom/customelement-initfromscripthost.mjs +6 -6
  372. package/test/cases/dom/customelement.mjs +7 -7
  373. package/test/cases/dom/dimension.mjs +4 -4
  374. package/test/cases/dom/events.mjs +1 -1
  375. package/test/cases/dom/find.mjs +1 -1
  376. package/test/cases/dom/focusmanager.mjs +1 -1
  377. package/test/cases/dom/locale.mjs +2 -2
  378. package/test/cases/dom/ready.mjs +1 -1
  379. package/test/cases/dom/resource/data.mjs +3 -3
  380. package/test/cases/dom/resource/link/stylesheet.mjs +3 -3
  381. package/test/cases/dom/resource/link.mjs +3 -3
  382. package/test/cases/dom/resource/script.mjs +3 -3
  383. package/test/cases/dom/resource.mjs +1 -1
  384. package/test/cases/dom/resourcemanager.mjs +1 -1
  385. package/test/cases/dom/slotted-nodes.mjs +1 -1
  386. package/test/cases/dom/template.mjs +2 -2
  387. package/test/cases/dom/theme.mjs +2 -2
  388. package/test/cases/dom/updater.mjs +4 -4
  389. package/test/cases/dom/util/extract-keys.mjs +1 -1
  390. package/test/cases/dom/util/init-options-from-attributes.mjs +1 -1
  391. package/test/cases/dom/util.mjs +2 -2
  392. package/test/cases/dom/worker/factory.mjs +2 -2
  393. package/test/cases/i18n/formatter.mjs +2 -2
  394. package/test/cases/i18n/locale.mjs +1 -1
  395. package/test/cases/i18n/provider.mjs +4 -4
  396. package/test/cases/i18n/providers/embed.mjs +3 -3
  397. package/test/cases/i18n/providers/fetch.mjs +3 -3
  398. package/test/cases/i18n/translations.mjs +3 -3
  399. package/test/cases/logging/handler/console.mjs +3 -3
  400. package/test/cases/logging/handler.mjs +3 -3
  401. package/test/cases/logging/logentry.mjs +1 -1
  402. package/test/cases/logging/logger.mjs +1 -1
  403. package/test/cases/math/random.mjs +1 -2
  404. package/test/cases/monster.mjs +2 -2
  405. package/test/cases/net/webconnect/message.mjs +1 -2
  406. package/test/cases/net/webconnect.mjs +3 -3
  407. package/test/cases/text/bracketed-key-value-hash.mjs +1 -1
  408. package/test/cases/text/formatter.mjs +1 -1
  409. package/test/cases/text/util.mjs +1 -1
  410. package/test/cases/types/base.mjs +2 -2
  411. package/test/cases/types/basewithoptions.mjs +1 -1
  412. package/test/cases/types/binary.mjs +1 -1
  413. package/test/cases/types/dataurl.mjs +1 -1
  414. package/test/cases/types/global.mjs +1 -1
  415. package/test/cases/types/id.mjs +1 -1
  416. package/test/cases/types/internal.mjs +2 -2
  417. package/test/cases/types/is.mjs +2 -2
  418. package/test/cases/types/mediatype.mjs +1 -1
  419. package/test/cases/types/node.mjs +4 -4
  420. package/test/cases/types/nodelist.mjs +2 -2
  421. package/test/cases/types/noderecursiveiterator.mjs +3 -3
  422. package/test/cases/types/observablequeue.mjs +2 -2
  423. package/test/cases/types/observer.mjs +1 -1
  424. package/test/cases/types/observerlist.mjs +2 -2
  425. package/test/cases/types/proxyobserver.mjs +4 -4
  426. package/test/cases/types/queue.mjs +1 -1
  427. package/test/cases/types/randomid.mjs +1 -1
  428. package/test/cases/types/regex.mjs +1 -1
  429. package/test/cases/types/stack.mjs +1 -1
  430. package/test/cases/types/tokenlist.mjs +1 -1
  431. package/test/cases/types/typeof.mjs +2 -2
  432. package/test/cases/types/uniquequeue.mjs +1 -1
  433. package/test/cases/types/uuid.mjs +1 -1
  434. package/test/cases/types/validate.mjs +3 -3
  435. package/test/cases/types/version.mjs +1 -1
  436. package/test/cases/util/clone.mjs +1 -1
  437. package/test/cases/util/comparator.mjs +1 -1
  438. package/test/cases/util/deadmansswitch.mjs +1 -1
  439. package/test/cases/util/freeze.mjs +1 -1
  440. package/test/cases/util/processing.mjs +1 -1
  441. package/test/cases/util/trimspaces.mjs +1 -1
  442. package/test/util/chai-dom.mjs +2 -2
  443. package/test/util/intersection-mock.mjs +69 -0
  444. package/test/util/jsdom.mjs +43 -27
  445. package/test/util/localstorage.mjs +1 -0
  446. package/test/util/resize-observer.mjs +29 -0
  447. package/test/util/websocket.mjs +5 -2
  448. package/test/web/import.js +92 -73
  449. package/test/web/test.html +28 -5
  450. package/test/web/tests.js +29430 -15209
  451. package/CHANGELOG +0 -438
@@ -0,0 +1,350 @@
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
+ import { isString } from "../../types/is.mjs";
26
+
27
+ export { Button };
28
+
29
+ /**
30
+ * @private
31
+ * @type {symbol}
32
+ */
33
+ export const buttonElementSymbol = Symbol("buttonElement");
34
+
35
+ /**
36
+ * This CustomControl creates a button element with a variety of options.
37
+ *
38
+ * <img src="./images/button.png">
39
+ *
40
+ * Dependencies: the system uses functions of the [monsterjs](https://monsterjs.org/) library
41
+ *
42
+ * You can create this control either by specifying the HTML tag <monster-button />` directly in the HTML or using
43
+ * Javascript via the `document.createElement('monster-button');` method.
44
+ *
45
+ * ```html
46
+ * <monster-button></monster-button>
47
+ * ```
48
+ *
49
+ * Or you can create this CustomControl directly in Javascript:
50
+ *
51
+ * ```js
52
+ * import {Button} from '@schukai/component-form/source/button.js';
53
+ * document.createElement('monster-button');
54
+ * ```
55
+ *
56
+ * The `data-monster-button-class` attribute can be used to change the CSS class of the button.
57
+ *
58
+ * @externalExample ../../../example/components/form/button.mjs
59
+ * @startuml button.png
60
+ * skinparam monochrome true
61
+ * skinparam shadowing false
62
+ * HTMLElement <|-- CustomElement
63
+ * CustomElement <|-- CustomControl
64
+ * CustomControl <|-- Button
65
+ * @enduml
66
+ *
67
+ * @since 1.5.0
68
+ * @copyright schukai GmbH
69
+ * @memberOf Monster.Components.Form
70
+ * @summary A simple button
71
+ */
72
+ class Button extends CustomControl {
73
+ /**
74
+ * This method is called by the `instanceof` operator.
75
+ * @returns {symbol}
76
+ * @since 2.1.0
77
+ */
78
+ static get [instanceSymbol]() {
79
+ return Symbol.for("@schukai/component-form/button@@instance");
80
+ }
81
+
82
+ /**
83
+ *
84
+ * @return {Monster.Components.Form.Button}
85
+ */
86
+ [assembleMethodSymbol]() {
87
+ super[assembleMethodSymbol]();;
88
+ initControlReferences.call(this);
89
+ initEventhandler.call(this);
90
+ return this;
91
+ }
92
+
93
+ /**
94
+ * The Button.click() method simulates a click on the internal button element.
95
+ *
96
+ * @since 3.27.0
97
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click}
98
+ */
99
+ click() {
100
+ if (this.getOption("disabled") === true) {
101
+ return;
102
+ }
103
+
104
+ if (
105
+ this[buttonElementSymbol] &&
106
+ isFunction(this[buttonElementSymbol].click)
107
+ ) {
108
+ this[buttonElementSymbol].click();
109
+ }
110
+ }
111
+
112
+ /**
113
+ * The Button.focus() method sets focus on the internal button element.
114
+ *
115
+ * @since 3.27.0
116
+ * @param {Object} options
117
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus}
118
+ */
119
+ focus(options) {
120
+ if (this.getOption("disabled") === true) {
121
+ return;
122
+ }
123
+
124
+ if (
125
+ this[buttonElementSymbol] &&
126
+ isFunction(this[buttonElementSymbol].focus)
127
+ ) {
128
+ this[buttonElementSymbol].focus(options);
129
+ }
130
+ }
131
+
132
+ /**
133
+ * The Button.blur() method removes focus from the internal button element.
134
+ */
135
+ blur() {
136
+ if (
137
+ this[buttonElementSymbol] &&
138
+ isFunction(this[buttonElementSymbol].blur)
139
+ ) {
140
+ this[buttonElementSymbol].blur();
141
+ }
142
+ }
143
+
144
+ /**
145
+ * This method determines which attributes are to be monitored by `attributeChangedCallback()`.
146
+ *
147
+ * @return {string[]}
148
+ */
149
+ static get observedAttributes() {
150
+ const attributes = super.observedAttributes;
151
+ attributes.push(ATTRIBUTE_BUTTON_CLASS);
152
+ return attributes;
153
+ }
154
+
155
+ /**
156
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals}
157
+ * @return {boolean}
158
+ */
159
+ static get formAssociated() {
160
+ return true;
161
+ }
162
+
163
+ /**
164
+ * The current selection of the Select
165
+ *
166
+ * ```
167
+ * e = document.querySelector('monster-select');
168
+ * console.log(e.value)
169
+ * // ↦ 1
170
+ * // ↦ ['1','2']
171
+ * ```
172
+ *
173
+ * @property {string|array}
174
+ */
175
+ get value() {
176
+ return this.getOption("value");
177
+ }
178
+
179
+ /**
180
+ * Set selection
181
+ *
182
+ * ```
183
+ * e = document.querySelector('monster-select');
184
+ * e.value=1
185
+ * ```
186
+ *
187
+ * @property {string|array} value
188
+ * @since 1.2.0
189
+ * @throws {Error} unsupported type
190
+ */
191
+ set value(value) {
192
+ this.setOption("value", value);
193
+ try {
194
+ this?.setFormValue(this.value);
195
+ } catch (e) {
196
+ addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, e.message);
197
+ }
198
+ }
199
+
200
+ /**
201
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
202
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
203
+ *
204
+ * The individual configuration values can be found in the table.
205
+ *
206
+ * @property {Object} templates Template definitions
207
+ * @property {string} templates.main Main template
208
+ * @property {Object} labels Labels
209
+ * @property {string} labels.button=<slot></slot> Button label
210
+ * @property {Object} actions Callbacks
211
+ * @property {string} actions.click="throw Error" Callback when clicked
212
+ * @property {Object} classes CSS classes
213
+ * @property {string} classes.button="monster-button-primary" CSS class for the button
214
+ * @property {boolean} disabled=false Disabled state
215
+ * @property {Object} effects Effects
216
+ * @property {boolean} effects.ripple=true Ripple effect
217
+ */
218
+ get defaults() {
219
+ return Object.assign({}, super.defaults, {
220
+ templates: {
221
+ main: getTemplate(),
222
+ },
223
+ labels: {
224
+ button: "<slot></slot>",
225
+ },
226
+ classes: {
227
+ button: "monster-button-primary",
228
+ },
229
+ disabled: false,
230
+ actions: {
231
+ click: (e) => {
232
+ throw new Error("the click action is not defined");
233
+ },
234
+ },
235
+ effects: {
236
+ ripple: true,
237
+ },
238
+ value: null,
239
+ });
240
+ }
241
+
242
+ /**
243
+ *
244
+ * @return {string}
245
+ */
246
+ static getTag() {
247
+ return "monster-button";
248
+ }
249
+
250
+ /**
251
+ *
252
+ * @return {Array<CSSStyleSheet>}
253
+ */
254
+ static getCSSStyleSheet() {
255
+ return [RippleStyleSheet, ButtonStyleSheet];
256
+ }
257
+ }
258
+
259
+ /**
260
+ * @private
261
+ * @return {initEventhandler}
262
+ * @fires Monster.Components.Form.event:monster-button-clicked
263
+ */
264
+ function initEventhandler() {
265
+ const self = this;
266
+ const button = this[buttonElementSymbol];
267
+
268
+ const type = "click";
269
+
270
+ button.addEventListener(type, function (event) {
271
+ const callback = self.getOption("actions.click");
272
+
273
+ fireCustomEvent(self, "monster-button-clicked", {
274
+ button: self,
275
+ });
276
+
277
+ if (!isFunction(callback)) {
278
+ return;
279
+ }
280
+
281
+ const element = findTargetElementFromEvent(
282
+ event,
283
+ ATTRIBUTE_ROLE,
284
+ "control",
285
+ );
286
+
287
+ if (!(element instanceof Node && self.hasNode(element))) {
288
+ return;
289
+ }
290
+
291
+ callback.call(self, event);
292
+ });
293
+
294
+ if (self.getOption("effects.ripple")) {
295
+ button.addEventListener("click", createRipple.bind(self));
296
+ }
297
+
298
+ // data-monster-options
299
+ self[attributeObserverSymbol][ATTRIBUTE_BUTTON_CLASS] = function (value) {
300
+ self.setOption("classes.button", value);
301
+ };
302
+
303
+ return this;
304
+ }
305
+
306
+ /**
307
+ * @private
308
+ */
309
+ function initControlReferences() {
310
+ this[buttonElementSymbol] = this.shadowRoot.querySelector(
311
+ `[${ATTRIBUTE_ROLE}=button]`,
312
+ );
313
+ }
314
+
315
+ /**
316
+ * @private
317
+ * @return {string}
318
+ */
319
+ function getTemplate() {
320
+ // language=HTML
321
+ return `
322
+ <div data-monster-role="control" part="control">
323
+ <button data-monster-attributes="disabled path:disabled | if:true, class path:classes.button"
324
+ data-monster-role="button"
325
+ part="button"
326
+ data-monster-replace="path:labels.button"></button>
327
+ </div>`;
328
+ }
329
+
330
+ function createRipple(event) {;
331
+ const button = this[buttonElementSymbol];
332
+
333
+ const circle = document.createElement("span");
334
+ const diameter = Math.max(button.clientWidth, button.clientHeight);
335
+ const radius = diameter / 2;
336
+
337
+ circle.style.width = circle.style.height = `${diameter}px`;
338
+ circle.style.left = `${event.clientX - button.offsetLeft - radius}px`;
339
+ circle.style.top = `${event.clientY - button.offsetTop - radius}px`;
340
+ circle.classList.add("monster-fx-ripple");
341
+
342
+ const ripples = button.getElementsByClassName("monster-fx-ripple");
343
+ for (const ripple of ripples) {
344
+ ripple.remove();
345
+ }
346
+
347
+ button.appendChild(circle);
348
+ }
349
+
350
+ registerCustomElement(Button);
@@ -0,0 +1,330 @@
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 { ATTRIBUTE_ROLE } from "../../dom/constants.mjs";
9
+ import {
10
+ assembleMethodSymbol,
11
+ registerCustomElement,
12
+ } from "../../dom/customelement.mjs";
13
+ import { typeOf } from "../../types/typeof.mjs";
14
+ import { Button } from "./button.mjs";
15
+ import { PopperButton } from "./popper-button.mjs";
16
+ import { ConfirmButtonStyleSheet } from "./stylesheet/confirm-button.mjs";
17
+ import { fireCustomEvent } from "../../dom/events.mjs";
18
+
19
+ import "./button.mjs";
20
+ import "./message-state-button.mjs";
21
+ import { PopperButtonStyleSheet } from "./stylesheet/popper-button.mjs";
22
+ import { StateButtonStyleSheet } from "./stylesheet/state-button.mjs";
23
+
24
+ export { ConfirmButton };
25
+
26
+ /**
27
+ * @private
28
+ * @type {symbol}
29
+ */
30
+ const confirmButtonElementSymbol = Symbol("confirmButtonElement");
31
+
32
+ /**
33
+ * @private
34
+ * @type {symbol}
35
+ */
36
+ const cancelButtonElementSymbol = Symbol("cancelButtonElement");
37
+
38
+ /**
39
+ * This action callback executes the actions when a button is clicked.
40
+ *
41
+ * @callback Monster.Components.Form~exampleActionCallback
42
+ * @param {Event} e Event
43
+ * @memberOf Monster.Components.Form
44
+ * @this {CustomControl}
45
+ */
46
+
47
+ /**
48
+ * This CustomControl creates a confirm button element with a variety of options.
49
+ *
50
+ * <img src="./images/confirm-button.png">
51
+ *
52
+ * Dependencies: the system uses functions of the [monsterjs](https://monsterjs.org/) library
53
+ * as well as [pooperjs](https://popper.js.org/docs/v2/).
54
+ *
55
+ * You can create this control either by specifying the HTML tag <monster-confirm-button />` directly in the HTML or using
56
+ * Javascript via the `document.createElement('monster-confirm-button');` method.
57
+ *
58
+ * ```html
59
+ * <monster-confirm-button></monster-confirm-button>
60
+ * ```
61
+ *
62
+ * Or you can create this CustomControl directly in Javascript:
63
+ *
64
+ * ```js
65
+ * import {ConfirmButton} from '@schukai/component-form/source/confirm-button.js';
66
+ * document.createElement('monster-confirm-button');
67
+ * ```
68
+ * The `data-monster-button-class` attribute can be used to change the CSS class of the button.
69
+ *
70
+ * @startuml confirm-button.png
71
+ * skinparam monochrome true
72
+ * skinparam shadowing false
73
+ * HTMLElement <|-- CustomElement
74
+ * CustomElement <|-- CustomControl
75
+ * CustomControl <|-- Button
76
+ * Button <|-- PopperButton
77
+ * PopperButton <|-- ConfirmButton
78
+ * @enduml
79
+ *
80
+ * @since 1.5.0
81
+ * @copyright schukai GmbH
82
+ * @memberOf Monster.Components.Form
83
+ * @summary A confirm button
84
+ */
85
+ class ConfirmButton extends PopperButton {
86
+ /**
87
+ * This method is called by the `instanceof` operator.
88
+ * @returns {symbol}
89
+ * @since 2.1.0
90
+ */
91
+ static get [instanceSymbol]() {
92
+ return Symbol.for("@schukai/component-form/confirm-button@@instance");
93
+ }
94
+
95
+ /**
96
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
97
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
98
+ *
99
+ * The individual configuration values can be found in the table.
100
+ *
101
+ * @property {Object} toggleEventType=click,touch List of event types to be observed for opening the confirm message
102
+ * @property {Object} templates Template definitions
103
+ * @property {string} templates.main Main template
104
+ * @property {string} labels.button='<slot name="button"></slot>' Button label
105
+ * @property {string} labels.message='<slot>Should I Stay or Should I Go?</slot>' Message
106
+ * @property {string} labels.confirm='<slot name="confirm">Confirm</slot>' Confirm button label
107
+ * @property {string} labels.cancel='<slot name="cancel">Cancel</slot>' Cancel button label
108
+ * @property {Monster.Components.Form~exampleActionCallback} actions.confirm
109
+ * @property {Monster.Components.Form~exampleActionCallback} actions.cancel List of event types to be observed for opening the dropdown
110
+ * @property {Object} popper [PopperJS Options](https://popper.js.org/docs/v2/)
111
+ * @property {string} popper.placement=top PopperJS placement
112
+ * @extends {PopperButton}
113
+ */
114
+ get defaults() {;
115
+
116
+ const obj = Object.assign({}, super.defaults, {
117
+ templates: {
118
+ main: getTemplate(),
119
+ },
120
+ labels: {
121
+ button: '<slot name="button"></slot>',
122
+ message: "<slot>Should I Stay or Should I Go?</slot>",
123
+ confirm: '<slot name="confirm">Confirm</slot>',
124
+ cancel: '<slot name="cancel">Cancel</slot>',
125
+ },
126
+ });
127
+
128
+ obj["classes"]["confirmButton"] = "monster-button-primary";
129
+ obj["classes"]["cancelButton"] = "monster-button-secondary";
130
+ obj["actions"]["cancel"] = (e) => {
131
+ this.hideDialog();
132
+ };
133
+
134
+ obj["actions"]["confirm"] = (e) => {
135
+ throw new Error("this callback must be implemented");
136
+ };
137
+
138
+ return obj;
139
+ }
140
+
141
+ hideDialog() {;
142
+ super.hideDialog();
143
+ this[confirmButtonElementSymbol].removeState();
144
+ return this;
145
+ }
146
+
147
+ /**
148
+ *
149
+ * @return {Monster.Components.Form.PopperButton}
150
+ */
151
+ [assembleMethodSymbol]() {
152
+ super[assembleMethodSymbol]();;
153
+ initControlReferences.call(this);
154
+ initEventhandler.call(this);
155
+ }
156
+
157
+ /**
158
+ * @return {string}
159
+ */
160
+ static getTag() {
161
+ return "monster-confirm-button";
162
+ }
163
+
164
+ /**
165
+ * @return {Array}
166
+ */
167
+ static getCSSStyleSheet() {
168
+ const styles = PopperButton.getCSSStyleSheet();
169
+ styles.push(ConfirmButtonStyleSheet);
170
+ return styles;
171
+ }
172
+
173
+ /**
174
+ *
175
+ * @returns {Monster.Components.Form.PopperButton}
176
+ */
177
+ showDialog() {;
178
+ const confirmButtonClass = this.getOption("classes.confirmButton");
179
+ if (confirmButtonClass) {
180
+ this[confirmButtonElementSymbol].setOption(
181
+ "classes.button",
182
+ confirmButtonClass,
183
+ );
184
+ }
185
+
186
+ const cancelButtonClass = this.getOption("classes.cancelButton");
187
+ if (cancelButtonClass) {
188
+ this[cancelButtonElementSymbol].setOption(
189
+ "classes.button",
190
+ cancelButtonClass,
191
+ );
192
+ }
193
+
194
+ return super.showDialog();
195
+ }
196
+
197
+ /**
198
+ * Set the confirm button state
199
+ *
200
+ * @param {string} state
201
+ * @param {number} timeout
202
+ * @returns {Monster.Components.Form.ConfirmButton}
203
+ */
204
+ setConfirmButtonState(state, timeout) {;
205
+ this[confirmButtonElementSymbol].setState(state, timeout);
206
+ return this;
207
+ }
208
+
209
+ /**
210
+ * Set and show the confirm button message
211
+ *
212
+ * @param {string} message
213
+ * @param {number} timeout
214
+ * @returns {Monster.Components.Form.ConfirmButton}
215
+ */
216
+ showConfirmButtonMessage(message, timeout) {;
217
+ this[confirmButtonElementSymbol].setMessage(message);
218
+ setTimeout(() => {
219
+ this[confirmButtonElementSymbol].showMessage(timeout);
220
+ }, 0);
221
+ return this;
222
+ }
223
+ }
224
+
225
+ /**
226
+ * @private
227
+ * @param type
228
+ * @return {function}
229
+ */
230
+ function getAction(type) {
231
+ const self = this;
232
+
233
+ return function (event) {;
234
+
235
+ const callback = self.getOption(`actions.${type}`);
236
+ if (typeOf(callback) !== "function") {
237
+ return;
238
+ }
239
+
240
+ callback.call(this, event);
241
+ };
242
+ }
243
+
244
+ /**
245
+ * @private
246
+ * @return {initEventhandler}
247
+ * @fires Monster.Components.Form.PopperButton#monster-confirm
248
+ * @fires Monster.Components.Form.PopperButton#monster-confirmed
249
+ */
250
+ function initEventhandler() {;
251
+
252
+ this[cancelButtonElementSymbol].setOption(
253
+ "clickEventType",
254
+ this.getOption("clickEventType", ["click"]),
255
+ );
256
+ this[cancelButtonElementSymbol].setOption(
257
+ "actions.click",
258
+ getAction.call(this, "cancel"),
259
+ );
260
+
261
+ this[confirmButtonElementSymbol].setOption(
262
+ "clickEventType",
263
+ this.getOption("clickEventType", ["click"]),
264
+ );
265
+ this[confirmButtonElementSymbol].setOption("actions.click", () => {
266
+ const callback = getAction.call(this, "confirm");
267
+ fireCustomEvent(this, "monster-confirm", {});
268
+ callback.call(this);
269
+ fireCustomEvent(this, "monster-confirmed", {});
270
+ });
271
+
272
+ return this;
273
+ }
274
+
275
+ /**
276
+ * @private
277
+ * @return {Select}
278
+ */
279
+ function initControlReferences() {;
280
+ this[confirmButtonElementSymbol] = this.shadowRoot.querySelector(
281
+ `[${ATTRIBUTE_ROLE}=confirm]`,
282
+ );
283
+ this[cancelButtonElementSymbol] = this.shadowRoot.querySelector(
284
+ `[${ATTRIBUTE_ROLE}=cancel]`,
285
+ );
286
+ }
287
+
288
+ /**
289
+ * @private
290
+ * @return {string}
291
+ */
292
+ function getTemplate() {
293
+ // language=HTML
294
+ return `
295
+
296
+ <div data-monster-role="control" part="control">
297
+ <button data-monster-attributes="disabled path:disabled | if:true, class path:classes.button"
298
+ data-monster-role="button"
299
+ part="button"
300
+ data-monster-replace="path:labels.button"></button>
301
+
302
+ <div data-monster-role="popper" part="popper" tabindex="-1" class="monster-color-primary-1">
303
+ <div data-monster-role="arrow"></div>
304
+ <div part="message" class="flex" data-monster-replace="path:labels.message"></div>
305
+ <div data-monster-role="decision">
306
+ <monster-message-state-button exportparts="monster-state-button:confirm-button,
307
+ control:confirm-control,
308
+ button-button:confirm-control-button,
309
+ button-control:confirm-button-control,
310
+ popper:confirm-popper,
311
+ message:confirm-popper-message-message,
312
+ icon:confirm-popper-message-icon,
313
+ title:confirm-popper-message-title"
314
+ data-monster-attributes="data-monster-button-class path:classes.confirmButton"
315
+ data-monster-role="confirm" part="confirm">
316
+ <span data-monster-replace="path:labels.confirm"></span>
317
+ </monster-message-state-button>
318
+
319
+ <monster-button exportparts="button:cancel-button,control:cancel-control"
320
+ data-monster-attributes="data-monster-button-class path:classes.cancelButton"
321
+ data-monster-role="cancel" part="cancel">
322
+ <span data-monster-replace="path:labels.cancel"></span>
323
+ </monster-button>
324
+ </div>
325
+ </div>
326
+ </div>
327
+ `;
328
+ }
329
+
330
+ registerCustomElement(ConfirmButton);