@dxtmisha/constructor 0.23.0 → 0.30.1

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 (343) hide show
  1. package/package.json +36 -6
  2. package/src/classes/AriaStaticInclude.ts +269 -0
  3. package/src/classes/DescriptionInclude.ts +19 -2
  4. package/src/classes/EnabledInclude.ts +11 -0
  5. package/src/classes/EventClickInclude.ts +2 -2
  6. package/src/classes/LabelHighlightInclude.ts +35 -0
  7. package/src/classes/LabelInclude.ts +40 -5
  8. package/src/classes/ModelInclude.ts +50 -1
  9. package/src/classes/ModelValueInclude.ts +73 -0
  10. package/src/classes/TabIndexInclude.ts +260 -0
  11. package/src/classes/TextInclude.ts +102 -0
  12. package/src/classes/TouchEventInclude.ts +284 -0
  13. package/src/classes/field/FieldArrowInclude.ts +189 -0
  14. package/src/classes/field/FieldAttributesInclude.ts +87 -28
  15. package/src/classes/field/FieldChangeInclude.ts +1 -1
  16. package/src/classes/field/FieldElementInclude.ts +1 -1
  17. package/src/classes/field/FieldEventInclude.ts +253 -0
  18. package/src/classes/field/FieldInputModeInclude.ts +48 -0
  19. package/src/classes/field/FieldMatchInclude.ts +9 -3
  20. package/src/classes/field/FieldTypeInclude.ts +11 -6
  21. package/src/classes/field/FieldValidationInclude.ts +1 -4
  22. package/src/classes/field/FieldValueInclude.ts +10 -0
  23. package/src/constructors/Accordion/Accordion.ts +68 -0
  24. package/src/constructors/Accordion/AccordionDesign.tsx +192 -0
  25. package/src/constructors/Accordion/basicTypes.ts +0 -0
  26. package/src/constructors/Accordion/index.ts +5 -0
  27. package/src/constructors/Accordion/properties.json +16 -0
  28. package/src/constructors/Accordion/props.ts +55 -0
  29. package/src/constructors/Accordion/style.scss +12 -0
  30. package/src/constructors/Accordion/types.ts +63 -0
  31. package/src/constructors/ActionSheet/ActionSheet.ts +78 -0
  32. package/src/constructors/ActionSheet/ActionSheetDesign.tsx +125 -0
  33. package/src/constructors/ActionSheet/basicTypes.ts +0 -0
  34. package/src/constructors/ActionSheet/index.ts +5 -0
  35. package/src/constructors/ActionSheet/properties.json +14 -0
  36. package/src/constructors/ActionSheet/props.ts +44 -0
  37. package/src/constructors/ActionSheet/style.scss +25 -0
  38. package/src/constructors/ActionSheet/types.ts +54 -0
  39. package/src/constructors/Actions/Actions.ts +60 -0
  40. package/src/constructors/Actions/ActionsDesign.tsx +212 -0
  41. package/src/constructors/Actions/ActionsInclude.ts +109 -0
  42. package/src/constructors/Actions/basicTypes.ts +40 -0
  43. package/src/constructors/Actions/index.ts +6 -0
  44. package/src/constructors/Actions/properties.json +63 -0
  45. package/src/constructors/Actions/props.ts +42 -0
  46. package/src/constructors/Actions/style.scss +11 -0
  47. package/src/constructors/Actions/types.ts +52 -0
  48. package/src/constructors/Anchor/Anchor.ts +113 -0
  49. package/src/constructors/Anchor/AnchorDesign.tsx +242 -0
  50. package/src/constructors/Anchor/AnchorEvent.ts +76 -0
  51. package/src/constructors/Anchor/AnchorHref.ts +54 -0
  52. package/src/constructors/Anchor/AnchorIcon.ts +54 -0
  53. package/src/constructors/Anchor/AnchorTo.ts +46 -0
  54. package/src/constructors/Anchor/basicTypes.ts +9 -0
  55. package/src/constructors/Anchor/index.ts +5 -0
  56. package/src/constructors/Anchor/properties.json +3 -0
  57. package/src/constructors/Anchor/props.ts +54 -0
  58. package/src/constructors/Anchor/style.scss +10 -0
  59. package/src/constructors/Anchor/types.ts +47 -0
  60. package/src/constructors/Arrow/Arrow.ts +134 -0
  61. package/src/constructors/Arrow/ArrowDesign.tsx +226 -0
  62. package/src/constructors/Arrow/ArrowElement.ts +139 -0
  63. package/src/constructors/Arrow/ArrowElementTarget.ts +72 -0
  64. package/src/constructors/Arrow/ArrowEvent.ts +126 -0
  65. package/src/constructors/Arrow/ArrowInclude.ts +85 -0
  66. package/src/constructors/Arrow/ArrowParent.ts +100 -0
  67. package/src/constructors/Arrow/ArrowPosition.ts +231 -0
  68. package/src/constructors/Arrow/basicTypes.ts +50 -0
  69. package/src/constructors/Arrow/index.ts +6 -0
  70. package/src/constructors/Arrow/properties.json +23 -0
  71. package/src/constructors/Arrow/props.ts +31 -0
  72. package/src/constructors/Arrow/style.scss +133 -0
  73. package/src/constructors/Arrow/types.ts +54 -0
  74. package/src/constructors/Badge/BadgeDesign.tsx +4 -1
  75. package/src/constructors/Badge/properties.json +36 -36
  76. package/src/constructors/Badge/props.ts +3 -1
  77. package/src/constructors/Badge/types.ts +3 -3
  78. package/src/constructors/Bars/Bars.ts +10 -4
  79. package/src/constructors/Bars/BarsDesign.tsx +17 -11
  80. package/src/constructors/Bars/BarsInclude.ts +5 -2
  81. package/src/constructors/Bars/properties.json +6 -6
  82. package/src/constructors/Bars/props.ts +3 -1
  83. package/src/constructors/Bars/style.scss +4 -0
  84. package/src/constructors/Bars/types.ts +3 -3
  85. package/src/constructors/Block/Block.ts +105 -0
  86. package/src/constructors/Block/BlockDesign.tsx +219 -0
  87. package/src/constructors/Block/basicTypes.ts +0 -0
  88. package/src/constructors/Block/index.ts +5 -0
  89. package/src/constructors/Block/properties.json +10 -0
  90. package/src/constructors/Block/props.ts +46 -0
  91. package/src/constructors/Block/style.scss +11 -0
  92. package/src/constructors/Block/types.ts +64 -0
  93. package/src/constructors/Button/Button.ts +26 -2
  94. package/src/constructors/Button/ButtonDesign.tsx +11 -6
  95. package/src/constructors/Button/ButtonInclude.ts +8 -5
  96. package/src/constructors/Button/index.ts +1 -0
  97. package/src/constructors/Button/properties.json +84 -84
  98. package/src/constructors/Button/props.ts +5 -1
  99. package/src/constructors/Button/style.scss +1 -1
  100. package/src/constructors/Button/types.ts +2 -2
  101. package/src/constructors/Cell/Cell.ts +23 -6
  102. package/src/constructors/Cell/CellDesign.tsx +53 -22
  103. package/src/constructors/Cell/basicTypes.ts +33 -0
  104. package/src/constructors/Cell/properties.json +52 -52
  105. package/src/constructors/Cell/props.ts +16 -13
  106. package/src/constructors/Cell/style.scss +1 -1
  107. package/src/constructors/Cell/types.ts +3 -3
  108. package/src/constructors/Chip/ChipDesign.tsx +5 -5
  109. package/src/constructors/Chip/ChipInclude.ts +83 -0
  110. package/src/constructors/Chip/basicTypes.ts +12 -0
  111. package/src/constructors/Chip/index.ts +2 -0
  112. package/src/constructors/Chip/properties.json +3 -3
  113. package/src/constructors/Chip/types.ts +5 -5
  114. package/src/constructors/ChipGroup/ChipGroup.ts +74 -0
  115. package/src/constructors/ChipGroup/ChipGroupDesign.tsx +162 -0
  116. package/src/constructors/ChipGroup/basicTypes.ts +6 -0
  117. package/src/constructors/ChipGroup/index.ts +5 -0
  118. package/src/constructors/ChipGroup/properties.json +3 -0
  119. package/src/constructors/ChipGroup/props.ts +50 -0
  120. package/src/constructors/ChipGroup/style.scss +6 -0
  121. package/src/constructors/ChipGroup/types.ts +47 -0
  122. package/src/constructors/Dialog/Dialog.ts +145 -0
  123. package/src/constructors/Dialog/DialogDesign.tsx +135 -0
  124. package/src/constructors/Dialog/basicTypes.ts +0 -0
  125. package/src/constructors/Dialog/index.ts +5 -0
  126. package/src/constructors/Dialog/properties.json +23 -0
  127. package/src/constructors/Dialog/props.ts +76 -0
  128. package/src/constructors/Dialog/style.scss +18 -0
  129. package/src/constructors/Dialog/types.ts +67 -0
  130. package/src/constructors/Field/Field.ts +58 -19
  131. package/src/constructors/Field/FieldDesign.tsx +35 -17
  132. package/src/constructors/Field/FieldInclude.ts +141 -11
  133. package/src/constructors/Field/basicTypes.ts +35 -19
  134. package/src/constructors/Field/properties.json +92 -86
  135. package/src/constructors/Field/props.ts +6 -3
  136. package/src/constructors/Field/style.scss +36 -20
  137. package/src/constructors/Field/types.ts +13 -13
  138. package/src/constructors/FieldCounter/FieldCounterDesign.tsx +1 -0
  139. package/src/constructors/FieldCounter/FieldCounterInclude.ts +3 -1
  140. package/src/constructors/FieldCounter/basicTypes.ts +1 -0
  141. package/src/constructors/FieldCounter/properties.json +3 -3
  142. package/src/constructors/FieldCounter/props.ts +5 -2
  143. package/src/constructors/FieldCounter/types.ts +1 -1
  144. package/src/constructors/FieldLabel/FieldLabelDesign.tsx +6 -2
  145. package/src/constructors/FieldLabel/FieldLabelInclude.ts +13 -4
  146. package/src/constructors/FieldLabel/properties.json +4 -4
  147. package/src/constructors/FieldLabel/props.ts +2 -2
  148. package/src/constructors/FieldLabel/types.ts +2 -2
  149. package/src/constructors/FieldMessage/FieldMessage.ts +19 -0
  150. package/src/constructors/FieldMessage/FieldMessageDesign.tsx +36 -4
  151. package/src/constructors/FieldMessage/FieldMessageInclude.ts +11 -1
  152. package/src/constructors/FieldMessage/basicTypes.ts +15 -1
  153. package/src/constructors/FieldMessage/properties.json +10 -9
  154. package/src/constructors/FieldMessage/props.ts +4 -0
  155. package/src/constructors/FieldMessage/style.scss +16 -1
  156. package/src/constructors/FieldMessage/types.ts +4 -2
  157. package/src/constructors/Icon/Icon.ts +37 -2
  158. package/src/constructors/Icon/IconDesign.tsx +46 -39
  159. package/src/constructors/Icon/properties.json +25 -25
  160. package/src/constructors/Icon/props.ts +22 -16
  161. package/src/constructors/Icon/types.ts +1 -1
  162. package/src/constructors/Image/Image.ts +68 -10
  163. package/src/constructors/Image/ImageBackground.ts +15 -2
  164. package/src/constructors/Image/ImageCoordinator.ts +4 -2
  165. package/src/constructors/Image/ImageData.ts +4 -0
  166. package/src/constructors/Image/ImageDesign.tsx +81 -15
  167. package/src/constructors/Image/ImageFile.ts +2 -13
  168. package/src/constructors/Image/ImageImg.ts +218 -0
  169. package/src/constructors/Image/ImagePdf.ts +2 -2
  170. package/src/constructors/Image/basicTypes.ts +5 -0
  171. package/src/constructors/Image/properties.json +17 -17
  172. package/src/constructors/Image/props.ts +34 -7
  173. package/src/constructors/Image/style.scss +42 -0
  174. package/src/constructors/Image/types.ts +1 -1
  175. package/src/constructors/Input/Input.ts +146 -0
  176. package/src/constructors/Input/InputDesign.tsx +174 -0
  177. package/src/constructors/Input/InputPassword.ts +54 -0
  178. package/src/constructors/Input/basicTypes.ts +3 -0
  179. package/src/constructors/Input/index.ts +5 -0
  180. package/src/constructors/Input/properties.json +2 -0
  181. package/src/constructors/Input/props.ts +53 -0
  182. package/src/constructors/Input/style.scss +5 -0
  183. package/src/constructors/Input/types.ts +48 -0
  184. package/src/constructors/List/List.ts +36 -11
  185. package/src/constructors/List/ListControl.ts +2 -2
  186. package/src/constructors/List/ListDesign.tsx +59 -38
  187. package/src/constructors/List/ListGo.ts +5 -3
  188. package/src/constructors/List/properties.json +16 -16
  189. package/src/constructors/List/props.ts +7 -0
  190. package/src/constructors/List/style.scss +14 -0
  191. package/src/constructors/List/types.ts +9 -9
  192. package/src/constructors/ListGroup/ListGroupDesign.tsx +8 -3
  193. package/src/constructors/ListGroup/basicTypes.ts +7 -0
  194. package/src/constructors/ListGroup/properties.json +15 -15
  195. package/src/constructors/ListGroup/props.ts +4 -4
  196. package/src/constructors/ListGroup/types.ts +2 -1
  197. package/src/constructors/ListItem/ListItem.ts +67 -7
  198. package/src/constructors/ListItem/ListItemDesign.tsx +13 -10
  199. package/src/constructors/ListItem/properties.json +52 -52
  200. package/src/constructors/ListItem/props.ts +24 -15
  201. package/src/constructors/ListItem/types.ts +12 -12
  202. package/src/constructors/ListMenu/ListMenu.ts +2 -1
  203. package/src/constructors/ListMenu/ListMenuDesign.tsx +3 -3
  204. package/src/constructors/ListMenu/properties.json +19 -19
  205. package/src/constructors/ListMenu/types.ts +3 -3
  206. package/src/constructors/Mask/MaskDesign.tsx +33 -28
  207. package/src/constructors/Mask/MaskEvent.ts +41 -2
  208. package/src/constructors/Mask/MaskInclude.ts +147 -0
  209. package/src/constructors/Mask/basicTypes.ts +19 -1
  210. package/src/constructors/Mask/properties.json +30 -29
  211. package/src/constructors/Mask/props.ts +1 -1
  212. package/src/constructors/Mask/style.scss +2 -4
  213. package/src/constructors/Mask/types.ts +4 -4
  214. package/src/constructors/Menu/Menu.ts +17 -5
  215. package/src/constructors/Menu/MenuDesign.tsx +11 -11
  216. package/src/constructors/Menu/MenuGo.ts +72 -0
  217. package/src/constructors/Menu/MenuInclude.ts +20 -10
  218. package/src/constructors/Menu/MenuSearch.ts +20 -1
  219. package/src/constructors/Menu/MenuValue.ts +7 -3
  220. package/src/constructors/Menu/MenuWindow.ts +2 -1
  221. package/src/constructors/Menu/basicTypes.ts +21 -4
  222. package/src/constructors/Menu/properties.json +17 -17
  223. package/src/constructors/Menu/props.ts +15 -3
  224. package/src/constructors/Menu/types.ts +6 -16
  225. package/src/constructors/Modal/Modal.ts +53 -0
  226. package/src/constructors/Modal/ModalAbstract.ts +74 -0
  227. package/src/constructors/Modal/ModalDesign.tsx +63 -0
  228. package/src/constructors/Modal/ModalDesignAbstract.tsx +226 -0
  229. package/src/constructors/Modal/basicTypes.ts +0 -0
  230. package/src/constructors/Modal/index.ts +5 -0
  231. package/src/constructors/Modal/properties.json +17 -0
  232. package/src/constructors/Modal/props.ts +45 -0
  233. package/src/constructors/Modal/style.scss +20 -0
  234. package/src/constructors/Modal/types.ts +62 -0
  235. package/src/constructors/MotionTransform/MotionTransform.ts +65 -8
  236. package/src/constructors/MotionTransform/MotionTransformDesign.tsx +55 -21
  237. package/src/constructors/MotionTransform/MotionTransformElement.ts +7 -2
  238. package/src/constructors/MotionTransform/MotionTransformInclude.ts +2 -1
  239. package/src/constructors/MotionTransform/MotionTransformState.ts +5 -0
  240. package/src/constructors/MotionTransform/basicTypes.ts +18 -2
  241. package/src/constructors/MotionTransform/properties.json +35 -35
  242. package/src/constructors/MotionTransform/props.ts +13 -7
  243. package/src/constructors/MotionTransform/style.scss +24 -2
  244. package/src/constructors/MotionTransform/types.ts +7 -7
  245. package/src/constructors/Progress/Progress.ts +12 -2
  246. package/src/constructors/Progress/ProgressDesign.tsx +75 -53
  247. package/src/constructors/Progress/ProgressInclude.ts +13 -1
  248. package/src/constructors/Progress/properties.json +47 -47
  249. package/src/constructors/Progress/props.ts +5 -1
  250. package/src/constructors/Progress/style.scss +2 -2
  251. package/src/constructors/Progress/types.ts +4 -4
  252. package/src/constructors/Ripple/Ripple.ts +1 -1
  253. package/src/constructors/Ripple/RippleDesign.tsx +7 -4
  254. package/src/constructors/Ripple/RippleItem.ts +1 -1
  255. package/src/constructors/Ripple/style.scss +4 -0
  256. package/src/constructors/Ripple/types.ts +2 -2
  257. package/src/constructors/Scrollbar/Scrollbar.ts +3 -3
  258. package/src/constructors/Scrollbar/ScrollbarDesign.tsx +1 -1
  259. package/src/constructors/Scrollbar/properties.json +33 -33
  260. package/src/constructors/Scrollbar/types.ts +1 -1
  261. package/src/constructors/Section/Section.ts +33 -0
  262. package/src/constructors/Section/SectionDesign.tsx +127 -0
  263. package/src/constructors/Section/basicTypes.ts +0 -0
  264. package/src/constructors/Section/index.ts +5 -0
  265. package/src/constructors/Section/properties.json +2 -0
  266. package/src/constructors/Section/props.ts +29 -0
  267. package/src/constructors/Section/style.scss +5 -0
  268. package/src/constructors/Section/types.ts +47 -0
  269. package/src/constructors/Select/Select.ts +172 -0
  270. package/src/constructors/Select/SelectDesign.tsx +288 -0
  271. package/src/constructors/Select/SelectFilter.ts +43 -0
  272. package/src/constructors/Select/SelectInput.ts +68 -0
  273. package/src/constructors/Select/basicTypes.ts +0 -0
  274. package/src/constructors/Select/index.ts +5 -0
  275. package/src/constructors/Select/properties.json +3 -0
  276. package/src/constructors/Select/props.ts +63 -0
  277. package/src/constructors/Select/style.scss +5 -0
  278. package/src/constructors/Select/types.ts +53 -0
  279. package/src/constructors/SelectValue/SelectValue.ts +95 -0
  280. package/src/constructors/SelectValue/SelectValueDesign.tsx +198 -0
  281. package/src/constructors/SelectValue/SelectValueInclude.ts +92 -0
  282. package/src/constructors/SelectValue/basicTypes.ts +17 -0
  283. package/src/constructors/SelectValue/index.ts +6 -0
  284. package/src/constructors/SelectValue/properties.json +7 -0
  285. package/src/constructors/SelectValue/props.ts +48 -0
  286. package/src/constructors/SelectValue/style.scss +14 -0
  287. package/src/constructors/SelectValue/types.ts +47 -0
  288. package/src/constructors/Skeleton/Skeleton.ts +1 -3
  289. package/src/constructors/Skeleton/SkeletonDesign.tsx +7 -1
  290. package/src/constructors/Skeleton/SkeletonInclude.ts +5 -0
  291. package/src/constructors/Skeleton/properties.json +24 -24
  292. package/src/constructors/Skeleton/types.ts +1 -1
  293. package/src/constructors/TextareaAutosize/TextareaAutosize.ts +41 -0
  294. package/src/constructors/TextareaAutosize/TextareaAutosizeDesign.tsx +147 -0
  295. package/src/constructors/TextareaAutosize/TextareaAutosizeResize.ts +109 -0
  296. package/src/constructors/TextareaAutosize/TextareaAutosizeValue.ts +69 -0
  297. package/src/constructors/TextareaAutosize/basicTypes.ts +0 -0
  298. package/src/constructors/TextareaAutosize/index.ts +5 -0
  299. package/src/constructors/TextareaAutosize/properties.json +6 -0
  300. package/src/constructors/TextareaAutosize/props.ts +34 -0
  301. package/src/constructors/TextareaAutosize/style.scss +31 -0
  302. package/src/constructors/TextareaAutosize/types.ts +50 -0
  303. package/src/constructors/Tooltip/Tooltip.ts +138 -0
  304. package/src/constructors/Tooltip/TooltipClasses.ts +90 -0
  305. package/src/constructors/Tooltip/TooltipDesign.tsx +198 -0
  306. package/src/constructors/Tooltip/TooltipEvent.ts +103 -0
  307. package/src/constructors/Tooltip/TooltipInclude.ts +114 -0
  308. package/src/constructors/Tooltip/TooltipOpen.ts +128 -0
  309. package/src/constructors/Tooltip/TooltipPosition.ts +92 -0
  310. package/src/constructors/Tooltip/TooltipStatus.ts +97 -0
  311. package/src/constructors/Tooltip/TooltipStyle.ts +123 -0
  312. package/src/constructors/Tooltip/basicTypes.ts +39 -0
  313. package/src/constructors/Tooltip/index.ts +6 -0
  314. package/src/constructors/Tooltip/properties.json +14 -0
  315. package/src/constructors/Tooltip/props.ts +49 -0
  316. package/src/constructors/Tooltip/style.scss +43 -0
  317. package/src/constructors/Tooltip/types.ts +58 -0
  318. package/src/constructors/Window/Window.ts +52 -16
  319. package/src/constructors/Window/WindowClasses.ts +33 -0
  320. package/src/constructors/Window/WindowClient.ts +39 -0
  321. package/src/constructors/Window/WindowDesign.tsx +31 -14
  322. package/src/constructors/Window/WindowEsc.ts +114 -0
  323. package/src/constructors/Window/WindowHidden.ts +120 -0
  324. package/src/constructors/Window/WindowInclude.ts +2 -2
  325. package/src/constructors/Window/WindowOpen.ts +10 -1
  326. package/src/constructors/Window/WindowOrigin.ts +5 -1
  327. package/src/constructors/Window/WindowStatic.ts +3 -1
  328. package/src/constructors/Window/WindowVerification.ts +8 -5
  329. package/src/constructors/Window/basicTypes.ts +26 -16
  330. package/src/constructors/Window/properties.json +239 -236
  331. package/src/constructors/Window/props.ts +10 -1
  332. package/src/constructors/Window/style.scss +11 -0
  333. package/src/constructors/Window/types.ts +2 -2
  334. package/src/functions/{getClassTegAStatic.ts → getClassTagAStatic.ts} +1 -1
  335. package/src/library.ts +13 -1
  336. package/src/types/ariaTypes.ts +366 -0
  337. package/src/types/descriptionTypes.ts +8 -0
  338. package/src/types/fieldTypes.ts +120 -16
  339. package/src/types/labelTypes.ts +39 -0
  340. package/src/types/modelTypes.ts +16 -0
  341. package/src/types/roleTypes.ts +88 -0
  342. package/src/types/textTypes.ts +33 -0
  343. package/src/types/touchEventTypes.ts +43 -0
@@ -0,0 +1,288 @@
1
+ import { h, type VNode } from 'vue'
2
+ import {
3
+ type ConstrOptions,
4
+ type ConstrStyles,
5
+ DesignConstructorAbstract,
6
+ toBinds
7
+ } from '@dxtmisha/functional'
8
+
9
+ import { Select } from './Select'
10
+
11
+ import type { MenuControlItem } from '../Menu'
12
+ import type { FieldControl } from '../Field'
13
+ import {
14
+ type SelectPropsBasic
15
+ } from './props'
16
+ import {
17
+ type SelectClasses,
18
+ type SelectComponents,
19
+ type SelectEmits,
20
+ type SelectExpose,
21
+ type SelectSlots
22
+ } from './types'
23
+
24
+ /**
25
+ * SelectDesign
26
+ */
27
+ export class SelectDesign<
28
+ COMP extends SelectComponents,
29
+ EXPOSE extends SelectExpose,
30
+ CLASSES extends SelectClasses,
31
+ P extends SelectPropsBasic
32
+ > extends DesignConstructorAbstract<
33
+ HTMLDivElement,
34
+ COMP,
35
+ SelectEmits,
36
+ EXPOSE,
37
+ SelectSlots,
38
+ CLASSES,
39
+ P
40
+ > {
41
+ protected readonly item: Select
42
+
43
+ /**
44
+ * Constructor
45
+ * @param name class name/ название класса
46
+ * @param props properties/ свойства
47
+ * @param options list of additional parameters/ список дополнительных параметров
48
+ */
49
+ constructor(
50
+ name: string,
51
+ props: Readonly<P>,
52
+ options?: ConstrOptions<COMP, SelectEmits, P>
53
+ ) {
54
+ super(
55
+ name,
56
+ props,
57
+ options
58
+ )
59
+
60
+ this.item = new Select(
61
+ this.props,
62
+ this.refs,
63
+ this.element,
64
+ this.getDesign(),
65
+ this.getName(),
66
+ this.components,
67
+ this.slots,
68
+ this.emits
69
+ )
70
+
71
+ this.init()
72
+ }
73
+
74
+ /**
75
+ * Initialization of all the necessary properties for work
76
+ *
77
+ * Инициализация всех необходимых свойств для работы.
78
+ */
79
+ protected initExpose(): EXPOSE {
80
+ return {
81
+ ...this.item.menu.expose,
82
+ value: this.item.value.item,
83
+ checkValidity: this.item.validation.checkValidity,
84
+ validationMessage: this.item.validation.message
85
+ } as EXPOSE
86
+ }
87
+
88
+ /**
89
+ * Improvement of the obtained list of classes.
90
+ *
91
+ * Доработка полученного списка классов.
92
+ */
93
+ protected initClasses(): Partial<CLASSES> {
94
+ return {
95
+ main: {},
96
+ ...{
97
+ // :classes [!] System label / Системная метка
98
+ input: this.getSubClass('input')
99
+ // :classes [!] System label / Системная метка
100
+ }
101
+ } as Partial<CLASSES>
102
+ }
103
+
104
+ /**
105
+ * Refinement of the received list of styles.
106
+ *
107
+ * Доработка полученного списка стилей.
108
+ */
109
+ protected initStyles(): ConstrStyles {
110
+ return {}
111
+ }
112
+
113
+ /**
114
+ * A method for rendering.
115
+ *
116
+ * Метод для рендеринга.
117
+ */
118
+ protected initRender(): VNode[] {
119
+ return this.item.field.render(
120
+ {
121
+ default: this.renderMenu
122
+ },
123
+ {
124
+ ...this.getAttrs(),
125
+ iconTurn: this.item.menu.expose.open.value,
126
+ class: this.classes?.value.main,
127
+ validationMessage: this.item.validation.message.value
128
+ }
129
+ )
130
+ }
131
+
132
+ /**
133
+ * Rendering the menu element.
134
+ *
135
+ * Рендер элемента меню.
136
+ * @param input data for the input element/ данные для элемента ввода
137
+ */
138
+ protected readonly renderMenu = (input: FieldControl): VNode[] => {
139
+ return this.item.menu.render(
140
+ {
141
+ control: (props: MenuControlItem) => this.renderMenuControl(input, props),
142
+ title: props => this.renderTitle(props),
143
+ footer: props => this.initSlot('footer', undefined, props),
144
+ contextTop: props => this.initSlot('contextTop', undefined, props),
145
+ contextBottom: props => this.initSlot('contextBottom', undefined, props)
146
+ },
147
+ {
148
+ selected: this.item.value.item.value,
149
+ highlight: this.item.filter.get()
150
+ }
151
+ )
152
+ }
153
+
154
+ /**
155
+ * Render menu control.
156
+ *
157
+ * Рендер элемента управления меню.
158
+ * @param input data for the input element/ данные для элемента ввода
159
+ * @param props data for the transferable property/ данные для передаваемого свойства
160
+ */
161
+ protected readonly renderMenuControl = (
162
+ input: FieldControl,
163
+ props: MenuControlItem
164
+ ): VNode | VNode[] => {
165
+ const children: any[] = []
166
+
167
+ if (!this.item.input.isEdit.value) {
168
+ children.push(this.renderMenuControlValue(input, props))
169
+ }
170
+
171
+ children.push(
172
+ this.renderMenuControlInput(input, props)
173
+ )
174
+
175
+ return children
176
+ }
177
+
178
+ /**
179
+ * Render input element.
180
+ *
181
+ * Рендер элемента ввода.
182
+ * @param input data for the input element/ данные для элемента ввода
183
+ * @param props data for the transferable property/ данные для передаваемого свойства
184
+ */
185
+ protected readonly renderMenuControlInput = (
186
+ input: FieldControl,
187
+ props: MenuControlItem
188
+ ): VNode => {
189
+ const isEdit = this.item.input.isEdit.value
190
+ const className = isEdit ? input.className : input.classForFocus
191
+ const menuControl = {
192
+ }
193
+
194
+ return h(
195
+ 'input',
196
+ toBinds(
197
+ this.item.input.binds.value,
198
+ props.binds,
199
+ {
200
+ ref: this.element,
201
+ id: input.id,
202
+ value: this.item.value.get(),
203
+ class: [
204
+ props.classesWindow.controlOpenOnly,
205
+ className
206
+ ]
207
+ },
208
+ isEdit ? undefined : menuControl
209
+ )
210
+ )
211
+ }
212
+
213
+ /**
214
+ * Render menu control in static mode.
215
+ *
216
+ * Рендер элемента управления меню в статическом режиме.
217
+ * @param input data for the input element/ данные для элемента ввода
218
+ * @param props data for the transferable property/ данные для передаваемого свойства
219
+ */
220
+ protected readonly renderMenuControlValue = (
221
+ input: FieldControl,
222
+ props: MenuControlItem
223
+ ): VNode => {
224
+ return this.components.renderOne(
225
+ 'selectValue',
226
+ toBinds(
227
+ props.binds,
228
+ {
229
+ class: input.className,
230
+ disabled: this.props.disabled,
231
+ value: props.selectedList.value,
232
+ multiple: this.props.multiple,
233
+ placeholder: this.props.placeholder,
234
+ onClick: this.item.event.onSelect
235
+ }
236
+ )
237
+ ) as VNode
238
+ }
239
+
240
+ /**
241
+ * Render title element.
242
+ *
243
+ * Рендер элемента заголовка.
244
+ * @param props data for the transferable property/ данные для передаваемого свойства
245
+ */
246
+ protected readonly renderTitle = (props: MenuControlItem) => {
247
+ const children: any[] = []
248
+
249
+ if (this.props.showSearch) {
250
+ children.push(this.renderFilterInput(props))
251
+ }
252
+
253
+ this.initSlot('title', children, props)
254
+
255
+ return children
256
+ }
257
+
258
+ /**
259
+ * Render filter input.
260
+ *
261
+ * Рендер фильтра ввода.
262
+ * @param props data for the transferable property/ данные для передаваемого свойства
263
+ */
264
+ protected readonly renderFilterInput = (props: MenuControlItem): VNode => {
265
+ return h(
266
+ 'div',
267
+ {
268
+ class: [
269
+ this.classes?.value.input,
270
+ props.classesWindow.static
271
+ ]
272
+ },
273
+ this.components.renderOne(
274
+ 'input',
275
+ toBinds(
276
+ {
277
+ icon: this.props.iconSearch,
278
+ onInputLite: this.item.filter.onInput,
279
+ inputAttrs: {
280
+ 'data-menu-control': '1'
281
+ }
282
+ },
283
+ this.props.inputSearchAttrs
284
+ )
285
+ )
286
+ )
287
+ }
288
+ }
@@ -0,0 +1,43 @@
1
+ import { ref } from 'vue'
2
+ import type { FieldValidationItem } from '../../types/fieldTypes'
3
+
4
+ /**
5
+ * SelectFilter class manages filter/search functionality for select components.
6
+ * Provides value storage and input handling for filtering items.
7
+ *
8
+ * Класс SelectFilter управляет функциональностью фильтрации/поиска для компонентов выбора.
9
+ * Предоставляет хранение значения и обработку ввода для фильтрации элементов.
10
+ */
11
+ export class SelectFilter {
12
+ /** Reactive filter value/ Реактивное значение фильтра */
13
+ readonly value = ref<string>('')
14
+
15
+ /**
16
+ * Get current filter value.
17
+ *
18
+ * Получить текущее значение фильтра.
19
+ */
20
+ get(): string {
21
+ return this.value.value
22
+ }
23
+
24
+ /**
25
+ * Set filter value.
26
+ *
27
+ * Установить значение фильтра.
28
+ * @param value filter string/ строка фильтра
29
+ */
30
+ set(value: string) {
31
+ this.value.value = value
32
+ }
33
+
34
+ /**
35
+ * Input event handler.
36
+ *
37
+ * Обработчик события ввода.
38
+ * @param value validation item with input value/ элемент валидации со значением ввода
39
+ */
40
+ readonly onInput = (value: FieldValidationItem): void => {
41
+ this.value.value = String(value.value ?? '')
42
+ }
43
+ }
@@ -0,0 +1,68 @@
1
+ import { computed } from 'vue'
2
+ import { type ConstrBind, toBinds } from '@dxtmisha/functional'
3
+
4
+ import { FieldAttributesInclude } from '../../classes/field/FieldAttributesInclude'
5
+ import { FieldValueInclude } from '../../classes/field/FieldValueInclude'
6
+ import { FieldEventInclude } from '../../classes/field/FieldEventInclude'
7
+
8
+ import type { SelectProps } from './props'
9
+
10
+ /**
11
+ * Class for working with the select input.
12
+ *
13
+ * Класс для работы с input селекта.
14
+ */
15
+ export class SelectInput {
16
+ /**
17
+ * Constructor
18
+ * @param props input data/ входные данные
19
+ * @param attributes object for working with input attributes/ объект для работы с атрибутами ввода
20
+ * @param value object for working with values/ объект для работы со значениями
21
+ * @param event object for working with events/ объект для работы с событиями
22
+ */
23
+
24
+ constructor(
25
+ protected readonly props: Readonly<SelectProps>,
26
+ protected readonly attributes: FieldAttributesInclude,
27
+ protected readonly value: FieldValueInclude,
28
+ protected readonly event: FieldEventInclude
29
+ ) {
30
+ }
31
+
32
+ /** Indicates if it is in edit mode/ Указывает, находится ли в режиме редактирования */
33
+ readonly isEdit = computed<boolean>(
34
+ () => Boolean(this.props.editValue && !this.props.multiple)
35
+ )
36
+
37
+ /**
38
+ * Returns data for the input field.
39
+ *
40
+ * Возвращает данные для поля input.
41
+ */
42
+ readonly binds = computed<ConstrBind<Partial<HTMLInputElement>> | undefined>(() => {
43
+ return toBinds(
44
+ this.attributes.listForInput.value,
45
+ {
46
+ 'name': this.props.name,
47
+ 'type': 'text',
48
+ 'required': this.props.required,
49
+ 'readonly': !this.isEdit.value,
50
+ 'placeholder': this.props.placeholder,
51
+ 'data-menu-control': '1',
52
+ 'onInput': this.isEdit.value ? this.event.onInput : this.event.onSelect
53
+ // 'onKeydown': this.onKeydown
54
+ }
55
+ ) as ConstrBind<Partial<HTMLInputElement>>
56
+ })
57
+
58
+ /**
59
+ * Handles the keydown event to simulate a click on the input element.
60
+ *
61
+ * Обрабатывает событие нажатия клавиши для имитации клика по элементу ввода.
62
+ * @param event The keydown event object/ Объект события нажатия клавиши
63
+ */
64
+ protected onKeydown = (event: Event) => {
65
+ (event.target as HTMLInputElement).click()
66
+ event.preventDefault()
67
+ }
68
+ }
File without changes
@@ -0,0 +1,5 @@
1
+ export * from './Select'
2
+ export * from './SelectDesign'
3
+ export * from './props'
4
+ export * from './types'
5
+ export * from './basicTypes'
@@ -0,0 +1,3 @@
1
+ {
2
+ "#input": {}
3
+ }
@@ -0,0 +1,63 @@
1
+ import type { ConstrBind } from '@dxtmisha/functional'
2
+
3
+ import type { IconPropsBasic, IconValue } from '../Icon'
4
+ import type { FieldPropsBasic, FieldPropsInclude } from '../Field'
5
+ import type { FieldLabelPropsBasic } from '../FieldLabel'
6
+ import type { FieldMessagePropsBasic } from '../FieldMessage'
7
+ import type { FieldCounterPropsBasic } from '../FieldCounter'
8
+ import type { InputPropsBasic } from '../Input'
9
+ import type { ProgressPropsBasic } from '../Progress'
10
+ import type { MenuPropsBasic, MenuPropsInclude } from '../Menu'
11
+
12
+ import type { FieldSelectProps } from '../../types/fieldTypes'
13
+
14
+ interface SelectPropsToken {
15
+ // :type [!] System label / Системная метка
16
+ // :type [!] System label / Системная метка
17
+ }
18
+
19
+ export interface SelectPropsBasic<
20
+ Icon extends IconPropsBasic = IconPropsBasic,
21
+ Field extends FieldPropsBasic = FieldPropsBasic,
22
+ FieldLabel extends FieldLabelPropsBasic = FieldLabelPropsBasic,
23
+ FieldMessage extends FieldMessagePropsBasic = FieldMessagePropsBasic,
24
+ FieldCounter extends FieldCounterPropsBasic = FieldCounterPropsBasic,
25
+ Input extends InputPropsBasic = InputPropsBasic,
26
+ Progress extends ProgressPropsBasic = ProgressPropsBasic,
27
+ Menu extends MenuPropsBasic = MenuPropsBasic
28
+ > extends FieldPropsInclude<Icon, Field, FieldLabel, FieldMessage, FieldCounter, Progress>,
29
+ FieldSelectProps,
30
+ MenuPropsInclude<Menu> {
31
+ // Value
32
+ editValue?: boolean
33
+
34
+ // Style
35
+ hideList?: boolean
36
+ showSearch?: boolean
37
+ filterMode?: boolean
38
+
39
+ iconArrowDown?: IconValue<Icon>
40
+ iconSearch?: IconValue<Icon>
41
+
42
+ inputSearchAttrs?: ConstrBind<Input>
43
+ }
44
+
45
+ /**
46
+ * Type describing incoming properties.
47
+ *
48
+ * Тип, описывающий входящие свойства.
49
+ */
50
+ export interface SelectProps extends SelectPropsBasic, SelectPropsToken {
51
+ }
52
+
53
+ /**
54
+ * Default value for property.
55
+ *
56
+ * Значение по умолчанию для свойства.
57
+ */
58
+ export const defaultsSelect = {
59
+ ...{
60
+ // :default [!] System label / Системная метка
61
+ // :default [!] System label / Системная метка
62
+ }
63
+ }
@@ -0,0 +1,5 @@
1
+ @use "@dxtmisha/styles/properties" as ui;
2
+
3
+ @mixin mixinSelect {
4
+
5
+ }
@@ -0,0 +1,53 @@
1
+ import type { ConstrClass } from '@dxtmisha/functional'
2
+ import type { MenuComponentInclude, MenuExposeInclude, MenuSlotInclude } from '../Menu'
3
+ import type { FieldComponentInclude, FieldSlotsInclude } from '../Field'
4
+ import type { SelectValueComponentInclude } from '../SelectValue'
5
+ import type { InputComponentInclude } from '../Input'
6
+
7
+ import type { FieldBasicEmits, FieldBasicExpose } from '../../types/fieldTypes'
8
+
9
+ /**
10
+ * Interface for describing which components need to be connected for work.
11
+ *
12
+ * Интерфейс для описания, какие компоненты надо подключить для работы.
13
+ */
14
+ export type SelectComponents
15
+ = MenuComponentInclude
16
+ & FieldComponentInclude
17
+ & SelectValueComponentInclude
18
+ & InputComponentInclude
19
+
20
+ /**
21
+ * Type describing available events.
22
+ *
23
+ * Тип, описывающий доступные события.
24
+ */
25
+ export type SelectEmits = FieldBasicEmits
26
+
27
+ /**
28
+ * Type describing available properties.
29
+ *
30
+ * Тип, описывающий доступные свойства.
31
+ */
32
+ export interface SelectExpose extends FieldBasicExpose, MenuExposeInclude {
33
+ }
34
+
35
+ /**
36
+ * Type describing available slots.
37
+ *
38
+ * Тип, описывающий доступные слоты.
39
+ */
40
+ export interface SelectSlots extends FieldSlotsInclude, MenuSlotInclude {
41
+ }
42
+
43
+ /**
44
+ * Type describing subclasses.
45
+ *
46
+ * Тип, описывающий подклассы.
47
+ */
48
+ export type SelectClasses = {
49
+ main: ConstrClass
50
+ // :classes [!] System label / Системная метка
51
+ input: string
52
+ // :classes [!] System label / Системная метка
53
+ }
@@ -0,0 +1,95 @@
1
+ import { computed, type Ref, type ToRefs } from 'vue'
2
+ import { type ConstrBind, type ConstrClassObject, type ConstrEmit, DesignComp, isFilled } from '@dxtmisha/functional'
3
+
4
+ import { EnabledInclude } from '../../classes/EnabledInclude'
5
+ import { EventClickInclude } from '../../classes/EventClickInclude'
6
+ import { type IconProps } from '../Icon'
7
+ import { WindowClassesInclude } from '../Window'
8
+
9
+ import type { EventClickValue } from '../../types/eventClickTypes'
10
+ import type { SelectValueComponents, SelectValueEmits, SelectValueSlots } from './types'
11
+ import type { SelectValueProps } from './props'
12
+
13
+ /**
14
+ * SelectValue
15
+ */
16
+ export class SelectValue {
17
+ readonly enabled: EnabledInclude
18
+ readonly event: EventClickInclude
19
+
20
+ readonly window: WindowClassesInclude
21
+
22
+ /**
23
+ * Constructor
24
+ * @param props input data/ входные данные
25
+ * @param refs input data in the form of reactive elements/ входные данные в виде реактивных элементов
26
+ * @param element input element/ элемент ввода
27
+ * @param classDesign design name/ название дизайна
28
+ * @param className class name/ название класса
29
+ * @param components object for working with components/ объект для работы с компонентами
30
+ * @param slots object for working with slots/ объект для работы со слотами
31
+ * @param emits the function is called when an event is triggered/ функция вызывается, когда срабатывает событие
32
+ */
33
+ constructor(
34
+ protected readonly props: SelectValueProps,
35
+ protected readonly refs: ToRefs<SelectValueProps>,
36
+ protected readonly element: Ref<HTMLElement | undefined>,
37
+ protected readonly classDesign: string,
38
+ protected readonly className: string,
39
+ protected readonly components?: DesignComp<SelectValueComponents, SelectValueProps>,
40
+ protected readonly slots?: SelectValueSlots,
41
+ protected readonly emits?: ConstrEmit<SelectValueEmits>
42
+ ) {
43
+ this.enabled = new EnabledInclude(this.props)
44
+ this.event = new EventClickInclude(
45
+ this.props,
46
+ this.enabled,
47
+ this.emits
48
+ )
49
+
50
+ this.window = new WindowClassesInclude(classDesign)
51
+ }
52
+
53
+ /** Is placeholder/ Является ли плейсхолдером */
54
+ readonly isPlaceholder = computed<boolean>(
55
+ () => !isFilled(this.props.value) && Boolean(this.props.placeholder)
56
+ )
57
+
58
+ /** Icon for canceling selection/ Иконка для отмены выбора */
59
+ readonly iconTrailing = computed<ConstrBind<IconProps> | undefined>(() => {
60
+ if (this.enabled.isEnabled.value) {
61
+ return {
62
+ icon: this.props.iconCancel,
63
+ dynamic: true,
64
+ class: [
65
+ `${this.className}__trailing`,
66
+ this.window.get().controlStatic
67
+ ]
68
+ }
69
+ }
70
+
71
+ return undefined
72
+ })
73
+
74
+ /** Returns data for the main style class/ Возвращает данные для главного класса стиля */
75
+ readonly classes = computed<ConstrClassObject>(() => ({
76
+ [`${this.className}--placeholder`]: this.isPlaceholder.value,
77
+ [`${this.className}--multiple`]: Boolean(this.props.multiple)
78
+ }))
79
+
80
+ /**
81
+ * Click event handler.
82
+ *
83
+ * Обработчик события клика.
84
+ * @param event event object/ объект события
85
+ * @param options additional event options/ дополнительные опции события
86
+ */
87
+ readonly onClick = (
88
+ event: MouseEvent,
89
+ options?: EventClickValue
90
+ ) => {
91
+ event.preventDefault()
92
+ event.stopPropagation()
93
+ this.event.onClick(event, options)
94
+ }
95
+ }