@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
package/CHANGELOG.md CHANGED
@@ -1,4 +1,20 @@
1
1
 
2
+ ## [3.52.0] - 2023-11-01
3
+
4
+ ### Add Features
5
+
6
+ - integrate components, test, example and code [#127](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/127)
7
+ - integrate components in monster [#127](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/127)
8
+ ### Changes
9
+
10
+ - documentation
11
+ - update documentation
12
+ - add aws doc update to tasks [#126](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/126)
13
+ - code tidy and update web test
14
+ - code lint
15
+ - lint and format
16
+ - code tidy
17
+
2
18
  ## [3.51.5] - 2023-11-01
3
19
 
4
20
  ### Bug Fixes
@@ -6,6 +22,7 @@
6
22
  - release process
7
23
  ### Changes
8
24
 
25
+ - release and publish to npm new version 3.51.5
9
26
  - restore devDependencies
10
27
  - update release process
11
28
  - 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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schukai/monster",
3
- "version": "3.51.5",
3
+ "version": "3.52.0",
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);