@schukai/monster 3.51.5 → 3.52.1

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 (361) hide show
  1. package/CHANGELOG.md +25 -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/example/data/datasource/server/restapi.mjs +7 -1
  12. package/package.json +6 -2
  13. package/source/components/constants.mjs +132 -0
  14. package/source/components/datatable/columnbar.mjs +310 -0
  15. package/source/components/datatable/constants.mjs +121 -0
  16. package/source/components/datatable/dataset.mjs +219 -0
  17. package/source/components/datatable/datasource/dom.mjs +186 -0
  18. package/source/components/datatable/datasource/namespace.mjs +13 -0
  19. package/source/components/datatable/datasource/rest.mjs +400 -0
  20. package/source/components/datatable/datasource.mjs +102 -0
  21. package/source/components/datatable/datatable/header.mjs +268 -0
  22. package/source/components/datatable/datatable/namespace.mjs +13 -0
  23. package/source/components/datatable/datatable.mjs +789 -0
  24. package/source/components/datatable/embedded-pagination.mjs +113 -0
  25. package/source/components/datatable/filter/abstract-base.mjs +31 -0
  26. package/source/components/datatable/filter/date-range.mjs +1041 -0
  27. package/source/components/datatable/filter/input.mjs +175 -0
  28. package/source/components/datatable/filter/namespace.mjs +13 -0
  29. package/source/components/datatable/filter/range.mjs +671 -0
  30. package/source/components/datatable/filter/select.mjs +65 -0
  31. package/source/components/datatable/filter/settings.mjs +116 -0
  32. package/source/components/datatable/filter-button.mjs +98 -0
  33. package/source/components/datatable/filter.mjs +929 -0
  34. package/source/components/datatable/namespace.mjs +11 -0
  35. package/source/components/datatable/pagination.mjs +456 -0
  36. package/source/components/datatable/style/column-bar.pcss +123 -0
  37. package/source/components/datatable/style/dataset.pcss +13 -0
  38. package/source/components/datatable/style/datasource.pcss +16 -0
  39. package/source/components/datatable/style/datatable.pcss +239 -0
  40. package/source/components/datatable/style/embedded-pagination.pcss +101 -0
  41. package/source/components/datatable/style/filter-button.pcss +22 -0
  42. package/source/components/datatable/style/filter-controls-defaults.pcss +46 -0
  43. package/source/components/datatable/style/filter-date-range.pcss +9 -0
  44. package/source/components/datatable/style/filter-range.pcss +5 -0
  45. package/source/components/datatable/style/filter.pcss +156 -0
  46. package/source/components/datatable/style/pagination.pcss +59 -0
  47. package/source/components/datatable/style/select-filter.pcss +27 -0
  48. package/source/components/datatable/stylesheet/column-bar.mjs +27 -0
  49. package/source/components/datatable/stylesheet/dataset.mjs +27 -0
  50. package/source/components/datatable/stylesheet/datasource.mjs +27 -0
  51. package/source/components/datatable/stylesheet/datatable.mjs +27 -0
  52. package/source/components/datatable/stylesheet/embedded-pagination.mjs +27 -0
  53. package/source/components/datatable/stylesheet/filter-button.mjs +27 -0
  54. package/source/components/datatable/stylesheet/filter-controls-defaults.mjs +27 -0
  55. package/source/components/datatable/stylesheet/filter-date-range.mjs +27 -0
  56. package/source/components/datatable/stylesheet/filter-range.mjs +27 -0
  57. package/source/components/datatable/stylesheet/filter.mjs +27 -0
  58. package/source/components/datatable/stylesheet/namespace.mjs +13 -0
  59. package/source/components/datatable/stylesheet/pagination.mjs +27 -0
  60. package/source/components/datatable/stylesheet/select-filter.mjs +27 -0
  61. package/source/components/datatable/util.mjs +60 -0
  62. package/source/components/form/action-button.mjs +262 -0
  63. package/source/components/form/api-button.mjs +515 -0
  64. package/source/components/form/button-bar.mjs +739 -0
  65. package/source/components/form/button.mjs +350 -0
  66. package/source/components/form/confirm-button.mjs +330 -0
  67. package/source/components/form/constants.mjs +111 -0
  68. package/source/components/form/context-help.mjs +123 -0
  69. package/source/components/form/events.mjs +84 -0
  70. package/source/components/form/form.mjs +601 -0
  71. package/source/components/form/message-state-button.mjs +396 -0
  72. package/source/components/form/namespace.mjs +13 -0
  73. package/source/components/form/popper-button.mjs +435 -0
  74. package/source/components/form/popper.mjs +487 -0
  75. package/source/components/form/reload.mjs +360 -0
  76. package/source/components/form/select.mjs +2314 -0
  77. package/source/components/form/shadow-reload.mjs +137 -0
  78. package/source/components/form/state-button.mjs +182 -0
  79. package/source/components/form/style/action-button.pcss +41 -0
  80. package/source/components/form/style/api-button.pcss +0 -0
  81. package/source/components/form/style/button-bar.pcss +51 -0
  82. package/source/components/form/style/button.pcss +8 -0
  83. package/source/components/form/style/confirm-button.pcss +17 -0
  84. package/source/components/form/style/context-help.pcss +16 -0
  85. package/source/components/form/style/form.pcss +10 -0
  86. package/source/components/form/style/message-state-button.pcss +10 -0
  87. package/source/components/form/style/popper-button.pcss +16 -0
  88. package/source/components/form/style/popper.pcss +8 -0
  89. package/source/components/form/style/select.pcss +265 -0
  90. package/source/components/form/style/state-button.pcss +116 -0
  91. package/source/components/form/style/tabs.pcss +173 -0
  92. package/source/components/form/style/tree-select.pcss +81 -0
  93. package/source/components/form/stylesheet/action-button.mjs +27 -0
  94. package/source/components/form/stylesheet/api-button.mjs +27 -0
  95. package/source/components/form/stylesheet/button-bar.mjs +27 -0
  96. package/source/components/form/stylesheet/button.mjs +27 -0
  97. package/source/components/form/stylesheet/confirm-button.mjs +27 -0
  98. package/source/components/form/stylesheet/context-help.mjs +27 -0
  99. package/source/components/form/stylesheet/form.mjs +27 -0
  100. package/source/components/form/stylesheet/message-state-button.mjs +27 -0
  101. package/source/components/form/stylesheet/namespace.mjs +13 -0
  102. package/source/components/form/stylesheet/popper-button.mjs +27 -0
  103. package/source/components/form/stylesheet/popper.mjs +27 -0
  104. package/source/components/form/stylesheet/select.mjs +27 -0
  105. package/source/components/form/stylesheet/state-button.mjs +27 -0
  106. package/source/components/form/stylesheet/tabs.mjs +27 -0
  107. package/source/components/form/stylesheet/tree-select.mjs +27 -0
  108. package/source/components/form/tabs.mjs +1029 -0
  109. package/source/components/form/template.mjs +373 -0
  110. package/source/components/form/tree-select.mjs +527 -0
  111. package/source/components/form/types/namespace.mjs +13 -0
  112. package/source/components/form/types/state.mjs +93 -0
  113. package/source/components/form/util/fetch.mjs +133 -0
  114. package/source/components/form/util/floating-ui.mjs +245 -0
  115. package/source/components/form/util/namespace.mjs +13 -0
  116. package/source/components/form/util/popper.mjs +49 -0
  117. package/source/components/host/call-button.mjs +236 -0
  118. package/source/components/host/collapse.mjs +526 -0
  119. package/source/components/host/config-manager.mjs +304 -0
  120. package/source/components/host/constants.mjs +18 -0
  121. package/source/components/host/details.mjs +268 -0
  122. package/source/components/host/events.mjs +131 -0
  123. package/source/components/host/host.mjs +420 -0
  124. package/source/components/host/namespace.mjs +13 -0
  125. package/source/components/host/overlay.mjs +339 -0
  126. package/source/components/host/style/call-button.pcss +36 -0
  127. package/source/components/host/style/collapse.pcss +67 -0
  128. package/source/components/host/style/config-manager.pcss +5 -0
  129. package/source/components/host/style/details.pcss +68 -0
  130. package/source/components/host/style/host.pcss +43 -0
  131. package/source/components/host/style/overlay.pcss +73 -0
  132. package/source/components/host/style/toggle-button.pcss +36 -0
  133. package/source/components/host/style/viewer.pcss +13 -0
  134. package/source/components/host/stylesheet/call-button.mjs +27 -0
  135. package/source/components/host/stylesheet/collapse.mjs +27 -0
  136. package/source/components/host/stylesheet/config-manager.mjs +27 -0
  137. package/source/components/host/stylesheet/details.mjs +27 -0
  138. package/source/components/host/stylesheet/host.mjs +27 -0
  139. package/source/components/host/stylesheet/namespace.mjs +13 -0
  140. package/source/components/host/stylesheet/overlay.mjs +27 -0
  141. package/source/components/host/stylesheet/toggle-button.mjs +27 -0
  142. package/source/components/host/stylesheet/viewer.mjs +27 -0
  143. package/source/components/host/toggle-button.mjs +88 -0
  144. package/source/components/host/util.mjs +23 -0
  145. package/source/components/host/viewer.mjs +309 -0
  146. package/source/components/namespace.mjs +14 -0
  147. package/source/components/notify/constants.mjs +15 -0
  148. package/source/components/notify/events.mjs +15 -0
  149. package/source/components/notify/message.mjs +374 -0
  150. package/source/components/notify/namespace.mjs +15 -0
  151. package/source/components/notify/notify.mjs +236 -0
  152. package/source/components/notify/style/message.pcss +57 -0
  153. package/source/components/notify/style/notify.pcss +118 -0
  154. package/source/components/notify/stylesheet/message.mjs +27 -0
  155. package/source/components/notify/stylesheet/namespace.mjs +15 -0
  156. package/source/components/notify/stylesheet/notify.mjs +27 -0
  157. package/source/components/state/log/entry.mjs +126 -0
  158. package/source/components/state/log/namespace.mjs +13 -0
  159. package/source/components/state/log.mjs +275 -0
  160. package/source/components/state/namespace.mjs +13 -0
  161. package/source/components/state/state.mjs +131 -0
  162. package/source/components/state/style/log.pcss +111 -0
  163. package/source/components/state/style/state.pcss +113 -0
  164. package/source/components/state/stylesheet/log.mjs +27 -0
  165. package/source/components/state/stylesheet/state.mjs +27 -0
  166. package/source/components/style/badge.pcss +92 -0
  167. package/source/components/style/border.pcss +77 -0
  168. package/source/components/style/button.pcss +105 -0
  169. package/source/components/style/card.pcss +108 -0
  170. package/source/components/style/color.pcss +257 -0
  171. package/source/components/style/common.pcss +105 -0
  172. package/source/components/style/control.pcss +11 -0
  173. package/source/components/style/data-grid.pcss +43 -0
  174. package/source/components/style/display.pcss +42 -0
  175. package/source/components/style/floating-ui.pcss +33 -0
  176. package/source/components/style/form.pcss +5 -0
  177. package/source/components/style/host.pcss +15 -0
  178. package/source/components/style/link.pcss +63 -0
  179. package/source/components/style/mixin/badge.pcss +18 -0
  180. package/source/components/style/mixin/button.pcss +52 -0
  181. package/source/components/style/mixin/form.pcss +247 -0
  182. package/source/components/style/mixin/hover.pcss +8 -0
  183. package/source/components/style/mixin/media.pcss +107 -0
  184. package/source/components/style/mixin/property.pcss +292 -0
  185. package/source/components/style/mixin/skeleton.pcss +26 -0
  186. package/source/components/style/mixin/spinner.pcss +24 -0
  187. package/source/components/style/mixin/typography.pcss +52 -0
  188. package/source/components/style/normalize.pcss +14 -0
  189. package/source/components/style/popper.pcss +78 -0
  190. package/source/components/style/property.pcss +17 -0
  191. package/source/components/style/ripple.pcss +14 -0
  192. package/source/components/style/skeleton.pcss +28 -0
  193. package/source/components/style/space.pcss +47 -0
  194. package/source/components/style/spinner.pcss +6 -0
  195. package/source/components/style/table.pcss +46 -0
  196. package/source/components/style/theme.pcss +119 -0
  197. package/source/components/style/typography.pcss +131 -0
  198. package/source/components/stylesheet/badge.mjs +27 -0
  199. package/source/components/stylesheet/border.mjs +27 -0
  200. package/source/components/stylesheet/button.mjs +27 -0
  201. package/source/components/stylesheet/card.mjs +27 -0
  202. package/source/components/stylesheet/color.mjs +27 -0
  203. package/source/components/stylesheet/common.mjs +27 -0
  204. package/source/components/stylesheet/control.mjs +27 -0
  205. package/source/components/stylesheet/data-grid.mjs +27 -0
  206. package/source/components/stylesheet/display.mjs +27 -0
  207. package/source/components/stylesheet/floating-ui.mjs +27 -0
  208. package/source/components/stylesheet/form.mjs +27 -0
  209. package/source/components/stylesheet/host.mjs +27 -0
  210. package/source/components/stylesheet/link.mjs +27 -0
  211. package/source/components/stylesheet/namespace.mjs +13 -0
  212. package/source/components/stylesheet/normalize.mjs +27 -0
  213. package/source/components/stylesheet/popper.mjs +27 -0
  214. package/source/components/stylesheet/property.mjs +27 -0
  215. package/source/components/stylesheet/ripple.mjs +27 -0
  216. package/source/components/stylesheet/skeleton.mjs +27 -0
  217. package/source/components/stylesheet/space.mjs +27 -0
  218. package/source/components/stylesheet/spinner.mjs +27 -0
  219. package/source/components/stylesheet/table.mjs +27 -0
  220. package/source/components/stylesheet/theme.mjs +27 -0
  221. package/source/components/stylesheet/tree-menu.mjs +33 -0
  222. package/source/components/stylesheet/typography.mjs +27 -0
  223. package/source/components/tree-menu/namespace.mjs +13 -0
  224. package/source/components/tree-menu/style/tree-menu.pcss +107 -0
  225. package/source/components/tree-menu/stylesheet/namespace.mjs +13 -0
  226. package/source/components/tree-menu/stylesheet/tree-menu.mjs +27 -0
  227. package/source/components/tree-menu/tree-menu.mjs +660 -0
  228. package/source/constraints/abstract.mjs +17 -24
  229. package/source/constraints/abstractoperator.mjs +27 -22
  230. package/source/constraints/andoperator.mjs +20 -17
  231. package/source/constraints/invalid.mjs +17 -17
  232. package/source/constraints/isarray.mjs +20 -20
  233. package/source/constraints/isobject.mjs +20 -20
  234. package/source/constraints/oroperator.mjs +45 -45
  235. package/source/constraints/valid.mjs +17 -17
  236. package/source/data/buildmap.mjs +108 -103
  237. package/source/data/buildtree.mjs +59 -57
  238. package/source/data/datasource/dom.mjs +80 -84
  239. package/source/data/datasource/namespace.mjs +1 -1
  240. package/source/data/datasource/server/restapi/data-fetch-error.mjs +27 -25
  241. package/source/data/datasource/server/restapi/writeerror.mjs +35 -32
  242. package/source/data/datasource/server/restapi.mjs +176 -177
  243. package/source/data/datasource/server/webconnect.mjs +150 -156
  244. package/source/data/datasource/server.mjs +62 -63
  245. package/source/data/datasource/storage/localstorage.mjs +25 -24
  246. package/source/data/datasource/storage/sessionstorage.mjs +28 -25
  247. package/source/data/datasource/storage.mjs +74 -73
  248. package/source/data/datasource.mjs +177 -168
  249. package/source/data/diff.mjs +98 -97
  250. package/source/data/extend.mjs +42 -42
  251. package/source/data/pathfinder.mjs +301 -288
  252. package/source/data/pipe.mjs +36 -36
  253. package/source/data/transformer.mjs +742 -726
  254. package/source/dom/assembler.mjs +44 -44
  255. package/source/dom/attributes.mjs +142 -122
  256. package/source/dom/constants.mjs +62 -58
  257. package/source/dom/customcontrol.mjs +299 -299
  258. package/source/dom/customelement.mjs +843 -806
  259. package/source/dom/dimension.mjs +56 -46
  260. package/source/dom/events.mjs +74 -69
  261. package/source/dom/focusmanager.mjs +175 -175
  262. package/source/dom/locale.mjs +28 -28
  263. package/source/dom/ready.mjs +13 -13
  264. package/source/dom/resource/data.mjs +117 -111
  265. package/source/dom/resource/link/stylesheet.mjs +16 -16
  266. package/source/dom/resource/link.mjs +94 -96
  267. package/source/dom/resource/script.mjs +72 -74
  268. package/source/dom/resource.mjs +174 -172
  269. package/source/dom/resourcemanager.mjs +152 -156
  270. package/source/dom/slotted.mjs +78 -80
  271. package/source/dom/template.mjs +126 -112
  272. package/source/dom/theme.mjs +35 -35
  273. package/source/dom/updater.mjs +673 -651
  274. package/source/dom/util/extract-keys.mjs +34 -22
  275. package/source/dom/util/init-options-from-attributes.mjs +46 -38
  276. package/source/dom/util/namespace.mjs +13 -0
  277. package/source/dom/util/set-option-from-attribute.mjs +35 -29
  278. package/source/dom/util.mjs +112 -81
  279. package/source/dom/worker/factory.mjs +83 -83
  280. package/source/i18n/formatter.mjs +75 -73
  281. package/source/i18n/locale.mjs +146 -144
  282. package/source/i18n/provider.mjs +70 -64
  283. package/source/i18n/providers/embed.mjs +136 -127
  284. package/source/i18n/providers/fetch.mjs +84 -76
  285. package/source/i18n/translations.mjs +205 -195
  286. package/source/logging/handler/console.mjs +36 -36
  287. package/source/logging/handler.mjs +140 -140
  288. package/source/logging/logentry.mjs +25 -25
  289. package/source/logging/logger.mjs +177 -175
  290. package/source/math/random.mjs +63 -59
  291. package/source/monster.mjs +223 -103
  292. package/source/net/webconnect/message.mjs +31 -31
  293. package/source/net/webconnect.mjs +278 -271
  294. package/source/text/bracketed-key-value-hash.mjs +182 -179
  295. package/source/text/formatter.mjs +235 -210
  296. package/source/text/generate-range-comparison-expression.mjs +56 -34
  297. package/source/text/namespace.mjs +1 -1
  298. package/source/types/base.mjs +69 -61
  299. package/source/types/basewithoptions.mjs +46 -46
  300. package/source/types/binary.mjs +20 -20
  301. package/source/types/dataurl.mjs +96 -90
  302. package/source/types/global.mjs +45 -39
  303. package/source/types/id.mjs +25 -25
  304. package/source/types/internal.mjs +115 -114
  305. package/source/types/is.mjs +56 -40
  306. package/source/types/mediatype.mjs +119 -119
  307. package/source/types/namespace.mjs +1 -1
  308. package/source/types/node.mjs +160 -150
  309. package/source/types/nodelist.mjs +94 -96
  310. package/source/types/noderecursiveiterator.mjs +50 -50
  311. package/source/types/observablequeue.mjs +73 -73
  312. package/source/types/observer.mjs +114 -106
  313. package/source/types/observerlist.mjs +66 -66
  314. package/source/types/proxyobserver.mjs +210 -210
  315. package/source/types/queue.mjs +63 -63
  316. package/source/types/randomid.mjs +13 -13
  317. package/source/types/regex.mjs +3 -1
  318. package/source/types/stack.mjs +64 -64
  319. package/source/types/tokenlist.mjs +206 -205
  320. package/source/types/typeof.mjs +12 -10
  321. package/source/types/uniquequeue.mjs +48 -48
  322. package/source/types/uuid.mjs +32 -32
  323. package/source/types/validate.mjs +67 -67
  324. package/source/types/version.mjs +115 -105
  325. package/source/util/clone.mjs +103 -91
  326. package/source/util/comparator.mjs +97 -97
  327. package/source/util/deadmansswitch.mjs +40 -44
  328. package/source/util/freeze.mjs +10 -9
  329. package/source/util/namespace.mjs +1 -1
  330. package/source/util/processing.mjs +104 -105
  331. package/source/util/runtime.mjs +56 -44
  332. package/source/util/trimspaces.mjs +24 -24
  333. package/test/cases/components/form/button.mjs +122 -0
  334. package/test/cases/components/form/confirm-button.mjs +127 -0
  335. package/test/cases/components/form/form.mjs +317 -0
  336. package/test/cases/components/form/reload.mjs +188 -0
  337. package/test/cases/components/form/select.mjs +229 -0
  338. package/test/cases/components/form/state-button.mjs +130 -0
  339. package/test/cases/components/form/tabs.mjs +98 -0
  340. package/test/cases/components/form/template.mjs +189 -0
  341. package/test/cases/components/form/tree-select.mjs +216 -0
  342. package/test/cases/components/host/details.mjs +68 -0
  343. package/test/cases/components/host/host.mjs +70 -0
  344. package/test/cases/components/host/overlay.mjs +60 -0
  345. package/test/cases/components/host/util.mjs +79 -0
  346. package/test/cases/components/notify/message.mjs +39 -0
  347. package/test/cases/components/notify/notify.mjs +89 -0
  348. package/test/cases/dom/customcontrol.mjs +5 -4
  349. package/test/cases/math/random.mjs +0 -1
  350. package/test/cases/monster.mjs +1 -1
  351. package/test/cases/net/webconnect/message.mjs +0 -1
  352. package/test/cases/types/node.mjs +1 -1
  353. package/test/util/chai-dom.mjs +2 -2
  354. package/test/util/intersection-mock.mjs +69 -0
  355. package/test/util/jsdom.mjs +41 -25
  356. package/test/util/localstorage.mjs +1 -0
  357. package/test/util/resize-observer.mjs +29 -0
  358. package/test/util/websocket.mjs +4 -1
  359. package/test/web/import.js +16 -1
  360. package/test/web/test.html +28 -5
  361. package/test/web/tests.js +30398 -17879
package/CHANGELOG.md CHANGED
@@ -1,4 +1,28 @@
1
1
 
2
+ ## [3.52.1] - 2023-11-05
3
+
4
+ ### Bug Fixes
5
+
6
+ - only 10 tabs can be activated [#129](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/129)
7
+ - fix some css bugs [#128](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/128)
8
+
9
+ ## [3.52.0] - 2023-11-03
10
+
11
+ ### Add Features
12
+
13
+ - integrate components, test, example and code [#127](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/127)
14
+ - integrate components in monster [#127](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/127)
15
+ ### Changes
16
+
17
+ - release and publish to npm new version 3.52.0
18
+ - documentation
19
+ - update documentation
20
+ - add aws doc update to tasks [#126](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/126)
21
+ - code tidy and update web test
22
+ - code lint
23
+ - lint and format
24
+ - code tidy
25
+
2
26
  ## [3.51.5] - 2023-11-01
3
27
 
4
28
  ### Bug Fixes
@@ -6,6 +30,7 @@
6
30
  - release process
7
31
  ### Changes
8
32
 
33
+ - release and publish to npm new version 3.51.5
9
34
  - restore devDependencies
10
35
  - update release process
11
36
  - conversion of the repos to nix packagemanger [#125](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/125)
package/README.md CHANGED
@@ -1,18 +1,21 @@
1
1
  # Monster
2
2
 
3
- Monster is perfectly suited for the creation of beautiful and fast
4
- user interfaces and websites.
3
+ Monster is an ideal choice for building visually appealing and high-performance web interfaces
4
+ and websites using modern JavaScript web development techniques.
5
5
 
6
- Monster relies on proven concepts mixed with many new JavaScript concepts such as
7
- classes, WeakRef, WeakMaps, proxies or the MutationObserver interface, just to name a few.
6
+ Leveraging cutting-edge JavaScript features such as classes, WeakRef, WeakMaps, proxies,
7
+ and the MutationObserver interface, Monster offers a blend of tried-and-true methods and
8
+ innovative web components.
8
9
 
9
- Monster integrates easily into your existing websites without taking over everything.
10
+ Designed for seamless integration, Monster complements your existing web projects
11
+ without dominating the entire architecture.
10
12
 
11
- It is not the goal of Monster to pull in an entirely new abstraction
12
- with its own language, but to combine the existing techniques of HTML,
13
- CSS and JavaScript in a meaningful way.
13
+ Unlike solutions that introduce a whole new layer of abstraction and proprietary
14
+ languages, Monster focuses on enhancing the native capabilities of HTML, CSS, and
15
+ JavaScript for web development.
14
16
 
15
- One design target is to reach the shiny sun with as little JavaScript as possible.
17
+ With a design objective to optimize performance and achieve stellar outcomes,
18
+ Monster aims to accomplish this using minimal JavaScript code.
16
19
 
17
20
  Monster was built with ES6 modules and uses [import](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/import)
18
21
  and [export](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export).
@@ -21,7 +24,7 @@ For some functions, you need additional [polyfills](#polyfill).
21
24
 
22
25
  ## Documentation
23
26
 
24
- To check out docs and examples, visit [monsterjs.org/en/doc/monster/](https://monsterjs.org/en/doc/monster/).
27
+ To check out docs and examples, visit [monsterjs.org/en/doc/monster/](https://monsterjs.org/en/api/).
25
28
 
26
29
  ## Installation
27
30
 
@@ -73,7 +76,7 @@ We do try to work around some browser bugs, but on the whole we don't use polyfi
73
76
  However, many functions can be mapped via [polyfill.io](https://polyfill.io/) and thus the compatibility can be increased.
74
77
 
75
78
  ```html
76
- <script id="polyfill" src="https://polyfill.io/v3/polyfill.min.js?features=Array.from,Array.isArray,Array.prototype.entries,Array.prototype.fill,Array.prototype.filter,Array.prototype.forEach,Array.prototype.includes,Array.prototype.indexOf,Array.prototype.keys,Array.prototype.lastIndexOf,Array.prototype.map,Array.prototype.reduce,Array.prototype.sort,ArrayBuffer,atob,Blob,CustomEvent,DataView,document,Document,DocumentFragment,Element,Event,fetch,globalThis,HTMLDocument,HTMLTemplateElement,Intl,JSON,Map,Math.log2,MutationObserver,Number.isInteger,Object.assign,Object.defineProperty,Object.entries,Object.freeze,Object.getOwnPropertyDescriptor,Object.getOwnPropertyNames,Object.getPrototypeOf,Object.keys,Promise,Reflect,Reflect.defineProperty,Reflect.get,Reflect.getOwnPropertyDescriptor,Reflect.setPrototypeOf,Set,String.prototype.endsWith,String.prototype.includes,String.prototype.matchAll,String.prototype.padStart,String.prototype.startsWith,String.prototype.trim,Symbol,Symbol.for,Symbol.hasInstance,Symbol.iterator,Uint16Array,Uint8Array,URL,WeakMap,WeakSet"
79
+ <script id="polyfill" src="https://polyfill.io/v3/polyfill.min.js?features=Array.from,Array.isArray,Array.prototype.entries,Array.prototype.every,Array.prototype.fill,Array.prototype.filter,Array.prototype.find,Array.prototype.forEach,Array.prototype.includes,Array.prototype.indexOf,Array.prototype.keys,Array.prototype.lastIndexOf,Array.prototype.map,Array.prototype.reduce,Array.prototype.some,Array.prototype.sort,Array.prototype.values,ArrayBuffer,atob,Blob,console,CustomEvent,DataView,Date.prototype.toISOString,document,Document,DocumentFragment,Element,Event,fetch,Function.prototype.bind,getComputedStyle,globalThis,HTMLDocument,HTMLTemplateElement,IntersectionObserver,Intl,JSON,Map,Math.log2,MutationObserver,Number.isFinite,Number.isInteger,Object.assign,Object.defineProperty,Object.entries,Object.freeze,Object.getOwnPropertyDescriptor,Object.getOwnPropertyNames,Object.getPrototypeOf,Object.keys,Promise,Reflect,Reflect.defineProperty,Reflect.get,Reflect.getOwnPropertyDescriptor,Reflect.setPrototypeOf,requestAnimationFrame,ResizeObserver,Set,String.prototype.endsWith,String.prototype.includes,String.prototype.matchAll,String.prototype.padStart,String.prototype.startsWith,String.prototype.trim,Symbol,Symbol.for,Symbol.hasInstance,Symbol.iterator,Uint16Array,Uint8Array,URL,WeakMap,WeakSet"
77
80
  crossorigin="anonymous"
78
81
  referrerpolicy="no-referrer"></script>
79
82
  ```
@@ -99,4 +102,4 @@ You can also purchase a commercial license.
99
102
  ## Changelog
100
103
 
101
104
  Detailed changes for each release are documented in
102
- the [CHANGELOG](https://gitlab.schukai.com/oss/libraries/javascript/monster/-/blob/master/application/CHANGELOG).
105
+ the [CHANGELOG](https://gitlab.schukai.com/oss/libraries/javascript/monster/-/blob/master/application/CHANGELOG.md).
@@ -0,0 +1,10 @@
1
+ import {Button} from '@schukai/component-form/source/button.js';
2
+
3
+ const button = document.createElement('monster-button');
4
+ // set label
5
+ button.setOption('labels.button', 'Click')
6
+ // add action for click
7
+ button.setOption('actions.click', function (e) {
8
+ console.log(e);
9
+ })
10
+ document.body.appendChild(button)
@@ -0,0 +1,25 @@
1
+ import {Select} from '@schukai/component-form/source/select.js';
2
+
3
+ const select = document.createElement('monster-select');
4
+ select.setOption('mapping.labelTemplate', '${name} (${alpha-2})')
5
+ select.setOption('mapping.valueTemplate', '${country-code}')
6
+ select.importOptions([
7
+ {
8
+ "name": "United Kingdom",
9
+ "alpha-2": "GB",
10
+ "country-code": "826",
11
+ },
12
+ {
13
+ "name": "Sweden",
14
+ "alpha-2": "SE",
15
+ "country-code": "752",
16
+
17
+ },
18
+ {
19
+ "name": "Germany",
20
+ "alpha-2": "DE",
21
+ "country-code": "276",
22
+ }
23
+ ]);
24
+
25
+ document.body.appendChild(select);
@@ -0,0 +1,27 @@
1
+ import {TreeSelect} from '@schukai/component-form/source/tree-select.mjs';
2
+
3
+ const treeSelect = document.createElement('monster-tree-select');
4
+ treeSelect.setOption('mapping.valueTemplate', '${name} (${alpha-2})')
5
+ treeSelect.setOption('mapping.labelTemplate', '${country-code}')
6
+ treeSelect.importOptions([
7
+ {
8
+ "name": "United Kingdom",
9
+ "alpha-2": "GB",
10
+ "country-code": "826",
11
+ "parent": undefined
12
+ },
13
+ {
14
+ "name": "Sweden",
15
+ "alpha-2": "SE",
16
+ "country-code": "752",
17
+ "parent": undefined
18
+ },
19
+ {
20
+ "name": "Germany",
21
+ "alpha-2": "DE",
22
+ "country-code": "276",
23
+ "parent": undefined
24
+ }
25
+ ]);
26
+
27
+ document.body.appendChild(treeSelect);
File without changes
@@ -0,0 +1,4 @@
1
+ import {Notify} from '@schukai/component-notify/source/message.js';
2
+
3
+ const notify = document.createElement('monster-notify');
4
+ document.body.appendChild(notify);
@@ -0,0 +1,4 @@
1
+ import {Notify} from '@schukai/component-notify/source/notify.mjs';
2
+
3
+ const notify = document.createElement('monster-notify');
4
+ document.body.appendChild(notify);
File without changes
File without changes
@@ -5,7 +5,13 @@ const ds = new RestAPI({
5
5
  url: 'https://httpbin.org/get'
6
6
  },
7
7
  read: {
8
- url: 'https://httpbin.org/get'
8
+ url: 'https://httpbin.org/get',
9
+ init: {
10
+ method: "GET",
11
+ headers: {
12
+ "Accept": "application/json",
13
+ },
14
+ },
9
15
  }
10
16
  });
11
17
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schukai/monster",
3
- "version": "3.51.5",
3
+ "version": "3.52.1",
4
4
  "description": "Monster is a simple library for creating fast, robust and lightweight websites.",
5
5
  "keywords": [
6
6
  "framework",
@@ -38,5 +38,9 @@
38
38
  "url": "https://gitlab.schukai.com/oss/libraries/javascript/monster.git"
39
39
  },
40
40
  "author": "schukai GmbH",
41
- "license": "AGPL 3.0"
41
+ "license": "AGPL 3.0",
42
+ "dependencies": {
43
+ "@floating-ui/dom": "^1.5.3",
44
+ "@popperjs/core": "^2.11.8"
45
+ }
42
46
  }
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Copyright schukai GmbH and contributors 2022. 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
+
8
+ import { ATTRIBUTE_PREFIX } from "../dom/constants.mjs";
9
+
10
+ /**
11
+ * `data-monster-intend`
12
+ *
13
+ * @memberOf Monster.Components
14
+ * @since 1.8.0
15
+ * @type {string}
16
+ */
17
+ const ATTRIBUTE_INTEND = ATTRIBUTE_PREFIX + "intend";
18
+
19
+ export { ATTRIBUTE_INTEND };
20
+
21
+ /**
22
+ * @memberOf Monster.Components
23
+ * @since 1.0.0
24
+ * @type {string}
25
+ */
26
+ const STYLE_DISPLAY_MODE_BLOCK = "block";
27
+
28
+ /**
29
+ * This attribute `data-monster-datasource` can be used to pass a datasource.
30
+ *
31
+ * @memberOf Monster.Components
32
+ * @type {string}
33
+ */
34
+ const ATTRIBUTE_DATASOURCE = `${ATTRIBUTE_PREFIX}datasource`;
35
+
36
+ /**
37
+ * @memberOf Monster.Components
38
+ * @type {string}
39
+ */
40
+ const ATTRIBUTE_DATASOURCE_SELECTOR = `${ATTRIBUTE_DATASOURCE}-selector`;
41
+
42
+ /**
43
+ * @memberOf Monster.Components
44
+ * @type {string}
45
+ */
46
+ const ATTRIBUTE_DATATABLE_GRID_TEMPLATE = `${ATTRIBUTE_PREFIX}grid-template`;
47
+
48
+ /**
49
+ * @memberOf Monster.Components
50
+ * @type {string}
51
+ */
52
+ const ATTRIBUTE_DATATABLE_HEAD = `${ATTRIBUTE_PREFIX}head`;
53
+
54
+ /**
55
+ * @memberOf Monster.Components
56
+ * @type {string}
57
+ */
58
+ const ATTRIBUTE_DATATABLE_ALIGN = `${ATTRIBUTE_PREFIX}align`;
59
+
60
+ /**
61
+ * @memberOf Monster.Components
62
+ * @type {string}
63
+ */
64
+ const ATTRIBUTE_DATATABLE_SORTABLE = `${ATTRIBUTE_PREFIX}sortable`;
65
+
66
+ /**
67
+ * @memberOf Monster.Components
68
+ * @type {string}
69
+ */
70
+ const ATTRIBUTE_DATATABLE_INDEX = `${ATTRIBUTE_PREFIX}index`;
71
+
72
+ /**
73
+ * @memberOf Monster.Components
74
+ * @type {string}
75
+ */
76
+ const ATTRIBUTE_DATATABLE_MODE = `${ATTRIBUTE_PREFIX}mode`;
77
+
78
+ /**
79
+ * @memberOf Monster.Components
80
+ * @type {string}
81
+ */
82
+ const ATTRIBUTE_DATATABLE_RESPONSIVE_BREAKPOINT = `${ATTRIBUTE_PREFIX}responsive-breakpoint`;
83
+
84
+ /**
85
+ * This attribute `data-monster-datasource-arguments` can be used to pass arguments.
86
+ *
87
+ * @memberOf Monster.Components
88
+ * @type {string}
89
+ */
90
+ const ATTRIBUTE_DATASOURCE_ARGUMENTS = `${ATTRIBUTE_DATASOURCE}-arguments`;
91
+
92
+ /**
93
+ * Column is not hideable and visible
94
+ *
95
+ * @private
96
+ * @type {string}
97
+ */
98
+ const ATTRIBUTE_DATATABLE_MODE_FIXED = "fixed";
99
+
100
+ /**
101
+ * Column is hidden
102
+ *
103
+ * @private
104
+ * @type {string}
105
+ */
106
+ const ATTRIBUTE_DATATABLE_MODE_HIDDEN = "hidden";
107
+
108
+ /**
109
+ * Column is visible
110
+ *
111
+ * @private
112
+ * @memberOf Monster.Components
113
+ * @type {string}
114
+ */
115
+ const ATTRIBUTE_DATATABLE_MODE_VISIBLE = "visible";
116
+
117
+ export {
118
+ ATTRIBUTE_DATASOURCE,
119
+ ATTRIBUTE_DATASOURCE_SELECTOR,
120
+ ATTRIBUTE_DATASOURCE_ARGUMENTS,
121
+ ATTRIBUTE_DATATABLE_GRID_TEMPLATE,
122
+ ATTRIBUTE_DATATABLE_HEAD,
123
+ ATTRIBUTE_DATATABLE_SORTABLE,
124
+ ATTRIBUTE_DATATABLE_MODE,
125
+ ATTRIBUTE_DATATABLE_INDEX,
126
+ ATTRIBUTE_DATATABLE_ALIGN,
127
+ ATTRIBUTE_DATATABLE_MODE_FIXED,
128
+ ATTRIBUTE_DATATABLE_RESPONSIVE_BREAKPOINT,
129
+ ATTRIBUTE_DATATABLE_MODE_VISIBLE,
130
+ ATTRIBUTE_DATATABLE_MODE_HIDDEN,
131
+ STYLE_DISPLAY_MODE_BLOCK,
132
+ };
@@ -0,0 +1,310 @@
1
+ /**
2
+ * Copyright 2023 schukai GmbH
3
+ * SPDX-License-Identifier: AGPL-3.0
4
+ */
5
+
6
+ import { instanceSymbol } from "../../constants.mjs";
7
+ import {
8
+ assembleMethodSymbol,
9
+ CustomElement,
10
+ registerCustomElement,
11
+ } from "../../dom/customelement.mjs";
12
+ import { findTargetElementFromEvent } from "../../dom/events.mjs";
13
+ import { clone } from "../../util/clone.mjs";
14
+ import { ColumnBarStyleSheet } from "./stylesheet/column-bar.mjs";
15
+ import { createPopper } from "@popperjs/core";
16
+
17
+ export { ColumnBar };
18
+
19
+ /**
20
+ * @private
21
+ * @type {symbol}
22
+ */
23
+ const settingsButtonElementSymbol = Symbol("settingButtonElement");
24
+
25
+ /**
26
+ * @private
27
+ * @type {symbol}
28
+ */
29
+ const settingsButtonEventHandlerSymbol = Symbol("settingsButtonEventHandler");
30
+
31
+ /**
32
+ * @private
33
+ * @type {symbol}
34
+ */
35
+ const settingsLayerElementSymbol = Symbol("settingsLayerElement");
36
+
37
+ /**
38
+ * @private
39
+ * @type {symbol}
40
+ */
41
+ const dotsContainerElementSymbol = Symbol("dotsContainerElement");
42
+
43
+ /**
44
+ * @private
45
+ * @type {symbol}
46
+ */
47
+ const popperInstanceSymbol = Symbol("popperInstance");
48
+
49
+ /**
50
+ * The ColumnBar component is used to show and configure the columns of a datatable.
51
+ *
52
+ * <img src="./images/column-bar.png">
53
+ *
54
+ * Dependencies: the system uses functions of the [monsterjs](https://monsterjs.org/) library
55
+ *
56
+ * You can create this control either by specifying the HTML tag <monster-column-bar />` directly in the HTML or using
57
+ * Javascript via the `document.createElement('monster-column-bar');` method.
58
+ *
59
+ * ```html
60
+ * <monster-column-bar></monster-column-bar>
61
+ * ```
62
+ *
63
+ * Or you can create this CustomControl directly in Javascript:
64
+ *
65
+ * ```js
66
+ * import '@schukai/component-datatable/source/columnbar.mjs';
67
+ * document.createElement('monster-column-bar');
68
+ * ```
69
+ *
70
+ * The Body should have a class "hidden" to ensure that the styles are applied correctly.
71
+ *
72
+ * ```css
73
+ * body.hidden {
74
+ * visibility: hidden;
75
+ * }
76
+ * ```
77
+ *
78
+ * @startuml column-bar.png
79
+ * skinparam monochrome true
80
+ * skinparam shadowing false
81
+ * HTMLElement <|-- CustomElement
82
+ * CustomElement <|-- ColumnBar
83
+ * @enduml
84
+ *
85
+ * @copyright schukai GmbH
86
+ * @memberOf Monster.Components.Datatable
87
+ * @summary A data set
88
+ */
89
+ class ColumnBar extends CustomElement {
90
+ /**
91
+ * This method is called by the `instanceof` operator.
92
+ * @returns {symbol}
93
+ */
94
+ static get [instanceSymbol]() {
95
+ return Symbol.for("@schukai/monster/components/column-bar");
96
+ }
97
+
98
+ /**
99
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
100
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
101
+ *
102
+ * The individual configuration values can be found in the table.
103
+ *
104
+ * @property {Object} templates Template definitions
105
+ * @property {string} templates.main Main template
106
+ * @property {object} datasource The datasource
107
+ * @property {boolean} autoLoad If true, the datasource is called immediately after the control is created.
108
+ */
109
+ get defaults() {
110
+ const obj = Object.assign({}, super.defaults, {
111
+ templates: {
112
+ main: getTemplate(),
113
+ },
114
+ locale: {
115
+ settings: "Settings",
116
+ },
117
+
118
+ columns: [],
119
+ });
120
+
121
+ return obj;
122
+ }
123
+
124
+ /**
125
+ *
126
+ * @return {string}
127
+ */
128
+ static getTag() {
129
+ return "monster-column-bar";
130
+ }
131
+
132
+ /**
133
+ *
134
+ * @return {Monster.Components.Form.Form}
135
+ */
136
+ [assembleMethodSymbol]() {;
137
+ super[assembleMethodSymbol]();
138
+
139
+ initControlReferences.call(this);
140
+ initEventHandler.call(this);
141
+ }
142
+
143
+ /**
144
+ * @return {Array<ColumnBarStyleSheet>}
145
+ */
146
+ static getCSSStyleSheet() {
147
+ return [ColumnBarStyleSheet];
148
+ }
149
+ }
150
+
151
+ /**
152
+ * @private
153
+ * @return {Monster.Components.Datatable.Form}
154
+ */
155
+ function initControlReferences() {;
156
+
157
+ if (!this.shadowRoot) {
158
+ throw new Error("no shadow-root is defined");
159
+ }
160
+
161
+ this[settingsButtonElementSymbol] = this.shadowRoot.querySelector(
162
+ "[data-monster-role=settings-button]",
163
+ );
164
+ this[settingsLayerElementSymbol] = this.shadowRoot.querySelector(
165
+ "[data-monster-role=settings-layer]",
166
+ );
167
+ this[dotsContainerElementSymbol] = this.shadowRoot.querySelector(
168
+ "[data-monster-role=dots]",
169
+ );
170
+ return this;
171
+ }
172
+
173
+ /**
174
+ * @private
175
+ */
176
+ function initEventHandler() {
177
+ const self = this;
178
+
179
+ self[popperInstanceSymbol] = createPopper(
180
+ self[settingsButtonElementSymbol],
181
+ self[settingsLayerElementSymbol],
182
+ {
183
+ placement: "auto",
184
+
185
+ modifiers: [
186
+ {
187
+ name: "offset",
188
+ options: {
189
+ offset: [10, 10],
190
+ },
191
+ },
192
+ ],
193
+ },
194
+ );
195
+
196
+ self[dotsContainerElementSymbol].addEventListener("click", function (event) {
197
+ const element = findTargetElementFromEvent(
198
+ event,
199
+ "data-monster-role",
200
+ "column",
201
+ );
202
+ if (element) {
203
+ const index = element.getAttribute("data-monster-index");
204
+ event.preventDefault();
205
+
206
+ const columns = clone(self.getOption("columns"));
207
+
208
+ const column = columns.find((col) => {
209
+ return parseInt(col.index) === parseInt(index);
210
+ });
211
+
212
+ column.visible = !column.visible;
213
+ self.setOption("columns", columns);
214
+ }
215
+ });
216
+
217
+ self[settingsButtonEventHandlerSymbol] = (event) => {
218
+ const clickTarget = event.composedPath()?.[0];
219
+ if (
220
+ self[settingsLayerElementSymbol] === clickTarget ||
221
+ self[settingsLayerElementSymbol].contains(clickTarget)
222
+ ) {
223
+ return;
224
+ }
225
+ self[settingsLayerElementSymbol].classList.remove("visible");
226
+ document.body.removeEventListener(
227
+ "click",
228
+ self[settingsButtonEventHandlerSymbol],
229
+ );
230
+ };
231
+
232
+ self[settingsButtonElementSymbol].addEventListener("click", function (event) {
233
+ const element = findTargetElementFromEvent(
234
+ event,
235
+ "data-monster-role",
236
+ "settings-button",
237
+ );
238
+
239
+ if (element) {
240
+ self[settingsLayerElementSymbol].classList.toggle("visible");
241
+ event.preventDefault();
242
+
243
+ if (self[settingsLayerElementSymbol].classList.contains("visible")) {
244
+ self[popperInstanceSymbol].update();
245
+
246
+ setTimeout(() => {
247
+ document.body.addEventListener(
248
+ "click",
249
+ self[settingsButtonEventHandlerSymbol],
250
+ );
251
+ }, 0);
252
+ }
253
+ }
254
+ });
255
+
256
+ self[settingsLayerElementSymbol].addEventListener("change", function (event) {
257
+ const control = event.target;
258
+ const index = control.getAttribute("data-monster-index");
259
+
260
+ const columns = clone(self.getOption("columns"));
261
+
262
+ const column = columns.find((col) => {
263
+ return parseInt(col.index) === parseInt(index);
264
+ });
265
+
266
+ column.visible = control.checked;
267
+ self.setOption("columns", columns);
268
+ });
269
+ }
270
+
271
+ /**
272
+ * @private
273
+ * @return {string}
274
+ */
275
+ function getTemplate() {
276
+ // language=HTML
277
+ return `
278
+ <template id="column">
279
+ <div data-monster-role="column">
280
+ <label><input type="checkbox" data-monster-attributes="
281
+ data-monster-index path:column.index,
282
+ checked path:column.visible | ?:checked:"><span
283
+ data-monster-replace="path:column.name"
284
+ ></span></label>
285
+ </div>
286
+ </template>
287
+ <template id="dots">
288
+ <li data-monster-insert="">
289
+ <a href="#" data-monster-role="column"
290
+ data-monster-attributes="
291
+ class path:dots.visible | ?:is-hidden:is-visible,
292
+ title path:dots.name,
293
+ data-monster-index path:dots.index">
294
+ </a>
295
+ </li>
296
+ </template>
297
+
298
+ <div data-monster-role="control" part="control" data-monster-select-this="true" data-monster-attributes="class path:columns | has-entries | ?::hidden">
299
+ <ul data-monster-insert="dots path:columns"
300
+ data-monster-role="dots"></ul>
301
+ <a href="#" data-monster-role="settings-button" data-monster-replace="path:locale.settings">Settings</a>
302
+ <div data-monster-role="settings-layer">
303
+ <div data-monster-insert="column path:columns" data-monster-role="settings-popup-list">
304
+ </div>
305
+ </div>
306
+ </div>
307
+ `;
308
+ }
309
+
310
+ registerCustomElement(ColumnBar);