u2ui 1.0.0 → 1.4.5

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 +86 -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 +14 -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 +85 -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 +9 -8
  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 +156 -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,90 +1,86 @@
1
-
2
- let resentConfirmed = false;
3
-
4
- // submit
5
- // todo: test if it works inside shadow dom
6
-
7
- document.addEventListener('submit', e=>{
8
- if (resentConfirmed) return; // dont check again
9
- const form = e.target;
10
- const btn = e.submitter;
11
- let element = null;
12
- if (form.hasAttribute('u2-confirm')) element = form;
13
- if (btn && btn.hasAttribute('u2-confirm')) element = btn;
14
- if (!element) return;
15
- confirmEvent(e, element, ()=> form.requestSubmit(btn) );
16
- },true);
17
-
18
- // click
19
- document.addEventListener('click', e=>{
20
- if (resentConfirmed) return;
21
-
22
- //const target = e.target;
23
- const target = e.composedPath()[0];
24
-
25
- const element = target.closest('button[u2-confirm]');
26
- if (!element) return;
27
- if (element.form && element.type==='submit') return; // handled by submit event. What about "reset"?
28
- confirmEvent(e, element, ()=> element.click() );
29
- },true);
30
-
31
- async function confirmEvent(e, element, then){
32
- e.preventDefault();
33
- e.stopImmediatePropagation();
34
- const {confirm} = await import('../../js/dialog/dialog.js');
35
- const lang = langOf(element);
36
- const ok = await confirm({
37
- body: getMessage(element, lang),
38
- lang,
39
- });
40
- if (ok) {
41
- resentConfirmed = true;
42
- then();
43
- resentConfirmed = false;
44
- }
45
- }
46
-
47
- function getMessage(el, lang) {
48
- // get lang of el
49
- let msg = el.getAttribute('u2-confirm');
50
- if (msg) return msg;
51
- msg = sure[lang];
52
- if (msg) return msg;
53
- console.warn('no translation for lang "'+lang+'" in confirm.js. Please report!');
54
- return sure.en;
55
- }
56
-
57
- function langOf(el) {
58
- return el.closest('[lang]')?.getAttribute('lang') || navigator.language.substring(0,2) || 'en';
59
- }
60
-
61
- const sure = {
62
- en: 'Are you sure?',
63
- de: 'Sind Sie sicher?',
64
- fr: 'Êtes-vous sûr?',
65
- es: '¿Estás seguro?',
66
- it: 'Sei sicuro?',
67
- pt: 'Tem certeza?',
68
- ua: 'Ви впевнені?',
69
- ru: 'Вы уверены?',
70
- ja: '本気ですか?',
71
- ko: '확실합니까?',
72
- zh: '你确定吗?',
73
- nl: 'Weet je het zeker?',
74
- };
75
-
76
-
77
- /* TODO: button and link confirm?
78
- document.addEventListener('click', async e=>{
79
- if (resentConfirmed) return;
80
- let element = e.target.closest('[u2-confirm]');
81
- if (!element) return;
82
- if (element.form || element.tagName === 'FORM') {
83
- console.log('handled by submit event');
84
- return;
85
- }
86
- confirmEvent(e, element, ()=>
87
- element.click()
88
- );
89
- },true);
90
- */
1
+
2
+ let resentConfirmed = false;
3
+
4
+ // submit
5
+ // todo: test if it works inside shadow dom
6
+
7
+ document.addEventListener('submit', e=>{
8
+ if (resentConfirmed) return; // dont check again
9
+ const form = e.target;
10
+ const btn = e.submitter;
11
+ const element = btn?.hasAttribute('u2-confirm') ? btn : form.hasAttribute('u2-confirm') ? form : null;
12
+ if (!element) return;
13
+ confirmEvent(e, element, ()=> form.requestSubmit(btn) );
14
+ },true);
15
+
16
+ // click
17
+ document.addEventListener('click', e=>{
18
+ if (resentConfirmed) return;
19
+
20
+ //const target = e.target;
21
+ const target = e.composedPath()[0];
22
+
23
+ const element = target.closest('button[u2-confirm]');
24
+ if (!element) return;
25
+ if (element.form && element.type==='submit') return; // handled by submit event. What about "reset"?
26
+ confirmEvent(e, element, ()=> element.click() );
27
+ },true);
28
+
29
+ async function confirmEvent(e, element, then){
30
+ e.preventDefault();
31
+ e.stopImmediatePropagation();
32
+ const {confirm} = await import('../../js/dialog/dialog.js');
33
+ const lang = langOf(element);
34
+ const ok = await confirm({
35
+ body: getMessage(element, lang),
36
+ lang,
37
+ });
38
+ if (ok) {
39
+ resentConfirmed = true;
40
+ then();
41
+ resentConfirmed = false;
42
+ }
43
+ }
44
+
45
+ function getMessage(el, lang) {
46
+ // get lang of el
47
+ const msg = el.getAttribute('u2-confirm') || sure[lang];
48
+ if (msg) return msg;
49
+ console.warn('no translation for lang "'+lang+'" in confirm.js. Please report!');
50
+ return sure.en;
51
+ }
52
+
53
+ function langOf(el) {
54
+ return el.closest('[lang]')?.getAttribute('lang') || navigator.language.substring(0,2) || 'en';
55
+ }
56
+
57
+ const sure = {
58
+ en: 'Are you sure?',
59
+ de: 'Sind Sie sicher?',
60
+ fr: 'Êtes-vous sûr?',
61
+ es: '¿Estás seguro?',
62
+ it: 'Sei sicuro?',
63
+ pt: 'Tem certeza?',
64
+ uk: 'Ви впевнені?',
65
+ ru: 'Вы уверены?',
66
+ ja: '本気ですか?',
67
+ ko: '확실합니까?',
68
+ zh: '你确定吗?',
69
+ nl: 'Weet je het zeker?',
70
+ };
71
+
72
+
73
+ /* TODO: button and link confirm?
74
+ document.addEventListener('click', async e=>{
75
+ if (resentConfirmed) return;
76
+ let element = e.target.closest('[u2-confirm]');
77
+ if (!element) return;
78
+ if (element.form || element.tagName === 'FORM') {
79
+ console.log('handled by submit event');
80
+ return;
81
+ }
82
+ confirmEvent(e, element, ()=>
83
+ element.click()
84
+ );
85
+ },true);
86
+ */
@@ -1,43 +1,43 @@
1
- {
2
- "schemaVersion": "1.0.0",
3
- "readme": "README.md",
4
- "modules": [
5
- {
6
- "kind": "javascript-module",
7
- "path": "confirm.js",
8
- "declarations": [
9
- {
10
- "// kind": "class",
11
- "description": "Show confirm dialog before click triggers or form submission",
12
- "name": "u2-confirm",
13
- "members": [],
14
- "events": [],
15
- "attributes": [
16
- {
17
- "name": "u2-confirm",
18
- "description": "If set to true, the confirm will be shown before click triggers or the associated form is submitted. Its value may be a string to be used as the message to show in the confirm dialog. The attribute works for buttons and form-elements.",
19
- "u2Examples": ["", "Are you sure you want to delete this item?"]
20
- },{
21
- "name": "lang",
22
- "description": "The language to use for internationalization",
23
- "u2Examples": ["en-US","fr-FR","de-DE","es-ES","it-IT","ja-JP","ko-KR","zh-CN","zh-TW"]
24
- }
25
- ],
26
- "cssProperties": [],
27
- "attributeName": "u2-confirm"
28
- }
29
- ],
30
- "exports": [
31
- {
32
- "kind": "custom-attribute-definition",
33
- "name": "u2-confirm",
34
- "declaration": {
35
- "name": "u2-confirm",
36
- "module": "confirm.js"
37
- }
38
- }
39
- ]
40
- }
41
- ]
42
- }
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "README.md",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "confirm.js",
8
+ "declarations": [
9
+ {
10
+ "// kind": "class",
11
+ "description": "Show confirm dialog before click triggers or form submission",
12
+ "name": "u2-confirm",
13
+ "members": [],
14
+ "events": [],
15
+ "attributes": [
16
+ {
17
+ "name": "u2-confirm",
18
+ "description": "If set to true, the confirm will be shown before click triggers or the associated form is submitted. Its value may be a string to be used as the message to show in the confirm dialog. The attribute works for buttons and form-elements.",
19
+ "u2Examples": ["", "Are you sure you want to delete this item?"]
20
+ },{
21
+ "name": "lang",
22
+ "description": "The language to use for internationalization",
23
+ "u2Examples": ["en-US","fr-FR","de-DE","es-ES","it-IT","ja-JP","ko-KR","zh-CN","zh-TW"]
24
+ }
25
+ ],
26
+ "cssProperties": [],
27
+ "attributeName": "u2-confirm"
28
+ }
29
+ ],
30
+ "exports": [
31
+ {
32
+ "kind": "custom-attribute-definition",
33
+ "name": "u2-confirm",
34
+ "declaration": {
35
+ "name": "u2-confirm",
36
+ "module": "confirm.js"
37
+ }
38
+ }
39
+ ]
40
+ }
41
+ ]
42
+ }
43
43
 
@@ -0,0 +1,37 @@
1
+ # [u2-disableif] - attribute
2
+ Disable form-elements (like inputs, buttons, fieldsets) based on a condition
3
+
4
+ ## Usage
5
+
6
+ ```html
7
+ <form>
8
+ <label>
9
+ <input type=checkbox name="isClient"> Already Client?
10
+ </label>
11
+ <input u2-disableif="!isClient" placeholder="Client number" >
12
+ </form>
13
+ ```
14
+
15
+ ```css
16
+ [u2-disableif][disabled] {
17
+ opacity: .3;
18
+ xbackground: #ccc;
19
+ }
20
+ ```
21
+
22
+ ## Install
23
+
24
+ ```html
25
+ <script src="https://cdn.jsdelivr.net/gh/u2ui/u2@main/attr/disableif/disableif.js" type=module async></script>
26
+ ```
27
+
28
+ ## Demos
29
+
30
+ [test.html](http://gcdn.li/u2ui/u2@main/attr/disableif/tests/test.html)
31
+ [minimal.html](http://gcdn.li/u2ui/u2@main/attr/disableif/tests/minimal.html)
32
+
33
+ ## About
34
+
35
+ - MIT License, Copyright (c) 2022 <u2> (like all repositories in this organization) <br>
36
+ - Suggestions, ideas, finding bugs and making pull requests make us very happy. ♥
37
+
@@ -0,0 +1,59 @@
1
+ import { SelectorObserver } from '../../js/SelectorObserver/SelectorObserver.js';
2
+
3
+ function checkCondition(el) {
4
+ const condition = el.getAttribute('u2-disableif');
5
+
6
+ const match = condition.match(/^(!?)([^=!<>]*)(=|!=|>|<)?([^=!<>]*)$/);
7
+ if (match) {
8
+ let [_, not, field, operator, value] = match;
9
+ if (not) {
10
+ if (operator) console.warn(`u2-disableif: "!" operator is not supported with other operators`, { el, field, operator, value });
11
+ operator = '=';
12
+ }
13
+ const target = el.form.elements[field];
14
+ if (!target) {
15
+ console.warn(`u2-disableif: field "${field}" not found`, { el, field, operator, value });
16
+ return;
17
+ }
18
+ let stringTargetValue = target.value;
19
+ if (target.type === 'checkbox') stringTargetValue = target.checked ? target.value : '';
20
+
21
+ const numericTargetValue = parseFloat(stringTargetValue);
22
+ const numericConditionValue = parseFloat(value);
23
+
24
+ let conditionMet = false;
25
+ switch (operator) {
26
+ case undefined:
27
+ conditionMet = !!stringTargetValue;
28
+ break;
29
+ case '=':
30
+ conditionMet = stringTargetValue === value;
31
+ break;
32
+ case '!=':
33
+ conditionMet = stringTargetValue !== value;
34
+ break;
35
+ case '>':
36
+ conditionMet = numericTargetValue > numericConditionValue;
37
+ break;
38
+ case '<':
39
+ conditionMet = numericTargetValue < numericConditionValue;
40
+ break;
41
+ }
42
+ el.disabled = conditionMet;
43
+ }
44
+ }
45
+
46
+
47
+ new SelectorObserver({
48
+ on: (el) => {
49
+ checkCondition(el);
50
+ // wait for custom-element-inputs
51
+ // queueMicrotask(()=>checkCondition(el));
52
+ requestAnimationFrame(()=>checkCondition(el));
53
+ //setTimeout(()=>checkCondition(el));
54
+ const form = el.form;
55
+ el.form.addEventListener('input', () => checkCondition(el));
56
+ },
57
+ off: (el) => {
58
+ }
59
+ }).observe('[u2-disableif]');
@@ -0,0 +1,38 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "README.md",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "disableif.js",
8
+ "declarations": [
9
+ {
10
+ "kind": "class",
11
+ "description": "Disables an element if a condition is met",
12
+ "name": "u2-disableif",
13
+ "members": [],
14
+ "events": [],
15
+ "attributes": [
16
+ {
17
+ "name": "u2-disableif",
18
+ "description": "Condition to disable the element",
19
+ "u2Examples": ["true", "false"]
20
+ }
21
+ ],
22
+ "cssProperties": [],
23
+ "attributeName": "u2-disableif"
24
+ }
25
+ ],
26
+ "exports": [
27
+ {
28
+ "kind": "custom-attribute-definition",
29
+ "name": "u2-disableif",
30
+ "declaration": {
31
+ "name": "u2-disableif",
32
+ "module": "disableif.js"
33
+ }
34
+ }
35
+ ]
36
+ }
37
+ ]
38
+ }
@@ -1,37 +1,37 @@
1
1
  # [u2-draghandle] - attribute
2
- Define a drag handle-element for an element that uses the draggable attribute.
2
+ Defines a handle element to drag a `draggable=false` container.
3
3
 
4
4
  ## Usage
5
5
 
6
6
  ```html
7
- <article draggable="false">
8
- <u2-ico u2-draghandle>
9
- <svg width="24" height="24" viewBox="0 0 24 24" aria-hidden="true"><path d="M11 18c0 1.1-.9 2-2 2s-2-.9-2-2s.9-2 2-2s2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2s-2 .9-2 2s.9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2z"></path></svg>
10
- </u2-ico>
11
- <h2>This is a draggable article.</h2>
12
- <p>
13
- It is draggable, but only by its drag handle.
14
- </p>
7
+ <article draggable="false">
8
+ <u2-ico u2-draghandle>
9
+ <svg width="24" height="24" viewBox="0 0 24 24" aria-hidden="true"><path d="M11 18c0 1.1-.9 2-2 2s-2-.9-2-2s.9-2 2-2s2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2s-2 .9-2 2s.9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2z"></path></svg>
10
+ </u2-ico>
11
+ <p>
12
+ This is draggable, by the drag handle.
13
+ </p>
15
14
  </article>
16
15
  ```
17
16
 
18
17
  ```css
19
- [draggable="false"] {
20
- border: .5rem solid #eee;
21
- }
22
- [draggable="true"] {
23
- border: .5rem solid var(--color, #4caf50);
18
+ [draggable="false"] {
19
+ border: .5rem solid #eee;
20
+ }
21
+ [draggable="true"] {
22
+ border: .5rem solid var(--color, #4caf50);
24
23
  }
25
24
  ```
26
25
 
27
26
  ## Install
28
27
 
29
28
  ```html
30
- <script src="https://cdn.jsdelivr.net/gh/u2ui/u2@x.x.x/attr/draghandle/draghandle.min.js" type=module async></script>
29
+ <script src="https://cdn.jsdelivr.net/gh/u2ui/u2@main/attr/draghandle/draghandle.js" type=module async></script>
31
30
  ```
32
31
 
33
32
  ## Demos
34
33
 
34
+ [shadowdom.html](http://gcdn.li/u2ui/u2@main/attr/draghandle/tests/shadowdom.html)
35
35
  [minimal.html](http://gcdn.li/u2ui/u2@main/attr/draghandle/tests/minimal.html)
36
36
 
37
37
  ## About
@@ -1,42 +1,24 @@
1
- import 'https://bernardo-castilho.github.io/DragDropTouch/DragDropTouch.js';
2
-
3
- const css = `
4
- [u2-draghandle] {
5
- cursor: grab;
6
- touch-action: none; /* needed? probably yes */
7
- }
8
- `;
9
- document.head.insertAdjacentHTML('afterbegin', `<style>${css}</style>`);
10
-
11
-
12
- const root = document;
13
- // root.addEventListener("pointerdown",(e)=>{
14
- // root.releasePointerCapture(e.pointerId);
15
- // })
16
- root.addEventListener('pointerenter', e => {
17
- if (!e.target.matches) return // document
18
- if (!e.target.matches('[u2-draghandle]')) return;
19
- const draggable = e.target.closest('[draggable]');
20
- if (!draggable) console.warn('u2-draghandle: no draggable parent found');
21
- if (draggable.getAttribute('draggable') === 'true') console.warn('u2-draghandle: draggable-attribute should be empty or false, but was true');
22
- draggable.setAttribute('draggable', true);
23
- },true);
24
- root.addEventListener('pointerleave', e => {
25
- if (!e.target.matches) return // document
26
- if (!e.target.matches('[u2-draghandle]')) return;
27
- e.target.closest('[draggable]').setAttribute('draggable', 'false');
28
- },true);
29
-
30
- // desktop only
31
- // addEventListener('mouseenter', e => {
32
- // if (!e.target.matches('[u2-draghandle]')) return;
33
- // const draggable = e.target.closest('[draggable]');
34
- // if (!draggable) console.warn('u2-draghandle: no draggable parent found');
35
- // if (draggable.getAttribute('draggable') === 'true') console.warn('u2-draghandle: draggable-attribute should be empty or false, but was true');
36
- // draggable.setAttribute('draggable', true);
37
- // },true);
38
-
39
- // addEventListener('mouseleave', e => {
40
- // if (!e.target.matches('[u2-draghandle]')) return;
41
- // e.target.closest('[draggable]').setAttribute('draggable', 'false');
42
- // },true);
1
+ import 'https://bernardo-castilho.github.io/DragDropTouch/DragDropTouch.js';
2
+
3
+ const css = `
4
+ [u2-draghandle] {
5
+ cursor: grab;
6
+ touch-action: none; /* needed? probably yes */
7
+ }
8
+ `;
9
+ document.head.insertAdjacentHTML('afterbegin', `<style>${css}</style>`);
10
+
11
+
12
+ // pointermove statt pointerover/-out: Bewegungen INNERHALB eines Shadow-Roots erzeugen für einen
13
+ // document-Listener keine over/out-Events (target & relatedTarget retargeten beide auf den Host ->
14
+ // gleicher Knoten -> Event wird unterdrückt). pointermove feuert dagegen kontinuierlich, und
15
+ // composedPath()[0] liefert das echte Element unter dem Zeiger – auch im Shadow-DOM.
16
+ let activeDraggable = null;
17
+ document.addEventListener('pointermove', e => {
18
+ const handle = e.composedPath()[0]?.closest?.('[u2-draghandle]');
19
+ const draggable = handle ? handle.closest('[draggable]') : null;
20
+ if (draggable === activeDraggable) return; // kein Wechsel -> nichts tun
21
+ activeDraggable?.setAttribute('draggable', 'false');
22
+ activeDraggable = draggable;
23
+ draggable?.setAttribute('draggable', 'true');
24
+ }, true);
@@ -0,0 +1,30 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "README.md",
4
+ "modules": [{
5
+ "kind": "javascript-module",
6
+ "path": "draghandle.js",
7
+ "declarations": [{
8
+ "kind": "class",
9
+ "description": "Provides a handle to drag elements",
10
+ "name": "u2-draghandle",
11
+ "members": [],
12
+ "events": [],
13
+ "attributes": [{
14
+ "name": "u2-draghandle",
15
+ "description": "Enables the drag handle on the element",
16
+ "u2Examples": ["", "true", "false"]
17
+ }],
18
+ "cssProperties": [],
19
+ "attributeName": "u2-draghandle"
20
+ }],
21
+ "exports": [{
22
+ "kind": "custom-attribute-definition",
23
+ "name": "u2-draghandle",
24
+ "declaration": {
25
+ "name": "u2-draghandle",
26
+ "module": "draghandle.js"
27
+ }
28
+ }]
29
+ }]
30
+ }
@@ -0,0 +1,32 @@
1
+ # [u2-dropzone] - attribute
2
+ Dropzone for draggable elements. <div u2-dropzone=":scope selektor">
3
+
4
+ ## Usage
5
+
6
+ ```html
7
+ <div u2-dropzone>
8
+ <div draggable="true">item 1</div>
9
+ <div draggable="true">item 2</div>
10
+ <div draggable="true">item 3</div>
11
+ </div>
12
+ ```
13
+
14
+ ## Install
15
+
16
+ ```html
17
+ <script src="https://cdn.jsdelivr.net/gh/u2ui/u2@main/attr/dropzone/dropzone.js" type=module async></script>
18
+ ```
19
+
20
+ ## Demos
21
+
22
+ [shadowdom.html](http://gcdn.li/u2ui/u2@main/attr/dropzone/tests/shadowdom.html)
23
+ [board.html](http://gcdn.li/u2ui/u2@main/attr/dropzone/tests/board.html)
24
+ [test.html](http://gcdn.li/u2ui/u2@main/attr/dropzone/tests/test.html)
25
+ [minimal.html](http://gcdn.li/u2ui/u2@main/attr/dropzone/tests/minimal.html)
26
+ [strategies.html](http://gcdn.li/u2ui/u2@main/attr/dropzone/tests/strategies.html)
27
+
28
+ ## About
29
+
30
+ - MIT License, Copyright (c) 2022 <u2> (like all repositories in this organization) <br>
31
+ - Suggestions, ideas, finding bugs and making pull requests make us very happy. ♥
32
+