@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,36 @@
1
+ @use "@dxtmisha/styles/properties" as ui;
2
+
3
+ @mixin mixinList {
4
+ &__menuGroup {
5
+ @include ui.subclass('menu') {
6
+ display: none;
7
+ }
8
+ }
9
+
10
+ &--axis {
11
+ &--x {
12
+ display: flex;
13
+ align-items: stretch;
14
+
15
+ @include ui.subclass('space') {
16
+ width: var(--sys-height);
17
+ height: auto;
18
+ }
19
+
20
+ @include ui.subclass('line') {
21
+ @include ui.marginY(0);
22
+
23
+ width: var(--sys-height);
24
+ height: 100%;
25
+ }
26
+
27
+ @include ui.subclass('subtitle') {
28
+ display: none;
29
+ }
30
+
31
+ @include ui.subclass('group') {
32
+ display: none;
33
+ }
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,66 @@
1
+ import type { ConstrClass, ListList, ListNames } from '@dxtmisha/functional'
2
+ import type { EventClickEmits } from '../../types/eventClickTypes'
3
+
4
+ import type { ListItemComponentInclude } from '../ListItem'
5
+ import type { ListGroupComponentInclude } from '../ListGroup'
6
+ import type { ListMenuComponentInclude } from '../ListMenu'
7
+ import type { ComputedRef } from 'vue'
8
+
9
+ /**
10
+ * Interface for describing which components need to be connected for work.
11
+ *
12
+ * Интерфейс для описания, какие компоненты надо подключить для работы.
13
+ */
14
+ export type ListComponents
15
+ = ListItemComponentInclude
16
+ & ListGroupComponentInclude
17
+ & ListMenuComponentInclude
18
+
19
+ /**
20
+ * Type describing available events.
21
+ *
22
+ * Тип, описывающий доступные события.
23
+ */
24
+ export type ListEmits
25
+ = EventClickEmits
26
+ & {
27
+ close: []
28
+ }
29
+
30
+ /**
31
+ * Type describing available properties.
32
+ *
33
+ * Тип, описывающий доступные свойства.
34
+ */
35
+ export interface ListExpose {
36
+ isSelected: ComputedRef<boolean>
37
+ selectedList: ComputedRef<ListList>
38
+ selectedNames: ComputedRef<ListNames>
39
+ selectedValues: ComputedRef<any[]>
40
+ }
41
+
42
+ /**
43
+ * Type describing available slots.
44
+ *
45
+ * Тип, описывающий доступные слоты.
46
+ */
47
+ export type ListSlots = Record<string, (props: any) => any>
48
+
49
+ /**
50
+ * Type describing subclasses.
51
+ *
52
+ * Тип, описывающий подклассы.
53
+ */
54
+ export type ListClasses = {
55
+ main: ConstrClass
56
+ // :classes [!] System label / Системная метка
57
+ space: string
58
+ line: string
59
+ subtitle: string
60
+ html: string
61
+ management: string
62
+ group: string
63
+ menu: string
64
+ menuGroup: string
65
+ // :classes [!] System label / Системная метка
66
+ }
@@ -0,0 +1,53 @@
1
+ import { type Ref, type ToRefs } from 'vue'
2
+ import { type ConstrBind, type ConstrEmit, DesignComp } from '@dxtmisha/functional'
3
+
4
+ import { ListGroupOpen } from './ListGroupOpen'
5
+
6
+ import type { MotionTransformProps } from '../MotionTransform'
7
+ import type { ListGroupComponents, ListGroupEmits, ListGroupSlots } from './types'
8
+ import type { ListGroupProps } from './props'
9
+
10
+ /**
11
+ * ListGroup
12
+ */
13
+ export class ListGroup {
14
+ readonly open: ListGroupOpen<ListGroupProps>
15
+
16
+ /**
17
+ * Constructor
18
+ * @param props input data/ входные данные
19
+ * @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
20
+ * @param element input element/ элемент ввода
21
+ * @param classDesign design name/ название дизайна
22
+ * @param className class name/ название класса
23
+ * @param components object for working with components/ объект для работы с компонентами
24
+ * @param slots object for working with slots/ объект для работы со слотами
25
+ * @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
26
+ */
27
+ constructor(
28
+ protected readonly props: ListGroupProps,
29
+ protected readonly refs: ToRefs<ListGroupProps>,
30
+ protected readonly element: Ref<HTMLElement | undefined>,
31
+ protected readonly classDesign: string,
32
+ protected readonly className: string,
33
+ protected readonly components?: DesignComp<ListGroupComponents, ListGroupProps>,
34
+ protected readonly slots?: ListGroupSlots,
35
+ protected readonly emits?: ConstrEmit<ListGroupEmits>
36
+ ) {
37
+ this.open = new ListGroupOpen(this.props)
38
+ }
39
+
40
+ /**
41
+ * Returns the property for the transformation component.
42
+ *
43
+ * Возвращает свойство для компонента трансформации.
44
+ */
45
+ readonly transformBinds = (): ConstrBind<MotionTransformProps> => {
46
+ return {
47
+ autoClose: false,
48
+ section: true,
49
+ adaptive: 'planeAlways',
50
+ onTransformLite: this.open.onOpen
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,180 @@
1
+ import { h, type VNode } from 'vue'
2
+ import {
3
+ type ConstrOptions,
4
+ type ConstrStyles,
5
+ DesignConstructorAbstract
6
+ } from '@dxtmisha/functional'
7
+
8
+ import { ListGroup } from './ListGroup'
9
+
10
+ import {
11
+ type ListGroupPropsBasic
12
+ } from './props'
13
+ import {
14
+ type ListGroupClasses,
15
+ type ListGroupComponents,
16
+ type ListGroupEmits,
17
+ type ListGroupExpose,
18
+ type ListGroupSlots
19
+ } from './types'
20
+
21
+ /**
22
+ * ListGroupDesign
23
+ */
24
+ export class ListGroupDesign<
25
+ COMP extends ListGroupComponents,
26
+ EXPOSE extends ListGroupExpose,
27
+ CLASSES extends ListGroupClasses,
28
+ P extends ListGroupPropsBasic
29
+ > extends DesignConstructorAbstract<
30
+ HTMLDivElement,
31
+ COMP,
32
+ ListGroupEmits,
33
+ EXPOSE,
34
+ ListGroupSlots,
35
+ CLASSES,
36
+ P
37
+ > {
38
+ protected readonly item: ListGroup
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, ListGroupEmits, P>
50
+ ) {
51
+ super(
52
+ name,
53
+ props,
54
+ options
55
+ )
56
+
57
+ this.item = new ListGroup(
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
+ open: this.item.open.is
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: {},
90
+ ...{
91
+ // :classes [!] System label / Системная метка
92
+ head: this.getSubClass('head'),
93
+ list: this.getSubClass('list')
94
+ // :classes [!] System label / Системная метка
95
+ }
96
+ } as Partial<CLASSES>
97
+ }
98
+
99
+ /**
100
+ * Refinement of the received list of styles.
101
+ *
102
+ * Доработка полученного списка стилей.
103
+ */
104
+ protected initStyles(): ConstrStyles {
105
+ return {}
106
+ }
107
+
108
+ /**
109
+ * A method for rendering.
110
+ *
111
+ * Метод для рендеринга.
112
+ */
113
+ protected initRender(): VNode {
114
+ return h(
115
+ 'div',
116
+ {
117
+ ...this.getAttrs(),
118
+ 'class': this.classes?.value.main,
119
+ 'data-open': this.item.open.is.value ? 'open' : 'close',
120
+ 'data-divider': this.props.divider ? 'divider' : undefined
121
+ },
122
+ this.renderTransform()
123
+ )
124
+ }
125
+
126
+ /**
127
+ * Render transformation element.
128
+ *
129
+ * Рендер элемента трансформации.
130
+ */
131
+ readonly renderTransform = (): VNode[] => {
132
+ return this.components.render(
133
+ 'motionTransform',
134
+ {
135
+ ...this.item.transformBinds(),
136
+ open: this.item.open.is.value
137
+ },
138
+ {
139
+ head: this.renderHead,
140
+ body: this.renderList
141
+ }
142
+ )
143
+ }
144
+
145
+ /**
146
+ * Render title element.
147
+ *
148
+ * Рендер элемента заголовка.
149
+ */
150
+ readonly renderHead = (): VNode => {
151
+ return h(
152
+ 'div',
153
+ {
154
+ class: this.classes?.value.head
155
+ },
156
+ this.initSlot(
157
+ 'head',
158
+ undefined,
159
+ {
160
+ open: this.item.open.is.value
161
+ }
162
+ )
163
+ )
164
+ }
165
+
166
+ /**
167
+ * Render list element.
168
+ *
169
+ * Рендер элемента списка.
170
+ */
171
+ readonly renderList = (): VNode => {
172
+ return h(
173
+ 'div',
174
+ {
175
+ class: this.classes?.value.list
176
+ },
177
+ this.initSlot('list')
178
+ )
179
+ }
180
+ }
@@ -0,0 +1,56 @@
1
+ import { computed, ref } from 'vue'
2
+ import type { MotionTransformEmitOptions } from '../MotionTransform'
3
+
4
+ /**
5
+ * Class for managing the open/close state of ListGroup component.
6
+ * Handles the visibility state and provides computed properties and methods
7
+ * for controlling group expansion and collapse.
8
+ *
9
+ * Класс для управления состоянием открытия/закрытия компонента ListGroup.
10
+ * Управляет состоянием видимости и предоставляет вычисляемые свойства и методы
11
+ * для контроля разворачивания и сворачивания группы.
12
+ */
13
+ export class ListGroupOpen<T extends { open?: boolean }> {
14
+ /**
15
+ * Internal reactive state for group open/close status.
16
+ * This state is independent from props and can be controlled programmatically.
17
+ *
18
+ * Внутреннее реактивное состояние для статуса открытия/закрытия группы.
19
+ * Это состояние независимо от пропсов и может контролироваться программно.
20
+ */
21
+ readonly open = ref<boolean>(false)
22
+
23
+ /**
24
+ * Constructor initializes the ListGroupOpen with component props.
25
+ *
26
+ * Конструктор инициализирует ListGroupOpen с пропсами компонента.
27
+ * @param props - ListGroup component properties / свойства компонента ListGroup
28
+ */
29
+ constructor(
30
+ protected readonly props: T
31
+ ) {
32
+ }
33
+
34
+ /**
35
+ * Returns information about the opening status.
36
+ *
37
+ * Возвращает информацию о статусе открытия.
38
+ */
39
+ readonly is = computed<boolean>(
40
+ () => this.open.value || Boolean(this.props.open)
41
+ )
42
+
43
+ /**
44
+ * Events for opening the element.
45
+ *
46
+ * События для открытия элемента.
47
+ * @param options event parameters/ параметры события
48
+ */
49
+ readonly onOpen = (
50
+ { open }: MotionTransformEmitOptions
51
+ ) => {
52
+ if (this.open.value !== open) {
53
+ this.open.value = open
54
+ }
55
+ }
56
+ }
@@ -0,0 +1,3 @@
1
+ export type ListGroupComponentInclude = {
2
+ listGroup?: object
3
+ }
@@ -0,0 +1,5 @@
1
+ export * from './ListGroup'
2
+ export * from './ListGroupDesign'
3
+ export * from './props'
4
+ export * from './types'
5
+ export * from './basicTypes'
@@ -0,0 +1,15 @@
1
+ {
2
+ "border-width": {
3
+ "_type": "var"
4
+ },
5
+ "border-color": {
6
+ "_type": "var"
7
+ },
8
+ "border-opacity": {
9
+ "_type": "var"
10
+ },
11
+ "#head": {},
12
+ "#list": {},
13
+ "~open": {},
14
+ "~divider": {}
15
+ }
@@ -0,0 +1,30 @@
1
+ interface ListGroupPropsToken {
2
+ // :type [!] System label / Системная метка
3
+ open?: boolean
4
+ divider?: boolean
5
+ // :type [!] System label / Системная метка
6
+ }
7
+
8
+ export interface ListGroupPropsBasic {
9
+ divider?: boolean
10
+ }
11
+
12
+ /**
13
+ * Type describing incoming properties.
14
+ *
15
+ * Тип, описывающий входящие свойства.
16
+ */
17
+ export interface ListGroupProps extends ListGroupPropsBasic, ListGroupPropsToken {
18
+ }
19
+
20
+ /**
21
+ * Default value for property.
22
+ *
23
+ * Значение по умолчанию для свойства.
24
+ */
25
+ export const defaultsListGroup = {
26
+ ...{
27
+ // :default [!] System label / Системная метка
28
+ // :default [!] System label / Системная метка
29
+ }
30
+ }
@@ -0,0 +1,18 @@
1
+ @use "@dxtmisha/styles/properties" as ui;
2
+
3
+ @mixin mixinListGroup {
4
+ &__head,
5
+ &__list {
6
+ display: flow-root;
7
+ }
8
+
9
+ @at-root {
10
+ & + &[data-divider="divider"],
11
+ #{ui.c('?listItem')} + &[data-divider="divider"],
12
+ #{ui.c('?list__menuGroup--divider')}:not(:first-child) > &[data-divider="divider"] {
13
+ border-top-style: solid;
14
+ border-top-width: ui.v('??borderWidth');
15
+ @include ui.borderColor(ui.v('??borderColor'), ui.v('??borderOpacity'));
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,51 @@
1
+ import type { ComputedRef } from 'vue'
2
+ import type { ConstrClass } from '@dxtmisha/functional'
3
+
4
+ import type { MotionTransformComponentInclude } from '../MotionTransform'
5
+
6
+ /**
7
+ * Interface for describing which components need to be connected for work.
8
+ *
9
+ * Интерфейс для описания, какие компоненты надо подключить для работы.
10
+ */
11
+ export type ListGroupComponents
12
+ = MotionTransformComponentInclude
13
+
14
+ /**
15
+ * Type describing available events.
16
+ *
17
+ * Тип, описывающий доступные события.
18
+ */
19
+ export type ListGroupEmits = {}
20
+
21
+ /**
22
+ * Type describing available properties.
23
+ *
24
+ * Тип, описывающий доступные свойства.
25
+ */
26
+ export interface ListGroupExpose {
27
+ open: ComputedRef<boolean>
28
+ }
29
+
30
+ /**
31
+ * Type describing available slots.
32
+ *
33
+ * Тип, описывающий доступные слоты.
34
+ */
35
+ export interface ListGroupSlots {
36
+ head?(props: { open: boolean }): any
37
+ list?(props: any): any
38
+ }
39
+
40
+ /**
41
+ * Type describing subclasses.
42
+ *
43
+ * Тип, описывающий подклассы.
44
+ */
45
+ export type ListGroupClasses = {
46
+ main: ConstrClass
47
+ // :classes [!] System label / Системная метка
48
+ head: string
49
+ list: string
50
+ // :classes [!] System label / Системная метка
51
+ }
@@ -0,0 +1,115 @@
1
+ import { computed, type Ref, type ToRefs } from 'vue'
2
+ import { type ConstrClassObject, type ConstrEmit, DesignComp } from '@dxtmisha/functional'
3
+
4
+ import { getClassTegAStatic } from '../../functions/getClassTegAStatic'
5
+
6
+ import { IconTrailingInclude } from '../Icon'
7
+ import { ProgressInclude } from '../Progress'
8
+ import { RippleInclude } from '../Ripple'
9
+ import { SkeletonInclude } from '../Skeleton'
10
+
11
+ import { LabelHighlightInclude } from '../../classes/LabelHighlightInclude'
12
+ import { PrefixInclude } from '../../classes/PrefixInclude'
13
+ import { CaptionInclude } from '../../classes/CaptionInclude'
14
+ import { SuffixInclude } from '../../classes/SuffixInclude'
15
+ import { DescriptionInclude } from '../../classes/DescriptionInclude'
16
+ import { BadgeInclude } from '../Badge/BadgeInclude'
17
+
18
+ import { EnabledInclude } from '../../classes/EnabledInclude'
19
+
20
+ import type { ListItemComponents, ListItemEmits, ListItemSlots } from './types'
21
+ import type { ListItemPropsBasic } from './props'
22
+ import { EventClickInclude } from '../../classes/EventClickInclude'
23
+
24
+ /**
25
+ * ListItem
26
+ */
27
+ export class ListItem {
28
+ readonly icon: IconTrailingInclude
29
+ readonly label: LabelHighlightInclude
30
+ readonly prefix: PrefixInclude
31
+ readonly caption: CaptionInclude
32
+ readonly suffix: SuffixInclude
33
+ readonly description: DescriptionInclude
34
+ readonly badge: BadgeInclude
35
+
36
+ readonly ripple: RippleInclude
37
+ readonly progress: ProgressInclude
38
+ readonly skeleton: SkeletonInclude
39
+
40
+ readonly enabled: EnabledInclude
41
+ readonly event: EventClickInclude
42
+
43
+ /**
44
+ * Constructor
45
+ * @param props input data/ входные данные
46
+ * @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
47
+ * @param element input element/ элемент ввода
48
+ * @param classDesign design name/ название дизайна
49
+ * @param className class name/ название класса
50
+ * @param components object for working with components/ объект для работы с компонентами
51
+ * @param slots object for working with slots/ объект для работы со слотами
52
+ * @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
53
+ */
54
+ constructor(
55
+ protected readonly props: ListItemPropsBasic,
56
+ protected readonly refs: ToRefs<ListItemPropsBasic>,
57
+ protected readonly element: Ref<HTMLElement | undefined>,
58
+ protected readonly classDesign: string,
59
+ protected readonly className: string,
60
+ protected readonly components?: DesignComp<ListItemComponents, ListItemPropsBasic>,
61
+ protected readonly slots?: ListItemSlots,
62
+ protected readonly emits?: ConstrEmit<ListItemEmits>
63
+ ) {
64
+ const progress = new ProgressInclude(
65
+ props,
66
+ className,
67
+ components,
68
+ {
69
+ circular: true,
70
+ inverse: true
71
+ }
72
+ )
73
+ const skeleton = new SkeletonInclude(
74
+ props,
75
+ classDesign,
76
+ ['classTextVariant']
77
+ )
78
+ const enabled = new EnabledInclude(props, progress)
79
+
80
+ this.icon = new IconTrailingInclude(props, className, components)
81
+ this.label = new LabelHighlightInclude(
82
+ props,
83
+ className,
84
+ undefined,
85
+ slots,
86
+ undefined,
87
+ skeleton
88
+ )
89
+ this.prefix = new PrefixInclude(props, className, slots, skeleton)
90
+ this.caption = new CaptionInclude(props, className, slots)
91
+ this.suffix = new SuffixInclude(props, className, slots)
92
+ this.description = new DescriptionInclude(props, className, slots, skeleton)
93
+ this.badge = new BadgeInclude(
94
+ props,
95
+ className,
96
+ components,
97
+ {
98
+ overlap: 'static'
99
+ }
100
+ )
101
+
102
+ this.ripple = new RippleInclude(className, components, enabled)
103
+ this.progress = progress
104
+ this.skeleton = skeleton
105
+
106
+ this.enabled = enabled
107
+ this.event = new EventClickInclude(props, enabled, emits)
108
+ }
109
+
110
+ /** values for the class/ значения для класса */
111
+ readonly classes = computed<ConstrClassObject>(() => ({
112
+ [`${this.className}--description`]: this.description.is.value,
113
+ [getClassTegAStatic(this.classDesign)]: true
114
+ }))
115
+ }