u2ui 1.0.1 → 1.4.6

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 (591) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +36 -36
  3. package/attr/behavior/README.md +6 -4
  4. package/attr/behavior/behavior.js +265 -261
  5. package/attr/behavior/manifest.json +42 -42
  6. package/attr/confirm/README.md +8 -8
  7. package/attr/confirm/confirm.js +87 -90
  8. package/attr/confirm/manifest.json +42 -42
  9. package/attr/disableif/README.md +37 -0
  10. package/attr/disableif/disableif.js +59 -0
  11. package/attr/disableif/manifest.json +38 -0
  12. package/attr/draghandle/README.md +15 -15
  13. package/attr/draghandle/draghandle.js +24 -42
  14. package/attr/draghandle/manifest.json +30 -0
  15. package/attr/dropzone/README.md +32 -0
  16. package/attr/dropzone/dropzone.js +485 -0
  17. package/attr/dropzone/manifest.json +36 -0
  18. package/attr/focusgroup/README.md +9 -9
  19. package/attr/focusgroup/focusgroup.js +97 -100
  20. package/attr/focusgroup/manifest.json +30 -38
  21. package/attr/href/README.md +5 -5
  22. package/attr/href/href.js +50 -42
  23. package/attr/href/manifest.json +42 -42
  24. package/attr/intersect/README.md +15 -15
  25. package/attr/intersect/intersect.js +98 -98
  26. package/attr/intersect/manifest.json +44 -57
  27. package/attr/lightbox/README.md +27 -0
  28. package/attr/lightbox/lightbox.js +120 -0
  29. package/attr/lightbox/manifest.json +29 -0
  30. package/attr/movable/README.md +27 -0
  31. package/attr/movable/manifest.json +47 -0
  32. package/attr/movable/movable.js +111 -0
  33. package/attr/navigable/README.md +9 -9
  34. package/attr/navigable/TargetObserver.js +90 -91
  35. package/attr/navigable/U2TargetObserver.js +75 -75
  36. package/attr/navigable/manifest.json +34 -42
  37. package/attr/navigable/navigable.js +85 -87
  38. package/attr/parallax/README.md +10 -10
  39. package/attr/parallax/manifest.json +36 -0
  40. package/attr/parallax/parallax.js +119 -119
  41. package/attr/scrollspy/README.md +43 -0
  42. package/attr/scrollspy/manifest.json +28 -0
  43. package/attr/scrollspy/scrollspy.js +85 -0
  44. package/attr/selectable/README.md +42 -0
  45. package/attr/selectable/SelectionManager.js +171 -0
  46. package/attr/selectable/manifest.json +33 -0
  47. package/attr/selectable/selectable.js +28 -0
  48. package/attr/skin/README.md +15 -16
  49. package/attr/skin/manifest.json +40 -0
  50. package/attr/skin/skin.css +49 -50
  51. package/attr/store/README.md +41 -0
  52. package/attr/store/manifest.json +28 -0
  53. package/attr/store/store.js +62 -0
  54. package/class/badge/README.md +2 -2
  55. package/class/badge/badge.css +34 -34
  56. package/class/card/README.md +51 -0
  57. package/class/card/card.css +31 -0
  58. package/class/flex/README.md +16 -16
  59. package/class/flex/flex.css +15 -25
  60. package/class/grid/README.md +18 -18
  61. package/class/grid/grid.css +38 -40
  62. package/class/reset/README.md +6 -6
  63. package/class/reset/reset.css +8 -8
  64. package/class/table/README.md +22 -21
  65. package/class/table/table.css +125 -125
  66. package/class/unstyle/README.md +7 -5
  67. package/class/unstyle/unstyle.css +15 -12
  68. package/class/width/README.md +18 -18
  69. package/class/width/width.css +21 -22
  70. package/css/README.md +11 -0
  71. package/css/base/README.md +8 -2
  72. package/css/base/base.css +153 -127
  73. package/css/base/beta.css +34 -50
  74. package/css/base/full.css +5 -5
  75. package/css/base/nomotion.css +8 -8
  76. package/css/base/print.css +36 -36
  77. package/css/classless/README.md +10 -4
  78. package/css/classless/aria.css +51 -64
  79. package/css/classless/classless.css +118 -124
  80. package/css/classless/full.css +11 -11
  81. package/css/classless/more.css +314 -340
  82. package/css/classless/simple.css +314 -103
  83. package/css/classless/snippeds/a/icons.css +66 -12
  84. package/css/classless/snippeds/a/tests.html +118 -0
  85. package/css/classless/snippeds/blockquote/big-quotes.css +36 -0
  86. package/css/classless/snippeds/blockquote/tests.html +62 -0
  87. package/css/classless/snippeds/button/square.css +22 -0
  88. package/css/classless/snippeds/button/tests.html +53 -0
  89. package/css/classless/snippeds/experiments/aria-header-nav-dropdown.css +46 -0
  90. package/css/classless/snippeds/hr/gradient.css +2 -2
  91. package/css/classless/snippeds/hr/section_sign.css +16 -16
  92. package/css/classless/snippeds/hr/tests.html +49 -49
  93. package/css/classless/snippeds/p/indent.css +9 -0
  94. package/css/classless/snippeds/p/initial.css +9 -0
  95. package/css/classless/snippeds/p/tests.html +60 -0
  96. package/css/classless/variables.css +132 -99
  97. package/css/norm/README.md +7 -1
  98. package/css/norm/beta.css +41 -39
  99. package/css/norm/norm.css +89 -98
  100. package/css/norm/oldies.css +71 -60
  101. package/css/{classes → utils}/README.md +10 -4
  102. package/css/{classes/classes.css → utils/utils.css} +78 -78
  103. package/el/accordion/README.md +60 -59
  104. package/el/accordion/accordion.css +11 -7
  105. package/el/accordion/accordion.js +211 -258
  106. package/el/accordion/manifest.json +44 -57
  107. package/el/alert/README.md +86 -67
  108. package/el/alert/alert.css +72 -73
  109. package/el/alert/alert.js +206 -187
  110. package/el/alert/manifest.json +59 -77
  111. package/el/breadcrumb/README.md +41 -0
  112. package/el/breadcrumb/breadcrumb.css +22 -0
  113. package/el/breadcrumb/breadcrumb.js +119 -0
  114. package/el/breadcrumb/manifest.json +42 -0
  115. package/el/buttongroup/README.md +36 -36
  116. package/el/buttongroup/buttongroup.css +38 -30
  117. package/el/buttongroup/buttongroup.js +68 -56
  118. package/el/buttongroup/manifest.json +28 -0
  119. package/el/bytes/README.md +4 -4
  120. package/el/bytes/bytes.css +6 -6
  121. package/el/bytes/bytes.js +98 -97
  122. package/el/bytes/manifest.json +90 -95
  123. package/el/calendar/README.md +64 -0
  124. package/el/calendar/calendar.css +36 -0
  125. package/el/calendar/calendar.js +391 -0
  126. package/el/calendar/ext/drag.js +69 -0
  127. package/el/calendar/ext/keyNavigation.js +101 -0
  128. package/el/calendar/manifest.json +69 -0
  129. package/el/carousel/README.md +14 -14
  130. package/el/carousel/carousel.css +45 -46
  131. package/el/carousel/carousel.js +398 -371
  132. package/el/carousel/manifest.json +44 -58
  133. package/el/carousel-nav/README.md +13 -14
  134. package/el/carousel-nav/carousel-nav.js +74 -74
  135. package/el/carousel-nav/manifest.json +31 -0
  136. package/el/chart/README.md +46 -0
  137. package/el/chart/chart.css +7 -0
  138. package/el/chart/chart.js +188 -0
  139. package/el/chart/engines/apexcharts.js +103 -0
  140. package/el/chart/engines/billboard.js +79 -0
  141. package/el/chart/engines/chart.js.js +32 -0
  142. package/el/chart/engines/chartist.js +74 -0
  143. package/el/chart/engines/echarts.js +65 -0
  144. package/el/chart/engines/frappe.js +49 -0
  145. package/el/chart/engines/nvd3.js +139 -0
  146. package/el/chart/engines/plotly.js +73 -0
  147. package/el/chart/manifest.json +54 -0
  148. package/el/code/README.md +21 -21
  149. package/el/code/code.css +46 -46
  150. package/el/code/code.js +291 -289
  151. package/el/code/manifest.json +59 -66
  152. package/el/cookiebanner/README.md +70 -0
  153. package/el/cookiebanner/cookiebanner.css +42 -0
  154. package/el/cookiebanner/cookiebanner.js +161 -0
  155. package/el/cookiebanner/extensions/googleConsentMode.js +36 -0
  156. package/el/cookiebanner/knownItems.js +291 -0
  157. package/el/cookiebanner/manifest.json +85 -0
  158. package/el/cookiebanner/ui.js +426 -0
  159. package/el/copy/README.md +9 -7
  160. package/el/copy/copy.css +3 -3
  161. package/el/copy/copy.js +89 -117
  162. package/el/copy/manifest.json +37 -49
  163. package/el/counter/README.md +12 -9
  164. package/el/counter/counter.css +8 -8
  165. package/el/counter/counter.js +96 -95
  166. package/el/counter/manifest.json +50 -59
  167. package/el/drawer/README.md +35 -0
  168. package/el/drawer/drawer.css +77 -0
  169. package/el/drawer/drawer.js +166 -0
  170. package/el/drawer/manifest.json +27 -0
  171. package/el/fields/README.md +34 -0
  172. package/el/fields/fields.css +5 -0
  173. package/el/fields/fields.js +133 -0
  174. package/el/fields/manifest.json +32 -0
  175. package/el/ico/README.md +119 -118
  176. package/el/ico/debug.js +86 -0
  177. package/el/ico/font/Font Awesome.css +22 -22
  178. package/el/ico/font/LigatureSymbols.css +7 -7
  179. package/el/ico/font/Material Icons.css +6 -6
  180. package/el/ico/font/RemixFilled.css +8 -8
  181. package/el/ico/font/RemixOutlined.css +8 -8
  182. package/el/ico/font/old/anicons.css +31 -31
  183. package/el/ico/font/old/devicons.css +210 -210
  184. package/el/ico/font/old/material.all.css +36 -36
  185. package/el/ico/font/old/remix.css +15 -15
  186. package/el/ico/font/old/utf8.css +54 -54
  187. package/el/ico/ico.css +122 -110
  188. package/el/ico/ico.js +163 -189
  189. package/el/ico/manifest.json +68 -86
  190. package/el/input/README.md +41 -39
  191. package/el/input/input.css +95 -35
  192. package/el/input/input.js +682 -331
  193. package/el/input/manifest.json +54 -0
  194. package/el/maintitlebar/README.md +39 -0
  195. package/el/maintitlebar/maintitlebar.css +40 -0
  196. package/el/maintitlebar/maintitlebar.js +17 -0
  197. package/el/maintitlebar/manifest.json +32 -0
  198. package/el/masonry/README.md +19 -19
  199. package/el/masonry/manifest.json +49 -60
  200. package/el/masonry/masonry.css +27 -27
  201. package/el/masonry/masonry.js +93 -92
  202. package/el/menubutton/README.md +39 -0
  203. package/el/menubutton/manifest.json +44 -0
  204. package/el/{splitbutton/splitbutton.css → menubutton/menubutton.css} +51 -47
  205. package/el/menubutton/menubutton.js +90 -0
  206. package/el/number/README.md +9 -6
  207. package/el/number/manifest.json +162 -121
  208. package/el/number/number.css +6 -6
  209. package/el/number/number.js +67 -67
  210. package/el/out/README.md +5 -5
  211. package/el/out/manifest.json +26 -38
  212. package/el/out/out.css +2 -2
  213. package/el/out/out.js +42 -59
  214. package/el/pagination/README.md +32 -0
  215. package/el/pagination/manifest.json +47 -0
  216. package/el/pagination/pagination.css +27 -0
  217. package/el/pagination/pagination.js +147 -0
  218. package/el/parallax-bg/README.md +26 -6
  219. package/el/parallax-bg/manifest.json +32 -0
  220. package/el/parallax-bg/parallax-bg.css +13 -13
  221. package/el/parallax-bg/parallax-bg.js +197 -186
  222. package/el/qrcode/README.md +7 -7
  223. package/el/qrcode/manifest.json +32 -43
  224. package/el/qrcode/package.json +22 -22
  225. package/el/qrcode/qrcode.css +13 -13
  226. package/el/qrcode/qrcode.js +53 -45
  227. package/el/rating/README.md +9 -20
  228. package/el/rating/manifest.json +52 -65
  229. package/el/rating/rating.css +10 -10
  230. package/el/rating/rating.js +148 -139
  231. package/el/responsive/README.md +43 -0
  232. package/el/responsive/manifest.json +41 -0
  233. package/el/responsive/responsive.css +4 -0
  234. package/el/responsive/responsive.js +143 -0
  235. package/el/rte/README.md +10 -10
  236. package/el/rte/manifest.json +33 -0
  237. package/el/rte/rte.css +9 -9
  238. package/el/rte/rte.js +56 -56
  239. package/el/skeleton/README.md +3 -3
  240. package/el/skeleton/manifest.json +37 -51
  241. package/el/skeleton/skeleton.css +67 -60
  242. package/el/skeleton/skeleton.js +71 -72
  243. package/el/splitpanel/README.md +33 -13
  244. package/el/splitpanel/manifest.json +36 -49
  245. package/el/splitpanel/splitpanel.css +20 -17
  246. package/el/splitpanel/splitpanel.js +117 -116
  247. package/el/spot/README.md +36 -0
  248. package/el/spot/manifest.json +55 -0
  249. package/el/spot/spot.css +23 -0
  250. package/el/spot/spot.js +106 -0
  251. package/el/system/README.md +29 -0
  252. package/el/system/demoHtml.html +660 -0
  253. package/el/system/manifest.json +32 -0
  254. package/el/system/styler.js +661 -0
  255. package/el/system/system.js +84 -0
  256. package/el/table/README.md +80 -68
  257. package/el/table/ext/autoFormatTable.js +228 -0
  258. package/el/table/manifest.json +32 -43
  259. package/el/table/table.css +4 -59
  260. package/el/table/table.js +468 -194
  261. package/el/tabs/README.md +17 -17
  262. package/el/tabs/manifest.json +44 -59
  263. package/el/tabs/tabs.css +22 -22
  264. package/el/tabs/tabs.js +192 -210
  265. package/el/textfit/README.md +7 -7
  266. package/el/textfit/manifest.json +33 -45
  267. package/el/textfit/textfit.css +5 -5
  268. package/el/textfit/textfit.js +80 -80
  269. package/el/time/README.md +6 -5
  270. package/el/time/manifest.json +79 -118
  271. package/el/time/time.js +179 -168
  272. package/el/toc/README.md +27 -0
  273. package/el/toc/manifest.json +36 -0
  274. package/el/toc/toc.css +3 -0
  275. package/el/toc/toc.js +87 -0
  276. package/el/tooltip/README.md +13 -10
  277. package/el/tooltip/manifest.json +56 -69
  278. package/el/tooltip/tooltip.css +100 -97
  279. package/el/tooltip/tooltip.js +146 -82
  280. package/el/tree/README.md +133 -0
  281. package/el/tree/ext/dnd.js +53 -0
  282. package/el/tree/ext/item.js +35 -0
  283. package/el/tree/manifest.json +61 -0
  284. package/el/tree/tree.css +18 -0
  285. package/el/tree/tree.js +236 -0
  286. package/el/typewriter/README.md +11 -11
  287. package/el/typewriter/manifest.json +45 -66
  288. package/el/typewriter/typewriter.css +6 -6
  289. package/el/typewriter/typewriter.js +161 -166
  290. package/el/video/README.md +37 -0
  291. package/el/video/manifest.json +96 -0
  292. package/el/video/video.js +550 -0
  293. package/js/Placer/Placer.js +156 -156
  294. package/js/Placer/README.md +14 -16
  295. package/js/PointerObserver/PointerObserver-no-scroll.js +146 -0
  296. package/js/PointerObserver/PointerObserver.js +161 -130
  297. package/js/PointerObserver/README.md +6 -7
  298. package/js/SelectorObserver/README.md +9 -9
  299. package/js/SelectorObserver/SelectorObserver.js +199 -200
  300. package/js/Tour/README.md +56 -0
  301. package/js/Tour/Tour.js +156 -0
  302. package/js/contextmenu/README.md +6 -31
  303. package/js/contextmenu/contextmenu.js +338 -336
  304. package/js/dialog/README.md +8 -7
  305. package/js/dialog/dialog.js +228 -261
  306. package/js/drag/README.md +28 -0
  307. package/js/drag/drag.js +38 -0
  308. package/js/drag/indicateDrop.js +80 -0
  309. package/js/loading/README.md +24 -0
  310. package/js/loading/loading.js +139 -0
  311. package/js/navigator/README.md +26 -0
  312. package/js/navigator/navigator.js +430 -0
  313. package/js/navigator/url-change-event.js +29 -0
  314. package/js/rte/README.md +13 -14
  315. package/js/rte/old/NodeCleaner.js +315 -315
  316. package/js/rte/old/Rte/Rte.ui.mjs +154 -154
  317. package/js/rte/old/Rte/index.mjs +5 -5
  318. package/js/rte/old/Rte/main.css +189 -189
  319. package/js/rte/old/old.rte.js +131 -131
  320. package/js/rte/old/range-selection.old.js +394 -394
  321. package/js/rte/rte.js +7 -7
  322. package/js/rte/src/behavior.js +228 -228
  323. package/js/rte/src/events.js +73 -73
  324. package/js/rte/src/fixes.js +250 -250
  325. package/js/rte/src/range.js +469 -472
  326. package/js/rte/src/rte.js +71 -71
  327. package/js/rte/src/ui/items/ai.js +166 -167
  328. package/js/rte/src/ui/items/code.js +93 -93
  329. package/js/rte/src/ui/items/undo.js +183 -183
  330. package/js/rte/src/ui.items.js +6 -7
  331. package/js/rte/src/ui.js +268 -268
  332. package/js/rte/src/util/indentHtml.js +21 -15
  333. package/js/serviceWorker/README.md +17 -0
  334. package/js/serviceWorker/serviceWorker.js +84 -0
  335. package/js/serviceWorker/sw.js +221 -0
  336. package/js/shortcut/README.md +6 -6
  337. package/js/shortcut/shortcut.js +53 -89
  338. package/package.json +2 -4
  339. package/theme/brutalist/README.md +10 -0
  340. package/theme/brutalist/theme.css +98 -0
  341. package/theme/elegance/README.md +10 -0
  342. package/theme/elegance/theme.css +120 -0
  343. package/theme/luxury/README.md +10 -0
  344. package/theme/luxury/theme.css +107 -0
  345. package/theme/minimalism/README.md +10 -0
  346. package/theme/minimalism/theme.css +103 -0
  347. package/theme/natur/README.md +10 -0
  348. package/theme/natur/theme.css +101 -0
  349. package/theme/pastell/README.md +10 -0
  350. package/theme/pastell/theme.css +99 -0
  351. package/theme/pop/README.md +10 -0
  352. package/theme/pop/theme.css +101 -0
  353. package/theme/prompt.css +175 -0
  354. package/theme/retro/README.md +10 -0
  355. package/theme/retro/theme.css +99 -0
  356. package/theme/soft/README.md +10 -0
  357. package/theme/soft/theme.css +84 -0
  358. package/theme/tech/README.md +10 -0
  359. package/theme/tech/theme.css +98 -0
  360. package/theme/test/README.md +10 -0
  361. package/theme/test/theme.css +109 -0
  362. package/theme/test.html +284 -0
  363. package/theme/tmp/README.md +10 -0
  364. package/theme/tmp/theme.css +323 -0
  365. package/u2/auto.js +151 -161
  366. package/u2/auto.ui.js +82 -85
  367. package/u2/plan-scoped-refactoring.md +236 -0
  368. package/u2/projects.json +757 -467
  369. package/u2/tools/baseElement.js +217 -95
  370. package/u2/tools/baseElement.test.html +139 -119
  371. package/u2/tools/ce-inspector.js +307 -307
  372. package/u2/tools/ce-inspector.test.html +67 -65
  373. package/u2/tools/ce-manfest-from-element.js +207 -207
  374. package/u2/tools/dev-iframe.js +212 -213
  375. package/u2/tools/dev-iframe.test.html +72 -74
  376. package/u2/tools/eventsExplorer.js +102 -101
  377. package/u2/tools/logo/u1.svg +9 -9
  378. package/u2/tools/promiseElementById.js +14 -0
  379. package/u2/tools/update.repos.json.js +259 -234
  380. package/u2/tools/update.skill.js +176 -0
  381. package/u2/tools/variable-styler.js +317 -0
  382. package/u2/u2.js +30 -14
  383. package/u2/utils.js +61 -59
  384. package/.htaccess +0 -7
  385. package/attr/behavior/tests/minimal.html +0 -19
  386. package/attr/behavior/tests/test.html +0 -98
  387. package/attr/confirm/tests/minimal.html +0 -23
  388. package/attr/confirm/tests/test.html +0 -79
  389. package/attr/draghandle/tests/minimal.html +0 -44
  390. package/attr/focusgroup/tests/minimal.html +0 -27
  391. package/attr/focusgroup/tests/test.html +0 -154
  392. package/attr/href/tests/minimal.html +0 -17
  393. package/attr/href/tests/test.html +0 -70
  394. package/attr/intersect/tests/minimal.html +0 -30
  395. package/attr/intersect/tests/test.html +0 -64
  396. package/attr/navigable/tests/U1TargetObserver.html +0 -56
  397. package/attr/navigable/tests/minimal.html +0 -17
  398. package/attr/navigable/tests/targetObserver.html +0 -106
  399. package/attr/navigable/tests/test.html +0 -84
  400. package/attr/parallax/tests/minimal.html +0 -25
  401. package/attr/parallax/tests/performance.html +0 -102
  402. package/attr/parallax/tests/test.html +0 -108
  403. package/attr/skin/tests/minimal.html +0 -34
  404. package/attr/skin/tests/test.html +0 -96
  405. package/class/badge/tests/minimal.html +0 -17
  406. package/class/badge/tests/test.html +0 -112
  407. package/class/card1/README.md +0 -45
  408. package/class/card1/card1.css +0 -30
  409. package/class/card1/tests/minimal.html +0 -33
  410. package/class/card1/tests/test.html +0 -78
  411. package/class/flex/tests/minimal.html +0 -31
  412. package/class/flex/tests/test.html +0 -58
  413. package/class/grid/tests/minimal.html +0 -34
  414. package/class/grid/tests/test.html +0 -78
  415. package/class/input/README.md +0 -49
  416. package/class/input/input.css +0 -33
  417. package/class/input/tests/minimal.html +0 -39
  418. package/class/input/tests/test.html +0 -29
  419. package/class/reset/tests/minimal.html +0 -23
  420. package/class/table/tests/minimal.html +0 -40
  421. package/class/table/tests/test.html +0 -226
  422. package/class/unstyle/tests/minimal.html +0 -22
  423. package/class/unstyle/tests/test.html +0 -32
  424. package/class/width/tests/minimal.html +0 -27
  425. package/class/width/tests/test.html +0 -101
  426. package/css/base/tests/nomotion.html +0 -89
  427. package/css/base/tests/test.html +0 -539
  428. package/css/classes/tests/test.html +0 -63
  429. package/css/classless/snippeds/experiments/conventions.css +0 -41
  430. package/css/classless/tests/aria.html +0 -101
  431. package/css/classless/tests/foreign/classless-almond.css.html +0 -445
  432. package/css/classless/tests/foreign/classless-classless.css.html +0 -831
  433. package/css/classless/tests/foreign/classless-mvp.html +0 -415
  434. package/css/classless/tests/foreign/classless.sakura.html +0 -224
  435. package/css/classless/tests/foreign/stylestage.dev.html +0 -304
  436. package/css/classless/tests/foreign/test-homogenizer.html +0 -433
  437. package/css/classless/tests/foreign/test-html5-elements-tester.html +0 -956
  438. package/css/classless/tests/foreign/test-opinionated_css.html +0 -148
  439. package/css/classless/tests/list-bullet.html +0 -110
  440. package/css/classless/tests/more.html +0 -246
  441. package/css/classless/tests/oklch.experiments.html +0 -280
  442. package/css/classless/tests/test.html +0 -106
  443. package/css/classless/tests/variables.html +0 -109
  444. package/css/norm/tests/test.html +0 -434
  445. package/css/norm/tests/test.js +0 -103
  446. package/el/accordion/tests/minimal.html +0 -44
  447. package/el/accordion/tests/test.html +0 -168
  448. package/el/alert/alert copy.js +0 -224
  449. package/el/alert/tests/minimal.html +0 -36
  450. package/el/alert/tests/test.html +0 -105
  451. package/el/buttongroup/tests/minimal.html +0 -31
  452. package/el/buttongroup/tests/test.html +0 -83
  453. package/el/bytes/tests/minimal.html +0 -19
  454. package/el/bytes/tests/test.html +0 -117
  455. package/el/carousel/tests/experiments.html +0 -77
  456. package/el/carousel/tests/minimal.html +0 -31
  457. package/el/carousel/tests/nested.html +0 -54
  458. package/el/carousel/tests/test.html +0 -136
  459. package/el/carousel-nav/tests/minimal.html +0 -32
  460. package/el/carousel-nav/tests/test.html +0 -59
  461. package/el/code/tests/minimal.html +0 -35
  462. package/el/code/tests/test.html +0 -162
  463. package/el/copy/tests/minimal.html +0 -21
  464. package/el/copy/tests/test.html +0 -75
  465. package/el/counter/tests/minimal.html +0 -27
  466. package/el/counter/tests/test.html +0 -106
  467. package/el/ico/tests/combinations.html +0 -86
  468. package/el/ico/tests/emojis.html +0 -213
  469. package/el/ico/tests/fonts.html +0 -110
  470. package/el/ico/tests/ico-directory.html +0 -254
  471. package/el/ico/tests/minimal.html +0 -46
  472. package/el/ico/tests/test.html +0 -210
  473. package/el/ico/tests/util-multi.svg +0 -6
  474. package/el/ico/tests/util.css +0 -2
  475. package/el/ico/tests/util.js +0 -110
  476. package/el/input/tests/formParticipation.html +0 -113
  477. package/el/input/tests/minimal.html +0 -33
  478. package/el/input/tests/test.html +0 -258
  479. package/el/masonry/tests/minimal.html +0 -39
  480. package/el/masonry/tests/test.html +0 -42
  481. package/el/number/tests/minimal.html +0 -25
  482. package/el/number/tests/test.html +0 -138
  483. package/el/out/tests/minimal.html +0 -25
  484. package/el/out/tests/test.html +0 -37
  485. package/el/parallax-bg/tests/bg.jpg +0 -0
  486. package/el/parallax-bg/tests/bg1.jpg +0 -0
  487. package/el/parallax-bg/tests/bg2.jpg +0 -0
  488. package/el/parallax-bg/tests/demo.html +0 -88
  489. package/el/parallax-bg/tests/minimal.html +0 -30
  490. package/el/parallax-bg/tests/test.html +0 -64
  491. package/el/parallax-bg/tests/visible.html +0 -90
  492. package/el/qrcode/tests/minimal.html +0 -26
  493. package/el/qrcode/tests/test.html +0 -31
  494. package/el/rating/tests/minimal.html +0 -26
  495. package/el/rating/tests/tests.html +0 -77
  496. package/el/rte/tests/minimal.html +0 -25
  497. package/el/rte/tests/test.html +0 -37
  498. package/el/skeleton/tests/minimal.html +0 -22
  499. package/el/skeleton/tests/test.html +0 -22
  500. package/el/splitbutton/README.md +0 -39
  501. package/el/splitbutton/splitbutton.js +0 -26
  502. package/el/splitbutton/tests/minimal.html +0 -30
  503. package/el/splitbutton/tests/test.html +0 -68
  504. package/el/splitpanel/tests/minimal.html +0 -31
  505. package/el/splitpanel/tests/tests.html +0 -121
  506. package/el/table/tests/minimal.html +0 -38
  507. package/el/table/tests/test.html +0 -108
  508. package/el/tabs/tests/minimal.html +0 -35
  509. package/el/tabs/tests/test.html +0 -180
  510. package/el/textfit/tests/minimal.html +0 -25
  511. package/el/textfit/tests/test.html +0 -26
  512. package/el/time/tests/minimal.html +0 -19
  513. package/el/time/tests/test.html +0 -160
  514. package/el/time/time copy.js +0 -141
  515. package/el/time/time.old.uhtml.js +0 -129
  516. package/el/tooltip/tests/minimal.html +0 -25
  517. package/el/tooltip/tests/test.html +0 -178
  518. package/el/tree1/README.md +0 -111
  519. package/el/tree1/manifest.json +0 -78
  520. package/el/tree1/tests/animated.html +0 -134
  521. package/el/tree1/tests/custom.html +0 -51
  522. package/el/tree1/tests/minimal.html +0 -44
  523. package/el/tree1/tests/test.html +0 -260
  524. package/el/tree1/tree1.css +0 -26
  525. package/el/tree1/tree1.js +0 -265
  526. package/el/typewriter/tests/minimal.html +0 -25
  527. package/el/typewriter/tests/test.html +0 -78
  528. package/js/Placer/tests/minimal.html +0 -34
  529. package/js/Placer/tests/test.html +0 -49
  530. package/js/PointerObserver/tests/minimal.html +0 -29
  531. package/js/PointerObserver/tests/test.html +0 -35
  532. package/js/SelectorObserver/tests/minimal.html +0 -21
  533. package/js/SelectorObserver/tests/test.html +0 -57
  534. package/js/SelectorObserver/tests/tests.html +0 -161
  535. package/js/contextmenu/tests/minimal.html +0 -44
  536. package/js/contextmenu/tests/test.html +0 -131
  537. package/js/dialog/tests/minimal.html +0 -29
  538. package/js/dialog/tests/notification.mp3 +0 -0
  539. package/js/dialog/tests/test.html +0 -135
  540. package/js/rte/tests/ai.html +0 -81
  541. package/js/rte/tests/behavior.html +0 -88
  542. package/js/rte/tests/events.html +0 -69
  543. package/js/rte/tests/fixes.html +0 -95
  544. package/js/rte/tests/minimal.html +0 -34
  545. package/js/rte/tests/notes.md +0 -6
  546. package/js/rte/tests/range.html +0 -167
  547. package/js/rte/tests/selection-explorer.html +0 -222
  548. package/js/rte/tests/test.html +0 -92
  549. package/js/shortcut/tests/minimal.html +0 -23
  550. package/js/shortcut/tests/test.html +0 -68
  551. package/u2/experiments/Waiter/test.html +0 -132
  552. package/u2/experiments/getElementByIdPromise/test.html +0 -76
  553. package/u2/experiments/patchInputValue.html +0 -124
  554. package/u2/experiments/radiobutton/test.html +0 -75
  555. package/u2/experiments/tests/test.html +0 -223
  556. package/u2/experiments/u1-responsive/responsive.js +0 -62
  557. package/u2/experiments/u1-responsive/test.html +0 -65
  558. package/u2/experiments/u2Element.js +0 -139
  559. package/u2/experiments/u2Element.test.html +0 -47
  560. package/u2/old-stuff/IterableWeakMap/mod.js +0 -70
  561. package/u2/old-stuff/css/onStyleSheet/mod.js +0 -114
  562. package/u2/old-stuff/css/onStyleSheet/monkeypatches.js +0 -28
  563. package/u2/old-stuff/css/onStyleSheet/test/include.css +0 -19
  564. package/u2/old-stuff/css/onStyleSheet/test/style-has-include.css +0 -6
  565. package/u2/old-stuff/css/onStyleSheet/test/style-no-include.css +0 -3
  566. package/u2/old-stuff/css/onStyleSheet/test/test.html +0 -48
  567. package/u2/old-stuff/css/parser/mod.js +0 -182
  568. package/u2/old-stuff/css/parser/parser_old/mod.js +0 -128
  569. package/u2/old-stuff/css/parser/parser_old/test.html +0 -43
  570. package/u2/old-stuff/css/parser/parser_old/util.js +0 -22
  571. package/u2/old-stuff/css/parser/style.html +0 -52
  572. package/u2/old-stuff/css/parser/test.html +0 -38
  573. package/u2/old-stuff/el/ai-texter/README.md +0 -23
  574. package/u2/old-stuff/el/ai-texter/ai-texter.css +0 -12
  575. package/u2/old-stuff/el/ai-texter/ai-texter.js +0 -153
  576. package/u2/old-stuff/el/ai-texter/tests/minimal.html +0 -47
  577. package/u2/old-stuff/el/ai-texter/tests/test.html +0 -71
  578. package/u2/old-stuff/init.js +0 -38
  579. package/u2/old-stuff/markHashLinks.js +0 -51
  580. package/u2/old-stuff/onElement/mod.js +0 -73
  581. package/u2/old-stuff/test-helpers/mod.js +0 -36
  582. package/u2/old-stuff/test-helpers/test.html +0 -4
  583. package/u2/old-stuff/tests/init.js.html +0 -51
  584. package/u2/old-stuff/viewport.js +0 -64
  585. package/u2/tests/boilerplate.html +0 -46
  586. package/u2/tests/kacheln.html +0 -245
  587. package/u2/tests/showcase.html +0 -270
  588. package/u2/tests/showcase2.html +0 -157
  589. package/u2/tests/test-init.js +0 -35
  590. package/u2/tests/test.html +0 -355
  591. package/u2/tools/logo/u1ui.svg +0 -6
@@ -1,28 +1,28 @@
1
1
  # [u2-navigable] - attribute
2
- Make elements navigatable
2
+ Turns dialogs, details, etc. into link-navigable elements with history support.
3
3
 
4
4
  ## Usage
5
5
 
6
6
  ```html
7
- Link to navigable dialog:<br>
8
- <a href="#navigable">open</a>
9
- <dialog u2-navigable id=navigable>
10
- go back using esc or your browser's back button
7
+ Link to navigable dialog:<br>
8
+ <a href="#navigable">open</a>
9
+ <dialog u2-navigable id=navigable>
10
+ go back using esc or your browser's back button
11
11
  </dialog>
12
12
  ```
13
13
 
14
14
  ## Install
15
15
 
16
16
  ```html
17
- <script src="https://cdn.jsdelivr.net/gh/u2ui/u2@x.x.x/attr/navigable/navigable.min.js" type=module async></script>
17
+ <script src="https://cdn.jsdelivr.net/gh/u2ui/u2@main/attr/navigable/navigable.js" type=module async></script>
18
18
  ```
19
19
 
20
20
  ## Demos
21
21
 
22
- [minimal.html](http://gcdn.li/u2ui/u2@main/attr/navigable/tests/minimal.html)
23
- [targetObserver.html](http://gcdn.li/u2ui/u2@main/attr/navigable/tests/targetObserver.html)
24
- [test.html](http://gcdn.li/u2ui/u2@main/attr/navigable/tests/test.html)
25
22
  [U1TargetObserver.html](http://gcdn.li/u2ui/u2@main/attr/navigable/tests/U1TargetObserver.html)
23
+ [test.html](http://gcdn.li/u2ui/u2@main/attr/navigable/tests/test.html)
24
+ [targetObserver.html](http://gcdn.li/u2ui/u2@main/attr/navigable/tests/targetObserver.html)
25
+ [minimal.html](http://gcdn.li/u2ui/u2@main/attr/navigable/tests/minimal.html)
26
26
 
27
27
  ## About
28
28
 
@@ -1,91 +1,90 @@
1
- // checks for hashchange and element matches
2
-
3
- const observers = new Set();
4
-
5
- export class TargetObserver {
6
-
7
- /**
8
- * @param {Object} opts
9
- * @param {Function} opts.on - called when a element is the target
10
- * @param {Function} opts.off - called when a element lost the target
11
- * @param {Function} opts.in - called when a element or a descendant is the target
12
- * @param {Function} opts.out - called when a element lost the target including descendants
13
- * @param {String} opts.matches - CSS selector for elements we listen to
14
- */
15
- constructor(opts) {
16
- this.opts = opts;
17
- observers.add(this);
18
- this.parentTargets = new Set();
19
- this._testOn(active);
20
- }
21
-
22
- /**
23
- * @description stops listening
24
- */
25
- disconnect() {
26
- observers.delete(this);
27
- }
28
-
29
- /**
30
- * @param {Element} el
31
- * @private
32
- */
33
- _matches(el){
34
- if (!el) return false;
35
- return this.opts.matches==null || el.matches(this.opts.matches);
36
- }
37
-
38
- /**
39
- * @param {Element} el
40
- * @private
41
- */
42
- _testOn(el){
43
- this.opts.on && this._matches(el) && this.opts.on(el);
44
- if (this.opts.in && el) { // todo: && this.opts.matches ??
45
- let closest = el.closest(this.opts.matches);
46
- while (closest) {
47
- this.opts.in(closest);
48
- this.parentTargets.add(closest);
49
- closest = closest.parentNode.closest(this.opts.matches);
50
- }
51
- }
52
- for (const pTarget of this.parentTargets) {
53
- if (el && pTarget.contains(el)) continue;
54
- this.opts?.out(pTarget);
55
- this.parentTargets.delete(pTarget);
56
- }
57
- }
58
-
59
- /**
60
- * @param {Element} el
61
- * @private
62
- */
63
- _testOff(el){
64
- this.opts.off && this._matches(el) && this.opts.off(el);
65
- this.opts.out && this._matches(el) && this.opts.out(el);
66
- }
67
- }
68
-
69
- let active = null;
70
-
71
- function checkTarget(e) {
72
- const target = location.hash ? document.getElementById(location.hash.substring(1)) : false;
73
- const changed = e ? e.oldURL !== e.newURL : target !== active; // test url vs old-url because it can have lost a trigger when changed using replaceState
74
- if (!changed) return;
75
- for (const observer of observers) {
76
- observer._testOff(active);
77
- observer._testOn(target);
78
- }
79
- active = target;
80
- }
81
- checkTarget();
82
- addEventListener('hashchange', checkTarget);
83
-
84
-
85
- // Usage:
86
- // const observer = new TargetObserver({
87
- // in: (target) => console.log(target),
88
- // out: (target) => console.log(target),
89
- // matches: '.element', // optional
90
- // })
91
- // observer.disconnect();
1
+ // checks for hashchange and element matches
2
+
3
+ const observers = new Set();
4
+
5
+ export class TargetObserver {
6
+
7
+ /**
8
+ * @param {Object} opts
9
+ * @param {Function} opts.on - called when a element is the target
10
+ * @param {Function} opts.off - called when a element lost the target
11
+ * @param {Function} opts.in - called when a element or a descendant is the target
12
+ * @param {Function} opts.out - called when a element lost the target including descendants
13
+ * @param {String} opts.matches - CSS selector for elements we listen to
14
+ */
15
+ constructor(opts) {
16
+ this.opts = opts;
17
+ observers.add(this);
18
+ this.parentTargets = new Set();
19
+ this._testOn(active);
20
+ }
21
+
22
+ /**
23
+ * @description stops listening
24
+ */
25
+ disconnect() {
26
+ observers.delete(this);
27
+ }
28
+
29
+ /**
30
+ * @param {Element} el
31
+ * @private
32
+ */
33
+ _matches(el){
34
+ return !!el && (this.opts.matches==null || el.matches(this.opts.matches));
35
+ }
36
+
37
+ /**
38
+ * @param {Element} el
39
+ * @private
40
+ */
41
+ _testOn(el){
42
+ this.opts.on && this._matches(el) && this.opts.on(el);
43
+ if (this.opts.in && el) { // todo: && this.opts.matches ??
44
+ let closest = el.closest(this.opts.matches);
45
+ while (closest) {
46
+ this.opts.in(closest);
47
+ this.parentTargets.add(closest);
48
+ closest = closest.parentNode.closest(this.opts.matches);
49
+ }
50
+ }
51
+ for (const pTarget of this.parentTargets) {
52
+ if (el && pTarget.contains(el)) continue;
53
+ this.opts?.out(pTarget);
54
+ this.parentTargets.delete(pTarget);
55
+ }
56
+ }
57
+
58
+ /**
59
+ * @param {Element} el
60
+ * @private
61
+ */
62
+ _testOff(el){
63
+ this.opts.off && this._matches(el) && this.opts.off(el);
64
+ this.opts.out && this._matches(el) && this.opts.out(el);
65
+ }
66
+ }
67
+
68
+ let active = null;
69
+
70
+ function checkTarget(e) {
71
+ const target = location.hash ? document.getElementById(location.hash.substring(1)) : false;
72
+ const changed = e ? e.oldURL !== e.newURL : target !== active; // test url vs old-url because it can have lost a trigger when changed using replaceState
73
+ if (!changed) return;
74
+ for (const observer of observers) {
75
+ observer._testOff(active);
76
+ observer._testOn(target);
77
+ }
78
+ active = target;
79
+ }
80
+ checkTarget();
81
+ addEventListener('hashchange', checkTarget);
82
+
83
+
84
+ // Usage:
85
+ // const observer = new TargetObserver({
86
+ // in: (target) => console.log(target),
87
+ // out: (target) => console.log(target),
88
+ // matches: '.element', // optional
89
+ // })
90
+ // observer.disconnect();
@@ -1,75 +1,75 @@
1
- // checks for the "u2-target" query parameter and calls the on/off functions
2
- // e.g. ?u2-target=details1+checkbox3+dialog1
3
-
4
- const observers = new Set();
5
-
6
- export class U2TargetObserver {
7
- constructor(opts) {
8
- this.opts = opts;
9
- observers.add(this);
10
-
11
- this._testOns(actives);
12
- }
13
- disconnect() {
14
- observers.delete(this);
15
- }
16
- _matches(el){
17
- if (!el) return false;
18
- return el!==false && this.opts.matches==null || el.matches(this.opts.matches);
19
- }
20
- _testOn(el){
21
- this.opts.on && this._matches(el) && this.opts.on(el);
22
- }
23
- _testOff(el){
24
- this.opts.off && this._matches(el) && this.opts.off(el);
25
- }
26
- _testOns(els){
27
- for (const el of els) this._testOn(el);
28
- }
29
- _testOffs(els){
30
- for (const el of els) this._testOff(el);
31
- }
32
- }
33
-
34
- let actives = new Set();
35
-
36
- function checkTargets(){
37
- const newest = new Set();
38
- const param = new URL(location).searchParams.get('u2-target');
39
- if (param) {
40
- for (const item of param.split(' ')) {
41
- const el = item && document.getElementById(item);
42
- el && newest.add(el);
43
- }
44
- }
45
-
46
- const added = new Set();
47
- const removed = new Set();
48
- for (let item of actives) if (!newest.has(item)) removed.add(item);
49
- for (let item of newest) if (!actives.has(item)) added.add(item);
50
- for (const obs of observers) {
51
- obs._testOffs(removed);
52
- obs._testOns(added);
53
- }
54
- actives = newest;
55
- }
56
- addEventListener('popstate', checkTargets);
57
- checkTargets();
58
-
59
-
60
- // Possible improvement:
61
- // Initial TargetObserver tiggers if in url, then toggle-event triggers, resulting in toggleParam without a need.
62
- // Can we solve this?
63
-
64
- // togglelParam
65
- export function toggleParam(id, force, replace){
66
- const url = new URL(location);
67
- const targets = new Set((url.searchParams.get('u2-target')||'').split(' '));
68
- const isPresent = targets.has(id);
69
- const shouldAdd = force ?? !isPresent;
70
- if (shouldAdd === isPresent) return;
71
- shouldAdd ? targets.add(id) : targets.delete(id);
72
- url.searchParams.set('u2-target', [...targets].join(' '));
73
- history[replace?'replaceState':'pushState'](null, '', url.href);
74
- checkTargets();
75
- }
1
+ // checks for the "u2-target" query parameter and calls the on/off functions
2
+ // e.g. ?u2-target=details1+checkbox3+dialog1
3
+
4
+ const observers = new Set();
5
+
6
+ export class U2TargetObserver {
7
+ constructor(opts) {
8
+ this.opts = opts;
9
+ observers.add(this);
10
+
11
+ this._testOns(actives);
12
+ }
13
+ disconnect() {
14
+ observers.delete(this);
15
+ }
16
+ _matches(el){
17
+ return !!el && (this.opts.matches==null || el.matches(this.opts.matches));
18
+ }
19
+ _testOn(el){
20
+ this.opts.on && this._matches(el) && this.opts.on(el);
21
+ }
22
+ _testOff(el){
23
+ this.opts.off && this._matches(el) && this.opts.off(el);
24
+ }
25
+ _testOns(els){
26
+ for (const el of els) this._testOn(el);
27
+ }
28
+ _testOffs(els){
29
+ for (const el of els) this._testOff(el);
30
+ }
31
+ }
32
+
33
+ let actives = new Set();
34
+
35
+ function checkTargets(){
36
+ const newest = new Set();
37
+ const param = new URL(location).searchParams.get('u2-target');
38
+ if (param) {
39
+ for (const item of param.split(' ')) {
40
+ const el = item && document.getElementById(item);
41
+ el && newest.add(el);
42
+ }
43
+ }
44
+
45
+ const added = new Set();
46
+ const removed = new Set();
47
+ for (let item of actives) if (!newest.has(item)) removed.add(item);
48
+ for (let item of newest) if (!actives.has(item)) added.add(item);
49
+ for (const obs of observers) {
50
+ obs._testOffs(removed);
51
+ obs._testOns(added);
52
+ }
53
+ actives = newest;
54
+ }
55
+ addEventListener('popstate', checkTargets);
56
+ checkTargets();
57
+
58
+
59
+ // Possible improvement:
60
+ // Initial TargetObserver tiggers if in url, then toggle-event triggers, resulting in toggleParam without a need.
61
+ // Can we solve this?
62
+
63
+ // togglelParam
64
+ export function toggleParam(id, force, replace){
65
+ const url = new URL(location);
66
+ const targets = new Set((url.searchParams.get('u2-target')||'').split(' '));
67
+ const isPresent = targets.has(id);
68
+ const shouldAdd = force ?? !isPresent;
69
+ if (shouldAdd === isPresent) return;
70
+ shouldAdd ? targets.add(id) : targets.delete(id);
71
+ url.searchParams.set('u2-target', [...targets].join(' '));
72
+ //console.log('u2targetobserver navigates:', {replace, url:url.href})
73
+ history[replace?'replaceState':'pushState']({source:'u2-target'}, '', url.href);
74
+ checkTargets();
75
+ }
@@ -1,42 +1,34 @@
1
- {
2
- "schemaVersion": "1.0.0",
3
- "readme": "README.md",
4
- "modules": [
5
- {
6
- "kind": "javascript-module",
7
- "path": "navigable.js",
8
- "declarations": [
9
- {
10
- "summary": "Make elements navigatable",
11
- "description": "Links to Elements that can have a active-state (dialog, details, popover, etc.) can be activated by simply linking to its id. This is done by adding the custom attribute u2-navigable to the element.",
12
- "name": "u2-navigable",
13
- "members": [],
14
- "events": [],
15
- "attributes": [
16
- {
17
- "name": "u2-navigable",
18
- "description": "By adding the custom attribute u2-navigable to an element, the element becomes navigatable. Opens by hash-link even on loading the page, changes the url by closing the element.",
19
- "type": "boolean"
20
- },{
21
- "name": "id",
22
- "description": "An id is required to navigate to the element."
23
- }
24
- ],
25
- "cssProperties": [],
26
- "attributeName": "u2-navigable"
27
- }
28
- ],
29
- "exports": [
30
- {
31
- "kind": "custom-attribute-definition",
32
- "name": "u2-navigable",
33
- "declaration": {
34
- "name": "u2-navigable",
35
- "module": "navigable.js"
36
- }
37
- }
38
- ]
39
- }
40
- ]
41
- }
42
-
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "README.md",
4
+ "modules": [{
5
+ "kind": "javascript-module",
6
+ "path": "navigable.js",
7
+ "declarations": [{
8
+ "kind": "class",
9
+ "description": "Make elements navigable",
10
+ "name": "u2-navigable",
11
+ "members": [],
12
+ "events": [],
13
+ "attributes": [{
14
+ "name": "u2-navigable",
15
+ "description": "By adding the custom attribute u2-navigable to an element, the element becomes navigatable. Opens by hash-link even on loading the page, changes the url by closing the element.",
16
+ "u2Examples": ["true", "false"]
17
+ },{
18
+ "name": "id",
19
+ "description": "An id is required to navigate to the element.",
20
+ "u2Examples": ["element-id"]
21
+ }],
22
+ "cssProperties": [],
23
+ "attributeName": "u2-navigable"
24
+ }],
25
+ "exports": [{
26
+ "kind": "custom-attribute-definition",
27
+ "name": "u2-navigable",
28
+ "declaration": {
29
+ "name": "u2-navigable",
30
+ "module": "navigable.js"
31
+ }
32
+ }]
33
+ }]
34
+ }
@@ -1,87 +1,85 @@
1
- import {TargetObserver} from './TargetObserver.js';
2
- import {U2TargetObserver, toggleParam} from './U2TargetObserver.js';
3
-
4
-
5
- // translate hash-links to "u2-navigable"-elements into "u2-target"-params
6
- new TargetObserver({
7
- on: (el) => {
8
- toggleParam(el.id, true, true);
9
- const url = new URL(location);
10
- url.hash = '';
11
- history.replaceState(null, '', url.href);
12
- },
13
- matches: '[u2-navigable]'
14
- })
15
-
16
-
17
- /* dialog element */
18
- // TODO: there is no open-event, so we can not change the url if its opened by .showModal() mybe "invoke-event" some day?
19
- new U2TargetObserver({
20
- on: el => !el.open && el.showModal(),
21
- off: el => el.close(),
22
- matches: 'dialog[u2-navigable]',
23
- });
24
- addEventListener('close',e=>{
25
- const el = e.target;
26
- if (!el.matches('dialog[u2-navigable]')) return;
27
- toggleParam(el.id, false);
28
- },true);
29
-
30
-
31
- /* details */
32
- new U2TargetObserver({
33
- on: el => el.open = true,
34
- off: el => el.open = false,
35
- matches: 'details[u2-navigable]',
36
- });
37
- addEventListener('toggle',e=>{
38
- const el = e.target;
39
- if (!el.matches('details[u2-navigable][id]')) return;
40
- if (el.open) toggleParam(el.id, true);
41
- else toggleParam(el.id, false);
42
- },true);
43
-
44
-
45
- /* checkbox and radio */
46
- new U2TargetObserver({
47
- on: el => el.checked = true,
48
- off: el => el.checked = false,
49
- matches: 'input:is([type=checkbox],[type=radio])[u2-navigable]',
50
- });
51
- addEventListener('change',e=>{
52
- const el = e.target;
53
- if (!el.matches('input:is([type=checkbox],[type=radio])[u2-navigable][id]')) return;
54
-
55
- if (el.type === 'radio') {
56
- const elements = el.form ? el.form.elements[el.name] : document.getElementsByName(el.name);
57
- elements.forEach(e => toggleParam(e.id, false)); // toggleParam(e.id, false, TRUE) does not work as expected, why?
58
- }
59
-
60
- if (el.checked) toggleParam(el.id, true);
61
- else toggleParam(el.id, false);
62
- });
63
-
64
-
65
- /* popover */
66
- new U2TargetObserver({
67
- on: el => el.showPopover(),
68
- off: el => el.hidePopover(),
69
- matches: '[popover][u2-navigable]',
70
- });
71
- addEventListener('toggle', e => {
72
- const el = e.target;
73
- if (!el.matches('[popover][u2-navigable][id]')) return;
74
- const newState = e.newState;
75
- toggleParam(el.id, newState === 'open');
76
- }, true);
77
-
78
-
79
-
80
- // beta
81
- // u2 unified api
82
- addEventListener('u2-activate', e => {
83
- if (!e.target.hasAttribute('u2-navigable')) return;
84
- if (!e.target.hasAttribute('id')) { console.warn('element with a u2-navigable attribute must have an id'); return; }
85
- //e.preventDefault(); // needed?
86
- location.href = '#' + e.target.id;
87
- });
1
+ import {TargetObserver} from './TargetObserver.js';
2
+ import {U2TargetObserver, toggleParam} from './U2TargetObserver.js';
3
+
4
+
5
+ // translate hash-links to "u2-navigable"-elements into "u2-target"-params
6
+ new TargetObserver({
7
+ on: (el) => {
8
+ toggleParam(el.id, true, true);
9
+ const url = new URL(location);
10
+ url.hash = '';
11
+ history.replaceState(null, '', url.href);
12
+ },
13
+ matches: '[u2-navigable]'
14
+ })
15
+
16
+
17
+ /* dialog element */
18
+ // TODO: there is no open-event, so we can not change the url if its opened by .showModal() mybe "invoke-event" some day?
19
+ new U2TargetObserver({
20
+ on: el => !el.open && el.showModal(),
21
+ off: el => el.close(),
22
+ matches: 'dialog[u2-navigable]',
23
+ });
24
+ addEventListener('close',e=>{
25
+ const el = e.target;
26
+ if (!el.matches('dialog[u2-navigable]')) return;
27
+ toggleParam(el.id, false);
28
+ },true);
29
+
30
+
31
+ /* details */
32
+ new U2TargetObserver({
33
+ on: el => el.open = true,
34
+ off: el => el.open = false,
35
+ matches: 'details[u2-navigable]',
36
+ });
37
+ addEventListener('toggle',e=>{
38
+ const el = e.target;
39
+ if (!el.matches('details[u2-navigable][id]')) return;
40
+ toggleParam(el.id, el.open);
41
+ },true);
42
+
43
+
44
+ /* checkbox and radio */
45
+ new U2TargetObserver({
46
+ on: el => el.checked = true,
47
+ off: el => el.checked = false,
48
+ matches: 'input:is([type=checkbox],[type=radio])[u2-navigable]',
49
+ });
50
+ addEventListener('change',e=>{
51
+ const el = e.target;
52
+ if (!el.matches('input:is([type=checkbox],[type=radio])[u2-navigable][id]')) return;
53
+
54
+ if (el.type === 'radio') {
55
+ const elements = el.form ? el.form.elements[el.name] : document.getElementsByName(el.name);
56
+ elements.forEach(e => toggleParam(e.id, false)); // toggleParam(e.id, false, TRUE) does not work as expected, why?
57
+ }
58
+
59
+ toggleParam(el.id, el.checked);
60
+ });
61
+
62
+
63
+ /* popover */
64
+ new U2TargetObserver({
65
+ on: el => el.showPopover(),
66
+ off: el => el.hidePopover(),
67
+ matches: '[popover][u2-navigable]',
68
+ });
69
+ addEventListener('toggle', e => {
70
+ const el = e.target;
71
+ if (!el.matches('[popover][u2-navigable][id]')) return;
72
+ const newState = e.newState;
73
+ toggleParam(el.id, newState === 'open');
74
+ }, true);
75
+
76
+
77
+
78
+ // beta
79
+ // u2 unified api
80
+ addEventListener('u2-activate', e => {
81
+ if (!e.target.hasAttribute('u2-navigable')) return;
82
+ if (!e.target.hasAttribute('id')) { console.warn('element with a u2-navigable attribute must have an id'); return; }
83
+ //e.preventDefault(); // needed?
84
+ location.href = '#' + e.target.id;
85
+ });