@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,356 @@
1
+ import { TBasePlugin } from "../../../base/base.class.js";
2
+ import { TCollectionBundlesPlugin } from "../../collection/bundles.plugin.js";
3
+ import { TElementPlugin } from "../../element/element.plugin.js";
4
+ import { TCollectionElements } from "../../collection/collection-elements.plugin.js";
5
+ import { isFocusableElement } from "../../../utils/isFocusableElement.js";
6
+ import { closestControl, tabStops } from "../../../utils/tabStops.js";
7
+ import { tabStopsAfter } from "../../../utils/tabStopsAfter.js";
8
+ import { tabStopsBefore } from "../../../utils/tabStopsBefore.js";
9
+ import { focusFirst } from "../../../utils/focusFirst.js";
10
+ import { arrowStep, slideDirection } from "../../slide/direction.js";
11
+ //#region src/custom/table/grid/grid.plugin.ts
12
+ /** На сколько строк ведут PageUp и PageDown — пока опция не задана. */
13
+ var PAGE_STEP = 10;
14
+ /**
15
+ * Ось строки сетки: колонки идут к её концу. По ней направление письма
16
+ * сводится в сторону стрелок (`slideDirection`): в RTL → ведёт к началу.
17
+ */
18
+ var AXIS = {
19
+ orientation: "horizontal",
20
+ inverted: false
21
+ };
22
+ /** Ребёнок узла с классом — только прямые дети: во вложенной таблице свои части. */
23
+ function childOf(node, className) {
24
+ if (!node) return null;
25
+ return Array.from(node.children).find((child) => child.classList.contains(className)) ?? null;
26
+ }
27
+ /**
28
+ * TTableGridPlugin — сетка таблицы в документе (APG Data Grid): клавиши,
29
+ * выбор строки нажатием и DOM-фокус за фокусом сетки.
30
+ *
31
+ * Операции над DOM — здесь, фокус и выбор — у расширения `grid` коллекции
32
+ * строк: плагин переводит клавиши и нажатия в его команды (`focusCell`,
33
+ * `moveFocus`, `moveFocusToEdge`, `chooseRow`). Какая ячейка под фокусом,
34
+ * решает расширение, а плагин ставит на неё DOM-фокус. Движок плагин узнаёт
35
+ * от реестра bundles, узлы строк — от реестра узлов. Вне сетки плагин не
36
+ * делает ничего.
37
+ *
38
+ * **Ячейки** плагин находит по строкам: шапка — строка шапки своей таблицы
39
+ * (прямыми детьми, по классам владельца), строка тела — узел строки
40
+ * коллекции. Ячейки строки идут по колонкам сетки: колонка выбора и
41
+ * показанные колонки, — как их рисует таблица. Ячейки вложенной таблицы не
42
+ * её: строк этой таблицы у них нет.
43
+ *
44
+ * **Остановка Tab — сама таблица.** Фокус, пришедший на корень, — Tab в
45
+ * таблицу или нажатие мимо ячеек — плагин переводит на ячейку под фокусом
46
+ * сетки. Пришедший с клавиатуры снаружи на виджет внутри ячейки (Shift+Tab
47
+ * из-за таблицы) — тоже: у сетки одна остановка. Tab с ячейки уводит фокус
48
+ * из таблицы — к остановке за ней или, с Shift, перед ней: внутри у ячеек
49
+ * бывают свои поля и кнопки, и браузер повёл бы по ним.
50
+ *
51
+ * **Клавиши** — только с самой ячейки: ←/→ (по вычисленному направлению
52
+ * письма), ↑/↓, Home/End — края строки, Ctrl+Home/End — края сетки,
53
+ * PageUp/PageDown — на `pageStep` строк. Пробел (и Shift+пробел) на строке —
54
+ * её выбор, на ячейке колонки выбора шапки — все показанные строки или
55
+ * снять их; Ctrl/Cmd+A в `multiple` — выбрать все. Enter на заголовке
56
+ * сортируемой колонки сортирует, на остальных ячейках, как и F2, уводит
57
+ * фокус к первой остановке внутри ячейки. Там клавиши принадлежат виджетам,
58
+ * а сетке — только Escape и F2 (обратно на ячейку) и Tab (по кругу остановок
59
+ * ячейки). Ctrl+Shift+←/→ — перестановка колонки, её ведёт свой плагин.
60
+ *
61
+ * **Нажатие** по строке — где угодно, кроме контролов внутри ячейки, —
62
+ * выбор строки, как у строки ListBox. Фокус на ячейку ставит сам браузер
63
+ * (`tabindex="-1"`), а плагин сообщает его сетке (`focusin`).
64
+ */
65
+ var TTableGridPlugin = class extends TBasePlugin {
66
+ _owner = null;
67
+ _root = null;
68
+ _engine = null;
69
+ _elements = null;
70
+ _pageStep = PAGE_STEP;
71
+ /** Фокус придёт от нажатия указателя, а не с клавиатуры. */
72
+ _pointer = false;
73
+ _frame = null;
74
+ install(ctx, options) {
75
+ super.install(ctx, options);
76
+ this._pageStep = options?.pageStep ?? this._pageStep;
77
+ this._owner = ctx.getInstance() ?? null;
78
+ this._elements = ctx.get(TCollectionElements) ?? null;
79
+ const element = ctx.get(TElementPlugin);
80
+ element?.events.on("ready", (node) => this._attach(node));
81
+ element?.events.on("removed", () => this._detach());
82
+ ctx.get(TCollectionBundlesPlugin)?.events.on("engine:bound", (engine) => {
83
+ this._engine = engine;
84
+ this._listenTo(engine.extensions.grid.events, "change:focusedCell", ({ newValue }) => this._follow(newValue));
85
+ });
86
+ }
87
+ destroy() {
88
+ this._detach();
89
+ this._owner = null;
90
+ this._engine = null;
91
+ this._elements = null;
92
+ super.destroy();
93
+ }
94
+ _attach(root) {
95
+ this._detach();
96
+ this._root = root;
97
+ const target = root;
98
+ target.addEventListener("focusin", this._onFocusIn);
99
+ target.addEventListener("keydown", this._onKeyDown);
100
+ target.addEventListener("pointerdown", this._onPointerDown);
101
+ target.addEventListener("click", this._onClick);
102
+ }
103
+ _detach() {
104
+ this._cancelFrame();
105
+ const target = this._root;
106
+ target?.removeEventListener("focusin", this._onFocusIn);
107
+ target?.removeEventListener("keydown", this._onKeyDown);
108
+ target?.removeEventListener("pointerdown", this._onPointerDown);
109
+ target?.removeEventListener("click", this._onClick);
110
+ this._root = null;
111
+ }
112
+ /** Расширение сетки, пока таблица в сетке. */
113
+ get _grid() {
114
+ const grid = this._engine?.extensions.grid;
115
+ return grid?.grid ? grid : null;
116
+ }
117
+ _headRow() {
118
+ const owner = this._owner;
119
+ if (!owner || !this._root) return null;
120
+ return childOf(childOf(this._root, owner.classes.resolve("__head")), owner.classes.resolve("__head-row"));
121
+ }
122
+ _body() {
123
+ const owner = this._owner;
124
+ return owner && this._root ? childOf(this._root, owner.classes.resolve("__body")) : null;
125
+ }
126
+ /** Строка сетки, чей узел — `line`; чужой узел — `undefined`. */
127
+ _rowOf(line) {
128
+ if (line === this._headRow()) return "head";
129
+ if (!this._body() || line.parentElement !== this._body()) return void 0;
130
+ return this._engine?.extensions.batch.shown.find((row) => this._elements?.getElementByItem(row) === line);
131
+ }
132
+ /** Узел строки сетки — пока он в теле своей таблицы. */
133
+ _lineOf(row) {
134
+ if (row === "head") return this._headRow();
135
+ const line = this._elements?.getElementByItem(row) ?? null;
136
+ return line && line.parentElement === this._body() ? line : null;
137
+ }
138
+ /**
139
+ * Ячейка сетки, в которой лежит цель, — её строка, колонка и узел. Ячейки
140
+ * строки идут по колонкам сетки; строка ещё не дорисовала смену колонок —
141
+ * ячейки нет: место в строке не совпало бы с колонкой.
142
+ */
143
+ _cellOf(target) {
144
+ const grid = this._grid;
145
+ const root = this._root;
146
+ if (!grid || !root || !(target instanceof Element) || !root.contains(target)) return void 0;
147
+ const columns = grid.gridColumns;
148
+ for (let node = target; node && node !== root; node = node.parentElement) {
149
+ const line = node.parentElement;
150
+ const row = line ? this._rowOf(line) : void 0;
151
+ if (!line || row === void 0) continue;
152
+ if (line.children.length !== columns.length) return void 0;
153
+ return {
154
+ row,
155
+ column: columns[Array.from(line.children).indexOf(node)],
156
+ element: node
157
+ };
158
+ }
159
+ }
160
+ /** Узел ячейки сетки — пока её строка дорисована по колонкам сетки. */
161
+ _cellElement(cell) {
162
+ const grid = this._grid;
163
+ const line = this._lineOf(cell.row);
164
+ if (!grid || !line) return null;
165
+ const columns = grid.gridColumns;
166
+ if (line.children.length !== columns.length) return null;
167
+ return line.children[columns.indexOf(cell.column)] ?? null;
168
+ }
169
+ /**
170
+ * Фокус сетки перешёл — DOM-фокус за ним, если он в сетке: на корне или на
171
+ * ячейке. Фокус на виджете внутри ячейки плагин не трогает: там с
172
+ * клавишами работает виджет. Вне таблицы фокус сетка помнит до Tab в неё.
173
+ */
174
+ _follow = (cell) => {
175
+ const root = this._root;
176
+ const active = root?.ownerDocument.activeElement;
177
+ if (!root || !cell || !active || !root.contains(active)) return;
178
+ if (active !== root && this._cellOf(active)?.element !== active) return;
179
+ this._focus(cell);
180
+ };
181
+ /**
182
+ * DOM-фокус — на узел ячейки. Узла ещё нет — строку перерисовывают после
183
+ * смены, которая её показала, — ждём кадр.
184
+ */
185
+ _focus(cell) {
186
+ this._cancelFrame();
187
+ if (this._focusNow(cell)) return;
188
+ this._frame = requestAnimationFrame(() => {
189
+ this._frame = null;
190
+ this._focusNow(cell);
191
+ });
192
+ }
193
+ _focusNow(cell) {
194
+ const element = this._cellElement(cell);
195
+ if (!isFocusableElement(element)) return false;
196
+ if (element.ownerDocument.activeElement !== element) element.focus();
197
+ return true;
198
+ }
199
+ _cancelFrame() {
200
+ if (this._frame === null) return;
201
+ cancelAnimationFrame(this._frame);
202
+ this._frame = null;
203
+ }
204
+ _onPointerDown = () => {
205
+ this._pointer = true;
206
+ };
207
+ _onFocusIn = (event) => {
208
+ const pointer = this._pointer;
209
+ const grid = this._grid;
210
+ const root = this._root;
211
+ const target = event.target;
212
+ this._pointer = false;
213
+ if (!grid || !root) return;
214
+ if (target === root) {
215
+ if (grid.focusedCell) this._focus(grid.focusedCell);
216
+ return;
217
+ }
218
+ const hit = this._cellOf(target);
219
+ if (!hit) return;
220
+ const related = event.relatedTarget;
221
+ const fromOutside = !(related instanceof Node && root.contains(related));
222
+ if (target !== hit.element && fromOutside && !pointer) {
223
+ if (grid.focusedCell) this._focus(grid.focusedCell);
224
+ return;
225
+ }
226
+ grid.focusCell(hit.row, hit.column);
227
+ };
228
+ _onKeyDown = (event) => {
229
+ this._pointer = false;
230
+ if (event.defaultPrevented) return;
231
+ const hit = this._cellOf(event.target);
232
+ if (!hit) return;
233
+ if (event.target === hit.element) this._navigate(event, hit);
234
+ else this._interact(event, hit);
235
+ };
236
+ /** Клавиша с самой ячейки — ходьба по сетке, выбор и вход в ячейку. */
237
+ _navigate(event, hit) {
238
+ const action = this._actionOf(event, hit);
239
+ if (!action) return;
240
+ event.preventDefault();
241
+ action();
242
+ }
243
+ /** Что клавиша на ячейке делает; не наша клавиша — `null`. */
244
+ _actionOf(event, hit) {
245
+ const grid = this._grid;
246
+ const root = this._root;
247
+ const engine = this._engine;
248
+ if (!grid || !root || !engine || event.altKey) return null;
249
+ const command = event.ctrlKey || event.metaKey;
250
+ if (event.key === "Tab" && !command) return () => this._leave(event.shiftKey);
251
+ if (command && !event.shiftKey && event.code === "KeyA") {
252
+ if (engine.extensions.selection.mode !== "multiple") return null;
253
+ return () => engine.extensions.table.selectShown();
254
+ }
255
+ if (command) {
256
+ if (event.shiftKey || event.metaKey) return null;
257
+ if (event.key === "Home") return () => grid.moveFocusToEdge("start", "grid");
258
+ if (event.key === "End") return () => grid.moveFocusToEdge("end", "grid");
259
+ return null;
260
+ }
261
+ switch (event.key) {
262
+ case " ": return () => this._choose(hit);
263
+ case "Enter": return () => this._activate(hit);
264
+ case "F2": return () => this._enter(hit.element);
265
+ }
266
+ if (event.shiftKey) return null;
267
+ switch (event.key) {
268
+ case "ArrowUp": return () => grid.moveFocus(-1, 0);
269
+ case "ArrowDown": return () => grid.moveFocus(1, 0);
270
+ case "Home": return () => grid.moveFocusToEdge("start", "row");
271
+ case "End": return () => grid.moveFocusToEdge("end", "row");
272
+ case "PageUp": return () => grid.moveFocus(-this._pageStep, 0);
273
+ case "PageDown": return () => grid.moveFocus(this._pageStep, 0);
274
+ }
275
+ const step = event.key.startsWith("Arrow") ? arrowStep(slideDirection(AXIS, root), event.key) : null;
276
+ return step === null ? null : () => grid.moveFocus(0, step);
277
+ }
278
+ /**
279
+ * Пробел: на строке — её выбор, на ячейке колонки выбора шапки — все
280
+ * показанные строки или снять их, как её чекбокс. Остальным ячейкам шапки
281
+ * пробел ничего не делает, но страницу не листает.
282
+ */
283
+ _choose(hit) {
284
+ const engine = this._engine;
285
+ if (!engine) return;
286
+ if (hit.row !== "head") {
287
+ engine.extensions.grid.chooseRow(hit.row);
288
+ return;
289
+ }
290
+ if (hit.column !== "select" || engine.extensions.selection.mode !== "multiple") return;
291
+ const { table } = engine.extensions;
292
+ if (table.shownSelection === "all") table.deselectShown();
293
+ else table.selectShown();
294
+ }
295
+ /** Enter: заголовок сортируемой колонки сортирует, остальные ячейки — вход в ячейку. */
296
+ _activate(hit) {
297
+ const column = hit.column;
298
+ if (hit.row === "head" && column !== "select" && column.sortable) {
299
+ this._engine?.extensions.sort.toggle(column.field);
300
+ return;
301
+ }
302
+ this._enter(hit.element);
303
+ }
304
+ /** Фокус — к первой остановке внутри ячейки: дальше клавиши принадлежат её виджетам. */
305
+ _enter(cell) {
306
+ focusFirst(tabStops(cell));
307
+ }
308
+ /**
309
+ * Tab с ячейки — из таблицы: к остановке за ней, с Shift — перед ней.
310
+ * Остановки нет — фокус снимается, и следующий Tab начнёт с края
311
+ * документа: внутри таблицы браузер повёл бы по полям ячеек.
312
+ */
313
+ _leave(backward) {
314
+ const root = this._root;
315
+ if (!root) return;
316
+ const stops = backward ? tabStopsBefore(root).reverse() : tabStopsAfter(root, null);
317
+ if (focusFirst(stops)) return;
318
+ const active = root.ownerDocument.activeElement;
319
+ if (isFocusableElement(active)) active.blur();
320
+ }
321
+ /**
322
+ * Клавиша с виджета внутри ячейки. Escape и F2 возвращают фокус на ячейку,
323
+ * Tab ходит по кругу остановок ячейки: из сетки уводит Tab только с самой
324
+ * ячейки. Остальное — виджета.
325
+ */
326
+ _interact(event, hit) {
327
+ if (event.altKey || event.ctrlKey || event.metaKey) return;
328
+ if (event.key === "Escape" || event.key === "F2") {
329
+ if (!isFocusableElement(hit.element)) return;
330
+ event.preventDefault();
331
+ hit.element.focus();
332
+ return;
333
+ }
334
+ if (event.key !== "Tab") return;
335
+ const target = event.target;
336
+ const stops = tabStops(hit.element);
337
+ const at = target instanceof Node ? stops.findIndex((stop) => stop.contains(target)) : -1;
338
+ event.preventDefault();
339
+ if (stops.length === 0) return;
340
+ const next = (at + (event.shiftKey ? -1 : 1) + stops.length) % stops.length;
341
+ focusFirst([stops[next]]);
342
+ }
343
+ /**
344
+ * Нажатие по строке — её выбор, как у строки ListBox. Контролы внутри
345
+ * ячейки — чекбокс строки, кнопки и поля слота — нажимаются сами.
346
+ */
347
+ _onClick = (event) => {
348
+ if (event.defaultPrevented) return;
349
+ const hit = this._cellOf(event.target);
350
+ if (!hit || hit.row === "head" || !(event.target instanceof Element)) return;
351
+ if (closestControl(event.target, hit.element)) return;
352
+ this._engine?.extensions.grid.chooseRow(hit.row);
353
+ };
354
+ };
355
+ //#endregion
356
+ export { TTableGridPlugin };
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './grid.plugin';
@@ -0,0 +1,22 @@
1
+ import type { TTableGridColumn, TTableGridRow } from '@soxa-ui/core';
2
+ import type { TPluginEvents } from '../../../base';
3
+ /**
4
+ * Своих событий у плагина нет: куда встал фокус и что выбрано, сообщает
5
+ * коллекция — расширение `grid` и выбор строк. Второй путь к тем же фактам
6
+ * разошёлся бы с первым.
7
+ */
8
+ export type TTableGridPluginEvents = TPluginEvents;
9
+ export interface ITableGridPluginOptions {
10
+ /**
11
+ * На сколько строк ведут PageUp и PageDown. По умолчанию — 10: APG
12
+ * оставляет число автору, и десять строк — около экрана таблицы обычной
13
+ * высоты.
14
+ */
15
+ pageStep?: number;
16
+ }
17
+ /** Ячейка сетки в документе — её строка и колонка в сетке и узел. */
18
+ export type TTableGridHit = {
19
+ row: TTableGridRow;
20
+ column: TTableGridColumn;
21
+ element: Element;
22
+ };
@@ -0,0 +1,8 @@
1
+ export * from './row-ids';
2
+ export * from './column-ids';
3
+ export * from './column-resize';
4
+ export * from './names';
5
+ export * from './column-names';
6
+ export * from './column-reorder';
7
+ export * from './grid';
8
+ export * from './layout';
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './layout.plugin';
@@ -0,0 +1,52 @@
1
+ import type { ITable } from '@soxa-ui/core';
2
+ import { TBasePlugin } from '../../../base';
3
+ import type { IPluginContext } from '../../../base';
4
+ import type { TTableLayoutPluginEvents } from './types';
5
+ /**
6
+ * TTableLayoutPlugin — место под колонки таблицы: ширина её окна без колонки
7
+ * выбора.
8
+ *
9
+ * Ширины колонок раскладывает ядро — расширение колонок коллекции строк, по
10
+ * месту и `columnFit` таблицы: фиксированная раскладка браузера не читает
11
+ * `min-width` и `max-width` ячеек и не умеет делить место между колонками с
12
+ * границами. Место — то, что знает только живой документ, и его мерит плагин
13
+ * (`notifySpace`). Движок он узнаёт от реестра bundles (`engine:bound`).
14
+ *
15
+ * **Окно** — родитель корня с классом `__viewport` владельца: таблицу в нём
16
+ * рисует разметка, и прокрутку окну включает тема по признаку «колонки шире
17
+ * места». Окна нет — места нет, и ширины гибких колонок решает тема.
18
+ *
19
+ * **Замер — раз в кадр**, по размеру окна и корня: корень меняется от колонки
20
+ * выбора и размера таблицы. Место — внутренняя ширина окна минус ячейка
21
+ * колонки выбора в шапке, вниз до целого. Ширину окна наблюдатель отдаёт сам,
22
+ * а пишет плагин только в кадре: высота окна зависит от таблицы, и запись
23
+ * прямо в колбэке наблюдателя свернулась бы в его петлю.
24
+ *
25
+ * Корень сняли или плагин уничтожен — место неизвестно: движок, пришедший
26
+ * снаружи, переживает таблицу, и прежнее место ему больше не верно.
27
+ */
28
+ export declare class TTableLayoutPlugin extends TBasePlugin<ITable, TTableLayoutPluginEvents> {
29
+ private _owner;
30
+ private _engine;
31
+ private _root;
32
+ private _viewport;
33
+ private _observer;
34
+ private _frame;
35
+ /** Внутренняя ширина окна, px, — из последнего уведомления наблюдателя */
36
+ private _inner;
37
+ install(ctx: IPluginContext): void;
38
+ destroy(): void;
39
+ private _attach;
40
+ private _detach;
41
+ private _unobserve;
42
+ /** Окно — родитель корня с классом `__viewport` владельца. */
43
+ private _viewportOf;
44
+ /** Ячейка колонки выбора в шапке своей таблицы — прямыми детьми. */
45
+ private _selectOf;
46
+ /** Ширину окна наблюдатель отдаёт сам; замер — в кадре. */
47
+ private readonly _onResize;
48
+ /** Замер — раз в кадр: подряд идущие поводы схлопываются в один. */
49
+ private _schedule;
50
+ private _cancel;
51
+ private _measure;
52
+ }
@@ -0,0 +1,122 @@
1
+ import { TBasePlugin } from "../../../base/base.class.js";
2
+ import { TCollectionBundlesPlugin } from "../../collection/bundles.plugin.js";
3
+ import { TElementPlugin } from "../../element/element.plugin.js";
4
+ //#region src/custom/table/layout/layout.plugin.ts
5
+ /** Ребёнок узла с классом — только прямые дети: во вложенной таблице свои шапки. */
6
+ function childOf(node, className) {
7
+ return Array.from(node.children).find((child) => child.classList.contains(className)) ?? null;
8
+ }
9
+ /**
10
+ * TTableLayoutPlugin — место под колонки таблицы: ширина её окна без колонки
11
+ * выбора.
12
+ *
13
+ * Ширины колонок раскладывает ядро — расширение колонок коллекции строк, по
14
+ * месту и `columnFit` таблицы: фиксированная раскладка браузера не читает
15
+ * `min-width` и `max-width` ячеек и не умеет делить место между колонками с
16
+ * границами. Место — то, что знает только живой документ, и его мерит плагин
17
+ * (`notifySpace`). Движок он узнаёт от реестра bundles (`engine:bound`).
18
+ *
19
+ * **Окно** — родитель корня с классом `__viewport` владельца: таблицу в нём
20
+ * рисует разметка, и прокрутку окну включает тема по признаку «колонки шире
21
+ * места». Окна нет — места нет, и ширины гибких колонок решает тема.
22
+ *
23
+ * **Замер — раз в кадр**, по размеру окна и корня: корень меняется от колонки
24
+ * выбора и размера таблицы. Место — внутренняя ширина окна минус ячейка
25
+ * колонки выбора в шапке, вниз до целого. Ширину окна наблюдатель отдаёт сам,
26
+ * а пишет плагин только в кадре: высота окна зависит от таблицы, и запись
27
+ * прямо в колбэке наблюдателя свернулась бы в его петлю.
28
+ *
29
+ * Корень сняли или плагин уничтожен — место неизвестно: движок, пришедший
30
+ * снаружи, переживает таблицу, и прежнее место ему больше не верно.
31
+ */
32
+ var TTableLayoutPlugin = class extends TBasePlugin {
33
+ _owner = null;
34
+ _engine = null;
35
+ _root = null;
36
+ _viewport = null;
37
+ _observer = null;
38
+ _frame = null;
39
+ /** Внутренняя ширина окна, px, — из последнего уведомления наблюдателя */
40
+ _inner = 0;
41
+ install(ctx) {
42
+ super.install(ctx);
43
+ this._owner = ctx.getInstance() ?? null;
44
+ const element = ctx.get(TElementPlugin);
45
+ element?.events.on("ready", (node) => this._attach(node));
46
+ element?.events.on("removed", () => this._detach());
47
+ ctx.get(TCollectionBundlesPlugin)?.events.on("engine:bound", (engine) => {
48
+ this._engine = engine;
49
+ this._schedule();
50
+ });
51
+ }
52
+ destroy() {
53
+ this._detach();
54
+ this._observer = null;
55
+ this._owner = null;
56
+ this._engine = null;
57
+ super.destroy();
58
+ }
59
+ _attach(root) {
60
+ this._unobserve();
61
+ this._root = root;
62
+ this._viewport = this._viewportOf(root);
63
+ if (!this._viewport) return;
64
+ const observer = this._observer ??= new ResizeObserver(this._onResize);
65
+ observer.observe(this._viewport);
66
+ observer.observe(root);
67
+ }
68
+ _detach() {
69
+ this._unobserve();
70
+ this._root = null;
71
+ this._viewport = null;
72
+ this._engine?.extensions.columns.notifySpace(0);
73
+ }
74
+ _unobserve() {
75
+ this._observer?.disconnect();
76
+ this._cancel();
77
+ this._inner = 0;
78
+ }
79
+ /** Окно — родитель корня с классом `__viewport` владельца. */
80
+ _viewportOf(root) {
81
+ const parent = root.parentElement;
82
+ const owner = this._owner;
83
+ if (!parent || !owner) return null;
84
+ return parent.classList.contains(owner.classes.resolve("__viewport")) ? parent : null;
85
+ }
86
+ /** Ячейка колонки выбора в шапке своей таблицы — прямыми детьми. */
87
+ _selectOf(root) {
88
+ const owner = this._owner;
89
+ if (!owner) return null;
90
+ const head = childOf(root, owner.classes.resolve("__head"));
91
+ const row = head && childOf(head, owner.classes.resolve("__head-row"));
92
+ return row && childOf(row, owner.classes.resolve("__select"));
93
+ }
94
+ /** Ширину окна наблюдатель отдаёт сам; замер — в кадре. */
95
+ _onResize = (entries) => {
96
+ for (const entry of entries) if (entry.target === this._viewport) this._inner = entry.contentRect.width;
97
+ this._schedule();
98
+ };
99
+ /** Замер — раз в кадр: подряд идущие поводы схлопываются в один. */
100
+ _schedule() {
101
+ if (this._frame !== null || !this._viewport) return;
102
+ this._frame = requestAnimationFrame(() => {
103
+ this._frame = null;
104
+ this._measure();
105
+ });
106
+ }
107
+ _cancel() {
108
+ if (this._frame === null) return;
109
+ cancelAnimationFrame(this._frame);
110
+ this._frame = null;
111
+ }
112
+ _measure() {
113
+ const root = this._root;
114
+ const columns = this._engine?.extensions.columns;
115
+ if (!root || !columns) return;
116
+ const select = this._selectOf(root);
117
+ const taken = select ? select.getBoundingClientRect().width : 0;
118
+ columns.notifySpace(Math.max(0, Math.floor(this._inner - taken)));
119
+ }
120
+ };
121
+ //#endregion
122
+ export { TTableLayoutPlugin };
@@ -0,0 +1,7 @@
1
+ import type { TPluginEvents } from '../../../base';
2
+ /**
3
+ * Своих событий у плагина нет: место он отдаёт расширению колонок, а что из
4
+ * него вышло — ширины колонок и `data-overflow` таблицы — сообщают они.
5
+ * Второй путь к тем же фактам через события плагина разошёлся бы с первым.
6
+ */
7
+ export type TTableLayoutPluginEvents = TPluginEvents;
@@ -0,0 +1,2 @@
1
+ export { TTableNamesPlugin } from './names.plugin';
2
+ export type { TTableNamesPluginEvents } from './types';
@@ -0,0 +1,18 @@
1
+ import type { TEventSink } from '@soxa-ui/core';
2
+ import { TNamesPlugin } from '../../../locale/names.plugin';
3
+ import type { TTranslations } from '../../../locale/types';
4
+ import type { TTableNamesPluginEvents } from './types';
5
+ /**
6
+ * TTableNamesPlugin — имя чекбокса «выбрать все» таблицы от локали.
7
+ *
8
+ * Выходом (`selectAll`), а не записью в набор: у ячейки шапки колонки выбора
9
+ * своего текста нет, а чекбокс — свой компонент, и имя ему разметка отдаёт
10
+ * пропом `aria_label`, который пишет его собственный `TAriaPlugin`.
11
+ */
12
+ export declare class TTableNamesPlugin extends TNamesPlugin<object, TTableNamesPluginEvents> {
13
+ private _selectAll;
14
+ /** Имя чекбокса «выбрать все» в шапке колонки выбора. */
15
+ get selectAll(): string;
16
+ protected get _sink(): TEventSink<TTableNamesPluginEvents>;
17
+ protected _name(_owner: object, translations: TTranslations): void;
18
+ }
@@ -0,0 +1,31 @@
1
+ import { TNamesPlugin } from "../../../locale/names.plugin.js";
2
+ //#region src/custom/table/names/names.plugin.ts
3
+ /**
4
+ * TTableNamesPlugin — имя чекбокса «выбрать все» таблицы от локали.
5
+ *
6
+ * Выходом (`selectAll`), а не записью в набор: у ячейки шапки колонки выбора
7
+ * своего текста нет, а чекбокс — свой компонент, и имя ему разметка отдаёт
8
+ * пропом `aria_label`, который пишет его собственный `TAriaPlugin`.
9
+ */
10
+ var TTableNamesPlugin = class extends TNamesPlugin {
11
+ _selectAll = "";
12
+ /** Имя чекбокса «выбрать все» в шапке колонки выбора. */
13
+ get selectAll() {
14
+ return this._selectAll;
15
+ }
16
+ get _sink() {
17
+ return this.events;
18
+ }
19
+ _name(_owner, translations) {
20
+ const oldSelectAll = this.selectAll;
21
+ const selectAll = translations.table.selectAll;
22
+ if (this._selectAll === selectAll) return;
23
+ this._selectAll = selectAll;
24
+ this._sink.emit("change:selectAll", {
25
+ newValue: selectAll,
26
+ oldValue: oldSelectAll
27
+ });
28
+ }
29
+ };
30
+ //#endregion
31
+ export { TTableNamesPlugin };
@@ -0,0 +1,6 @@
1
+ import type { TValuePayload } from '@soxa-ui/core';
2
+ import type { TPluginEvents } from '../../../base';
3
+ export type TTableNamesPluginEvents = TPluginEvents & {
4
+ /** change:selectAll — имя чекбокса «выбрать все» сменилось вместе с локалью */
5
+ 'change:selectAll': (payload: TValuePayload<string>) => void;
6
+ };
@@ -0,0 +1 @@
1
+ export * from './row-ids.plugin';