@schukai/monster 3.65.0 → 3.65.21

Sign up to get free protection for your applications and to get access to all the features.
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