@soxa-ui/plugins 0.0.0-stage → 0.3.0-beta.1

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 (630) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +125 -2
  3. package/dist/base/base.class.d.ts +54 -0
  4. package/dist/base/base.class.js +69 -0
  5. package/dist/base/bundle.class.d.ts +25 -0
  6. package/dist/base/bundle.class.js +68 -0
  7. package/dist/base/index.d.ts +3 -0
  8. package/dist/base/types.d.ts +147 -0
  9. package/dist/custom/accordion/header.d.ts +19 -0
  10. package/dist/custom/accordion/header.js +38 -0
  11. package/dist/custom/accordion/index.d.ts +2 -0
  12. package/dist/custom/accordion/item-ids/index.d.ts +1 -0
  13. package/dist/custom/accordion/item-ids/item-ids.plugin.d.ts +24 -0
  14. package/dist/custom/accordion/item-ids/item-ids.plugin.js +44 -0
  15. package/dist/custom/action/action.plugin.d.ts +178 -0
  16. package/dist/custom/action/action.plugin.js +339 -0
  17. package/dist/custom/action/index.d.ts +2 -0
  18. package/dist/custom/action/types.d.ts +65 -0
  19. package/dist/custom/calendar/ids/ids.plugin.d.ts +25 -0
  20. package/dist/custom/calendar/ids/ids.plugin.js +44 -0
  21. package/dist/custom/calendar/ids/index.d.ts +1 -0
  22. package/dist/custom/calendar/index.d.ts +5 -0
  23. package/dist/custom/calendar/keyboard/index.d.ts +2 -0
  24. package/dist/custom/calendar/keyboard/keyboard.plugin.d.ts +114 -0
  25. package/dist/custom/calendar/keyboard/keyboard.plugin.js +249 -0
  26. package/dist/custom/calendar/keyboard/types.d.ts +16 -0
  27. package/dist/custom/calendar/names/index.d.ts +1 -0
  28. package/dist/custom/calendar/names/names.plugin.d.ts +24 -0
  29. package/dist/custom/calendar/names/names.plugin.js +45 -0
  30. package/dist/custom/calendar/parts.d.ts +58 -0
  31. package/dist/custom/calendar/parts.js +119 -0
  32. package/dist/custom/calendar/pointer/index.d.ts +2 -0
  33. package/dist/custom/calendar/pointer/pointer.plugin.d.ts +58 -0
  34. package/dist/custom/calendar/pointer/pointer.plugin.js +144 -0
  35. package/dist/custom/calendar/pointer/types.d.ts +6 -0
  36. package/dist/custom/calendar/stop.d.ts +20 -0
  37. package/dist/custom/calendar/stop.js +32 -0
  38. package/dist/custom/calendar/types.d.ts +16 -0
  39. package/dist/custom/clearable/index.d.ts +1 -0
  40. package/dist/custom/clearable/names/index.d.ts +1 -0
  41. package/dist/custom/clearable/names/names.plugin.d.ts +24 -0
  42. package/dist/custom/clearable/names/names.plugin.js +29 -0
  43. package/dist/custom/collection/bundles.plugin.d.ts +55 -0
  44. package/dist/custom/collection/bundles.plugin.js +100 -0
  45. package/dist/custom/collection/collection-bundles-access.plugin.d.ts +29 -0
  46. package/dist/custom/collection/collection-bundles-access.plugin.js +44 -0
  47. package/dist/custom/collection/collection-elements.plugin.d.ts +55 -0
  48. package/dist/custom/collection/collection-elements.plugin.js +100 -0
  49. package/dist/custom/collection/index.d.ts +4 -0
  50. package/dist/custom/collection/leaving-focus.d.ts +119 -0
  51. package/dist/custom/collection/leaving-focus.js +164 -0
  52. package/dist/custom/collection/reachable.d.ts +14 -0
  53. package/dist/custom/collection/reachable.js +18 -0
  54. package/dist/custom/collection/types.d.ts +14 -0
  55. package/dist/custom/component-view/aria.plugin.d.ts +102 -0
  56. package/dist/custom/component-view/aria.plugin.js +190 -0
  57. package/dist/custom/component-view/index.d.ts +2 -0
  58. package/dist/custom/component-view/types.d.ts +62 -0
  59. package/dist/custom/date-input/clipboard/clipboard.plugin.d.ts +41 -0
  60. package/dist/custom/date-input/clipboard/clipboard.plugin.js +98 -0
  61. package/dist/custom/date-input/clipboard/index.d.ts +2 -0
  62. package/dist/custom/date-input/clipboard/types.d.ts +6 -0
  63. package/dist/custom/date-input/ids/ids.plugin.d.ts +21 -0
  64. package/dist/custom/date-input/ids/ids.plugin.js +28 -0
  65. package/dist/custom/date-input/ids/index.d.ts +1 -0
  66. package/dist/custom/date-input/index.d.ts +6 -0
  67. package/dist/custom/date-input/keyboard/index.d.ts +2 -0
  68. package/dist/custom/date-input/keyboard/keyboard.plugin.d.ts +54 -0
  69. package/dist/custom/date-input/keyboard/keyboard.plugin.js +154 -0
  70. package/dist/custom/date-input/keyboard/types.d.ts +9 -0
  71. package/dist/custom/date-input/parts.d.ts +49 -0
  72. package/dist/custom/date-input/parts.js +127 -0
  73. package/dist/custom/date-input/pointer/index.d.ts +2 -0
  74. package/dist/custom/date-input/pointer/pointer.plugin.d.ts +51 -0
  75. package/dist/custom/date-input/pointer/pointer.plugin.js +141 -0
  76. package/dist/custom/date-input/pointer/types.d.ts +6 -0
  77. package/dist/custom/date-input/touch/index.d.ts +2 -0
  78. package/dist/custom/date-input/touch/touch.plugin.d.ts +100 -0
  79. package/dist/custom/date-input/touch/touch.plugin.js +276 -0
  80. package/dist/custom/date-input/touch/types.d.ts +6 -0
  81. package/dist/custom/date-input/types.d.ts +6 -0
  82. package/dist/custom/date-picker/field.d.ts +20 -0
  83. package/dist/custom/date-picker/field.js +27 -0
  84. package/dist/custom/date-picker/focus/focus.plugin.d.ts +56 -0
  85. package/dist/custom/date-picker/focus/focus.plugin.js +81 -0
  86. package/dist/custom/date-picker/focus/index.d.ts +2 -0
  87. package/dist/custom/date-picker/focus/types.d.ts +3 -0
  88. package/dist/custom/date-picker/ids/ids.plugin.d.ts +19 -0
  89. package/dist/custom/date-picker/ids/ids.plugin.js +28 -0
  90. package/dist/custom/date-picker/ids/index.d.ts +1 -0
  91. package/dist/custom/date-picker/index.d.ts +5 -0
  92. package/dist/custom/date-picker/names/index.d.ts +2 -0
  93. package/dist/custom/date-picker/names/names.plugin.d.ts +33 -0
  94. package/dist/custom/date-picker/names/names.plugin.js +80 -0
  95. package/dist/custom/date-picker/names/types.d.ts +12 -0
  96. package/dist/custom/date-picker/trigger/index.d.ts +2 -0
  97. package/dist/custom/date-picker/trigger/trigger.plugin.d.ts +37 -0
  98. package/dist/custom/date-picker/trigger/trigger.plugin.js +69 -0
  99. package/dist/custom/date-picker/trigger/types.d.ts +3 -0
  100. package/dist/custom/dialog/ids/ids.plugin.d.ts +15 -0
  101. package/dist/custom/dialog/ids/ids.plugin.js +28 -0
  102. package/dist/custom/dialog/ids/index.d.ts +1 -0
  103. package/dist/custom/dialog/index.d.ts +3 -0
  104. package/dist/custom/dialog/layout/index.d.ts +3 -0
  105. package/dist/custom/dialog/layout/layout.plugin.d.ts +42 -0
  106. package/dist/custom/dialog/layout/layout.plugin.js +78 -0
  107. package/dist/custom/dialog/layout/offset-event.d.ts +35 -0
  108. package/dist/custom/dialog/layout/offset-event.js +44 -0
  109. package/dist/custom/dialog/layout/types.d.ts +12 -0
  110. package/dist/custom/dialog/names/index.d.ts +1 -0
  111. package/dist/custom/dialog/names/names.plugin.d.ts +13 -0
  112. package/dist/custom/dialog/names/names.plugin.js +17 -0
  113. package/dist/custom/dismiss/dismiss.plugin.d.ts +174 -0
  114. package/dist/custom/dismiss/dismiss.plugin.js +287 -0
  115. package/dist/custom/dismiss/index.d.ts +2 -0
  116. package/dist/custom/dismiss/types.d.ts +59 -0
  117. package/dist/custom/drag-and-drop/drag.plugin.d.ts +87 -0
  118. package/dist/custom/drag-and-drop/drag.plugin.js +310 -0
  119. package/dist/custom/drag-and-drop/index.d.ts +2 -0
  120. package/dist/custom/drag-and-drop/types.d.ts +13 -0
  121. package/dist/custom/drawer/index.d.ts +1 -0
  122. package/dist/custom/drawer/layout/index.d.ts +2 -0
  123. package/dist/custom/drawer/layout/layout.plugin.d.ts +17 -0
  124. package/dist/custom/drawer/layout/layout.plugin.js +22 -0
  125. package/dist/custom/drawer/layout/types.d.ts +3 -0
  126. package/dist/custom/element/element.plugin.d.ts +35 -0
  127. package/dist/custom/element/element.plugin.js +58 -0
  128. package/dist/custom/element/index.d.ts +2 -0
  129. package/dist/custom/element/types.d.ts +18 -0
  130. package/dist/custom/field/ids/ids.plugin.d.ts +64 -0
  131. package/dist/custom/field/ids/ids.plugin.js +126 -0
  132. package/dist/custom/field/ids/index.d.ts +2 -0
  133. package/dist/custom/field/ids/types.d.ts +28 -0
  134. package/dist/custom/field/index.d.ts +1 -0
  135. package/dist/custom/frame/anchor/anchor.plugin.d.ts +483 -0
  136. package/dist/custom/frame/anchor/anchor.plugin.js +820 -0
  137. package/dist/custom/frame/anchor/index.d.ts +2 -0
  138. package/dist/custom/frame/anchor/types.d.ts +83 -0
  139. package/dist/custom/frame/index.d.ts +2 -0
  140. package/dist/custom/frame/layout/index.d.ts +2 -0
  141. package/dist/custom/frame/layout/layout.plugin.d.ts +24 -0
  142. package/dist/custom/frame/layout/layout.plugin.js +65 -0
  143. package/dist/custom/frame/layout/types.d.ts +5 -0
  144. package/dist/custom/icon/index.d.ts +2 -0
  145. package/dist/custom/icon/layout.plugin.d.ts +21 -0
  146. package/dist/custom/icon/layout.plugin.js +51 -0
  147. package/dist/custom/icon/types.d.ts +5 -0
  148. package/dist/custom/id/id.plugin.d.ts +32 -0
  149. package/dist/custom/id/id.plugin.js +42 -0
  150. package/dist/custom/id/index.d.ts +2 -0
  151. package/dist/custom/id/types.d.ts +6 -0
  152. package/dist/custom/index.d.ts +42 -0
  153. package/dist/custom/input/field.d.ts +16 -0
  154. package/dist/custom/input/field.js +27 -0
  155. package/dist/custom/input/index.d.ts +3 -0
  156. package/dist/custom/input/input.plugin.d.ts +12 -0
  157. package/dist/custom/input/input.plugin.js +46 -0
  158. package/dist/custom/input/types.d.ts +2 -0
  159. package/dist/custom/input-bool/index.d.ts +2 -0
  160. package/dist/custom/input-bool/input-bool.plugin.d.ts +30 -0
  161. package/dist/custom/input-bool/input-bool.plugin.js +77 -0
  162. package/dist/custom/input-bool/types.d.ts +5 -0
  163. package/dist/custom/input-control/index.d.ts +2 -0
  164. package/dist/custom/input-control/input-control.plugin.d.ts +12 -0
  165. package/dist/custom/input-control/input-control.plugin.js +40 -0
  166. package/dist/custom/input-control/types.d.ts +2 -0
  167. package/dist/custom/item-group/ids/ids.plugin.d.ts +19 -0
  168. package/dist/custom/item-group/ids/ids.plugin.js +32 -0
  169. package/dist/custom/item-group/ids/index.d.ts +1 -0
  170. package/dist/custom/item-group/index.d.ts +1 -0
  171. package/dist/custom/label/index.d.ts +1 -0
  172. package/dist/custom/label/nested-warn/index.d.ts +1 -0
  173. package/dist/custom/label/nested-warn/nested-warn.plugin.d.ts +21 -0
  174. package/dist/custom/label/nested-warn/nested-warn.plugin.js +41 -0
  175. package/dist/custom/list/height/height.plugin.d.ts +129 -0
  176. package/dist/custom/list/height/height.plugin.js +272 -0
  177. package/dist/custom/list/height/index.d.ts +2 -0
  178. package/dist/custom/list/height/types.d.ts +10 -0
  179. package/dist/custom/list/index.d.ts +7 -0
  180. package/dist/custom/list/item/index.d.ts +2 -0
  181. package/dist/custom/list/item/item.plugin.d.ts +25 -0
  182. package/dist/custom/list/item/item.plugin.js +46 -0
  183. package/dist/custom/list/item/types.d.ts +5 -0
  184. package/dist/custom/list/keyboard/index.d.ts +2 -0
  185. package/dist/custom/list/keyboard/keyboard.plugin.d.ts +133 -0
  186. package/dist/custom/list/keyboard/keyboard.plugin.js +199 -0
  187. package/dist/custom/list/keyboard/types.d.ts +3 -0
  188. package/dist/custom/list/navigation/index.d.ts +2 -0
  189. package/dist/custom/list/navigation/navigation.plugin.d.ts +262 -0
  190. package/dist/custom/list/navigation/navigation.plugin.js +402 -0
  191. package/dist/custom/list/navigation/types.d.ts +25 -0
  192. package/dist/custom/list/newly-selected.d.ts +17 -0
  193. package/dist/custom/list/newly-selected.js +22 -0
  194. package/dist/custom/list/option-ids/index.d.ts +1 -0
  195. package/dist/custom/list/option-ids/option-ids.plugin.d.ts +29 -0
  196. package/dist/custom/list/option-ids/option-ids.plugin.js +43 -0
  197. package/dist/custom/list/row.d.ts +50 -0
  198. package/dist/custom/list/row.js +99 -0
  199. package/dist/custom/list/scroll/index.d.ts +2 -0
  200. package/dist/custom/list/scroll/scroll.plugin.d.ts +132 -0
  201. package/dist/custom/list/scroll/scroll.plugin.js +286 -0
  202. package/dist/custom/list/scroll/types.d.ts +21 -0
  203. package/dist/custom/list/typeahead.d.ts +53 -0
  204. package/dist/custom/list/typeahead.js +58 -0
  205. package/dist/custom/menu/focus/focus.plugin.d.ts +61 -0
  206. package/dist/custom/menu/focus/focus.plugin.js +105 -0
  207. package/dist/custom/menu/focus/index.d.ts +2 -0
  208. package/dist/custom/menu/focus/types.d.ts +2 -0
  209. package/dist/custom/menu/hover/hover.plugin.d.ts +99 -0
  210. package/dist/custom/menu/hover/hover.plugin.js +235 -0
  211. package/dist/custom/menu/hover/index.d.ts +2 -0
  212. package/dist/custom/menu/hover/types.d.ts +2 -0
  213. package/dist/custom/menu/ids/ids.plugin.d.ts +29 -0
  214. package/dist/custom/menu/ids/ids.plugin.js +46 -0
  215. package/dist/custom/menu/ids/index.d.ts +1 -0
  216. package/dist/custom/menu/index.d.ts +11 -0
  217. package/dist/custom/menu/keyboard/index.d.ts +2 -0
  218. package/dist/custom/menu/keyboard/keyboard.plugin.d.ts +41 -0
  219. package/dist/custom/menu/keyboard/keyboard.plugin.js +68 -0
  220. package/dist/custom/menu/keyboard/types.d.ts +2 -0
  221. package/dist/custom/menu/navigation/index.d.ts +2 -0
  222. package/dist/custom/menu/navigation/navigation.plugin.d.ts +116 -0
  223. package/dist/custom/menu/navigation/navigation.plugin.js +222 -0
  224. package/dist/custom/menu/navigation/types.d.ts +2 -0
  225. package/dist/custom/menu/nested-layer.d.ts +13 -0
  226. package/dist/custom/menu/nested-layer.js +20 -0
  227. package/dist/custom/menu/pointer/index.d.ts +2 -0
  228. package/dist/custom/menu/pointer/pointer.plugin.d.ts +45 -0
  229. package/dist/custom/menu/pointer/pointer.plugin.js +95 -0
  230. package/dist/custom/menu/pointer/strategies/context.strategy.d.ts +70 -0
  231. package/dist/custom/menu/pointer/strategies/context.strategy.js +170 -0
  232. package/dist/custom/menu/pointer/strategies/index.d.ts +3 -0
  233. package/dist/custom/menu/pointer/strategies/press.strategy.d.ts +23 -0
  234. package/dist/custom/menu/pointer/strategies/press.strategy.js +33 -0
  235. package/dist/custom/menu/pointer/strategies/types.d.ts +49 -0
  236. package/dist/custom/menu/pointer/types.d.ts +2 -0
  237. package/dist/custom/menu/popover-item-focus/focus.plugin.d.ts +54 -0
  238. package/dist/custom/menu/popover-item-focus/focus.plugin.js +70 -0
  239. package/dist/custom/menu/popover-item-focus/index.d.ts +2 -0
  240. package/dist/custom/menu/popover-item-focus/types.d.ts +10 -0
  241. package/dist/custom/menu/popover-item-keyboard/index.d.ts +2 -0
  242. package/dist/custom/menu/popover-item-keyboard/keyboard.plugin.d.ts +43 -0
  243. package/dist/custom/menu/popover-item-keyboard/keyboard.plugin.js +79 -0
  244. package/dist/custom/menu/popover-item-keyboard/types.d.ts +2 -0
  245. package/dist/custom/menu/popup-ids/ids.plugin.d.ts +27 -0
  246. package/dist/custom/menu/popup-ids/ids.plugin.js +47 -0
  247. package/dist/custom/menu/popup-ids/index.d.ts +1 -0
  248. package/dist/custom/menu/submenu-focus/focus.plugin.d.ts +53 -0
  249. package/dist/custom/menu/submenu-focus/focus.plugin.js +84 -0
  250. package/dist/custom/menu/submenu-focus/index.d.ts +2 -0
  251. package/dist/custom/menu/submenu-focus/types.d.ts +10 -0
  252. package/dist/custom/menu/submenu-keyboard/index.d.ts +2 -0
  253. package/dist/custom/menu/submenu-keyboard/keyboard.plugin.d.ts +43 -0
  254. package/dist/custom/menu/submenu-keyboard/keyboard.plugin.js +74 -0
  255. package/dist/custom/menu/submenu-keyboard/types.d.ts +2 -0
  256. package/dist/custom/number-input/index.d.ts +5 -0
  257. package/dist/custom/number-input/keyboard/index.d.ts +2 -0
  258. package/dist/custom/number-input/keyboard/keyboard.plugin.d.ts +36 -0
  259. package/dist/custom/number-input/keyboard/keyboard.plugin.js +80 -0
  260. package/dist/custom/number-input/keyboard/types.d.ts +3 -0
  261. package/dist/custom/number-input/names/index.d.ts +1 -0
  262. package/dist/custom/number-input/names/names.plugin.d.ts +17 -0
  263. package/dist/custom/number-input/names/names.plugin.js +24 -0
  264. package/dist/custom/number-input/parts.d.ts +21 -0
  265. package/dist/custom/number-input/parts.js +39 -0
  266. package/dist/custom/number-input/stepper/index.d.ts +2 -0
  267. package/dist/custom/number-input/stepper/stepper.plugin.d.ts +59 -0
  268. package/dist/custom/number-input/stepper/stepper.plugin.js +166 -0
  269. package/dist/custom/number-input/stepper/types.d.ts +19 -0
  270. package/dist/custom/number-input/touch/index.d.ts +2 -0
  271. package/dist/custom/number-input/touch/touch.plugin.d.ts +25 -0
  272. package/dist/custom/number-input/touch/touch.plugin.js +53 -0
  273. package/dist/custom/number-input/touch/types.d.ts +3 -0
  274. package/dist/custom/number-input/types.d.ts +8 -0
  275. package/dist/custom/number-input/typing/index.d.ts +2 -0
  276. package/dist/custom/number-input/typing/types.d.ts +6 -0
  277. package/dist/custom/number-input/typing/typing.plugin.d.ts +47 -0
  278. package/dist/custom/number-input/typing/typing.plugin.js +149 -0
  279. package/dist/custom/overlay/focus/focus.plugin.d.ts +150 -0
  280. package/dist/custom/overlay/focus/focus.plugin.js +242 -0
  281. package/dist/custom/overlay/focus/index.d.ts +1 -0
  282. package/dist/custom/overlay/hide-outside/hide-outside.plugin.d.ts +84 -0
  283. package/dist/custom/overlay/hide-outside/hide-outside.plugin.js +187 -0
  284. package/dist/custom/overlay/hide-outside/index.d.ts +2 -0
  285. package/dist/custom/overlay/hide-outside/marks.d.ts +19 -0
  286. package/dist/custom/overlay/hide-outside/marks.js +43 -0
  287. package/dist/custom/overlay/hide-outside/types.d.ts +17 -0
  288. package/dist/custom/overlay/index.d.ts +9 -0
  289. package/dist/custom/overlay/modal-focus/index.d.ts +1 -0
  290. package/dist/custom/overlay/modal-focus/modal-focus.plugin.d.ts +72 -0
  291. package/dist/custom/overlay/modal-focus/modal-focus.plugin.js +109 -0
  292. package/dist/custom/overlay/modal-ids/index.d.ts +1 -0
  293. package/dist/custom/overlay/modal-ids/modal-ids.plugin.d.ts +21 -0
  294. package/dist/custom/overlay/modal-ids/modal-ids.plugin.js +30 -0
  295. package/dist/custom/overlay/modal-layout/index.d.ts +2 -0
  296. package/dist/custom/overlay/modal-layout/modal-layout.plugin.d.ts +66 -0
  297. package/dist/custom/overlay/modal-layout/modal-layout.plugin.js +119 -0
  298. package/dist/custom/overlay/modal-layout/types.d.ts +13 -0
  299. package/dist/custom/overlay/modal-names/index.d.ts +1 -0
  300. package/dist/custom/overlay/modal-names/modal-names.plugin.d.ts +14 -0
  301. package/dist/custom/overlay/modal-names/modal-names.plugin.js +17 -0
  302. package/dist/custom/overlay/open-state.d.ts +12 -0
  303. package/dist/custom/overlay/open-state.js +42 -0
  304. package/dist/custom/overlay/scroll-lock/index.d.ts +2 -0
  305. package/dist/custom/overlay/scroll-lock/lock.d.ts +17 -0
  306. package/dist/custom/overlay/scroll-lock/lock.js +83 -0
  307. package/dist/custom/overlay/scroll-lock/scroll-lock.plugin.d.ts +78 -0
  308. package/dist/custom/overlay/scroll-lock/scroll-lock.plugin.js +134 -0
  309. package/dist/custom/overlay/scroll-lock/types.d.ts +17 -0
  310. package/dist/custom/overlay/swipe/index.d.ts +2 -0
  311. package/dist/custom/overlay/swipe/swipe.plugin.d.ts +150 -0
  312. package/dist/custom/overlay/swipe/swipe.plugin.js +432 -0
  313. package/dist/custom/overlay/swipe/types.d.ts +62 -0
  314. package/dist/custom/overlay/types.d.ts +40 -0
  315. package/dist/custom/pagination/current.d.ts +24 -0
  316. package/dist/custom/pagination/current.js +34 -0
  317. package/dist/custom/pagination/focus/focus.plugin.d.ts +57 -0
  318. package/dist/custom/pagination/focus/focus.plugin.js +106 -0
  319. package/dist/custom/pagination/focus/index.d.ts +2 -0
  320. package/dist/custom/pagination/focus/types.d.ts +8 -0
  321. package/dist/custom/pagination/index.d.ts +3 -0
  322. package/dist/custom/pagination/names/index.d.ts +1 -0
  323. package/dist/custom/pagination/names/names.plugin.d.ts +15 -0
  324. package/dist/custom/pagination/names/names.plugin.js +19 -0
  325. package/dist/custom/popover/focus/focus.plugin.d.ts +69 -0
  326. package/dist/custom/popover/focus/focus.plugin.js +107 -0
  327. package/dist/custom/popover/focus/index.d.ts +2 -0
  328. package/dist/custom/popover/focus/types.d.ts +2 -0
  329. package/dist/custom/popover/ids/ids.plugin.d.ts +18 -0
  330. package/dist/custom/popover/ids/ids.plugin.js +27 -0
  331. package/dist/custom/popover/ids/index.d.ts +1 -0
  332. package/dist/custom/popover/index.d.ts +4 -0
  333. package/dist/custom/popover/names/index.d.ts +1 -0
  334. package/dist/custom/popover/names/names.plugin.d.ts +7 -0
  335. package/dist/custom/popover/names/names.plugin.js +10 -0
  336. package/dist/custom/popover/pointer/index.d.ts +2 -0
  337. package/dist/custom/popover/pointer/pointer.plugin.d.ts +35 -0
  338. package/dist/custom/popover/pointer/pointer.plugin.js +65 -0
  339. package/dist/custom/popover/pointer/types.d.ts +2 -0
  340. package/dist/custom/radio-group/checked/checked.plugin.d.ts +45 -0
  341. package/dist/custom/radio-group/checked/checked.plugin.js +81 -0
  342. package/dist/custom/radio-group/checked/index.d.ts +1 -0
  343. package/dist/custom/radio-group/index.d.ts +3 -0
  344. package/dist/custom/radio-group/name/index.d.ts +1 -0
  345. package/dist/custom/radio-group/name/name.plugin.d.ts +21 -0
  346. package/dist/custom/radio-group/name/name.plugin.js +39 -0
  347. package/dist/custom/radio-group/stop.d.ts +17 -0
  348. package/dist/custom/radio-group/stop.js +30 -0
  349. package/dist/custom/rating/hover/hover.plugin.d.ts +36 -0
  350. package/dist/custom/rating/hover/hover.plugin.js +71 -0
  351. package/dist/custom/rating/hover/index.d.ts +2 -0
  352. package/dist/custom/rating/hover/types.d.ts +7 -0
  353. package/dist/custom/rating/index.d.ts +3 -0
  354. package/dist/custom/rating/names/index.d.ts +1 -0
  355. package/dist/custom/rating/names/names.plugin.d.ts +25 -0
  356. package/dist/custom/rating/names/names.plugin.js +45 -0
  357. package/dist/custom/rating/validity/index.d.ts +2 -0
  358. package/dist/custom/rating/validity/types.d.ts +7 -0
  359. package/dist/custom/rating/validity/validity.plugin.d.ts +48 -0
  360. package/dist/custom/rating/validity/validity.plugin.js +91 -0
  361. package/dist/custom/ready/index.d.ts +1 -0
  362. package/dist/custom/ready/ready.plugin.d.ts +14 -0
  363. package/dist/custom/ready/ready.plugin.js +28 -0
  364. package/dist/custom/scroller/index.d.ts +2 -0
  365. package/dist/custom/scroller/names/index.d.ts +1 -0
  366. package/dist/custom/scroller/names/names.plugin.d.ts +11 -0
  367. package/dist/custom/scroller/names/names.plugin.js +15 -0
  368. package/dist/custom/scroller/viewport/edges.d.ts +34 -0
  369. package/dist/custom/scroller/viewport/edges.js +29 -0
  370. package/dist/custom/scroller/viewport/focus.d.ts +39 -0
  371. package/dist/custom/scroller/viewport/focus.js +61 -0
  372. package/dist/custom/scroller/viewport/index.d.ts +6 -0
  373. package/dist/custom/scroller/viewport/stop.d.ts +24 -0
  374. package/dist/custom/scroller/viewport/stop.js +34 -0
  375. package/dist/custom/scroller/viewport/types.d.ts +31 -0
  376. package/dist/custom/scroller/viewport/viewport.plugin.d.ts +163 -0
  377. package/dist/custom/scroller/viewport/viewport.plugin.js +352 -0
  378. package/dist/custom/select/backspace/backspace.plugin.d.ts +50 -0
  379. package/dist/custom/select/backspace/backspace.plugin.js +125 -0
  380. package/dist/custom/select/backspace/index.d.ts +2 -0
  381. package/dist/custom/select/backspace/types.d.ts +2 -0
  382. package/dist/custom/select/editable/editable.plugin.d.ts +193 -0
  383. package/dist/custom/select/editable/editable.plugin.js +347 -0
  384. package/dist/custom/select/editable/index.d.ts +2 -0
  385. package/dist/custom/select/editable/types.d.ts +6 -0
  386. package/dist/custom/select/ids/ids.plugin.d.ts +22 -0
  387. package/dist/custom/select/ids/ids.plugin.js +31 -0
  388. package/dist/custom/select/ids/index.d.ts +1 -0
  389. package/dist/custom/select/index.d.ts +5 -0
  390. package/dist/custom/select/keyboard/index.d.ts +2 -0
  391. package/dist/custom/select/keyboard/keyboard.plugin.d.ts +125 -0
  392. package/dist/custom/select/keyboard/keyboard.plugin.js +205 -0
  393. package/dist/custom/select/keyboard/strategies/base.strategy.d.ts +37 -0
  394. package/dist/custom/select/keyboard/strategies/base.strategy.js +81 -0
  395. package/dist/custom/select/keyboard/strategies/editable.strategy.d.ts +16 -0
  396. package/dist/custom/select/keyboard/strategies/editable.strategy.js +20 -0
  397. package/dist/custom/select/keyboard/strategies/index.d.ts +4 -0
  398. package/dist/custom/select/keyboard/strategies/select-only.strategy.d.ts +13 -0
  399. package/dist/custom/select/keyboard/strategies/select-only.strategy.js +59 -0
  400. package/dist/custom/select/keyboard/strategies/types.d.ts +29 -0
  401. package/dist/custom/select/keyboard/types.d.ts +18 -0
  402. package/dist/custom/select/pointer/index.d.ts +2 -0
  403. package/dist/custom/select/pointer/pointer.plugin.d.ts +59 -0
  404. package/dist/custom/select/pointer/pointer.plugin.js +104 -0
  405. package/dist/custom/select/pointer/types.d.ts +2 -0
  406. package/dist/custom/skeleton/index.d.ts +2 -0
  407. package/dist/custom/skeleton/layout.plugin.d.ts +18 -0
  408. package/dist/custom/skeleton/layout.plugin.js +47 -0
  409. package/dist/custom/skeleton/types.d.ts +5 -0
  410. package/dist/custom/slide/direction.d.ts +30 -0
  411. package/dist/custom/slide/direction.js +75 -0
  412. package/dist/custom/slide/index.d.ts +4 -0
  413. package/dist/custom/slide/keyboard/index.d.ts +2 -0
  414. package/dist/custom/slide/keyboard/keyboard.plugin.d.ts +46 -0
  415. package/dist/custom/slide/keyboard/keyboard.plugin.js +106 -0
  416. package/dist/custom/slide/keyboard/types.d.ts +6 -0
  417. package/dist/custom/slide/parts.d.ts +7 -0
  418. package/dist/custom/slide/parts.js +26 -0
  419. package/dist/custom/slide/pointer/index.d.ts +2 -0
  420. package/dist/custom/slide/pointer/pointer.plugin.d.ts +100 -0
  421. package/dist/custom/slide/pointer/pointer.plugin.js +268 -0
  422. package/dist/custom/slide/pointer/strategies/base.strategy.d.ts +16 -0
  423. package/dist/custom/slide/pointer/strategies/base.strategy.js +23 -0
  424. package/dist/custom/slide/pointer/strategies/hold.strategy.d.ts +28 -0
  425. package/dist/custom/slide/pointer/strategies/hold.strategy.js +48 -0
  426. package/dist/custom/slide/pointer/strategies/index.d.ts +7 -0
  427. package/dist/custom/slide/pointer/strategies/magnet.strategy.d.ts +11 -0
  428. package/dist/custom/slide/pointer/strategies/magnet.strategy.js +17 -0
  429. package/dist/custom/slide/pointer/strategies/none.strategy.d.ts +7 -0
  430. package/dist/custom/slide/pointer/strategies/none.strategy.js +9 -0
  431. package/dist/custom/slide/pointer/strategies/plateau.strategy.d.ts +24 -0
  432. package/dist/custom/slide/pointer/strategies/plateau.strategy.js +81 -0
  433. package/dist/custom/slide/pointer/strategies/points.d.ts +16 -0
  434. package/dist/custom/slide/pointer/strategies/points.js +32 -0
  435. package/dist/custom/slide/pointer/strategies/settle.strategy.d.ts +11 -0
  436. package/dist/custom/slide/pointer/strategies/settle.strategy.js +17 -0
  437. package/dist/custom/slide/pointer/strategies/types.d.ts +57 -0
  438. package/dist/custom/slide/pointer/types.d.ts +46 -0
  439. package/dist/custom/slide/types.d.ts +14 -0
  440. package/dist/custom/table/column-ids/column-ids.plugin.d.ts +26 -0
  441. package/dist/custom/table/column-ids/column-ids.plugin.js +36 -0
  442. package/dist/custom/table/column-ids/index.d.ts +1 -0
  443. package/dist/custom/table/column-names/column-names.plugin.d.ts +18 -0
  444. package/dist/custom/table/column-names/column-names.plugin.js +24 -0
  445. package/dist/custom/table/column-names/index.d.ts +1 -0
  446. package/dist/custom/table/column-reorder/column-reorder.plugin.d.ts +169 -0
  447. package/dist/custom/table/column-reorder/column-reorder.plugin.js +465 -0
  448. package/dist/custom/table/column-reorder/index.d.ts +2 -0
  449. package/dist/custom/table/column-reorder/types.d.ts +81 -0
  450. package/dist/custom/table/column-resize/column-resize.plugin.d.ts +96 -0
  451. package/dist/custom/table/column-resize/column-resize.plugin.js +271 -0
  452. package/dist/custom/table/column-resize/index.d.ts +2 -0
  453. package/dist/custom/table/column-resize/types.d.ts +38 -0
  454. package/dist/custom/table/grid/grid.plugin.d.ts +119 -0
  455. package/dist/custom/table/grid/grid.plugin.js +356 -0
  456. package/dist/custom/table/grid/index.d.ts +2 -0
  457. package/dist/custom/table/grid/types.d.ts +22 -0
  458. package/dist/custom/table/index.d.ts +8 -0
  459. package/dist/custom/table/layout/index.d.ts +2 -0
  460. package/dist/custom/table/layout/layout.plugin.d.ts +52 -0
  461. package/dist/custom/table/layout/layout.plugin.js +122 -0
  462. package/dist/custom/table/layout/types.d.ts +7 -0
  463. package/dist/custom/table/names/index.d.ts +2 -0
  464. package/dist/custom/table/names/names.plugin.d.ts +18 -0
  465. package/dist/custom/table/names/names.plugin.js +31 -0
  466. package/dist/custom/table/names/types.d.ts +6 -0
  467. package/dist/custom/table/row-ids/index.d.ts +1 -0
  468. package/dist/custom/table/row-ids/row-ids.plugin.d.ts +21 -0
  469. package/dist/custom/table/row-ids/row-ids.plugin.js +28 -0
  470. package/dist/custom/tabs/active-tab/active-tab.plugin.d.ts +42 -0
  471. package/dist/custom/tabs/active-tab/active-tab.plugin.js +103 -0
  472. package/dist/custom/tabs/active-tab/index.d.ts +2 -0
  473. package/dist/custom/tabs/active-tab/types.d.ts +17 -0
  474. package/dist/custom/tabs/content-warn/content-warn.plugin.d.ts +21 -0
  475. package/dist/custom/tabs/content-warn/content-warn.plugin.js +41 -0
  476. package/dist/custom/tabs/content-warn/index.d.ts +1 -0
  477. package/dist/custom/tabs/index.d.ts +7 -0
  478. package/dist/custom/tabs/item-ids/index.d.ts +1 -0
  479. package/dist/custom/tabs/item-ids/item-ids.plugin.d.ts +60 -0
  480. package/dist/custom/tabs/item-ids/item-ids.plugin.js +94 -0
  481. package/dist/custom/tabs/item-names/index.d.ts +1 -0
  482. package/dist/custom/tabs/item-names/item-names.plugin.d.ts +17 -0
  483. package/dist/custom/tabs/item-names/item-names.plugin.js +23 -0
  484. package/dist/custom/tabs/keyboard/index.d.ts +2 -0
  485. package/dist/custom/tabs/keyboard/keyboard.plugin.d.ts +105 -0
  486. package/dist/custom/tabs/keyboard/keyboard.plugin.js +206 -0
  487. package/dist/custom/tabs/keyboard/types.d.ts +6 -0
  488. package/dist/custom/tabs/layout/index.d.ts +2 -0
  489. package/dist/custom/tabs/layout/layout.plugin.d.ts +37 -0
  490. package/dist/custom/tabs/layout/layout.plugin.js +81 -0
  491. package/dist/custom/tabs/layout/types.d.ts +4 -0
  492. package/dist/custom/tabs/parts.d.ts +15 -0
  493. package/dist/custom/tabs/parts.js +21 -0
  494. package/dist/custom/tabs/tab.d.ts +29 -0
  495. package/dist/custom/tabs/tab.js +44 -0
  496. package/dist/custom/tags/index.d.ts +4 -0
  497. package/dist/custom/tags/item-names/index.d.ts +1 -0
  498. package/dist/custom/tags/item-names/item-names.plugin.d.ts +12 -0
  499. package/dist/custom/tags/item-names/item-names.plugin.js +18 -0
  500. package/dist/custom/tags/keyboard/index.d.ts +2 -0
  501. package/dist/custom/tags/keyboard/keyboard.plugin.d.ts +133 -0
  502. package/dist/custom/tags/keyboard/keyboard.plugin.js +253 -0
  503. package/dist/custom/tags/keyboard/types.d.ts +6 -0
  504. package/dist/custom/tags/scroll/index.d.ts +2 -0
  505. package/dist/custom/tags/scroll/scroll.plugin.d.ts +68 -0
  506. package/dist/custom/tags/scroll/scroll.plugin.js +120 -0
  507. package/dist/custom/tags/scroll/types.d.ts +6 -0
  508. package/dist/custom/tags/tag.d.ts +41 -0
  509. package/dist/custom/tags/tag.js +66 -0
  510. package/dist/custom/textarea/autoresize/autoresize.plugin.d.ts +70 -0
  511. package/dist/custom/textarea/autoresize/autoresize.plugin.js +176 -0
  512. package/dist/custom/textarea/autoresize/index.d.ts +2 -0
  513. package/dist/custom/textarea/autoresize/types.d.ts +6 -0
  514. package/dist/custom/textarea/ids/ids.plugin.d.ts +26 -0
  515. package/dist/custom/textarea/ids/ids.plugin.js +44 -0
  516. package/dist/custom/textarea/ids/index.d.ts +1 -0
  517. package/dist/custom/textarea/index.d.ts +3 -0
  518. package/dist/custom/textarea/names/index.d.ts +2 -0
  519. package/dist/custom/textarea/names/names.plugin.d.ts +33 -0
  520. package/dist/custom/textarea/names/names.plugin.js +65 -0
  521. package/dist/custom/textarea/names/types.d.ts +8 -0
  522. package/dist/custom/toasts/cascade/cascade.plugin.d.ts +81 -0
  523. package/dist/custom/toasts/cascade/cascade.plugin.js +214 -0
  524. package/dist/custom/toasts/cascade/index.d.ts +2 -0
  525. package/dist/custom/toasts/cascade/types.d.ts +15 -0
  526. package/dist/custom/toasts/index.d.ts +7 -0
  527. package/dist/custom/toasts/item-names/index.d.ts +1 -0
  528. package/dist/custom/toasts/item-names/item-names.plugin.d.ts +12 -0
  529. package/dist/custom/toasts/item-names/item-names.plugin.js +18 -0
  530. package/dist/custom/toasts/keyboard/index.d.ts +2 -0
  531. package/dist/custom/toasts/keyboard/keyboard.plugin.d.ts +57 -0
  532. package/dist/custom/toasts/keyboard/keyboard.plugin.js +136 -0
  533. package/dist/custom/toasts/keyboard/types.d.ts +6 -0
  534. package/dist/custom/toasts/layout/index.d.ts +2 -0
  535. package/dist/custom/toasts/layout/layout.plugin.d.ts +23 -0
  536. package/dist/custom/toasts/layout/layout.plugin.js +39 -0
  537. package/dist/custom/toasts/layout/types.d.ts +5 -0
  538. package/dist/custom/toasts/names/index.d.ts +1 -0
  539. package/dist/custom/toasts/names/names.plugin.d.ts +10 -0
  540. package/dist/custom/toasts/names/names.plugin.js +13 -0
  541. package/dist/custom/toasts/removal/index.d.ts +2 -0
  542. package/dist/custom/toasts/removal/removal.plugin.d.ts +35 -0
  543. package/dist/custom/toasts/removal/removal.plugin.js +69 -0
  544. package/dist/custom/toasts/removal/types.d.ts +6 -0
  545. package/dist/custom/toasts/timer/index.d.ts +2 -0
  546. package/dist/custom/toasts/timer/timer.plugin.d.ts +71 -0
  547. package/dist/custom/toasts/timer/timer.plugin.js +213 -0
  548. package/dist/custom/toasts/timer/types.d.ts +15 -0
  549. package/dist/custom/tooltip/ids/ids.plugin.d.ts +22 -0
  550. package/dist/custom/tooltip/ids/ids.plugin.js +42 -0
  551. package/dist/custom/tooltip/ids/index.d.ts +1 -0
  552. package/dist/custom/tooltip/index.d.ts +2 -0
  553. package/dist/custom/tooltip/trigger/document-state.d.ts +42 -0
  554. package/dist/custom/tooltip/trigger/document-state.js +50 -0
  555. package/dist/custom/tooltip/trigger/index.d.ts +2 -0
  556. package/dist/custom/tooltip/trigger/trigger.plugin.d.ts +133 -0
  557. package/dist/custom/tooltip/trigger/trigger.plugin.js +271 -0
  558. package/dist/custom/tooltip/trigger/types.d.ts +20 -0
  559. package/dist/custom/virtual/index.d.ts +2 -0
  560. package/dist/custom/virtual/types.d.ts +6 -0
  561. package/dist/custom/virtual/virtual.plugin.d.ts +126 -0
  562. package/dist/custom/virtual/virtual.plugin.js +311 -0
  563. package/dist/index.d.ts +7 -0
  564. package/dist/index.js +149 -0
  565. package/dist/locale/index.d.ts +6 -0
  566. package/dist/locale/locale.d.ts +38 -0
  567. package/dist/locale/locale.js +93 -0
  568. package/dist/locale/locale.plugin.d.ts +26 -0
  569. package/dist/locale/locale.plugin.js +35 -0
  570. package/dist/locale/locales/ar.d.ts +5 -0
  571. package/dist/locale/locales/ar.js +59 -0
  572. package/dist/locale/locales/en.d.ts +7 -0
  573. package/dist/locale/locales/en.js +61 -0
  574. package/dist/locale/locales/es.d.ts +2 -0
  575. package/dist/locale/locales/es.js +56 -0
  576. package/dist/locale/locales/fr.d.ts +2 -0
  577. package/dist/locale/locales/fr.js +56 -0
  578. package/dist/locale/locales/index.d.ts +6 -0
  579. package/dist/locale/locales/ru.d.ts +2 -0
  580. package/dist/locale/locales/ru.js +56 -0
  581. package/dist/locale/locales/zh.d.ts +2 -0
  582. package/dist/locale/locales/zh.js +56 -0
  583. package/dist/locale/names.plugin.d.ts +32 -0
  584. package/dist/locale/names.plugin.js +39 -0
  585. package/dist/locale/source.class.d.ts +22 -0
  586. package/dist/locale/source.class.js +32 -0
  587. package/dist/locale/types.d.ts +197 -0
  588. package/dist/motion/index.d.ts +2 -0
  589. package/dist/motion/motion.d.ts +28 -0
  590. package/dist/motion/motion.js +67 -0
  591. package/dist/motion/types.d.ts +14 -0
  592. package/dist/utils/afterTransitions.d.ts +49 -0
  593. package/dist/utils/afterTransitions.js +79 -0
  594. package/dist/utils/focusFirst.d.ts +13 -0
  595. package/dist/utils/focusFirst.js +24 -0
  596. package/dist/utils/graceArea.d.ts +21 -0
  597. package/dist/utils/graceArea.js +66 -0
  598. package/dist/utils/index.d.ts +18 -0
  599. package/dist/utils/isAboveLayer.d.ts +14 -0
  600. package/dist/utils/isAboveLayer.js +24 -0
  601. package/dist/utils/isAppleTouch.d.ts +10 -0
  602. package/dist/utils/isAppleTouch.js +17 -0
  603. package/dist/utils/isFocusableElement.d.ts +8 -0
  604. package/dist/utils/isFocusableElement.js +13 -0
  605. package/dist/utils/isMeasurableElement.d.ts +11 -0
  606. package/dist/utils/isMeasurableElement.js +16 -0
  607. package/dist/utils/isPrintableKey.d.ts +7 -0
  608. package/dist/utils/isPrintableKey.js +12 -0
  609. package/dist/utils/layerOf.d.ts +12 -0
  610. package/dist/utils/layerOf.js +21 -0
  611. package/dist/utils/nearestShift.d.ts +19 -0
  612. package/dist/utils/nearestShift.js +58 -0
  613. package/dist/utils/positionOrigin.d.ts +34 -0
  614. package/dist/utils/positionOrigin.js +71 -0
  615. package/dist/utils/scrollParent.d.ts +12 -0
  616. package/dist/utils/scrollParent.js +23 -0
  617. package/dist/utils/scrollWindow.d.ts +27 -0
  618. package/dist/utils/scrollWindow.js +50 -0
  619. package/dist/utils/tabStops.d.ts +44 -0
  620. package/dist/utils/tabStops.js +102 -0
  621. package/dist/utils/tabStopsAfter.d.ts +10 -0
  622. package/dist/utils/tabStopsAfter.js +16 -0
  623. package/dist/utils/tabStopsBefore.d.ts +11 -0
  624. package/dist/utils/tabStopsBefore.js +17 -0
  625. package/dist/utils/toCssValue.d.ts +8 -0
  626. package/dist/utils/toCssValue.js +17 -0
  627. package/dist/utils/trapTab.d.ts +16 -0
  628. package/dist/utils/trapTab.js +36 -0
  629. package/dist/utils/types.d.ts +64 -0
  630. package/package.json +43 -4
@@ -0,0 +1,46 @@
1
+ import { TBasePlugin } from "../../../base/base.class.js";
2
+ //#region src/custom/list/item/item.plugin.ts
3
+ /**
4
+ * TListItemPlugin — состояние подсветки элемента списка (клавиатурная навигация).
5
+ *
6
+ * Не управляет выбором: выбор элемента выполняется selection-расширением коллекции.
7
+ * Плагин лишь хранит флаг `highlighted`, которым управляет TListKeyboardPlugin.
8
+ *
9
+ * Подсветку отдаёт теме сам — через `data-highlighted`. Раньше это делал
10
+ * шаблон, и два компонента успели разойтись: ListBox отдавал значение сырым,
11
+ * Select приводил его через `String(!!value)`. Оба варианта работали по
12
+ * случайности; здесь преобразование одно и живёт рядом с состоянием.
13
+ *
14
+ * В DOM плагин не ходит — пишет в набор, а раскладывает его шаблон, синхронно.
15
+ */
16
+ var TListItemPlugin = class extends TBasePlugin {
17
+ _instance = null;
18
+ _highlighted = false;
19
+ install(ctx, options) {
20
+ super.install(ctx, options);
21
+ this._instance = ctx.getInstance();
22
+ this._apply();
23
+ }
24
+ get highlighted() {
25
+ return this._highlighted;
26
+ }
27
+ set highlighted(value) {
28
+ const oldHighlighted = this.highlighted;
29
+ if (this._highlighted === value) return;
30
+ this._highlighted = value;
31
+ this._apply();
32
+ this.events.emit("change:highlighted", {
33
+ newValue: value,
34
+ oldValue: oldHighlighted
35
+ });
36
+ }
37
+ _apply() {
38
+ this._instance?.dataset.add("highlighted", this._highlighted);
39
+ }
40
+ destroy() {
41
+ this._instance = null;
42
+ super.destroy();
43
+ }
44
+ };
45
+ //#endregion
46
+ export { TListItemPlugin };
@@ -0,0 +1,5 @@
1
+ import type { TValuePayload } from '@soxa-ui/core';
2
+ import type { TPluginEvents } from '../../../base';
3
+ export type TListItemPluginEvents = TPluginEvents & {
4
+ 'change:highlighted': (payload: TValuePayload<boolean>) => void;
5
+ };
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './keyboard.plugin';
@@ -0,0 +1,133 @@
1
+ import type { IListBoxItem, TCollectionEngine } from '@soxa-ui/core';
2
+ import type { IPluginContext } from '../../../base';
3
+ import { TListNavigationPlugin } from '../navigation';
4
+ import type { TListKeyboardPluginEvents } from './types';
5
+ /**
6
+ * TListKeyboardPlugin — клавиатура самостоятельного списка (ListBox).
7
+ *
8
+ * Общая механика — подписка на `keydown`, привязка к коллекции, учёт
9
+ * подсветки, циклический сдвиг, пропуск недоступных элементов — в
10
+ * `TListNavigationPlugin`. Здесь только то, чем список отличается: набор
11
+ * клавиш, смысл активации и модель фокуса.
12
+ *
13
+ * `ListBox` фокусируется сам: остановка Tab — узел списка внутри корня
14
+ * (`tabindex="0"`, на нём же роль `listbox`), а шапка и подвал стоят рядом с
15
+ * ним. DOM-фокус держит узел списка — кольцо темы у него, — а элемент под
16
+ * стрелками показывает подсветка (`data-highlighted`). Enter и Space
17
+ * переключают выбор подсвеченного через расширение списка
18
+ * (`list.chooseItem`), как и клик по строке.
19
+ *
20
+ * **Элемент под стрелками скринридеру называет `aria-activedescendant` узла
21
+ * списка** (APG Listbox): фокус по строкам не ходит, и без ссылки стрелки были
22
+ * бы для скринридера немыми. Ссылку плагин пишет в набор `aria` списка — его
23
+ * разметка кладёт на узел списка, — на `id` подсвеченного элемента
24
+ * (`TOptionIdsPlugin`), и она повторяет экран: есть, пока у элемента видна
25
+ * отметка и он в документе (`highlightedId` навигации). Позиция без отметки —
26
+ * за выбором или на строке, с которой пришла клавиша, — ссылкой не
27
+ * становится. В окне (`Virtual`) ссылка ждёт, когда окно дорисует
28
+ * подсвеченный элемент (`onHighlightedMounted`), а элемент, ушедший из
29
+ * документа, — из коллекции или со снятым монтированием, — её снимает. `id`
30
+ * элемента — свой, если его задали, и ссылка идёт за его сменой у
31
+ * подсвеченного (`onHighlightedAriaChanged`).
32
+ *
33
+ * Слушатель висит на корне, но клавишу список берёт только с узла списка
34
+ * (`listOf`) и со строки показанного элемента. До корня всплывают и клавиши
35
+ * полей и кнопок из шапки, подвала и слотов элемента — что с ними делать, эти
36
+ * элементы знают сами: поле печатает пробел, кнопка делает из Enter и пробела
37
+ * клик. Правило отвечает на вопрос «чья клавиша», а не «какая», исключений
38
+ * нет: из поля в шапке не работают и стрелки.
39
+ *
40
+ * **Строка держит фокус после клика только до первой клавиши.** У строки
41
+ * `tabindex="-1"`, и фокус на неё ставят клик и запись `focused = true`
42
+ * элемента. Клавиша с неё — клавиша списка с места этой строки: позиция
43
+ * встаёт на элемент строки, фокус возвращается узлу списка, и дальше клавиша
44
+ * идёт так же, как с узла (`_fromRow`). Останься фокус на строке, после
45
+ * клавиши браузер включил бы ей `:focus-visible`, и кольцо строки висело бы до
46
+ * ухода из списка, пока подсветка ходит по другим элементам. Правило — для
47
+ * любой клавиши, а не только для стрелок, Enter и пробела: Tab со строки идёт
48
+ * от узла списка, и Shift+Tab выводит из ListBox одним нажатием, а не
49
+ * останавливается на самом узле — предке строки.
50
+ *
51
+ * Цель сравнивается со строкой на равенство, а не через `contains`, как у
52
+ * табов (`TTabsKeyboardPlugin`): там кнопка закрытия — часть таба, а в строке
53
+ * ListBox лежат только слоты потребителя, и их клавиши принадлежат им. Проверка
54
+ * цели — здесь, а не в `TListNavigationPlugin`: база общая с Select, у которого
55
+ * своё правило — клавиши только с поля.
56
+ */
57
+ export declare class TListKeyboardPlugin extends TListNavigationPlugin<TListKeyboardPluginEvents, IListBoxItem> {
58
+ /** Список: в его набор `aria` — ссылка на подсвеченный элемент. */
59
+ private _owner;
60
+ /**
61
+ * Узлы элементов — по ним ищется строка, с которой пришла клавиша. Без
62
+ * этого плагина строку не узнать, и список берёт клавиши только с узла
63
+ * списка.
64
+ */
65
+ private _elements;
66
+ install(ctx: IPluginContext, options?: unknown): void;
67
+ destroy(): void;
68
+ /** Видимая подсветка сменилась — ссылка за ней. */
69
+ protected onHighlightChanged(_uid: string | number | null): void;
70
+ /** Окно дорисовало подсвеченный элемент: у него появился `id` — на него ссылка. */
71
+ protected onHighlightedMounted(_uid: string | number): void;
72
+ /**
73
+ * Набор подсвеченного сменился — с ним мог смениться его `id` (`id` элемента
74
+ * в `TIdPlugin` задали, сменили или сняли): ссылка за ним.
75
+ */
76
+ protected onHighlightedAriaChanged(_uid: string | number): void;
77
+ /** `aria-activedescendant` списка — на подсвеченный элемент, пока он на экране. */
78
+ private _refer;
79
+ /**
80
+ * Позиция встаёт на выбранный элемент, когда появилась коллекция, а дальше
81
+ * следует за выбором — на элемент, который стал выбранным (`newlySelected`):
82
+ * кликом, клавишей или значением снаружи. Снятие выбора её не трогает.
83
+ *
84
+ * Enter и пробел выбирают подсвеченный элемент, и позиция с отметкой
85
+ * остаются на нём: следующая стрелка ведёт к его соседу. Раньше позиция шла
86
+ * за первым выбранным, и в `multiple` выбор клавишей снимал отметку и уводил
87
+ * позицию к нему.
88
+ *
89
+ * Позиция, которую выбор перенёс на другой элемент, запоминается без
90
+ * визуальной отметки: список ещё не в навигации.
91
+ */
92
+ protected onEngineBound(engine: TCollectionEngine<any, any>): void;
93
+ protected onKeyDown(e: KeyboardEvent): void;
94
+ /**
95
+ * Показанный элемент, со строки которого пришла клавиша, — в том числе
96
+ * недоступный. Навигация его пропускает, но фокус на его строке бывает:
97
+ * элемент могли выключить, пока фокус на ней, а если тема не глушит мышь на
98
+ * выключенной строке, фокус на неё ставит и клик, хоть и не выбирает. Если
99
+ * искать строку только среди доступных, клавиши с неё не работали бы.
100
+ *
101
+ * `null` — клавиша не со строки: из содержимого слотов или с самого корня.
102
+ * Корень — рамка вокруг шапки, списка и подвала, и остановкой Tab его
103
+ * делает только атрибут потребителя.
104
+ */
105
+ private _rowItemOf;
106
+ /**
107
+ * Клавиша со строки: позиция — на элемент строки, без отметки, как за
108
+ * выбором, фокус — узлу списка. Дальше клавиша идёт так же, как с узла:
109
+ * стрелка шагает от строки, а не от прежней позиции (клик, снявший выбор со
110
+ * строки, и запись `focused = true` позицию не двигают), Enter и пробел
111
+ * переключают элемент строки, Tab уходит от узла.
112
+ *
113
+ * Позиция — раньше фокуса: окно (`Virtual`) держит строку под фокусом
114
+ * нарисованной, и уход фокуса это закрепление снимает, а позиция к тому
115
+ * времени уже закрепила элемент строки сама.
116
+ *
117
+ * Фокус переходит во время нажатия клавиши, поэтому `:focus-visible`
118
+ * браузер включает узлу списка, как после Tab, а кольцо строки гаснет
119
+ * вместе с её фокусом. Без прокрутки: строка, с которой пришла клавиша, на
120
+ * экране, а докрутка к узлу списка сдвинула бы страницу. Узла нет —
121
+ * фокус остаётся на месте, но клавиша всё равно идёт от строки.
122
+ */
123
+ private _fromRow;
124
+ /**
125
+ * Выбор идёт через расширение списка, тем же путём, что клик по строке:
126
+ * выключенному элементу оно отказывает. `selection.toggle` выключенность
127
+ * не проверяет — выбрать выключенный элемент из кода вправе приложение.
128
+ *
129
+ * Подсвеченный элемент ищется среди доступных (`items()`), поэтому
130
+ * выключенный или скрытый после подсветки до расширения и не доходит.
131
+ */
132
+ private _toggleHighlighted;
133
+ }
@@ -0,0 +1,199 @@
1
+ import { TCollectionElements } from "../../collection/collection-elements.plugin.js";
2
+ import { isFocusableElement } from "../../../utils/isFocusableElement.js";
3
+ import { listOf as listOf$1, rowOf } from "../row.js";
4
+ import { TListNavigationPlugin } from "../navigation/navigation.plugin.js";
5
+ import { newlySelected } from "../newly-selected.js";
6
+ import { listOf, selectionOf } from "@soxa-ui/core";
7
+ //#region src/custom/list/keyboard/keyboard.plugin.ts
8
+ /**
9
+ * TListKeyboardPlugin — клавиатура самостоятельного списка (ListBox).
10
+ *
11
+ * Общая механика — подписка на `keydown`, привязка к коллекции, учёт
12
+ * подсветки, циклический сдвиг, пропуск недоступных элементов — в
13
+ * `TListNavigationPlugin`. Здесь только то, чем список отличается: набор
14
+ * клавиш, смысл активации и модель фокуса.
15
+ *
16
+ * `ListBox` фокусируется сам: остановка Tab — узел списка внутри корня
17
+ * (`tabindex="0"`, на нём же роль `listbox`), а шапка и подвал стоят рядом с
18
+ * ним. DOM-фокус держит узел списка — кольцо темы у него, — а элемент под
19
+ * стрелками показывает подсветка (`data-highlighted`). Enter и Space
20
+ * переключают выбор подсвеченного через расширение списка
21
+ * (`list.chooseItem`), как и клик по строке.
22
+ *
23
+ * **Элемент под стрелками скринридеру называет `aria-activedescendant` узла
24
+ * списка** (APG Listbox): фокус по строкам не ходит, и без ссылки стрелки были
25
+ * бы для скринридера немыми. Ссылку плагин пишет в набор `aria` списка — его
26
+ * разметка кладёт на узел списка, — на `id` подсвеченного элемента
27
+ * (`TOptionIdsPlugin`), и она повторяет экран: есть, пока у элемента видна
28
+ * отметка и он в документе (`highlightedId` навигации). Позиция без отметки —
29
+ * за выбором или на строке, с которой пришла клавиша, — ссылкой не
30
+ * становится. В окне (`Virtual`) ссылка ждёт, когда окно дорисует
31
+ * подсвеченный элемент (`onHighlightedMounted`), а элемент, ушедший из
32
+ * документа, — из коллекции или со снятым монтированием, — её снимает. `id`
33
+ * элемента — свой, если его задали, и ссылка идёт за его сменой у
34
+ * подсвеченного (`onHighlightedAriaChanged`).
35
+ *
36
+ * Слушатель висит на корне, но клавишу список берёт только с узла списка
37
+ * (`listOf`) и со строки показанного элемента. До корня всплывают и клавиши
38
+ * полей и кнопок из шапки, подвала и слотов элемента — что с ними делать, эти
39
+ * элементы знают сами: поле печатает пробел, кнопка делает из Enter и пробела
40
+ * клик. Правило отвечает на вопрос «чья клавиша», а не «какая», исключений
41
+ * нет: из поля в шапке не работают и стрелки.
42
+ *
43
+ * **Строка держит фокус после клика только до первой клавиши.** У строки
44
+ * `tabindex="-1"`, и фокус на неё ставят клик и запись `focused = true`
45
+ * элемента. Клавиша с неё — клавиша списка с места этой строки: позиция
46
+ * встаёт на элемент строки, фокус возвращается узлу списка, и дальше клавиша
47
+ * идёт так же, как с узла (`_fromRow`). Останься фокус на строке, после
48
+ * клавиши браузер включил бы ей `:focus-visible`, и кольцо строки висело бы до
49
+ * ухода из списка, пока подсветка ходит по другим элементам. Правило — для
50
+ * любой клавиши, а не только для стрелок, Enter и пробела: Tab со строки идёт
51
+ * от узла списка, и Shift+Tab выводит из ListBox одним нажатием, а не
52
+ * останавливается на самом узле — предке строки.
53
+ *
54
+ * Цель сравнивается со строкой на равенство, а не через `contains`, как у
55
+ * табов (`TTabsKeyboardPlugin`): там кнопка закрытия — часть таба, а в строке
56
+ * ListBox лежат только слоты потребителя, и их клавиши принадлежат им. Проверка
57
+ * цели — здесь, а не в `TListNavigationPlugin`: база общая с Select, у которого
58
+ * своё правило — клавиши только с поля.
59
+ */
60
+ var TListKeyboardPlugin = class extends TListNavigationPlugin {
61
+ /** Список: в его набор `aria` — ссылка на подсвеченный элемент. */
62
+ _owner = null;
63
+ /**
64
+ * Узлы элементов — по ним ищется строка, с которой пришла клавиша. Без
65
+ * этого плагина строку не узнать, и список берёт клавиши только с узла
66
+ * списка.
67
+ */
68
+ _elements = null;
69
+ install(ctx, options) {
70
+ super.install(ctx, options);
71
+ this._owner = ctx.getInstance();
72
+ this._elements = ctx.get(TCollectionElements) ?? null;
73
+ this._bundles?.events.on("bundle:unregistered", ({ uid }) => {
74
+ if (uid === this._highlightedUid) this._refer();
75
+ });
76
+ }
77
+ destroy() {
78
+ super.destroy();
79
+ this._owner = null;
80
+ this._elements = null;
81
+ }
82
+ /** Видимая подсветка сменилась — ссылка за ней. */
83
+ onHighlightChanged(_uid) {
84
+ this._refer();
85
+ }
86
+ /** Окно дорисовало подсвеченный элемент: у него появился `id` — на него ссылка. */
87
+ onHighlightedMounted(_uid) {
88
+ this._refer();
89
+ }
90
+ /**
91
+ * Набор подсвеченного сменился — с ним мог смениться его `id` (`id` элемента
92
+ * в `TIdPlugin` задали, сменили или сняли): ссылка за ним.
93
+ */
94
+ onHighlightedAriaChanged(_uid) {
95
+ this._refer();
96
+ }
97
+ /** `aria-activedescendant` списка — на подсвеченный элемент, пока он на экране. */
98
+ _refer() {
99
+ this._owner?.aria.add("aria-activedescendant", this.highlightedId());
100
+ }
101
+ /**
102
+ * Позиция встаёт на выбранный элемент, когда появилась коллекция, а дальше
103
+ * следует за выбором — на элемент, который стал выбранным (`newlySelected`):
104
+ * кликом, клавишей или значением снаружи. Снятие выбора её не трогает.
105
+ *
106
+ * Enter и пробел выбирают подсвеченный элемент, и позиция с отметкой
107
+ * остаются на нём: следующая стрелка ведёт к его соседу. Раньше позиция шла
108
+ * за первым выбранным, и в `multiple` выбор клавишей снимал отметку и уводил
109
+ * позицию к нему.
110
+ *
111
+ * Позиция, которую выбор перенёс на другой элемент, запоминается без
112
+ * визуальной отметки: список ещё не в навигации.
113
+ */
114
+ onEngineBound(engine) {
115
+ const selection = selectionOf(engine);
116
+ const selected = selection?.selected ?? [];
117
+ if (selected.length > 0) this.trackHighlight(selected[0].uid);
118
+ this._listenTo(selection?.events, "change:selection", (items, changed) => {
119
+ const item = newlySelected(items, changed);
120
+ if (item) this.trackHighlight(item.uid);
121
+ });
122
+ }
123
+ onKeyDown(e) {
124
+ const root = e.currentTarget;
125
+ const list = root instanceof Element ? listOf$1(root) : null;
126
+ if (e.target !== list) {
127
+ const item = this._rowItemOf(e.target);
128
+ if (!item) return;
129
+ this._fromRow(item, list);
130
+ }
131
+ if (!this._engine) return;
132
+ if (this.items().length === 0) return;
133
+ switch (e.key) {
134
+ case "ArrowDown":
135
+ e.preventDefault();
136
+ this.move(1);
137
+ return;
138
+ case "ArrowUp":
139
+ e.preventDefault();
140
+ this.move(-1);
141
+ return;
142
+ case "Enter":
143
+ case " ":
144
+ e.preventDefault();
145
+ this._toggleHighlighted();
146
+ return;
147
+ }
148
+ }
149
+ /**
150
+ * Показанный элемент, со строки которого пришла клавиша, — в том числе
151
+ * недоступный. Навигация его пропускает, но фокус на его строке бывает:
152
+ * элемент могли выключить, пока фокус на ней, а если тема не глушит мышь на
153
+ * выключенной строке, фокус на неё ставит и клик, хоть и не выбирает. Если
154
+ * искать строку только среди доступных, клавиши с неё не работали бы.
155
+ *
156
+ * `null` — клавиша не со строки: из содержимого слотов или с самого корня.
157
+ * Корень — рамка вокруг шапки, списка и подвала, и остановкой Tab его
158
+ * делает только атрибут потребителя.
159
+ */
160
+ _rowItemOf(target) {
161
+ return this.shown().find((item) => rowOf(this._elements, item.uid) === target) ?? null;
162
+ }
163
+ /**
164
+ * Клавиша со строки: позиция — на элемент строки, без отметки, как за
165
+ * выбором, фокус — узлу списка. Дальше клавиша идёт так же, как с узла:
166
+ * стрелка шагает от строки, а не от прежней позиции (клик, снявший выбор со
167
+ * строки, и запись `focused = true` позицию не двигают), Enter и пробел
168
+ * переключают элемент строки, Tab уходит от узла.
169
+ *
170
+ * Позиция — раньше фокуса: окно (`Virtual`) держит строку под фокусом
171
+ * нарисованной, и уход фокуса это закрепление снимает, а позиция к тому
172
+ * времени уже закрепила элемент строки сама.
173
+ *
174
+ * Фокус переходит во время нажатия клавиши, поэтому `:focus-visible`
175
+ * браузер включает узлу списка, как после Tab, а кольцо строки гаснет
176
+ * вместе с её фокусом. Без прокрутки: строка, с которой пришла клавиша, на
177
+ * экране, а докрутка к узлу списка сдвинула бы страницу. Узла нет —
178
+ * фокус остаётся на месте, но клавиша всё равно идёт от строки.
179
+ */
180
+ _fromRow(item, list) {
181
+ this.trackHighlight(item.uid);
182
+ if (isFocusableElement(list)) list.focus({ preventScroll: true });
183
+ }
184
+ /**
185
+ * Выбор идёт через расширение списка, тем же путём, что клик по строке:
186
+ * выключенному элементу оно отказывает. `selection.toggle` выключенность
187
+ * не проверяет — выбрать выключенный элемент из кода вправе приложение.
188
+ *
189
+ * Подсвеченный элемент ищется среди доступных (`items()`), поэтому
190
+ * выключенный или скрытый после подсветки до расширения и не доходит.
191
+ */
192
+ _toggleHighlighted() {
193
+ if (this._highlightedUid == null) return;
194
+ const item = this.itemByUid(this._highlightedUid);
195
+ if (item) listOf(this._engine)?.chooseItem(item);
196
+ }
197
+ };
198
+ //#endregion
199
+ export { TListKeyboardPlugin };
@@ -0,0 +1,3 @@
1
+ import type { TListNavigationPluginEvents } from '../navigation';
2
+ export type { THighlightPayload } from '../navigation';
3
+ export type TListKeyboardPluginEvents = TListNavigationPluginEvents;
@@ -0,0 +1,2 @@
1
+ export { TListNavigationPlugin } from './navigation.plugin';
2
+ export type { THighlightPayload, TListNavigationPluginEvents, TListEdge } from './types';