@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,122 @@
1
+ import { h, type VNode } from 'vue'
2
+ import {
3
+ type ConstrOptions,
4
+ type ConstrStyles,
5
+ DesignConstructorAbstract
6
+ } from '@dxtmisha/functional'
7
+
8
+ import { FieldCounter } from './FieldCounter'
9
+
10
+ import {
11
+ type FieldCounterPropsBasic
12
+ } from './props'
13
+ import {
14
+ type FieldCounterClasses,
15
+ type FieldCounterComponents,
16
+ type FieldCounterEmits,
17
+ type FieldCounterExpose,
18
+ type FieldCounterSlots
19
+ } from './types'
20
+
21
+ /**
22
+ * FieldCounterDesign
23
+ */
24
+ export class FieldCounterDesign<
25
+ COMP extends FieldCounterComponents,
26
+ EXPOSE extends FieldCounterExpose,
27
+ CLASSES extends FieldCounterClasses,
28
+ P extends FieldCounterPropsBasic
29
+ > extends DesignConstructorAbstract<
30
+ HTMLDivElement,
31
+ COMP,
32
+ FieldCounterEmits,
33
+ EXPOSE,
34
+ FieldCounterSlots,
35
+ CLASSES,
36
+ P
37
+ > {
38
+ protected readonly item: FieldCounter
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, FieldCounterEmits, P>
50
+ ) {
51
+ super(
52
+ name,
53
+ props,
54
+ options
55
+ )
56
+
57
+ this.item = new FieldCounter(
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
+ * Initialization of all the necessary properties for work
73
+ *
74
+ * Инициализация всех необходимых свойств для работы.
75
+ */
76
+ protected initExpose(): EXPOSE {
77
+ return {} as EXPOSE
78
+ }
79
+
80
+ /**
81
+ * Improvement of the obtained list of classes.
82
+ *
83
+ * Доработка полученного списка классов.
84
+ */
85
+ protected initClasses(): Partial<CLASSES> {
86
+ return {
87
+ main: {},
88
+ ...{
89
+ // :classes [!] System label / Системная метка
90
+ // :classes [!] System label / Системная метка
91
+ }
92
+ } as Partial<CLASSES>
93
+ }
94
+
95
+ /**
96
+ * Refinement of the received list of styles.
97
+ *
98
+ * Доработка полученного списка стилей.
99
+ */
100
+ protected initStyles(): ConstrStyles {
101
+ return {}
102
+ }
103
+
104
+ /**
105
+ * A method for rendering.
106
+ *
107
+ * Метод для рендеринга.
108
+ */
109
+ protected initRender(): VNode | undefined {
110
+ if (this.item.is.value) {
111
+ return h(
112
+ 'div', {
113
+ ...this.getAttrs(),
114
+ class: this.classes?.value.main,
115
+ innerHTML: this.item.item.value
116
+ }
117
+ )
118
+ }
119
+
120
+ return undefined
121
+ }
122
+ }
@@ -0,0 +1,98 @@
1
+ import { computed, type VNode } from 'vue'
2
+ import {
3
+ type ConstrBind,
4
+ DesignComponents,
5
+ getRef,
6
+ isFilled,
7
+ type RefOrNormal,
8
+ toBinds
9
+ } from '@dxtmisha/functional'
10
+
11
+ import type {
12
+ FieldCounterComponentInclude,
13
+ FieldCounterPropsInclude
14
+ } from './basicTypes'
15
+ import type { FieldCounterProps } from './props'
16
+
17
+ /**
18
+ * The class returns data for working with the FieldCounter component
19
+ *
20
+ * Класс возвращает данные для работы с компонентом FieldCounter
21
+ */
22
+ export class FieldCounterInclude<
23
+ Props extends FieldCounterPropsInclude = FieldCounterPropsInclude,
24
+ PropsExtra extends ConstrBind<FieldCounterProps> = ConstrBind<FieldCounterProps>
25
+ > {
26
+ /**
27
+ * Constructor
28
+ * @param props input parameter/ входной параметр
29
+ * @param className class name/ название класса
30
+ * @param components object for working with components/ объект для работы с компонентами
31
+ * @param extra additional parameter or property name/ дополнительный параметр или имя свойства
32
+ * @param index index identifier/ идентификатор индекса
33
+ */
34
+ constructor(
35
+ protected readonly props: Readonly<Props>,
36
+ protected readonly className: string,
37
+ protected readonly components?: DesignComponents<FieldCounterComponentInclude, Props>,
38
+ protected readonly extra?: RefOrNormal<PropsExtra>,
39
+ protected readonly index?: string
40
+ ) {
41
+ }
42
+
43
+ /** Checks if counter should be displayed/ Проверяет, надо ли отображать счетчик */
44
+ readonly isCounter = computed<boolean>(() =>
45
+ Boolean(
46
+ this.props.counterShow && (
47
+ isFilled(this.props.counter)
48
+ || isFilled(this.props.maxlength)
49
+ )
50
+ )
51
+ )
52
+
53
+ /** Computed bindings for FieldCounter/ Вычисляемые привязки для FieldCounter */
54
+ readonly binds = computed<PropsExtra>(() => {
55
+ return toBinds<PropsExtra>(
56
+ getRef(this.extra),
57
+ {
58
+ counter: this.props.counter,
59
+ maxlength: this.props.maxlength,
60
+ template: this.props.counterTemplate
61
+ },
62
+ this.props.fieldCounterAttrs
63
+ )
64
+ })
65
+
66
+ /** Intermediate bindings for FieldCounter/ Промежуточные привязки для FieldCounter */
67
+ readonly bindsIntermediary = computed<FieldCounterPropsInclude>(() => {
68
+ return {
69
+ counter: this.props.counter,
70
+ counterShow: this.props.counterShow,
71
+ counterTemplate: this.props.counterTemplate,
72
+ maxlength: this.props.maxlength,
73
+ fieldCounterAttrs: this.props.fieldCounterAttrs
74
+ }
75
+ })
76
+
77
+ /**
78
+ * Render the FieldCounter component/
79
+ * Рендер компонента FieldCounter
80
+ */
81
+ readonly render = (): VNode[] => {
82
+ if (this.components && this.isCounter.value) {
83
+ return this.components.render(
84
+ 'fieldCounter',
85
+ {
86
+ ...toBinds(
87
+ this.binds.value,
88
+ { class: `${this.className}__fieldCounter` }
89
+ )
90
+ },
91
+ undefined,
92
+ this.index
93
+ )
94
+ }
95
+
96
+ return []
97
+ }
98
+ }
@@ -0,0 +1,25 @@
1
+ import type { ConstrBind } from '@dxtmisha/functional'
2
+
3
+ import type { FieldCounterPropsBasic } from './props'
4
+
5
+ /**
6
+ * Interface for describing which components need to be connected for FieldCounter work/
7
+ * Интерфейс для описания, какие компоненты надо подключить для работы FieldCounter
8
+ */
9
+ export type FieldCounterComponentInclude = {
10
+ fieldCounter: object
11
+ }
12
+
13
+ /**
14
+ * Properties that can be passed to FieldCounterInclude/
15
+ * Свойства, которые можно передать в FieldCounterInclude
16
+ */
17
+ export interface FieldCounterPropsInclude<
18
+ FieldCounter extends FieldCounterPropsBasic = FieldCounterPropsBasic
19
+ > {
20
+ counter?: FieldCounterPropsBasic['counter']
21
+ counterShow?: boolean
22
+ counterTemplate?: FieldCounterPropsBasic['template']
23
+ maxlength?: FieldCounterPropsBasic['maxlength']
24
+ fieldCounterAttrs?: ConstrBind<FieldCounter>
25
+ }
@@ -0,0 +1,6 @@
1
+ export * from './FieldCounter'
2
+ export * from './FieldCounterDesign'
3
+ export * from './FieldCounterInclude'
4
+ export * from './props'
5
+ export * from './types'
6
+ export * from './basicTypes'
@@ -0,0 +1,3 @@
1
+ {
2
+ "white-space": "nowrap"
3
+ }
@@ -0,0 +1,32 @@
1
+ interface FieldCounterPropsToken {
2
+ // :type [!] System label / Системная метка
3
+ // :type [!] System label / Системная метка
4
+ }
5
+
6
+ export interface FieldCounterPropsBasic {
7
+ // Style
8
+ counter?: string | number
9
+ maxlength?: string | number
10
+
11
+ template?: string
12
+ }
13
+
14
+ /**
15
+ * Type describing incoming properties.
16
+ *
17
+ * Тип, описывающий входящие свойства.
18
+ */
19
+ export interface FieldCounterProps extends FieldCounterPropsBasic, FieldCounterPropsToken {
20
+ }
21
+
22
+ /**
23
+ * Default value for property.
24
+ *
25
+ * Значение по умолчанию для свойства.
26
+ */
27
+ export const defaultsFieldCounter = {
28
+ ...{
29
+ // :default [!] System label / Системная метка
30
+ // :default [!] System label / Системная метка
31
+ }
32
+ }
@@ -0,0 +1,4 @@
1
+ @use "@dxtmisha/styles/properties" as ui;
2
+
3
+ @mixin mixinFieldCounter {
4
+ }
@@ -0,0 +1,42 @@
1
+ import type { ConstrClass } from '@dxtmisha/functional'
2
+
3
+ /**
4
+ * Interface for describing which components need to be connected for work.
5
+ *
6
+ * Интерфейс для описания, какие компоненты надо подключить для работы.
7
+ */
8
+ export type FieldCounterComponents = {}
9
+
10
+ /**
11
+ * Type describing available events.
12
+ *
13
+ * Тип, описывающий доступные события.
14
+ */
15
+ export type FieldCounterEmits = {}
16
+
17
+ /**
18
+ * Type describing available properties.
19
+ *
20
+ * Тип, описывающий доступные свойства.
21
+ */
22
+ export interface FieldCounterExpose {
23
+ }
24
+
25
+ /**
26
+ * Type describing available slots.
27
+ *
28
+ * Тип, описывающий доступные слоты.
29
+ */
30
+ export interface FieldCounterSlots {
31
+ }
32
+
33
+ /**
34
+ * Type describing subclasses.
35
+ *
36
+ * Тип, описывающий подклассы.
37
+ */
38
+ export type FieldCounterClasses = {
39
+ main: ConstrClass
40
+ // :classes [!] System label / Системная метка
41
+ // :classes [!] System label / Системная метка
42
+ }
@@ -0,0 +1,93 @@
1
+ import { computed, type Ref, type ToRefs } from 'vue'
2
+ import { type ConstrClassObject, type ConstrEmit, DesignComp } from '@dxtmisha/functional'
3
+
4
+ import { LabelInclude } from '../../classes/LabelInclude'
5
+ import { FieldCounterInclude } from '../FieldCounter'
6
+ import { ProgressInclude } from '../Progress'
7
+ import { SkeletonInclude } from '../Skeleton'
8
+
9
+ import type { FieldLabelComponents, FieldLabelEmits, FieldLabelSlots } from './types'
10
+ import type { FieldLabelProps } from './props'
11
+
12
+ /**
13
+ * FieldLabel
14
+ */
15
+ export class FieldLabel {
16
+ /** Label include/ Подключение метки */
17
+ readonly label: LabelInclude
18
+
19
+ /** Field counter include/ Подключение счетчика поля */
20
+ readonly fieldCounter: FieldCounterInclude<FieldLabelProps>
21
+
22
+ /** Progress include/ Подключение прогресса */
23
+ readonly progress: ProgressInclude
24
+
25
+ /** Skeleton include/ Подключение скелетона */
26
+ readonly skeleton: SkeletonInclude
27
+
28
+ /**
29
+ * Constructor
30
+ * @param props input data/ входные данные
31
+ * @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
32
+ * @param element input element/ элемент ввода
33
+ * @param classDesign design name/ название дизайна
34
+ * @param className class name/ название класса
35
+ * @param components object for working with components/ объект для работы с компонентами
36
+ * @param slots object for working with slots/ объект для работы со слотами
37
+ * @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
38
+ */
39
+ constructor(
40
+ protected readonly props: FieldLabelProps,
41
+ protected readonly refs: ToRefs<FieldLabelProps>,
42
+ protected readonly element: Ref<HTMLElement | undefined>,
43
+ protected readonly classDesign: string,
44
+ protected readonly className: string,
45
+ protected readonly components?: DesignComp<FieldLabelComponents, FieldLabelProps>,
46
+ protected readonly slots?: FieldLabelSlots,
47
+ protected readonly emits?: ConstrEmit<FieldLabelEmits>
48
+ ) {
49
+ const skeleton = new SkeletonInclude(this.props, this.classDesign, ['classTextVariant'])
50
+
51
+ this.label = new LabelInclude(
52
+ this.props,
53
+ this.className,
54
+ undefined,
55
+ this.slots,
56
+ undefined,
57
+ undefined,
58
+ true,
59
+ skeleton
60
+ )
61
+
62
+ this.fieldCounter = new FieldCounterInclude(
63
+ this.props,
64
+ this.className,
65
+ this.components
66
+ )
67
+
68
+ this.progress = new ProgressInclude(
69
+ this.props,
70
+ this.className,
71
+ this.components,
72
+ {
73
+ circular: true,
74
+ position: 'static',
75
+ dense: true
76
+ }
77
+ )
78
+
79
+ this.skeleton = skeleton
80
+ }
81
+
82
+ /**
83
+ * Values for the class.
84
+ *
85
+ * Значения для класса.
86
+ * Возвращает объект классов, включающий классы скелетона, если он активен.
87
+ */
88
+ readonly classes = computed<ConstrClassObject>(() => {
89
+ return {
90
+ ...this.skeleton.classes.value
91
+ }
92
+ })
93
+ }
@@ -0,0 +1,156 @@
1
+ import { h, type VNode } from 'vue'
2
+ import {
3
+ type ConstrOptions,
4
+ type ConstrStyles,
5
+ DesignConstructorAbstract
6
+ } from '@dxtmisha/functional'
7
+
8
+ import { FieldLabel } from './FieldLabel'
9
+
10
+ import {
11
+ type FieldLabelPropsBasic
12
+ } from './props'
13
+ import {
14
+ type FieldLabelClasses,
15
+ type FieldLabelComponents,
16
+ type FieldLabelEmits,
17
+ type FieldLabelExpose,
18
+ type FieldLabelSlots
19
+ } from './types'
20
+
21
+ /**
22
+ * FieldLabelDesign
23
+ */
24
+ export class FieldLabelDesign<
25
+ COMP extends FieldLabelComponents,
26
+ EXPOSE extends FieldLabelExpose,
27
+ CLASSES extends FieldLabelClasses,
28
+ P extends FieldLabelPropsBasic
29
+ > extends DesignConstructorAbstract<
30
+ HTMLDivElement,
31
+ COMP,
32
+ FieldLabelEmits,
33
+ EXPOSE,
34
+ FieldLabelSlots,
35
+ CLASSES,
36
+ P
37
+ > {
38
+ protected readonly item: FieldLabel
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, FieldLabelEmits, P>
50
+ ) {
51
+ super(
52
+ name,
53
+ props,
54
+ options
55
+ )
56
+
57
+ this.item = new FieldLabel(
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
+ * Initialization of all the necessary properties for work
73
+ *
74
+ * Инициализация всех необходимых свойств для работы.
75
+ */
76
+ protected initExpose(): EXPOSE {
77
+ return {} as EXPOSE
78
+ }
79
+
80
+ /**
81
+ * Improvement of the obtained list of classes.
82
+ *
83
+ * Доработка полученного списка классов.
84
+ */
85
+ protected initClasses(): Partial<CLASSES> {
86
+ return {
87
+ main: this.item.classes.value,
88
+ ...{
89
+ // :classes [!] System label / Системная метка
90
+ label: this.getSubClass('label'),
91
+ required: this.getSubClass('required')
92
+ // :classes [!] System label / Системная метка
93
+ }
94
+ } as Partial<CLASSES>
95
+ }
96
+
97
+ /**
98
+ * Refinement of the received list of styles.
99
+ *
100
+ * Доработка полученного списка стилей.
101
+ */
102
+ protected initStyles(): ConstrStyles {
103
+ return {}
104
+ }
105
+
106
+ /**
107
+ * A method for rendering.
108
+ *
109
+ * Метод для рендеринга.
110
+ */
111
+ protected initRender(): VNode | undefined {
112
+ const children: any[] = [
113
+ ...this.item.label.render(this.renderRequired()),
114
+ ...this.item.progress.render(),
115
+ ...this.item.fieldCounter.render()
116
+ ]
117
+
118
+ if (
119
+ this.item.label.is.value
120
+ || this.item.progress.is.value
121
+ || this.item.fieldCounter.isCounter.value
122
+ ) {
123
+ return h(
124
+ 'div',
125
+ {
126
+ ...this.getAttrs(),
127
+ class: this.classes?.value.main
128
+ },
129
+ children
130
+ )
131
+ }
132
+
133
+ return undefined
134
+ }
135
+
136
+ /**
137
+ * Display of the asterisk, an indication of required fields.
138
+ *
139
+ * Вывод звездочки, признак обязательного заполнения.
140
+ */
141
+ readonly renderRequired = (): VNode[] => {
142
+ if (this.props.required) {
143
+ return [
144
+ h(
145
+ 'span',
146
+ {
147
+ class: this.classes?.value.required
148
+ },
149
+ '*'
150
+ )
151
+ ]
152
+ }
153
+
154
+ return []
155
+ }
156
+ }
@@ -0,0 +1,91 @@
1
+ import { computed, type VNode } from 'vue'
2
+ import {
3
+ type ConstrBind,
4
+ DesignComponents,
5
+ getRef,
6
+ isFilled, type RawSlots,
7
+ type RefOrNormal, type RefType,
8
+ toBinds
9
+ } from '@dxtmisha/functional'
10
+
11
+ import { FieldCounterInclude } from '../FieldCounter'
12
+
13
+ import type { FieldLabelComponentInclude, FieldLabelPropsInclude, FieldLabelSlotsInclude } from './basicTypes'
14
+ import type { FieldLabelPropsBasic } from './props'
15
+
16
+ /**
17
+ * The class returns data for working with the FieldLabel component
18
+ *
19
+ * Класс возвращает данные для работы с компонентом FieldLabel
20
+ */
21
+ export class FieldLabelInclude<
22
+ Props extends FieldLabelPropsInclude = FieldLabelPropsInclude,
23
+ PropsExtra extends ConstrBind<FieldLabelPropsBasic> = ConstrBind<FieldLabelPropsBasic>
24
+ > {
25
+ /** Field counter include/ Подключение счетчика поля */
26
+ private readonly fieldCounter: FieldCounterInclude
27
+
28
+ /**
29
+ * Constructor
30
+ * @param props input parameter/ входной параметр
31
+ * @param className class name/ название класса
32
+ * @param components object for working with components/ объект для работы с компонентами
33
+ * @param slots object for working with slots/ объект для работы со слотами
34
+ * @param isCounter whether to display the counter/ отображать ли счетчик
35
+ * @param extra additional parameter or property name/ дополнительный параметр или имя свойства
36
+ * @param index index identifier/ идентификатор индекса
37
+ */
38
+ constructor(
39
+ protected readonly props: Readonly<Props>,
40
+ protected readonly className: string,
41
+ protected readonly components?: DesignComponents<FieldLabelComponentInclude, Props>,
42
+ protected readonly slots?: FieldLabelSlotsInclude,
43
+ protected readonly isCounter?: RefType<boolean | undefined>,
44
+ protected readonly extra?: RefOrNormal<PropsExtra>,
45
+ protected readonly index?: string
46
+ ) {
47
+ this.fieldCounter = new FieldCounterInclude(this.props, this.className)
48
+ }
49
+
50
+ /** Checks if label should be displayed/ Проверяет, надо ли отображать метку */
51
+ readonly is = computed<boolean>(() => isFilled(this.props.label))
52
+
53
+ /** Computed bindings for FieldLabel/ Вычисляемые привязки для FieldLabel */
54
+ readonly binds = computed<PropsExtra>(() =>
55
+ toBinds<PropsExtra>(
56
+ getRef(this.extra),
57
+ this.isCounter?.value
58
+ ? this.fieldCounter.bindsIntermediary.value
59
+ : {},
60
+ {
61
+ label: this.props.label,
62
+ required: this.props.required
63
+ },
64
+ this.props.fieldLabelAttrs
65
+ )
66
+ )
67
+
68
+ /**
69
+ * Render the FieldLabel component/ Рендер компонента FieldLabel
70
+ */
71
+ readonly render = (): VNode[] => {
72
+ if (
73
+ this.components
74
+ && this.is.value
75
+ ) {
76
+ return this.components.render(
77
+ 'fieldLabel',
78
+ {
79
+ ...toBinds(
80
+ this.binds.value,
81
+ { class: `${this.className}__fieldLabel` }
82
+ )
83
+ },
84
+ this.slots as RawSlots,
85
+ this.index
86
+ )
87
+ }
88
+
89
+ return []
90
+ }
91
+ }