@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,102 @@
1
+ import type { TDefaultValues } from '@soxa-ui/core';
2
+ import { TBasePlugin } from '../../base';
3
+ import type { IPluginContext } from '../../base';
4
+ import type { IAriaLinks, IAriaParts, IAriaPluginOptions, IAriaPluginProps, TAriaPluginEvents } from './types';
5
+ /**
6
+ * TAriaPlugin — доступное имя и описание компонента.
7
+ *
8
+ * Почему плагин, а не свойства `TComponentView`. Имя нужно не всякому
9
+ * компоненту, а только тому, у кого нет подходящего видимого текста:
10
+ * иконочной кнопке, индикатору выполнения, диалогу, полю ввода. У кнопки с
11
+ * текстом, у заголовка или обёртки имя вычисляется из содержимого само, и
12
+ * лишние `label`/`labelledBy` на базовом классе были бы мусором в каждом
13
+ * наследнике.
14
+ * Поэтому подключается по необходимости — как `TActionPlugin`.
15
+ *
16
+ * Почему плагин здесь годится, хотя обычно для ARIA не годится. Плагин,
17
+ * который писал бы атрибуты прямо в DOM после монтирования, дал бы пустую
18
+ * серверную разметку. Этот в DOM не ходит: он пишет в `instance.aria` — тот же
19
+ * набор, что заполняют ядро и расширения коллекции, — а раскладывает набор
20
+ * шаблон, синхронно.
21
+ *
22
+ * Входов у плагина три: пропсы (`aria_label`, `aria_labelledBy`,
23
+ * `aria_describedBy`) — их задаёт разметка компонента, — ссылки от разметки
24
+ * вокруг (`links`) — их пишет поле формы `Field` своему контролу — и ссылки
25
+ * на части своей разметки (`parts`) — их пишет плагин связок компонента
26
+ * (счётчик символов Textarea). Сливает их плагин: подпись поля — имя, пока
27
+ * своего нет, а в `aria-describedby` встают по порядку пояснение поля, свои
28
+ * части и своё пояснение. Второго писателя тех же атрибутов нет, и ни один
29
+ * вход не стирает другой.
30
+ */
31
+ export declare class TAriaPlugin extends TBasePlugin<any, TAriaPluginEvents> {
32
+ /**
33
+ * Умолчания пропов — «имени нет». Объявлены ключами без значения, как
34
+ * `closable` у элемента Tabs: значим ключ, а не значение. Снятый из разметки
35
+ * проп связка возвращает к умолчанию декларации, и без ключа у компонента
36
+ * оставалось бы прежнее имя. В декларацию их кладёт `definePlugin` — см.
37
+ * `TAnchorPlugin.defaultValues`.
38
+ */
39
+ static defaultValues: TDefaultValues<IAriaPluginProps, never, 'label' | 'labelledBy' | 'describedBy'>;
40
+ private _instance;
41
+ private _label;
42
+ private _labelledBy;
43
+ private _describedBy;
44
+ private _links;
45
+ private _parts;
46
+ private _role;
47
+ install(ctx: IPluginContext, options?: IAriaPluginOptions): void;
48
+ /**
49
+ * Доступное имя.
50
+ *
51
+ * Пустая строка приравнена к отсутствию: `aria-label=""` имени не даёт, но
52
+ * глушит вычисление имени из содержимого — хуже, чем не ставить атрибут.
53
+ */
54
+ get label(): string | undefined;
55
+ set label(value: string | undefined);
56
+ /**
57
+ * `id` элемента, чей текст служит именем. Приоритетнее `label` — так решает
58
+ * сам алгоритм вычисления имени в браузере, и мы ему не противоречим.
59
+ */
60
+ get labelledBy(): string | undefined;
61
+ set labelledBy(value: string | undefined);
62
+ /** `id` элемента с пояснением: подсказка под полем, текст ошибки. */
63
+ get describedBy(): string | undefined;
64
+ set describedBy(value: string | undefined);
65
+ /**
66
+ * Ссылки от разметки вокруг — подпись и пояснение поля формы. Не проп: в
67
+ * контракт плагина не входит, пишет его связка поля с контролом
68
+ * (`TFieldControlExtension`), а не разметка компонента.
69
+ *
70
+ * - `labelledBy` — имя, пока своего нет: своё (`label`, `labelledBy`)
71
+ * главнее, иначе подпись поля перекрыла бы имя, которое задал
72
+ * потребитель;
73
+ * - `describedBy` — перед своим: `aria-describedby` получает оба `id`,
74
+ * пояснение поля — первым.
75
+ *
76
+ * Объект заменяется целиком, а не правится на месте.
77
+ */
78
+ get links(): IAriaLinks;
79
+ set links(value: IAriaLinks);
80
+ /**
81
+ * Ссылки на части своей разметки — часть без своего экземпляра, которая
82
+ * поясняет компонент: счётчик символов Textarea. Не проп: в контракт
83
+ * плагина не входит, как и `links`, — пишет его плагин связок компонента,
84
+ * который знает `id` части, а не разметка.
85
+ *
86
+ * Только пояснение: `describedBy` встаёт в `aria-describedby` после
87
+ * пояснения поля формы и перед своим. Так части звучат на фокусе
88
+ * компонента, вместе с ним, а не живым регионом на каждое изменение.
89
+ *
90
+ * Объект заменяется целиком, а не правится на месте.
91
+ */
92
+ get parts(): IAriaParts;
93
+ set parts(value: IAriaParts);
94
+ /**
95
+ * Есть ли у компонента имя из этого плагина — своё или подпись поля.
96
+ * Описание именем не считается.
97
+ */
98
+ get named(): boolean;
99
+ /** Пишет свою часть в общий набор компонента. */
100
+ private _apply;
101
+ destroy(): void;
102
+ }
@@ -0,0 +1,190 @@
1
+ import { TBasePlugin } from "../../base/base.class.js";
2
+ //#region src/custom/component-view/aria.plugin.ts
3
+ /** Ссылок от разметки вокруг нет. */
4
+ var NO_LINKS = {};
5
+ /** Ссылок на свои части нет. */
6
+ var NO_PARTS = {};
7
+ /** Те же ли ссылки — по содержимому: связка пишет новый объект на каждую смену. */
8
+ function sameLinks(a, b) {
9
+ return a.labelledBy === b.labelledBy && a.describedBy === b.describedBy;
10
+ }
11
+ /**
12
+ * TAriaPlugin — доступное имя и описание компонента.
13
+ *
14
+ * Почему плагин, а не свойства `TComponentView`. Имя нужно не всякому
15
+ * компоненту, а только тому, у кого нет подходящего видимого текста:
16
+ * иконочной кнопке, индикатору выполнения, диалогу, полю ввода. У кнопки с
17
+ * текстом, у заголовка или обёртки имя вычисляется из содержимого само, и
18
+ * лишние `label`/`labelledBy` на базовом классе были бы мусором в каждом
19
+ * наследнике.
20
+ * Поэтому подключается по необходимости — как `TActionPlugin`.
21
+ *
22
+ * Почему плагин здесь годится, хотя обычно для ARIA не годится. Плагин,
23
+ * который писал бы атрибуты прямо в DOM после монтирования, дал бы пустую
24
+ * серверную разметку. Этот в DOM не ходит: он пишет в `instance.aria` — тот же
25
+ * набор, что заполняют ядро и расширения коллекции, — а раскладывает набор
26
+ * шаблон, синхронно.
27
+ *
28
+ * Входов у плагина три: пропсы (`aria_label`, `aria_labelledBy`,
29
+ * `aria_describedBy`) — их задаёт разметка компонента, — ссылки от разметки
30
+ * вокруг (`links`) — их пишет поле формы `Field` своему контролу — и ссылки
31
+ * на части своей разметки (`parts`) — их пишет плагин связок компонента
32
+ * (счётчик символов Textarea). Сливает их плагин: подпись поля — имя, пока
33
+ * своего нет, а в `aria-describedby` встают по порядку пояснение поля, свои
34
+ * части и своё пояснение. Второго писателя тех же атрибутов нет, и ни один
35
+ * вход не стирает другой.
36
+ */
37
+ var TAriaPlugin = class TAriaPlugin extends TBasePlugin {
38
+ /**
39
+ * Умолчания пропов — «имени нет». Объявлены ключами без значения, как
40
+ * `closable` у элемента Tabs: значим ключ, а не значение. Снятый из разметки
41
+ * проп связка возвращает к умолчанию декларации, и без ключа у компонента
42
+ * оставалось бы прежнее имя. В декларацию их кладёт `definePlugin` — см.
43
+ * `TAnchorPlugin.defaultValues`.
44
+ */
45
+ static defaultValues = {
46
+ label: void 0,
47
+ labelledBy: void 0,
48
+ describedBy: void 0
49
+ };
50
+ _instance = null;
51
+ _label = TAriaPlugin.defaultValues.label;
52
+ _labelledBy = TAriaPlugin.defaultValues.labelledBy;
53
+ _describedBy = TAriaPlugin.defaultValues.describedBy;
54
+ _links = NO_LINKS;
55
+ _parts = NO_PARTS;
56
+ _role;
57
+ install(ctx, options) {
58
+ super.install(ctx, options);
59
+ this._instance = ctx.getInstance();
60
+ this._role = options?.role;
61
+ this._apply();
62
+ }
63
+ /**
64
+ * Доступное имя.
65
+ *
66
+ * Пустая строка приравнена к отсутствию: `aria-label=""` имени не даёт, но
67
+ * глушит вычисление имени из содержимого — хуже, чем не ставить атрибут.
68
+ */
69
+ get label() {
70
+ return this._label;
71
+ }
72
+ set label(value) {
73
+ const oldLabel = this.label;
74
+ if (this._label === value) return;
75
+ this._label = value;
76
+ this._apply();
77
+ this.events.emit("change:label", {
78
+ newValue: value,
79
+ oldValue: oldLabel
80
+ });
81
+ }
82
+ /**
83
+ * `id` элемента, чей текст служит именем. Приоритетнее `label` — так решает
84
+ * сам алгоритм вычисления имени в браузере, и мы ему не противоречим.
85
+ */
86
+ get labelledBy() {
87
+ return this._labelledBy;
88
+ }
89
+ set labelledBy(value) {
90
+ const oldLabelledBy = this.labelledBy;
91
+ if (this._labelledBy === value) return;
92
+ this._labelledBy = value;
93
+ this._apply();
94
+ this.events.emit("change:labelledBy", {
95
+ newValue: value,
96
+ oldValue: oldLabelledBy
97
+ });
98
+ }
99
+ /** `id` элемента с пояснением: подсказка под полем, текст ошибки. */
100
+ get describedBy() {
101
+ return this._describedBy;
102
+ }
103
+ set describedBy(value) {
104
+ const oldDescribedBy = this.describedBy;
105
+ if (this._describedBy === value) return;
106
+ this._describedBy = value;
107
+ this._apply();
108
+ this.events.emit("change:describedBy", {
109
+ newValue: value,
110
+ oldValue: oldDescribedBy
111
+ });
112
+ }
113
+ /**
114
+ * Ссылки от разметки вокруг — подпись и пояснение поля формы. Не проп: в
115
+ * контракт плагина не входит, пишет его связка поля с контролом
116
+ * (`TFieldControlExtension`), а не разметка компонента.
117
+ *
118
+ * - `labelledBy` — имя, пока своего нет: своё (`label`, `labelledBy`)
119
+ * главнее, иначе подпись поля перекрыла бы имя, которое задал
120
+ * потребитель;
121
+ * - `describedBy` — перед своим: `aria-describedby` получает оба `id`,
122
+ * пояснение поля — первым.
123
+ *
124
+ * Объект заменяется целиком, а не правится на месте.
125
+ */
126
+ get links() {
127
+ return this._links;
128
+ }
129
+ set links(value) {
130
+ if (sameLinks(value, this._links)) return;
131
+ this._links = value;
132
+ this._apply();
133
+ }
134
+ /**
135
+ * Ссылки на части своей разметки — часть без своего экземпляра, которая
136
+ * поясняет компонент: счётчик символов Textarea. Не проп: в контракт
137
+ * плагина не входит, как и `links`, — пишет его плагин связок компонента,
138
+ * который знает `id` части, а не разметка.
139
+ *
140
+ * Только пояснение: `describedBy` встаёт в `aria-describedby` после
141
+ * пояснения поля формы и перед своим. Так части звучат на фокусе
142
+ * компонента, вместе с ним, а не живым регионом на каждое изменение.
143
+ *
144
+ * Объект заменяется целиком, а не правится на месте.
145
+ */
146
+ get parts() {
147
+ return this._parts;
148
+ }
149
+ set parts(value) {
150
+ if (value.describedBy === this._parts.describedBy) return;
151
+ this._parts = value;
152
+ this._apply();
153
+ }
154
+ /**
155
+ * Есть ли у компонента имя из этого плагина — своё или подпись поля.
156
+ * Описание именем не считается.
157
+ */
158
+ get named() {
159
+ return !!(this._label || this._labelledBy || this._links.labelledBy);
160
+ }
161
+ /** Пишет свою часть в общий набор компонента. */
162
+ _apply() {
163
+ const aria = this._instance?.aria;
164
+ if (!aria) return;
165
+ const labelledBy = this._labelledBy || (this._label ? void 0 : this._links.labelledBy);
166
+ const describedBy = [
167
+ this._links.describedBy,
168
+ this._parts.describedBy,
169
+ this._describedBy
170
+ ].filter(Boolean).join(" ");
171
+ aria.add("aria-label", this._label || null);
172
+ aria.add("aria-labelledby", labelledBy || null);
173
+ aria.add("aria-describedby", describedBy || null);
174
+ if (!this._role) return;
175
+ aria.add("role", this.named ? this._role : null);
176
+ aria.add("aria-hidden", this.named ? null : "true");
177
+ }
178
+ destroy() {
179
+ this._instance = null;
180
+ this._label = void 0;
181
+ this._labelledBy = void 0;
182
+ this._describedBy = void 0;
183
+ this._links = NO_LINKS;
184
+ this._parts = NO_PARTS;
185
+ this._role = void 0;
186
+ super.destroy();
187
+ }
188
+ };
189
+ //#endregion
190
+ export { TAriaPlugin };
@@ -0,0 +1,2 @@
1
+ export { TAriaPlugin } from './aria.plugin';
2
+ export type { IAriaLinks, IAriaParts, IAriaPluginOptions, TAriaPluginEvents, IAriaPluginProps, } from './types';
@@ -0,0 +1,62 @@
1
+ import type { TValuePayload } from '@soxa-ui/core';
2
+ import type { TPluginEvents } from '../../base';
3
+ /**
4
+ * Настройки TAriaPlugin.
5
+ */
6
+ export interface IAriaPluginOptions {
7
+ /**
8
+ * Роль, которую элемент принимает, как только у него появилось имя.
9
+ *
10
+ * Нужна там, где без имени элемент декоративен: `TIcon` по умолчанию
11
+ * отдаёт `aria-hidden="true"`, а с именем обязан стать `role="img"`.
12
+ * Компонентам, у которых роль не зависит от наличия имени, не нужна.
13
+ */
14
+ role?: string;
15
+ }
16
+ export type TAriaPluginEvents = TPluginEvents & {
17
+ /** change:label */
18
+ 'change:label': (payload: TValuePayload<string | undefined>) => void;
19
+ /** change:labelledBy */
20
+ 'change:labelledBy': (payload: TValuePayload<string | undefined>) => void;
21
+ /** change:describedBy */
22
+ 'change:describedBy': (payload: TValuePayload<string | undefined>) => void;
23
+ };
24
+ /**
25
+ * Пропсы плагина такими, какими их объявляет contribution — без неймспейса.
26
+ *
27
+ * Неймспейс (`aria_label`) навешивает `DescriptorAllProps` в `@soxa-ui/setup`
28
+ * по `namespace` из `definePlugin`; здесь только собственные имена пропсов.
29
+ */
30
+ export interface IAriaPluginProps {
31
+ label?: string;
32
+ labelledBy?: string;
33
+ describedBy?: string;
34
+ }
35
+ /**
36
+ * Ссылки от разметки вокруг компонента — второй вход плагина рядом с
37
+ * пропсами: подпись и пояснение поля формы (`Field`). Пишет их связка поля с
38
+ * контролом, а не разметка компонента, поэтому в контракт они не входят.
39
+ */
40
+ export interface IAriaLinks {
41
+ /**
42
+ * `id` подписи — имя, пока своего нет: своё имя (`label`, `labelledBy`)
43
+ * главнее
44
+ */
45
+ readonly labelledBy?: string;
46
+ /** `id` пояснения — встаёт в `aria-describedby` перед своим */
47
+ readonly describedBy?: string;
48
+ }
49
+ /**
50
+ * Ссылки на части своей разметки — третий вход плагина: часть компонента без
51
+ * своего экземпляра, которая его поясняет (счётчик символов Textarea). Пишет
52
+ * их плагин связок компонента, а не разметка, поэтому в контракт они не
53
+ * входят, как и `IAriaLinks`. Только пояснение: имя компоненту его часть не
54
+ * даёт.
55
+ */
56
+ export interface IAriaParts {
57
+ /**
58
+ * `id` части-пояснения — встаёт в `aria-describedby` после пояснения поля
59
+ * формы и перед своим `describedBy`
60
+ */
61
+ readonly describedBy?: string;
62
+ }
@@ -0,0 +1,41 @@
1
+ import type { IDateInput } from '@soxa-ui/core';
2
+ import { TBasePlugin } from '../../../base';
3
+ import type { IPluginContext } from '../../../base';
4
+ import type { TDateInputClipboardPluginEvents } from './types';
5
+ /**
6
+ * TDateInputClipboardPlugin — буфер обмена и перетаскивание поля даты: дата
7
+ * копируется, вырезается и вставляется как текст.
8
+ *
9
+ * **Копирование и вырезание** — то, что выделено в ряду, текстом узлов:
10
+ * `12.05.2026`, `05.2026`. Текст собирает плагин, а не браузер: Chrome ставит
11
+ * перевод строки между флекс-коробками частей. Слушатель — на документе:
12
+ * протяжка, начатая с пустого места поля, оставляет фокус вне частей, а
13
+ * событие буфера приходит туда, где фокус. Выделение шире ряда — не поля, и его
14
+ * копирует браузер. Вырезание вдобавок очищает задетые части; у поля только для
15
+ * чтения — копирует, и только.
16
+ *
17
+ * **Перетаскивание** выделенной даты кладёт тот же текст.
18
+ *
19
+ * **Вставка** приходит на часть под фокусом, хотя она нередактируемая: текст
20
+ * уходит ядру, и дата ISO или в формате поля заменяет всю дату. Не дата —
21
+ * ничего не меняется, но вставка гасится всегда: в ряду, ставшем редактируемым
22
+ * ради контекстного меню, браузер вставил бы текст в разметку.
23
+ */
24
+ export declare class TDateInputClipboardPlugin extends TBasePlugin<IDateInput, TDateInputClipboardPluginEvents> {
25
+ private _owner;
26
+ private _root;
27
+ install(ctx: IPluginContext): void;
28
+ destroy(): void;
29
+ /** Корень сменился — слушатели переезжают, у документа — тоже: он может быть другим. */
30
+ private _bind;
31
+ private readonly _onCopy;
32
+ /** Вырезание — копирование и очистка задетых частей. */
33
+ private readonly _onCut;
34
+ /** Положить в буфер выделенное в ряду; выделение не поля — `null`, буфер браузера. */
35
+ private _copy;
36
+ private readonly _onPaste;
37
+ /** Перетаскивают выделенную дату — тот же текст, что в буфер. */
38
+ private readonly _onDragStart;
39
+ /** Выделение документа в ряду поля. */
40
+ private _selection;
41
+ }
@@ -0,0 +1,98 @@
1
+ import { TBasePlugin } from "../../../base/base.class.js";
2
+ import { TElementPlugin } from "../../element/element.plugin.js";
3
+ import { rangeText, rowOf, rowSelection, segmentsOf, touchedSegments } from "../parts.js";
4
+ //#region src/custom/date-input/clipboard/clipboard.plugin.ts
5
+ /** Текст для буфера и перетаскивания — обычный текст, без разметки частей. */
6
+ var PLAIN_TEXT = "text/plain";
7
+ /**
8
+ * TDateInputClipboardPlugin — буфер обмена и перетаскивание поля даты: дата
9
+ * копируется, вырезается и вставляется как текст.
10
+ *
11
+ * **Копирование и вырезание** — то, что выделено в ряду, текстом узлов:
12
+ * `12.05.2026`, `05.2026`. Текст собирает плагин, а не браузер: Chrome ставит
13
+ * перевод строки между флекс-коробками частей. Слушатель — на документе:
14
+ * протяжка, начатая с пустого места поля, оставляет фокус вне частей, а
15
+ * событие буфера приходит туда, где фокус. Выделение шире ряда — не поля, и его
16
+ * копирует браузер. Вырезание вдобавок очищает задетые части; у поля только для
17
+ * чтения — копирует, и только.
18
+ *
19
+ * **Перетаскивание** выделенной даты кладёт тот же текст.
20
+ *
21
+ * **Вставка** приходит на часть под фокусом, хотя она нередактируемая: текст
22
+ * уходит ядру, и дата ISO или в формате поля заменяет всю дату. Не дата —
23
+ * ничего не меняется, но вставка гасится всегда: в ряду, ставшем редактируемым
24
+ * ради контекстного меню, браузер вставил бы текст в разметку.
25
+ */
26
+ var TDateInputClipboardPlugin = class extends TBasePlugin {
27
+ _owner = null;
28
+ _root = null;
29
+ install(ctx) {
30
+ super.install(ctx);
31
+ this._owner = ctx.getInstance() ?? null;
32
+ const elementPlugin = ctx.get(TElementPlugin);
33
+ elementPlugin?.events.on("ready", (element) => this._bind(element));
34
+ elementPlugin?.events.on("removed", () => this._bind(null));
35
+ }
36
+ destroy() {
37
+ this._bind(null);
38
+ this._owner = null;
39
+ super.destroy();
40
+ }
41
+ /** Корень сменился — слушатели переезжают, у документа — тоже: он может быть другим. */
42
+ _bind(root) {
43
+ const previous = this._root;
44
+ previous?.removeEventListener("paste", this._onPaste);
45
+ previous?.removeEventListener("dragstart", this._onDragStart);
46
+ this._root?.ownerDocument.removeEventListener("copy", this._onCopy);
47
+ this._root?.ownerDocument.removeEventListener("cut", this._onCut);
48
+ this._root = root;
49
+ const target = root;
50
+ target?.addEventListener("paste", this._onPaste);
51
+ target?.addEventListener("dragstart", this._onDragStart);
52
+ root?.ownerDocument.addEventListener("copy", this._onCopy);
53
+ root?.ownerDocument.addEventListener("cut", this._onCut);
54
+ }
55
+ _onCopy = (event) => {
56
+ this._copy(event);
57
+ };
58
+ /** Вырезание — копирование и очистка задетых частей. */
59
+ _onCut = (event) => {
60
+ const range = this._copy(event);
61
+ const owner = this._owner;
62
+ const root = this._root;
63
+ if (range && owner && root) owner.clearSegments(touchedSegments(segmentsOf(owner, root), range));
64
+ };
65
+ /** Положить в буфер выделенное в ряду; выделение не поля — `null`, буфер браузера. */
66
+ _copy(event) {
67
+ const range = this._selection();
68
+ if (event.defaultPrevented || !range || !event.clipboardData) return null;
69
+ event.clipboardData.setData(PLAIN_TEXT, rangeText(range));
70
+ event.preventDefault();
71
+ return range;
72
+ }
73
+ _onPaste = (event) => {
74
+ const owner = this._owner;
75
+ const root = this._root;
76
+ const row = owner && root ? rowOf(owner, root) : null;
77
+ if (!owner || !row || event.defaultPrevented) return;
78
+ if (!(event.target instanceof Node) || !row.contains(event.target)) return;
79
+ event.preventDefault();
80
+ owner.paste(event.clipboardData?.getData(PLAIN_TEXT) ?? "");
81
+ };
82
+ /** Перетаскивают выделенную дату — тот же текст, что в буфер. */
83
+ _onDragStart = (event) => {
84
+ const range = this._selection();
85
+ if (!range || !event.dataTransfer) return;
86
+ event.dataTransfer.clearData();
87
+ event.dataTransfer.setData(PLAIN_TEXT, rangeText(range));
88
+ };
89
+ /** Выделение документа в ряду поля. */
90
+ _selection() {
91
+ const owner = this._owner;
92
+ const root = this._root;
93
+ const row = owner && root ? rowOf(owner, root) : null;
94
+ return row ? rowSelection(row) : null;
95
+ }
96
+ };
97
+ //#endregion
98
+ export { TDateInputClipboardPlugin };
@@ -0,0 +1,2 @@
1
+ export { TDateInputClipboardPlugin } from './clipboard.plugin';
2
+ export type { TDateInputClipboardPluginEvents } from './types';
@@ -0,0 +1,6 @@
1
+ import type { TPluginEvents } from '../../../base';
2
+ /**
3
+ * Своих событий у плагина нет: что скопировали, видно в буфере обмена, а
4
+ * вставку и вырезание — в частях ядра.
5
+ */
6
+ export type TDateInputClipboardPluginEvents = TPluginEvents;
@@ -0,0 +1,21 @@
1
+ import type { IDateInput } from '@soxa-ui/core';
2
+ import { TBasePlugin } from '../../../base';
3
+ import type { IPluginContext } from '../../../base';
4
+ /**
5
+ * TDateInputIdsPlugin — `id` частей поля даты в документе.
6
+ *
7
+ * Пишет `id` каждой части в её набор (`segmentSets` поля), который ядро
8
+ * раскладывает в `segments`. По нему часть ссылается на себя, когда её имя
9
+ * собирают из её имени и имени поля (`aria-labelledby` на сенсорных
10
+ * устройствах Apple — `TDateInputTouchPlugin`).
11
+ *
12
+ * `id` — от монтирования (`createId`) и типа части, а не от места в формате:
13
+ * смена локали переставляет части, а их `id` остаются. Пишется при установке,
14
+ * синхронно, — `id` есть уже в первой (и серверной) отрисовке. Пишется всем
15
+ * типам частей, а не только частям формата: смена вида поля, точности времени
16
+ * и локали добавляет части (время, секунду, период суток), и у них `id` уже
17
+ * есть, кто бы ни прочёл набор первым.
18
+ */
19
+ export declare class TDateInputIdsPlugin extends TBasePlugin<IDateInput> {
20
+ install(ctx: IPluginContext): void;
21
+ }
@@ -0,0 +1,28 @@
1
+ import { TBasePlugin } from "../../../base/base.class.js";
2
+ import { allPartTypes } from "../parts.js";
3
+ //#region src/custom/date-input/ids/ids.plugin.ts
4
+ /**
5
+ * TDateInputIdsPlugin — `id` частей поля даты в документе.
6
+ *
7
+ * Пишет `id` каждой части в её набор (`segmentSets` поля), который ядро
8
+ * раскладывает в `segments`. По нему часть ссылается на себя, когда её имя
9
+ * собирают из её имени и имени поля (`aria-labelledby` на сенсорных
10
+ * устройствах Apple — `TDateInputTouchPlugin`).
11
+ *
12
+ * `id` — от монтирования (`createId`) и типа части, а не от места в формате:
13
+ * смена локали переставляет части, а их `id` остаются. Пишется при установке,
14
+ * синхронно, — `id` есть уже в первой (и серверной) отрисовке. Пишется всем
15
+ * типам частей, а не только частям формата: смена вида поля, точности времени
16
+ * и локали добавляет части (время, секунду, период суток), и у них `id` уже
17
+ * есть, кто бы ни прочёл набор первым.
18
+ */
19
+ var TDateInputIdsPlugin = class extends TBasePlugin {
20
+ install(ctx) {
21
+ super.install(ctx);
22
+ const owner = ctx.getInstance();
23
+ if (!owner) return;
24
+ for (const type of allPartTypes()) owner.segmentSets(type).aria.add("id", ctx.createId(type));
25
+ }
26
+ };
27
+ //#endregion
28
+ export { TDateInputIdsPlugin };
@@ -0,0 +1 @@
1
+ export * from './ids.plugin';
@@ -0,0 +1,6 @@
1
+ export * from './clipboard';
2
+ export * from './ids';
3
+ export * from './keyboard';
4
+ export * from './pointer';
5
+ export * from './touch';
6
+ export { firstSegmentOf } from './parts';
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './keyboard.plugin';
@@ -0,0 +1,54 @@
1
+ import type { IDateInput } from '@soxa-ui/core';
2
+ import { TBasePlugin } from '../../../base';
3
+ import type { IPluginContext } from '../../../base';
4
+ import type { TDateInputKeyboardPluginEvents } from './types';
5
+ /**
6
+ * TDateInputKeyboardPlugin — клавиатура поля даты и DOM-фокус, который идёт
7
+ * за частью под фокусом ядра.
8
+ *
9
+ * Части нередактируемые: браузер текст сам не правит и `beforeinput` не шлёт,
10
+ * а всё, что делает клавиша, — команда ядра. Клавиши берутся только с самой
11
+ * части: у содержимого слотов (кнопки календаря) свои клавиши. Обработанная
12
+ * клавиша гасится `preventDefault`.
13
+ *
14
+ * - **Цифра** — набор в часть (`typeKey`); цифры ASCII, локали и
15
+ * полноширинные различает ядро. Во время композиции IME клавиша не наша.
16
+ * - **Буква** у периода суток — тот же `typeKey`: какой период она выбирает,
17
+ * решает ядро по именам периодов локали.
18
+ * - **↑/↓, Home/End** — число части (у периода суток — другой период),
19
+ * **Backspace** — стереть цифру (с пустой части — фокус на предыдущую),
20
+ * **Delete** — очистить часть, **←/→** — соседняя часть по направлению ряда.
21
+ * - **Ctrl/Cmd+A** — выделение браузера на весь ряд, по `code`, а не `key`:
22
+ * на русской раскладке `key` — «ф». Фокус остаётся на части, копирует и
23
+ * вырезает выделенное плагин буфера обмена.
24
+ * - **Выделение задело части** — Delete и Backspace их очищают, цифра
25
+ * очищает и набирается в первую (`replaceSegments`). Выделение браузер у
26
+ * нередактируемого текста сам не снимает, поэтому клавишу, которую поле
27
+ * обработало, плагин снимает с ним вместе.
28
+ *
29
+ * **Фокус.** `focusin` на части сообщает ядру часть, `focusout` из ряда —
30
+ * что фокуса в поле нет. Обратно — `change:focusedSegment`: ядро перевело
31
+ * фокус (набрали число до конца, Backspace на пустой части), и DOM-фокус идёт
32
+ * за ним, если стоит в ряду. Своих `tabindex` у плагина нет: остановка Tab у
33
+ * каждой части — набор, который отдаёт ядро.
34
+ */
35
+ export declare class TDateInputKeyboardPlugin extends TBasePlugin<IDateInput, TDateInputKeyboardPluginEvents> {
36
+ private _owner;
37
+ private _root;
38
+ install(ctx: IPluginContext): void;
39
+ destroy(): void;
40
+ /** Корень сменился — слушатели переезжают. */
41
+ private _bind;
42
+ private readonly _onKeyDown;
43
+ /** Исполнить клавишу; клавиша не поля — `false`. */
44
+ private _handle;
45
+ /** Фокус пришёл на часть — ядро ведёт набор в неё; не на часть — фокуса в поле нет. */
46
+ private readonly _onFocusIn;
47
+ /** Фокус ушёл не на часть — из поля. На соседнюю часть его приведёт `focusin`. */
48
+ private readonly _onFocusOut;
49
+ /**
50
+ * Ядро перевело фокус на другую часть — DOM-фокус за ним, если он в ряду:
51
+ * фокус, который пользователь увёл со страницы, поле не забирает.
52
+ */
53
+ private readonly _onFocusedSegment;
54
+ }