@schukai/monster 3.65.0 → 3.65.21

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 (383) hide show
  1. package/CHANGELOG.md +48 -327
  2. package/README.md +44 -40
  3. package/package.json +1 -48
  4. package/source/components/constants.mjs +10 -3
  5. package/source/components/datatable/change-button.mjs +18 -11
  6. package/source/components/datatable/columnbar.mjs +10 -1
  7. package/source/components/datatable/constants.mjs +11 -4
  8. package/source/components/datatable/dataset.mjs +212 -203
  9. package/source/components/datatable/datasource/dom.mjs +14 -1
  10. package/source/components/datatable/datasource/rest.mjs +10 -1
  11. package/source/components/datatable/datasource.mjs +10 -1
  12. package/source/components/datatable/datatable/header.mjs +220 -218
  13. package/source/components/datatable/datatable.mjs +754 -752
  14. package/source/components/datatable/embedded-pagination.mjs +10 -1
  15. package/source/components/datatable/filter/abstract-base.mjs +10 -1
  16. package/source/components/datatable/filter/date-range.mjs +10 -1
  17. package/source/components/datatable/filter/input.mjs +10 -1
  18. package/source/components/datatable/filter/range.mjs +10 -1
  19. package/source/components/datatable/filter/select.mjs +11 -4
  20. package/source/components/datatable/filter/settings.mjs +14 -0
  21. package/source/components/datatable/filter/util.mjs +14 -0
  22. package/source/components/datatable/filter-button.mjs +10 -1
  23. package/source/components/datatable/filter.mjs +15 -11
  24. package/source/components/datatable/pagination.mjs +18 -9
  25. package/source/components/datatable/save-button.mjs +280 -270
  26. package/source/components/datatable/status.mjs +15 -5
  27. package/source/components/datatable/stylesheet/change-button.mjs +16 -7
  28. package/source/components/datatable/stylesheet/column-bar.mjs +16 -7
  29. package/source/components/datatable/stylesheet/dataset.mjs +16 -7
  30. package/source/components/datatable/stylesheet/datasource.mjs +16 -7
  31. package/source/components/datatable/stylesheet/datatable.mjs +16 -7
  32. package/source/components/datatable/stylesheet/embedded-pagination.mjs +16 -7
  33. package/source/components/datatable/stylesheet/filter-button.mjs +16 -7
  34. package/source/components/datatable/stylesheet/filter-controls-defaults.mjs +16 -7
  35. package/source/components/datatable/stylesheet/filter-date-range.mjs +16 -7
  36. package/source/components/datatable/stylesheet/filter-range.mjs +16 -7
  37. package/source/components/datatable/stylesheet/filter.mjs +16 -7
  38. package/source/components/datatable/stylesheet/pagination.mjs +16 -7
  39. package/source/components/datatable/stylesheet/save-button.mjs +16 -7
  40. package/source/components/datatable/stylesheet/select-filter.mjs +16 -7
  41. package/source/components/datatable/stylesheet/status.mjs +16 -7
  42. package/source/components/datatable/util.mjs +16 -8
  43. package/source/components/form/action-button.mjs +11 -3
  44. package/source/components/form/api-button.mjs +11 -3
  45. package/source/components/form/button-bar.mjs +11 -3
  46. package/source/components/form/button.mjs +254 -249
  47. package/source/components/form/confirm-button.mjs +11 -3
  48. package/source/components/form/constants.mjs +10 -3
  49. package/source/components/form/context-error.mjs +69 -52
  50. package/source/components/form/context-help.mjs +11 -3
  51. package/source/components/form/field-set.mjs +10 -15
  52. package/source/components/form/form.mjs +12 -4
  53. package/source/components/form/message-state-button.mjs +11 -3
  54. package/source/components/form/popper-button.mjs +11 -3
  55. package/source/components/form/popper.mjs +6 -6
  56. package/source/components/form/reload.mjs +12 -4
  57. package/source/components/form/select.mjs +44 -33
  58. package/source/components/form/shadow-reload.mjs +11 -3
  59. package/source/components/form/state-button.mjs +11 -3
  60. package/source/components/form/stylesheet/action-button.mjs +16 -7
  61. package/source/components/form/stylesheet/api-button.mjs +16 -7
  62. package/source/components/form/stylesheet/button-bar.mjs +16 -7
  63. package/source/components/form/stylesheet/button.mjs +16 -7
  64. package/source/components/form/stylesheet/confirm-button.mjs +16 -7
  65. package/source/components/form/stylesheet/context-error.mjs +16 -7
  66. package/source/components/form/stylesheet/context-help.mjs +16 -7
  67. package/source/components/form/stylesheet/field-set.mjs +16 -7
  68. package/source/components/form/stylesheet/form.mjs +16 -7
  69. package/source/components/form/stylesheet/message-state-button.mjs +16 -7
  70. package/source/components/form/stylesheet/popper-button.mjs +16 -7
  71. package/source/components/form/stylesheet/select.mjs +16 -7
  72. package/source/components/form/stylesheet/state-button.mjs +16 -7
  73. package/source/components/form/stylesheet/toggle-switch.mjs +16 -7
  74. package/source/components/form/stylesheet/tree-select.mjs +16 -7
  75. package/source/components/form/tabs.mjs +12 -8
  76. package/source/components/form/template.mjs +11 -3
  77. package/source/components/form/toggle-switch.mjs +12 -8
  78. package/source/components/form/tree-select.mjs +10 -3
  79. package/source/components/form/types/state.mjs +10 -3
  80. package/source/components/form/util/fetch.mjs +10 -3
  81. package/source/components/form/util/floating-ui.mjs +10 -3
  82. package/source/components/form/util/popper.mjs +10 -3
  83. package/source/components/host/call-button.mjs +10 -1
  84. package/source/components/host/collapse.mjs +4 -6
  85. package/source/components/host/config-manager.mjs +2 -0
  86. package/source/components/host/constants.mjs +2 -0
  87. package/source/components/host/details.mjs +5 -8
  88. package/source/components/host/host.mjs +10 -1
  89. package/source/components/host/overlay.mjs +10 -1
  90. package/source/components/host/stylesheet/call-button.mjs +16 -7
  91. package/source/components/host/stylesheet/config-manager.mjs +16 -7
  92. package/source/components/host/stylesheet/host.mjs +16 -7
  93. package/source/components/host/stylesheet/overlay.mjs +16 -7
  94. package/source/components/host/stylesheet/toggle-button.mjs +16 -7
  95. package/source/components/host/stylesheet/viewer.mjs +16 -7
  96. package/source/components/host/toggle-button.mjs +10 -1
  97. package/source/components/host/util.mjs +14 -0
  98. package/source/components/host/viewer.mjs +10 -1
  99. package/source/components/layout/collapse.mjs +4 -3
  100. package/source/components/layout/details.mjs +2 -0
  101. package/source/components/layout/panel.mjs +179 -169
  102. package/source/components/layout/popper.mjs +324 -320
  103. package/source/components/layout/split-panel.mjs +329 -303
  104. package/source/components/layout/stylesheet/collapse.mjs +16 -7
  105. package/source/components/layout/stylesheet/details.mjs +16 -7
  106. package/source/components/layout/stylesheet/panel.mjs +16 -7
  107. package/source/components/layout/stylesheet/popper.mjs +16 -7
  108. package/source/components/layout/stylesheet/split-panel.mjs +16 -7
  109. package/source/components/layout/stylesheet/tabs.mjs +16 -7
  110. package/source/components/layout/stylesheet/width-toggle.mjs +16 -7
  111. package/source/components/layout/tabs.mjs +39 -24
  112. package/source/components/layout/width-toggle.mjs +148 -138
  113. package/source/components/navigation/style/table-of-content.pcss +20 -5
  114. package/source/components/navigation/stylesheet/table-of-content.mjs +17 -8
  115. package/source/components/navigation/table-of-content.mjs +394 -266
  116. package/source/components/notify/constants.mjs +10 -3
  117. package/source/components/notify/message.mjs +16 -9
  118. package/source/components/notify/notify.mjs +11 -4
  119. package/source/components/notify/stylesheet/message.mjs +16 -7
  120. package/source/components/notify/stylesheet/notify.mjs +16 -7
  121. package/source/components/state/log/entry.mjs +10 -1
  122. package/source/components/state/log.mjs +10 -1
  123. package/source/components/state/state.mjs +10 -1
  124. package/source/components/state/stylesheet/log.mjs +16 -7
  125. package/source/components/state/stylesheet/state.mjs +16 -7
  126. package/source/components/style/mixin/form.pcss +0 -1
  127. package/source/components/stylesheet/badge.mjs +16 -7
  128. package/source/components/stylesheet/border.mjs +16 -7
  129. package/source/components/stylesheet/button.mjs +16 -7
  130. package/source/components/stylesheet/card.mjs +16 -7
  131. package/source/components/stylesheet/color.mjs +16 -7
  132. package/source/components/stylesheet/common.mjs +16 -7
  133. package/source/components/stylesheet/control.mjs +16 -7
  134. package/source/components/stylesheet/data-grid.mjs +16 -7
  135. package/source/components/stylesheet/display.mjs +16 -7
  136. package/source/components/stylesheet/floating-ui.mjs +16 -7
  137. package/source/components/stylesheet/form.mjs +16 -7
  138. package/source/components/stylesheet/host.mjs +16 -7
  139. package/source/components/stylesheet/icons.mjs +16 -7
  140. package/source/components/stylesheet/link.mjs +16 -7
  141. package/source/components/stylesheet/mixin/badge.mjs +16 -7
  142. package/source/components/stylesheet/mixin/button.mjs +16 -7
  143. package/source/components/stylesheet/mixin/form.mjs +16 -7
  144. package/source/components/stylesheet/mixin/hover.mjs +16 -7
  145. package/source/components/stylesheet/mixin/icon.mjs +16 -7
  146. package/source/components/stylesheet/mixin/media.mjs +16 -7
  147. package/source/components/stylesheet/mixin/property.mjs +16 -7
  148. package/source/components/stylesheet/mixin/skeleton.mjs +16 -7
  149. package/source/components/stylesheet/mixin/spinner.mjs +16 -7
  150. package/source/components/stylesheet/mixin/typography.mjs +16 -7
  151. package/source/components/stylesheet/normalize.mjs +16 -7
  152. package/source/components/stylesheet/popper.mjs +16 -7
  153. package/source/components/stylesheet/property.mjs +16 -7
  154. package/source/components/stylesheet/ripple.mjs +16 -7
  155. package/source/components/stylesheet/skeleton.mjs +16 -7
  156. package/source/components/stylesheet/space.mjs +16 -7
  157. package/source/components/stylesheet/spinner.mjs +16 -7
  158. package/source/components/stylesheet/table.mjs +16 -7
  159. package/source/components/stylesheet/theme.mjs +16 -7
  160. package/source/components/stylesheet/tree-menu.mjs +10 -3
  161. package/source/components/stylesheet/typography.mjs +16 -7
  162. package/source/components/tree-menu/stylesheet/tree-menu.mjs +16 -7
  163. package/source/components/tree-menu/tree-menu.mjs +19 -8
  164. package/source/constants.mjs +10 -6
  165. package/source/constraints/abstract.mjs +10 -3
  166. package/source/constraints/abstractoperator.mjs +10 -3
  167. package/source/constraints/andoperator.mjs +10 -3
  168. package/source/constraints/invalid.mjs +10 -3
  169. package/source/constraints/isarray.mjs +10 -3
  170. package/source/constraints/isobject.mjs +10 -3
  171. package/source/constraints/oroperator.mjs +10 -3
  172. package/source/constraints/valid.mjs +10 -3
  173. package/source/data/buildmap.mjs +10 -3
  174. package/source/data/buildtree.mjs +10 -3
  175. package/source/data/datasource/dom.mjs +95 -87
  176. package/source/data/datasource/server/restapi/data-fetch-error.mjs +10 -3
  177. package/source/data/datasource/server/restapi/writeerror.mjs +10 -3
  178. package/source/data/datasource/server/restapi.mjs +10 -3
  179. package/source/data/datasource/server/webconnect.mjs +10 -3
  180. package/source/data/datasource/server.mjs +10 -3
  181. package/source/data/datasource/storage/localstorage.mjs +10 -3
  182. package/source/data/datasource/storage/sessionstorage.mjs +10 -3
  183. package/source/data/datasource/storage.mjs +10 -3
  184. package/source/data/datasource.mjs +10 -3
  185. package/source/data/diff.mjs +10 -3
  186. package/source/data/extend.mjs +10 -3
  187. package/source/data/pathfinder.mjs +10 -3
  188. package/source/data/pipe.mjs +10 -3
  189. package/source/data/transformer.mjs +34 -10
  190. package/source/dom/assembler.mjs +10 -3
  191. package/source/dom/attributes.mjs +10 -3
  192. package/source/dom/constants.mjs +10 -3
  193. package/source/dom/customcontrol.mjs +11 -4
  194. package/source/dom/customelement.mjs +31 -17
  195. package/source/dom/dimension.mjs +10 -3
  196. package/source/dom/events.mjs +10 -3
  197. package/source/dom/focusmanager.mjs +10 -3
  198. package/source/dom/locale.mjs +10 -3
  199. package/source/dom/ready.mjs +2 -1
  200. package/source/dom/resource/data.mjs +133 -123
  201. package/source/dom/resource/link/stylesheet.mjs +10 -3
  202. package/source/dom/resource/link.mjs +10 -3
  203. package/source/dom/resource/script.mjs +10 -3
  204. package/source/dom/resource.mjs +10 -4
  205. package/source/dom/resourcemanager.mjs +10 -3
  206. package/source/dom/slotted.mjs +14 -0
  207. package/source/dom/template.mjs +124 -136
  208. package/source/dom/theme.mjs +10 -3
  209. package/source/dom/updater.mjs +10 -3
  210. package/source/dom/util/extract-keys.mjs +10 -3
  211. package/source/dom/util/init-options-from-attributes.mjs +68 -61
  212. package/source/dom/util/set-option-from-attribute.mjs +10 -3
  213. package/source/dom/util.mjs +11 -4
  214. package/source/dom/worker/factory.mjs +10 -3
  215. package/source/i18n/formatter.mjs +10 -3
  216. package/source/i18n/locale.mjs +10 -3
  217. package/source/i18n/provider.mjs +10 -3
  218. package/source/i18n/providers/embed.mjs +10 -3
  219. package/source/i18n/providers/fetch.mjs +10 -3
  220. package/source/i18n/translations.mjs +10 -3
  221. package/source/logging/handler/console.mjs +10 -3
  222. package/source/logging/handler.mjs +10 -3
  223. package/source/logging/logentry.mjs +10 -3
  224. package/source/logging/logger.mjs +10 -3
  225. package/source/math/random.mjs +10 -3
  226. package/source/monster.mjs +3 -9
  227. package/source/net/webconnect/message.mjs +10 -3
  228. package/source/net/webconnect.mjs +20 -5
  229. package/source/text/bracketed-key-value-hash.mjs +10 -3
  230. package/source/text/formatter.mjs +10 -3
  231. package/source/text/generate-range-comparison-expression.mjs +10 -3
  232. package/source/text/util.mjs +14 -0
  233. package/source/types/base.mjs +10 -3
  234. package/source/types/basewithoptions.mjs +10 -3
  235. package/source/types/binary.mjs +10 -3
  236. package/source/types/dataurl.mjs +10 -3
  237. package/source/types/global.mjs +14 -7
  238. package/source/types/id.mjs +10 -3
  239. package/source/types/internal.mjs +11 -3
  240. package/source/types/is.mjs +10 -3
  241. package/source/types/mediatype.mjs +10 -3
  242. package/source/types/node.mjs +10 -3
  243. package/source/types/nodelist.mjs +10 -3
  244. package/source/types/noderecursiveiterator.mjs +10 -3
  245. package/source/types/observablequeue.mjs +10 -3
  246. package/source/types/observer.mjs +10 -3
  247. package/source/types/observerlist.mjs +10 -3
  248. package/source/types/proxyobserver.mjs +10 -3
  249. package/source/types/queue.mjs +10 -3
  250. package/source/types/randomid.mjs +10 -3
  251. package/source/types/regex.mjs +10 -3
  252. package/source/types/stack.mjs +10 -3
  253. package/source/types/tokenlist.mjs +10 -3
  254. package/source/types/typeof.mjs +10 -3
  255. package/source/types/uniquequeue.mjs +10 -3
  256. package/source/types/uuid.mjs +10 -3
  257. package/source/types/validate.mjs +10 -3
  258. package/source/types/version.mjs +10 -3
  259. package/source/util/clone.mjs +10 -3
  260. package/source/util/comparator.mjs +10 -3
  261. package/source/util/deadmansswitch.mjs +10 -3
  262. package/source/util/freeze.mjs +10 -3
  263. package/source/util/processing.mjs +10 -3
  264. package/source/util/runtime.mjs +10 -7
  265. package/source/util/sleep.mjs +10 -10
  266. package/source/util/trimspaces.mjs +10 -3
  267. package/test/cases/data/datasource/server/websocket.mjs +7 -9
  268. package/test/cases/data/transformer.mjs +47 -15
  269. package/test/cases/dom/customcontrol.mjs +0 -1
  270. package/test/cases/dom/customelement.mjs +1 -3
  271. package/test/cases/dom/template.mjs +3 -1
  272. package/test/util/jsdom.mjs +8 -7
  273. package/test/util/websocket.mjs +5 -1
  274. package/test/web/import.js +2 -1
  275. package/test/web/puppeteer.mjs +111 -0
  276. package/test/web/test.html +2 -2
  277. package/test/web/tests.js +2036 -1189
  278. package/example/components/form/button.mjs +0 -10
  279. package/example/components/form/field-set.mjs +0 -4
  280. package/example/components/form/select.mjs +0 -25
  281. package/example/components/form/toggle-switch.mjs +0 -7
  282. package/example/components/form/tree-select.mjs +0 -27
  283. package/example/components/host/host.mjs +0 -0
  284. package/example/components/notify/message.mjs +0 -4
  285. package/example/components/notify/notify.mjs +0 -4
  286. package/example/components/state/log.mjs +0 -0
  287. package/example/components/state/state.mjs +0 -0
  288. package/example/constraints/andoperator.mjs +0 -17
  289. package/example/constraints/invalid.mjs +0 -6
  290. package/example/constraints/isarray.mjs +0 -11
  291. package/example/constraints/isobject.mjs +0 -12
  292. package/example/constraints/oroperator.mjs +0 -15
  293. package/example/constraints/valid.mjs +0 -6
  294. package/example/data/buildmap.mjs +0 -67
  295. package/example/data/datasource/server/restapi.mjs +0 -20
  296. package/example/data/datasource/server/webconnect.mjs +0 -9
  297. package/example/data/datasource.mjs +0 -7
  298. package/example/data/diff.mjs +0 -39
  299. package/example/data/pathfinder-1.mjs +0 -23
  300. package/example/data/pathfinder-2.mjs +0 -19
  301. package/example/data/pipe.mjs +0 -14
  302. package/example/data/transformer.mjs +0 -9
  303. package/example/dom/customelement.mjs +0 -14
  304. package/example/dom/theme.mjs +0 -5
  305. package/example/dom/updater.mjs +0 -23
  306. package/example/i18n/formatter.mjs +0 -10
  307. package/example/i18n/providers/embed.mjs +0 -5
  308. package/example/i18n/providers/fetch.mjs +0 -5
  309. package/example/i18n/translations.mjs +0 -20
  310. package/example/net/webconnect.mjs +0 -16
  311. package/example/types/basewithoptions.mjs +0 -10
  312. package/example/types/is-1.mjs +0 -5
  313. package/example/types/is-10.mjs +0 -6
  314. package/example/types/is-2.mjs +0 -4
  315. package/example/types/is-3.mjs +0 -4
  316. package/example/types/is-4.mjs +0 -5
  317. package/example/types/is-5.mjs +0 -4
  318. package/example/types/is-6.mjs +0 -4
  319. package/example/types/is-7.mjs +0 -4
  320. package/example/types/is-8.mjs +0 -4
  321. package/example/types/is-9.mjs +0 -6
  322. package/example/types/noderecursiveiterator.mjs +0 -32
  323. package/example/types/observer.mjs +0 -9
  324. package/example/types/proxyobserver.mjs +0 -25
  325. package/example/types/queue.mjs +0 -20
  326. package/example/types/tokenlist-1.mjs +0 -4
  327. package/example/types/tokenlist-2.mjs +0 -7
  328. package/example/types/tokenlist-3.mjs +0 -5
  329. package/example/types/tokenlist-4.mjs +0 -5
  330. package/example/types/tokenlist-5.mjs +0 -5
  331. package/example/types/typeof.mjs +0 -9
  332. package/example/types/version-1.mjs +0 -6
  333. package/example/types/version-2.mjs +0 -3
  334. package/example/util/comparator.mjs +0 -10
  335. package/example/util/deadmansswitch.mjs +0 -9
  336. package/example/util/processing.mjs +0 -17
  337. package/source/components/datatable/datasource/namespace.mjs +0 -13
  338. package/source/components/datatable/datatable/namespace.mjs +0 -13
  339. package/source/components/datatable/events.mjs +0 -24
  340. package/source/components/datatable/filter/namespace.mjs +0 -13
  341. package/source/components/datatable/namespace.mjs +0 -11
  342. package/source/components/datatable/stylesheet/namespace.mjs +0 -13
  343. package/source/components/events.mjs +0 -17
  344. package/source/components/form/events.mjs +0 -108
  345. package/source/components/form/namespace.mjs +0 -13
  346. package/source/components/form/stylesheet/namespace.mjs +0 -13
  347. package/source/components/form/types/namespace.mjs +0 -13
  348. package/source/components/form/util/namespace.mjs +0 -13
  349. package/source/components/host/events.mjs +0 -131
  350. package/source/components/host/namespace.mjs +0 -13
  351. package/source/components/host/stylesheet/namespace.mjs +0 -13
  352. package/source/components/layout/events.mjs +0 -30
  353. package/source/components/layout/namespace.mjs +0 -13
  354. package/source/components/namespace.mjs +0 -14
  355. package/source/components/notify/events.mjs +0 -15
  356. package/source/components/notify/namespace.mjs +0 -15
  357. package/source/components/notify/stylesheet/namespace.mjs +0 -15
  358. package/source/components/state/log/namespace.mjs +0 -13
  359. package/source/components/state/namespace.mjs +0 -13
  360. package/source/components/stylesheet/namespace.mjs +0 -13
  361. package/source/components/tree-menu/namespace.mjs +0 -13
  362. package/source/components/tree-menu/stylesheet/namespace.mjs +0 -13
  363. package/source/constraints/namespace.mjs +0 -13
  364. package/source/data/datasource/namespace.mjs +0 -13
  365. package/source/data/datasource/server/namespace.mjs +0 -13
  366. package/source/data/datasource/server/restapi/namespace.mjs +0 -13
  367. package/source/data/datasource/storage/namespace.mjs +0 -13
  368. package/source/data/namespace.mjs +0 -13
  369. package/source/dom/namespace.mjs +0 -13
  370. package/source/dom/resource/link/namespace.mjs +0 -13
  371. package/source/dom/resource/namespace.mjs +0 -13
  372. package/source/dom/util/namespace.mjs +0 -13
  373. package/source/dom/worker/namespace.mjs +0 -13
  374. package/source/i18n/namespace.mjs +0 -13
  375. package/source/i18n/providers/namespace.mjs +0 -13
  376. package/source/logging/handler/namespace.mjs +0 -11
  377. package/source/logging/namespace.mjs +0 -13
  378. package/source/math/namespace.mjs +0 -13
  379. package/source/net/namespace.mjs +0 -13
  380. package/source/net/webconnect/namespace.mjs +0 -13
  381. package/source/text/namespace.mjs +0 -13
  382. package/source/types/namespace.mjs +0 -13
  383. package/source/util/namespace.mjs +0 -13
@@ -8,28 +8,31 @@
8
8
  * For those who do not wish to adhere to the AGPLv3, a commercial license is available.
9
9
  * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
10
10
  * For more information about purchasing a commercial license, please contact schukai GmbH.
11
+ *
12
+ * SPDX-License-Identifier: AGPL-3.0
11
13
  */
12
- import {instanceSymbol} from "../../constants.mjs";
14
+
15
+ import { instanceSymbol } from "../../constants.mjs";
13
16
  import {
14
- addAttributeToken,
15
- removeAttributeToken,
17
+ addAttributeToken,
18
+ removeAttributeToken,
16
19
  } from "../../dom/attributes.mjs";
17
- import {ATTRIBUTE_ROLE} from "../../dom/constants.mjs";
20
+ import { ATTRIBUTE_ROLE } from "../../dom/constants.mjs";
18
21
  import {
19
- assembleMethodSymbol,
20
- registerCustomElement,
22
+ assembleMethodSymbol,
23
+ CustomElement,
24
+ registerCustomElement,
21
25
  } from "../../dom/customelement.mjs";
22
- import {fireCustomEvent} from "../../dom/events.mjs";
23
- import {getDocument} from "../../dom/util.mjs";
24
- import {DeadMansSwitch} from "../../util/deadmansswitch.mjs";
25
- import {Button} from "../form/button.mjs";
26
- import {STYLE_DISPLAY_MODE_BLOCK} from "../form/constants.mjs";
27
- import {positionPopper} from "../form/util/floating-ui.mjs";
28
- import {CustomControl} from "../../dom/customcontrol.mjs";
29
- import {PopperStyleSheet} from "./stylesheet/popper.mjs";
30
- import {isArray} from "../../types/is.mjs";
31
-
32
- export {Popper};
26
+ import { fireCustomEvent } from "../../dom/events.mjs";
27
+ import { getDocument } from "../../dom/util.mjs";
28
+ import { DeadMansSwitch } from "../../util/deadmansswitch.mjs";
29
+ import { STYLE_DISPLAY_MODE_BLOCK } from "../form/constants.mjs";
30
+ import { positionPopper } from "../form/util/floating-ui.mjs";
31
+ import { CustomControl } from "../../dom/customcontrol.mjs";
32
+ import { PopperStyleSheet } from "./stylesheet/popper.mjs";
33
+ import { isArray } from "../../types/is.mjs";
34
+
35
+ export { Popper };
33
36
 
34
37
  /**
35
38
  * @private
@@ -77,15 +80,6 @@ const popperElementSymbol = Symbol("popperElement");
77
80
  */
78
81
  const arrowElementSymbol = Symbol("arrowElement");
79
82
 
80
- /**
81
- * This action callback executes the actions when a button is clicked.
82
- *
83
- * @callback Monster.Components.Form~exampleActionCallback
84
- * @param {Event} e Event
85
- * @memberOf Monster.Components.Form
86
- * @this {CustomControl}
87
- */
88
-
89
83
  /**
90
84
  * A Popper is a floating UI element that can be shown or hidden.
91
85
  *
@@ -94,142 +88,153 @@ const arrowElementSymbol = Symbol("arrowElement");
94
88
  * @example /examples/components/layout/popper-simple
95
89
  * @example /examples/components/layout/popper-click
96
90
  *
97
- * @since 1.66.0
91
+ * @since 1.65.0
98
92
  * @copyright schukai GmbH
99
93
  * @summary A beautiful popper that can make your life easier and also looks good.
100
94
  * @fires monster-popper-hide fired when the popper is hide.
101
95
  * @fires monster-popper-hidden fired when the popper is hidden.
102
96
  * @fires monster-popper-open fired when the popper is open.
103
97
  * @fires monster-popper-opened fired when the popper is opened.
104
- *
105
98
  */
106
- class Popper extends CustomControl {
107
- /**
108
- * This method is called by the `instanceof` operator.
109
- * @returns {symbol}
110
- */
111
- static get [instanceSymbol]() {
112
- return Symbol.for("@schukai/monster/components/layout/popper@@instance");
113
- }
114
-
115
- /**
116
- * To set the options via the html tag the attribute `data-monster-options` must be used.
117
- * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
118
- *
119
- * The individual configuration values can be found in the table.
120
- *
121
- * @property {Object} templates The templates for the control.
122
- * @property {string} templates.main The main template.
123
- * @property {string} mode The mode of the popper. Possible values are `click`, `enter`, `manual`, `focus`, "auto" or a combination of them.
124
- * @property {string} content The content of the popper.
125
- * @property {object} popper The popper options.
126
- * @property {string} popper.placement The placement of the popper. Possible values are `top`, `bottom`, `left` and `right`.
127
- * @property {function[]} popper.middleware The middleware functions of the popper.
128
- * @property {function[]} popper.middlewareInit The middleware init functions of the popper.
129
- * @property {Object} features The features of the popper.
130
- * @property {boolean} features.preventPropagateOpenEvents Prevents the open event from being sent.
131
- */
132
- get defaults() {
133
- return Object.assign({}, super.defaults, {
134
- templates: {
135
- main: getTemplate(),
136
- },
137
- mode: "auto focus",
138
- content: "<slot></slot>",
139
- popper: {
140
- placement: "top",
141
- middleware: ["autoPlacement", "offset:10", "arrow"],
142
- },
143
- features: {
144
- preventOpenEventSent: false,
145
- },
146
- });
147
- }
148
-
149
- /**
150
- *
151
- * @return {Popper}
152
- */
153
- [assembleMethodSymbol]() {
154
- super[assembleMethodSymbol]();
155
- initControlReferences.call(this);
156
- initEventHandler.call(this);
157
-
158
- return this;
159
- }
160
-
161
- /**
162
- * @return {string}
163
- */
164
- static getTag() {
165
- return "monster-popper";
166
- }
167
-
168
- /**
169
- * @return {Array<CSSStyleSheet>}
170
- */
171
- static getCSSStyleSheet() {
172
- return [PopperStyleSheet];
173
- }
174
-
175
- /**
176
- * @return {void}
177
- */
178
- connectedCallback() {
179
- super.connectedCallback();
180
-
181
- const document = getDocument();
182
-
183
- for (const [, type] of Object.entries(["click", "touch"])) {
184
- // close on outside ui-events
185
- document.addEventListener(type, this[closeEventHandler]);
186
- }
187
-
188
- updatePopper.call(this);
189
- attachResizeObserver.call(this);
190
- }
191
-
192
- /**
193
- * @return {void}
194
- */
195
- disconnectedCallback() {
196
- super.disconnectedCallback();
197
-
198
- // close on outside ui-events
199
- for (const [, type] of Object.entries(["click", "touch"])) {
200
- document.removeEventListener(type, this[closeEventHandler]);
201
- }
202
-
203
- disconnectResizeObserver.call(this);
204
- }
205
-
206
- /**
207
- * @return {Popper}
208
- */
209
- showDialog() {
210
- show.call(this);
211
- return this;
212
- }
213
-
214
- /**
215
- * @return {Popper}
216
- */
217
- hideDialog() {
218
- hide.call(this);
219
- return this;
220
- }
221
-
222
- /**
223
- * @return {Popper}
224
- */
225
- toggleDialog() {
226
- if (this[popperElementSymbol].style.display === STYLE_DISPLAY_MODE_BLOCK) {
227
- this.hideDialog();
228
- } else {
229
- this.showDialog();
230
- }
231
- return this;
232
- }
99
+ class Popper extends CustomElement {
100
+ /**
101
+ * This method is called by the `instanceof` operator.
102
+ * @returns {symbol}
103
+ */
104
+ static get [instanceSymbol]() {
105
+ return Symbol.for("@schukai/monster/components/layout/popper@@instance");
106
+ }
107
+
108
+ /**
109
+ * To set the options via the html tag the attribute `data-monster-options` must be used.
110
+ * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
111
+ *
112
+ * The individual configuration values can be found in the table.
113
+ *
114
+ * @property {Object} templates The templates for the control.
115
+ * @property {string} templates.main The main template.
116
+ * @property {string} mode The mode of the popper. Possible values are `click`, `enter`, `manual`, `focus`, "auto" or a combination of them.
117
+ * @property {string} content The content of the popper.
118
+ * @property {object} popper The popper options.
119
+ * @property {string} popper.placement The placement of the popper. Possible values are `top`, `bottom`, `left` and `right`.
120
+ * @property {function[]} popper.middleware The middleware functions of the popper.
121
+ * @property {Object} features The features of the popper.
122
+ * @property {boolean} features.preventOpenEventSent Prevents the open event from being sent.
123
+ */
124
+ get defaults() {
125
+ return Object.assign({}, super.defaults, {
126
+ templates: {
127
+ main: getTemplate(),
128
+ },
129
+ mode: "auto focus",
130
+ content: "<slot></slot>",
131
+ popper: {
132
+ placement: "top",
133
+ middleware: ["autoPlacement", "offset:10", "arrow"],
134
+ },
135
+ features: {
136
+ preventOpenEventSent: false,
137
+ },
138
+ });
139
+ }
140
+
141
+ /**
142
+ * This method is called by the `connectedCallback` method on the first call.
143
+ *
144
+ * @return {Void}
145
+ */
146
+ [assembleMethodSymbol]() {
147
+ super[assembleMethodSymbol]();
148
+ initControlReferences.call(this);
149
+ initEventHandler.call(this);
150
+ }
151
+
152
+ /**
153
+ * This method returns the tag name of the element.
154
+ *
155
+ * @return {string}
156
+ */
157
+ static getTag() {
158
+ return "monster-popper";
159
+ }
160
+
161
+ /**
162
+ * This method returns the css styles of the element.
163
+ *
164
+ * @return {CSSStyleSheet[]}
165
+ */
166
+ static getCSSStyleSheet() {
167
+ return [PopperStyleSheet];
168
+ }
169
+
170
+ /**
171
+ * This method is called when the element is connected to the dom.
172
+ *
173
+ * @return {void}
174
+ */
175
+ connectedCallback() {
176
+ super.connectedCallback();
177
+
178
+ const document = getDocument();
179
+
180
+ for (const [, type] of Object.entries(["click", "touch"])) {
181
+ // close on outside ui-events
182
+ document.addEventListener(type, this[closeEventHandler]);
183
+ }
184
+
185
+ updatePopper.call(this);
186
+ attachResizeObserver.call(this);
187
+ }
188
+
189
+ /**
190
+ * This method is called when the element is disconnected from the dom.
191
+ *
192
+ * @return {void}
193
+ */
194
+ disconnectedCallback() {
195
+ super.disconnectedCallback();
196
+
197
+ // close on outside ui-events
198
+ for (const [, type] of Object.entries(["click", "touch"])) {
199
+ document.removeEventListener(type, this[closeEventHandler]);
200
+ }
201
+
202
+ disconnectResizeObserver.call(this);
203
+ }
204
+
205
+ /**
206
+ * With this method you can show the popper.
207
+ *
208
+ * @return {Popper}
209
+ */
210
+ showDialog() {
211
+ show.call(this);
212
+ return this;
213
+ }
214
+
215
+ /**
216
+ * With this method you can hide the popper.
217
+ *
218
+ * @return {Popper}
219
+ */
220
+ hideDialog() {
221
+ hide.call(this);
222
+ return this;
223
+ }
224
+
225
+ /**
226
+ * With this method you can toggle the popper.
227
+ *
228
+ * @return {Popper}
229
+ */
230
+ toggleDialog() {
231
+ if (this[popperElementSymbol].style.display === STYLE_DISPLAY_MODE_BLOCK) {
232
+ this.hideDialog();
233
+ } else {
234
+ this.showDialog();
235
+ }
236
+ return this;
237
+ }
233
238
  }
234
239
 
235
240
  /**
@@ -237,38 +242,38 @@ class Popper extends CustomControl {
237
242
  * @return {Popper}
238
243
  */
239
244
  function initEventHandler() {
240
- this[closeEventHandler] = (event) => {
241
- const path = event.composedPath();
242
-
243
- for (const [, element] of Object.entries(path)) {
244
- if (element === this) {
245
- return;
246
- }
247
- }
248
- hide.call(this);
249
- };
250
-
251
- let modes = null;
252
- const modeOption = this.getOption("mode");
253
-
254
- if (typeof modeOption === "string") {
255
- modes = modeOption.split(" ");
256
- }
257
-
258
- if (
259
- modes === null ||
260
- modes === undefined ||
261
- isArray(modes) === false ||
262
- modes.length === 0
263
- ) {
264
- modes = ["manual"];
265
- }
266
-
267
- for (const [, mode] of Object.entries(modes)) {
268
- initEventHandlerByMode.call(this, mode);
269
- }
270
-
271
- return this;
245
+ this[closeEventHandler] = (event) => {
246
+ const path = event.composedPath();
247
+
248
+ for (const [, element] of Object.entries(path)) {
249
+ if (element === this) {
250
+ return;
251
+ }
252
+ }
253
+ hide.call(this);
254
+ };
255
+
256
+ let modes = null;
257
+ const modeOption = this.getOption("mode");
258
+
259
+ if (typeof modeOption === "string") {
260
+ modes = modeOption.split(" ");
261
+ }
262
+
263
+ if (
264
+ modes === null ||
265
+ modes === undefined ||
266
+ isArray(modes) === false ||
267
+ modes.length === 0
268
+ ) {
269
+ modes = ["manual"];
270
+ }
271
+
272
+ for (const [, mode] of Object.entries(modes)) {
273
+ initEventHandlerByMode.call(this, mode);
274
+ }
275
+
276
+ return this;
272
277
  }
273
278
 
274
279
  /**
@@ -278,160 +283,159 @@ function initEventHandler() {
278
283
  * @throws Error
279
284
  */
280
285
  function initEventHandlerByMode(mode) {
281
- switch (mode) {
282
- case "manual":
283
- break;
284
-
285
- case "focus":
286
- this[buttonElementSymbol].addEventListener("focus", (event) => {
287
- if (this.getOption("features.preventOpenEventSent") === true) {
288
- event.preventDefault();
289
- }
290
- this.showDialog();
291
- });
292
- this[buttonElementSymbol].addEventListener("blur", (event) => {
293
- if (this.getOption("features.preventOpenEventSent") === true) {
294
- event.preventDefault();
295
- }
296
- this.hideDialog();
297
- });
298
- break;
299
-
300
- case "click":
301
- this[buttonElementSymbol].addEventListener("click", (event) => {
302
- if (this.getOption("features.preventOpenEventSent") === true) {
303
- event.preventDefault();
304
- }
305
- this.toggleDialog();
306
- });
307
- break;
308
- case "enter":
309
- this[buttonElementSymbol].addEventListener("mouseenter", (event) => {
310
- if (this.getOption("features.preventOpenEventSent") === true) {
311
- event.preventDefault();
312
- }
313
- this.showDialog();
314
- });
315
- break;
316
-
317
- case "auto": // is hover
318
- this[buttonElementSymbol].addEventListener("mouseenter", (event) => {
319
- if (this.getOption("features.preventOpenEventSent") === true) {
320
- event.preventDefault();
321
- }
322
- this.showDialog();
323
- });
324
- this[buttonElementSymbol].addEventListener("mouseleave", (event) => {
325
- if (this.getOption("features.preventOpenEventSent") === true) {
326
- event.preventDefault();
327
- }
328
- this.hideDialog();
329
- });
330
- break;
331
- default:
332
- throw new Error(`Unknown mode ${mode}`);
333
- }
286
+ switch (mode) {
287
+ case "manual":
288
+ break;
289
+
290
+ case "focus":
291
+ this[buttonElementSymbol].addEventListener("focus", (event) => {
292
+ if (this.getOption("features.preventOpenEventSent") === true) {
293
+ event.preventDefault();
294
+ }
295
+ this.showDialog();
296
+ });
297
+ this[buttonElementSymbol].addEventListener("blur", (event) => {
298
+ if (this.getOption("features.preventOpenEventSent") === true) {
299
+ event.preventDefault();
300
+ }
301
+ this.hideDialog();
302
+ });
303
+ break;
304
+
305
+ case "click":
306
+ this[buttonElementSymbol].addEventListener("click", (event) => {
307
+ if (this.getOption("features.preventOpenEventSent") === true) {
308
+ event.preventDefault();
309
+ }
310
+ this.toggleDialog();
311
+ });
312
+ break;
313
+ case "enter":
314
+ this[buttonElementSymbol].addEventListener("mouseenter", (event) => {
315
+ if (this.getOption("features.preventOpenEventSent") === true) {
316
+ event.preventDefault();
317
+ }
318
+ this.showDialog();
319
+ });
320
+ break;
321
+
322
+ case "auto": // is hover
323
+ this[buttonElementSymbol].addEventListener("mouseenter", (event) => {
324
+ if (this.getOption("features.preventOpenEventSent") === true) {
325
+ event.preventDefault();
326
+ }
327
+ this.showDialog();
328
+ });
329
+ this[buttonElementSymbol].addEventListener("mouseleave", (event) => {
330
+ if (this.getOption("features.preventOpenEventSent") === true) {
331
+ event.preventDefault();
332
+ }
333
+ this.hideDialog();
334
+ });
335
+ break;
336
+ default:
337
+ throw new Error(`Unknown mode ${mode}`);
338
+ }
334
339
  }
335
340
 
336
341
  /**
337
342
  * @private
338
343
  */
339
344
  function attachResizeObserver() {
340
- // against flickering
341
- this[resizeObserverSymbol] = new ResizeObserver((entries) => {
342
- if (this[timerCallbackSymbol] instanceof DeadMansSwitch) {
343
- try {
344
- this[timerCallbackSymbol].touch();
345
- return;
346
- } catch (e) {
347
- delete this[timerCallbackSymbol];
348
- }
349
- }
350
-
351
- this[timerCallbackSymbol] = new DeadMansSwitch(200, () => {
352
- updatePopper.call(this);
353
- });
354
- });
355
-
356
- this[resizeObserverSymbol].observe(this.parentElement);
345
+ // against flickering
346
+ this[resizeObserverSymbol] = new ResizeObserver((entries) => {
347
+ if (this[timerCallbackSymbol] instanceof DeadMansSwitch) {
348
+ try {
349
+ this[timerCallbackSymbol].touch();
350
+ return;
351
+ } catch (e) {
352
+ delete this[timerCallbackSymbol];
353
+ }
354
+ }
355
+
356
+ this[timerCallbackSymbol] = new DeadMansSwitch(200, () => {
357
+ updatePopper.call(this);
358
+ });
359
+ });
360
+
361
+ this[resizeObserverSymbol].observe(this.parentElement);
357
362
  }
358
363
 
359
364
  function disconnectResizeObserver() {
360
- if (this[resizeObserverSymbol] instanceof ResizeObserver) {
361
- this[resizeObserverSymbol].disconnect();
362
- }
365
+ if (this[resizeObserverSymbol] instanceof ResizeObserver) {
366
+ this[resizeObserverSymbol].disconnect();
367
+ }
363
368
  }
364
369
 
365
370
  /**
366
371
  * @private
367
372
  */
368
373
  function hide() {
369
- const self = this;
374
+ const self = this;
370
375
 
371
- fireCustomEvent(self, "monster-popper-hide", {
372
- self,
373
- });
376
+ fireCustomEvent(self, "monster-popper-hide", {
377
+ self,
378
+ });
374
379
 
375
- self[popperElementSymbol].style.display = "none";
376
- removeAttributeToken(self[controlElementSymbol], "class", "open");
380
+ self[popperElementSymbol].style.display = "none";
381
+ removeAttributeToken(self[controlElementSymbol], "class", "open");
377
382
 
378
- setTimeout(() => {
379
- fireCustomEvent(self, "monster-popper-hidden", {
380
- self,
381
- });
382
- }, 0);
383
+ setTimeout(() => {
384
+ fireCustomEvent(self, "monster-popper-hidden", {
385
+ self,
386
+ });
387
+ }, 0);
383
388
  }
384
389
 
385
390
  /**
386
391
  * @private
387
- * @this PopperButton
388
392
  */
389
393
  function show() {
390
- const self = this;
394
+ const self = this;
391
395
 
392
- if (self.getOption("disabled", false) === true) {
393
- return;
394
- }
396
+ if (self.getOption("disabled", false) === true) {
397
+ return;
398
+ }
395
399
 
396
- if (self[popperElementSymbol].style.display === STYLE_DISPLAY_MODE_BLOCK) {
397
- return;
398
- }
400
+ if (self[popperElementSymbol].style.display === STYLE_DISPLAY_MODE_BLOCK) {
401
+ return;
402
+ }
399
403
 
400
- fireCustomEvent(self, "monster-popper-open", {
401
- self,
402
- });
404
+ fireCustomEvent(self, "monster-popper-open", {
405
+ self,
406
+ });
403
407
 
404
- self[popperElementSymbol].style.visibility = "hidden";
405
- self[popperElementSymbol].style.display = STYLE_DISPLAY_MODE_BLOCK;
408
+ self[popperElementSymbol].style.visibility = "hidden";
409
+ self[popperElementSymbol].style.display = STYLE_DISPLAY_MODE_BLOCK;
406
410
 
407
- addAttributeToken(self[controlElementSymbol], "class", "open");
408
- updatePopper.call(self);
411
+ addAttributeToken(self[controlElementSymbol], "class", "open");
412
+ updatePopper.call(self);
409
413
 
410
- setTimeout(() => {
411
- fireCustomEvent(self, "monster-popper-opened", {
412
- self,
413
- });
414
- }, 0);
414
+ setTimeout(() => {
415
+ fireCustomEvent(self, "monster-popper-opened", {
416
+ self,
417
+ });
418
+ }, 0);
415
419
  }
416
420
 
417
421
  /**
418
422
  * @private
419
423
  */
420
424
  function updatePopper() {
421
- if (this[popperElementSymbol].style.display !== STYLE_DISPLAY_MODE_BLOCK) {
422
- return;
423
- }
424
-
425
- if (this.getOption("disabled", false) === true) {
426
- return;
427
- }
428
-
429
- positionPopper.call(
430
- this,
431
- this[controlElementSymbol],
432
- this[popperElementSymbol],
433
- this.getOption("popper", {}),
434
- );
425
+ if (this[popperElementSymbol].style.display !== STYLE_DISPLAY_MODE_BLOCK) {
426
+ return;
427
+ }
428
+
429
+ if (this.getOption("disabled", false) === true) {
430
+ return;
431
+ }
432
+
433
+ positionPopper.call(
434
+ this,
435
+ this[controlElementSymbol],
436
+ this[popperElementSymbol],
437
+ this.getOption("popper", {}),
438
+ );
435
439
  }
436
440
 
437
441
  /**
@@ -439,19 +443,19 @@ function updatePopper() {
439
443
  * @return {Popper}
440
444
  */
441
445
  function initControlReferences() {
442
- this[controlElementSymbol] = this.shadowRoot.querySelector(
443
- `[${ATTRIBUTE_ROLE}=control]`,
444
- );
445
- this[buttonElementSymbol] = this.shadowRoot.querySelector(
446
- `[${ATTRIBUTE_ROLE}=button]`,
447
- );
448
- this[popperElementSymbol] = this.shadowRoot.querySelector(
449
- `[${ATTRIBUTE_ROLE}=popper]`,
450
- );
451
- this[arrowElementSymbol] = this.shadowRoot.querySelector(
452
- `[${ATTRIBUTE_ROLE}=arrow]`,
453
- );
454
- return this;
446
+ this[controlElementSymbol] = this.shadowRoot.querySelector(
447
+ `[${ATTRIBUTE_ROLE}=control]`,
448
+ );
449
+ this[buttonElementSymbol] = this.shadowRoot.querySelector(
450
+ `[${ATTRIBUTE_ROLE}=button]`,
451
+ );
452
+ this[popperElementSymbol] = this.shadowRoot.querySelector(
453
+ `[${ATTRIBUTE_ROLE}=popper]`,
454
+ );
455
+ this[arrowElementSymbol] = this.shadowRoot.querySelector(
456
+ `[${ATTRIBUTE_ROLE}=arrow]`,
457
+ );
458
+ return this;
455
459
  }
456
460
 
457
461
  /**
@@ -459,8 +463,8 @@ function initControlReferences() {
459
463
  * @return {string}
460
464
  */
461
465
  function getTemplate() {
462
- // language=HTML
463
- return `
466
+ // language=HTML
467
+ return `
464
468
  <div data-monster-role="control" part="control">
465
469
  <slot name="button" data-monster-role="button"></slot>
466
470