@schukai/monster 3.51.5 → 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 (360) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +15 -12
  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 +223 -103
  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/dom/customcontrol.mjs +5 -4
  348. package/test/cases/math/random.mjs +0 -1
  349. package/test/cases/monster.mjs +1 -1
  350. package/test/cases/net/webconnect/message.mjs +0 -1
  351. package/test/cases/types/node.mjs +1 -1
  352. package/test/util/chai-dom.mjs +2 -2
  353. package/test/util/intersection-mock.mjs +69 -0
  354. package/test/util/jsdom.mjs +41 -25
  355. package/test/util/localstorage.mjs +1 -0
  356. package/test/util/resize-observer.mjs +29 -0
  357. package/test/util/websocket.mjs +4 -1
  358. package/test/web/import.js +16 -1
  359. package/test/web/test.html +28 -5
  360. package/test/web/tests.js +30398 -17879
@@ -0,0 +1,420 @@
1
+ /**
2
+ * Copyright 2023 schukai GmbH
3
+ * SPDX-License-Identifier: AGPL-3.0
4
+ */
5
+
6
+ import {
7
+ assembleMethodSymbol,
8
+ CustomElement,
9
+ registerCustomElement,
10
+ } from "../../dom/customelement.mjs";
11
+ import "../notify/notify.mjs";
12
+ import { HostStyleSheet } from "./stylesheet/host.mjs";
13
+ import { getLocaleOfDocument } from "../../dom/locale.mjs";
14
+ import { Embed } from "../../i18n/providers/embed.mjs";
15
+ import { getDocumentTranslations } from "../../i18n/translations.mjs";
16
+ import { windowReady } from "../../dom/ready.mjs";
17
+ import { FocusManager } from "../../dom/focusmanager.mjs";
18
+ import { ResourceManager } from "../../dom/resourcemanager.mjs";
19
+ import { fireCustomEvent } from "../../dom/events.mjs";
20
+ import { isIterable } from "../../types/is.mjs";
21
+ import "./config-manager.mjs";
22
+ import { instanceSymbol } from "../../constants.mjs";
23
+
24
+ export { Host };
25
+
26
+ /**
27
+ * @private
28
+ * @type {symbol}
29
+ */
30
+ const promisesSymbol = Symbol("promisesSymbol");
31
+
32
+ /**
33
+ * @private
34
+ * @type {symbol}
35
+ */
36
+ const notifyElementSymbol = Symbol("notifyElement");
37
+
38
+ /**
39
+ * @private
40
+ * @type {symbol}
41
+ */
42
+ const overlayElementSymbol = Symbol("overlayElement");
43
+
44
+ /**
45
+ * @private
46
+ * @type {symbol}
47
+ */
48
+ const configManagerElementSymbol = Symbol("configManagerElement");
49
+
50
+ /**
51
+ * @private
52
+ * @type {symbol}
53
+ */
54
+ const focusManagerSymbol = Symbol("focusManager");
55
+
56
+ /**
57
+ * @private
58
+ * @type {symbol}
59
+ */
60
+ const resourceManagerSymbol = Symbol("resourceManager");
61
+
62
+ /**
63
+ * The Host component is used to encapsulate the content of a web app.
64
+ *
65
+ * <img src="./images/host.png">
66
+ *
67
+ * Dependencies: the system uses functions of the [monsterjs](https://monsterjs.org/) library
68
+ *
69
+ * You can create this control either by specifying the HTML tag <monster-host />` directly in the HTML or using
70
+ * Javascript via the `document.createElement('monster-host');` method.
71
+ *
72
+ * ```html
73
+ * <monster-host></monster-host>
74
+ * ```
75
+ *
76
+ * Or you can create this CustomControl directly in Javascript:
77
+ *
78
+ * ```js
79
+ * import '@schukai/component-state/source/host.mjs';
80
+ * document.createElement('monster-host');
81
+ * ```
82
+ *
83
+ * The Body should have a class "hidden" to ensure that the styles are applied correctly.
84
+ *
85
+ * ```css
86
+ * body.hidden {
87
+ * visibility: hidden;
88
+ * }
89
+ * ```
90
+ *
91
+ * @startuml host.png
92
+ * skinparam monochrome true
93
+ * skinparam shadowing false
94
+ * HTMLElement <|-- CustomElement
95
+ * CustomElement <|-- Host
96
+ * @enduml
97
+ *
98
+ * @copyright schukai GmbH
99
+ * @memberOf Monster.Components.Host
100
+ * @summary A simple host component
101
+ * @fires Monster.Components.Host.Host#monster-host-connected
102
+ * @fires Monster.Components.Host.Host#monster-host-disconnected
103
+ */
104
+ class Host extends CustomElement {
105
+ /**
106
+ * This method is called by the `instanceof` operator.
107
+ * @returns {symbol}
108
+ */
109
+ static get [instanceSymbol]() {
110
+ return Symbol.for("@schukai/component-host/Host@@instance");
111
+ }
112
+
113
+ /**
114
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
115
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
116
+ *
117
+ * The individual configuration values can be found in the table.
118
+ *
119
+ * @property {Object} templates Template definitions
120
+ * @property {string} templates.main Main template
121
+ * @property {Object} features Feature definitions
122
+ */
123
+ get defaults() {
124
+ return Object.assign({}, super.defaults, {
125
+ templates: {
126
+ main: getTemplate(),
127
+ },
128
+ });
129
+ }
130
+
131
+ /**
132
+ * @param key
133
+ * @returns {Promise}
134
+ */
135
+ getConfig(key) {
136
+ if (this[configManagerElementSymbol] instanceof HTMLElement === false) {
137
+ throw new Error("There is no config manager element");
138
+ }
139
+ return this[configManagerElementSymbol].getConfig(key);
140
+ }
141
+
142
+ /**
143
+ *
144
+ * @param {string} key
145
+ * @param {*} value
146
+ * @returns {Promise}
147
+ */
148
+ setConfig(key, value) {
149
+ if (this[configManagerElementSymbol] instanceof HTMLElement === false) {
150
+ throw new Error("There is no config manager element");
151
+ }
152
+
153
+ return this[configManagerElementSymbol].setConfig(key, value);
154
+ }
155
+
156
+ /**
157
+ * @private
158
+ * @fires Monster.Components.Host.Host#monster-host-connected
159
+ */
160
+ connectedCallback() {
161
+ super.connectedCallback();
162
+
163
+ /**
164
+ * show the scroll bar always
165
+ * @type {string}
166
+ */
167
+ document.documentElement.style.overflowY = "scroll";
168
+
169
+ const classNames = this.getOption("classes.body");
170
+
171
+ if (document.body.classList.contains(classNames)) {
172
+ document.body.classList.remove(classNames);
173
+ }
174
+
175
+ fireCustomEvent(this, "monster-host-connected");
176
+ }
177
+
178
+ /**
179
+ * @private
180
+ * @fires Monster.Components.Host.Host#monster-host-disconnected
181
+ */
182
+ disconnectedCallback() {;
183
+
184
+ super.disconnectedCallback();
185
+ document.documentElement.style.overflowY = "";
186
+
187
+ const classNames = this.getOption("classes.body");
188
+ if (!document.body.classList.contains(classNames)) {
189
+ document.body.classList.add(classNames);
190
+ }
191
+
192
+ if (isIterable(this[promisesSymbol]) === false) {
193
+ this[promisesSymbol] = [];
194
+ }
195
+
196
+ this[promisesSymbol].push(
197
+ new Promise((resolve, reject) => {
198
+ this.addEventListener(
199
+ "monster-host-connected",
200
+ () => {
201
+ resolve();
202
+ },
203
+ { once: true },
204
+ );
205
+ }),
206
+ );
207
+
208
+ fireCustomEvent(this, "monster-host-disconnected");
209
+ }
210
+
211
+ /**
212
+ *
213
+ * @return {Monster.Components.Host.Host}
214
+ */
215
+ [assembleMethodSymbol]() {;
216
+
217
+ this[promisesSymbol] = [];
218
+ this[promisesSymbol].push(windowReady);
219
+
220
+ super[assembleMethodSymbol]();
221
+
222
+ initControlReferences.call(this);
223
+ initEventHandler.call(this);
224
+ initTranslations.call(this);
225
+
226
+ this[focusManagerSymbol] = new FocusManager(this);
227
+ this[resourceManagerSymbol] = new ResourceManager(this);
228
+
229
+ try {
230
+ this[promisesSymbol].push(this[resourceManagerSymbol].available());
231
+ } catch (e) {
232
+ return Promise.reject(e);
233
+ }
234
+
235
+ if (this.isConnected === false) {
236
+ this[promisesSymbol].push(
237
+ new Promise((resolve, reject) => {
238
+ this.addEventListener(
239
+ "monster-host-connected",
240
+ () => {
241
+ resolve();
242
+ },
243
+ { once: true },
244
+ );
245
+ }),
246
+ );
247
+ }
248
+ }
249
+
250
+ /**
251
+ * The Promise is resolved when the element is connected to the DOM and all resources are available.
252
+ * If the element is not connected to the DOM, the Promise is rejected.
253
+ *
254
+ * @return {Promise}
255
+ */
256
+ onReady() {;
257
+
258
+ if (isIterable(this[promisesSymbol]) === false) {
259
+ this[promisesSymbol] = [];
260
+ }
261
+
262
+ return Promise.all(this[promisesSymbol]).then(() => {
263
+ this[promisesSymbol] = [];
264
+ return this;
265
+ });
266
+ }
267
+
268
+ /**
269
+ * @see {@link https://monsterjs.org/en/doc/monster/Monster.DOM.FocusManager.html|Monster.DOM.FocusManager}
270
+ * @returns {*}
271
+ */
272
+ get focusManager() {
273
+ return this[focusManagerSymbol];
274
+ }
275
+
276
+ /**
277
+ * @see {@link https://monsterjs.org/en/doc/monster/Monster.DOM.ResourceManager.html|Monster.DOM.ResourceManager}
278
+ * @returns {*}
279
+ */
280
+ get resourceManager() {
281
+ return this[resourceManagerSymbol];
282
+ }
283
+
284
+ /**
285
+ *
286
+ * @returns {Monster.Components.Host.Host}
287
+ * @throws {Error} There is no overlay element defined.
288
+ */
289
+ toggleOverlay() {
290
+ if (this[overlayElementSymbol] instanceof HTMLElement === false) {
291
+ throw new Error("There is no overlay element defined.");
292
+ }
293
+
294
+ this[overlayElementSymbol].toggle();
295
+ return this;
296
+ }
297
+
298
+ /**
299
+ * @return {Host}
300
+ * @throws {Error} There is no overlay element defined.
301
+ */
302
+ openOverlay() {
303
+ if (this[overlayElementSymbol] instanceof HTMLElement === false) {
304
+ throw new Error("There is no overlay element defined.");
305
+ }
306
+
307
+ this[overlayElementSymbol].open();
308
+ return this;
309
+ }
310
+
311
+ /**
312
+ * @return {Host}
313
+ * @throws {Error} There is no overlay element defined.
314
+ */
315
+ closeOverlay() {
316
+ if (this[overlayElementSymbol] instanceof HTMLElement === false) {
317
+ throw new Error("There is no overlay element defined.");
318
+ }
319
+
320
+ this[overlayElementSymbol].close();
321
+ return this;
322
+ }
323
+
324
+ /**
325
+ *
326
+ * @return {string}
327
+ */
328
+ static getTag() {
329
+ return "monster-host";
330
+ }
331
+
332
+ /**
333
+ * @return {CSSStyleSheet[]}
334
+ */
335
+ static getCSSStyleSheet() {
336
+ return [HostStyleSheet];
337
+ }
338
+
339
+ /**
340
+ *
341
+ * @returns {Monster.I18n.Locale}
342
+ */
343
+ get locale() {
344
+ return getLocaleOfDocument();
345
+ }
346
+
347
+ /**
348
+ *
349
+ * @returns {Translations}
350
+ */
351
+ get translations() {
352
+ return getDocumentTranslations();
353
+ }
354
+
355
+ /**
356
+ *
357
+ * @param {string|Message} message
358
+ */
359
+ pushNotification(message) {;
360
+ if (this[notifyElementSymbol] instanceof HTMLElement === false) {
361
+ throw new Error("There is no notify element defined.");
362
+ }
363
+
364
+ this[notifyElementSymbol].push(message);
365
+ return this;
366
+ }
367
+ }
368
+
369
+ /**
370
+ * @private
371
+ * @return {Select}
372
+ * @throws {Error} no shadow-root is defined
373
+ */
374
+ function initControlReferences() {;
375
+
376
+ if (!this.shadowRoot) {
377
+ throw new Error("no shadow-root is defined");
378
+ }
379
+
380
+ this[overlayElementSymbol] = this.querySelector("monster-overlay");
381
+ this[notifyElementSymbol] = this.querySelector("monster-notify");
382
+ this[configManagerElementSymbol] = this.querySelector(
383
+ "monster-config-manager",
384
+ );
385
+ }
386
+
387
+ function initTranslations() {;
388
+
389
+ if (isIterable(this[promisesSymbol]) === false) {
390
+ this[promisesSymbol] = [];
391
+ }
392
+
393
+ this[promisesSymbol].push(Embed.assignTranslationsToElement());
394
+ }
395
+
396
+ /**
397
+ * @private
398
+ */
399
+ function initEventHandler() {;
400
+ return this;
401
+ }
402
+
403
+ /**
404
+ * @private
405
+ * @return {string}
406
+ */
407
+ function getTemplate() {
408
+ // language=HTML
409
+ return `
410
+ <template id="host-container">
411
+ <div data-monster-replace="path:host-container.content"
412
+ data-monster-attributes="part path:host-container.name, data-monster-role path:host-container.name"></div>
413
+ </template>
414
+
415
+ <div data-monster-role="host-container">
416
+ <slot></slot>
417
+ </div>`;
418
+ }
419
+
420
+ registerCustomElement(Host);
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright 2023 schukai GmbH
3
+ * SPDX-License-Identifier: AGPL-3.0
4
+ */
5
+
6
+ /**
7
+ * Namespace for all host related functions.
8
+ *
9
+ * @namespace Monster.Components.Host
10
+ * @memberOf Monster
11
+ * @author schukai GmbH
12
+ */
13
+ const ns = {};