@dxtmisha/constructor 0.23.0 → 0.30.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 (343) hide show
  1. package/package.json +36 -6
  2. package/src/classes/AriaStaticInclude.ts +269 -0
  3. package/src/classes/DescriptionInclude.ts +19 -2
  4. package/src/classes/EnabledInclude.ts +11 -0
  5. package/src/classes/EventClickInclude.ts +2 -2
  6. package/src/classes/LabelHighlightInclude.ts +35 -0
  7. package/src/classes/LabelInclude.ts +40 -5
  8. package/src/classes/ModelInclude.ts +50 -1
  9. package/src/classes/ModelValueInclude.ts +73 -0
  10. package/src/classes/TabIndexInclude.ts +260 -0
  11. package/src/classes/TextInclude.ts +102 -0
  12. package/src/classes/TouchEventInclude.ts +284 -0
  13. package/src/classes/field/FieldArrowInclude.ts +189 -0
  14. package/src/classes/field/FieldAttributesInclude.ts +87 -28
  15. package/src/classes/field/FieldChangeInclude.ts +1 -1
  16. package/src/classes/field/FieldElementInclude.ts +1 -1
  17. package/src/classes/field/FieldEventInclude.ts +253 -0
  18. package/src/classes/field/FieldInputModeInclude.ts +48 -0
  19. package/src/classes/field/FieldMatchInclude.ts +9 -3
  20. package/src/classes/field/FieldTypeInclude.ts +11 -6
  21. package/src/classes/field/FieldValidationInclude.ts +1 -4
  22. package/src/classes/field/FieldValueInclude.ts +10 -0
  23. package/src/constructors/Accordion/Accordion.ts +68 -0
  24. package/src/constructors/Accordion/AccordionDesign.tsx +192 -0
  25. package/src/constructors/Accordion/basicTypes.ts +0 -0
  26. package/src/constructors/Accordion/index.ts +5 -0
  27. package/src/constructors/Accordion/properties.json +16 -0
  28. package/src/constructors/Accordion/props.ts +55 -0
  29. package/src/constructors/Accordion/style.scss +12 -0
  30. package/src/constructors/Accordion/types.ts +63 -0
  31. package/src/constructors/ActionSheet/ActionSheet.ts +78 -0
  32. package/src/constructors/ActionSheet/ActionSheetDesign.tsx +125 -0
  33. package/src/constructors/ActionSheet/basicTypes.ts +0 -0
  34. package/src/constructors/ActionSheet/index.ts +5 -0
  35. package/src/constructors/ActionSheet/properties.json +14 -0
  36. package/src/constructors/ActionSheet/props.ts +44 -0
  37. package/src/constructors/ActionSheet/style.scss +25 -0
  38. package/src/constructors/ActionSheet/types.ts +54 -0
  39. package/src/constructors/Actions/Actions.ts +60 -0
  40. package/src/constructors/Actions/ActionsDesign.tsx +212 -0
  41. package/src/constructors/Actions/ActionsInclude.ts +109 -0
  42. package/src/constructors/Actions/basicTypes.ts +40 -0
  43. package/src/constructors/Actions/index.ts +6 -0
  44. package/src/constructors/Actions/properties.json +63 -0
  45. package/src/constructors/Actions/props.ts +42 -0
  46. package/src/constructors/Actions/style.scss +11 -0
  47. package/src/constructors/Actions/types.ts +52 -0
  48. package/src/constructors/Anchor/Anchor.ts +113 -0
  49. package/src/constructors/Anchor/AnchorDesign.tsx +242 -0
  50. package/src/constructors/Anchor/AnchorEvent.ts +76 -0
  51. package/src/constructors/Anchor/AnchorHref.ts +54 -0
  52. package/src/constructors/Anchor/AnchorIcon.ts +54 -0
  53. package/src/constructors/Anchor/AnchorTo.ts +46 -0
  54. package/src/constructors/Anchor/basicTypes.ts +9 -0
  55. package/src/constructors/Anchor/index.ts +5 -0
  56. package/src/constructors/Anchor/properties.json +3 -0
  57. package/src/constructors/Anchor/props.ts +54 -0
  58. package/src/constructors/Anchor/style.scss +10 -0
  59. package/src/constructors/Anchor/types.ts +47 -0
  60. package/src/constructors/Arrow/Arrow.ts +134 -0
  61. package/src/constructors/Arrow/ArrowDesign.tsx +226 -0
  62. package/src/constructors/Arrow/ArrowElement.ts +139 -0
  63. package/src/constructors/Arrow/ArrowElementTarget.ts +72 -0
  64. package/src/constructors/Arrow/ArrowEvent.ts +126 -0
  65. package/src/constructors/Arrow/ArrowInclude.ts +85 -0
  66. package/src/constructors/Arrow/ArrowParent.ts +100 -0
  67. package/src/constructors/Arrow/ArrowPosition.ts +231 -0
  68. package/src/constructors/Arrow/basicTypes.ts +50 -0
  69. package/src/constructors/Arrow/index.ts +6 -0
  70. package/src/constructors/Arrow/properties.json +23 -0
  71. package/src/constructors/Arrow/props.ts +31 -0
  72. package/src/constructors/Arrow/style.scss +133 -0
  73. package/src/constructors/Arrow/types.ts +54 -0
  74. package/src/constructors/Badge/BadgeDesign.tsx +4 -1
  75. package/src/constructors/Badge/properties.json +36 -36
  76. package/src/constructors/Badge/props.ts +3 -1
  77. package/src/constructors/Badge/types.ts +3 -3
  78. package/src/constructors/Bars/Bars.ts +10 -4
  79. package/src/constructors/Bars/BarsDesign.tsx +17 -11
  80. package/src/constructors/Bars/BarsInclude.ts +5 -2
  81. package/src/constructors/Bars/properties.json +6 -6
  82. package/src/constructors/Bars/props.ts +3 -1
  83. package/src/constructors/Bars/style.scss +4 -0
  84. package/src/constructors/Bars/types.ts +3 -3
  85. package/src/constructors/Block/Block.ts +105 -0
  86. package/src/constructors/Block/BlockDesign.tsx +219 -0
  87. package/src/constructors/Block/basicTypes.ts +0 -0
  88. package/src/constructors/Block/index.ts +5 -0
  89. package/src/constructors/Block/properties.json +10 -0
  90. package/src/constructors/Block/props.ts +46 -0
  91. package/src/constructors/Block/style.scss +11 -0
  92. package/src/constructors/Block/types.ts +64 -0
  93. package/src/constructors/Button/Button.ts +26 -2
  94. package/src/constructors/Button/ButtonDesign.tsx +11 -6
  95. package/src/constructors/Button/ButtonInclude.ts +8 -5
  96. package/src/constructors/Button/index.ts +1 -0
  97. package/src/constructors/Button/properties.json +84 -84
  98. package/src/constructors/Button/props.ts +5 -1
  99. package/src/constructors/Button/style.scss +1 -1
  100. package/src/constructors/Button/types.ts +2 -2
  101. package/src/constructors/Cell/Cell.ts +23 -6
  102. package/src/constructors/Cell/CellDesign.tsx +53 -22
  103. package/src/constructors/Cell/basicTypes.ts +33 -0
  104. package/src/constructors/Cell/properties.json +52 -52
  105. package/src/constructors/Cell/props.ts +16 -13
  106. package/src/constructors/Cell/style.scss +1 -1
  107. package/src/constructors/Cell/types.ts +3 -3
  108. package/src/constructors/Chip/ChipDesign.tsx +5 -5
  109. package/src/constructors/Chip/ChipInclude.ts +83 -0
  110. package/src/constructors/Chip/basicTypes.ts +12 -0
  111. package/src/constructors/Chip/index.ts +2 -0
  112. package/src/constructors/Chip/properties.json +3 -3
  113. package/src/constructors/Chip/types.ts +5 -5
  114. package/src/constructors/ChipGroup/ChipGroup.ts +74 -0
  115. package/src/constructors/ChipGroup/ChipGroupDesign.tsx +162 -0
  116. package/src/constructors/ChipGroup/basicTypes.ts +6 -0
  117. package/src/constructors/ChipGroup/index.ts +5 -0
  118. package/src/constructors/ChipGroup/properties.json +3 -0
  119. package/src/constructors/ChipGroup/props.ts +50 -0
  120. package/src/constructors/ChipGroup/style.scss +6 -0
  121. package/src/constructors/ChipGroup/types.ts +47 -0
  122. package/src/constructors/Dialog/Dialog.ts +145 -0
  123. package/src/constructors/Dialog/DialogDesign.tsx +135 -0
  124. package/src/constructors/Dialog/basicTypes.ts +0 -0
  125. package/src/constructors/Dialog/index.ts +5 -0
  126. package/src/constructors/Dialog/properties.json +23 -0
  127. package/src/constructors/Dialog/props.ts +76 -0
  128. package/src/constructors/Dialog/style.scss +18 -0
  129. package/src/constructors/Dialog/types.ts +67 -0
  130. package/src/constructors/Field/Field.ts +58 -19
  131. package/src/constructors/Field/FieldDesign.tsx +35 -17
  132. package/src/constructors/Field/FieldInclude.ts +141 -11
  133. package/src/constructors/Field/basicTypes.ts +35 -19
  134. package/src/constructors/Field/properties.json +92 -86
  135. package/src/constructors/Field/props.ts +6 -3
  136. package/src/constructors/Field/style.scss +36 -20
  137. package/src/constructors/Field/types.ts +13 -13
  138. package/src/constructors/FieldCounter/FieldCounterDesign.tsx +1 -0
  139. package/src/constructors/FieldCounter/FieldCounterInclude.ts +3 -1
  140. package/src/constructors/FieldCounter/basicTypes.ts +1 -0
  141. package/src/constructors/FieldCounter/properties.json +3 -3
  142. package/src/constructors/FieldCounter/props.ts +5 -2
  143. package/src/constructors/FieldCounter/types.ts +1 -1
  144. package/src/constructors/FieldLabel/FieldLabelDesign.tsx +6 -2
  145. package/src/constructors/FieldLabel/FieldLabelInclude.ts +13 -4
  146. package/src/constructors/FieldLabel/properties.json +4 -4
  147. package/src/constructors/FieldLabel/props.ts +2 -2
  148. package/src/constructors/FieldLabel/types.ts +2 -2
  149. package/src/constructors/FieldMessage/FieldMessage.ts +19 -0
  150. package/src/constructors/FieldMessage/FieldMessageDesign.tsx +36 -4
  151. package/src/constructors/FieldMessage/FieldMessageInclude.ts +11 -1
  152. package/src/constructors/FieldMessage/basicTypes.ts +15 -1
  153. package/src/constructors/FieldMessage/properties.json +10 -9
  154. package/src/constructors/FieldMessage/props.ts +4 -0
  155. package/src/constructors/FieldMessage/style.scss +16 -1
  156. package/src/constructors/FieldMessage/types.ts +4 -2
  157. package/src/constructors/Icon/Icon.ts +37 -2
  158. package/src/constructors/Icon/IconDesign.tsx +46 -39
  159. package/src/constructors/Icon/properties.json +25 -25
  160. package/src/constructors/Icon/props.ts +22 -16
  161. package/src/constructors/Icon/types.ts +1 -1
  162. package/src/constructors/Image/Image.ts +68 -10
  163. package/src/constructors/Image/ImageBackground.ts +15 -2
  164. package/src/constructors/Image/ImageCoordinator.ts +4 -2
  165. package/src/constructors/Image/ImageData.ts +4 -0
  166. package/src/constructors/Image/ImageDesign.tsx +81 -15
  167. package/src/constructors/Image/ImageFile.ts +2 -13
  168. package/src/constructors/Image/ImageImg.ts +218 -0
  169. package/src/constructors/Image/ImagePdf.ts +2 -2
  170. package/src/constructors/Image/basicTypes.ts +5 -0
  171. package/src/constructors/Image/properties.json +17 -17
  172. package/src/constructors/Image/props.ts +34 -7
  173. package/src/constructors/Image/style.scss +42 -0
  174. package/src/constructors/Image/types.ts +1 -1
  175. package/src/constructors/Input/Input.ts +146 -0
  176. package/src/constructors/Input/InputDesign.tsx +174 -0
  177. package/src/constructors/Input/InputPassword.ts +54 -0
  178. package/src/constructors/Input/basicTypes.ts +3 -0
  179. package/src/constructors/Input/index.ts +5 -0
  180. package/src/constructors/Input/properties.json +2 -0
  181. package/src/constructors/Input/props.ts +53 -0
  182. package/src/constructors/Input/style.scss +5 -0
  183. package/src/constructors/Input/types.ts +48 -0
  184. package/src/constructors/List/List.ts +36 -11
  185. package/src/constructors/List/ListControl.ts +2 -2
  186. package/src/constructors/List/ListDesign.tsx +59 -38
  187. package/src/constructors/List/ListGo.ts +5 -3
  188. package/src/constructors/List/properties.json +16 -16
  189. package/src/constructors/List/props.ts +7 -0
  190. package/src/constructors/List/style.scss +14 -0
  191. package/src/constructors/List/types.ts +9 -9
  192. package/src/constructors/ListGroup/ListGroupDesign.tsx +8 -3
  193. package/src/constructors/ListGroup/basicTypes.ts +7 -0
  194. package/src/constructors/ListGroup/properties.json +15 -15
  195. package/src/constructors/ListGroup/props.ts +4 -4
  196. package/src/constructors/ListGroup/types.ts +2 -1
  197. package/src/constructors/ListItem/ListItem.ts +67 -7
  198. package/src/constructors/ListItem/ListItemDesign.tsx +13 -10
  199. package/src/constructors/ListItem/properties.json +52 -52
  200. package/src/constructors/ListItem/props.ts +24 -15
  201. package/src/constructors/ListItem/types.ts +12 -12
  202. package/src/constructors/ListMenu/ListMenu.ts +2 -1
  203. package/src/constructors/ListMenu/ListMenuDesign.tsx +3 -3
  204. package/src/constructors/ListMenu/properties.json +19 -19
  205. package/src/constructors/ListMenu/types.ts +3 -3
  206. package/src/constructors/Mask/MaskDesign.tsx +33 -28
  207. package/src/constructors/Mask/MaskEvent.ts +41 -2
  208. package/src/constructors/Mask/MaskInclude.ts +147 -0
  209. package/src/constructors/Mask/basicTypes.ts +19 -1
  210. package/src/constructors/Mask/properties.json +30 -29
  211. package/src/constructors/Mask/props.ts +1 -1
  212. package/src/constructors/Mask/style.scss +2 -4
  213. package/src/constructors/Mask/types.ts +4 -4
  214. package/src/constructors/Menu/Menu.ts +17 -5
  215. package/src/constructors/Menu/MenuDesign.tsx +11 -11
  216. package/src/constructors/Menu/MenuGo.ts +72 -0
  217. package/src/constructors/Menu/MenuInclude.ts +20 -10
  218. package/src/constructors/Menu/MenuSearch.ts +20 -1
  219. package/src/constructors/Menu/MenuValue.ts +7 -3
  220. package/src/constructors/Menu/MenuWindow.ts +2 -1
  221. package/src/constructors/Menu/basicTypes.ts +21 -4
  222. package/src/constructors/Menu/properties.json +17 -17
  223. package/src/constructors/Menu/props.ts +15 -3
  224. package/src/constructors/Menu/types.ts +6 -16
  225. package/src/constructors/Modal/Modal.ts +53 -0
  226. package/src/constructors/Modal/ModalAbstract.ts +74 -0
  227. package/src/constructors/Modal/ModalDesign.tsx +63 -0
  228. package/src/constructors/Modal/ModalDesignAbstract.tsx +226 -0
  229. package/src/constructors/Modal/basicTypes.ts +0 -0
  230. package/src/constructors/Modal/index.ts +5 -0
  231. package/src/constructors/Modal/properties.json +17 -0
  232. package/src/constructors/Modal/props.ts +45 -0
  233. package/src/constructors/Modal/style.scss +20 -0
  234. package/src/constructors/Modal/types.ts +62 -0
  235. package/src/constructors/MotionTransform/MotionTransform.ts +65 -8
  236. package/src/constructors/MotionTransform/MotionTransformDesign.tsx +55 -21
  237. package/src/constructors/MotionTransform/MotionTransformElement.ts +7 -2
  238. package/src/constructors/MotionTransform/MotionTransformInclude.ts +2 -1
  239. package/src/constructors/MotionTransform/MotionTransformState.ts +5 -0
  240. package/src/constructors/MotionTransform/basicTypes.ts +18 -2
  241. package/src/constructors/MotionTransform/properties.json +35 -35
  242. package/src/constructors/MotionTransform/props.ts +13 -7
  243. package/src/constructors/MotionTransform/style.scss +24 -2
  244. package/src/constructors/MotionTransform/types.ts +7 -7
  245. package/src/constructors/Progress/Progress.ts +12 -2
  246. package/src/constructors/Progress/ProgressDesign.tsx +75 -53
  247. package/src/constructors/Progress/ProgressInclude.ts +13 -1
  248. package/src/constructors/Progress/properties.json +47 -47
  249. package/src/constructors/Progress/props.ts +5 -1
  250. package/src/constructors/Progress/style.scss +2 -2
  251. package/src/constructors/Progress/types.ts +4 -4
  252. package/src/constructors/Ripple/Ripple.ts +1 -1
  253. package/src/constructors/Ripple/RippleDesign.tsx +7 -4
  254. package/src/constructors/Ripple/RippleItem.ts +1 -1
  255. package/src/constructors/Ripple/style.scss +4 -0
  256. package/src/constructors/Ripple/types.ts +2 -2
  257. package/src/constructors/Scrollbar/Scrollbar.ts +3 -3
  258. package/src/constructors/Scrollbar/ScrollbarDesign.tsx +1 -1
  259. package/src/constructors/Scrollbar/properties.json +33 -33
  260. package/src/constructors/Scrollbar/types.ts +1 -1
  261. package/src/constructors/Section/Section.ts +33 -0
  262. package/src/constructors/Section/SectionDesign.tsx +127 -0
  263. package/src/constructors/Section/basicTypes.ts +0 -0
  264. package/src/constructors/Section/index.ts +5 -0
  265. package/src/constructors/Section/properties.json +2 -0
  266. package/src/constructors/Section/props.ts +29 -0
  267. package/src/constructors/Section/style.scss +5 -0
  268. package/src/constructors/Section/types.ts +47 -0
  269. package/src/constructors/Select/Select.ts +172 -0
  270. package/src/constructors/Select/SelectDesign.tsx +288 -0
  271. package/src/constructors/Select/SelectFilter.ts +43 -0
  272. package/src/constructors/Select/SelectInput.ts +68 -0
  273. package/src/constructors/Select/basicTypes.ts +0 -0
  274. package/src/constructors/Select/index.ts +5 -0
  275. package/src/constructors/Select/properties.json +3 -0
  276. package/src/constructors/Select/props.ts +63 -0
  277. package/src/constructors/Select/style.scss +5 -0
  278. package/src/constructors/Select/types.ts +53 -0
  279. package/src/constructors/SelectValue/SelectValue.ts +95 -0
  280. package/src/constructors/SelectValue/SelectValueDesign.tsx +198 -0
  281. package/src/constructors/SelectValue/SelectValueInclude.ts +92 -0
  282. package/src/constructors/SelectValue/basicTypes.ts +17 -0
  283. package/src/constructors/SelectValue/index.ts +6 -0
  284. package/src/constructors/SelectValue/properties.json +7 -0
  285. package/src/constructors/SelectValue/props.ts +48 -0
  286. package/src/constructors/SelectValue/style.scss +14 -0
  287. package/src/constructors/SelectValue/types.ts +47 -0
  288. package/src/constructors/Skeleton/Skeleton.ts +1 -3
  289. package/src/constructors/Skeleton/SkeletonDesign.tsx +7 -1
  290. package/src/constructors/Skeleton/SkeletonInclude.ts +5 -0
  291. package/src/constructors/Skeleton/properties.json +24 -24
  292. package/src/constructors/Skeleton/types.ts +1 -1
  293. package/src/constructors/TextareaAutosize/TextareaAutosize.ts +41 -0
  294. package/src/constructors/TextareaAutosize/TextareaAutosizeDesign.tsx +147 -0
  295. package/src/constructors/TextareaAutosize/TextareaAutosizeResize.ts +109 -0
  296. package/src/constructors/TextareaAutosize/TextareaAutosizeValue.ts +69 -0
  297. package/src/constructors/TextareaAutosize/basicTypes.ts +0 -0
  298. package/src/constructors/TextareaAutosize/index.ts +5 -0
  299. package/src/constructors/TextareaAutosize/properties.json +6 -0
  300. package/src/constructors/TextareaAutosize/props.ts +34 -0
  301. package/src/constructors/TextareaAutosize/style.scss +31 -0
  302. package/src/constructors/TextareaAutosize/types.ts +50 -0
  303. package/src/constructors/Tooltip/Tooltip.ts +138 -0
  304. package/src/constructors/Tooltip/TooltipClasses.ts +90 -0
  305. package/src/constructors/Tooltip/TooltipDesign.tsx +198 -0
  306. package/src/constructors/Tooltip/TooltipEvent.ts +103 -0
  307. package/src/constructors/Tooltip/TooltipInclude.ts +114 -0
  308. package/src/constructors/Tooltip/TooltipOpen.ts +128 -0
  309. package/src/constructors/Tooltip/TooltipPosition.ts +92 -0
  310. package/src/constructors/Tooltip/TooltipStatus.ts +97 -0
  311. package/src/constructors/Tooltip/TooltipStyle.ts +123 -0
  312. package/src/constructors/Tooltip/basicTypes.ts +39 -0
  313. package/src/constructors/Tooltip/index.ts +6 -0
  314. package/src/constructors/Tooltip/properties.json +14 -0
  315. package/src/constructors/Tooltip/props.ts +49 -0
  316. package/src/constructors/Tooltip/style.scss +43 -0
  317. package/src/constructors/Tooltip/types.ts +58 -0
  318. package/src/constructors/Window/Window.ts +52 -16
  319. package/src/constructors/Window/WindowClasses.ts +33 -0
  320. package/src/constructors/Window/WindowClient.ts +39 -0
  321. package/src/constructors/Window/WindowDesign.tsx +31 -14
  322. package/src/constructors/Window/WindowEsc.ts +114 -0
  323. package/src/constructors/Window/WindowHidden.ts +120 -0
  324. package/src/constructors/Window/WindowInclude.ts +2 -2
  325. package/src/constructors/Window/WindowOpen.ts +10 -1
  326. package/src/constructors/Window/WindowOrigin.ts +5 -1
  327. package/src/constructors/Window/WindowStatic.ts +3 -1
  328. package/src/constructors/Window/WindowVerification.ts +8 -5
  329. package/src/constructors/Window/basicTypes.ts +26 -16
  330. package/src/constructors/Window/properties.json +239 -236
  331. package/src/constructors/Window/props.ts +10 -1
  332. package/src/constructors/Window/style.scss +11 -0
  333. package/src/constructors/Window/types.ts +2 -2
  334. package/src/functions/{getClassTegAStatic.ts → getClassTagAStatic.ts} +1 -1
  335. package/src/library.ts +13 -1
  336. package/src/types/ariaTypes.ts +366 -0
  337. package/src/types/descriptionTypes.ts +8 -0
  338. package/src/types/fieldTypes.ts +120 -16
  339. package/src/types/labelTypes.ts +39 -0
  340. package/src/types/modelTypes.ts +16 -0
  341. package/src/types/roleTypes.ts +88 -0
  342. package/src/types/textTypes.ts +33 -0
  343. package/src/types/touchEventTypes.ts +43 -0
@@ -1,10 +1,11 @@
1
- import { h, Teleport, type VNode } from 'vue'
1
+ import { computed, h, Teleport, type VNode } from 'vue'
2
2
  import {
3
3
  type ConstrOptions,
4
4
  type ConstrStyles,
5
5
  DesignConstructorAbstract
6
6
  } from '@dxtmisha/functional'
7
7
 
8
+ import { AriaStaticInclude } from '../../classes/AriaStaticInclude'
8
9
  import { Window } from './Window'
9
10
 
10
11
  import {
@@ -124,7 +125,7 @@ export class WindowDesign<
124
125
  protected initRender(): VNode[] {
125
126
  const main: any[] = []
126
127
 
127
- this.initSlot('control', main, this.item.slotData)
128
+ this.initSlot('control', main, this.item.slotData.value)
128
129
 
129
130
  if (this.item.open.inDom.value) {
130
131
  if (this.item.staticMode.item.value) {
@@ -161,14 +162,7 @@ export class WindowDesign<
161
162
  readonly renderMain = (): VNode => {
162
163
  return h(
163
164
  'div',
164
- {
165
- 'key': 'main',
166
- 'ref': this.element,
167
- 'class': this.classes?.value.main,
168
- 'style': this.styles?.value,
169
- 'data-window': this.item.classes.getId(),
170
- 'onTransitionend': this.item.event.onTransition
171
- },
165
+ this.propsMain.value,
172
166
  this.renderBody()
173
167
  )
174
168
  }
@@ -205,9 +199,9 @@ export class WindowDesign<
205
199
  readonly renderBodyGroup = (): VNode[] => {
206
200
  const children: any[] = []
207
201
 
208
- this.initSlot('title', children, this.item.slotData)
202
+ this.initSlot('title', children, this.item.slotData.value)
209
203
  children.push(this.renderBodyContext())
210
- this.initSlot('footer', children, this.item.slotData)
204
+ this.initSlot('footer', children, this.item.slotData.value)
211
205
 
212
206
  return [
213
207
  h('div', {
@@ -231,7 +225,7 @@ export class WindowDesign<
231
225
  'divider': this.props.divider,
232
226
  'data-window-body': '1'
233
227
  },
234
- () => this.initSlot('default', undefined, this.item.slotData)
228
+ () => this.initSlot('default', undefined, this.item.slotData.value)
235
229
  )
236
230
  }
237
231
 
@@ -245,6 +239,7 @@ export class WindowDesign<
245
239
  return [h(
246
240
  'div',
247
241
  {
242
+ key: 'image',
248
243
  class: this.classes?.value.image
249
244
  },
250
245
  this.item.image.render()
@@ -264,15 +259,37 @@ export class WindowDesign<
264
259
  return this.components.render(
265
260
  'button',
266
261
  {
262
+ key: 'button-close',
267
263
  class: [
268
264
  this.classes?.value.close,
269
265
  this.item.classes.list.close
270
266
  ],
271
- icon: this.props.iconClose
267
+ icon: this.props.iconClose,
268
+ ...AriaStaticInclude.label(this.item.text.close.value)
272
269
  }
273
270
  )
274
271
  }
275
272
 
276
273
  return []
277
274
  }
275
+
276
+ /**
277
+ * Props for the main element.
278
+ *
279
+ * Свойства для главного элемента.
280
+ */
281
+ protected readonly propsMain = computed(() => ({
282
+ 'key': 'main',
283
+ 'ref': this.element,
284
+ 'class': this.classes?.value.main,
285
+ 'style': this.styles?.value,
286
+ 'data-window': this.item.classes.getId(),
287
+ 'onTransitionend': this.item.event.onTransition,
288
+ ...AriaStaticInclude.role(this.props.role),
289
+ ...AriaStaticInclude.modal(
290
+ !this.item.isMenu(),
291
+ this.props.ariaLabelledby,
292
+ this.props.ariaDescribedby
293
+ )
294
+ }))
278
295
  }
@@ -0,0 +1,114 @@
1
+ import { type Ref, watch } from 'vue'
2
+ import { EventItem, executeFunction, getRef, isDomRuntime, type RefOrNormal } from '@dxtmisha/functional'
3
+
4
+ /**
5
+ * Class for handling Escape key press to close windows.
6
+ *
7
+ * Класс для обработки нажатия клавиши Escape для закрытия окон.
8
+ */
9
+ export class WindowEsc {
10
+ /** Event handler instance/ Экземпляр обработчика событий */
11
+ protected event?: EventItem<HTMLElement, any>
12
+
13
+ /**
14
+ * Constructor
15
+ * @param open Reference to the open state/ Ссылка на состояние открытия
16
+ * @param on Optional callback function when Escape is pressed/ Необязательная функция обратного вызова при нажатии Escape
17
+ * @param active Reference to the active state/ Ссылка на состояние активности
18
+ */
19
+ constructor(
20
+ protected readonly open: Ref<boolean>,
21
+ protected readonly on?: () => void,
22
+ protected readonly active: RefOrNormal<boolean | (() => boolean)> = true
23
+ ) {
24
+ watch(
25
+ open,
26
+ (value) => {
27
+ if (executeFunction(getRef(this.active))) {
28
+ if (value) {
29
+ this.start()
30
+ } else {
31
+ this.stop()
32
+ }
33
+ }
34
+ }
35
+ )
36
+ }
37
+
38
+ /**
39
+ * Start listening for Escape key press.
40
+ *
41
+ * Начать прослушивание нажатия клавиши Escape.
42
+ */
43
+ start(): this {
44
+ this.make()
45
+ this.event?.start()
46
+
47
+ return this
48
+ }
49
+
50
+ /**
51
+ * Stop listening for Escape key press.
52
+ *
53
+ * Остановить прослушивание нажатия клавиши Escape.
54
+ */
55
+ stop(): this {
56
+ if (this.event) {
57
+ this.event.stop()
58
+ this.event = undefined
59
+ }
60
+
61
+ return this
62
+ }
63
+
64
+ /**
65
+ * Check if the pressed key is Escape.
66
+ *
67
+ * Проверяет, является ли нажатая клавиша Escape.
68
+ * @param event Keyboard event/ Событие клавиатуры
69
+ */
70
+ protected isEsc(event: KeyboardEvent): boolean {
71
+ return (
72
+ event.key === 'Escape'
73
+ || event.key === 'Esc'
74
+ || event.code === 'Escape'
75
+ || event.code === 'Esc'
76
+ || event.keyCode === 27
77
+ )
78
+ }
79
+
80
+ /**
81
+ * Event listener for keyboard events.
82
+ *
83
+ * Обработчик событий клавиатуры.
84
+ */
85
+ protected readonly listener = (event: KeyboardEvent): void => {
86
+ if (this.isEsc(event)) {
87
+ event.preventDefault()
88
+ event.stopPropagation()
89
+
90
+ if (this.on) {
91
+ this.on()
92
+ } else {
93
+ this.open.value = false
94
+ }
95
+
96
+ this.stop()
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Create and initialize the event handler.
102
+ *
103
+ * Создать и инициализировать обработчик событий.
104
+ */
105
+ protected make(): void {
106
+ if (isDomRuntime() && !this.event) {
107
+ this.event = new EventItem<HTMLElement, any>(
108
+ document.body,
109
+ 'keydown',
110
+ this.listener
111
+ )
112
+ }
113
+ }
114
+ }
@@ -0,0 +1,120 @@
1
+ import { watch } from 'vue'
2
+ import { isDomRuntime } from '@dxtmisha/functional'
3
+ import { AriaStaticInclude } from '../../classes/AriaStaticInclude'
4
+
5
+ import { WindowClasses } from './WindowClasses'
6
+
7
+ import type { WindowOpen } from './WindowOpen'
8
+
9
+ /**
10
+ * A class for managing the hiding of elements outside the window when it is open.
11
+ *
12
+ * Класс для управления скрытием элементов вне окна при его открытии.
13
+ */
14
+ export class WindowHidden {
15
+ protected elements: HTMLElement[] = []
16
+
17
+ /**
18
+ * Constructor
19
+ * @param classes an object for working with class names / объект для работы с названиями классов
20
+ * @param open an object for working with the open state of the window / объект для работы с состоянием открытия окна
21
+ */
22
+ constructor(
23
+ protected classes: WindowClasses,
24
+ protected open: WindowOpen
25
+ ) {
26
+ watch(
27
+ this.open.item,
28
+ (newValue: boolean) => {
29
+ if (newValue) {
30
+ this.toHidden()
31
+ } else {
32
+ this.toShow()
33
+ }
34
+ },
35
+ {
36
+ immediate: true
37
+ }
38
+ )
39
+ }
40
+
41
+ /**
42
+ * Returns the aria attribute data for hiding elements.
43
+ *
44
+ * Возвращает данные aria-атрибута для скрытия элементов.
45
+ */
46
+ protected getAriaData() {
47
+ const ariaHidden = AriaStaticInclude.hidden()
48
+ const ariaKey: any = Object.keys(ariaHidden)[0]
49
+ const ariaValue: any = Object.values(ariaHidden)[0]
50
+
51
+ return {
52
+ key: ariaKey,
53
+ value: ariaValue
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Finds all elements outside the window that need to be hidden.
59
+ *
60
+ * Находит все элементы вне окна, которые нужно скрыть.
61
+ */
62
+ protected findElements(): NodeListOf<HTMLElement> | undefined {
63
+ if (isDomRuntime()) {
64
+ const id = this.classes.getId()
65
+ return document.querySelectorAll<HTMLElement>(
66
+ `body > *:not([data-window-teleport="${id}"]):not(.${id}):not(script):not(style)`
67
+ )
68
+ }
69
+
70
+ return undefined
71
+ }
72
+
73
+ /**
74
+ * Hides elements outside the window by adding aria-hidden attribute.
75
+ *
76
+ * Скрывает элементы вне окна, добавляя атрибут aria-hidden.
77
+ */
78
+ protected toHidden(): void {
79
+ const elements = this.findElements()
80
+
81
+ if (elements) {
82
+ const aria = this.getAriaData()
83
+
84
+ this.elements = []
85
+ elements.forEach((element: HTMLElement) => {
86
+ if (
87
+ element.hasAttribute(aria.key)
88
+ || element.hasAttribute('inert')
89
+ ) {
90
+ return
91
+ }
92
+
93
+ element.setAttribute(aria.key, aria.value)
94
+
95
+ if (!this.classes.isWindowOrTeleport(element)) {
96
+ element.setAttribute('inert', '')
97
+ }
98
+
99
+ this.elements.push(element)
100
+ })
101
+ } else {
102
+ this.elements = []
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Shows previously hidden elements by removing aria-hidden attribute.
108
+ *
109
+ * Показывает ранее скрытые элементы, удаляя атрибут aria-hidden.
110
+ */
111
+ protected toShow(): void {
112
+ const aria = this.getAriaData()
113
+ this.elements
114
+ .forEach((element: HTMLElement) => {
115
+ element.removeAttribute(aria.key)
116
+ element.removeAttribute('inert')
117
+ })
118
+ this.elements = []
119
+ }
120
+ }
@@ -72,8 +72,8 @@ export class WindowInclude<
72
72
  */
73
73
  readonly expose: WindowExposeInclude = {
74
74
  id: computed(() => String(this.element.value?.id)),
75
- open: computed(() => Boolean(this.element.value?.open)),
76
- control: computed(() => this.element.value?.control),
75
+ open: computed(() => Boolean(this.element.value?.open.value)),
76
+ control: computed(() => this.element.value?.control.value),
77
77
  setOpen: async (open: boolean) => this.element.value?.setOpen(open),
78
78
  toOpen: async () => this.element.value?.toOpen(),
79
79
  toClose: async () => this.element.value?.toClose(),
@@ -1,6 +1,8 @@
1
1
  import { computed, ref } from 'vue'
2
2
  import { frame } from '@dxtmisha/functional'
3
3
 
4
+ import { TabIndexInclude } from '../../classes/TabIndexInclude'
5
+
4
6
  import { WindowStatus } from './WindowStatus'
5
7
  import { WindowClient } from './WindowClient'
6
8
  import { WindowHook } from './WindowHook'
@@ -14,6 +16,7 @@ import { WindowOrigin } from './WindowOrigin'
14
16
  import { WindowEmit } from './WindowEmit'
15
17
  import { WindowStyles } from './WindowStyles'
16
18
 
19
+ import { __WINDOW_TYPE_BODY_NAME } from './basicTypes'
17
20
  import type { WindowProps } from './props'
18
21
 
19
22
  /**
@@ -33,6 +36,7 @@ export class WindowOpen {
33
36
  * @param client object for working with mouse pointer coordinates/ объект для работы с координатами указателя мыши
34
37
  * @param hook object for working with hooks/ объект для работы с хуками
35
38
  * @param element an object of the class for working with elements/ объект класса для работы с элементами
39
+ * @param tabIndex class object for working with tab indices/ объект класса для работы с табуляцией
36
40
  * @param status object for working with statuses/ объект для работы со статусами
37
41
  * @param flash class object for working with fast window opening/ объект класса для работы с быстрым открытием окна
38
42
  * @param coordinates object for working with coordinates/ объект для работы с координатами
@@ -46,6 +50,7 @@ export class WindowOpen {
46
50
  protected readonly client: WindowClient,
47
51
  protected readonly hook: WindowHook,
48
52
  protected readonly element: WindowElement,
53
+ protected readonly tabIndex: TabIndexInclude,
49
54
  protected readonly status: WindowStatus,
50
55
  protected readonly flash: WindowFlash,
51
56
  protected readonly coordinates: WindowCoordinates,
@@ -144,6 +149,7 @@ export class WindowOpen {
144
149
  requestAnimationFrame(() => {
145
150
  this.hook.opening()
146
151
  this.resetClicks()
152
+ this.tabIndex.goTo()
147
153
  })
148
154
  this.emit.on(this.item.value)
149
155
  })
@@ -160,6 +166,8 @@ export class WindowOpen {
160
166
  this.resetClicks()
161
167
  })
162
168
  }
169
+
170
+ this.tabIndex.reset()
163
171
  }
164
172
  }
165
173
  }
@@ -196,6 +204,7 @@ export class WindowOpen {
196
204
  */
197
205
  pressed(): this {
198
206
  this.clicks++
207
+ setTimeout(() => this.resetClicks(), 128)
199
208
  return this
200
209
  }
201
210
 
@@ -257,7 +266,7 @@ export class WindowOpen {
257
266
  const element = this.element.getMain()
258
267
 
259
268
  if (element) {
260
- const isMenu = getComputedStyle(element).content === '"--MENU--"'
269
+ const isMenu = getComputedStyle(element).getPropertyValue(__WINDOW_TYPE_BODY_NAME) === '"--MENU--"'
261
270
 
262
271
  if (isMenu && this.position.update()) {
263
272
  this.styles.update()
@@ -2,6 +2,8 @@ import { WindowClient } from './WindowClient'
2
2
  import { WindowElement } from './WindowElement'
3
3
  import { WindowPosition } from './WindowPosition'
4
4
 
5
+ import { __WINDOW_TYPE_BODY_NAME } from './basicTypes'
6
+
5
7
  /**
6
8
  * Class for defining the initial position for the animation.
7
9
  *
@@ -50,12 +52,14 @@ export class WindowOrigin {
50
52
  update(): this {
51
53
  const element = this.element.getMain()
52
54
 
55
+ this.client.update()
56
+
53
57
  if (!this.client.is()) {
54
58
  this.x = 0
55
59
  this.y = 0
56
60
  } else if (
57
61
  element
58
- && getComputedStyle(element).content !== '"--MENU--"'
62
+ && getComputedStyle(element).getPropertyValue(__WINDOW_TYPE_BODY_NAME) !== '"--MENU--"'
59
63
  ) {
60
64
  const rect = this.element.getBodyRect()
61
65
 
@@ -3,6 +3,7 @@ import { EventItem, setRef } from '@dxtmisha/functional'
3
3
 
4
4
  import { WindowElement } from './WindowElement'
5
5
 
6
+ import { __WINDOW_TYPE_BODY_NAME } from './basicTypes'
6
7
  import type { WindowProps } from './props'
7
8
 
8
9
  /**
@@ -73,7 +74,8 @@ export class WindowStatic {
73
74
 
74
75
  return Boolean(
75
76
  element
76
- && getComputedStyle(element).content === '"--STATIC--"'
77
+ && getComputedStyle(element)
78
+ .getPropertyValue(__WINDOW_TYPE_BODY_NAME) === '"--STATIC--"'
77
79
  )
78
80
  }
79
81
 
@@ -1,4 +1,4 @@
1
- import { isDomRuntime, isFilled } from '@dxtmisha/functional'
1
+ import { isDomRuntime } from '@dxtmisha/functional'
2
2
 
3
3
  import { WindowPersistent } from './WindowPersistent'
4
4
  import { WindowClasses } from './WindowClasses'
@@ -6,6 +6,7 @@ import { WindowElement } from './WindowElement'
6
6
  import { WindowStatic } from './WindowStatic'
7
7
  import { WindowOpen } from './WindowOpen'
8
8
 
9
+ import { __WINDOW_TYPE_BODY_NAME } from './basicTypes'
9
10
  import type { WindowProps } from './props'
10
11
 
11
12
  /**
@@ -55,8 +56,6 @@ export class WindowVerification {
55
56
  return
56
57
  }
57
58
 
58
- this.open.pressed()
59
-
60
59
  if (!this.isTargetInBody()) {
61
60
  return
62
61
  }
@@ -65,6 +64,8 @@ export class WindowVerification {
65
64
  return
66
65
  }
67
66
 
67
+ this.open.pressed()
68
+
68
69
  if (this.open.item.value) {
69
70
  if (
70
71
  this.isOpenOnly()
@@ -75,7 +76,7 @@ export class WindowVerification {
75
76
  await this.open
76
77
  .reset()
77
78
  .watchPosition()
78
- } else if (!isFilled(this.focus)) {
79
+ } else if (!this.focus) {
79
80
  await this.open.toggle()
80
81
  } else if (!this.isFocus()) {
81
82
  if (this.isNotBlock()) {
@@ -267,7 +268,9 @@ export class WindowVerification {
267
268
  protected isMenu(element: HTMLElement | undefined = this.element.getMain()): boolean {
268
269
  if (element) {
269
270
  const style = getComputedStyle(element)
270
- return style.content === '"--MENU--"' || style.content === '"--MENU-WINDOW--"'
271
+ const value = style.getPropertyValue(__WINDOW_TYPE_BODY_NAME)
272
+
273
+ return value === '"--MENU--"' || value === '"--MENU-WINDOW--"'
271
274
  }
272
275
 
273
276
  return false
@@ -1,6 +1,7 @@
1
1
  import type { ComputedRef, Ref } from 'vue'
2
2
  import type { ConstrBind } from '@dxtmisha/functional'
3
3
 
4
+ import type { AriaList } from '../../types/ariaTypes'
4
5
  import type { WindowExpose } from './types'
5
6
  import type { WindowPropsBasic } from './props'
6
7
 
@@ -116,26 +117,29 @@ export type WindowControlBasic = {
116
117
  * Control item data for window management/
117
118
  * Данные элемента управления для управления окном
118
119
  */
119
- export type WindowControlItem = WindowControlBasic
120
- & {
121
- /** CSS class string/ Строка CSS класса */
122
- class: string
123
- /** Reactive open state/ Реактивное состояние открытия */
124
- open: Ref<boolean>
125
- /** Click event handler/ Обработчик события клика */
126
- onclick: WindowEventClick
127
- /** Context menu event handler/ Обработчик события контекстного меню */
128
- oncontextmenu: WindowEventClick
129
- /** Binding properties/ Свойства привязки */
130
- binds: {
131
- /** Binding class/ Класс привязки */
120
+ export type WindowControlItem
121
+ = WindowControlBasic
122
+ & {
123
+ /** CSS class string/ Строка CSS класса */
132
124
  class: string
133
- /** Click event handler for binding/ Обработчик события клика для привязки */
125
+ /** Reactive open state/ Реактивное состояние открытия */
126
+ open: Ref<boolean>
127
+ /** Click event handler/ Обработчик события клика */
134
128
  onclick: WindowEventClick
135
- /** Context menu event handler for binding/ Обработчик события контекстного меню для привязки */
129
+ /** Context menu event handler/ Обработчик события контекстного меню */
136
130
  oncontextmenu: WindowEventClick
131
+ /** Binding properties/ Свойства привязки */
132
+ binds:
133
+ AriaList
134
+ & {
135
+ /** Binding class/ Класс привязки */
136
+ class: string
137
+ /** Click event handler for binding/ Обработчик события клика для привязки */
138
+ onclick: WindowEventClick
139
+ /** Context menu event handler for binding/ Обработчик события контекстного меню для привязки */
140
+ oncontextmenu: WindowEventClick
141
+ }
137
142
  }
138
- }
139
143
 
140
144
  /**
141
145
  * Component map for including the Window component/
@@ -184,3 +188,9 @@ export interface WindowPropsInclude<
184
188
  /** Additional attributes for Window component/ Дополнительные атрибуты для компонента Window */
185
189
  windowAttrs?: ConstrBind<Window>
186
190
  }
191
+
192
+ /**
193
+ * CSS variable name for MotionTransform body type/
194
+ * Имя CSS‑переменной для типа тела MotionTransform
195
+ */
196
+ export const __WINDOW_TYPE_BODY_NAME = '--sys-type-body'