@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,250 @@
1
+ import { computed, ref, watch } from 'vue'
2
+
3
+ import { MotionTransformElement } from './MotionTransformElement'
4
+ import { MotionTransformSize } from './MotionTransformSize'
5
+
6
+ import type { MotionTransformProps } from './props'
7
+
8
+ /**
9
+ * State management class.
10
+ *
11
+ * Класс управления состоянием.
12
+ */
13
+ export class MotionTransformState {
14
+ /** Open state flag/ Флаг состояния открытия */
15
+ readonly open = ref<boolean>(false)
16
+ /** Temporary show state for animation/ Временный флаг показа для анимации */
17
+ readonly show = ref<boolean>(false)
18
+ /** Teleportation state flag/ Флаг состояния телепортации */
19
+ readonly teleport = ref<boolean>(false)
20
+
21
+ /**
22
+ * Constructor.
23
+ *
24
+ * Конструктор.
25
+ * @param props input data/ входные данные
26
+ * @param element class object for managing an element/ объект класса для управления элементом
27
+ * @param size class object for managing sizes/ объект класса для управления размерами
28
+ */
29
+ constructor(
30
+ props: MotionTransformProps,
31
+ protected element: MotionTransformElement,
32
+ protected size: MotionTransformSize
33
+ ) {
34
+ watch([this.element.element, this.open], this.makeOpen)
35
+ watch([this.element.element, this.teleport], this.makeTeleport)
36
+
37
+ if (props.open) {
38
+ requestAnimationFrame(() => {
39
+ this.open.value = Boolean(props.open)
40
+ this.calculations()
41
+ })
42
+ }
43
+ }
44
+
45
+ /** Computed open flag/ Вычисляемый флаг открытия */
46
+ readonly isOpen = computed(() => this.open.value)
47
+
48
+ /** Checks if the element should be shown/ Проверяет, следует ли показывать элемент */
49
+ readonly isShow = computed<boolean>(() => this.open.value || this.show.value)
50
+
51
+ /**
52
+ * Checks if teleportation should be disabled.
53
+ *
54
+ * Проверяет, нужно ли отключить телепортацию.
55
+ */
56
+ isTeleportClose(): boolean {
57
+ return this.teleport.value && !this.open.value
58
+ }
59
+
60
+ /**
61
+ * Changes in the state of the open window.
62
+ *
63
+ * Изменения состояния открытого окна.
64
+ * @param open opening status/ статус открытия
65
+ * @param animation opening with animation/ открытие с анимацией
66
+ */
67
+ set(
68
+ open: boolean,
69
+ animation = true
70
+ ) {
71
+ if (this.open.value !== open) {
72
+ if (
73
+ animation
74
+ && this.element.isAnimation()
75
+ ) {
76
+ this.show.value = true
77
+
78
+ requestAnimationFrame(() => {
79
+ this.calculations()
80
+ this.make()
81
+
82
+ requestAnimationFrame(() => {
83
+ this.open.value = open
84
+ })
85
+ })
86
+ } else {
87
+ this.open.value = open
88
+ this.calculations()
89
+ }
90
+
91
+ setTimeout(() => this.reset(), 480)
92
+ }
93
+ }
94
+
95
+ /**
96
+ * Status switching.
97
+ *
98
+ * Переключение статуса.
99
+ */
100
+ toggle(): void {
101
+ this.set(!this.open.value)
102
+ }
103
+
104
+ /**
105
+ * Resets the data to the initial state.
106
+ *
107
+ * Сбрасывает данные в первичное состояние.
108
+ */
109
+ reset(): this {
110
+ if (this.show.value) {
111
+ this.show.value = false
112
+
113
+ if (this.isTeleportClose()) {
114
+ this.teleport.value = false
115
+ }
116
+
117
+ this.make()
118
+ }
119
+
120
+ return this
121
+ }
122
+
123
+ /**
124
+ * Update of the display class.
125
+ *
126
+ * Обновление класса показа.
127
+ */
128
+ protected readonly makeShow = () => {
129
+ const element = this.element.getElement()
130
+
131
+ if (element) {
132
+ element.dataset.show = this.show.value ? 'show' : 'none'
133
+ }
134
+ }
135
+
136
+ /**
137
+ * Update of the opening class.
138
+ *
139
+ * Обновление класса открытия.
140
+ */
141
+ protected readonly makeOpen = () => {
142
+ const element = this.element.getElement()
143
+
144
+ if (element) {
145
+ element.dataset.open = this.open.value ? 'open' : 'none'
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Update of the teleport class.
151
+ *
152
+ * Обновление класса телепорта.
153
+ */
154
+ protected readonly makeTeleport = () => {
155
+ const element = this.element.getElement()
156
+
157
+ if (element) {
158
+ element.dataset.teleport = this.teleport.value ? 'teleport' : 'none'
159
+ }
160
+ }
161
+
162
+ /**
163
+ * Calculations before animation.
164
+ *
165
+ * Вычисления перед анимацией.
166
+ */
167
+ protected calculations(): void {
168
+ this.size.update()
169
+ this.toTeleport()
170
+ }
171
+
172
+ /**
173
+ * Animation control.
174
+ *
175
+ * Управление анимацией.
176
+ */
177
+ protected toTeleport(): void {
178
+ if (this.element.isWindow()) {
179
+ this.teleport.value = this.isShow.value
180
+ }
181
+ }
182
+
183
+ /**
184
+ * Updates the list of styles.
185
+ *
186
+ * Обновляет список стилей.
187
+ */
188
+ protected make() {
189
+ this.makeShow()
190
+ this.makeMain()
191
+ this.makeContext()
192
+ }
193
+
194
+ /**
195
+ * Updates the list of styles for the main element.
196
+ *
197
+ * Обновляет список стилей для главного элемента.
198
+ */
199
+ protected makeMain(): void {
200
+ const element = this.element.getElement()
201
+
202
+ if (element) {
203
+ const style = this.element.style
204
+
205
+ if (this.show.value) {
206
+ element.style.setProperty(style.top, this.size.top)
207
+ element.style.setProperty(style.left, this.size.left)
208
+ element.style.setProperty(style.height, this.size.height)
209
+ element.style.setProperty(style.scale, this.size.scale)
210
+ element.style.setProperty(style.headWidth, this.size.headWidth)
211
+ element.style.setProperty(style.headHeight, this.size.headHeight)
212
+ element.style.setProperty(style.headScale, this.size.headScale)
213
+ element.style.setProperty(style.bodyHeight, this.size.bodyHeight)
214
+ } else {
215
+ element.style.removeProperty(style.top)
216
+ element.style.removeProperty(style.left)
217
+ element.style.removeProperty(style.height)
218
+ element.style.removeProperty(style.scale)
219
+ element.style.removeProperty(style.headWidth)
220
+ element.style.removeProperty(style.headHeight)
221
+ element.style.removeProperty(style.headScale)
222
+ element.style.removeProperty(style.bodyHeight)
223
+ }
224
+ }
225
+ }
226
+
227
+ /**
228
+ * Updates the list of styles for the context element.
229
+ *
230
+ * Обновляет список стилей для элемента контекста.
231
+ */
232
+ protected makeContext(): void {
233
+ const context = this.element.getElementContext()
234
+
235
+ if (context) {
236
+ const style = this.element.style
237
+
238
+ if (
239
+ this.element.isWindow()
240
+ && this.isShow.value
241
+ ) {
242
+ context.style.setProperty(style.contextWidth, this.size.contextWidth)
243
+ context.style.setProperty(style.contextHeight, this.size.contextHeight)
244
+ } else {
245
+ context.style.removeProperty(style.contextWidth)
246
+ context.style.removeProperty(style.contextHeight)
247
+ }
248
+ }
249
+ }
250
+ }
@@ -0,0 +1,121 @@
1
+ import type { ComputedRef, Ref } from 'vue'
2
+ import type { ConstrBind } from '@dxtmisha/functional'
3
+
4
+ import type { MotionTransformEmits, MotionTransformExpose } from './types'
5
+ import type { MotionTransformProps } from './props'
6
+
7
+ /**
8
+ * Options for MotionTransform events/
9
+ * Опции для событий MotionTransform
10
+ */
11
+ export type MotionTransformEmitOptions = {
12
+ /** Source area type (head, body, top, script)/ Тип области источника (head, body, top, script) */
13
+ type: 'head' | 'body' | 'top' | 'script'
14
+ /** Open state after transform/ Состояние открытия после трансформации */
15
+ open: boolean
16
+ }
17
+
18
+ /**
19
+ * List of CSS classes for MotionTransform styling/
20
+ * Список CSS классов для стилизации MotionTransform
21
+ */
22
+ export type MotionTransformClassList = {
23
+ /** Show state class/ Класс состояния видимости */
24
+ show: string
25
+ /** Open state class/ Класс состояния открытия */
26
+ open: string
27
+ /** Window mode class/ Класс режима окна */
28
+ window: string
29
+
30
+ /** Click feedback class/ Класс отклика на клик */
31
+ click: string
32
+ /** Ignore element class/ Класс игнорирования элемента */
33
+ none: string
34
+ /** Global ignore class/ Глобальный класс игнорирования */
35
+ noneGlobal: string
36
+ /** Close trigger class/ Класс триггера закрытия */
37
+ close: string
38
+ }
39
+
40
+ /**
41
+ * Style variable names for MotionTransform layout/
42
+ * Имена стилевых переменных для раскладки MotionTransform
43
+ */
44
+ export type MotionTransformStyle = {
45
+ /** Context width CSS var/ CSS‑переменная ширины контекста */
46
+ contextWidth: string
47
+ /** Context height CSS var/ CSS‑переменная высоты контекста */
48
+ contextHeight: string
49
+ /** Head scale CSS var/ CSS‑переменная масштаба заголовка */
50
+ headScale: string
51
+ /** Top position CSS var/ CSS‑переменная верхней позиции */
52
+ top: string
53
+ /** Left position CSS var/ CSS‑переменная левой позиции */
54
+ left: string
55
+ /** Head width CSS var/ CSS‑переменная ширины заголовка */
56
+ headWidth: string
57
+ /** Height CSS var/ CSS‑переменная высоты */
58
+ height: string
59
+ /** Scale CSS var/ CSS‑переменная масштаба */
60
+ scale: string
61
+ /** Head height CSS var/ CSS‑переменная высоты заголовка */
62
+ headHeight: string
63
+ /** Body height CSS var/ CSS‑переменная высоты тела */
64
+ bodyHeight: string
65
+ }
66
+
67
+ /**
68
+ * Slot props passed to head/body slots/
69
+ * Параметры слота, передаваемые в head/body
70
+ */
71
+ export type MotionTransformControlItem = {
72
+ /** Reactive open state/ Реактивное состояние открытия */
73
+ isOpen: ComputedRef<boolean>
74
+ /** Visible or preparing to show/ Видим либо готовится к показу */
75
+ isShow: ComputedRef<boolean>
76
+ /** Helper CSS classes/ Вспомогательные CSS‑классы */
77
+ classes: MotionTransformClassList
78
+ }
79
+
80
+ /**
81
+ * Component map for including MotionTransform/
82
+ * Карта компонентов для подключения MotionTransform
83
+ */
84
+ export type MotionTransformComponentInclude = {
85
+ /** MotionTransform component key/ Ключ компонента MotionTransform */
86
+ motionTransform?: object
87
+ }
88
+
89
+ /**
90
+ * Event map for MotionTransform include/
91
+ * Карта событий для подключения MotionTransform
92
+ */
93
+ export type MotionTransformEmitsInclude = {
94
+ /** Transform event with native event and options/ Событие трансформации с нативным событием и опциями */
95
+ transform?: MotionTransformEmits['transform']
96
+ /** Lightweight transform event with options only/ Облегчённое событие трансформации только с опциями */
97
+ transformLite?: MotionTransformEmits['transformLite']
98
+ }
99
+
100
+ /**
101
+ * Interface for MotionTransform expose inclusion/
102
+ * Интерфейс для включения expose MotionTransform
103
+ */
104
+ export interface MotionTransformExposeInclude extends MotionTransformExpose {
105
+ motionTransformElement: Ref<ConstrBind<MotionTransformExpose> | undefined>
106
+ }
107
+
108
+ /**
109
+ * Props used to include and configure MotionTransform/
110
+ * Свойства для подключения и настройки MotionTransform
111
+ */
112
+ export interface MotionTransformPropsInclude {
113
+ /** Open state/ Состояние открытия */
114
+ open?: boolean
115
+ /** Click on head opens component/ Клик по заголовку открывает компонент */
116
+ clickOpen?: boolean
117
+ /** Auto close on outside click/ Авто‑закрытие при клике вне */
118
+ autoClose?: boolean
119
+ /** Additional attributes for MotionTransform/ Дополнительные атрибуты для MotionTransform */
120
+ motionTransformAttrs?: ConstrBind<MotionTransformProps>
121
+ }
@@ -0,0 +1,7 @@
1
+ export * from './MotionTransform'
2
+ export * from './MotionTransformDesign'
3
+ export * from './MotionTransformInclude'
4
+ export * from './MotionTransformClassesInclude'
5
+ export * from './props'
6
+ export * from './types'
7
+ export * from './basicTypes'
@@ -0,0 +1,35 @@
1
+ {
2
+ "z-index": {
3
+ "_type": "var"
4
+ },
5
+ "background-full": {
6
+ "_type": "var"
7
+ },
8
+ "background-color": {
9
+ "_type": "var"
10
+ },
11
+ "box-shadow": {
12
+ "_type": "var"
13
+ },
14
+ "#context": {},
15
+ "#head": {},
16
+ "#body": {},
17
+ "#backdrop": {},
18
+ "#scrim": {},
19
+ "#clickNone": {},
20
+ "~section": {},
21
+ "~animationHeadPosition": {
22
+ "~top": {},
23
+ "~toBottom": {},
24
+ "_default": "top"
25
+ },
26
+ "~adaptive": {
27
+ "~planeAlways": {
28
+ "content": "none"
29
+ },
30
+ "group|plane": {
31
+ "link|plane": "{??adaptive.planeAlways}",
32
+ "_type": "media-group"
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,50 @@
1
+ interface MotionTransformPropsToken {
2
+ // :type [!] System label / Системная метка
3
+ section?: boolean
4
+ animationHeadPosition?: 'top' | 'toBottom'
5
+ adaptive?: 'planeAlways'
6
+ // :type [!] System label / Системная метка
7
+ }
8
+
9
+ export interface MotionTransformPropsBasic {
10
+ // Status
11
+ 'open'?: boolean
12
+
13
+ // Value
14
+ 'ignore'?: HTMLElement | string
15
+ 'ignoreSelector'?: string
16
+
17
+ // Style
18
+ 'clickOpen'?: boolean
19
+ 'autoClose'?: boolean
20
+ 'animationShow'?: boolean
21
+
22
+ // Event
23
+ 'modelOpen'?: boolean
24
+ 'onUpdate:open'?: (value: boolean) => void
25
+ 'onUpdate:modelOpen'?: (value: boolean) => void
26
+ }
27
+
28
+ /**
29
+ * Type describing incoming properties.
30
+ *
31
+ * Тип, описывающий входящие свойства.
32
+ */
33
+ export interface MotionTransformProps extends MotionTransformPropsBasic, MotionTransformPropsToken {
34
+ }
35
+
36
+ /**
37
+ * Default value for property.
38
+ *
39
+ * Значение по умолчанию для свойства.
40
+ */
41
+ export const defaultsMotionTransform = {
42
+ clickOpen: true,
43
+ autoClose: true,
44
+ animationShow: true,
45
+ ...{
46
+ // :default [!] System label / Системная метка
47
+ animationHeadPosition: 'top'
48
+ // :default [!] System label / Системная метка
49
+ }
50
+ }
@@ -0,0 +1,180 @@
1
+ @use "@dxtmisha/styles/properties" as ui;
2
+
3
+ @mixin mixinMotionTransform {
4
+ @include ui.initByCustom('sys.left', auto);
5
+ @include ui.initByCustom('sys.top', auto);
6
+ @include ui.initByCustom('sys.height', auto);
7
+ @include ui.initByCustom('sys.scale', 1);
8
+ @include ui.initByCustom('sys.context.width', auto);
9
+ @include ui.initByCustom('sys.context.height', auto);
10
+ @include ui.initByCustom('sys.head.width', auto);
11
+ @include ui.initByCustom('sys.head.height', auto);
12
+ @include ui.initByCustom('sys.head.scale', 1);
13
+ @include ui.initByCustom('sys.body.height', auto);
14
+
15
+ position: relative;
16
+
17
+ height: ui.v('??sys.head.height', auto);
18
+
19
+ background-color: transparent;
20
+ box-shadow: none;
21
+
22
+ content: "--WINDOW--";
23
+
24
+ transition-property: background-color, box-shadow, height, transform, scale;
25
+ transition-timing-function: ui.v('d.ref.transitionFunction.e40i80');
26
+ transition-duration: ui.v('d.sys.transitionDuration.container.close');
27
+
28
+ &__context {
29
+ width: ui.v('??sys.context.width', auto);
30
+ height: ui.v('??sys.context.height', auto);
31
+
32
+ content: "--ANIMATION--";
33
+ }
34
+
35
+ &__head {
36
+ opacity: 1;
37
+ }
38
+
39
+ &__body {
40
+ position: absolute;
41
+ top: 0;
42
+ opacity: 0;
43
+
44
+ transition: opacity 67ms linear 50ms;
45
+ }
46
+
47
+ &__backdrop {
48
+ position: sticky;
49
+ top: 0;
50
+ }
51
+
52
+ &__background {
53
+ visibility: hidden;
54
+ position: fixed;
55
+ inset: 0;
56
+ opacity: 0;
57
+
58
+ transition-property: opacity, visibility;
59
+ transition-timing-function: ui.v('d.ref.transitionFunction.e40i80');
60
+ transition-duration: ui.v('d.sys.transitionDuration.container.close');
61
+ }
62
+
63
+ &[data-teleport="teleport"] {
64
+ position: fixed;
65
+ overflow-x: hidden;
66
+ overflow-y: auto;
67
+ @include ui.inset();
68
+ z-index: ui.v('??zIndex');
69
+
70
+ height: ui.v('??sys.height', auto);
71
+
72
+ background: ui.v('??backgroundFull');
73
+ @include ui.gradient(ui.v('??backgroundColor'));
74
+ @include ui.scale(ui.v('??sys.scale', 1));
75
+ transform-origin: ui.v('??sys.left', auto) ui.v('??sys.top', auto);
76
+
77
+ @include ui.subclass('head') {
78
+ width: ui.v('??sys.head.width', auto);
79
+
80
+ @include ui.scale(ui.v('??sys.head.scale', 1));
81
+ transform-origin: ui.dirLeft() top;
82
+ }
83
+ }
84
+
85
+ &[data-show="show"] {
86
+ overflow-y: hidden;
87
+
88
+ @include ui.subclass('head') {
89
+ transition: opacity 67ms linear 50ms, visibility 67ms linear 50ms;
90
+
91
+ > * {
92
+ margin-top: 0 !important;
93
+ }
94
+ }
95
+ }
96
+
97
+ &[data-open="open"] {
98
+ height: ui.v('??sys.body.height', auto);
99
+
100
+ @include ui.subclass('head') {
101
+ visibility: hidden;
102
+ position: absolute;
103
+ top: 0;
104
+ right: 0;
105
+ left: 0;
106
+ opacity: 0;
107
+ }
108
+
109
+ @include ui.subclass('body') {
110
+ position: static;
111
+ opacity: 1;
112
+
113
+ transition: opacity 60ms linear 60ms;
114
+ }
115
+
116
+ &[data-show="show"] {
117
+ @include ui.subclass('head') {
118
+ transition: opacity 60ms linear 60ms, visibility 60ms linear 60ms;
119
+ }
120
+ }
121
+
122
+ &[data-teleport="teleport"] {
123
+ height: 100%;
124
+
125
+ box-shadow: ui.v('??boxShadow');
126
+
127
+ @include ui.scale(none);
128
+
129
+ transition-duration: ui.v('d.sys.transitionDuration.container.open');
130
+ }
131
+ }
132
+
133
+ &--section {
134
+ @include ui.subclass('head') {
135
+ visibility: visible;
136
+ position: static;
137
+ opacity: 1;
138
+
139
+ transition-property: transform, scale;
140
+ transition-timing-function: ui.v('d.ref.transitionFunction.e40i80');
141
+ transition-duration: ui.v('d.sys.transitionDuration.container.close');
142
+ }
143
+
144
+ @include ui.subclass('body') {
145
+ position: static;
146
+ }
147
+
148
+ &[data-open="open"] {
149
+ @include ui.subclass('head') {
150
+ visibility: visible;
151
+ position: static;
152
+ opacity: 1;
153
+
154
+ @include ui.scale(none);
155
+
156
+ transition-property: transform, scale;
157
+ transition-timing-function: ui.v('d.ref.transitionFunction.e40i80');
158
+ transition-duration: ui.v('d.sys.transitionDuration.container.open');
159
+ }
160
+ }
161
+ }
162
+
163
+ &--animationHeadPosition--toBottom:not([data-teleport="teleport"]):not(&--section) {
164
+ &[data-show="show"] {
165
+ @include ui.subclass('head') {
166
+ position: absolute;
167
+ }
168
+ }
169
+
170
+ @include ui.subclass('body') {
171
+ top: auto;
172
+ bottom: 0;
173
+ }
174
+
175
+ @include ui.subclass('head') {
176
+ top: auto;
177
+ bottom: 0;
178
+ }
179
+ }
180
+ }