@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,2 @@
1
+ export { TAnchorPlugin, ANCHOR_PLACEMENT_ATTRIBUTE } from './anchor.plugin';
2
+ export type { IAnchorPluginOptions, TAnchorPluginEvents, TFramePlacement, IAnchorPluginProps, } from './types';
@@ -0,0 +1,83 @@
1
+ import type { TValuePayload } from '@soxa-ui/core';
2
+ import type { TPluginEvents } from '../../../base';
3
+ import type { TPoint } from '../../../utils';
4
+ /**
5
+ * Сторона и выравнивание панели относительно якоря — одной схемой: сначала
6
+ * сторона, затем выравнивание.
7
+ *
8
+ * Сторон четыре, на двух осях. `top` и `bottom` — стороны блока: панель над
9
+ * якорем или под ним, а выравнивание идёт вдоль строки. `start` и `end` —
10
+ * стороны строки: панель у начала или у конца строки якоря, а выравнивание
11
+ * идёт вдоль якоря по вертикали. Выравнивания три: `-start` — по началу якоря
12
+ * (у боковой стороны — верхние края вровень), `-end` — по концу (нижние края
13
+ * вровень), значение без суффикса — по центру (как у Floating UI).
14
+ *
15
+ * Логическое здесь всё, что лежит на оси строки: сторона `start`/`end` и
16
+ * выравнивание `-start`/`-end` у верха и низа — в RTL они меняются местами,
17
+ * как `placement` у Drawer. Ось блока от направления не зависит: верх и низ,
18
+ * выравнивание боковой панели и центр в RTL те же.
19
+ *
20
+ * Набор намеренно маленький: это выбор потребителя, а не подбор места.
21
+ * Автоматический переворот при нехватке места (flip) и сдвиг у края экрана
22
+ * (shift) плагин делает сам поверх этого выбора — см. `TAnchorPlugin`.
23
+ */
24
+ export type TFramePlacement = 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end' | 'end-start' | 'end' | 'end-end' | 'start-start' | 'start' | 'start-end';
25
+ /**
26
+ * Прямоугольник места панели в координатах окна: якоря — его
27
+ * `getBoundingClientRect()`, точки — нулевого размера. Расчёту хватает краёв
28
+ * и ширины.
29
+ */
30
+ export type TAnchorRect = Pick<DOMRectReadOnly, 'left' | 'top' | 'right' | 'bottom' | 'width'>;
31
+ export interface IAnchorPluginOptions {
32
+ /** Сторона и выравнивание относительно якоря. По умолчанию `bottom-start`. */
33
+ placement?: TFramePlacement;
34
+ /** Тянуть ширину панели по ширине якоря. */
35
+ matchWidth?: boolean;
36
+ /**
37
+ * Переворачивать ли панель на противоположную сторону, когда на выбранной
38
+ * она не влезает в окно — сверху и снизу по высоте, сбоку по ширине. По
39
+ * умолчанию `true`. Сторону выбирает показ, а открытая панель её держит:
40
+ * стоит, пока на ней влезает, и переходит на противоположную, только если
41
+ * влезает там, — прокрутка страницы не гоняет её туда и обратно.
42
+ * Выключенный flip оставляет сторону потребителя как есть; shift от него не
43
+ * зависит.
44
+ */
45
+ flip?: boolean;
46
+ /**
47
+ * Отступ панели от якоря, px: сверху и снизу — по вертикали, сбоку — по
48
+ * горизонтали. По умолчанию `0`.
49
+ */
50
+ offset?: number;
51
+ }
52
+ export type TAnchorPluginEvents = TPluginEvents & {
53
+ /** change:anchor */
54
+ 'change:anchor': (payload: TValuePayload<Element | null>) => void;
55
+ /** change:point */
56
+ 'change:point': (payload: TValuePayload<TPoint | null>) => void;
57
+ /** change:placement */
58
+ 'change:placement': (payload: TValuePayload<TFramePlacement>) => void;
59
+ /** change:matchWidth */
60
+ 'change:matchWidth': (payload: TValuePayload<boolean>) => void;
61
+ /** change:flip */
62
+ 'change:flip': (payload: TValuePayload<boolean>) => void;
63
+ /** change:offset */
64
+ 'change:offset': (payload: TValuePayload<number>) => void;
65
+ };
66
+ /**
67
+ * Пропсы плагина такими, какими их объявляет contribution — без неймспейса.
68
+ *
69
+ * Неймспейс (`anchor_anchor`) навешивает `DescriptorAllProps` в `@soxa-ui/setup`
70
+ * по `namespace` из `definePlugin`; здесь только собственные имена пропсов.
71
+ */
72
+ export interface IAnchorPluginProps {
73
+ anchor?: Element | null;
74
+ /**
75
+ * Точка в координатах окна, у которой встаёт панель, — главнее якоря,
76
+ * пока задана: контекстное меню встаёт у места вызова, а не у области.
77
+ */
78
+ point?: TPoint | null;
79
+ placement?: TFramePlacement;
80
+ matchWidth?: boolean;
81
+ flip?: boolean;
82
+ offset?: number;
83
+ }
@@ -0,0 +1,2 @@
1
+ export * from './layout';
2
+ export * from './anchor';
@@ -0,0 +1,2 @@
1
+ export { TFrameLayoutPlugin } from './layout.plugin';
2
+ export type { TFrameLayoutPluginEvents } from './types';
@@ -0,0 +1,24 @@
1
+ import { TBasePlugin } from '../../../base';
2
+ import type { IPluginContext } from '../../../base';
3
+ import type { TFrameLayoutPluginEvents } from './types';
4
+ /**
5
+ * Converts Frame properties into the styles applied by the template.
6
+ * Subscribes to change:x/y/width/height/zIndex/strategy and contained.
7
+ * A contained panel uses absolute positioning without inline coordinates:
8
+ * the theme places it using data-contained, without left/top overriding it.
9
+ * Anchoring belongs to TAnchorPlugin, which writes x/y/width; this plugin
10
+ * only renders the values already stored in Frame.
11
+ *
12
+ * @example
13
+ * const layout = bundle.get(TFrameLayoutPlugin)
14
+ * // layout?.styles: { position: 'fixed', left: '100px', top: '200px', 'z-index': 1001 }
15
+ */
16
+ export declare class TFrameLayoutPlugin extends TBasePlugin<any, TFrameLayoutPluginEvents> {
17
+ private _styles;
18
+ private _frame;
19
+ install(ctx: IPluginContext): void;
20
+ get styles(): Record<string, string | number>;
21
+ destroy(): void;
22
+ private _bindFrame;
23
+ private _update;
24
+ }
@@ -0,0 +1,65 @@
1
+ import { TBasePlugin } from "../../../base/base.class.js";
2
+ import { toCssValue } from "../../../utils/toCssValue.js";
3
+ //#region src/custom/frame/layout/layout.plugin.ts
4
+ /**
5
+ * Converts Frame properties into the styles applied by the template.
6
+ * Subscribes to change:x/y/width/height/zIndex/strategy and contained.
7
+ * A contained panel uses absolute positioning without inline coordinates:
8
+ * the theme places it using data-contained, without left/top overriding it.
9
+ * Anchoring belongs to TAnchorPlugin, which writes x/y/width; this plugin
10
+ * only renders the values already stored in Frame.
11
+ *
12
+ * @example
13
+ * const layout = bundle.get(TFrameLayoutPlugin)
14
+ * // layout?.styles: { position: 'fixed', left: '100px', top: '200px', 'z-index': 1001 }
15
+ */
16
+ var TFrameLayoutPlugin = class extends TBasePlugin {
17
+ _styles = {};
18
+ _frame = null;
19
+ install(ctx) {
20
+ super.install(ctx);
21
+ const frame = ctx.getInstance();
22
+ if (frame) {
23
+ this._frame = frame;
24
+ this._bindFrame(frame);
25
+ }
26
+ }
27
+ get styles() {
28
+ return this._styles;
29
+ }
30
+ destroy() {
31
+ this._frame = null;
32
+ super.destroy();
33
+ }
34
+ _bindFrame(frame) {
35
+ const update = () => this._update();
36
+ this._listenTo(frame.events, "change:x", update);
37
+ this._listenTo(frame.events, "change:y", update);
38
+ this._listenTo(frame.events, "change:width", update);
39
+ this._listenTo(frame.events, "change:height", update);
40
+ this._listenTo(frame.events, "change:zIndex", update);
41
+ this._listenTo(frame.events, "change:strategy", update);
42
+ this._listenTo(frame.events, "change:contained", update);
43
+ this._update();
44
+ }
45
+ _update() {
46
+ const oldStyles = this.styles;
47
+ if (!this._frame) return;
48
+ const frame = this._frame;
49
+ const styles = frame.contained ? { position: "absolute" } : {
50
+ position: frame.strategy,
51
+ left: toCssValue(frame.x),
52
+ top: toCssValue(frame.y)
53
+ };
54
+ if (frame.width !== void 0) styles["width"] = toCssValue(frame.width);
55
+ if (frame.height !== void 0) styles["height"] = toCssValue(frame.height);
56
+ styles["z-index"] = frame.zIndex;
57
+ this._styles = styles;
58
+ this.events.emit("change:styles", {
59
+ newValue: this._styles,
60
+ oldValue: oldStyles
61
+ });
62
+ }
63
+ };
64
+ //#endregion
65
+ export { TFrameLayoutPlugin };
@@ -0,0 +1,5 @@
1
+ import type { TValuePayload } from '@soxa-ui/core';
2
+ import type { TPluginEvents } from '../../../base';
3
+ export type TFrameLayoutPluginEvents = TPluginEvents & {
4
+ 'change:styles': (payload: TValuePayload<Record<string, string | number>>) => void;
5
+ };
@@ -0,0 +1,2 @@
1
+ export type { TIconLayoutPluginEvents } from './types';
2
+ export { TIconLayoutPlugin } from './layout.plugin';
@@ -0,0 +1,21 @@
1
+ import { TBasePlugin } from '../../base';
2
+ import type { IPluginContext } from '../../base';
3
+ import type { TIconLayoutPluginEvents } from './types';
4
+ /**
5
+ * Плагин для управления стилями иконки.
6
+ */
7
+ export declare class TIconLayoutPlugin extends TBasePlugin<any, TIconLayoutPluginEvents> {
8
+ private _styles;
9
+ install(ctx: IPluginContext): void;
10
+ get styles(): Record<string, string | number>;
11
+ /**
12
+ * Размер → значение инлайнового стиля. Незаданный размер даёт пустую
13
+ * строку: она снимает стиль, и размер иконки снова задаёт `size`.
14
+ */
15
+ private _toCss;
16
+ /**
17
+ * Заменяет объект стилей целиком, а не мутирует на месте: геттер отдаёт
18
+ * ссылку наружу, и без смены идентичности UI не увидит изменения.
19
+ */
20
+ private _patch;
21
+ }
@@ -0,0 +1,51 @@
1
+ import { TBasePlugin } from "../../base/base.class.js";
2
+ import { toCssValue } from "../../utils/toCssValue.js";
3
+ //#region src/custom/icon/layout.plugin.ts
4
+ /**
5
+ * Плагин для управления стилями иконки.
6
+ */
7
+ var TIconLayoutPlugin = class extends TBasePlugin {
8
+ _styles = {};
9
+ install(ctx) {
10
+ super.install(ctx);
11
+ const icon = ctx.getInstance();
12
+ if (!icon) return;
13
+ this._styles = {
14
+ width: this._toCss(icon.width),
15
+ height: this._toCss(icon.height)
16
+ };
17
+ this._listenTo(icon.events, "change:width", ({ newValue: value }) => {
18
+ this._patch("width", this._toCss(value));
19
+ });
20
+ this._listenTo(icon.events, "change:height", ({ newValue: value }) => {
21
+ this._patch("height", this._toCss(value));
22
+ });
23
+ }
24
+ get styles() {
25
+ return this._styles;
26
+ }
27
+ /**
28
+ * Размер → значение инлайнового стиля. Незаданный размер даёт пустую
29
+ * строку: она снимает стиль, и размер иконки снова задаёт `size`.
30
+ */
31
+ _toCss(value) {
32
+ return value != null ? toCssValue(value) : "";
33
+ }
34
+ /**
35
+ * Заменяет объект стилей целиком, а не мутирует на месте: геттер отдаёт
36
+ * ссылку наружу, и без смены идентичности UI не увидит изменения.
37
+ */
38
+ _patch(key, value) {
39
+ const oldStyles = this.styles;
40
+ this._styles = {
41
+ ...this._styles,
42
+ [key]: value
43
+ };
44
+ this.events.emit("change:styles", {
45
+ newValue: this._styles,
46
+ oldValue: oldStyles
47
+ });
48
+ }
49
+ };
50
+ //#endregion
51
+ export { TIconLayoutPlugin };
@@ -0,0 +1,5 @@
1
+ import type { TValuePayload } from '@soxa-ui/core';
2
+ import type { TPluginEvents } from '../../base';
3
+ export type TIconLayoutPluginEvents = TPluginEvents & {
4
+ 'change:styles': (payload: TValuePayload<Record<string, string | number>>) => void;
5
+ };
@@ -0,0 +1,32 @@
1
+ import { TBasePlugin } from '../../base';
2
+ import type { TIdPluginEvents } from './types';
3
+ /**
4
+ * TIdPlugin — `id`, который приложение задаёт узлу компонента, на который
5
+ * ссылаются по `id`.
6
+ *
7
+ * Такой узел — поле формы (на него ведут `<label for>` и `aria-labelledby`
8
+ * разметки приложения и `for` подписи `Field`) и строка элемента, на которую
9
+ * ссылается сама библиотека: элемент списка и опция (`aria-activedescendant`),
10
+ * таб, заголовок секции, строка пункта меню со своей панелью (`aria-controls`
11
+ * и `aria-labelledby` панели). У остальных компонентов `id` приложения — просто
12
+ * атрибут корня, и знать его библиотеке незачем.
13
+ *
14
+ * `id` — понятие документа, поэтому его держит плагин, а не ядро (a11y.md,
15
+ * «`id` в разметке — от монтирования, в плагинах»), и держит в одном месте на
16
+ * все такие компоненты. Сам плагин в разметку ничего не пишет: на узел `id`
17
+ * кладёт тот, кто этот узел рисует, — поле шаблон из состояния, строку
18
+ * элемента плагин связок, который без `id` приложения берёт `id` от
19
+ * монтирования (`ctx.createId`) и на `change:id` переписывает обе стороны
20
+ * ссылки.
21
+ *
22
+ * Не задан — `undefined`.
23
+ */
24
+ export declare class TIdPlugin extends TBasePlugin<any, TIdPluginEvents> {
25
+ /** Умолчания опций, объявленных пропами, — см. `TDismissPlugin.defaultValues`. */
26
+ static defaultValues: {
27
+ id: string | undefined;
28
+ };
29
+ private _id;
30
+ get id(): string | undefined;
31
+ set id(value: string | undefined);
32
+ }
@@ -0,0 +1,42 @@
1
+ import { TBasePlugin } from "../../base/base.class.js";
2
+ //#region src/custom/id/id.plugin.ts
3
+ /**
4
+ * TIdPlugin — `id`, который приложение задаёт узлу компонента, на который
5
+ * ссылаются по `id`.
6
+ *
7
+ * Такой узел — поле формы (на него ведут `<label for>` и `aria-labelledby`
8
+ * разметки приложения и `for` подписи `Field`) и строка элемента, на которую
9
+ * ссылается сама библиотека: элемент списка и опция (`aria-activedescendant`),
10
+ * таб, заголовок секции, строка пункта меню со своей панелью (`aria-controls`
11
+ * и `aria-labelledby` панели). У остальных компонентов `id` приложения — просто
12
+ * атрибут корня, и знать его библиотеке незачем.
13
+ *
14
+ * `id` — понятие документа, поэтому его держит плагин, а не ядро (a11y.md,
15
+ * «`id` в разметке — от монтирования, в плагинах»), и держит в одном месте на
16
+ * все такие компоненты. Сам плагин в разметку ничего не пишет: на узел `id`
17
+ * кладёт тот, кто этот узел рисует, — поле шаблон из состояния, строку
18
+ * элемента плагин связок, который без `id` приложения берёт `id` от
19
+ * монтирования (`ctx.createId`) и на `change:id` переписывает обе стороны
20
+ * ссылки.
21
+ *
22
+ * Не задан — `undefined`.
23
+ */
24
+ var TIdPlugin = class TIdPlugin extends TBasePlugin {
25
+ /** Умолчания опций, объявленных пропами, — см. `TDismissPlugin.defaultValues`. */
26
+ static defaultValues = { id: void 0 };
27
+ _id = TIdPlugin.defaultValues.id;
28
+ get id() {
29
+ return this._id;
30
+ }
31
+ set id(value) {
32
+ const oldId = this.id;
33
+ if (this._id === value) return;
34
+ this._id = value;
35
+ this.events.emit("change:id", {
36
+ newValue: value,
37
+ oldValue: oldId
38
+ });
39
+ }
40
+ };
41
+ //#endregion
42
+ export { TIdPlugin };
@@ -0,0 +1,2 @@
1
+ export type { TIdPluginEvents } from './types';
2
+ export { TIdPlugin } from './id.plugin';
@@ -0,0 +1,6 @@
1
+ import type { TValuePayload } from '@soxa-ui/core';
2
+ import type { TPluginEvents } from '../../base';
3
+ export type TIdPluginEvents = TPluginEvents & {
4
+ /** change:id — `id` узла сменился; `undefined` — снят */
5
+ 'change:id': (payload: TValuePayload<string | undefined>) => void;
6
+ };
@@ -0,0 +1,42 @@
1
+ export * from './accordion';
2
+ export * from './action';
3
+ export * from './calendar';
4
+ export * from './clearable';
5
+ export * from './collection';
6
+ export * from './component-view';
7
+ export * from './date-input';
8
+ export * from './date-picker';
9
+ export * from './dialog';
10
+ export * from './dismiss';
11
+ export * from './drag-and-drop';
12
+ export * from './drawer';
13
+ export * from './element';
14
+ export * from './field';
15
+ export * from './frame';
16
+ export * from './icon';
17
+ export * from './id';
18
+ export * from './input';
19
+ export * from './input-bool';
20
+ export * from './input-control';
21
+ export * from './item-group';
22
+ export * from './label';
23
+ export * from './list';
24
+ export * from './menu';
25
+ export * from './number-input';
26
+ export * from './overlay';
27
+ export * from './pagination';
28
+ export * from './popover';
29
+ export * from './radio-group';
30
+ export * from './rating';
31
+ export * from './ready';
32
+ export * from './scroller';
33
+ export * from './select';
34
+ export * from './skeleton';
35
+ export * from './slide';
36
+ export * from './table';
37
+ export * from './tabs';
38
+ export * from './tags';
39
+ export * from './textarea';
40
+ export * from './toasts';
41
+ export * from './tooltip';
42
+ export * from './virtual';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Поле контрола — первое поле формы в его корне. `null` — поля в корне нет.
3
+ *
4
+ * Узел фокуса компонентов, у которых корень — коробка вокруг поля: Input,
5
+ * NumberInput, Textarea, CheckBox, Switch, Rating, Slider, Select и радио
6
+ * (`focusTarget` плагина действия). По тегу поля, а не первая остановка Tab:
7
+ * кнопка в слоте `leading` и крестики тегов Select стоят перед полем своими
8
+ * остановками, и фокус ушёл бы на них.
9
+ *
10
+ * Тем же правилом поле находят плагины полей: ввод текста (`TInputPlugin`),
11
+ * поле только для чтения (`TInputControlPlugin`), чекбокс и переключатель
12
+ * (`TInputBoolPlugin`), клавиатура, ввод и `Backspace` Select, отметка радио
13
+ * группы и авторост Textarea, — и правка разметки поля не расходится по ним.
14
+ * Нужный тип узла каждый сужает сам (`instanceof`).
15
+ */
16
+ export declare function fieldOf(root: Element): Element | null;
@@ -0,0 +1,27 @@
1
+ //#region src/custom/input/field.ts
2
+ /**
3
+ * Поле формы, которое держит фокус контрола: `input`, кроме скрытого, или
4
+ * `textarea`. Скрытое поле — значение для формы (число NumberInput), фокуса у
5
+ * него нет.
6
+ */
7
+ var FIELD_SELECTOR = "input:not([type=\"hidden\"]), textarea";
8
+ /**
9
+ * Поле контрола — первое поле формы в его корне. `null` — поля в корне нет.
10
+ *
11
+ * Узел фокуса компонентов, у которых корень — коробка вокруг поля: Input,
12
+ * NumberInput, Textarea, CheckBox, Switch, Rating, Slider, Select и радио
13
+ * (`focusTarget` плагина действия). По тегу поля, а не первая остановка Tab:
14
+ * кнопка в слоте `leading` и крестики тегов Select стоят перед полем своими
15
+ * остановками, и фокус ушёл бы на них.
16
+ *
17
+ * Тем же правилом поле находят плагины полей: ввод текста (`TInputPlugin`),
18
+ * поле только для чтения (`TInputControlPlugin`), чекбокс и переключатель
19
+ * (`TInputBoolPlugin`), клавиатура, ввод и `Backspace` Select, отметка радио
20
+ * группы и авторост Textarea, — и правка разметки поля не расходится по ним.
21
+ * Нужный тип узла каждый сужает сам (`instanceof`).
22
+ */
23
+ function fieldOf(root) {
24
+ return root.querySelector(FIELD_SELECTOR);
25
+ }
26
+ //#endregion
27
+ export { fieldOf };
@@ -0,0 +1,3 @@
1
+ export type { TInputPluginEvents } from './types';
2
+ export { TInputPlugin } from './input.plugin';
3
+ export { fieldOf } from './field';
@@ -0,0 +1,12 @@
1
+ import { TBasePlugin } from '../../base';
2
+ import type { IPluginContext } from '../../base';
3
+ import type { TInputPluginEvents } from './types';
4
+ export declare class TInputPlugin extends TBasePlugin<any, TInputPluginEvents> {
5
+ private _input;
6
+ private _instance;
7
+ private _onInput;
8
+ install(ctx: IPluginContext): void;
9
+ destroy(): void;
10
+ private _handleInput;
11
+ private _removeInputListener;
12
+ }
@@ -0,0 +1,46 @@
1
+ import { TBasePlugin } from "../../base/base.class.js";
2
+ import { TElementPlugin } from "../element/element.plugin.js";
3
+ import { fieldOf } from "./field.js";
4
+ //#region src/custom/input/input.plugin.ts
5
+ var TInputPlugin = class extends TBasePlugin {
6
+ _input = null;
7
+ _instance = null;
8
+ _onInput = this._handleInput.bind(this);
9
+ install(ctx) {
10
+ super.install(ctx);
11
+ const elementPlugin = ctx.get(TElementPlugin);
12
+ elementPlugin?.events.on("ready", () => {
13
+ const el = elementPlugin.element;
14
+ if (!el) return;
15
+ const input = fieldOf(el);
16
+ if (!(input instanceof HTMLInputElement || input instanceof HTMLTextAreaElement)) return;
17
+ this._input = input;
18
+ input.addEventListener("input", this._onInput);
19
+ });
20
+ elementPlugin?.events.on("removed", () => {
21
+ this._removeInputListener();
22
+ this._input = null;
23
+ });
24
+ this._instance = ctx.getInstance();
25
+ }
26
+ destroy() {
27
+ this._removeInputListener();
28
+ this._input = null;
29
+ this._instance = null;
30
+ super.destroy();
31
+ }
32
+ _handleInput(event) {
33
+ if (!this._instance) return;
34
+ if (this._instance.readonly || this._instance.disabled) {
35
+ event.preventDefault();
36
+ return;
37
+ }
38
+ if (!this._input) return;
39
+ this._instance.value = this._input.value;
40
+ }
41
+ _removeInputListener() {
42
+ if (this._input) this._input.removeEventListener("input", this._onInput);
43
+ }
44
+ };
45
+ //#endregion
46
+ export { TInputPlugin };
@@ -0,0 +1,2 @@
1
+ import type { TPluginEvents } from '../../base';
2
+ export type TInputPluginEvents = TPluginEvents;
@@ -0,0 +1,2 @@
1
+ export type { TInputBoolPluginEvents } from './types';
2
+ export { TInputBoolPlugin } from './input-bool.plugin';
@@ -0,0 +1,30 @@
1
+ import { TBasePlugin } from '../../base';
2
+ import type { IPluginContext } from '../../base';
3
+ import type { TInputBoolPluginEvents } from './types';
4
+ export declare class TInputBoolPlugin extends TBasePlugin<any, TInputBoolPluginEvents> {
5
+ private _input;
6
+ private _instance;
7
+ private _onClick;
8
+ private _onChange;
9
+ install(ctx: IPluginContext): void;
10
+ destroy(): void;
11
+ /**
12
+ * Readonly отменяется на `click`, а не на `change`: `checked` и
13
+ * `indeterminate` браузер переключает до клика и откатывает, только если
14
+ * отменён сам клик. `change` уже не отменить — DOM разошёлся бы с моделью.
15
+ * Пробел на сфокусированном чекбоксе тоже приходит кликом.
16
+ */
17
+ private _handleClick;
18
+ private _handleChange;
19
+ /**
20
+ * Узел — по модели после переключения. Браузер переключил поле сам, ещё до
21
+ * клика, а модель вправе запись не принять: её отменил или поправил
22
+ * подписчик `change:value:before` — так, например, чекбокс выбора строки
23
+ * таблицы отдаёт решение выбору строк. Модель тогда не сменилась, и
24
+ * разметка поле не перерисует: и Vue, и React пишут `checked` в узел только
25
+ * на смену своего значения. Без этой записи поле осталось бы переключённым
26
+ * при прежней модели.
27
+ */
28
+ private _syncInput;
29
+ private _removeInputListener;
30
+ }
@@ -0,0 +1,77 @@
1
+ import { TBasePlugin } from "../../base/base.class.js";
2
+ import { TElementPlugin } from "../element/element.plugin.js";
3
+ import { fieldOf } from "../input/field.js";
4
+ //#region src/custom/input-bool/input-bool.plugin.ts
5
+ var TInputBoolPlugin = class extends TBasePlugin {
6
+ _input = null;
7
+ _instance = null;
8
+ _onClick = this._handleClick.bind(this);
9
+ _onChange = this._handleChange.bind(this);
10
+ install(ctx) {
11
+ super.install(ctx);
12
+ const elementPlugin = ctx.get(TElementPlugin);
13
+ elementPlugin?.events.on("ready", () => {
14
+ const el = elementPlugin.element;
15
+ if (!el) return;
16
+ const input = fieldOf(el);
17
+ if (!(input instanceof HTMLInputElement)) return;
18
+ this._input = input;
19
+ input.addEventListener("click", this._onClick);
20
+ input.addEventListener("change", this._onChange);
21
+ });
22
+ elementPlugin?.events.on("removed", () => {
23
+ this._removeInputListener();
24
+ this._input = null;
25
+ });
26
+ this._instance = ctx.getInstance();
27
+ }
28
+ destroy() {
29
+ this._removeInputListener();
30
+ this._input = null;
31
+ this._instance = null;
32
+ super.destroy();
33
+ }
34
+ /**
35
+ * Readonly отменяется на `click`, а не на `change`: `checked` и
36
+ * `indeterminate` браузер переключает до клика и откатывает, только если
37
+ * отменён сам клик. `change` уже не отменить — DOM разошёлся бы с моделью.
38
+ * Пробел на сфокусированном чекбоксе тоже приходит кликом.
39
+ */
40
+ _handleClick(event) {
41
+ if (this._instance?.readonly) event.preventDefault();
42
+ }
43
+ _handleChange() {
44
+ if (this._instance?.readonly || this._input?.disabled) return;
45
+ const oldValue = this._instance?.value;
46
+ this._instance?.toggle();
47
+ this._syncInput();
48
+ this.events.emit("change:value", {
49
+ newValue: this._instance?.value,
50
+ oldValue
51
+ });
52
+ }
53
+ /**
54
+ * Узел — по модели после переключения. Браузер переключил поле сам, ещё до
55
+ * клика, а модель вправе запись не принять: её отменил или поправил
56
+ * подписчик `change:value:before` — так, например, чекбокс выбора строки
57
+ * таблицы отдаёт решение выбору строк. Модель тогда не сменилась, и
58
+ * разметка поле не перерисует: и Vue, и React пишут `checked` в узел только
59
+ * на смену своего значения. Без этой записи поле осталось бы переключённым
60
+ * при прежней модели.
61
+ */
62
+ _syncInput() {
63
+ const input = this._input;
64
+ const instance = this._instance;
65
+ if (!input || !instance) return;
66
+ input.checked = instance.value === true;
67
+ input.indeterminate = instance.indeterminate === true;
68
+ }
69
+ _removeInputListener() {
70
+ if (this._input) {
71
+ this._input.removeEventListener("click", this._onClick);
72
+ this._input.removeEventListener("change", this._onChange);
73
+ }
74
+ }
75
+ };
76
+ //#endregion
77
+ export { TInputBoolPlugin };
@@ -0,0 +1,5 @@
1
+ import type { TValuePayload } from '@soxa-ui/core';
2
+ import type { TPluginEvents } from '../../base';
3
+ export type TInputBoolPluginEvents = TPluginEvents & {
4
+ 'change:value': (payload: TValuePayload<boolean | undefined>) => void;
5
+ };
@@ -0,0 +1,2 @@
1
+ export type { TInputControlPluginEvents } from './types';
2
+ export { TInputControlPlugin } from './input-control.plugin';