@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,116 @@
1
+ import { computed, type VNode } from 'vue'
2
+ import {
3
+ type ConstrBind,
4
+ type ConstrEmit,
5
+ DesignComponents,
6
+ getRef,
7
+ type RefOrNormal,
8
+ toBinds
9
+ } from '@dxtmisha/functional'
10
+
11
+ import type { EventClickValue } from '../../types/eventClickTypes'
12
+
13
+ import type { BarsComponentInclude, BarsEmitsInclude, BarsPropsInclude } from './basicTypes'
14
+ import type { BarsProps } from './props'
15
+
16
+ /**
17
+ * BarsInclude class provides functionality for conditionally rendering bars components
18
+ * within other components. It manages the logic for determining when to display bars
19
+ * and configures the appropriate properties.
20
+ *
21
+ * Класс BarsInclude предоставляет функциональность для условного рендеринга компонентов
22
+ * панелей действий внутри других компонентов. Он управляет логикой определения необходимости
23
+ * отображения панелей и настраивает соответствующие свойства.
24
+ */
25
+ export class BarsInclude<
26
+ Props extends BarsPropsInclude = BarsPropsInclude,
27
+ PropsExtra extends ConstrBind<BarsProps> = ConstrBind<BarsProps>
28
+ > {
29
+ /**
30
+ * Constructor
31
+ * @param props input parameter/ входной параметр
32
+ * @param className class name/ название класса
33
+ * @param components object for working with components/ объект для работы с компонентами
34
+ * @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
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<BarsComponentInclude, Props>,
42
+ protected readonly emits?: ConstrEmit<BarsEmitsInclude>,
43
+ protected readonly extra?: RefOrNormal<PropsExtra>,
44
+ protected readonly index?: string
45
+ ) {
46
+ }
47
+
48
+ /**
49
+ * Checks whether bars should be displayed/
50
+ * Проверяет, нужно ли отображать панели
51
+ */
52
+ readonly is = computed(() => Boolean(
53
+ this.props.barsLabel
54
+ || this.props.barsDescription
55
+ || this.props.barsBackHide !== true
56
+ ))
57
+
58
+ /** Computed bindings for the bars/ Вычисляемые привязки для панелей */
59
+ readonly binds = computed<PropsExtra>(() => {
60
+ const props = toBinds<PropsExtra>(
61
+ getRef(this.extra),
62
+ this.props.barsAttrs,
63
+ { class: `${this.className}__bars` }
64
+ )
65
+
66
+ return {
67
+ ...props,
68
+
69
+ label: this.props.barsLabel,
70
+ description: this.props.barsDescription,
71
+ backHide: this.props.barsBackHide,
72
+ bars: this.props.barsList
73
+ }
74
+ })
75
+
76
+ /**
77
+ * Render the Bars component
78
+ *
79
+ * Рендер компонента панелей
80
+ */
81
+ readonly render = (): VNode[] => {
82
+ console.log('this.props.barsHide', this.props.barsHide)
83
+ if (
84
+ this.components
85
+ && !this.props.barsHide
86
+ ) {
87
+ return this.components.render(
88
+ 'bars',
89
+ {
90
+ ...this.binds.value,
91
+ onClick: this.onClick
92
+ },
93
+ undefined,
94
+ this.index ?? 'bars'
95
+ )
96
+ }
97
+
98
+ return []
99
+ }
100
+
101
+ /**
102
+ * Handles click events from Bars and emits related events/
103
+ * Обрабатывает клики по панелям и испускает связанные события
104
+ *
105
+ * @param event native mouse event/ native событие мыши
106
+ * @param value payload with { type, value, detail }/ данные события с { type, value, detail }
107
+ */
108
+ protected readonly onClick = (event: MouseEvent, value: EventClickValue) => {
109
+ this.emits?.('bars', event, value)
110
+ this.emits?.('barsLite', value)
111
+
112
+ if (value.type === 'back') {
113
+ this.emits?.('barsBack', value)
114
+ }
115
+ }
116
+ }
@@ -0,0 +1,40 @@
1
+ import type { ConstrBind } from '@dxtmisha/functional'
2
+
3
+ import type { EventClickEmits } from '../../types/eventClickTypes'
4
+ import type { BarsPropsBasic } from './props'
5
+
6
+ /**
7
+ * Component map for including the Bars component/
8
+ * Карта компонентов для подключения компонента Bars
9
+ */
10
+ export type BarsComponentInclude = {
11
+ bars?: object
12
+ }
13
+
14
+ /** Available events for Bars/ Доступные события для Bars */
15
+ export type BarsEmitsInclude = {
16
+ bars: EventClickEmits['click']
17
+ barsLite: EventClickEmits['clickLite']
18
+ barsBack: EventClickEmits['clickLite']
19
+ }
20
+
21
+ /**
22
+ * Props used to include and configure the Bars component/
23
+ * Свойства для подключения и настройки компонента Bars
24
+ */
25
+ export interface BarsPropsInclude<
26
+ Bars extends BarsPropsBasic = BarsPropsBasic
27
+ > {
28
+ /** Bars label/ Метка панелей */
29
+ barsLabel?: string | number
30
+ /** Bars description/ Описание панелей */
31
+ barsDescription?: string
32
+ /** Hide back button/ Скрыть кнопку назад */
33
+ barsBackHide?: boolean
34
+ /** Hide bars/ Скрыть панели */
35
+ barsHide?: boolean
36
+ /** List of bar buttons/ Список кнопок панелей */
37
+ barsList?: Bars['bars']
38
+ /** Additional attributes for Bars component/ Дополнительные атрибуты для компонента Bars */
39
+ barsAttrs?: ConstrBind<Bars>
40
+ }
@@ -0,0 +1,6 @@
1
+ export * from './Bars'
2
+ export * from './BarsDesign'
3
+ export * from './BarsInclude'
4
+ export * from './props'
5
+ export * from './types'
6
+ export * from './basicTypes'
@@ -0,0 +1,6 @@
1
+ {
2
+ "#context": {},
3
+ "#label": {},
4
+ "#description": {},
5
+ "~action": {}
6
+ }
@@ -0,0 +1,63 @@
1
+ import type { ConstrBind } from '@dxtmisha/functional'
2
+
3
+ import type { IconPropsBasic, IconValue } from '../Icon'
4
+ import type { ButtonPropsBasic } from '../Button'
5
+ import type { SkeletonPropsInclude } from '../Skeleton'
6
+
7
+ import type { LabelProps } from '../../types/labelTypes'
8
+ import type { DescriptionProps } from '../../types/descriptionTypes'
9
+
10
+ interface BarsPropsToken {
11
+ // :type [!] System label / Системная метка
12
+ action?: boolean
13
+ // :type [!] System label / Системная метка
14
+ }
15
+
16
+ export interface BarsPropsBasic<
17
+ Icon extends IconPropsBasic = IconPropsBasic,
18
+ Button extends ButtonPropsBasic = ButtonPropsBasic
19
+ > extends LabelProps,
20
+ DescriptionProps,
21
+ SkeletonPropsInclude
22
+ {
23
+ // Value
24
+ 'backButton'?: ConstrBind<Button>
25
+ 'backHide'?: boolean
26
+ 'backActionHide'?: boolean
27
+ 'bars'?: ConstrBind<Button>[]
28
+
29
+ 'actionLabel'?: LabelProps['label']
30
+ 'actionDescription'?: DescriptionProps['description']
31
+ 'actionBars'?: ConstrBind<Button>[]
32
+
33
+ // Style
34
+ 'buttonAttrs'?: ConstrBind<Button>
35
+
36
+ 'iconBack'?: IconValue<Icon>
37
+ 'iconClose'?: IconValue<Icon>
38
+
39
+ // Event
40
+ 'modelAction'?: boolean
41
+ 'onUpdate:action'?: (value: boolean) => void
42
+ 'onUpdate:modelAction'?: (value: boolean) => void
43
+ }
44
+
45
+ /**
46
+ * Type describing incoming properties.
47
+ *
48
+ * Тип, описывающий входящие свойства.
49
+ */
50
+ export interface BarsProps extends BarsPropsBasic, BarsPropsToken {
51
+ }
52
+
53
+ /**
54
+ * Default value for property.
55
+ *
56
+ * Значение по умолчанию для свойства.
57
+ */
58
+ export const defaultsBars = {
59
+ ...{
60
+ // :default [!] System label / Системная метка
61
+ // :default [!] System label / Системная метка
62
+ }
63
+ }
@@ -0,0 +1,18 @@
1
+ @use "@dxtmisha/styles/properties" as ui;
2
+
3
+ @mixin mixinBars {
4
+ display: flex;
5
+
6
+ transition: background-color ui.v('d.sys.transitionDuration.sm') linear;
7
+
8
+ &__context,
9
+ &__label {
10
+ @include ui.flexDynamic;
11
+ }
12
+
13
+ &__context > &__label {
14
+ width: calc(100% - 64px);
15
+ min-width: 80%;
16
+ @include ui.clamp(2);
17
+ }
18
+ }
@@ -0,0 +1,58 @@
1
+ import type { ConstrClass } from '@dxtmisha/functional'
2
+
3
+ import type { ButtonComponentInclude } from '../Button'
4
+ import type { EventClickEmits } from '../../types/eventClickTypes'
5
+ import type { LabelSlots } from '../../types/labelTypes'
6
+ import type { DescriptionSlots } from '../../types/descriptionTypes'
7
+
8
+ /**
9
+ * Interface for describing which components need to be connected for work.
10
+ *
11
+ * Интерфейс для описания, какие компоненты надо подключить для работы.
12
+ */
13
+ export type BarsComponents = ButtonComponentInclude
14
+
15
+ /**
16
+ * Type describing available events.
17
+ *
18
+ * Тип, описывающий доступные события.
19
+ */
20
+ export type BarsEmits
21
+ = EventClickEmits
22
+ & {
23
+ 'update:action': [value: boolean]
24
+ 'update:modelAction': [value: boolean]
25
+ }
26
+
27
+ /**
28
+ * Type describing available properties.
29
+ *
30
+ * Тип, описывающий доступные свойства.
31
+ */
32
+ export interface BarsExpose {
33
+ }
34
+
35
+ /**
36
+ * Type describing available slots.
37
+ *
38
+ * Тип, описывающий доступные слоты.
39
+ */
40
+ export interface BarsSlots extends LabelSlots, DescriptionSlots {
41
+ bars?(props: any): any
42
+
43
+ actionBars?(props: any): any
44
+ }
45
+
46
+ /**
47
+ * Type describing subclasses.
48
+ *
49
+ * Тип, описывающий подклассы.
50
+ */
51
+ export type BarsClasses = {
52
+ main: ConstrClass
53
+ // :classes [!] System label / Системная метка
54
+ context: string
55
+ label: string
56
+ description: string
57
+ // :classes [!] System label / Системная метка
58
+ }
@@ -0,0 +1,88 @@
1
+ import { computed, type Ref, type ToRefs } from 'vue'
2
+ import { type ConstrClass, type ConstrEmit, DesignComp } from '@dxtmisha/functional'
3
+ import { getClassTegAStatic } from '../../functions/getClassTegAStatic'
4
+
5
+ import { LabelInclude } from '../../classes/LabelInclude'
6
+ import { EnabledInclude } from '../../classes/EnabledInclude'
7
+
8
+ import { IconTrailingInclude } from '../Icon'
9
+ import { ProgressInclude } from '../Progress'
10
+ import { RippleInclude } from '../Ripple'
11
+ import { SkeletonInclude } from '../Skeleton'
12
+
13
+ import { EventClickInclude } from '../../classes/EventClickInclude'
14
+
15
+ import type { ButtonComponents, ButtonEmits, ButtonSlots } from './types'
16
+ import type { ButtonPropsBasic } from './props'
17
+
18
+ /**
19
+ * Button
20
+ */
21
+ export class Button {
22
+ readonly label: LabelInclude
23
+ readonly enabled: EnabledInclude
24
+
25
+ readonly icon: IconTrailingInclude
26
+ readonly progress: ProgressInclude
27
+ readonly ripple: RippleInclude
28
+ readonly skeleton: SkeletonInclude
29
+
30
+ readonly event: EventClickInclude
31
+
32
+ /**
33
+ * Constructor
34
+ * @param props input data/ входные данные
35
+ * @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
36
+ * @param element input element/ элемент ввода
37
+ * @param classDesign design name/ название дизайна
38
+ * @param className class name/ название класса
39
+ * @param components object for working with components/ объект для работы с компонентами
40
+ * @param slots object for working with slots/ объект для работы со слотами
41
+ * @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
42
+ */
43
+ constructor(
44
+ protected readonly props: ButtonPropsBasic,
45
+ protected readonly refs: ToRefs<ButtonPropsBasic>,
46
+ protected readonly element: Ref<HTMLElement | undefined>,
47
+ protected readonly classDesign: string,
48
+ protected readonly className: string,
49
+ protected readonly components?: DesignComp<ButtonComponents, ButtonPropsBasic>,
50
+ protected readonly slots?: ButtonSlots,
51
+ protected readonly emits?: ConstrEmit<ButtonEmits>
52
+ ) {
53
+ const progress = new ProgressInclude(
54
+ props,
55
+ className,
56
+ components,
57
+ {
58
+ circular: true,
59
+ inverse: true
60
+ }
61
+ )
62
+
63
+ this.label = new LabelInclude(props, className, undefined, slots)
64
+ this.enabled = new EnabledInclude(props, progress)
65
+
66
+ this.icon = new IconTrailingInclude(props, className, components)
67
+ this.progress = progress
68
+ this.ripple = new RippleInclude(className, components, this.enabled)
69
+ this.skeleton = new SkeletonInclude(
70
+ props,
71
+ classDesign,
72
+ ['classBackground']
73
+ )
74
+
75
+ this.event = new EventClickInclude(
76
+ props,
77
+ this.enabled,
78
+ emits
79
+ )
80
+ }
81
+
82
+ /** values for the class/ значения для класса */
83
+ readonly classes = computed<ConstrClass>(() => ({
84
+ [`${this.className}--icon`]: this.icon.isIcon.value,
85
+ [getClassTegAStatic(this.classDesign)]: true,
86
+ ...this.skeleton.classes.value
87
+ }))
88
+ }
@@ -0,0 +1,136 @@
1
+ import { h, type VNode } from 'vue'
2
+ import {
3
+ type ConstrOptions,
4
+ type ConstrStyles,
5
+ DesignConstructorAbstract
6
+ } from '@dxtmisha/functional'
7
+
8
+ import { Button } from './Button'
9
+
10
+ import {
11
+ type ButtonPropsBasic
12
+ } from './props'
13
+ import {
14
+ type ButtonClasses,
15
+ type ButtonComponents,
16
+ type ButtonEmits,
17
+ type ButtonExpose,
18
+ type ButtonSlots
19
+ } from './types'
20
+
21
+ /**
22
+ * ButtonDesign
23
+ */
24
+ export class ButtonDesign<
25
+ COMP extends ButtonComponents,
26
+ EXPOSE extends ButtonExpose,
27
+ CLASSES extends ButtonClasses,
28
+ P extends ButtonPropsBasic
29
+ > extends DesignConstructorAbstract<
30
+ HTMLDivElement,
31
+ COMP,
32
+ ButtonEmits,
33
+ EXPOSE,
34
+ ButtonSlots,
35
+ CLASSES,
36
+ P
37
+ > {
38
+ protected readonly item: Button
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, ButtonEmits, P>
50
+ ) {
51
+ super(
52
+ name,
53
+ props,
54
+ options
55
+ )
56
+
57
+ this.item = new Button(
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 {
78
+ ...this.item.event.expose
79
+ } as EXPOSE
80
+ }
81
+
82
+ /**
83
+ * Improvement of the obtained list of classes.
84
+ *
85
+ * Доработка полученного списка классов.
86
+ */
87
+ protected initClasses(): Partial<CLASSES> {
88
+ return {
89
+ main: this.item.classes.value,
90
+ ...{
91
+ // :classes [!] System label / Системная метка
92
+ label: this.getSubClass('label'),
93
+ icon: this.getSubClass('icon'),
94
+ trailing: this.getSubClass('trailing'),
95
+ loading: this.getSubClass('loading')
96
+ // :classes [!] System label / Системная метка
97
+ }
98
+ } as Partial<CLASSES>
99
+ }
100
+
101
+ /**
102
+ * Refinement of the received list of styles.
103
+ *
104
+ * Доработка полученного списка стилей.
105
+ */
106
+ protected initStyles(): ConstrStyles {
107
+ return {}
108
+ }
109
+
110
+ /**
111
+ * A method for rendering.
112
+ *
113
+ * Метод для рендеринга.
114
+ */
115
+ protected initRender(): VNode {
116
+ return h(
117
+ this.props.tag || 'button',
118
+ {
119
+ ...this.getAttrs(),
120
+ ref: this.element,
121
+
122
+ class: this.classes?.value.main,
123
+ style: this.styles?.value,
124
+
125
+ disabled: this.item.enabled.isDisabledOrUndefined.value,
126
+ onClick: this.item.event.onClick
127
+ },
128
+ [
129
+ ...this.item.progress.render(),
130
+ ...this.item.label.render(),
131
+ ...this.item.icon.render(),
132
+ ...this.item.ripple.render()
133
+ ]
134
+ )
135
+ }
136
+ }
@@ -0,0 +1,80 @@
1
+ import { computed, type VNode } from 'vue'
2
+ import { type ConstrBind, DesignComponents, getBind, getRef, type RefOrNormal } from '@dxtmisha/functional'
3
+
4
+ import type { ButtonComponentInclude, ButtonPropsInclude } from './basicTypes'
5
+ import type { ButtonPropsBasic } from './props'
6
+
7
+ /**
8
+ * ButtonInclude class provides functionality for conditionally rendering button components
9
+ * within other components. It manages the logic for determining when to display a button
10
+ * and configures the appropriate properties.
11
+ *
12
+ * Класс ButtonInclude предоставляет функциональность для условного рендеринга компонентов
13
+ * кнопки внутри других компонентов. Он управляет логикой определения необходимости
14
+ * отображения кнопки и настраивает соответствующие свойства.
15
+ *
16
+ * @template Props - Properties interface extending ButtonPropsInclude
17
+ */
18
+ export class ButtonInclude<Props extends ButtonPropsInclude = ButtonPropsInclude> {
19
+ /**
20
+ * Constructor
21
+ * @param props input parameter/ входной параметр
22
+ * @param className class name/ название класса
23
+ * @param components object for working with components/ объект для работы с компонентами
24
+ * @param extra additional parameter/ дополнительный параметр
25
+ * @param index index identifier/ идентификатор индекса
26
+ */
27
+ constructor(
28
+ protected readonly props: Readonly<Props>,
29
+ protected readonly className: string,
30
+ protected readonly components?: DesignComponents<ButtonComponentInclude, Props>,
31
+ protected readonly extra?: RefOrNormal<ConstrBind<ButtonPropsBasic>>,
32
+ protected readonly index?: string
33
+ ) {
34
+ }
35
+
36
+ /**
37
+ * Computed bindings for the button/ Вычисляемые привязки для кнопки
38
+ */
39
+ readonly binds = computed(
40
+ () => getBind(
41
+ getRef(this.props),
42
+ getRef(this.extra),
43
+ 'label'
44
+ )
45
+ )
46
+
47
+ /**
48
+ * Renders the button component with provided properties and configuration.
49
+ * Returns an array of VNode elements representing the rendered button, or an empty
50
+ * array if the component cannot be rendered.
51
+ *
52
+ * Обрисовывает компонент кнопки с предоставленными свойствами и конфигурацией.
53
+ * Возвращает массив VNode элементов, представляющих отрисованную кнопку, или пустой
54
+ * массив, если компонент не может быть отрисованы.
55
+ *
56
+ * @param props additional properties/ дополнительные свойства
57
+ */
58
+ readonly render = (props?: RefOrNormal<ConstrBind<ButtonPropsBasic>>): VNode[] => {
59
+ if (
60
+ this.components
61
+ && (
62
+ ('label' in this.binds.value)
63
+ || ('icon' in this.binds.value)
64
+ || ('iconTrailing' in this.binds.value)
65
+ )
66
+ ) {
67
+ return this.components.render(
68
+ 'button',
69
+ {
70
+ ...this.binds.value,
71
+ ...getRef(props)
72
+ },
73
+ undefined,
74
+ this.index ?? 'button'
75
+ )
76
+ }
77
+
78
+ return []
79
+ }
80
+ }
@@ -0,0 +1,12 @@
1
+ import type { ConstrBind } from '@dxtmisha/functional'
2
+ import type { ButtonPropsBasic } from './props'
3
+
4
+ export type ButtonComponentInclude = {
5
+ button?: object
6
+ }
7
+
8
+ export interface ButtonPropsInclude<
9
+ Button extends ButtonPropsBasic = ButtonPropsBasic
10
+ > {
11
+ buttonAttrs?: ConstrBind<Button>
12
+ }
@@ -0,0 +1,5 @@
1
+ export * from './Button'
2
+ export * from './ButtonDesign'
3
+ export * from './props'
4
+ export * from './types'
5
+ export * from './basicTypes'