@dxtmisha/constructor 0.23.0

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 (311) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +136 -0
  3. package/package.json +124 -0
  4. package/src/classes/CaptionInclude.ts +71 -0
  5. package/src/classes/DescriptionInclude.ts +70 -0
  6. package/src/classes/EnabledInclude.ts +56 -0
  7. package/src/classes/EventClickInclude.ts +138 -0
  8. package/src/classes/LabelHighlightInclude.ts +90 -0
  9. package/src/classes/LabelInclude.ts +171 -0
  10. package/src/classes/LabelNumberInclude.ts +70 -0
  11. package/src/classes/ModelInclude.ts +49 -0
  12. package/src/classes/PrefixInclude.ts +71 -0
  13. package/src/classes/SuffixInclude.ts +71 -0
  14. package/src/classes/field/FieldAttributesInclude.ts +100 -0
  15. package/src/classes/field/FieldChangeInclude.ts +52 -0
  16. package/src/classes/field/FieldCodeInclude.ts +69 -0
  17. package/src/classes/field/FieldElementInclude.ts +97 -0
  18. package/src/classes/field/FieldInputCheckInclude.ts +128 -0
  19. package/src/classes/field/FieldMatchInclude.ts +101 -0
  20. package/src/classes/field/FieldPatternInclude.ts +42 -0
  21. package/src/classes/field/FieldTypeInclude.ts +42 -0
  22. package/src/classes/field/FieldValidationInclude.ts +196 -0
  23. package/src/classes/field/FieldValueInclude.ts +318 -0
  24. package/src/classes/field/FieldVisibilityInclude.ts +21 -0
  25. package/src/constructors/Badge/Badge.ts +73 -0
  26. package/src/constructors/Badge/BadgeDesign.tsx +127 -0
  27. package/src/constructors/Badge/BadgeInclude.ts +78 -0
  28. package/src/constructors/Badge/basicTypes.ts +15 -0
  29. package/src/constructors/Badge/index.ts +5 -0
  30. package/src/constructors/Badge/properties.json +36 -0
  31. package/src/constructors/Badge/props.ts +43 -0
  32. package/src/constructors/Badge/style.scss +83 -0
  33. package/src/constructors/Badge/types.ts +47 -0
  34. package/src/constructors/Bars/Bars.ts +188 -0
  35. package/src/constructors/Bars/BarsAction.ts +57 -0
  36. package/src/constructors/Bars/BarsDesign.tsx +229 -0
  37. package/src/constructors/Bars/BarsInclude.ts +116 -0
  38. package/src/constructors/Bars/basicTypes.ts +40 -0
  39. package/src/constructors/Bars/index.ts +6 -0
  40. package/src/constructors/Bars/properties.json +6 -0
  41. package/src/constructors/Bars/props.ts +63 -0
  42. package/src/constructors/Bars/style.scss +18 -0
  43. package/src/constructors/Bars/types.ts +58 -0
  44. package/src/constructors/Button/Button.ts +88 -0
  45. package/src/constructors/Button/ButtonDesign.tsx +136 -0
  46. package/src/constructors/Button/ButtonInclude.ts +80 -0
  47. package/src/constructors/Button/basicTypes.ts +12 -0
  48. package/src/constructors/Button/index.ts +5 -0
  49. package/src/constructors/Button/properties.json +84 -0
  50. package/src/constructors/Button/props.ts +55 -0
  51. package/src/constructors/Button/style.scss +96 -0
  52. package/src/constructors/Button/types.ts +56 -0
  53. package/src/constructors/Cell/Cell.ts +127 -0
  54. package/src/constructors/Cell/CellDesign.tsx +203 -0
  55. package/src/constructors/Cell/basicTypes.ts +6 -0
  56. package/src/constructors/Cell/index.ts +5 -0
  57. package/src/constructors/Cell/properties.json +52 -0
  58. package/src/constructors/Cell/props.ts +61 -0
  59. package/src/constructors/Cell/style.scss +80 -0
  60. package/src/constructors/Cell/types.ts +68 -0
  61. package/src/constructors/Chip/Chip.ts +33 -0
  62. package/src/constructors/Chip/ChipDesign.tsx +26 -0
  63. package/src/constructors/Chip/basicTypes.ts +0 -0
  64. package/src/constructors/Chip/index.ts +4 -0
  65. package/src/constructors/Chip/properties.json +3 -0
  66. package/src/constructors/Chip/props.ts +44 -0
  67. package/src/constructors/Chip/style.scss +6 -0
  68. package/src/constructors/Chip/types.ts +53 -0
  69. package/src/constructors/Field/Field.ts +147 -0
  70. package/src/constructors/Field/FieldDesign.tsx +372 -0
  71. package/src/constructors/Field/FieldIcons.ts +99 -0
  72. package/src/constructors/Field/FieldInclude.ts +72 -0
  73. package/src/constructors/Field/FieldSize.ts +93 -0
  74. package/src/constructors/Field/basicTypes.ts +90 -0
  75. package/src/constructors/Field/index.ts +5 -0
  76. package/src/constructors/Field/properties.json +86 -0
  77. package/src/constructors/Field/props.ts +88 -0
  78. package/src/constructors/Field/style.scss +556 -0
  79. package/src/constructors/Field/types.ts +78 -0
  80. package/src/constructors/FieldCounter/FieldCounter.ts +75 -0
  81. package/src/constructors/FieldCounter/FieldCounterDesign.tsx +122 -0
  82. package/src/constructors/FieldCounter/FieldCounterInclude.ts +98 -0
  83. package/src/constructors/FieldCounter/basicTypes.ts +25 -0
  84. package/src/constructors/FieldCounter/index.ts +6 -0
  85. package/src/constructors/FieldCounter/properties.json +3 -0
  86. package/src/constructors/FieldCounter/props.ts +32 -0
  87. package/src/constructors/FieldCounter/style.scss +4 -0
  88. package/src/constructors/FieldCounter/types.ts +42 -0
  89. package/src/constructors/FieldLabel/FieldLabel.ts +93 -0
  90. package/src/constructors/FieldLabel/FieldLabelDesign.tsx +156 -0
  91. package/src/constructors/FieldLabel/FieldLabelInclude.ts +91 -0
  92. package/src/constructors/FieldLabel/basicTypes.ts +34 -0
  93. package/src/constructors/FieldLabel/index.ts +6 -0
  94. package/src/constructors/FieldLabel/properties.json +4 -0
  95. package/src/constructors/FieldLabel/props.ts +40 -0
  96. package/src/constructors/FieldLabel/style.scss +10 -0
  97. package/src/constructors/FieldLabel/types.ts +49 -0
  98. package/src/constructors/FieldMessage/FieldMessage.ts +79 -0
  99. package/src/constructors/FieldMessage/FieldMessageDesign.tsx +159 -0
  100. package/src/constructors/FieldMessage/FieldMessageInclude.ts +105 -0
  101. package/src/constructors/FieldMessage/FieldMessageMessage.ts +54 -0
  102. package/src/constructors/FieldMessage/basicTypes.ts +27 -0
  103. package/src/constructors/FieldMessage/index.ts +6 -0
  104. package/src/constructors/FieldMessage/properties.json +9 -0
  105. package/src/constructors/FieldMessage/props.ts +40 -0
  106. package/src/constructors/FieldMessage/style.scss +13 -0
  107. package/src/constructors/FieldMessage/types.ts +49 -0
  108. package/src/constructors/Icon/Icon.ts +105 -0
  109. package/src/constructors/Icon/IconDesign.tsx +157 -0
  110. package/src/constructors/Icon/IconInclude.ts +64 -0
  111. package/src/constructors/Icon/IconLiteInclude.ts +121 -0
  112. package/src/constructors/Icon/IconTrailingInclude.ts +106 -0
  113. package/src/constructors/Icon/basicTypes.ts +50 -0
  114. package/src/constructors/Icon/index.ts +8 -0
  115. package/src/constructors/Icon/properties.json +25 -0
  116. package/src/constructors/Icon/props.ts +54 -0
  117. package/src/constructors/Icon/style.scss +106 -0
  118. package/src/constructors/Icon/types.ts +46 -0
  119. package/src/constructors/Image/Image.ts +184 -0
  120. package/src/constructors/Image/ImageAdaptiveGroup.ts +230 -0
  121. package/src/constructors/Image/ImageAdaptiveItem.ts +295 -0
  122. package/src/constructors/Image/ImageBackground.ts +127 -0
  123. package/src/constructors/Image/ImageCalculation.ts +184 -0
  124. package/src/constructors/Image/ImageCalculationList.ts +61 -0
  125. package/src/constructors/Image/ImageCoordinator.ts +104 -0
  126. package/src/constructors/Image/ImageData.ts +99 -0
  127. package/src/constructors/Image/ImageDesign.tsx +137 -0
  128. package/src/constructors/Image/ImageFile.ts +137 -0
  129. package/src/constructors/Image/ImageInclude.ts +53 -0
  130. package/src/constructors/Image/ImagePdf.ts +44 -0
  131. package/src/constructors/Image/ImagePosition.ts +49 -0
  132. package/src/constructors/Image/ImageType.ts +83 -0
  133. package/src/constructors/Image/basicTypes.ts +70 -0
  134. package/src/constructors/Image/index.ts +5 -0
  135. package/src/constructors/Image/properties.json +17 -0
  136. package/src/constructors/Image/props.ts +66 -0
  137. package/src/constructors/Image/style.scss +77 -0
  138. package/src/constructors/Image/types.ts +49 -0
  139. package/src/constructors/List/List.ts +267 -0
  140. package/src/constructors/List/ListControl.ts +194 -0
  141. package/src/constructors/List/ListDesign.tsx +382 -0
  142. package/src/constructors/List/ListFocus.ts +196 -0
  143. package/src/constructors/List/ListGo.ts +283 -0
  144. package/src/constructors/List/ListSearch.ts +113 -0
  145. package/src/constructors/List/basicTypes.ts +3 -0
  146. package/src/constructors/List/index.ts +5 -0
  147. package/src/constructors/List/properties.json +16 -0
  148. package/src/constructors/List/props.ts +76 -0
  149. package/src/constructors/List/style.scss +36 -0
  150. package/src/constructors/List/types.ts +66 -0
  151. package/src/constructors/ListGroup/ListGroup.ts +53 -0
  152. package/src/constructors/ListGroup/ListGroupDesign.tsx +180 -0
  153. package/src/constructors/ListGroup/ListGroupOpen.ts +56 -0
  154. package/src/constructors/ListGroup/basicTypes.ts +3 -0
  155. package/src/constructors/ListGroup/index.ts +5 -0
  156. package/src/constructors/ListGroup/properties.json +15 -0
  157. package/src/constructors/ListGroup/props.ts +30 -0
  158. package/src/constructors/ListGroup/style.scss +18 -0
  159. package/src/constructors/ListGroup/types.ts +51 -0
  160. package/src/constructors/ListItem/ListItem.ts +115 -0
  161. package/src/constructors/ListItem/ListItemDesign.tsx +196 -0
  162. package/src/constructors/ListItem/basicTypes.ts +3 -0
  163. package/src/constructors/ListItem/index.ts +5 -0
  164. package/src/constructors/ListItem/properties.json +52 -0
  165. package/src/constructors/ListItem/props.ts +78 -0
  166. package/src/constructors/ListItem/style.scss +152 -0
  167. package/src/constructors/ListItem/types.ts +78 -0
  168. package/src/constructors/ListMenu/ListMenu.ts +52 -0
  169. package/src/constructors/ListMenu/ListMenuDesign.tsx +127 -0
  170. package/src/constructors/ListMenu/basicTypes.ts +3 -0
  171. package/src/constructors/ListMenu/index.ts +5 -0
  172. package/src/constructors/ListMenu/properties.json +19 -0
  173. package/src/constructors/ListMenu/props.ts +34 -0
  174. package/src/constructors/ListMenu/style.scss +5 -0
  175. package/src/constructors/ListMenu/types.ts +54 -0
  176. package/src/constructors/Mask/Mask.ts +321 -0
  177. package/src/constructors/Mask/MaskBuffer.ts +89 -0
  178. package/src/constructors/Mask/MaskCharacter.ts +192 -0
  179. package/src/constructors/Mask/MaskCharacterLength.ts +40 -0
  180. package/src/constructors/Mask/MaskData.ts +287 -0
  181. package/src/constructors/Mask/MaskDate.ts +157 -0
  182. package/src/constructors/Mask/MaskDesign.tsx +217 -0
  183. package/src/constructors/Mask/MaskEmit.ts +140 -0
  184. package/src/constructors/Mask/MaskEvent.ts +347 -0
  185. package/src/constructors/Mask/MaskFocus.ts +49 -0
  186. package/src/constructors/Mask/MaskFormat.ts +216 -0
  187. package/src/constructors/Mask/MaskItem.ts +218 -0
  188. package/src/constructors/Mask/MaskMatch.ts +73 -0
  189. package/src/constructors/Mask/MaskPattern.ts +123 -0
  190. package/src/constructors/Mask/MaskRight.ts +43 -0
  191. package/src/constructors/Mask/MaskRubber.ts +156 -0
  192. package/src/constructors/Mask/MaskRubberItem.ts +96 -0
  193. package/src/constructors/Mask/MaskRubberTransition.ts +50 -0
  194. package/src/constructors/Mask/MaskSelection.ts +208 -0
  195. package/src/constructors/Mask/MaskSpecial.ts +179 -0
  196. package/src/constructors/Mask/MaskType.ts +103 -0
  197. package/src/constructors/Mask/MaskValidation.ts +102 -0
  198. package/src/constructors/Mask/MaskValue.ts +225 -0
  199. package/src/constructors/Mask/MaskValueBasic.ts +87 -0
  200. package/src/constructors/Mask/MaskView.ts +169 -0
  201. package/src/constructors/Mask/basicTypes.ts +49 -0
  202. package/src/constructors/Mask/index.ts +5 -0
  203. package/src/constructors/Mask/properties.json +29 -0
  204. package/src/constructors/Mask/props.ts +70 -0
  205. package/src/constructors/Mask/style.scss +104 -0
  206. package/src/constructors/Mask/types.ts +71 -0
  207. package/src/constructors/Menu/Menu.ts +179 -0
  208. package/src/constructors/Menu/MenuDesign.tsx +244 -0
  209. package/src/constructors/Menu/MenuInclude.ts +110 -0
  210. package/src/constructors/Menu/MenuRequest.ts +101 -0
  211. package/src/constructors/Menu/MenuSearch.ts +49 -0
  212. package/src/constructors/Menu/MenuValue.ts +73 -0
  213. package/src/constructors/Menu/MenuWindow.ts +89 -0
  214. package/src/constructors/Menu/basicTypes.ts +41 -0
  215. package/src/constructors/Menu/index.ts +6 -0
  216. package/src/constructors/Menu/properties.json +17 -0
  217. package/src/constructors/Menu/props.ts +79 -0
  218. package/src/constructors/Menu/style.scss +17 -0
  219. package/src/constructors/Menu/types.ts +79 -0
  220. package/src/constructors/MotionTransform/MotionTransform.ts +87 -0
  221. package/src/constructors/MotionTransform/MotionTransformClassesInclude.ts +38 -0
  222. package/src/constructors/MotionTransform/MotionTransformDesign.tsx +242 -0
  223. package/src/constructors/MotionTransform/MotionTransformElement.ts +220 -0
  224. package/src/constructors/MotionTransform/MotionTransformEvent.ts +118 -0
  225. package/src/constructors/MotionTransform/MotionTransformGo.ts +47 -0
  226. package/src/constructors/MotionTransform/MotionTransformInclude.ts +123 -0
  227. package/src/constructors/MotionTransform/MotionTransformSize.ts +97 -0
  228. package/src/constructors/MotionTransform/MotionTransformState.ts +250 -0
  229. package/src/constructors/MotionTransform/basicTypes.ts +121 -0
  230. package/src/constructors/MotionTransform/index.ts +7 -0
  231. package/src/constructors/MotionTransform/properties.json +35 -0
  232. package/src/constructors/MotionTransform/props.ts +50 -0
  233. package/src/constructors/MotionTransform/style.scss +180 -0
  234. package/src/constructors/MotionTransform/types.ts +86 -0
  235. package/src/constructors/Progress/Progress.ts +184 -0
  236. package/src/constructors/Progress/ProgressDesign.tsx +175 -0
  237. package/src/constructors/Progress/ProgressInclude.ts +67 -0
  238. package/src/constructors/Progress/basicTypes.ts +12 -0
  239. package/src/constructors/Progress/index.ts +6 -0
  240. package/src/constructors/Progress/properties.json +47 -0
  241. package/src/constructors/Progress/props.ts +54 -0
  242. package/src/constructors/Progress/style.scss +374 -0
  243. package/src/constructors/Progress/types.ts +43 -0
  244. package/src/constructors/Ripple/Ripple.ts +46 -0
  245. package/src/constructors/Ripple/RippleDesign.tsx +112 -0
  246. package/src/constructors/Ripple/RippleInclude.ts +39 -0
  247. package/src/constructors/Ripple/RippleItem.ts +62 -0
  248. package/src/constructors/Ripple/basicTypes.ts +3 -0
  249. package/src/constructors/Ripple/index.ts +6 -0
  250. package/src/constructors/Ripple/properties.json +9 -0
  251. package/src/constructors/Ripple/props.ts +28 -0
  252. package/src/constructors/Ripple/style.scss +62 -0
  253. package/src/constructors/Ripple/types.ts +41 -0
  254. package/src/constructors/Scrollbar/Scrollbar.ts +66 -0
  255. package/src/constructors/Scrollbar/ScrollbarBorder.ts +243 -0
  256. package/src/constructors/Scrollbar/ScrollbarDesign.tsx +126 -0
  257. package/src/constructors/Scrollbar/ScrollbarInclude.ts +80 -0
  258. package/src/constructors/Scrollbar/basicTypes.ts +42 -0
  259. package/src/constructors/Scrollbar/index.ts +5 -0
  260. package/src/constructors/Scrollbar/properties.json +33 -0
  261. package/src/constructors/Scrollbar/props.ts +37 -0
  262. package/src/constructors/Scrollbar/style.scss +117 -0
  263. package/src/constructors/Scrollbar/types.ts +52 -0
  264. package/src/constructors/Skeleton/Skeleton.ts +86 -0
  265. package/src/constructors/Skeleton/SkeletonDesign.tsx +117 -0
  266. package/src/constructors/Skeleton/SkeletonInclude.ts +61 -0
  267. package/src/constructors/Skeleton/basicTypes.ts +16 -0
  268. package/src/constructors/Skeleton/const.ts +1 -0
  269. package/src/constructors/Skeleton/index.ts +6 -0
  270. package/src/constructors/Skeleton/properties.json +24 -0
  271. package/src/constructors/Skeleton/props.ts +28 -0
  272. package/src/constructors/Skeleton/style.scss +112 -0
  273. package/src/constructors/Skeleton/types.ts +46 -0
  274. package/src/constructors/Window/Window.ts +212 -0
  275. package/src/constructors/Window/WindowClasses.ts +180 -0
  276. package/src/constructors/Window/WindowClassesInclude.ts +39 -0
  277. package/src/constructors/Window/WindowClient.ts +93 -0
  278. package/src/constructors/Window/WindowCoordinates.ts +257 -0
  279. package/src/constructors/Window/WindowDesign.tsx +278 -0
  280. package/src/constructors/Window/WindowElement.ts +84 -0
  281. package/src/constructors/Window/WindowEmit.ts +52 -0
  282. package/src/constructors/Window/WindowEvent.ts +157 -0
  283. package/src/constructors/Window/WindowFlash.ts +70 -0
  284. package/src/constructors/Window/WindowHook.ts +110 -0
  285. package/src/constructors/Window/WindowInclude.ts +134 -0
  286. package/src/constructors/Window/WindowOpen.ts +292 -0
  287. package/src/constructors/Window/WindowOrigin.ts +85 -0
  288. package/src/constructors/Window/WindowPersistent.ts +89 -0
  289. package/src/constructors/Window/WindowPosition.ts +358 -0
  290. package/src/constructors/Window/WindowStatic.ts +102 -0
  291. package/src/constructors/Window/WindowStatus.ts +138 -0
  292. package/src/constructors/Window/WindowStyles.ts +78 -0
  293. package/src/constructors/Window/WindowVerification.ts +287 -0
  294. package/src/constructors/Window/basicTypes.ts +186 -0
  295. package/src/constructors/Window/index.ts +7 -0
  296. package/src/constructors/Window/properties.json +236 -0
  297. package/src/constructors/Window/props.ts +88 -0
  298. package/src/constructors/Window/style.scss +262 -0
  299. package/src/constructors/Window/types.ts +124 -0
  300. package/src/functions/getClassTegAStatic.ts +8 -0
  301. package/src/library.ts +36 -0
  302. package/src/types/captionTypes.ts +15 -0
  303. package/src/types/descriptionTypes.ts +15 -0
  304. package/src/types/enabledTypes.ts +9 -0
  305. package/src/types/eventClickTypes.ts +51 -0
  306. package/src/types/fieldTypes.ts +282 -0
  307. package/src/types/labelTypes.ts +30 -0
  308. package/src/types/modelTypes.ts +23 -0
  309. package/src/types/prefixTypes.ts +15 -0
  310. package/src/types/suffixTypes.ts +15 -0
  311. package/src/vite-env.d.ts +1 -0
@@ -0,0 +1,157 @@
1
+ import { watch } from 'vue'
2
+ import { EventItem, getMouseClientX, getMouseClientY } from '@dxtmisha/functional'
3
+
4
+ import { WindowStatus } from './WindowStatus'
5
+ import { WindowClient } from './WindowClient'
6
+ import { WindowFlash } from './WindowFlash'
7
+ import { WindowOpen } from './WindowOpen'
8
+ import { WindowVerification } from './WindowVerification'
9
+
10
+ import type { WindowProps } from './props'
11
+
12
+ /**
13
+ * A class for working with events.
14
+ *
15
+ * Класс для работы с событиями.
16
+ */
17
+ export class WindowEvent {
18
+ protected readonly event: EventItem<HTMLBodyElement, MouseEvent>
19
+
20
+ /**
21
+ * Constructor
22
+ * @param props input data/ входные данные
23
+ * @param status object for working with statuses/ объект для работы со статусами
24
+ * @param client object for working with mouse pointer coordinates/ объект для работы с координатами указателя мыши
25
+ * @param flash class object for working with fast window opening/ объект класса для работы с быстрым открытием окна
26
+ * @param open the class object for working with the status of closing or opening the window/ объект класса для работы со статусом закрытия или открытия окна
27
+ * @param verification an object for working with the check for changing the status of opening or closing/ объект для работы с проверкой изменения статуса открытия или закрытия
28
+ */
29
+ constructor(
30
+ protected readonly props: WindowProps,
31
+ protected readonly status: WindowStatus,
32
+ protected readonly client: WindowClient,
33
+ protected readonly flash: WindowFlash,
34
+ protected readonly open: WindowOpen,
35
+ protected readonly verification: WindowVerification
36
+ ) {
37
+ this.event = new EventItem<HTMLBodyElement, MouseEvent>(
38
+ 'body',
39
+ ['click', 'contextmenu'],
40
+ this.onGlobal
41
+ )
42
+
43
+ watch(
44
+ [
45
+ this.open.item,
46
+ this.status.item
47
+ ],
48
+ () => this.toggle()
49
+ )
50
+ }
51
+
52
+ /**
53
+ * Events of pressing a control element.
54
+ *
55
+ * События нажатия на элемент управления.
56
+ * @param event event object/ объект события
57
+ */
58
+ readonly onClick = async (event: MouseEvent & TouchEvent): Promise<void> => {
59
+ if (!this.props.contextmenu) {
60
+ await this.on(event)
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Events of pressing the right mouse button on a control element.
66
+ *
67
+ * События нажатия на правую кнопку мыши на элемент управления.
68
+ * @param event event object/ объект события
69
+ */
70
+ readonly onContextmenu = async (event: MouseEvent & TouchEvent): Promise<void> => {
71
+ if (this.props.contextmenu) {
72
+ event.preventDefault()
73
+ await this.on(event)
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Event of animation end when closing the window.
79
+ *
80
+ * Событие окончания анимации при закрытии окна.
81
+ */
82
+ readonly onTransition = (): void => this.open.closeForEvent()
83
+
84
+ /**
85
+ * Starts listening to global events.
86
+ *
87
+ * Стартует прослушивание глобальных событий.
88
+ */
89
+ start(): this {
90
+ this.event.start()
91
+ return this
92
+ }
93
+
94
+ /**
95
+ * Stop the global event.
96
+ *
97
+ * Остановить глобальное событие.
98
+ */
99
+ stop(): this {
100
+ this.event.stop()
101
+ return this
102
+ }
103
+
104
+ /**
105
+ * Changes the event listening status depending on the window's open status.
106
+ *
107
+ * Изменяет статус прослушивания события в зависимости от статуса открытия окна.
108
+ */
109
+ toggle(): this {
110
+ if (
111
+ this.open.item.value
112
+ && this.status.isOpen()
113
+ ) {
114
+ this.start()
115
+ } else {
116
+ this.stop()
117
+ }
118
+
119
+ return this
120
+ }
121
+
122
+ /**
123
+ * Event activation.
124
+ *
125
+ * Активация события.
126
+ * @param event event object/ объект события
127
+ */
128
+ protected async on(event: MouseEvent & TouchEvent): Promise<void> {
129
+ this.client.set(
130
+ getMouseClientX(event),
131
+ getMouseClientY(event)
132
+ )
133
+
134
+ await this.verification.update(event.target as HTMLElement)
135
+ }
136
+
137
+ /**
138
+ * Callback of the event when pressing any area for checking and changing the opening state.
139
+ *
140
+ * Callback события при нажатии на любую область для проверки и изменения состояния открытия.
141
+ * @param event event instance/ экземпляр события
142
+ */
143
+ protected readonly onGlobal = async (event?: Event): Promise<void> => {
144
+ if (
145
+ !event
146
+ || (event.type === 'click' && (!this.props.contextmenu || this.open.item.value))
147
+ || (event.type === 'contextmenu' && this.props.contextmenu)
148
+ ) {
149
+ if (this.open.item.value) {
150
+ this.flash.setControl(event?.target as HTMLElement)
151
+ await this.verification.update(event?.target as HTMLElement)
152
+ } else {
153
+ this.event.stop()
154
+ }
155
+ }
156
+ }
157
+ }
@@ -0,0 +1,70 @@
1
+ import { WindowClasses } from './WindowClasses'
2
+
3
+ import type { WindowProps } from './props'
4
+ import { WindowStatusItem } from './basicTypes'
5
+
6
+ /**
7
+ * The class for working with the flash parameter. The flash property is
8
+ * responsible for disabling the animation when opening the window. Also,
9
+ * the animation is disabled when there are already open windows.
10
+ *
11
+ * Класс для работы с параметром flash. Свойство flash отвечает за отключение
12
+ * анимации при открытии окна. А также отключается анимация, когда уже есть
13
+ * открытые окна.
14
+ */
15
+ export class WindowFlash {
16
+ protected control: boolean = false
17
+
18
+ /**
19
+ * Constructor
20
+ * @param props input data/ входные данные
21
+ * @param classes an object for working with classes and searching for elements/ объект для работы с классами и поиском элементов
22
+ */
23
+
24
+ constructor(
25
+ protected readonly props: WindowProps,
26
+ protected readonly classes: WindowClasses
27
+ ) {
28
+ }
29
+
30
+ /**
31
+ * Is the flash property active.
32
+ *
33
+ * Активно ли свойство flash.
34
+ */
35
+ is(): boolean {
36
+ return Boolean(this.props.flash)
37
+ }
38
+
39
+ /**
40
+ * Checks whether the animation needs to be disabled.
41
+ *
42
+ * Проверяет, надо ли отключить анимацию.
43
+ */
44
+ isOpen(): boolean {
45
+ return this.is() || this.control
46
+ }
47
+
48
+ /**
49
+ * Checks whether the animation needs to be disabled when closing.
50
+ *
51
+ * Проверяет, надо ли отключить анимацию при закрытии.
52
+ */
53
+ isClose(): boolean {
54
+ return this.is()
55
+ || Boolean(
56
+ document.querySelector(`.${this.classes.getClassStatus(WindowStatusItem.hide)}`)
57
+ )
58
+ }
59
+
60
+ /**
61
+ * Change the value of the control parameter.
62
+ *
63
+ * Изменить значение параметра control.
64
+ * @param target the element that gets focus on click/ элемент, который получает фокус при клике
65
+ */
66
+ setControl(target?: HTMLElement): this {
67
+ this.control = target?.closest<HTMLElement>(`.${this.classes.list.control}`)?.dataset.window === this.classes.getId()
68
+ return this
69
+ }
70
+ }
@@ -0,0 +1,110 @@
1
+ import { executePromise } from '@dxtmisha/functional'
2
+
3
+ import type { WindowProps } from './props'
4
+
5
+ /**
6
+ * A class for working with hooks when opening and closing a window.
7
+ *
8
+ * Класс для работы с хуками при открытии и закрытии окна.
9
+ */
10
+ export class WindowHook {
11
+ /**
12
+ * Constructor
13
+ * @param props input data/ входные данные
14
+ */
15
+ constructor(
16
+ protected readonly props: WindowProps
17
+ ) {
18
+ }
19
+
20
+ /**
21
+ * Hook for preparing elements before opening/closing.
22
+ *
23
+ * Хук для подготовки элементов перед открытием/закрытием.
24
+ */
25
+ async preparation(): Promise<void> {
26
+ if (this.props.preparation) {
27
+ await executePromise(this.props.preparation)
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Hook before opening/closing.
33
+ *
34
+ * Хук перед открытием/закрытием.
35
+ * @param open current state of the window/ текущее состояние окна
36
+ */
37
+ async before(open: boolean) {
38
+ if (open) {
39
+ return await this.beforeOpening()
40
+ }
41
+
42
+ return await this.beforeClosing()
43
+ }
44
+
45
+ /**
46
+ * Hook before opening.
47
+ *
48
+ * Хук перед открытием.
49
+ */
50
+ async beforeOpening(): Promise<boolean> {
51
+ if (this.props.beforeOpening) {
52
+ return await executePromise(this.props.beforeOpening)
53
+ }
54
+
55
+ return true
56
+ }
57
+
58
+ /**
59
+ * Hook before closing.
60
+ *
61
+ * Хук перед закрытием.
62
+ */
63
+ async beforeClosing(): Promise<boolean> {
64
+ if (this.props.beforeClosing) {
65
+ return await executePromise(this.props.beforeClosing)
66
+ }
67
+
68
+ return true
69
+ }
70
+
71
+ /**
72
+ * Hook after opening/closing.
73
+ *
74
+ * Хук после открытия/закрытия.
75
+ * @param open current state of the window/ текущее состояние окна
76
+ */
77
+ async after(open: boolean): Promise<boolean> {
78
+ if (open) {
79
+ return await this.opening()
80
+ }
81
+
82
+ return await this.closing()
83
+ }
84
+
85
+ /**
86
+ * Hook after opening.
87
+ *
88
+ * Хук после открытия.
89
+ */
90
+ async opening(): Promise<boolean> {
91
+ if (this.props.opening) {
92
+ return await executePromise(this.props.opening)
93
+ }
94
+
95
+ return false
96
+ }
97
+
98
+ /**
99
+ * Hook after closing.
100
+ *
101
+ * Хук после закрытия.
102
+ */
103
+ async closing(): Promise<boolean> {
104
+ if (this.props.closing) {
105
+ return await executePromise(this.props.closing)
106
+ }
107
+
108
+ return false
109
+ }
110
+ }
@@ -0,0 +1,134 @@
1
+ import { computed, ref, type VNode } from 'vue'
2
+ import {
3
+ type ConstrBind, type ConstrEmit,
4
+ DesignComponents,
5
+ getRef,
6
+ type RefOrNormal,
7
+ toBind
8
+ } from '@dxtmisha/functional'
9
+
10
+ import type { WindowProps } from './props'
11
+ import type { WindowExpose, WindowSlots } from './types'
12
+ import type {
13
+ WindowComponentInclude,
14
+ WindowEmitOptions,
15
+ WindowEmitsInclude, WindowExposeInclude,
16
+ WindowPropsInclude
17
+ } from './basicTypes'
18
+
19
+ /**
20
+ * The class returns data for working with the Window component
21
+ *
22
+ * Класс возвращает данные для работы с компонентом Window
23
+ */
24
+ export class WindowInclude<
25
+ Props extends WindowPropsInclude = WindowPropsInclude,
26
+ PropsExtra extends ConstrBind<WindowProps> = ConstrBind<WindowProps>
27
+ > {
28
+ /**
29
+ * Constructor
30
+ * @param props input parameter/ входной параметр
31
+ * @param className class name/ название класса
32
+ * @param components object for working with components/ объект для работы с компонентами
33
+ * @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
34
+ * @param extra additional parameter or property name/ дополнительный параметр или имя свойства
35
+ * @param index index identifier/ идентификатор индекса
36
+ */
37
+ constructor(
38
+ protected readonly props: Readonly<Props>,
39
+ protected readonly className: string,
40
+ protected readonly components?: DesignComponents<WindowComponentInclude, Props>,
41
+ protected readonly emits?: ConstrEmit<WindowEmitsInclude>,
42
+ protected readonly extra?: RefOrNormal<PropsExtra>,
43
+ protected readonly index?: string
44
+ ) {
45
+ }
46
+
47
+ /** Reference to window element expose/ Ссылка на expose элемента окна */
48
+ readonly element = ref<ConstrBind<WindowExpose> | undefined>()
49
+
50
+ /** Computed bindings for the window/ Вычисляемые привязки для окна */
51
+ readonly binds = computed<PropsExtra>(() => {
52
+ const props = toBind<PropsExtra>(
53
+ getRef(this.extra) ?? {},
54
+ this.props.windowAttrs ?? {}
55
+ )
56
+
57
+ return {
58
+ ...props,
59
+
60
+ disabled: this.props.disabled,
61
+ autoClose: this.props.autoClose,
62
+
63
+ preparation: this.getPreparation,
64
+ opening: this.getOpening,
65
+ closing: this.getClosing
66
+ }
67
+ })
68
+
69
+ /**
70
+ * Expose helpers for window state and actions/
71
+ * Вспомогательные методы expose для состояния и действий окна
72
+ */
73
+ readonly expose: WindowExposeInclude = {
74
+ id: computed(() => String(this.element.value?.id)),
75
+ open: computed(() => Boolean(this.element.value?.open)),
76
+ control: computed(() => this.element.value?.control),
77
+ setOpen: async (open: boolean) => this.element.value?.setOpen(open),
78
+ toOpen: async () => this.element.value?.toOpen(),
79
+ toClose: async () => this.element.value?.toClose(),
80
+ toggle: async () => this.element.value?.toggle(),
81
+
82
+ windowElement: this.element
83
+ }
84
+
85
+ /**
86
+ * Render the Window component with slots/
87
+ * Рендер компонента Window со слотами
88
+ * @param slotsChildren slots passed to the window/ слоты, передаваемые окну
89
+ * @param attrs additional attributes/ дополнительные атрибуты
90
+ */
91
+ readonly render = (
92
+ slotsChildren: WindowSlots,
93
+ attrs?: Record<string, any>
94
+ ): VNode[] => {
95
+ if (this.components) {
96
+ return this.components.render(
97
+ 'window',
98
+ {
99
+ ...toBind(
100
+ attrs ?? {},
101
+ this.binds.value
102
+ ),
103
+ ref: this.element,
104
+ onWindow: this.onWindow
105
+ },
106
+ slotsChildren as unknown as Record<string, any>,
107
+ this.index
108
+ )
109
+ }
110
+
111
+ return []
112
+ }
113
+
114
+ /** Returns preparation result/ Возвращает результат preparation */
115
+ protected readonly getPreparation = () =>
116
+ getRef(this.extra)?.preparation?.() ?? this.props.windowAttrs?.preparation?.()
117
+
118
+ /** Returns opening result/ Возвращает результат opening */
119
+ protected readonly getOpening = () =>
120
+ getRef(this.extra)?.opening?.() ?? this.props.windowAttrs?.opening?.() ?? true
121
+
122
+ /** Returns closing result/ Возвращает результат closing */
123
+ protected readonly getClosing = () =>
124
+ getRef(this.extra)?.closing?.() ?? this.props.windowAttrs?.closing?.() ?? true
125
+
126
+ /**
127
+ * Emits 'window' event upward/
128
+ * Поднимает событие 'window' наверх
129
+ * @param options event payload/ параметры события
130
+ */
131
+ protected readonly onWindow = (options: WindowEmitOptions) => {
132
+ this.emits?.('window', options)
133
+ }
134
+ }