@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,137 @@
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 { registerCustomElement } from "../../dom/customelement.mjs";
9
+ import { Reload } from "./reload.mjs";
10
+
11
+ export { ShadowReload };
12
+
13
+ /**
14
+ * This CustomControl reloads the content of a url and embeds it into the dom.
15
+ *
16
+ * <img src="./images/shadowreload.png">
17
+ *
18
+ * You can create this control either by specifying the HTML tag `<monster-shadow-reload />` directly in the HTML or using
19
+ * Javascript via the `document.createElement('monster-shadow-reload');` method.
20
+ *
21
+ * ```html
22
+ * <monster-shadow-reload></monster-shadow-reload>
23
+ *
24
+ * <script type="module">
25
+ * import {Reload} from '@schukai/component-form/source/shadow-reload.js';
26
+ * document.createElement('monster-shadow-reload');
27
+ * </script>
28
+ * ```
29
+ *
30
+ * A simple configuration can look like this
31
+ *
32
+ * ```html
33
+ * <script id="config"
34
+ * type="application/json">
35
+ * {
36
+ * "url": "./content.html",
37
+ * }
38
+ * </script>
39
+ *
40
+ * <monster-reload data-monster-options-selector="#config">
41
+ * </monster-reload>
42
+ * ```
43
+ *
44
+ * If you want to display a loader, you can insert a div with the attribute `data-monster-role="container"`.
45
+ * The content of this div will be replaced by the loaded code.
46
+ *
47
+ * ```html
48
+ * <monster-reload data-monster-options-selector="#config">
49
+ * <div data-monster-role="container">
50
+ * LOADER ...
51
+ * </div>
52
+ * </monster-reload>
53
+ * ```
54
+ *
55
+ * If you need additional structure, you can simply specify it.
56
+ *
57
+ * ```html
58
+ * <monster-shadow-reload data-monster-options-selector="#config">
59
+ * <div class="row">
60
+ * <div class="col" data-monster-role="container">
61
+ * LOADER ...
62
+ * </div>
63
+ * </div>
64
+ * </monster-shadow-reload>
65
+ * ```
66
+ *
67
+ * @startuml shadowreload.png
68
+ * skinparam monochrome true
69
+ * skinparam shadowing false
70
+ * HTMLElement <|-- CustomElement
71
+ * CustomElement <|-- CustomControl
72
+ * CustomControl <|-- Reload
73
+ * Reload <|-- ShadowReload
74
+ * @enduml
75
+ *
76
+ * @since 3.6.0
77
+ * @copyright schukai GmbH
78
+ * @memberOf Monster.Components.Form
79
+ * @summary A shadow reload control
80
+ * @fires Monster.Components.Form.event:monster-fetched
81
+ */
82
+ class ShadowReload extends Reload {
83
+ /**
84
+ * This method is called by the `instanceof` operator.
85
+ * @returns {symbol}
86
+ */
87
+ static get [instanceSymbol]() {
88
+ return Symbol.for("@schukai/component-form/shadow-reload");
89
+ }
90
+
91
+ /**
92
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
93
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
94
+ *
95
+ * The individual configuration values can be found in the table.
96
+ *
97
+ * @property {Object} templates Template definitions
98
+ * @property {string} templates.main Main template
99
+ * @property {string} url=undefined
100
+ * @property {string} reload=undefined currently the values defined are `onshow` and `always`. The default `onshow` removes the IntersectionObserver. This means that the content is only loaded once. reloading of the content does not occur.
101
+ * @property {string} filter=undefined dom selectors to search for elements, if undefined then everything is taken
102
+ * @property {Monster.Components.Form.Processor[]} processors
103
+ * @property {Object} fetch Fetch [see Using Fetch mozilla.org](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch)
104
+ * @property {String} fetch.redirect=error
105
+ * @property {String} fetch.method=GET
106
+ * @property {String} fetch.mode=same-origin
107
+ * @property {String} fetch.credentials=same-origin
108
+ * @property {Object} fetch.headers={"accept":"text/html"}}
109
+ */
110
+ get defaults() {
111
+ return Object.assign({}, super.defaults, {
112
+ templates: {
113
+ main: getTemplate.call(this),
114
+ },
115
+ shadowMode: "open",
116
+ });
117
+ }
118
+
119
+ /**
120
+ * This method is called internal and should not be called directly.
121
+ *
122
+ * @return {string}
123
+ */
124
+ static getTag() {
125
+ return "monster-shadow-reload";
126
+ }
127
+ }
128
+
129
+ /**
130
+ * @private
131
+ * @return {string}
132
+ */
133
+ function getTemplate() {
134
+ return this.innerHTML;
135
+ }
136
+
137
+ registerCustomElement(ShadowReload);
@@ -0,0 +1,182 @@
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 { registerCustomElement } from "../../dom/customelement.mjs";
9
+ import { isInteger } from "../../types/is.mjs";
10
+ import { validateInstance, validateString } from "../../types/validate.mjs";
11
+ import { Button } from "./button.mjs";
12
+ import { StateButtonStyleSheet } from "./stylesheet/state-button.mjs";
13
+ import { getStateInstanceFor, State } from "./types/state.mjs";
14
+
15
+ export { StateButton };
16
+
17
+ /**
18
+ * This CustomControl creates a button element with a variety of options.
19
+ *
20
+ * <img src="./images/state-button.png">
21
+ *
22
+ * Dependencies: the system uses functions of the [monsterjs](https://monsterjs.org/) library
23
+ *
24
+ * You can create this control either by specifying the HTML tag <monster-state-button />` directly in the HTML or using
25
+ * Javascript via the `document.createElement('monster-state-button');` method.
26
+ *
27
+ * ```html
28
+ * <monster-state-button></monster-state-button>
29
+ * ```
30
+ *
31
+ * Or you can create this CustomControl directly in Javascript:
32
+ *
33
+ * ```js
34
+ * import {StateButton} from '@schukai/component-form/source/state-button.js';
35
+ * document.createElement('monster-state-button');
36
+ * ```
37
+ *
38
+ * The `data-monster-button-class` attribute can be used to change the CSS class of the button.
39
+ *
40
+ * @startuml state-button.png
41
+ * skinparam monochrome true
42
+ * skinparam shadowing false
43
+ * HTMLElement <|-- CustomElement
44
+ * CustomElement <|-- CustomControl
45
+ * CustomControl <|-- Button
46
+ * Button <|-- StateButton
47
+ * @enduml
48
+ *
49
+ * @since 1.5.0
50
+ * @copyright schukai GmbH
51
+ * @memberOf Monster.Components.Form
52
+ * @summary A state button with icons
53
+ */
54
+ class StateButton extends Button {
55
+ /**
56
+ * This method is called by the `instanceof` operator.
57
+ * @returns {symbol}
58
+ * @since 2.1.0
59
+ */
60
+ static get [instanceSymbol]() {
61
+ return Symbol.for("@schukai/component-form/state-button@@instance");
62
+ }
63
+
64
+ /**
65
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
66
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
67
+ *
68
+ * The individual configuration values can be found in the table.
69
+ *
70
+ * @property {Object} templates Template definitions
71
+ * @property {string} templates.main Main template
72
+ * @property {Object} states Available status
73
+ * @property {Monster.Components.Form.Types.State} states.successful= successful
74
+ * @property {Monster.Components.Form.Types.State} states.activity= activity
75
+ * @property {Monster.Components.Form.Types.State} states.failed= failed
76
+ * @property {Monster.Components.Form.Types.State} current current status
77
+ * @property {Monster.Components.Form~exampleActionCallback} actions.click
78
+ * @extends {Button}
79
+ * @see {@link https://github.com/twbs/icons/blob/main/LICENSE.md|Bootstrap icons license}
80
+ */
81
+ get defaults() {
82
+ return Object.assign({}, super.defaults, {
83
+ templates: {
84
+ main: getTemplate(),
85
+ },
86
+ states: {
87
+ successful: getStateInstanceFor("successful"),
88
+ activity: getStateInstanceFor("activity"),
89
+ failed: getStateInstanceFor("failed"),
90
+ },
91
+ current: getStateInstanceFor("stateless"),
92
+ });
93
+ }
94
+
95
+ /**
96
+ * This method sets the current state of the button.
97
+ * If a timeout is set, the state is automatically removed after the
98
+ * specified time.
99
+ *
100
+ * @since 3.18.0 a previously set timeout is cleared
101
+ *
102
+ * @param {state} state
103
+ * @param {number} timeout
104
+ * @return {Monster.Components.Form.StateButton}
105
+ * @throws {TypeError} value is not a string
106
+ * @throws {TypeError} value is not an instance
107
+ */
108
+ setState(state, timeout) {
109
+ const timeoutSymbol = Symbol.for("timeout");
110
+ if (this[timeoutSymbol] !== undefined) {
111
+ clearTimeout(this[timeoutSymbol]);
112
+ delete this[timeoutSymbol];
113
+ }
114
+
115
+ const obj = this.getOption(`states.${validateString(state)}`);
116
+ if (obj === undefined) {
117
+ throw new Error("not found");
118
+ }
119
+
120
+ this.setOption("current", validateInstance(obj, State));
121
+
122
+ if (isInteger(timeout) && timeout > 0) {
123
+ this[timeoutSymbol] = setTimeout(() => {
124
+ this.removeState();
125
+ delete this[timeoutSymbol];
126
+ }, timeout);
127
+ }
128
+
129
+ return this;
130
+ }
131
+
132
+ /**
133
+ *
134
+ * @return {Monster.Components.Form.StateButton}
135
+ */
136
+ removeState() {
137
+ this.setOption("current", getStateInstanceFor("stateless"));
138
+ return this;
139
+ }
140
+
141
+ /**
142
+ * @return {Monster.Components.Form.Types.State|undefined}
143
+ */
144
+ getState() {
145
+ return this.getOption("current");
146
+ }
147
+
148
+ /**
149
+ *
150
+ * @return {string}
151
+ */
152
+ static getTag() {
153
+ return "monster-state-button";
154
+ }
155
+
156
+ /**
157
+ *
158
+ * @return {Array<CSSStyleSheet>}
159
+ */
160
+ static getCSSStyleSheet() {
161
+ const styles = Button.getCSSStyleSheet();
162
+ styles.push(StateButtonStyleSheet);
163
+ return styles;
164
+ }
165
+ }
166
+
167
+ /**
168
+ * @private
169
+ * @return {string}
170
+ */
171
+ function getTemplate() {
172
+ return `<div data-monster-role="control" part="control">
173
+ <button data-monster-attributes="disabled path:disabled | if:true, class path:classes.button"
174
+ data-monster-role="button"
175
+ part="button">
176
+ <div data-monster-role="label" data-monster-replace="path:labels.button"></div>
177
+ <div data-monster-role="state" data-monster-replace="path:current.presentation"></div>
178
+ </button>
179
+ </div>`;
180
+ }
181
+
182
+ registerCustomElement(StateButton);
@@ -0,0 +1,41 @@
1
+ @import "../../style/property.pcss";
2
+ @import "../../style/color.pcss";
3
+ @import "../../style/border.pcss";
4
+
5
+ [data-monster-role=control] {
6
+
7
+ & div[data-monster-role=popper] {
8
+ padding: 2px;
9
+ }
10
+
11
+ [data-monster-role=container] {
12
+
13
+ [data-monster-role=buttons] {
14
+
15
+ display: flex;
16
+ flex-direction: column;
17
+
18
+ & button {
19
+ border: 0;
20
+ background: transparent;
21
+ }
22
+
23
+ & monster-message-state-button:not(:last-child) {
24
+ border-bottom-color: var(--monster-color-primary-1);
25
+ border-bottom-style: var(--monster-border-style);
26
+ border-bottom-width: var(--monster-border-width);
27
+
28
+ & ::part(button) {
29
+ border-bottom-color: var(--monster-color-primary-1);
30
+ border-bottom-style: var(--monster-border-style);
31
+ border-bottom-width: var(--monster-border-width);
32
+
33
+ }
34
+
35
+ }
36
+ }
37
+
38
+ }
39
+
40
+ }
41
+
File without changes
@@ -0,0 +1,51 @@
1
+ @import "../../style/display.pcss";
2
+ @import "../../style/control.pcss";
3
+ @import "../../style/border.pcss";
4
+ @import "../../style/button.pcss";
5
+ @import "../../style/typography.pcss";
6
+ @import "../../style/floating-ui.pcss";
7
+
8
+ div[data-monster-role="control"] {
9
+ position: relative;
10
+ height: 100%;
11
+
12
+ & [data-monster-role=button-bar] {
13
+ display: flex;
14
+ flex-direction: row;
15
+
16
+ & :not(slot[name=button]) {
17
+ display: flex;
18
+ }
19
+
20
+
21
+ & [data-monster-role=popper-nav] {
22
+ display: flex;
23
+ align-items: stretch;
24
+ }
25
+
26
+ & [data-monster-role=switch] {
27
+ display: flex;
28
+
29
+ &.hidden {
30
+ display: none;
31
+ }
32
+ }
33
+
34
+ & ::slotted(*:not(:last-child)) {
35
+ margin-right: calc(-1 * var(--monster-border-width));
36
+ }
37
+
38
+ }
39
+
40
+ & slot[name=popper] {
41
+ display: flex;
42
+ flex-direction: row;
43
+ flex-wrap: nowrap;
44
+ align-items: stretch;
45
+ align-content: center;
46
+ justify-content: space-between;
47
+ }
48
+
49
+
50
+ }
51
+
@@ -0,0 +1,8 @@
1
+ @import "../../style/control.pcss";
2
+ @import "../../style/button.pcss";
3
+ @import "../../style/border.pcss";
4
+
5
+ [data-monster-role="control"] {
6
+ display: flex;
7
+ align-items: stretch;
8
+ }
@@ -0,0 +1,17 @@
1
+ @import "../../style/display.pcss";
2
+ @import "../../style/control.pcss";
3
+ @import "../../style/border.pcss";
4
+ @import "../../style/typography.pcss";
5
+ @import "../../style/floating-ui.pcss";
6
+
7
+ div[data-monster-role="decision"] {
8
+ display: flex;
9
+ width: 100%;
10
+ align-items: center;
11
+ justify-content: space-evenly;
12
+ margin: 1rem 0 0.4rem 0;
13
+ }
14
+
15
+ div[data-monster-role="control"] {
16
+ height: 100%;
17
+ }
@@ -0,0 +1,16 @@
1
+ @import "../../style/control.pcss";
2
+ @import "../../style/floating-ui.pcss";
3
+
4
+ [data-monster-role=control] {
5
+ position: relative;
6
+ width: 16px;
7
+ height: 16px;
8
+
9
+ & [data-monster-role="button"] {
10
+ display: inline-block;
11
+ position: relative;
12
+ cursor: pointer;
13
+ user-select: none;
14
+ }
15
+ }
16
+
@@ -0,0 +1,10 @@
1
+ @import "../../style/display.pcss";
2
+ @import "../../style/border.pcss";
3
+ @import "../../style/form.pcss";
4
+ @import "../../style/typography.pcss";
5
+ @import "../../style/control.pcss";
6
+
7
+
8
+ [data-monster-role="control"] {
9
+ position: relative;
10
+ }
@@ -0,0 +1,10 @@
1
+
2
+
3
+
4
+
5
+
6
+ [data-monster-role=control] {
7
+ [data-monster-role=button] {
8
+ width: 100%;
9
+ }
10
+ }
@@ -0,0 +1,16 @@
1
+ @import "../../style/control.pcss";
2
+ @import "../../style/floating-ui.pcss";
3
+ @import "../../style/button.pcss";
4
+
5
+ [data-monster-role=control] {
6
+ position: relative;
7
+ display: flex;
8
+ }
9
+
10
+ [data-monster-role=button] {
11
+ width: fill-available;
12
+ }
13
+
14
+ div[data-monster-role="control"] {
15
+ height: 100%;
16
+ }
@@ -0,0 +1,8 @@
1
+ @import "../../style/control.pcss";
2
+ @import "../../style/floating-ui.pcss";
3
+
4
+ [data-monster-role=control] {
5
+ position: relative;
6
+ display: flex;
7
+ }
8
+