@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,54 @@
1
+ import type { ImagePropsBasic, ImageValue } from '../Image'
2
+ import type { SkeletonPropsInclude } from '../Skeleton'
3
+
4
+ interface IconPropsToken {
5
+ // :type [!] System label / Системная метка
6
+ turn?: boolean
7
+ disabled?: boolean
8
+ hide?: boolean
9
+ asPalette?: boolean
10
+ dir?: boolean
11
+ overlay?: boolean
12
+ dynamic?: boolean
13
+ start?: boolean
14
+ end?: boolean
15
+ high?: boolean
16
+ animationType?: 'type1' | 'type2'
17
+ animationShow?: boolean
18
+ // :type [!] System label / Системная метка
19
+ }
20
+
21
+ export interface IconPropsBasic<
22
+ Image extends ImagePropsBasic = ImagePropsBasic
23
+ > extends SkeletonPropsInclude {
24
+ // Status
25
+ /** Активное состояние иконки/ Active state of the icon */
26
+ active?: boolean
27
+
28
+ // Icon
29
+ /** Value of the main icon/ Значение основной иконки */
30
+ icon?: ImageValue<Image>
31
+ /** Value of the active icon/ Значение активной иконки */
32
+ iconActive?: ImageValue<Image>
33
+ }
34
+
35
+ /**
36
+ * Type describing incoming properties.
37
+ *
38
+ * Тип, описывающий входящие свойства.
39
+ */
40
+ export interface IconProps extends IconPropsBasic, IconPropsToken {
41
+ }
42
+
43
+ /**
44
+ * Default value for property.
45
+ *
46
+ * Значение по умолчанию для свойства.
47
+ */
48
+ export const defaultsIcon = {
49
+ ...{
50
+ // :default [!] System label / Системная метка
51
+ animationType: 'type1'
52
+ // :default [!] System label / Системная метка
53
+ }
54
+ }
@@ -0,0 +1,106 @@
1
+ @use "@dxtmisha/styles/properties" as ui;
2
+
3
+ @mixin mixinIcon {
4
+ $clipPath: clip-path #{ui.v('d.sys.transitionDuration.fade.enter')} #{ui.v('d.sys.transitionFunction.deceleration')};
5
+ $margin: margin #{ui.v('d.ref.transitionDuration.1')} linear;
6
+ $background: background #{ui.v('d.sys.transitionDuration.standard')} linear;
7
+ $opacity: opacity #{ui.v('d.sys.transitionDuration.standard')} linear;
8
+ $transform: transform #{ui.v('d.sys.transitionDuration.standard')} linear;
9
+
10
+ @include ui.initByCustom('_factor', ui.v('??factor', 1.5));
11
+ @include ui.initByCustom('_width', ui.v('??width', #{calc(var(--sys-font-size, 16px) * #{ui.v('??_factor')})}));
12
+
13
+ display: inline-flex;
14
+ overflow: visible;
15
+ position: relative;
16
+ justify-content: center;
17
+ align-items: center;
18
+
19
+ @include ui.squared(#{ui.v('??_width')});
20
+ min-width: ui.v('??_width');
21
+
22
+ @include ui.textSelectNone;
23
+
24
+ border-radius: ui.v('??rounded', inherit);
25
+
26
+ transition-property: clip-path, margin, opacity, transform;
27
+ transition-duration: ui.v('d.sys.transitionDuration.standard');
28
+
29
+ @include ui.disabled {
30
+ cursor: default;
31
+ }
32
+
33
+ &--hide {
34
+ opacity: 0;
35
+ transform: scale(.8);
36
+ }
37
+
38
+ &--asPalette {
39
+ @include ui.colorAsPalette;
40
+ }
41
+
42
+ &--dir {
43
+ transform: scaleX(#{var(--d-dir)});
44
+ }
45
+
46
+ &--overlay {
47
+ @include ui.backgroundColor(ui.v('??sys.color', var(--sys-color)));
48
+ }
49
+
50
+ &--dynamic {
51
+ @include ui.gradient(ui.v('??sys.color', var(--sys-color)), 0);
52
+ cursor: pointer;
53
+ }
54
+
55
+ &--start {
56
+ order: 1;
57
+ }
58
+
59
+ &--end {
60
+ order: 99999;
61
+ }
62
+
63
+ &--high {
64
+ z-index: 16;
65
+ }
66
+
67
+ &--animationType {
68
+ &--type2 {
69
+ clip-path: inset(0 0 0 0);
70
+
71
+ transition: #{$clipPath}, #{$margin}, #{$background}, #{$opacity}, #{$transform};
72
+
73
+ @include ui.state('hide') {
74
+ clip-path: inset(0 100% 0 0);
75
+ margin: 0 calc(#{ui.v('??_width')} * -1) 0 0 !important;
76
+ opacity: 1;
77
+
78
+ transition-duration: ui.v('d.sys.transitionDuration.fade.exit');
79
+ transition-timing-function: linear;
80
+ transform: none;
81
+ }
82
+ }
83
+ }
84
+
85
+ &--animationShow {
86
+ animation-name: ui.n('??show');
87
+ animation-duration: ui.v('d.sys.transitionDuration.standard');
88
+ }
89
+
90
+ @keyframes #{ui.n('??show')} {
91
+ 0% {
92
+ opacity: 0;
93
+ transform: scale(.6);
94
+ }
95
+ 20% {
96
+ transform: scale(.6);
97
+ }
98
+ 60% {
99
+ opacity: 1;
100
+ }
101
+ 100% {
102
+ opacity: 1;
103
+ transform: none;
104
+ }
105
+ }
106
+ }
@@ -0,0 +1,46 @@
1
+ import type { ComputedRef } from 'vue'
2
+ import type { ConstrClass } from '@dxtmisha/functional'
3
+ import type { ImageComponentsInclude, ImageEmitsInclude } from '../Image'
4
+
5
+ /**
6
+ * Interface for describing which components need to be connected for work.
7
+ *
8
+ * Интерфейс для описания, какие компоненты надо подключить для работы.
9
+ */
10
+ export type IconComponents = ImageComponentsInclude
11
+
12
+ /**
13
+ * Type describing available events.
14
+ *
15
+ * Тип, описывающий доступные события.
16
+ */
17
+ export type IconEmits = ImageEmitsInclude
18
+
19
+ /**
20
+ * Type describing available properties.
21
+ *
22
+ * Тип, описывающий доступные свойства.
23
+ */
24
+ export interface IconExpose {
25
+ isActive: ComputedRef<boolean>
26
+ }
27
+
28
+ /**
29
+ * Type describing available slots.
30
+ *
31
+ * Тип, описывающий доступные слоты.
32
+ */
33
+ export interface IconSlots {
34
+ default? (props: any): any
35
+ }
36
+
37
+ /**
38
+ * Type describing subclasses.
39
+ *
40
+ * Тип, описывающий подклассы.
41
+ */
42
+ export type IconClasses = {
43
+ main: ConstrClass
44
+ // :classes [!] System label / Системная метка
45
+ // :classes [!] System label / Системная метка
46
+ }
@@ -0,0 +1,184 @@
1
+ import { computed, onUnmounted, type Ref, watch } from 'vue'
2
+ import {
3
+ type ConstrClassObject,
4
+ type ConstrEmit,
5
+ type ConstrStyles,
6
+ isString
7
+ } from '@dxtmisha/functional'
8
+
9
+ import { ImageType } from './ImageType'
10
+ import { ImageData } from './ImageData'
11
+
12
+ import { ImageCoordinator } from './ImageCoordinator'
13
+ import { ImagePosition } from './ImagePosition'
14
+ import { ImageAdaptiveItem } from './ImageAdaptiveItem'
15
+ import { ImageBackground } from './ImageBackground'
16
+
17
+ import { ImageTypeValue } from './basicTypes'
18
+ import type { ImageEmits } from './types'
19
+ import type { ImageProps } from './props'
20
+
21
+ /**
22
+ * Base class for working with images and icons.
23
+ *
24
+ * Базовый класс для работы с изображениями и иконками.
25
+ */
26
+ export class Image {
27
+ readonly type: ImageType
28
+ readonly data: ImageData
29
+
30
+ readonly coordinator: ImageCoordinator
31
+ readonly position: ImagePosition
32
+ readonly adaptiveItem: ImageAdaptiveItem
33
+ readonly background: ImageBackground
34
+
35
+ /**
36
+ * Constructor
37
+ * @param props input data/ входные данные
38
+ * @param element input element/ элемент ввода
39
+ * @param className class name/ название класса
40
+ * @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
41
+ */
42
+ constructor(
43
+ protected readonly props: ImageProps,
44
+ protected readonly element: Ref<HTMLElement | undefined>,
45
+ protected readonly className: string,
46
+ protected readonly emits?: ConstrEmit<ImageEmits>
47
+ ) {
48
+ this.type = new ImageType(props)
49
+ this.data = new ImageData(props, this.type)
50
+
51
+ this.coordinator = new ImageCoordinator(props)
52
+ this.position = new ImagePosition(props, this.coordinator)
53
+
54
+ this.adaptiveItem = new ImageAdaptiveItem(
55
+ props,
56
+ this.data,
57
+ element
58
+ )
59
+
60
+ this.background = new ImageBackground(
61
+ props,
62
+ this.data,
63
+ this.coordinator,
64
+ this.adaptiveItem
65
+ )
66
+
67
+ if (emits) {
68
+ watch(this.data.image, (image) => {
69
+ emits('load', {
70
+ type: this.type.item.value,
71
+ image
72
+ })
73
+ })
74
+ }
75
+
76
+ onUnmounted(() => this.adaptiveItem.remove())
77
+ }
78
+
79
+ /**
80
+ * Values for the text. Text is used for the type of icon that works as a background.
81
+ *
82
+ * Значения для текста. Текст используется для типа иконки, который работает как фон.
83
+ */
84
+ readonly text = computed<string | undefined>(() => {
85
+ const type = this.type.item.value
86
+
87
+ if (type === ImageTypeValue.pdf) {
88
+ const image = this.data.image.value
89
+
90
+ if (isString(image)) {
91
+ return image
92
+ }
93
+ }
94
+
95
+ const value = this.props.value
96
+
97
+ if (
98
+ type
99
+ && isString(value)
100
+ && [
101
+ 'filled',
102
+ 'outlined',
103
+ 'round',
104
+ 'sharp',
105
+ 'two-tone',
106
+ 'material'
107
+ ].indexOf(type) !== -1
108
+ ) {
109
+ return value.replace(/^(filled|outlined|round|sharp|two-tone)-/, '')
110
+ }
111
+
112
+ return undefined
113
+ })
114
+
115
+ /**
116
+ * Values for the class.
117
+ *
118
+ * Значения для класса.
119
+ */
120
+ readonly classes = computed<ConstrClassObject>(() => {
121
+ const type = this.type.item.value
122
+ const data = {
123
+ [`${this.className}--type--${type}`]: type !== undefined,
124
+ [`${this.className}--background`]: this.background.isImage(),
125
+ notranslate: true
126
+ }
127
+
128
+ switch (type) {
129
+ case 'outlined':
130
+ data['material-symbols-outlined'] = true
131
+ break
132
+ case 'round':
133
+ data['material-symbols-rounded'] = true
134
+ break
135
+ case 'sharp':
136
+ data['material-symbols-sharp'] = true
137
+ break
138
+ case 'material':
139
+ data['material-icons'] = true
140
+ break
141
+ }
142
+
143
+ return data
144
+ })
145
+
146
+ /**
147
+ * Calculates all properties for the style of the element.
148
+ *
149
+ * Вычисляет все свойства для стиля элемента.
150
+ */
151
+ readonly styles = computed<ConstrStyles>(() => {
152
+ const value = this.props.value
153
+
154
+ if (value) {
155
+ switch (this.type.item.value) {
156
+ case ImageTypeValue.file:
157
+ case ImageTypeValue.image:
158
+ return {
159
+ 'background-image': this.background.image.value,
160
+ 'background-size': this.background.size.value,
161
+ 'background-position-x': this.position.x.value,
162
+ 'background-position-y': this.position.y.value
163
+ }
164
+ case ImageTypeValue.icon:
165
+ return {
166
+ 'background-image': this.background.image.value
167
+ }
168
+ case ImageTypeValue.flag:
169
+ return {
170
+ 'background-image': this.background.image.value,
171
+ 'background-size': 'contain'
172
+ }
173
+ case ImageTypeValue.public:
174
+ return { 'mask-image': this.background.image.value }
175
+ case ImageTypeValue.color:
176
+ if (isString(value)) {
177
+ return { 'background-color': value }
178
+ }
179
+ }
180
+ }
181
+
182
+ return {} as ConstrStyles
183
+ })
184
+ }
@@ -0,0 +1,230 @@
1
+ import { EventItem, forEach } from '@dxtmisha/functional'
2
+
3
+ import { ImageAdaptiveItem } from './ImageAdaptiveItem'
4
+ import { ImageCalculationList } from './ImageCalculationList'
5
+
6
+ /**
7
+ * Class for working with image scaling according to the physical size of the object in the image.
8
+ *
9
+ * Класс для работы с масштабированием изображения по физическому размеру объекта на изображении.
10
+ */
11
+ export class ImageAdaptiveGroup {
12
+ protected static objects: ImageAdaptiveItem[] = []
13
+ protected static objectsAdaptive: ImageAdaptiveItem[] = []
14
+
15
+ private static cache: string[] = []
16
+
17
+ protected static event?: EventItem<Window, Event, any>
18
+ protected static time?: boolean
19
+
20
+ /**
21
+ * Checks if an element is present in the list.
22
+ *
23
+ * Проверяет, присутствует ли элемент в списке.
24
+ * @param item object for working with images/ объект для работы с изображениями
25
+ */
26
+ static is(item: ImageAdaptiveItem): boolean {
27
+ return this.objects.findIndex(itemValue => itemValue === item) !== -1
28
+ }
29
+
30
+ /**
31
+ * Adding a new element for tracking.
32
+ *
33
+ * Добавление нового элемента для отслеживания.
34
+ * @param item object for working with images/ объект для работы с изображениями
35
+ */
36
+ static add(item: ImageAdaptiveItem): void {
37
+ if (!this.is(item)) {
38
+ this.objects.push(item)
39
+ this.make()
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Removal of the element.
45
+ *
46
+ * Удаления элемента.
47
+ * @param item object for working with images/ объект для работы с изображениями
48
+ */
49
+ static remove(item: ImageAdaptiveItem): void {
50
+ const key = this.objects.findIndex(itemValue => itemValue === item)
51
+
52
+ if (key !== -1) {
53
+ this.objects.splice(key, 1)
54
+ this.cache = []
55
+ }
56
+
57
+ this.make()
58
+ }
59
+
60
+ /**
61
+ * Resets all cached data and rereads scaling for all elements.
62
+ *
63
+ * Обнуляет все кэшированные данные и перечитывает масштабирование для всех элементов.
64
+ */
65
+ static reset(): void {
66
+ this.cache = []
67
+ this.start()
68
+ }
69
+
70
+ /**
71
+ * Starts the calculation process or turns it off if there are no active elements in the list.
72
+ *
73
+ * Запускает процесс вычисления или отключает его, если в списке нет активных элементов.
74
+ */
75
+ static make(): void {
76
+ if (
77
+ this.event
78
+ && this.objects.length < 1
79
+ ) {
80
+ this.event.stop()
81
+ this.event = undefined
82
+ } else if (this.objects.length > 0) {
83
+ if (!this.event) {
84
+ this.event = new EventItem(window, ['scroll-sync'], () => this.start()).start()
85
+ }
86
+
87
+ if (!this.time) {
88
+ this.time = true
89
+ requestAnimationFrame(() => {
90
+ this.time = false
91
+ this.start()
92
+ })
93
+ }
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Returns a list of elements that are visible or constantly being calculated.
99
+ *
100
+ * Возвращает список элементов, которые видны или постоянно вычисляются.
101
+ */
102
+ protected static getItemIdByVisible(): string[] {
103
+ return forEach(this.objectsAdaptive, item => item.getId())
104
+ }
105
+
106
+ /**
107
+ * Method for starting the calculation of scaling elements in the list.
108
+ *
109
+ * Метод для запуска вычисления масштабирования элементов в списке.
110
+ */
111
+ protected static start(): void {
112
+ if (this.isAdaptive()) {
113
+ this.makeAdaptive()
114
+
115
+ const visible = this.getItemIdByVisible()
116
+
117
+ if (this.isCache(visible)) {
118
+ this.cache = visible
119
+
120
+ this.makeSize()
121
+ this.makePercent()
122
+ this.makeFactorMax()
123
+ }
124
+ } else {
125
+ this.event?.stop()
126
+ }
127
+ }
128
+
129
+ /**
130
+ * Updates the list of elements available for calculation. These are the
131
+ * elements that are close to the border of the visible area.
132
+ *
133
+ * Обновляет список доступных для вычисления элементов. Это те элементы,
134
+ * которые близки к границе видимой области.
135
+ */
136
+ protected static makeAdaptive(): void {
137
+ this.objectsAdaptive = []
138
+ this.objects.forEach((item) => {
139
+ item.make()
140
+
141
+ if (item.isBeyond()) {
142
+ this.objectsAdaptive.push(item)
143
+ }
144
+ })
145
+ }
146
+
147
+ /**
148
+ * Calculates the dimensions of an element relative to the image size,
149
+ * the size of the element, and its physical location on the image.
150
+ *
151
+ * Вычисляет размеры элемента относительно размера изображения,
152
+ * размера элемента и его физического расположения на изображении.
153
+ */
154
+ protected static makeSize(): void {
155
+ ImageCalculationList.reset()
156
+
157
+ this.objectsAdaptive.forEach((item) => {
158
+ const element = item.element.value
159
+
160
+ if (element) {
161
+ ImageCalculationList.get(item.group.value)
162
+ .makeWidth(item.width.value)
163
+ .makeHeight(item.height.value)
164
+ .makeOffsetWidth(element.offsetWidth)
165
+ .makeOffsetHeight(element.offsetHeight)
166
+ }
167
+ })
168
+ }
169
+
170
+ /**
171
+ * Calculation of the basic scaling of an element without taking into account other elements.
172
+ *
173
+ * Вычисление базового масштабирования элемента без учета других элементов.
174
+ */
175
+ protected static makePercent(): void {
176
+ if (ImageCalculationList.isSize()) {
177
+ this.objectsAdaptive.forEach((item) => {
178
+ const element = item.element.value
179
+ const calculation = ImageCalculationList.get(item.group.value)
180
+
181
+ if (element) {
182
+ const width = calculation.getWidth()
183
+ const height = calculation.getHeight()
184
+
185
+ item.setPercent(
186
+ item.width.value * (width ? 1 / width : 0) * (calculation.getOffsetWidth() / element.offsetWidth),
187
+ item.height.value * (height ? 1 / height : 0) * (calculation.getOffsetHeight() / element.offsetHeight)
188
+ )
189
+ }
190
+ })
191
+ }
192
+ }
193
+
194
+ /**
195
+ * Calculation of the largest element to determine the base size.
196
+ * This parameter is used for scaling other elements,
197
+ * reducing them to the necessary proportion.
198
+ *
199
+ * Вычисление самого большого элемента для определения базового размера.
200
+ * Этот параметр используется для масштабирования других элементов,
201
+ * уменьшая их до нужной пропорции.
202
+ */
203
+ protected static makeFactorMax(): void {
204
+ if (ImageCalculationList.isSize()) {
205
+ this.objectsAdaptive.forEach((item) => {
206
+ ImageCalculationList.get(item.group.value)
207
+ .makeFactorMax(item.factor.value)
208
+ })
209
+ }
210
+ }
211
+
212
+ /**
213
+ * Checks if there is an active element at the moment.
214
+ *
215
+ * Проверяет, есть ли в текущий момент активный элемент.
216
+ */
217
+ private static isAdaptive(): boolean {
218
+ return Boolean(this.objects.find(item => item.is()))
219
+ }
220
+
221
+ /**
222
+ * Checks whether the composition of visible elements has changed.
223
+ *
224
+ * Проверяет, изменился ли состав видимых элементов.
225
+ * @param visible list of indices of visible elements/ список индексов видимых элементов
226
+ */
227
+ private static isCache(visible: string[]): boolean {
228
+ return this.cache.join('|') !== visible.join('|')
229
+ }
230
+ }