@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,86 @@
1
+ import type { ComputedRef, Ref } from 'vue'
2
+ import type { ConstrClass } from '@dxtmisha/functional'
3
+
4
+ import type { MotionTransformControlItem, MotionTransformEmitOptions } from './basicTypes'
5
+
6
+ /**
7
+ * Interface for describing which components need to be connected for work.
8
+ *
9
+ * Интерфейс для описания, какие компоненты надо подключить для работы.
10
+ */
11
+ export type MotionTransformComponents = {}
12
+
13
+ /**
14
+ * Type describing available events.
15
+ *
16
+ * Тип, описывающий доступные события.
17
+ */
18
+ export type MotionTransformEmits = {
19
+ 'transform': [
20
+ event: Event | undefined,
21
+ options: MotionTransformEmitOptions
22
+ ]
23
+ 'transformLite': [
24
+ options: MotionTransformEmitOptions
25
+ ]
26
+
27
+ 'update:open': [value: boolean]
28
+ 'update:modelOpen': [value: boolean]
29
+ }
30
+
31
+ /**
32
+ * Type describing available properties.
33
+ *
34
+ * Тип, описывающий доступные свойства.
35
+ */
36
+ export interface MotionTransformExpose {
37
+ /** Reactive state of window visibility/ Реактивное состояние видимости окна */
38
+ open: Ref<boolean>
39
+
40
+ /**
41
+ * Computed state indicating if component is shown or being prepared for display/
42
+ * Вычисляемое состояние, указывающее отображается ли компонент или готовится к отображению
43
+ */
44
+ isShow: ComputedRef<boolean>
45
+
46
+ /** Sets open state/ Устанавливает состояние открытия */
47
+ setOpen(open: boolean): void
48
+
49
+ /** Transition to opening state/ Переход в состояние открытия */
50
+ toOpen(): void
51
+
52
+ /** Transition to closing state/ Переход в состояние закрытия */
53
+ toClose(): void
54
+
55
+ /** Toggles open state/ Переключает состояние открытия */
56
+ toggle(): void
57
+ }
58
+
59
+ /**
60
+ * Type describing available slots.
61
+ *
62
+ * Тип, описывающий доступные слоты.
63
+ */
64
+ export interface MotionTransformSlots {
65
+ /** Head slot for controls/ Слот шапки для элементов управления */
66
+ head? (props: MotionTransformControlItem): any
67
+ /** Body slot for content/ Слот тела для содержимого */
68
+ body? (props: MotionTransformControlItem): any
69
+ }
70
+
71
+ /**
72
+ * Type describing subclasses.
73
+ *
74
+ * Тип, описывающий подклассы.
75
+ */
76
+ export type MotionTransformClasses = {
77
+ main: ConstrClass
78
+ // :classes [!] System label / Системная метка
79
+ context: string
80
+ head: string
81
+ body: string
82
+ backdrop: string
83
+ scrim: string
84
+ clickNone: string
85
+ // :classes [!] System label / Системная метка
86
+ }
@@ -0,0 +1,184 @@
1
+ import { computed, ref, type Ref, type ToRefs, watch } from 'vue'
2
+ import { type ConstrClassObject, type ConstrEmit, type ConstrStyles, DesignComp, toNumber } from '@dxtmisha/functional'
3
+
4
+ import type { ProgressComponents, ProgressEmits, ProgressSlots } from './types'
5
+ import type { ProgressProps } from './props'
6
+
7
+ /**
8
+ * Base class for working with the loader.
9
+ *
10
+ * Базовый класс для работы с загрузчиком.
11
+ */
12
+ export class Progress {
13
+ protected timeout?: any
14
+
15
+ readonly hide = ref<boolean>(false)
16
+ readonly visible = ref<boolean>(false)
17
+
18
+ /**
19
+ * Constructor
20
+ * @param props input data/ входные данные
21
+ * @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
22
+ * @param element input element/ элемент ввода
23
+ * @param classDesign design name/ название дизайна
24
+ * @param className class name/ название класса
25
+ * @param components object for working with components/ объект для работы с компонентами
26
+ * @param slots object for working with slots/ объект для работы со слотами
27
+ * @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
28
+ */
29
+ constructor(
30
+ protected readonly props: ProgressProps,
31
+ protected readonly refs: ToRefs<ProgressProps>,
32
+ protected readonly element: Ref<HTMLElement | undefined>,
33
+ protected readonly classDesign: string,
34
+ protected readonly className: string,
35
+ protected readonly components?: DesignComp<ProgressComponents, ProgressProps>,
36
+ protected readonly slots?: ProgressSlots,
37
+ protected readonly emits?: ConstrEmit<ProgressEmits>
38
+ ) {
39
+ watch(
40
+ [refs.visible],
41
+ this.switch,
42
+ { immediate: true }
43
+ )
44
+ }
45
+
46
+ /**
47
+ * Returns the tag type for the element.
48
+ *
49
+ * Возвращает тип тега для элемента.
50
+ */
51
+ readonly tag = computed<string>(() => this.props.circular ? 'svg' : 'div')
52
+
53
+ /**
54
+ * Returns values.
55
+ *
56
+ * Возвращает значения.
57
+ */
58
+ readonly value = computed(() => toNumber(this.props.value ?? 0))
59
+
60
+ /**
61
+ * Returns values in percentages.
62
+ *
63
+ * Возвращает значения в процентах.
64
+ */
65
+ readonly valueInPercent = computed<string | null>(() => {
66
+ if (this.isValue()) {
67
+ const value = this.value.value
68
+ const percent = (100 / this.getMax() * value)
69
+
70
+ if (this.props.circular) {
71
+ return percent.toString()
72
+ }
73
+
74
+ return `${100 - percent}%`
75
+ }
76
+
77
+ return null
78
+ })
79
+
80
+ /**
81
+ * Values for the class.
82
+ *
83
+ * Значения для класса.
84
+ */
85
+ readonly classes = computed<ConstrClassObject>(() => {
86
+ return {
87
+ [`${this.className}--hide`]: this.hide.value,
88
+ [`${this.className}--visible`]: this.visible.value,
89
+ [`${this.className}--value`]: this.isValue()
90
+ }
91
+ })
92
+
93
+ /**
94
+ * Returns the property for style.
95
+ *
96
+ * Возвращает свойство для стиля.
97
+ */
98
+ readonly styles = computed<ConstrStyles>(() => {
99
+ return {
100
+ [`--${this.className}-sys-value`]: this.valueInPercent.value
101
+ }
102
+ })
103
+
104
+ /**
105
+ * Monitors the animation event for hiding the element.
106
+ *
107
+ * Следит за событием анимации для скрытия элемента.
108
+ * @param animationName A string containing the value of the animation-name that generated the animation/
109
+ * Является DOMString содержащей значения animation-name CSS-свойств связанных с transition
110
+ */
111
+ readonly onAnimation = ({ animationName }: AnimationEvent): void => {
112
+ if (animationName.match('-hidden')) {
113
+ this.hide.value = false
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Checks if there are any values.
119
+ *
120
+ * Проверяет, есть ли значения.
121
+ */
122
+ isValue(): this is { props: { value: number } } {
123
+ return this.value.value > 0
124
+ }
125
+
126
+ /**
127
+ * Returns the maximum allowable value.
128
+ *
129
+ * Возвращает максимально допустимое значение.
130
+ */
131
+ getMax(): number {
132
+ return toNumber(this.props.max ?? 100)
133
+ }
134
+
135
+ /**
136
+ * The mode is triggered when the visible property changes to change the output status of the element.
137
+ *
138
+ * Метод срабатывает при изменении свойства visible для изменения статуса вывода элемента.
139
+ */
140
+ protected readonly switch = (): void => {
141
+ const visible = this.props.visible
142
+
143
+ clearTimeout(this.timeout)
144
+
145
+ if (this.isValue()) {
146
+ this.reset()
147
+ } else if (Boolean(this.visible.value) !== visible) {
148
+ const delay = toNumber(this.props.delay ?? 0)
149
+ const delayHide = toNumber(this.props.delayHide ?? 0)
150
+
151
+ if (visible && delay) {
152
+ this.timeout = setTimeout(() => this.update(), delay)
153
+ } else if (!visible && delayHide) {
154
+ this.timeout = setTimeout(() => this.update(), delayHide)
155
+ } else {
156
+ this.update()
157
+ }
158
+ }
159
+ }
160
+
161
+ /**
162
+ * Updates dependent data when the visible property changes.
163
+ *
164
+ * Обновляет зависимые данные при изменении свойства visible.
165
+ */
166
+ protected update(): this {
167
+ this.hide.value = !this.props.visible
168
+ this.visible.value = Boolean(this.props.visible)
169
+
170
+ return this
171
+ }
172
+
173
+ /**
174
+ * Resets values to their initial state.
175
+ *
176
+ * Сбрасывает значения до начального положения.
177
+ */
178
+ protected reset(): this {
179
+ this.hide.value = false
180
+ this.visible.value = false
181
+
182
+ return this
183
+ }
184
+ }
@@ -0,0 +1,175 @@
1
+ import { h, type VNode } from 'vue'
2
+ import {
3
+ type ConstrOptions,
4
+ type ConstrStyles,
5
+ DesignConstructorAbstract
6
+ } from '@dxtmisha/functional'
7
+
8
+ import { Progress } from './Progress'
9
+
10
+ import {
11
+ type ProgressPropsBasic
12
+ } from './props'
13
+ import {
14
+ type ProgressClasses,
15
+ type ProgressComponents,
16
+ type ProgressEmits,
17
+ type ProgressExpose,
18
+ type ProgressSlots
19
+ } from './types'
20
+
21
+ /**
22
+ * ProgressDesign
23
+ */
24
+ export class ProgressDesign<
25
+ COMP extends ProgressComponents,
26
+ EXPOSE extends ProgressExpose,
27
+ CLASSES extends ProgressClasses,
28
+ P extends ProgressPropsBasic
29
+ > extends DesignConstructorAbstract<
30
+ HTMLDivElement,
31
+ COMP,
32
+ ProgressEmits,
33
+ EXPOSE,
34
+ ProgressSlots,
35
+ CLASSES,
36
+ P
37
+ > {
38
+ protected readonly item: Progress
39
+
40
+ /**
41
+ * Constructor
42
+ * @param name class name/ название класса
43
+ * @param props properties/ свойства
44
+ * @param options list of additional parameters/ список дополнительных параметров
45
+ */
46
+ constructor(
47
+ name: string,
48
+ props: Readonly<P>,
49
+ options?: ConstrOptions<COMP, ProgressEmits, P>
50
+ ) {
51
+ super(
52
+ name,
53
+ props,
54
+ options
55
+ )
56
+
57
+ this.item = new Progress(
58
+ this.props,
59
+ this.refs,
60
+ this.element,
61
+ this.getDesign(),
62
+ this.getName(),
63
+ this.components,
64
+ this.slots,
65
+ this.emits
66
+ )
67
+
68
+ this.init()
69
+ }
70
+
71
+ /**
72
+ * Render elements for the circular loader.
73
+ *
74
+ * Рендер элементов для кругового загрузчика.
75
+ */
76
+ readonly renderCircle = (): VNode[] => {
77
+ if (this.props.circular) {
78
+ return [
79
+ h('circle', {
80
+ class: this.classes?.value.circleSub,
81
+ cx: '24',
82
+ cy: '24',
83
+ r: '20'
84
+ }),
85
+ h('circle', {
86
+ class: this.classes?.value.circle,
87
+ cx: '24',
88
+ cy: '24',
89
+ r: '20'
90
+ })
91
+ ]
92
+ }
93
+
94
+ return []
95
+ }
96
+
97
+ /**
98
+ * Render dot at the end.
99
+ *
100
+ * Рендер точки в конце.
101
+ */
102
+ readonly renderPoint = (): VNode[] => {
103
+ if (
104
+ this.props.linear
105
+ && this.props.point && (
106
+ this.props.value
107
+ || ((this.props as any).indeterminate) === 'type1'
108
+ )
109
+ ) {
110
+ return [h('span', { class: this.classes?.value.point })]
111
+ }
112
+
113
+ return []
114
+ }
115
+
116
+ /**
117
+ * Initialization of all the necessary properties for work
118
+ *
119
+ * Инициализация всех необходимых свойств для работы.
120
+ */
121
+ protected initExpose(): EXPOSE {
122
+ return {} as EXPOSE
123
+ }
124
+
125
+ /**
126
+ * Improvement of the obtained list of classes.
127
+ *
128
+ * Доработка полученного списка классов.
129
+ */
130
+ protected initClasses(): Partial<CLASSES> {
131
+ return {
132
+ main: this.item.classes.value,
133
+ ...{
134
+ // :classes [!] System label / Системная метка
135
+ circle: this.getSubClass('circle'),
136
+ circleSub: this.getSubClass('circleSub'),
137
+ point: this.getSubClass('point')
138
+ // :classes [!] System label / Системная метка
139
+ }
140
+ } as Partial<CLASSES>
141
+ }
142
+
143
+ /**
144
+ * Refinement of the received list of styles.
145
+ *
146
+ * Доработка полученного списка стилей.
147
+ */
148
+ protected initStyles(): ConstrStyles {
149
+ return this.item.styles.value
150
+ }
151
+
152
+ /**
153
+ * A method for rendering.
154
+ *
155
+ * Метод для рендеринга.
156
+ */
157
+ protected initRender(): VNode {
158
+ const children: any[] = [
159
+ ...this.renderCircle(),
160
+ ...this.renderPoint()
161
+ ]
162
+
163
+ return h(
164
+ this.item.tag.value,
165
+ {
166
+ ...this.getAttrs(),
167
+ class: this.classes?.value.main,
168
+ style: this.styles?.value,
169
+ viewBox: '0 0 48 48',
170
+ onAnimationend: this.item.onAnimation
171
+ },
172
+ children
173
+ )
174
+ }
175
+ }
@@ -0,0 +1,67 @@
1
+ import { computed, type VNode } from 'vue'
2
+ import { type ConstrBind, DesignComponents, getBind, getRef, type RefOrNormal } from '@dxtmisha/functional'
3
+
4
+ import type { ProgressComponentInclude, ProgressPropsInclude } from './basicTypes'
5
+ import type { ProgressProps } from './props'
6
+
7
+ /**
8
+ * The class returns data for working with the Progress component
9
+ *
10
+ * Класс возвращает данные для работы с компонентом Progress
11
+ */
12
+ export class ProgressInclude {
13
+ /**
14
+ * Constructor
15
+ * @param props input parameter/ входной параметр
16
+ * @param className class name/ название класса
17
+ * @param components object for working with components/ объект для работы с компонентами
18
+ * @param extra additional parameter or property name/ дополнительный параметр или имя свойства
19
+ */
20
+ constructor(
21
+ protected readonly props: ProgressPropsInclude,
22
+ protected readonly className: string,
23
+ protected readonly components?: DesignComponents<ProgressComponentInclude, ProgressPropsInclude>,
24
+ protected readonly extra?: RefOrNormal<ConstrBind<ProgressProps>>
25
+ ) {
26
+ }
27
+
28
+ /**
29
+ * Checks if data is available for the Progress component/ Проверяет, есть ли данные для компонента Progress
30
+ */
31
+ readonly is = computed<boolean>(() => Boolean(this.props.loading))
32
+
33
+ /**
34
+ * list of properties for the progress component/ список свойств для компонента Progress
35
+ */
36
+ readonly binds = computed(() => {
37
+ const extra = getRef(this.extra)
38
+
39
+ return getBind(
40
+ this.props.loading,
41
+ {
42
+ ...extra,
43
+ class: [extra?.class, `${this.className}__loading`]
44
+ },
45
+ 'visible'
46
+ )
47
+ })
48
+
49
+ /**
50
+ * Рендер компонента Progress
51
+ */
52
+ readonly render = (): VNode[] => {
53
+ if (
54
+ this.components
55
+ && this.props.loading
56
+ ) {
57
+ return this.components.render(
58
+ 'progress',
59
+ this.binds.value,
60
+ undefined,
61
+ 'progress'
62
+ )
63
+ }
64
+
65
+ return []
66
+ }
67
+ }
@@ -0,0 +1,12 @@
1
+ import type { ConstrBind } from '@dxtmisha/functional'
2
+ import type { ProgressPropsBasic } from './props'
3
+
4
+ export type ProgressComponentInclude = {
5
+ progress?: object
6
+ }
7
+
8
+ export interface ProgressPropsInclude<
9
+ Progress extends ProgressPropsBasic = ProgressPropsBasic
10
+ > {
11
+ loading?: boolean | ConstrBind<Progress>
12
+ }
@@ -0,0 +1,6 @@
1
+ export * from './Progress'
2
+ export * from './ProgressDesign'
3
+ export * from './ProgressInclude'
4
+ export * from './props'
5
+ export * from './types'
6
+ export * from './basicTypes'
@@ -0,0 +1,47 @@
1
+ {
2
+ "height": {
3
+ "_type": "var"
4
+ },
5
+ "background-color": {
6
+ "_type": "var"
7
+ },
8
+ "border-radius": {
9
+ "_type": "var"
10
+ },
11
+ "opacity": {
12
+ "_type": "var"
13
+ },
14
+ "#circle": {},
15
+ "#circleSub": {},
16
+ "point": {
17
+ "_type": "state",
18
+ "_subclass": true
19
+ },
20
+ "~linear": {
21
+ "_category": "appearance",
22
+ "_default": true
23
+ },
24
+ "~circular": {
25
+ "inset": {
26
+ "_type": "var"
27
+ },
28
+ "width": {
29
+ "_type": "var"
30
+ },
31
+ "_category": "appearance"
32
+ },
33
+ "~indeterminate": {
34
+ "~type1": {},
35
+ "~type2": {},
36
+ "~type3": {},
37
+ "_default": "type1"
38
+ },
39
+ "~position": {
40
+ "~top": {},
41
+ "~bottom": {},
42
+ "~static": {},
43
+ "_default": "top"
44
+ },
45
+ "~dense": {},
46
+ "~inverse": {}
47
+ }
@@ -0,0 +1,54 @@
1
+ interface ProgressPropsToken {
2
+ // :type [!] System label / Системная метка
3
+ point?: boolean
4
+ linear?: boolean
5
+ circular?: boolean
6
+ indeterminate?: 'type1' | 'type2' | 'type3'
7
+ position?: 'top' | 'bottom' | 'static'
8
+ dense?: boolean
9
+ inverse?: boolean
10
+ // :type [!] System label / Системная метка
11
+ }
12
+
13
+ export interface ProgressPropsBasic {
14
+ // Status
15
+ visible?: boolean
16
+
17
+ // Value
18
+ value?: number | string
19
+ max?: number | string
20
+
21
+ // Style
22
+ linear?: boolean
23
+ circular?: boolean
24
+ point?: boolean
25
+
26
+ delay?: number | string
27
+ delayHide?: number | string
28
+ }
29
+
30
+ /**
31
+ * Type describing incoming properties.
32
+ *
33
+ * Тип, описывающий входящие свойства.
34
+ */
35
+ export interface ProgressProps extends ProgressPropsBasic, ProgressPropsToken {
36
+ }
37
+
38
+ /**
39
+ * Default value for property.
40
+ *
41
+ * Значение по умолчанию для свойства.
42
+ */
43
+ export const defaultsProgress = {
44
+ max: 100,
45
+ delay: 360,
46
+ delayHide: 200,
47
+ ...{
48
+ // :default [!] System label / Системная метка
49
+ linear: true,
50
+ indeterminate: 'type1',
51
+ position: 'top'
52
+ // :default [!] System label / Системная метка
53
+ }
54
+ }