@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,34 @@
1
+ import type { ConstrBind } from '@dxtmisha/functional'
2
+ import type { LabelAlternativeSlots, LabelProps } from '../../types/labelTypes'
3
+ import type { FieldCounterPropsBasic, FieldCounterPropsInclude } from '../FieldCounter'
4
+ import type { FieldLabelPropsBasic } from './props'
5
+
6
+ /**
7
+ * Interface for describing which components need to be connected for FieldLabel work/
8
+ * Интерфейс для описания, какие компоненты надо подключить для работы FieldLabel
9
+ */
10
+ export type FieldLabelComponentInclude = {
11
+ fieldLabel: object
12
+ }
13
+
14
+ /**
15
+ * Slots contract that FieldLabelInclude can expose or map to Label component slots.
16
+ * Extends LabelAlternativeSlots to reuse standard label-related slots (leading, trailing, etc.).
17
+ *
18
+ * Контракт слотов, которые может предоставлять FieldLabelInclude или прокидывать в Label.
19
+ * Расширяет LabelAlternativeSlots, чтобы переиспользовать стандартные слоты лейбла (leading, trailing и др.).
20
+ */
21
+ export interface FieldLabelSlotsInclude extends LabelAlternativeSlots {
22
+ }
23
+
24
+ /**
25
+ * Properties that can be passed to FieldLabelInclude/
26
+ * Свойства, которые можно передать в FieldLabelInclude
27
+ */
28
+ export interface FieldLabelPropsInclude<
29
+ FieldLabel extends FieldLabelPropsBasic = FieldLabelPropsBasic,
30
+ FieldCounter extends FieldCounterPropsBasic = FieldCounterPropsBasic
31
+ > extends LabelProps, FieldCounterPropsInclude<FieldCounter> {
32
+ required?: boolean
33
+ fieldLabelAttrs?: ConstrBind<FieldLabel>
34
+ }
@@ -0,0 +1,6 @@
1
+ export * from './FieldLabel'
2
+ export * from './FieldLabelDesign'
3
+ export * from './FieldLabelInclude'
4
+ export * from './props'
5
+ export * from './types'
6
+ export * from './basicTypes'
@@ -0,0 +1,4 @@
1
+ {
2
+ "#label": {},
3
+ "#required": {}
4
+ }
@@ -0,0 +1,40 @@
1
+ import type { LabelProps } from '../../types/labelTypes'
2
+ import type { ProgressPropsBasic, ProgressPropsInclude } from '../Progress'
3
+ import type { FieldCounterPropsBasic, FieldCounterPropsInclude } from '../FieldCounter'
4
+ import type { SkeletonPropsInclude } from '../Skeleton'
5
+
6
+ interface FieldLabelPropsToken {
7
+ // :type [!] System label / Системная метка
8
+ // :type [!] System label / Системная метка
9
+ }
10
+
11
+ export interface FieldLabelPropsBasic<
12
+ FieldCounter extends FieldCounterPropsBasic = FieldCounterPropsBasic,
13
+ Progress extends ProgressPropsBasic = ProgressPropsBasic
14
+ > extends LabelProps,
15
+ FieldCounterPropsInclude<FieldCounter>,
16
+ ProgressPropsInclude<Progress>,
17
+ SkeletonPropsInclude {
18
+ // Style
19
+ required?: boolean
20
+ }
21
+
22
+ /**
23
+ * Type describing incoming properties.
24
+ *
25
+ * Тип, описывающий входящие свойства.
26
+ */
27
+ export interface FieldLabelProps extends FieldLabelPropsBasic, FieldLabelPropsToken {
28
+ }
29
+
30
+ /**
31
+ * Default value for property.
32
+ *
33
+ * Значение по умолчанию для свойства.
34
+ */
35
+ export const defaultsFieldLabel = {
36
+ ...{
37
+ // :default [!] System label / Системная метка
38
+ // :default [!] System label / Системная метка
39
+ }
40
+ }
@@ -0,0 +1,10 @@
1
+ @use "@dxtmisha/styles/properties" as ui;
2
+
3
+ @mixin mixinFieldLabel {
4
+ display: flex;
5
+ @include ui.justifyContent('flex-end');
6
+
7
+ &__label {
8
+ @include ui.flexDynamic;
9
+ }
10
+ }
@@ -0,0 +1,49 @@
1
+ import type { ConstrClass } from '@dxtmisha/functional'
2
+ import type { LabelAlternativeSlots } from '../../types/labelTypes'
3
+ import { type FieldCounterComponentInclude } from '../FieldCounter'
4
+ import { type ProgressComponentInclude } from '../Progress'
5
+
6
+ /**
7
+ * Interface for describing which components need to be connected for work.
8
+ *
9
+ * Интерфейс для описания, какие компоненты надо подключить для работы.
10
+ */
11
+ export type FieldLabelComponents
12
+ = FieldCounterComponentInclude
13
+ & ProgressComponentInclude
14
+
15
+ /**
16
+ * Type describing available events.
17
+ *
18
+ * Тип, описывающий доступные события.
19
+ */
20
+ export type FieldLabelEmits = {}
21
+
22
+ /**
23
+ * Type describing available properties.
24
+ *
25
+ * Тип, описывающий доступные свойства.
26
+ */
27
+ export interface FieldLabelExpose {
28
+ }
29
+
30
+ /**
31
+ * Type describing available slots.
32
+ *
33
+ * Тип, описывающий доступные слоты.
34
+ */
35
+ export interface FieldLabelSlots extends LabelAlternativeSlots {
36
+ }
37
+
38
+ /**
39
+ * Type describing subclasses.
40
+ *
41
+ * Тип, описывающий подклассы.
42
+ */
43
+ export type FieldLabelClasses = {
44
+ main: ConstrClass
45
+ // :classes [!] System label / Системная метка
46
+ label: string
47
+ required: string
48
+ // :classes [!] System label / Системная метка
49
+ }
@@ -0,0 +1,79 @@
1
+ import { computed, type Ref, type ToRefs } from 'vue'
2
+ import { type ConstrClassObject, type ConstrEmit, DesignComp } from '@dxtmisha/functional'
3
+
4
+ import { FieldCounterInclude } from '../FieldCounter'
5
+ import { FieldMessageMessage } from './FieldMessageMessage'
6
+ import { SkeletonInclude } from '../Skeleton'
7
+
8
+ import type { FieldMessageComponents, FieldMessageEmits, FieldMessageSlots } from './types'
9
+ import type { FieldMessageProps } from './props'
10
+
11
+ /**
12
+ * FieldMessage
13
+ */
14
+ export class FieldMessage {
15
+ /** Field counter functionality/ Функциональность счетчика поля */
16
+ readonly fieldCounter: FieldCounterInclude<FieldMessageProps>
17
+
18
+ /** Message functionality/ Функциональность сообщений */
19
+ readonly message: FieldMessageMessage
20
+
21
+ /** Skeleton include/ Подключение скелетона */
22
+ readonly skeleton: SkeletonInclude
23
+
24
+ /**
25
+ * Constructor
26
+ * @param props input data/ входные данные
27
+ * @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
28
+ * @param element input element/ элемент ввода
29
+ * @param classDesign design name/ название дизайна
30
+ * @param className class name/ название класса
31
+ * @param components object for working with components/ объект для работы с компонентами
32
+ * @param slots object for working with slots/ объект для работы со слотами
33
+ * @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
34
+ */
35
+ constructor(
36
+ protected readonly props: FieldMessageProps,
37
+ protected readonly refs: ToRefs<FieldMessageProps>,
38
+ protected readonly element: Ref<HTMLElement | undefined>,
39
+ protected readonly classDesign: string,
40
+ protected readonly className: string,
41
+ protected readonly components?: DesignComp<FieldMessageComponents, FieldMessageProps>,
42
+ protected readonly slots?: FieldMessageSlots,
43
+ protected readonly emits?: ConstrEmit<FieldMessageEmits>
44
+ ) {
45
+ this.fieldCounter = new FieldCounterInclude(
46
+ this.props,
47
+ this.className,
48
+ this.components
49
+ )
50
+
51
+ this.message = new FieldMessageMessage(this.props, this.slots)
52
+ this.skeleton = new SkeletonInclude(
53
+ this.props as any,
54
+ this.classDesign,
55
+ ['classTextVariant']
56
+ )
57
+ }
58
+
59
+ /**
60
+ * Checks if there are values for outputting the element/ Проверяет, есть ли значения для вывода элемента
61
+ */
62
+ readonly is = computed<boolean>(() => {
63
+ return (
64
+ this.props.forceShow
65
+ || !this.props.disabled
66
+ )
67
+ && (
68
+ this.message.is.value
69
+ || this.fieldCounter.isCounter.value
70
+ )
71
+ })
72
+
73
+ /**
74
+ * Returns data for the main style class/ Возвращает данные для главного класса стиля
75
+ */
76
+ readonly classes = computed<ConstrClassObject>(() => ({
77
+ [`${this.className}--validation`]: this.message.isValidation.value
78
+ }))
79
+ }
@@ -0,0 +1,159 @@
1
+ import { h, type VNode } from 'vue'
2
+ import {
3
+ type ConstrOptions,
4
+ type ConstrStyles,
5
+ DesignConstructorAbstract
6
+ } from '@dxtmisha/functional'
7
+
8
+ import { FieldMessage } from './FieldMessage'
9
+
10
+ import {
11
+ type FieldMessagePropsBasic
12
+ } from './props'
13
+ import {
14
+ type FieldMessageClasses,
15
+ type FieldMessageComponents,
16
+ type FieldMessageEmits,
17
+ type FieldMessageExpose,
18
+ type FieldMessageSlots
19
+ } from './types'
20
+
21
+ /**
22
+ * FieldMessageDesign
23
+ */
24
+ export class FieldMessageDesign<
25
+ COMP extends FieldMessageComponents,
26
+ EXPOSE extends FieldMessageExpose,
27
+ CLASSES extends FieldMessageClasses,
28
+ P extends FieldMessagePropsBasic
29
+ > extends DesignConstructorAbstract<
30
+ HTMLDivElement,
31
+ COMP,
32
+ FieldMessageEmits,
33
+ EXPOSE,
34
+ FieldMessageSlots,
35
+ CLASSES,
36
+ P
37
+ > {
38
+ protected readonly item: FieldMessage
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, FieldMessageEmits, P>
50
+ ) {
51
+ super(
52
+ name,
53
+ props,
54
+ options
55
+ )
56
+
57
+ this.item = new FieldMessage(
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
+ info: this.getSubClass('info')
91
+ // :classes [!] System label / Системная метка
92
+ }
93
+ } as Partial<CLASSES>
94
+ }
95
+
96
+ /**
97
+ * Refinement of the received list of styles.
98
+ *
99
+ * Доработка полученного списка стилей.
100
+ */
101
+ protected initStyles(): ConstrStyles {
102
+ return {}
103
+ }
104
+
105
+ /**
106
+ * A method for rendering.
107
+ *
108
+ * Метод для рендеринга.
109
+ */
110
+ protected initRender(): VNode | undefined {
111
+ if (this.item.is.value) {
112
+ return h(
113
+ 'div',
114
+ {
115
+ ...this.getAttrs(),
116
+ key: 'main',
117
+ class: this.classes?.value.main
118
+ },
119
+ [
120
+ ...this.renderInfo(),
121
+ ...this.item.fieldCounter.render()
122
+ ]
123
+ )
124
+ }
125
+
126
+ return undefined
127
+ }
128
+
129
+ /**
130
+ * Rendering text.
131
+ *
132
+ * Рендеринг текста.
133
+ */
134
+ protected renderInfo = (): VNode[] => {
135
+ const children: VNode[] = []
136
+ const props: Record<string, any> = {
137
+ key: 'message',
138
+ class: [
139
+ this.classes?.value.info,
140
+ this.item.skeleton.classes.value
141
+ ]
142
+ }
143
+
144
+ this.initSlot('helper', children)
145
+ this.initSlot('validation', children)
146
+
147
+ if (children.length < 1) {
148
+ props.innerHTML = this.item.message.item.value
149
+ }
150
+
151
+ return [
152
+ h(
153
+ 'div',
154
+ props,
155
+ children
156
+ )
157
+ ]
158
+ }
159
+ }
@@ -0,0 +1,105 @@
1
+ import { computed, type VNode } from 'vue'
2
+ import {
3
+ type ConstrBind,
4
+ DesignComponents,
5
+ getRef,
6
+ isFilled,
7
+ type RefOrNormal,
8
+ type RefType,
9
+ toBinds
10
+ } from '@dxtmisha/functional'
11
+
12
+ import { FieldCounterInclude } from '../FieldCounter'
13
+
14
+ import type {
15
+ FieldMessageComponentInclude,
16
+ FieldMessagePropsInclude
17
+ } from './basicTypes'
18
+ import type { FieldMessagePropsBasic } from './props'
19
+
20
+ /**
21
+ * The class returns data for working with the FieldMessage component
22
+ *
23
+ * Класс возвращает данные для работы с компонентом FieldMessage
24
+ */
25
+ export class FieldMessageInclude<
26
+ Props extends FieldMessagePropsInclude = FieldMessagePropsInclude,
27
+ PropsExtra extends ConstrBind<FieldMessagePropsBasic> = ConstrBind<FieldMessagePropsBasic>
28
+ > {
29
+ /** Field counter include/ Подключение счетчика поля */
30
+ private readonly fieldCounter: FieldCounterInclude
31
+
32
+ /**
33
+ * Constructor
34
+ * @param props input parameter/ входной параметр
35
+ * @param className class name/ название класса
36
+ * @param components object for working with components/ объект для работы с компонентами
37
+ * @param validationMessage error line/ строка ошибки
38
+ * @param isCounter whether to display the counter/ отображать ли счетчик
39
+ * @param extra additional parameter or property name/ дополнительный параметр или имя свойства
40
+ * @param index index identifier/ идентификатор индекса
41
+ */
42
+ constructor(
43
+ protected readonly props: Readonly<Props>,
44
+ protected readonly className: string,
45
+ protected readonly components?: DesignComponents<FieldMessageComponentInclude, Props>,
46
+ protected readonly validationMessage?: RefOrNormal<string>,
47
+ protected readonly isCounter?: RefType<boolean | undefined>,
48
+ protected readonly extra?: RefOrNormal<PropsExtra>,
49
+ protected readonly index?: string
50
+ ) {
51
+ this.fieldCounter = new FieldCounterInclude(this.props, this.className)
52
+ }
53
+
54
+ /** Validation message computed/ Вычисляемое сообщение валидации */
55
+ readonly validation = computed<string | undefined>(() =>
56
+ isFilled(this.props.validationMessage)
57
+ ? this.props.validationMessage
58
+ : getRef(this.validationMessage)
59
+ )
60
+
61
+ /** Checks if validation message should be displayed/ Проверяет, надо ли отображать сообщение валидации */
62
+ readonly isValidationMessage = computed<boolean>(() =>
63
+ isFilled(this.validation.value)
64
+ )
65
+
66
+ /** Computed bindings for FieldMessage/ Вычисляемые привязки для FieldMessage */
67
+ readonly binds = computed<PropsExtra>(() => {
68
+ return toBinds<PropsExtra>(
69
+ getRef(this.extra),
70
+ this.isCounter?.value
71
+ ? this.fieldCounter.bindsIntermediary.value
72
+ : {},
73
+ {
74
+ disabled: this.props.disabled,
75
+ forceShow: this.props.forceShowMessage,
76
+ helperMessage: this.props.helperMessage,
77
+ validationMessage: this.validation.value
78
+ },
79
+ this.props.fieldMessageAttrs
80
+ )
81
+ })
82
+
83
+ /**
84
+ * Render the FieldMessage component.
85
+ *
86
+ * Рендер компонента FieldMessage.
87
+ */
88
+ readonly render = (): VNode[] => {
89
+ if (this.components) {
90
+ return this.components.render(
91
+ 'fieldMessage',
92
+ {
93
+ ...toBinds(
94
+ this.binds.value,
95
+ { class: `${this.className}__fieldMessage` }
96
+ )
97
+ },
98
+ undefined,
99
+ this.index
100
+ )
101
+ }
102
+
103
+ return []
104
+ }
105
+ }
@@ -0,0 +1,54 @@
1
+ import { computed } from 'vue'
2
+ import { isFilled } from '@dxtmisha/functional'
3
+
4
+ import type { FieldMessageProps } from './props'
5
+ import type { FieldMessageSlots } from './types'
6
+
7
+ /**
8
+ * Class for working with text
9
+ *
10
+ * Класс для работы с текстом
11
+ */
12
+ export class FieldMessageMessage {
13
+ /**
14
+ * Constructor
15
+ * @param props input data/ входные данные
16
+ * @param slots object for working with slots/ объект для работы со слотами
17
+ */
18
+ constructor(
19
+ protected readonly props: Readonly<FieldMessageProps>,
20
+ protected readonly slots?: FieldMessageSlots
21
+ ) {
22
+ }
23
+
24
+ /** Checks if there is text/ Проверяет, есть ли текст */
25
+ readonly is = computed<boolean>(() =>
26
+ isFilled(this.item.value)
27
+ || Boolean(
28
+ this.slots
29
+ && (
30
+ 'helper' in this.slots
31
+ || 'validation' in this.slots
32
+ )
33
+ )
34
+ )
35
+
36
+ /** Checks if there is an error/ Проверяет, есть ли ошибка */
37
+ readonly isValidation = computed<boolean>(() =>
38
+ isFilled(this.props.validationMessage)
39
+ || Boolean(this.slots && 'validation' in this.slots)
40
+ )
41
+
42
+ /** Returns text/ Возвращает текст */
43
+ readonly item = computed<string>(() => {
44
+ if (this.props.validationMessage) {
45
+ return this.props.validationMessage
46
+ }
47
+
48
+ if (this.props.helperMessage) {
49
+ return this.props.helperMessage
50
+ }
51
+
52
+ return ''
53
+ })
54
+ }
@@ -0,0 +1,27 @@
1
+ import type { ConstrBind } from '@dxtmisha/functional'
2
+
3
+ import type { FieldMessagePropsBasic } from './props'
4
+ import type { FieldCounterPropsBasic, FieldCounterPropsInclude } from '../FieldCounter'
5
+
6
+ /**
7
+ * Interface for describing which components need to be connected for FieldMessage work/
8
+ * Интерфейс для описания, какие компоненты надо подключить для работы FieldMessage
9
+ */
10
+ export type FieldMessageComponentInclude = {
11
+ fieldMessage: object
12
+ }
13
+
14
+ /**
15
+ * Properties that can be passed to FieldMessageInclude/
16
+ * Свойства, которые можно передать в FieldMessageInclude
17
+ */
18
+ export interface FieldMessagePropsInclude<
19
+ FieldMessage extends FieldMessagePropsBasic = FieldMessagePropsBasic,
20
+ FieldCounter extends FieldCounterPropsBasic = FieldCounterPropsBasic
21
+ > extends FieldCounterPropsInclude<FieldCounter> {
22
+ forceShowMessage?: boolean
23
+ disabled?: boolean
24
+ helperMessage?: string
25
+ validationMessage?: string
26
+ fieldMessageAttrs?: ConstrBind<FieldMessage>
27
+ }
@@ -0,0 +1,6 @@
1
+ export * from './FieldMessage'
2
+ export * from './FieldMessageDesign'
3
+ export * from './FieldMessageInclude'
4
+ export * from './props'
5
+ export * from './types'
6
+ export * from './basicTypes'
@@ -0,0 +1,9 @@
1
+ {
2
+ "padding": {
3
+ "_type": "var"
4
+ },
5
+ "#info": {},
6
+ "~validation": {
7
+ "_prop": false
8
+ }
9
+ }
@@ -0,0 +1,40 @@
1
+ import type { FieldCounterPropsBasic, FieldCounterPropsInclude } from '../FieldCounter'
2
+ import type { SkeletonPropsInclude } from '../Skeleton'
3
+
4
+ interface FieldMessagePropsToken {
5
+ // :type [!] System label / Системная метка
6
+ // :type [!] System label / Системная метка
7
+ }
8
+
9
+ export interface FieldMessagePropsBasic<
10
+ FieldCounter extends FieldCounterPropsBasic = FieldCounterPropsBasic
11
+ > extends FieldCounterPropsInclude<FieldCounter>,
12
+ SkeletonPropsInclude {
13
+ // Status
14
+ forceShow?: boolean
15
+ disabled?: boolean
16
+
17
+ // Value
18
+ helperMessage?: string
19
+ validationMessage?: string
20
+ }
21
+
22
+ /**
23
+ * Type describing incoming properties.
24
+ *
25
+ * Тип, описывающий входящие свойства.
26
+ */
27
+ export interface FieldMessageProps extends FieldMessagePropsBasic, FieldMessagePropsToken {
28
+ }
29
+
30
+ /**
31
+ * Default value for property.
32
+ *
33
+ * Значение по умолчанию для свойства.
34
+ */
35
+ export const defaultsFieldMessage = {
36
+ ...{
37
+ // :default [!] System label / Системная метка
38
+ // :default [!] System label / Системная метка
39
+ }
40
+ }
@@ -0,0 +1,13 @@
1
+ @use "@dxtmisha/styles/properties" as ui;
2
+
3
+ @mixin mixinFieldMessage {
4
+ display: flex;
5
+ align-items: ui.dirFlexLeft();
6
+
7
+ @include ui.paddingX(ui.v('??-padding', 0));
8
+
9
+ &__info {
10
+ flex-grow: 1;
11
+ flex-shrink: 1;
12
+ }
13
+ }