u2ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) hide show
  1. package/.htaccess +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +36 -0
  4. package/attr/behavior/README.md +25 -0
  5. package/attr/behavior/behavior.js +261 -0
  6. package/attr/behavior/manifest.json +43 -0
  7. package/attr/behavior/tests/minimal.html +19 -0
  8. package/attr/behavior/tests/test.html +98 -0
  9. package/attr/confirm/README.md +36 -0
  10. package/attr/confirm/confirm.js +90 -0
  11. package/attr/confirm/manifest.json +43 -0
  12. package/attr/confirm/tests/minimal.html +23 -0
  13. package/attr/confirm/tests/test.html +79 -0
  14. package/attr/draghandle/README.md +41 -0
  15. package/attr/draghandle/draghandle.js +42 -0
  16. package/attr/draghandle/tests/minimal.html +44 -0
  17. package/attr/focusgroup/README.md +49 -0
  18. package/attr/focusgroup/focusgroup.js +100 -0
  19. package/attr/focusgroup/manifest.json +38 -0
  20. package/attr/focusgroup/tests/minimal.html +27 -0
  21. package/attr/focusgroup/tests/test.html +154 -0
  22. package/attr/href/README.md +38 -0
  23. package/attr/href/href.js +42 -0
  24. package/attr/href/manifest.json +43 -0
  25. package/attr/href/tests/minimal.html +17 -0
  26. package/attr/href/tests/test.html +70 -0
  27. package/attr/intersect/README.md +42 -0
  28. package/attr/intersect/intersect.js +99 -0
  29. package/attr/intersect/manifest.json +57 -0
  30. package/attr/intersect/tests/minimal.html +30 -0
  31. package/attr/intersect/tests/test.html +64 -0
  32. package/attr/navigable/README.md +31 -0
  33. package/attr/navigable/TargetObserver.js +91 -0
  34. package/attr/navigable/U2TargetObserver.js +75 -0
  35. package/attr/navigable/manifest.json +42 -0
  36. package/attr/navigable/navigable.js +87 -0
  37. package/attr/navigable/tests/U1TargetObserver.html +56 -0
  38. package/attr/navigable/tests/minimal.html +17 -0
  39. package/attr/navigable/tests/targetObserver.html +106 -0
  40. package/attr/navigable/tests/test.html +84 -0
  41. package/attr/parallax/README.md +48 -0
  42. package/attr/parallax/parallax.js +119 -0
  43. package/attr/parallax/tests/minimal.html +25 -0
  44. package/attr/parallax/tests/performance.html +102 -0
  45. package/attr/parallax/tests/test.html +108 -0
  46. package/attr/skin/README.md +59 -0
  47. package/attr/skin/skin.css +51 -0
  48. package/attr/skin/tests/minimal.html +34 -0
  49. package/attr/skin/tests/test.html +96 -0
  50. package/class/badge/README.md +25 -0
  51. package/class/badge/badge.css +35 -0
  52. package/class/badge/tests/minimal.html +17 -0
  53. package/class/badge/tests/test.html +112 -0
  54. package/class/card1/README.md +45 -0
  55. package/class/card1/card1.css +30 -0
  56. package/class/card1/tests/minimal.html +33 -0
  57. package/class/card1/tests/test.html +78 -0
  58. package/class/flex/README.md +62 -0
  59. package/class/flex/flex.css +25 -0
  60. package/class/flex/tests/minimal.html +31 -0
  61. package/class/flex/tests/test.html +58 -0
  62. package/class/grid/README.md +52 -0
  63. package/class/grid/grid.css +40 -0
  64. package/class/grid/tests/minimal.html +34 -0
  65. package/class/grid/tests/test.html +78 -0
  66. package/class/input/README.md +49 -0
  67. package/class/input/input.css +33 -0
  68. package/class/input/tests/minimal.html +39 -0
  69. package/class/input/tests/test.html +29 -0
  70. package/class/reset/README.md +47 -0
  71. package/class/reset/reset.css +8 -0
  72. package/class/reset/tests/minimal.html +23 -0
  73. package/class/table/README.md +57 -0
  74. package/class/table/table.css +126 -0
  75. package/class/table/tests/minimal.html +40 -0
  76. package/class/table/tests/test.html +226 -0
  77. package/class/unstyle/README.md +32 -0
  78. package/class/unstyle/tests/minimal.html +22 -0
  79. package/class/unstyle/tests/test.html +32 -0
  80. package/class/unstyle/unstyle.css +12 -0
  81. package/class/width/README.md +48 -0
  82. package/class/width/tests/minimal.html +27 -0
  83. package/class/width/tests/test.html +101 -0
  84. package/class/width/width.css +22 -0
  85. package/css/base/README.md +25 -0
  86. package/css/base/base.css +127 -0
  87. package/css/base/beta.css +50 -0
  88. package/css/base/full.css +5 -0
  89. package/css/base/nomotion.css +9 -0
  90. package/css/base/print.css +36 -0
  91. package/css/base/tests/nomotion.html +89 -0
  92. package/css/base/tests/test.html +539 -0
  93. package/css/classes/README.md +17 -0
  94. package/css/classes/classes.css +78 -0
  95. package/css/classes/tests/test.html +63 -0
  96. package/css/classless/README.md +26 -0
  97. package/css/classless/aria.css +64 -0
  98. package/css/classless/classless.css +124 -0
  99. package/css/classless/full.css +11 -0
  100. package/css/classless/more.css +340 -0
  101. package/css/classless/simple.css +103 -0
  102. package/css/classless/snippeds/a/icons.css +12 -0
  103. package/css/classless/snippeds/experiments/conventions.css +41 -0
  104. package/css/classless/snippeds/hr/gradient.css +3 -0
  105. package/css/classless/snippeds/hr/section_sign.css +16 -0
  106. package/css/classless/snippeds/hr/tests.html +50 -0
  107. package/css/classless/tests/aria.html +101 -0
  108. package/css/classless/tests/foreign/classless-almond.css.html +445 -0
  109. package/css/classless/tests/foreign/classless-classless.css.html +831 -0
  110. package/css/classless/tests/foreign/classless-mvp.html +415 -0
  111. package/css/classless/tests/foreign/classless.sakura.html +224 -0
  112. package/css/classless/tests/foreign/stylestage.dev.html +304 -0
  113. package/css/classless/tests/foreign/test-homogenizer.html +433 -0
  114. package/css/classless/tests/foreign/test-html5-elements-tester.html +956 -0
  115. package/css/classless/tests/foreign/test-opinionated_css.html +148 -0
  116. package/css/classless/tests/list-bullet.html +110 -0
  117. package/css/classless/tests/more.html +246 -0
  118. package/css/classless/tests/oklch.experiments.html +280 -0
  119. package/css/classless/tests/test.html +106 -0
  120. package/css/classless/tests/variables.html +109 -0
  121. package/css/classless/variables.css +99 -0
  122. package/css/norm/README.md +37 -0
  123. package/css/norm/beta.css +40 -0
  124. package/css/norm/norm.css +98 -0
  125. package/css/norm/oldies.css +60 -0
  126. package/css/norm/tests/test.html +434 -0
  127. package/css/norm/tests/test.js +103 -0
  128. package/el/accordion/README.md +59 -0
  129. package/el/accordion/accordion.css +7 -0
  130. package/el/accordion/accordion.js +258 -0
  131. package/el/accordion/manifest.json +57 -0
  132. package/el/accordion/tests/minimal.html +44 -0
  133. package/el/accordion/tests/test.html +168 -0
  134. package/el/alert/README.md +67 -0
  135. package/el/alert/alert copy.js +224 -0
  136. package/el/alert/alert.css +73 -0
  137. package/el/alert/alert.js +187 -0
  138. package/el/alert/manifest.json +77 -0
  139. package/el/alert/tests/minimal.html +36 -0
  140. package/el/alert/tests/test.html +105 -0
  141. package/el/buttongroup/README.md +36 -0
  142. package/el/buttongroup/buttongroup.css +30 -0
  143. package/el/buttongroup/buttongroup.js +56 -0
  144. package/el/buttongroup/tests/minimal.html +31 -0
  145. package/el/buttongroup/tests/test.html +83 -0
  146. package/el/bytes/README.md +41 -0
  147. package/el/bytes/bytes.css +6 -0
  148. package/el/bytes/bytes.js +97 -0
  149. package/el/bytes/manifest.json +95 -0
  150. package/el/bytes/tests/minimal.html +19 -0
  151. package/el/bytes/tests/test.html +117 -0
  152. package/el/carousel/README.md +52 -0
  153. package/el/carousel/carousel.css +46 -0
  154. package/el/carousel/carousel.js +371 -0
  155. package/el/carousel/manifest.json +58 -0
  156. package/el/carousel/tests/experiments.html +77 -0
  157. package/el/carousel/tests/minimal.html +31 -0
  158. package/el/carousel/tests/nested.html +54 -0
  159. package/el/carousel/tests/test.html +136 -0
  160. package/el/carousel-nav/README.md +40 -0
  161. package/el/carousel-nav/carousel-nav.js +74 -0
  162. package/el/carousel-nav/tests/minimal.html +32 -0
  163. package/el/carousel-nav/tests/test.html +59 -0
  164. package/el/code/README.md +68 -0
  165. package/el/code/code.css +46 -0
  166. package/el/code/code.js +289 -0
  167. package/el/code/manifest.json +66 -0
  168. package/el/code/tests/minimal.html +35 -0
  169. package/el/code/tests/test.html +162 -0
  170. package/el/copy/README.md +35 -0
  171. package/el/copy/copy.css +3 -0
  172. package/el/copy/copy.js +118 -0
  173. package/el/copy/manifest.json +49 -0
  174. package/el/copy/tests/minimal.html +21 -0
  175. package/el/copy/tests/test.html +75 -0
  176. package/el/counter/README.md +47 -0
  177. package/el/counter/counter.css +8 -0
  178. package/el/counter/counter.js +95 -0
  179. package/el/counter/manifest.json +59 -0
  180. package/el/counter/tests/minimal.html +27 -0
  181. package/el/counter/tests/test.html +106 -0
  182. package/el/ico/README.md +162 -0
  183. package/el/ico/font/Font Awesome.css +22 -0
  184. package/el/ico/font/LigatureSymbols.css +7 -0
  185. package/el/ico/font/Material Icons.css +6 -0
  186. package/el/ico/font/RemixFilled.css +8 -0
  187. package/el/ico/font/RemixOutlined.css +8 -0
  188. package/el/ico/font/old/anicons.css +31 -0
  189. package/el/ico/font/old/devicons.css +210 -0
  190. package/el/ico/font/old/material.all.css +36 -0
  191. package/el/ico/font/old/remix.css +15 -0
  192. package/el/ico/font/old/utf8.css +54 -0
  193. package/el/ico/ico.css +111 -0
  194. package/el/ico/ico.js +189 -0
  195. package/el/ico/manifest.json +86 -0
  196. package/el/ico/tests/combinations.html +86 -0
  197. package/el/ico/tests/emojis.html +213 -0
  198. package/el/ico/tests/fonts.html +110 -0
  199. package/el/ico/tests/ico-directory.html +254 -0
  200. package/el/ico/tests/minimal.html +46 -0
  201. package/el/ico/tests/test.html +210 -0
  202. package/el/ico/tests/util-multi.svg +6 -0
  203. package/el/ico/tests/util.css +2 -0
  204. package/el/ico/tests/util.js +110 -0
  205. package/el/input/README.md +39 -0
  206. package/el/input/input.css +35 -0
  207. package/el/input/input.js +331 -0
  208. package/el/input/tests/formParticipation.html +113 -0
  209. package/el/input/tests/minimal.html +33 -0
  210. package/el/input/tests/test.html +258 -0
  211. package/el/masonry/README.md +51 -0
  212. package/el/masonry/manifest.json +60 -0
  213. package/el/masonry/masonry.css +27 -0
  214. package/el/masonry/masonry.js +92 -0
  215. package/el/masonry/tests/minimal.html +39 -0
  216. package/el/masonry/tests/test.html +42 -0
  217. package/el/number/README.md +47 -0
  218. package/el/number/manifest.json +121 -0
  219. package/el/number/number.css +6 -0
  220. package/el/number/number.js +67 -0
  221. package/el/number/tests/minimal.html +25 -0
  222. package/el/number/tests/test.html +138 -0
  223. package/el/out/README.md +32 -0
  224. package/el/out/manifest.json +38 -0
  225. package/el/out/out.css +2 -0
  226. package/el/out/out.js +59 -0
  227. package/el/out/tests/minimal.html +25 -0
  228. package/el/out/tests/test.html +37 -0
  229. package/el/parallax-bg/README.md +36 -0
  230. package/el/parallax-bg/parallax-bg.css +13 -0
  231. package/el/parallax-bg/parallax-bg.js +186 -0
  232. package/el/parallax-bg/tests/bg.jpg +0 -0
  233. package/el/parallax-bg/tests/bg1.jpg +0 -0
  234. package/el/parallax-bg/tests/bg2.jpg +0 -0
  235. package/el/parallax-bg/tests/demo.html +88 -0
  236. package/el/parallax-bg/tests/minimal.html +30 -0
  237. package/el/parallax-bg/tests/test.html +64 -0
  238. package/el/parallax-bg/tests/visible.html +90 -0
  239. package/el/qrcode/README.md +38 -0
  240. package/el/qrcode/manifest.json +43 -0
  241. package/el/qrcode/package.json +22 -0
  242. package/el/qrcode/qrcode.css +13 -0
  243. package/el/qrcode/qrcode.js +46 -0
  244. package/el/qrcode/tests/minimal.html +26 -0
  245. package/el/qrcode/tests/test.html +31 -0
  246. package/el/rating/README.md +45 -0
  247. package/el/rating/manifest.json +65 -0
  248. package/el/rating/rating.css +11 -0
  249. package/el/rating/rating.js +139 -0
  250. package/el/rating/tests/minimal.html +26 -0
  251. package/el/rating/tests/tests.html +77 -0
  252. package/el/rte/README.md +37 -0
  253. package/el/rte/rte.css +9 -0
  254. package/el/rte/rte.js +56 -0
  255. package/el/rte/tests/minimal.html +25 -0
  256. package/el/rte/tests/test.html +37 -0
  257. package/el/skeleton/README.md +30 -0
  258. package/el/skeleton/manifest.json +51 -0
  259. package/el/skeleton/skeleton.css +61 -0
  260. package/el/skeleton/skeleton.js +72 -0
  261. package/el/skeleton/tests/minimal.html +22 -0
  262. package/el/skeleton/tests/test.html +22 -0
  263. package/el/splitbutton/README.md +39 -0
  264. package/el/splitbutton/splitbutton.css +48 -0
  265. package/el/splitbutton/splitbutton.js +26 -0
  266. package/el/splitbutton/tests/minimal.html +30 -0
  267. package/el/splitbutton/tests/test.html +68 -0
  268. package/el/splitpanel/README.md +39 -0
  269. package/el/splitpanel/manifest.json +49 -0
  270. package/el/splitpanel/splitpanel.css +17 -0
  271. package/el/splitpanel/splitpanel.js +116 -0
  272. package/el/splitpanel/tests/minimal.html +31 -0
  273. package/el/splitpanel/tests/tests.html +121 -0
  274. package/el/table/README.md +68 -0
  275. package/el/table/manifest.json +43 -0
  276. package/el/table/table.css +59 -0
  277. package/el/table/table.js +194 -0
  278. package/el/table/tests/minimal.html +38 -0
  279. package/el/table/tests/test.html +108 -0
  280. package/el/tabs/README.md +50 -0
  281. package/el/tabs/manifest.json +59 -0
  282. package/el/tabs/tabs.css +23 -0
  283. package/el/tabs/tabs.js +210 -0
  284. package/el/tabs/tests/minimal.html +35 -0
  285. package/el/tabs/tests/test.html +180 -0
  286. package/el/textfit/README.md +34 -0
  287. package/el/textfit/manifest.json +45 -0
  288. package/el/textfit/tests/minimal.html +25 -0
  289. package/el/textfit/tests/test.html +26 -0
  290. package/el/textfit/textfit.css +6 -0
  291. package/el/textfit/textfit.js +80 -0
  292. package/el/time/README.md +72 -0
  293. package/el/time/manifest.json +118 -0
  294. package/el/time/tests/minimal.html +19 -0
  295. package/el/time/tests/test.html +160 -0
  296. package/el/time/time copy.js +141 -0
  297. package/el/time/time.js +168 -0
  298. package/el/time/time.old.uhtml.js +129 -0
  299. package/el/tooltip/README.md +48 -0
  300. package/el/tooltip/manifest.json +69 -0
  301. package/el/tooltip/tests/minimal.html +25 -0
  302. package/el/tooltip/tests/test.html +178 -0
  303. package/el/tooltip/tooltip.css +97 -0
  304. package/el/tooltip/tooltip.js +82 -0
  305. package/el/tree1/README.md +111 -0
  306. package/el/tree1/manifest.json +78 -0
  307. package/el/tree1/tests/animated.html +134 -0
  308. package/el/tree1/tests/custom.html +51 -0
  309. package/el/tree1/tests/minimal.html +44 -0
  310. package/el/tree1/tests/test.html +260 -0
  311. package/el/tree1/tree1.css +26 -0
  312. package/el/tree1/tree1.js +265 -0
  313. package/el/typewriter/README.md +62 -0
  314. package/el/typewriter/manifest.json +66 -0
  315. package/el/typewriter/tests/minimal.html +25 -0
  316. package/el/typewriter/tests/test.html +78 -0
  317. package/el/typewriter/typewriter.css +6 -0
  318. package/el/typewriter/typewriter.js +166 -0
  319. package/el/typewriter/typewriter.mp3 +0 -0
  320. package/js/Placer/Placer.js +156 -0
  321. package/js/Placer/README.md +62 -0
  322. package/js/Placer/tests/minimal.html +34 -0
  323. package/js/Placer/tests/test.html +49 -0
  324. package/js/PointerObserver/PointerObserver.js +130 -0
  325. package/js/PointerObserver/README.md +34 -0
  326. package/js/PointerObserver/tests/minimal.html +29 -0
  327. package/js/PointerObserver/tests/test.html +35 -0
  328. package/js/SelectorObserver/README.md +47 -0
  329. package/js/SelectorObserver/SelectorObserver.js +201 -0
  330. package/js/SelectorObserver/tests/minimal.html +21 -0
  331. package/js/SelectorObserver/tests/test.html +57 -0
  332. package/js/SelectorObserver/tests/tests.html +161 -0
  333. package/js/contextmenu/README.md +93 -0
  334. package/js/contextmenu/contextmenu.js +336 -0
  335. package/js/contextmenu/tests/minimal.html +44 -0
  336. package/js/contextmenu/tests/test.html +131 -0
  337. package/js/dialog/README.md +49 -0
  338. package/js/dialog/dialog.js +261 -0
  339. package/js/dialog/notification.mp3 +0 -0
  340. package/js/dialog/tests/minimal.html +29 -0
  341. package/js/dialog/tests/notification.mp3 +0 -0
  342. package/js/dialog/tests/test.html +135 -0
  343. package/js/rte/README.md +44 -0
  344. package/js/rte/old/NodeCleaner.js +315 -0
  345. package/js/rte/old/Rte/Rte.mjs +316 -0
  346. package/js/rte/old/Rte/Rte.ui.items.mjs +543 -0
  347. package/js/rte/old/Rte/Rte.ui.mjs +154 -0
  348. package/js/rte/old/Rte/crossbrowser.mjs +323 -0
  349. package/js/rte/old/Rte/font/tinymce.svg +98 -0
  350. package/js/rte/old/Rte/font/tinymce.woff +0 -0
  351. package/js/rte/old/Rte/helpers.mjs +159 -0
  352. package/js/rte/old/Rte/htmlparser.mjs +178 -0
  353. package/js/rte/old/Rte/index.mjs +5 -0
  354. package/js/rte/old/Rte/main.css +189 -0
  355. package/js/rte/old/old.rte.js +132 -0
  356. package/js/rte/old/range-selection.old.js +394 -0
  357. package/js/rte/rte.js +7 -0
  358. package/js/rte/src/behavior.js +228 -0
  359. package/js/rte/src/events.js +73 -0
  360. package/js/rte/src/fixes.js +251 -0
  361. package/js/rte/src/range.js +472 -0
  362. package/js/rte/src/rte.js +72 -0
  363. package/js/rte/src/ui/items/ai.js +167 -0
  364. package/js/rte/src/ui/items/code.js +93 -0
  365. package/js/rte/src/ui/items/undo.js +183 -0
  366. package/js/rte/src/ui.items.js +571 -0
  367. package/js/rte/src/ui.js +269 -0
  368. package/js/rte/src/util/htmlparser.js +178 -0
  369. package/js/rte/src/util/indentHtml.js +48 -0
  370. package/js/rte/tests/ai.html +81 -0
  371. package/js/rte/tests/behavior.html +88 -0
  372. package/js/rte/tests/events.html +69 -0
  373. package/js/rte/tests/fixes.html +95 -0
  374. package/js/rte/tests/minimal.html +34 -0
  375. package/js/rte/tests/notes.md +6 -0
  376. package/js/rte/tests/range.html +167 -0
  377. package/js/rte/tests/selection-explorer.html +222 -0
  378. package/js/rte/tests/test.html +92 -0
  379. package/js/shortcut/README.md +33 -0
  380. package/js/shortcut/shortcut.js +89 -0
  381. package/js/shortcut/tests/minimal.html +23 -0
  382. package/js/shortcut/tests/test.html +68 -0
  383. package/package.json +12 -0
  384. package/u2/README.md +4 -0
  385. package/u2/auto.js +161 -0
  386. package/u2/auto.ui.js +85 -0
  387. package/u2/experiments/Waiter/test.html +132 -0
  388. package/u2/experiments/getElementByIdPromise/test.html +76 -0
  389. package/u2/experiments/patchInputValue.html +124 -0
  390. package/u2/experiments/radiobutton/test.html +75 -0
  391. package/u2/experiments/tests/test.html +223 -0
  392. package/u2/experiments/u1-responsive/responsive.js +62 -0
  393. package/u2/experiments/u1-responsive/test.html +65 -0
  394. package/u2/experiments/u2Element.js +139 -0
  395. package/u2/experiments/u2Element.test.html +47 -0
  396. package/u2/old-stuff/IterableWeakMap/mod.js +70 -0
  397. package/u2/old-stuff/css/onStyleSheet/mod.js +114 -0
  398. package/u2/old-stuff/css/onStyleSheet/monkeypatches.js +28 -0
  399. package/u2/old-stuff/css/onStyleSheet/test/include.css +19 -0
  400. package/u2/old-stuff/css/onStyleSheet/test/style-has-include.css +6 -0
  401. package/u2/old-stuff/css/onStyleSheet/test/style-no-include.css +3 -0
  402. package/u2/old-stuff/css/onStyleSheet/test/test.html +48 -0
  403. package/u2/old-stuff/css/parser/mod.js +182 -0
  404. package/u2/old-stuff/css/parser/parser_old/mod.js +128 -0
  405. package/u2/old-stuff/css/parser/parser_old/test.html +43 -0
  406. package/u2/old-stuff/css/parser/parser_old/util.js +22 -0
  407. package/u2/old-stuff/css/parser/style.html +52 -0
  408. package/u2/old-stuff/css/parser/test.html +38 -0
  409. package/u2/old-stuff/el/ai-texter/README.md +23 -0
  410. package/u2/old-stuff/el/ai-texter/ai-texter.css +12 -0
  411. package/u2/old-stuff/el/ai-texter/ai-texter.js +153 -0
  412. package/u2/old-stuff/el/ai-texter/tests/minimal.html +47 -0
  413. package/u2/old-stuff/el/ai-texter/tests/test.html +71 -0
  414. package/u2/old-stuff/init.js +38 -0
  415. package/u2/old-stuff/markHashLinks.js +51 -0
  416. package/u2/old-stuff/onElement/mod.js +73 -0
  417. package/u2/old-stuff/test-helpers/mod.js +36 -0
  418. package/u2/old-stuff/test-helpers/test.html +4 -0
  419. package/u2/old-stuff/tests/init.js.html +51 -0
  420. package/u2/old-stuff/viewport.js +64 -0
  421. package/u2/projects.json +468 -0
  422. package/u2/tests/boilerplate.html +46 -0
  423. package/u2/tests/kacheln.html +245 -0
  424. package/u2/tests/showcase.html +270 -0
  425. package/u2/tests/showcase2.html +157 -0
  426. package/u2/tests/test-init.js +35 -0
  427. package/u2/tests/test.html +355 -0
  428. package/u2/tools/baseElement.js +95 -0
  429. package/u2/tools/baseElement.test.html +119 -0
  430. package/u2/tools/ce-inspector.js +308 -0
  431. package/u2/tools/ce-inspector.test.html +66 -0
  432. package/u2/tools/ce-manfest-from-element.js +207 -0
  433. package/u2/tools/dev-iframe.js +213 -0
  434. package/u2/tools/dev-iframe.test.html +75 -0
  435. package/u2/tools/eventsExplorer.js +101 -0
  436. package/u2/tools/logo/u1.svg +9 -0
  437. package/u2/tools/logo/u1ui.svg +6 -0
  438. package/u2/tools/update.repos.json.js +234 -0
  439. package/u2/u2.js +14 -0
  440. package/u2/utils.js +59 -0
@@ -0,0 +1,59 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "README.md",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "tabs.js",
8
+ "declarations": [
9
+ {
10
+ "kind": "class",
11
+ "description": "",
12
+ "name": "tabs",
13
+ "members": [
14
+ {
15
+ "kind": "property",
16
+ "name": "select",
17
+ "description": "Set or get the selected tab by index (0-n)"
18
+ }
19
+ ],
20
+ "events": [
21
+ {
22
+ "name": "u2-activate"
23
+ }
24
+ ],
25
+ "attributes": [
26
+ {
27
+ "name": "selected",
28
+ "description": "Set or get the selected tab by index (0-n)",
29
+ "type": "number"
30
+ }
31
+ ],
32
+ "cssParts": [
33
+ {
34
+ "name": "tablist",
35
+ "description": "The tab list container"
36
+ },{
37
+ "name": "panels",
38
+ "description": "The tab panels container"
39
+ }
40
+
41
+ ],
42
+ "superclass": { "name": "HTMLElement" },
43
+ "tagName": "u2-tabs",
44
+ "customElement": true
45
+ }
46
+ ],
47
+ "exports": [
48
+ {
49
+ "kind": "custom-element-definition",
50
+ "name": "u2-tabs",
51
+ "declaration": {
52
+ "name": "tabs",
53
+ "module": "tabs.js"
54
+ }
55
+ }
56
+ ]
57
+ }
58
+ ]
59
+ }
@@ -0,0 +1,23 @@
1
+ /*
2
+ there are no style-fallbacks for tabs, as without js, they should be headings and paragraphs
3
+ */
4
+
5
+ u2-tabs [role="tab"] {
6
+ border-bottom: solid transparent;
7
+ white-space: nowrap;
8
+ cursor: pointer;
9
+ padding: .4rem 1rem;
10
+ margin: 0;
11
+ font-size:1rem;
12
+ font-weight:bold;
13
+ outline:0;
14
+ }
15
+ u2-tabs [role="tab"][aria-selected="true"] {
16
+ border-bottom-color: var(--color);
17
+ }
18
+ u2-tabs [role="tab"]:hover, [role="tab"]:focus {
19
+ background-color: #0000000a;
20
+ }
21
+ u2-tabs [role="tabpanel"] {
22
+ padding: 1rem;
23
+ }
@@ -0,0 +1,210 @@
1
+ // See https://www.w3.org/TR/wai-aria-practices-1.1/#tabpanel
2
+
3
+ const tagToTab = {
4
+ H1:1,
5
+ H2:1,
6
+ H3:1,
7
+ H4:1,
8
+ H5:1,
9
+ H6:1,
10
+ BUTTON:1,
11
+ };
12
+
13
+ customElements.define('u2-tabs', class extends HTMLElement {
14
+
15
+ constructor() {
16
+ super();
17
+ let shadowRoot = this.attachShadow({ mode: 'open' });
18
+ shadowRoot.innerHTML = `
19
+ <style>
20
+ :host {
21
+ display: flex;
22
+ flex-direction:column;
23
+ }
24
+ #tabs {
25
+ flex:0 0 auto;
26
+ display:flex;
27
+ overflow: auto;
28
+ scroll-snap-type: x mandatory;
29
+ scrollbar-width: none; /* hide scrollbars Firefox */
30
+ }
31
+ #tabs::-webkit-scrollbar {
32
+ display:none; /* hide scrollbars (Safari and Chrome) */
33
+ }
34
+ #panels {
35
+ display:grid;
36
+ min-height:0;
37
+ }
38
+ #panels::slotted(*) {
39
+ grid-area:1/1;
40
+ overflow:auto;
41
+ opacity:1;
42
+ display:block;
43
+ }
44
+ #panels::slotted([hidden="until-found"]) {
45
+ content-visibility:visible;
46
+ opacity:0;
47
+ z-index:-1;
48
+ }
49
+ </style>
50
+ <slot part=tablist id=tabs name=title role=tablist></slot>
51
+ <slot part=panels id=panels></slot>
52
+ `;
53
+ // slot tablist: when i add tabindex=-1, tabs are also no more keyboard focusable! (tested ch,ff) Why?
54
+
55
+ // Save refer to we can remove listeners later.
56
+ this._onTitleClick = this._onTitleClick.bind(this);
57
+ this._onKeyDown = this._onKeyDown.bind(this);
58
+
59
+ this.addEventListener('beforematch', e=>{
60
+ let el = e.target;
61
+ while (el && el.parentNode) {
62
+ if (el.parentNode === this) {
63
+ e.preventDefault();
64
+ this.selected = this.tabs.indexOf(el.previousElementSibling);
65
+ return;
66
+ }
67
+ el = el.parentElement;
68
+ }
69
+ })
70
+ }
71
+
72
+ get selected() {
73
+ return this._selected;
74
+ }
75
+
76
+ set selected(index) {
77
+ this._selected = index;
78
+ this._selectTab(index);
79
+ this.setAttribute('selected', index);
80
+ }
81
+ _selectTab(idx = null) { // todo? merge into `set selected()`?
82
+ for (let i = 0, tab; tab = this.tabs[i]; ++i) {
83
+ let select = i === idx;
84
+ tab.setAttribute('tabindex', select ? 0 : -1);
85
+ tab.setAttribute('aria-selected', select);
86
+ this.panels[i].setAttribute('tabindex', select ? 0 : -1); // chrome needs tabindex=-1 for scrollable areas
87
+ if (select) {
88
+ this.panels[i].removeAttribute('hidden');
89
+ } else {
90
+ this.panels[i].setAttribute('hidden', 'until-found');
91
+ }
92
+ }
93
+ }
94
+
95
+ connectedCallback() {
96
+ const tabsSlot = this.shadowRoot.querySelector('#tabs');
97
+ const panelsSlot = this.shadowRoot.querySelector('#panels');
98
+
99
+ for (let child of this.children) if (tagToTab[child.tagName]) child.slot = 'title';
100
+
101
+ const update = ()=>{
102
+ this.tabs = tabsSlot.assignedNodes({flatten: true});
103
+ this.panels = panelsSlot.assignedNodes({flatten: true}).filter(el => el.nodeType === Node.ELEMENT_NODE);
104
+ for (let panel of this.panels.values()) {
105
+ panel.setAttribute('role', 'tabpanel');
106
+ }
107
+ for (let tab of this.tabs.values()) {
108
+ tab.setAttribute('role', 'tab');
109
+ }
110
+ this.selected = this.selected;
111
+ }
112
+
113
+ update();
114
+ tabsSlot.addEventListener('slotchange', update);
115
+ panelsSlot.addEventListener('slotchange', update);
116
+
117
+ tabsSlot.addEventListener('click', this._onTitleClick);
118
+ tabsSlot.addEventListener('keydown', this._onKeyDown);
119
+
120
+ this.selected = this._findFirstSelectedTab() || 0;
121
+ }
122
+
123
+ disconnectedCallback() {
124
+ const tabsSlot = this.shadowRoot.querySelector('#tabs');
125
+ tabsSlot.removeEventListener('click', this._onTitleClick);
126
+ tabsSlot.removeEventListener('keydown', this._onKeyDown);
127
+ }
128
+
129
+ _onTitleClick({target}) {
130
+ if (target.slot === 'title') { // todo closest?
131
+
132
+ // beta, should not be here but in "_selectTab"?
133
+ let event = new CustomEvent('u2-activate', { bubbles: true, cancelable: true });
134
+ target.dispatchEvent(event);
135
+ if (event.defaultPrevented) return;
136
+
137
+ this.selected = this.tabs.indexOf(target);
138
+
139
+ target.scrollIntoView({
140
+ behavior: 'smooth',
141
+ block: 'nearest',
142
+ inline: 'center'
143
+ });
144
+
145
+ target.focus();
146
+ }
147
+ }
148
+
149
+ _onKeyDown(e) {
150
+ if (e.ctrlKey || e.altKey || e.metaKey) return;
151
+ let index;
152
+ switch (e.code) {
153
+ case 'ArrowUp': case 'ArrowLeft':
154
+ index = this.selected - 1;
155
+ break;
156
+ case 'ArrowDown': case 'ArrowRight':
157
+ index = this.selected + 1;
158
+ break;
159
+ default:
160
+ return
161
+ }
162
+ e.preventDefault();
163
+ this.tabs[index] && this.tabs[index].click();
164
+
165
+ }
166
+
167
+ _findFirstSelectedTab() {
168
+ let index;
169
+ for (let [i, tab] of this.tabs.entries()) {
170
+ if (tab.hasAttribute('selected')) index = i;
171
+ }
172
+ return index;
173
+ }
174
+
175
+ static observedAttributes = ['selected'];
176
+ attributeChangedCallback(name, oldValue, newValue) {
177
+ if (oldValue === newValue) return;
178
+ if (name === 'selected') {
179
+ this.selected = parseInt(newValue);
180
+ }
181
+ }
182
+
183
+ });
184
+
185
+ // beta, does not work if initial u2-target is already fired
186
+ // problem: sometimes, on initial load, the event is fired before the listener is added
187
+ document.addEventListener('u2-target', e => {
188
+ let tabs = document.querySelectorAll('u2-tabs > :target');
189
+ for (let tab of tabs) tab.click();
190
+ });
191
+
192
+
193
+ /* slide
194
+ :host #panels {
195
+ border: 2px solid;
196
+ display:flex;
197
+ overflow:hidden;
198
+ }
199
+ :host #panels::slotted(*) {
200
+ flex:1 0 100%;
201
+ opacity:1;
202
+ visibility:visible;
203
+ }
204
+ _selectTab(idx = null) {
205
+ for (let i = 0, tab; tab = this.tabs[i]; ++i) {
206
+ ...
207
+ //if (select) this.panels[i].scrollIntoView({behavior: 'smooth'});
208
+ }
209
+ }
210
+ */
@@ -0,0 +1,35 @@
1
+ <!DOCTYPE html>
2
+ <html lang=en>
3
+ <head>
4
+ <meta charset=utf-8>
5
+ <meta name=viewport content="width=device-width">
6
+
7
+ <link href="../../../css/classless/full.css" rel=stylesheet>
8
+ <link href="../../../css/classless/simple.css" rel=stylesheet>
9
+ <link href="../../../attr/skin/skin.css" rel=stylesheet>
10
+
11
+ <link rel=stylesheet href="../tabs.css">
12
+ <script src="../tabs.js" type=module async></script>
13
+
14
+ <body>
15
+
16
+ <section class=main>
17
+ <u2-tabs>
18
+ <h4>Tab 1</h4>
19
+ <article>
20
+ Content 1, consectetur adipisicing elit, sed do eiusmod tempor
21
+ incididunt ut labore et dolore magna aliqua.
22
+ </article>
23
+ <h4>Tab 2</h4>
24
+ <article>
25
+ Content 2, lorem ipsum dolor sit amet, consectetur adipisicing elit
26
+ sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
27
+ </article>
28
+ </u2-tabs>
29
+ </section>
30
+
31
+ <style class=main>
32
+ u2-tabs {
33
+ max-height:30rem;
34
+ }
35
+ </style>
@@ -0,0 +1,180 @@
1
+ <!DOCTYPE HTML>
2
+ <html lang=en>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name=viewport content="width=device-width">
6
+
7
+ <link rel=stylesheet href="../../../css/classless/full.css">
8
+ <!--link rel=stylesheet href="../../../css/classless/aria.css"-->
9
+ <link rel=stylesheet href="../../../css/classless/simple.css">
10
+
11
+
12
+ <link rel=stylesheet href="../tabs.css">
13
+ <script src="../tabs.js" type=module async></script>
14
+
15
+ <script type=module async src=../../../attr/navigatable/navigatable.js crossorigin></script>
16
+
17
+ </head>
18
+
19
+ <body>
20
+
21
+ <header>
22
+ <h1>u2-tabs tests</h1>
23
+ As you use the browsers search funktion, you find the contents of the tab-panels. (chrome for now)
24
+ </header>
25
+
26
+ <section>
27
+ <h2>Simple Tablist</h2>
28
+ <u2-tabs>
29
+ <h2>H2 as Tab</h2>
30
+ <section>Heading Elements (h1-h6) are automatically used as tabs</section>
31
+ <div slot=title>Div as Tab</div>
32
+ <section>If you like to use other Elements as tabs, you have to add the attribute <code>slot="title"</code></section>
33
+ <h2>Title 3</h2>
34
+ <section>content panel 3</section>
35
+ </u2-tabs>
36
+ </section>
37
+
38
+ <section>
39
+ <h2>Tablist browser-navigatable tabs (beta)</h2>
40
+ <u2-tabs>
41
+ <h2 u2-navigatable id="nav1">H2 as Tab</h2>
42
+ <section>Heading Elements (h1-h6) are automatically used as tabs</section>
43
+ <div slot=title u2-navigatable id="nav2">Div as Tab</div>
44
+ <section>If you like to use other Elements as tabs, you have to add the attribute <code>slot="title"</code></section>
45
+ <h2 u2-navigatable id="nav3">Title 3</h2>
46
+ <section>content panel 3</section>
47
+ </u2-tabs>
48
+ </section>
49
+
50
+ <section>
51
+ <h2>max-height</h2>
52
+ <u2-tabs style="max-height:20rem">
53
+ <h2>Title</h2>
54
+ <section>
55
+ <p>Phosfluorescently aggregate premium collaboration and idea-sharing through strategic e-commerce. Authoritatively negotiate error-free channels through value-added processes. Globally matrix superior manufactured products whereas dynamic markets. Authoritatively disintermediate sustainable initiatives via revolutionary quality vectors. Monotonectally expedite fully tested synergy before transparent imperatives.</p>
56
+ <p>Synergistically envisioneer team building ideas via competitive methodologies. Synergistically embrace sustainable relationships via adaptive benefits. Phosfluorescently integrate cross-unit technologies with cross-platform growth strategies. Globally reconceptualize bleeding-edge paradigms for turnkey technology. Interactively monetize efficient human capital rather than an expanded array of synergy.</p>
57
+ <p>Uniquely expedite interactive services rather than functionalized opportunities. Compellingly synthesize dynamic information and worldwide initiatives. Competently reintermediate sustainable networks through resource sucking manufactured products. Phosfluorescently synergize cross-platform mindshare and market-driven expertise. Competently innovate cutting-edge methodologies vis-a-vis fully researched action items.</p>
58
+ <p>Credibly maintain reliable synergy before cutting-edge leadership. Efficiently enable efficient strategic theme areas before timely ROI. Phosfluorescently integrate standardized customer service through cross functional synergy. Objectively matrix high-payoff expertise without standardized users. Monotonectally engineer B2B opportunities via functional supply chains.</p>
59
+ <p>Uniquely synthesize resource sucking leadership skills before multimedia based leadership skills. Interactively restore visionary innovation whereas end-to-end platforms. Compellingly evisculate client-centered human capital after value-added e-markets. Compellingly whiteboard high standards in vortals vis-a-vis.</p>
60
+ </section>
61
+ <h2>Title 2</h2>
62
+ <section>content panel 2</section>
63
+ <h2>Title 3</h2>
64
+ <section>content panel 3</section>
65
+ </u2-tabs>
66
+ </section>
67
+
68
+ <section>
69
+ <h2>Too many tabs</h2>
70
+ <u2-tabs>
71
+ <h2>Title</h2>
72
+ <section>content panel 1</section>
73
+ <h2>Title 2</h2>
74
+ <section>content panel 2</section>
75
+ <h2>Title 3</h2>
76
+ <section>content panel 3</section>
77
+ <h2>Title 4</h2>
78
+ <section>content panel 4</section>
79
+ <h2>Title 5</h2>
80
+ <section>content panel 5</section>
81
+ <h2>Title 6</h2>
82
+ <section>content panel 6</section>
83
+ <h2>Title 7</h2>
84
+ <section>content panel 7</section>
85
+ <h2>Title 8</h2>
86
+ <section>content panel 8</section>
87
+ <h2>Title 9</h2>
88
+ <section>content panel 9</section>
89
+ <h2>Title 10</h2>
90
+ <section>content panel 10</section>
91
+ <h2>Title 11</h2>
92
+ <section>content panel 11</section>
93
+ <h2>Title 12</h2>
94
+ <section>content panel 12</section>
95
+ </u2-tabs>
96
+ </section>
97
+
98
+ <section>
99
+ <h2>Nested</h2>
100
+ <u2-tabs>
101
+ <h2>Title 1</h2>
102
+
103
+ <u2-tabs>
104
+ <h3>Item 1.1</h3>
105
+ <section>Item 1 content</section>
106
+ <h3>Item 1.2</h3>
107
+ <section>Item 2 content</section>
108
+ <h3>Item 1.3</h3>
109
+ <section>Item 3 content</section>
110
+ <h3>Item 1.4</h3>
111
+ <section>Item 1 content</section>
112
+ </u2-tabs>
113
+
114
+ <h2>Title 2</h2>
115
+ <section>content panel 2</section>
116
+ <h2>Title 3</h2>
117
+ <section>content panel 3</section>
118
+ <h2>Title</h2>
119
+ <section>content panel 1</section>
120
+ </u2-tabs>
121
+ </section>
122
+
123
+
124
+ <style>
125
+ #styled u2-tabs {
126
+ border-radius: .5rem;
127
+ border:1px solid;
128
+ overflow:hidden;
129
+ box-shadow:var(--shadow);
130
+ }
131
+ #styled u2-tabs::part(tablist) {
132
+ justify-content: center;
133
+ color:#fff;
134
+ background:var(--color);
135
+ }
136
+ #styled u2-tabs::part(panels) {
137
+ background:#eee8;
138
+ }
139
+ #styled u2-tabs [role="tab"] {
140
+ padding:.5rem 1rem;
141
+ }
142
+ #styled u2-tabs [role="tab"][aria-selected="true"] {
143
+ border-bottom-color: transparent;
144
+ background:#0003;
145
+ }
146
+ #styled u2-tabs [role="tab"]:focus {
147
+ border-bottom-color: transparent;
148
+ background:#0005;
149
+ }
150
+ #styled [role=tabpanel] {
151
+ transition:.6s;
152
+ }
153
+ </style>
154
+
155
+ <section id=styled>
156
+ <h2>Nested, styled</h2>
157
+ <u2-tabs>
158
+ <h2>Title 1</h2>
159
+
160
+ <div>
161
+ <u2-tabs>
162
+ <h3>Item 1.1</h3>
163
+ <section>Item 1 content</section>
164
+ <h3>Item 1.2</h3>
165
+ <section>Item 2 content</section>
166
+ <h3>Item 1.3</h3>
167
+ <section>Item 3 content</section>
168
+ <h3>Item 1.4</h3>
169
+ <section>Item 1 content</section>
170
+ </u2-tabs>
171
+ </div>
172
+
173
+ <h2>Title 2</h2>
174
+ <section>content panel 2</section>
175
+ <h2>Title 3</h2>
176
+ <section>content panel 3</section>
177
+ <h2>Title</h2>
178
+ <section>content panel 1</section>
179
+ </u2-tabs>
180
+ </section>
@@ -0,0 +1,34 @@
1
+ # &lt;u2-textfit&gt; - element
2
+ Exactly fit text
3
+
4
+ ## Usage
5
+
6
+ ```html
7
+ <u2-textfit>
8
+ <span contenteditable>Textfit</span>
9
+ </u2-textfit>
10
+ ```
11
+
12
+ ```css
13
+ u2-textfit {
14
+ font-size: clamp(20px, var(--js-font-size), 400px);
15
+ }
16
+ ```
17
+
18
+ ## Install
19
+
20
+ ```html
21
+ <link href="https://cdn.jsdelivr.net/gh/u2ui/u2@x.x.x/el/textfit/textfit.min.css" rel=stylesheet>
22
+ <script src="https://cdn.jsdelivr.net/gh/u2ui/u2@x.x.x/el/textfit/textfit.min.js" type=module async></script>
23
+ ```
24
+
25
+ ## Demos
26
+
27
+ [minimal.html](http://gcdn.li/u2ui/u2@main/el/textfit/tests/minimal.html)
28
+ [test.html](http://gcdn.li/u2ui/u2@main/el/textfit/tests/test.html)
29
+
30
+ ## About
31
+
32
+ - MIT License, Copyright (c) 2022 <u2> (like all repositories in this organization) <br>
33
+ - Suggestions, ideas, finding bugs and making pull requests make us very happy. ♥
34
+
@@ -0,0 +1,45 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "README.md",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "textfit.js",
8
+ "declarations": [
9
+ {
10
+ "kind": "class",
11
+ "description": "",
12
+ "name": "textfit",
13
+ "members": [
14
+ ],
15
+ "events": [
16
+ ],
17
+ "attributes": [
18
+ ],
19
+ "cssProperties": [
20
+ {
21
+ "name": "--js-font-size",
22
+ "syntax": "<length>",
23
+ "description": "Read only! The optimal font-size. This var can be used like this: font-size: clamp(14px, var(--js-font-size), 24px);"
24
+ }
25
+ ],
26
+ "cssParts": [
27
+ ],
28
+ "superclass": { "name": "HTMLElement" },
29
+ "tagName": "u2-textfit",
30
+ "customElement": true
31
+ }
32
+ ],
33
+ "exports": [
34
+ {
35
+ "kind": "custom-element-definition",
36
+ "name": "u2-textfit",
37
+ "declaration": {
38
+ "name": "textfit",
39
+ "module": "textfit.js"
40
+ }
41
+ }
42
+ ]
43
+ }
44
+ ]
45
+ }
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html lang=en>
3
+ <head>
4
+ <meta charset=utf-8>
5
+ <meta name=viewport content="width=device-width">
6
+
7
+ <link rel=stylesheet href="../../../css/classless/full.css">
8
+ <link rel=stylesheet href="../../../css/classless/simple.css">
9
+
10
+ <link href="../textfit.css" rel=stylesheet>
11
+ <script src="../textfit.js" type=module async></script>
12
+
13
+ <body>
14
+
15
+ <section class="main">
16
+ <u2-textfit>
17
+ <span contenteditable>Textfit</span>
18
+ </u2-textfit>
19
+ </section>
20
+
21
+ <style class="main">
22
+ u2-textfit {
23
+ font-size: clamp(20px, var(--js-font-size), 400px);
24
+ }
25
+ </style>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE HTML>
2
+ <html lang=en>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name=viewport content="width=device-width">
6
+ <script src="../../../u2/tests/test-init.js" type=module async></script>
7
+
8
+ <link rel=stylesheet href="../../../css/classless/full.css">
9
+ <link rel=stylesheet href="../../../css/classless/simple.css">
10
+
11
+
12
+ <link rel=stylesheet href="../textfit.css">
13
+ <script src="../textfit.js" type=module async></script>
14
+
15
+ </head>
16
+
17
+ <body>
18
+
19
+ <section>
20
+
21
+ <div style="max-width:10rem; margin:auto; background-color:#eee; padding:1em">
22
+ <u2-textfit contenteditable>CSS IS</u2-textfit>
23
+ <u2-textfit contenteditable style="font-weight:bold">AWESOME</u2-textfit>
24
+ </div>
25
+
26
+ </section>
@@ -0,0 +1,6 @@
1
+ u2-textfit {
2
+ display:block;
3
+ white-space:nowrap;
4
+ font-size:var(--js-font-size);
5
+ font-size: clamp(11px, var(--js-font-size), 400px);
6
+ }