@dxtmisha/wiki 0.24.3 → 0.39.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 (278) hide show
  1. package/package.json +8 -8
  2. package/src/classes/WikiStorybook.ts +92 -1
  3. package/src/classes/WikiStorybookItem.ts +79 -5
  4. package/src/classes/WikiStorybookProp.ts +109 -0
  5. package/src/library.ts +1 -0
  6. package/src/media/descriptions/wikiDescriptions.ts +32 -0
  7. package/src/media/descriptions/wikiDescriptionsAccordion.ts +204 -0
  8. package/src/media/descriptions/wikiDescriptionsActionSheet.ts +264 -0
  9. package/src/media/descriptions/wikiDescriptionsActions.ts +189 -0
  10. package/src/media/descriptions/wikiDescriptionsAnchor.ts +78 -0
  11. package/src/media/descriptions/wikiDescriptionsArrow.ts +214 -0
  12. package/src/media/descriptions/wikiDescriptionsBadge.ts +43 -0
  13. package/src/media/descriptions/wikiDescriptionsBars.ts +33 -0
  14. package/src/media/descriptions/wikiDescriptionsBlock.ts +159 -0
  15. package/src/media/descriptions/wikiDescriptionsButton.ts +32 -1
  16. package/src/media/descriptions/wikiDescriptionsCell.ts +26 -1
  17. package/src/media/descriptions/wikiDescriptionsChip.ts +42 -0
  18. package/src/media/descriptions/wikiDescriptionsChipGroup.ts +199 -0
  19. package/src/media/descriptions/wikiDescriptionsDialog.ts +226 -0
  20. package/src/media/descriptions/wikiDescriptionsField.ts +57 -2
  21. package/src/media/descriptions/wikiDescriptionsFieldCounter.ts +32 -0
  22. package/src/media/descriptions/wikiDescriptionsFieldLabel.ts +22 -0
  23. package/src/media/descriptions/wikiDescriptionsFieldMessage.ts +25 -0
  24. package/src/media/descriptions/wikiDescriptionsIcon.ts +46 -8
  25. package/src/media/descriptions/wikiDescriptionsImage.ts +91 -7
  26. package/src/media/descriptions/wikiDescriptionsInput.ts +313 -0
  27. package/src/media/descriptions/wikiDescriptionsList.ts +31 -0
  28. package/src/media/descriptions/wikiDescriptionsListGroup.ts +57 -0
  29. package/src/media/descriptions/wikiDescriptionsListItem.ts +42 -0
  30. package/src/media/descriptions/wikiDescriptionsListMenu.ts +41 -0
  31. package/src/media/descriptions/wikiDescriptionsMask.ts +42 -0
  32. package/src/media/descriptions/wikiDescriptionsMenu.ts +179 -0
  33. package/src/media/descriptions/wikiDescriptionsModal.ts +200 -0
  34. package/src/media/descriptions/wikiDescriptionsMotionTransform.ts +59 -6
  35. package/src/media/descriptions/wikiDescriptionsPage.ts +155 -0
  36. package/src/media/descriptions/wikiDescriptionsProgress.ts +39 -0
  37. package/src/media/descriptions/wikiDescriptionsRipple.ts +42 -3
  38. package/src/media/descriptions/wikiDescriptionsScrollbar.ts +48 -0
  39. package/src/media/descriptions/wikiDescriptionsSection.ts +152 -0
  40. package/src/media/descriptions/wikiDescriptionsSelect.ts +253 -0
  41. package/src/media/descriptions/wikiDescriptionsSelectValue.ts +107 -0
  42. package/src/media/descriptions/wikiDescriptionsSkeleton.ts +42 -1
  43. package/src/media/descriptions/wikiDescriptionsTextareaAutosize.ts +80 -0
  44. package/src/media/descriptions/wikiDescriptionsTooltip.ts +136 -0
  45. package/src/media/descriptions/wikiDescriptionsWindow.ts +60 -0
  46. package/src/media/functional/en/conversions.mdx +67 -0
  47. package/src/media/functional/en/dataUtils.mdx +25 -0
  48. package/src/media/functional/en/datetimeRef.mdx +1 -1
  49. package/src/media/functional/en/eventRef.mdx +1 -1
  50. package/src/media/functional/en/executionUtils.mdx +58 -0
  51. package/src/media/functional/en/geoFlagRef.mdx +1 -1
  52. package/src/media/functional/en/geoIntlRef.mdx +1 -1
  53. package/src/media/functional/en/geoRef.mdx +2 -2
  54. package/src/media/functional/en/meta.mdx +1206 -0
  55. package/src/media/functional/en/metaManager.mdx +376 -0
  56. package/src/media/functional/en/metaOg.mdx +694 -0
  57. package/src/media/functional/en/metaTwitter.mdx +853 -0
  58. package/src/media/functional/en/reactive.mdx +40 -0
  59. package/src/media/functional/en/refTypes.mdx +1 -1
  60. package/src/media/functional/en/useApiRef.mdx +5 -5
  61. package/src/media/functional/en/useMeta.mdx +431 -0
  62. package/src/media/functional/en/validationUtils.mdx +11 -0
  63. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +25 -0
  64. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +25 -0
  65. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +25 -0
  66. package/src/media/functional/functional-basic/functions/isEnter/isEnter.en.mdx +30 -0
  67. package/src/media/functional/functional-basic/functions/isEnter/isEnter.ru.mdx +30 -0
  68. package/src/media/functional/functional-basic/functions/isEnter/isEnter.vi.mdx +30 -0
  69. package/src/media/functional/ru/conversions.mdx +67 -0
  70. package/src/media/functional/ru/dataUtils.mdx +25 -0
  71. package/src/media/functional/ru/datetimeRef.mdx +2 -2
  72. package/src/media/functional/ru/eventRef.mdx +1 -1
  73. package/src/media/functional/ru/executionUtils.mdx +58 -0
  74. package/src/media/functional/ru/geoFlagRef.mdx +1 -1
  75. package/src/media/functional/ru/geoIntl.mdx +2 -2
  76. package/src/media/functional/ru/geoIntlRef.mdx +1 -1
  77. package/src/media/functional/ru/geoRef.mdx +2 -2
  78. package/src/media/functional/ru/listTypes.mdx +1 -1
  79. package/src/media/functional/ru/meta.mdx +1330 -0
  80. package/src/media/functional/ru/metaManager.mdx +376 -0
  81. package/src/media/functional/ru/metaOg.mdx +694 -0
  82. package/src/media/functional/ru/metaTwitter.mdx +853 -0
  83. package/src/media/functional/ru/reactive.mdx +40 -0
  84. package/src/media/functional/ru/refTypes.mdx +2 -2
  85. package/src/media/functional/ru/useApiRef.mdx +5 -5
  86. package/src/media/functional/ru/useMeta.mdx +431 -0
  87. package/src/media/functional/ru/validationUtils.mdx +11 -0
  88. package/src/media/mdx/Accordion/accordion.en.mdx +59 -0
  89. package/src/media/mdx/Accordion/accordion.ru.mdx +59 -0
  90. package/src/media/mdx/Accordion/slots.en.mdx +6 -0
  91. package/src/media/mdx/Accordion/slots.ru.mdx +6 -0
  92. package/src/media/mdx/Accordion/wikiMdxAccordion.ts +25 -0
  93. package/src/media/mdx/ActionSheet/actionSheet.en.mdx +61 -0
  94. package/src/media/mdx/ActionSheet/actionSheet.ru.mdx +61 -0
  95. package/src/media/mdx/ActionSheet/touchClose.en.mdx +21 -0
  96. package/src/media/mdx/ActionSheet/touchClose.ru.mdx +21 -0
  97. package/src/media/mdx/ActionSheet/wikiMdxActionSheet.ts +25 -0
  98. package/src/media/mdx/Actions/actions.en.mdx +48 -0
  99. package/src/media/mdx/Actions/actions.ru.mdx +48 -0
  100. package/src/media/mdx/Actions/flexible.en.mdx +19 -0
  101. package/src/media/mdx/Actions/flexible.ru.mdx +19 -0
  102. package/src/media/mdx/Actions/list.en.mdx +50 -0
  103. package/src/media/mdx/Actions/list.ru.mdx +50 -0
  104. package/src/media/mdx/Actions/wikiMdxActions.ts +31 -0
  105. package/src/media/mdx/Anchor/anchor.en.mdx +34 -0
  106. package/src/media/mdx/Anchor/anchor.ru.mdx +34 -0
  107. package/src/media/mdx/Anchor/expose.go.en.mdx +6 -0
  108. package/src/media/mdx/Anchor/expose.go.ru.mdx +6 -0
  109. package/src/media/mdx/Anchor/hide.en.mdx +28 -0
  110. package/src/media/mdx/Anchor/hide.ru.mdx +28 -0
  111. package/src/media/mdx/Anchor/isCopy.en.mdx +23 -0
  112. package/src/media/mdx/Anchor/isCopy.ru.mdx +23 -0
  113. package/src/media/mdx/Anchor/scroll.en.mdx +34 -0
  114. package/src/media/mdx/Anchor/scroll.ru.mdx +35 -0
  115. package/src/media/mdx/Anchor/wikiMdxAnchor.ts +43 -0
  116. package/src/media/mdx/Arrow/arrow.en.mdx +33 -0
  117. package/src/media/mdx/Arrow/arrow.ru.mdx +33 -0
  118. package/src/media/mdx/Arrow/wikiMdxArrow.ts +19 -0
  119. package/src/media/mdx/Block/block.en.mdx +42 -0
  120. package/src/media/mdx/Block/block.ru.mdx +42 -0
  121. package/src/media/mdx/Block/wikiMdxBlock.ts +19 -0
  122. package/src/media/mdx/ChipGroup/chipGroup.en.mdx +51 -0
  123. package/src/media/mdx/ChipGroup/chipGroup.ru.mdx +51 -0
  124. package/src/media/mdx/ChipGroup/selected.en.mdx +50 -0
  125. package/src/media/mdx/ChipGroup/selected.ru.mdx +50 -0
  126. package/src/media/mdx/ChipGroup/wikiMdxChipGroup.ts +25 -0
  127. package/src/media/mdx/Dialog/buttons.en.mdx +45 -0
  128. package/src/media/mdx/Dialog/buttons.ru.mdx +45 -0
  129. package/src/media/mdx/Dialog/dialog.en.mdx +66 -0
  130. package/src/media/mdx/Dialog/dialog.ru.mdx +65 -0
  131. package/src/media/mdx/Dialog/events.en.mdx +63 -0
  132. package/src/media/mdx/Dialog/events.ru.mdx +63 -0
  133. package/src/media/mdx/Dialog/states.en.mdx +58 -0
  134. package/src/media/mdx/Dialog/states.ru.mdx +57 -0
  135. package/src/media/mdx/Dialog/wikiMdxDialog.ts +37 -0
  136. package/src/media/mdx/Field/arrows.en.mdx +22 -6
  137. package/src/media/mdx/Field/arrows.ru.mdx +22 -6
  138. package/src/media/mdx/Field/slots.en.mdx +0 -13
  139. package/src/media/mdx/Field/slots.ru.mdx +0 -13
  140. package/src/media/mdx/Image/flag.en.mdx +23 -0
  141. package/src/media/mdx/Image/flag.ru.mdx +23 -0
  142. package/src/media/mdx/Image/image.en.mdx +26 -21
  143. package/src/media/mdx/Image/image.ru.mdx +26 -22
  144. package/src/media/mdx/Image/img-tag.en.mdx +105 -0
  145. package/src/media/mdx/Image/img-tag.ru.mdx +105 -0
  146. package/src/media/mdx/Image/wikiMdxImage.ts +12 -0
  147. package/src/media/mdx/Input/currency.en.mdx +38 -0
  148. package/src/media/mdx/Input/currency.ru.mdx +38 -0
  149. package/src/media/mdx/Input/date.en.mdx +53 -0
  150. package/src/media/mdx/Input/date.ru.mdx +53 -0
  151. package/src/media/mdx/Input/input.en.mdx +143 -0
  152. package/src/media/mdx/Input/input.ru.mdx +71 -0
  153. package/src/media/mdx/Input/mask.en.mdx +30 -0
  154. package/src/media/mdx/Input/mask.ru.mdx +30 -0
  155. package/src/media/mdx/Input/number.en.mdx +41 -0
  156. package/src/media/mdx/Input/number.ru.mdx +41 -0
  157. package/src/media/mdx/Input/type.en.mdx +26 -0
  158. package/src/media/mdx/Input/type.ru.mdx +26 -0
  159. package/src/media/mdx/Input/wikiMdxInput.ts +49 -0
  160. package/src/media/mdx/Menu/event.updateValue.en.mdx +29 -0
  161. package/src/media/mdx/Menu/event.updateValue.ru.mdx +30 -0
  162. package/src/media/mdx/Menu/expose.navigation.en.mdx +12 -0
  163. package/src/media/mdx/Menu/expose.navigation.ru.mdx +12 -0
  164. package/src/media/mdx/Menu/navigation.en.mdx +56 -0
  165. package/src/media/mdx/Menu/navigation.ru.mdx +56 -0
  166. package/src/media/mdx/Menu/slots.control.en.mdx +65 -0
  167. package/src/media/mdx/Menu/slots.control.ru.mdx +65 -0
  168. package/src/media/mdx/Menu/slots.en.mdx +2 -24
  169. package/src/media/mdx/Menu/slots.ru.mdx +2 -24
  170. package/src/media/mdx/Menu/wikiMdxMenu.ts +27 -3
  171. package/src/media/mdx/Modal/differences.en.mdx +130 -0
  172. package/src/media/mdx/Modal/differences.ru.mdx +65 -0
  173. package/src/media/mdx/Modal/modal.en.mdx +63 -0
  174. package/src/media/mdx/Modal/modal.ru.mdx +63 -0
  175. package/src/media/mdx/Modal/wikiMdxModal.ts +25 -0
  176. package/src/media/mdx/MotionTransform/expose.motionTransformElement.en.mdx +13 -0
  177. package/src/media/mdx/MotionTransform/expose.motionTransformElement.ru.mdx +14 -0
  178. package/src/media/mdx/MotionTransform/wikiMdxMotionTransform.ts +6 -0
  179. package/src/media/mdx/Page/page.en.mdx +38 -0
  180. package/src/media/mdx/Page/page.ru.mdx +38 -0
  181. package/src/media/mdx/Page/wikiMdxPage.ts +19 -0
  182. package/src/media/mdx/Section/section.en.mdx +38 -0
  183. package/src/media/mdx/Section/section.ru.mdx +38 -0
  184. package/src/media/mdx/Section/wikiMdxSection.ts +19 -0
  185. package/src/media/mdx/Select/select.en.mdx +69 -0
  186. package/src/media/mdx/Select/select.ru.mdx +69 -0
  187. package/src/media/mdx/Select/wikiMdxSelect.ts +19 -0
  188. package/src/media/mdx/SelectValue/selectValue.en.mdx +64 -0
  189. package/src/media/mdx/SelectValue/selectValue.ru.mdx +64 -0
  190. package/src/media/mdx/SelectValue/wikiMdxSelectValue.ts +19 -0
  191. package/src/media/mdx/TextareaAutosize/textarea-autosize.en.mdx +65 -0
  192. package/src/media/mdx/TextareaAutosize/textarea-autosize.ru.mdx +65 -0
  193. package/src/media/mdx/TextareaAutosize/wikiMdxTextareaAutosize.ts +19 -0
  194. package/src/media/mdx/Tooltip/event.tooltip.en.mdx +7 -0
  195. package/src/media/mdx/Tooltip/event.tooltip.ru.mdx +8 -0
  196. package/src/media/mdx/Tooltip/slot.control.en.mdx +14 -0
  197. package/src/media/mdx/Tooltip/slot.control.ru.mdx +14 -0
  198. package/src/media/mdx/Tooltip/tooltip.en.mdx +34 -0
  199. package/src/media/mdx/Tooltip/tooltip.ru.mdx +34 -0
  200. package/src/media/mdx/Tooltip/wikiMdxTooltip.ts +31 -0
  201. package/src/media/mdx/Window/classes.ru.mdx +1 -1
  202. package/src/media/mdx/event/events.actions.en.mdx +44 -0
  203. package/src/media/mdx/event/events.actions.ru.mdx +44 -0
  204. package/src/media/mdx/event/events.inputStandard.en.mdx +6 -0
  205. package/src/media/mdx/event/events.inputStandard.ru.mdx +6 -0
  206. package/src/media/mdx/event/wikiMdxEvent.ts +20 -8
  207. package/src/media/mdx/expose/expose.clear.en.mdx +1 -1
  208. package/src/media/mdx/expose/expose.descriptionId.en.mdx +6 -0
  209. package/src/media/mdx/expose/expose.descriptionId.ru.mdx +6 -0
  210. package/src/media/mdx/expose/expose.id.en.mdx +6 -0
  211. package/src/media/mdx/expose/expose.id.ru.mdx +6 -0
  212. package/src/media/mdx/expose/expose.labelId.en.mdx +6 -0
  213. package/src/media/mdx/expose/expose.labelId.ru.mdx +6 -0
  214. package/src/media/mdx/expose/wikiMdxExpose.ts +18 -0
  215. package/src/media/mdx/slot/body.en.mdx +6 -0
  216. package/src/media/mdx/slot/body.ru.mdx +6 -0
  217. package/src/media/mdx/slot/headline.en.mdx +7 -0
  218. package/src/media/mdx/slot/headline.ru.mdx +6 -0
  219. package/src/media/mdx/slot/leading.en.mdx +7 -0
  220. package/src/media/mdx/slot/leading.ru.mdx +7 -0
  221. package/src/media/mdx/slot/secondary.en.mdx +5 -0
  222. package/src/media/mdx/slot/secondary.ru.mdx +5 -0
  223. package/src/media/mdx/slot/trailing.en.mdx +7 -0
  224. package/src/media/mdx/slot/trailing.ru.mdx +7 -0
  225. package/src/media/mdx/slot/wikiMdxSlot.ts +30 -0
  226. package/src/media/mdx/style/isSkeleton.en.mdx +2 -2
  227. package/src/media/mdx/style/isSkeleton.ru.mdx +2 -2
  228. package/src/media/mdx/value/v-model-selected.en.mdx +28 -0
  229. package/src/media/mdx/value/v-model-selected.ru.mdx +28 -0
  230. package/src/media/mdx/value/v-model.en.mdx +26 -0
  231. package/src/media/mdx/value/v-model.ru.mdx +26 -0
  232. package/src/media/mdx/value/wikiMdxValue.ts +24 -3
  233. package/src/media/mdx/wikiMdx.ts +33 -1
  234. package/src/media/props/wiki.ts +44 -0
  235. package/src/media/props/wikiActions.ts +43 -0
  236. package/src/media/props/wikiActionsInclude.ts +62 -0
  237. package/src/media/props/wikiAnchor.ts +85 -0
  238. package/src/media/props/wikiAria.ts +123 -0
  239. package/src/media/props/wikiArrow.ts +24 -0
  240. package/src/media/props/wikiArrowInclude.ts +45 -0
  241. package/src/media/props/wikiAttributes.ts +143 -0
  242. package/src/media/props/wikiBadge.ts +7 -4
  243. package/src/media/props/wikiBars.ts +7 -6
  244. package/src/media/props/wikiBarsInclude.ts +82 -0
  245. package/src/media/props/wikiButton.ts +8 -4
  246. package/src/media/props/wikiChip.ts +4 -2
  247. package/src/media/props/wikiChipGroup.ts +39 -0
  248. package/src/media/props/wikiDialog.ts +33 -0
  249. package/src/media/props/wikiField.ts +18 -31
  250. package/src/media/props/wikiFieldCounterInclude.ts +87 -0
  251. package/src/media/props/wikiForm.ts +267 -0
  252. package/src/media/props/wikiHook.ts +20 -0
  253. package/src/media/props/wikiIcon.ts +19 -6
  254. package/src/media/props/wikiIconInclude.ts +322 -0
  255. package/src/media/props/wikiImage.ts +97 -20
  256. package/src/media/props/wikiInformation.ts +164 -0
  257. package/src/media/props/wikiInput.ts +34 -0
  258. package/src/media/props/wikiList.ts +10 -4
  259. package/src/media/props/wikiListItem.ts +23 -2
  260. package/src/media/props/wikiMask.ts +2 -12
  261. package/src/media/props/wikiMaskInclude.ts +54 -0
  262. package/src/media/props/wikiMenu.ts +1 -11
  263. package/src/media/props/wikiMotionTransform.ts +7 -13
  264. package/src/media/props/wikiOption.ts +356 -0
  265. package/src/media/props/wikiProgress.ts +8 -5
  266. package/src/media/props/wikiScrollbar.ts +6 -6
  267. package/src/media/props/wikiSelect.ts +68 -0
  268. package/src/media/props/wikiSelectValue.ts +30 -0
  269. package/src/media/props/wikiStatus.ts +34 -57
  270. package/src/media/props/wikiStyle.ts +85 -406
  271. package/src/media/props/wikiTechnical.ts +141 -1
  272. package/src/media/props/wikiText.ts +167 -0
  273. package/src/media/props/wikiTooltip.ts +53 -0
  274. package/src/media/props/wikiValue.ts +22 -276
  275. package/src/media/props/wikiWindow.ts +24 -45
  276. package/src/shims-mdx.d.ts +5 -0
  277. package/src/styles/storybookStyle.scss +3 -1
  278. package/src/types/storybookTypes.ts +48 -4
@@ -1,24 +1,24 @@
1
- Universal component for displaying images, icons, and PDF documents with advanced size, positioning, and adaptivity control.
1
+ Universal component for displaying images, icons, flags, and PDF documents with advanced size, positioning, and adaptability controls.
2
2
 
3
- Image provides flexible API for working with various types of visual content: from simple icons to complex images with cropping and adaptive scaling. The component automatically detects the source type, supports coordinate positioning, adaptive resizing, and various fill modes.
3
+ Image provides a flexible API for working with various types of visual content. The component automatically detects the source type (image, icon, color, file), selects the optimal rendering method (`<img>`, `background-image`, `<picture>`, `<object>`, or icon font), and supports advanced cropping and adaptation features.
4
4
 
5
5
  **Key Features:**
6
6
 
7
- - Support for multiple source types (icons, URLs, Files, PDFs)
8
- - Adaptive scaling with aspect ratio preservation
9
- - Coordinate-based cropping and precise positioning
10
- - Fill modes: auto, contain, cover
11
- - Automatic content type detection
12
- - CSS variable integration for flexible styling
13
- - Load events with complete type and data information
7
+ - Support for multiple source types (URL, File, PDF, Material Icons, flags, colors)
8
+ - Flexible rendering with automatic choice between background and img tag
9
+ - Adaptive scaling with aspect ratio preservation and srcset support
10
+ - Display control via fill modes and coordinate cropping
11
+ - Styling support with masks and color filling
12
+ - Integration with Material Symbols and system flags
14
13
 
15
14
  **Typical Use Cases:**
16
15
 
17
- - Displaying user avatars and uploaded images
18
- - Working with interface icons
19
- - PDF document previews
20
- - Adaptive image galleries
21
- - Background images with cropping
16
+ - Responsive images with picture and srcset
17
+ - Interface icons (Material Design or SVG masks)
18
+ - User avatars with automatic cropping
19
+ - Previews of uploaded files and PDF documents
20
+ - Background images with complex positioning
21
+ - Displaying country flags via CSS sprites
22
22
 
23
23
  ```html
24
24
  <script setup>
@@ -26,20 +26,25 @@ import { ref } from 'vue'
26
26
  import { Image } from '@dxtmisha/constructor'
27
27
 
28
28
  const imageUrl = ref('https://example.com/image.jpg')
29
-
30
- function handleLoad(data) {
31
- console.log('Image loaded:', data.type, data.image)
32
- }
33
29
  </script>
34
30
 
35
31
  <template>
32
+ <!-- Background image with cropping -->
36
33
  <Image
37
34
  :value="imageUrl"
38
35
  size="cover"
39
- adaptive
40
- :coordinator="[0, 0, 100, 100]"
41
- @load="handleLoad"
36
+ :coordinator="[10, 10, 10, 10]"
37
+ />
38
+
39
+ <!-- SEO-friendly image -->
40
+ <Image
41
+ :value="imageUrl"
42
+ tag-img
43
+ alt="Description"
42
44
  />
45
+
46
+ <!-- Material Design Icon -->
47
+ <Image value="filled-home" />
43
48
  </template>
44
49
  ```
45
50
 
@@ -1,24 +1,24 @@
1
- Универсальный компонент для отображения изображений, иконок и PDF-документов с расширенными возможностями управления размером, позиционированием и адаптивностью.
1
+ Универсальный компонент для отображения изображений, иконок, флагов и PDF-документов с расширенными возможностями управления размером, позиционированием и адаптивностью.
2
2
 
3
- Image предоставляет гибкий API для работы с различными типами визуального контента: от простых иконок до сложных изображений с кадрированием и адаптивным масштабированием. Компонент автоматически определяет тип источника, поддерживает координатное позиционирование, адаптивное изменение размеров и различные режимы заполнения.
3
+ Image предоставляет гибкий API для работы с различными типами визуального контента. Компонент автоматически определяет тип источника (изображение, иконка, цвет, файл), выбирает оптимальный способ рендеринга (`<img>`, `background-image`, `<picture>`, `<object>` или иконочный шрифт) и поддерживает продвинутые функции кадрирования и адаптации.
4
4
 
5
5
  **Основные возможности:**
6
6
 
7
- - Поддержка множества типов источников (иконки, URL, File, PDF)
8
- - Адаптивное масштабирование с сохранением пропорций
9
- - Координатное кадрирование и точное позиционирование
10
- - Режимы заполнения: auto, contain, cover
11
- - Автоматическое определение типа контента
12
- - Работа с CSS-переменными для гибкой стилизации
13
- - События загрузки с полной информацией о типе и данных
7
+ - Поддержка множества типов источников (URL, File, PDF, Material Icons, флаги, цвета)
8
+ - Гибкий рендеринг с автоматическим выбором между фоном и тегом img
9
+ - Адаптивное масштабирование с сохранением пропорций и поддержкой srcset
10
+ - Управление отображением через режимы заполнения и координатное кадрирование
11
+ - Стилизация с поддержкой масок и заливки цветом
12
+ - Интеграция с Material Symbols и системными флагами
14
13
 
15
14
  **Типичные сценарии использования:**
16
15
 
17
- - Отображение пользовательских аватаров и загруженных изображений
18
- - Работа с иконками в интерфейсе
19
- - Превью PDF-документов
20
- - Адаптивные галереи изображений
21
- - Фоновые изображения с кадрированием
16
+ - Адаптивные изображения с picture и srcset
17
+ - Иконки интерфейса (Material Design или SVG маски)
18
+ - Аватары пользователей с автоматическим кадрированием
19
+ - Превью загружаемых файлов и PDF документов
20
+ - Фоновые изображения со сложным позиционированием
21
+ - Отображение флагов стран через CSS спрайты
22
22
 
23
23
  ```html
24
24
  <script setup>
@@ -26,22 +26,26 @@ import { ref } from 'vue'
26
26
  import { Image } from '@dxtmisha/constructor'
27
27
 
28
28
  const imageUrl = ref('https://example.com/image.jpg')
29
-
30
- function handleLoad(data) {
31
- console.log('Image loaded:', data.type, data.image)
32
- }
33
29
  </script>
34
30
 
35
31
  <template>
32
+ <!-- Фоновое изображение с кадрированием -->
36
33
  <Image
37
34
  :value="imageUrl"
38
35
  size="cover"
39
- adaptive
40
- :coordinator="[0, 0, 100, 100]"
41
- @load="handleLoad"
36
+ :coordinator="[10, 10, 10, 10]"
42
37
  />
38
+
39
+ <!-- SEO-дружественное изображение -->
40
+ <Image
41
+ :value="imageUrl"
42
+ tag-img
43
+ alt="Описание"
44
+ />
45
+
46
+ <!-- Иконка Material Design -->
47
+ <Image value="filled-home" />
43
48
  </template>
44
49
  ```
45
50
 
46
51
  > Компонент автоматически управляет типом контента и оптимизирует отображение в зависимости от источника.
47
-
@@ -0,0 +1,105 @@
1
+ ## Using the img tag
2
+
3
+ The `tagImg`, `srcset`, `picture`, `alt`, `lazy`, `preloadOffset` and `fetchPriority` properties are designed to control the image display mode using the HTML `<img>` tag instead of a background image.
4
+
5
+ **Properties:**
6
+
7
+ - `tagImg` — use the `<img>` tag instead of a background image
8
+ - `srcset` — set of image sources for different screen resolutions
9
+ - `picture` — sources for different display conditions using the `<picture>` tag
10
+ - `alt` — alternative text for the image
11
+ - `lazy` — enables lazy loading of the image
12
+ - `preloadOffset` — offset for image preloading (default `1024px`)
13
+ - `fetchPriority` — image loading priority (`low`, `high`, `auto`)
14
+
15
+ The properties work together: if `tagImg` is not set or equals `false`, the image is displayed as a CSS background via `background-image`. When `tagImg` is activated (value `true`), the component uses the semantic HTML `<img>` tag, providing better accessibility and SEO optimization. The `alt` property defines alternative text that is displayed when the image is unavailable and is used by screen readers for people with disabilities.
16
+
17
+ The `srcset` property allows you to provide multiple versions of an image for different pixel densities and screen sizes. It accepts a string in the standard `srcset` attribute format or an object where keys are width descriptors (numbers or strings like `'2x'`) and values are image URLs. When using numeric keys, the `w` suffix (width descriptor) is automatically added. The browser automatically selects the optimal image based on screen size and pixel density.
18
+
19
+ The `picture` property enables the use of the HTML `<picture>` tag for art direction — when you need to load different images depending on screen size or other media query conditions. It accepts an object where keys are media conditions (such as screen width in pixels) and values are image URLs, or an array of objects with `<source>` attributes. When using an object, media queries like `(width >= 768px)` are automatically generated. The `<picture>` tag provides more flexible control over image selection compared to `srcset`, allowing you to load images with different aspect ratios or content for various viewing conditions.
20
+
21
+ The `lazy` property activates native browser lazy loading via the `loading="lazy"` attribute. Images with this attribute are loaded only when approaching the visible screen area, which significantly speeds up initial page load and reduces traffic consumption. It is especially effective for pages with a large number of images or long lists.
22
+
23
+ The `preloadOffset` property defines the pixel offset for preloading images when using lazy loading. The default value is `1024px`, which means the image starts loading 1024 pixels before it enters the visible area. This ensures smooth image loading without delays during scrolling. You can specify either a numeric value or a string with a unit of measurement.
24
+
25
+ The `fetchPriority` property allows you to control the browser's image loading priority. It accepts three values: `high` — high priority for critical images (such as hero images or main banners), `low` — low priority for secondary images, `auto` — the browser determines the priority automatically (default value). Proper use of this property helps optimize page loading by ensuring fast loading of important content.
26
+
27
+ ```html
28
+ <script setup>
29
+ import { ref } from 'vue'
30
+
31
+ const productImage = ref('/images/product.jpg')
32
+ </script>
33
+
34
+ <template>
35
+ <!-- Basic usage -->
36
+ <Image
37
+ :value="productImage"
38
+ tag-img
39
+ alt="Product description"
40
+ />
41
+
42
+ <!-- With lazy loading -->
43
+ <Image
44
+ :value="productImage"
45
+ tag-img
46
+ alt="Product"
47
+ lazy
48
+ />
49
+
50
+ <!-- With srcset object -->
51
+ <Image
52
+ :value="productImage"
53
+ tag-img
54
+ alt="Responsive image"
55
+ :srcset="{
56
+ '1x': '/images/product.jpg',
57
+ '2x': '/images/product@2x.jpg'
58
+ }"
59
+ />
60
+
61
+ <!-- With picture for different screen sizes -->
62
+ <Image
63
+ :value="productImage"
64
+ tag-img
65
+ alt="Responsive image for different devices"
66
+ :picture="{
67
+ 768: '/images/product-tablet.jpg',
68
+ 1024: '/images/product-desktop.jpg'
69
+ }"
70
+ />
71
+
72
+ <!-- With preload offset configuration -->
73
+ <Image
74
+ :value="productImage"
75
+ tag-img
76
+ alt="Image with early preload"
77
+ lazy
78
+ preload-offset="2048px"
79
+ />
80
+
81
+ <!-- With high loading priority -->
82
+ <Image
83
+ :value="productImage"
84
+ tag-img
85
+ alt="Main page image"
86
+ fetch-priority="high"
87
+ />
88
+
89
+ <!-- Complex example -->
90
+ <Image
91
+ :value="productImage"
92
+ tag-img
93
+ alt="Responsive product image"
94
+ lazy
95
+ preload-offset="1536px"
96
+ fetch-priority="low"
97
+ :srcset="{
98
+ '1x': '/images/product.jpg',
99
+ '2x': '/images/product@2x.jpg',
100
+ '3x': '/images/product@3x.jpg'
101
+ }"
102
+ />
103
+ </template>
104
+ ```
105
+
@@ -0,0 +1,105 @@
1
+ ## Использование тега img
2
+
3
+ Свойства `tagImg`, `srcset`, `picture`, `alt`, `lazy`, `preloadOffset` и `fetchPriority` предназначены для управления режимом отображения изображения через HTML-тег `<img>` вместо фонового изображения.
4
+
5
+ **Свойства:**
6
+
7
+ - `tagImg` — использовать тег `<img>` вместо фонового изображения
8
+ - `srcset` — набор источников изображения для разных разрешений экрана
9
+ - `picture` — источники для разных условий отображения с использованием тега `<picture>`
10
+ - `alt` — альтернативный текст для изображения
11
+ - `lazy` — включает ленивую загрузку изображения
12
+ - `preloadOffset` — смещение для предзагрузки изображения (по умолчанию `1024px`)
13
+ - `fetchPriority` — приоритет загрузки изображения (`low`, `high`, `auto`)
14
+
15
+ Свойства работают совместно: если `tagImg` не задан или равен `false`, изображение отображается как CSS-фон через `background-image`. При активации `tagImg` (значение `true`), компонент использует семантический HTML-тег `<img>`, обеспечивая лучшую доступность и SEO-оптимизацию. Свойство `alt` определяет альтернативный текст, который отображается при недоступности изображения и используется программами чтения с экрана для людей с ограниченными возможностями.
16
+
17
+ Свойство `srcset` позволяет предоставить несколько версий изображения для разных плотностей пикселей и размеров экрана. Принимает строку в формате стандартного атрибута `srcset` или объект, где ключи — это дескрипторы ширины (числа или строки вроде `'2x'`), а значения — URL изображений. При использовании числовых ключей автоматически добавляется суффикс `w` (width descriptor). Браузер самостоятельно выбирает оптимальное изображение на основе размера экрана и плотности пикселей.
18
+
19
+ Свойство `picture` позволяет использовать HTML-тег `<picture>` для art direction — когда требуется загружать разные изображения в зависимости от размера экрана или других условий медиа-запросов. Принимает объект, где ключи — это медиа-условия (например, ширина экрана в пикселях), а значения — URL изображений, или массив объектов с атрибутами `<source>`. При использовании объекта автоматически генерируются медиа-запросы вида `(width >= 768px)`. Тег `<picture>` обеспечивает более гибкий контроль над выбором изображения по сравнению с `srcset`, позволяя загружать изображения разных пропорций или содержания для различных условий просмотра.
20
+
21
+ Свойство `lazy` активирует нативную ленивую загрузку браузера через атрибут `loading="lazy"`. Изображения с этим атрибутом загружаются только при приближении к видимой области экрана, что значительно ускоряет начальную загрузку страницы и снижает потребление трафика. Особенно эффективно для страниц с большим количеством изображений или длинных списков.
22
+
23
+ Свойство `preloadOffset` определяет смещение в пикселях для предварительной загрузки изображений при использовании ленивой загрузки. По умолчанию установлено значение `1024px`, что означает начало загрузки изображения за 1024 пикселя до того, как оно попадет в видимую область. Это обеспечивает плавную загрузку изображений без задержек при прокрутке. Можно указать как числовое значение, так и строку с единицей измерения.
24
+
25
+ Свойство `fetchPriority` позволяет управлять приоритетом загрузки изображения браузером. Принимает три значения: `high` — высокий приоритет для критически важных изображений (например, главный баннер или hero-изображение), `low` — низкий приоритет для второстепенных изображений, `auto` — браузер самостоятельно определяет приоритет (значение по умолчанию). Правильное использование этого свойства помогает оптимизировать загрузку страницы, обеспечивая быструю загрузку важного контента.
26
+
27
+ ```html
28
+ <script setup>
29
+ import { ref } from 'vue'
30
+
31
+ const productImage = ref('/images/product.jpg')
32
+ </script>
33
+
34
+ <template>
35
+ <!-- Базовое использование -->
36
+ <Image
37
+ :value="productImage"
38
+ tag-img
39
+ alt="Описание продукта"
40
+ />
41
+
42
+ <!-- С ленивой загрузкой -->
43
+ <Image
44
+ :value="productImage"
45
+ tag-img
46
+ alt="Товар"
47
+ lazy
48
+ />
49
+
50
+ <!-- С srcset объектом -->
51
+ <Image
52
+ :value="productImage"
53
+ tag-img
54
+ alt="Адаптивное изображение"
55
+ :srcset="{
56
+ '1x': '/images/product.jpg',
57
+ '2x': '/images/product@2x.jpg'
58
+ }"
59
+ />
60
+
61
+ <!-- С picture для разных размеров экрана -->
62
+ <Image
63
+ :value="productImage"
64
+ tag-img
65
+ alt="Адаптивное изображение для разных устройств"
66
+ :picture="{
67
+ 768: '/images/product-tablet.jpg',
68
+ 1024: '/images/product-desktop.jpg'
69
+ }"
70
+ />
71
+
72
+ <!-- С настройкой предзагрузки -->
73
+ <Image
74
+ :value="productImage"
75
+ tag-img
76
+ alt="Изображение с ранней предзагрузкой"
77
+ lazy
78
+ preload-offset="2048px"
79
+ />
80
+
81
+ <!-- С высоким приоритетом загрузки -->
82
+ <Image
83
+ :value="productImage"
84
+ tag-img
85
+ alt="Главное изображение страницы"
86
+ fetch-priority="high"
87
+ />
88
+
89
+ <!-- Комплексный пример -->
90
+ <Image
91
+ :value="productImage"
92
+ tag-img
93
+ alt="Адаптивное изображение товара"
94
+ lazy
95
+ preload-offset="1536px"
96
+ fetch-priority="low"
97
+ :srcset="{
98
+ '1x': '/images/product.jpg',
99
+ '2x': '/images/product@2x.jpg',
100
+ '3x': '/images/product@3x.jpg'
101
+ }"
102
+ />
103
+ </template>
104
+ ```
105
+
@@ -8,6 +8,10 @@ import sizeEn from './size.en.mdx'
8
8
  import sizeRu from './size.ru.mdx'
9
9
  import adaptiveEn from './adaptive.en.mdx'
10
10
  import adaptiveRu from './adaptive.ru.mdx'
11
+ import imgTagEn from './img-tag.en.mdx'
12
+ import imgTagRu from './img-tag.ru.mdx'
13
+ import flagEn from './flag.en.mdx'
14
+ import flagRu from './flag.ru.mdx'
11
15
 
12
16
  import eventLoadEn from './event.load.en.mdx'
13
17
  import eventLoadRu from './event.load.ru.mdx'
@@ -34,6 +38,14 @@ export const wikiMdxImage: StorybookComponentsMdxItem = {
34
38
  en: adaptiveEn,
35
39
  ru: adaptiveRu
36
40
  },
41
+ 'img-tag': {
42
+ en: imgTagEn,
43
+ ru: imgTagRu
44
+ },
45
+ 'flag': {
46
+ en: flagEn,
47
+ ru: flagRu
48
+ },
37
49
  'event.load': {
38
50
  en: eventLoadEn,
39
51
  ru: eventLoadRu
@@ -0,0 +1,38 @@
1
+ ## Currency Formatting
2
+
3
+ Properties `type`, `currency`, `currencyHide`, `language`, and `fraction` are designed to manage currency value formatting with automatic currency symbol insertion and localization.
4
+
5
+ **Properties:**
6
+
7
+ - `type` — input type (set to `currency`)
8
+ - `currency` — currency code (e.g., `USD`, `EUR`, `RUB`)
9
+ - `currencyHide` — hides currency symbol in the input field
10
+ - `language` — locale code for formatting (e.g., `ru-RU`, `en-US`)
11
+ - `fraction` — number of decimal places (default `2`)
12
+
13
+ Properties work together: `type="currency"` automatically activates currency formatting mode with two decimal places. `currency` defines the symbol appended to the formatted number (`$`, `€`, `₽`). When `currencyHide` is set, currency symbol is not displayed, but number formatting is preserved. Property `language` affects thousand separators, decimal separator, and currency symbol position. Number of decimal places can be changed via `fraction`, overriding the default value.
14
+
15
+ ```html
16
+ <script setup>
17
+ import { ref } from 'vue'
18
+ const value = ref('1234.56')
19
+ </script>
20
+
21
+ <template>
22
+ <!-- Standard currency input -->
23
+ <Input v-model="value" type="currency" currency="USD" language="en-US" label="Price" />
24
+
25
+ <!-- Currency with Russian locale -->
26
+ <Input v-model="value" type="currency" currency="RUB" language="ru-RU" label="Salary" />
27
+
28
+ <!-- Currency without symbol -->
29
+ <Input v-model="value" type="currency" currency="EUR" currency-hide language="de-DE" label="Amount" />
30
+
31
+ <!-- Currency with three decimals -->
32
+ <Input v-model="value" type="currency" currency="USD" language="en-US" :fraction="3" label="Precise Amount" />
33
+
34
+ <!-- Number formatting only -->
35
+ <Input v-model="value" type="number-format" language="ru-RU" label="Number" />
36
+ </template>
37
+ ```
38
+
@@ -0,0 +1,38 @@
1
+ ## Работа с валютой
2
+
3
+ Свойства `type`, `currency`, `currencyHide`, `language` и `fraction` предназначены для управления форматированием денежных значений с автоматической подстановкой символа валюты и локализацией.
4
+
5
+ **Свойства:**
6
+
7
+ - `type` — тип инпута (устанавливается значение `currency`)
8
+ - `currency` — код валюты (например, `USD`, `EUR`, `RUB`)
9
+ - `currencyHide` — скрывает символ валюты в поле ввода
10
+ - `language` — код локали для форматирования (например, `ru-RU`, `en-US`)
11
+ - `fraction` — количество знаков после запятой (по умолчанию `2`)
12
+
13
+ Свойства работают совместно: `type="currency"` автоматически активирует режим валютного форматирования с двумя знаками после запятой. `currency` определяет символ, который добавляется к отформатированному числу (`$`, `€`, `₽`). При установке `currencyHide` символ валюты не отображается, но форматирование числа сохраняется. Свойство `language` влияет на разделители тысяч, десятичный разделитель и позицию символа валюты. Количество десятичных знаков можно изменить через `fraction`, перезаписав значение по умолчанию.
14
+
15
+ ```html
16
+ <script setup>
17
+ import { ref } from 'vue'
18
+ const value = ref('1234.56')
19
+ </script>
20
+
21
+ <template>
22
+ <!-- Стандартный валютный инпут -->
23
+ <Input v-model="value" type="currency" currency="USD" language="en-US" label="Цена" />
24
+
25
+ <!-- Валюта с русской локалью -->
26
+ <Input v-model="value" type="currency" currency="RUB" language="ru-RU" label="Зарплата" />
27
+
28
+ <!-- Валюта без символа -->
29
+ <Input v-model="value" type="currency" currency="EUR" currency-hide language="de-DE" label="Сумма" />
30
+
31
+ <!-- Валюта с тремя знаками -->
32
+ <Input v-model="value" type="currency" currency="USD" language="en-US" :fraction="3" label="Точная сумма" />
33
+
34
+ <!-- Только числовое форматирование -->
35
+ <Input v-model="value" type="number-format" language="ru-RU" label="Число" />
36
+ </template>
37
+ ```
38
+
@@ -0,0 +1,53 @@
1
+ ## Date and Time Formatting
2
+
3
+ Properties `type`, `language`, and `mask` are designed to manage date and time input and formatting with automatic localization and masking.
4
+
5
+ **Properties:**
6
+
7
+ - `type` — input type (set to one of: `date`, `datetime`, `year-month`, `time`, `hour-minute`)
8
+ - `language` — locale code for formatting (e.g., `ru-RU`, `en-US`)
9
+ - `mask` — custom input mask (optional)
10
+ - `min` — minimum allowed date/time value
11
+ - `max` — maximum allowed date/time value
12
+
13
+ Properties work together: `type="date"` automatically activates date input mode with localized formatting. `language` determines the order of date components (day/month/year or month/day/year) and separators. `type="datetime"` adds time input to the date. Types `year-month`, `time`, and `hour-minute` allow input of specific components only. Properties `min` and `max` restrict the range of allowed values. You can override the automatic mask via the `mask` property for custom formatting.
14
+
15
+ ```html
16
+ <script setup>
17
+ import { ref } from 'vue'
18
+ const dateValue = ref('2024-03-15')
19
+ const datetimeValue = ref('2024-03-15T14:30:00')
20
+ const timeValue = ref('14:30')
21
+ const yearMonthValue = ref('2024-03')
22
+ </script>
23
+
24
+ <template>
25
+ <!-- Standard date input -->
26
+ <Input v-model="dateValue" type="date" language="en-US" label="Date" />
27
+
28
+ <!-- Date with Russian locale -->
29
+ <Input v-model="dateValue" type="date" language="ru-RU" label="Дата" />
30
+
31
+ <!-- Date and time -->
32
+ <Input v-model="datetimeValue" type="datetime" language="en-US" label="Date and Time" />
33
+
34
+ <!-- Time only -->
35
+ <Input v-model="timeValue" type="time" language="en-US" label="Time" />
36
+
37
+ <!-- Hours and minutes -->
38
+ <Input v-model="timeValue" type="hour-minute" language="en-US" label="Hours:Minutes" />
39
+
40
+ <!-- Year and month -->
41
+ <Input v-model="yearMonthValue" type="year-month" language="en-US" label="Period" />
42
+
43
+ <!-- Date with constraints -->
44
+ <Input
45
+ v-model="dateValue"
46
+ type="date"
47
+ language="en-US"
48
+ min="2024-01-01"
49
+ max="2024-12-31"
50
+ label="Date in 2024"
51
+ />
52
+ </template>
53
+ ```
@@ -0,0 +1,53 @@
1
+ ## Работа с датой и временем
2
+
3
+ Свойства `type`, `language` и `mask` предназначены для управления вводом и форматированием значений даты и времени с автоматической локализацией и маскированием.
4
+
5
+ **Свойства:**
6
+
7
+ - `type` — тип инпута (устанавливается одно из значений: `date`, `datetime`, `year-month`, `time`, `hour-minute`)
8
+ - `language` — код локали для форматирования (например, `ru-RU`, `en-US`)
9
+ - `mask` — пользовательская маска для ввода (опционально)
10
+ - `min` — минимальное допустимое значение даты/времени
11
+ - `max` — максимальное допустимое значение даты/времени
12
+
13
+ Свойства работают совместно: `type="date"` автоматически активирует режим ввода даты с локализованным форматированием. `language` определяет порядок компонентов даты (день/месяц/год или месяц/день/год) и разделители. `type="datetime"` добавляет к дате ввод времени. Типы `year-month`, `time` и `hour-minute` позволяют вводить только определённые компоненты. Свойства `min` и `max` ограничивают диапазон допустимых значений. Можно переопределить автоматическую маску через свойство `mask` для кастомного форматирования.
14
+
15
+ ```html
16
+ <script setup>
17
+ import { ref } from 'vue'
18
+ const dateValue = ref('2024-03-15')
19
+ const datetimeValue = ref('2024-03-15T14:30:00')
20
+ const timeValue = ref('14:30')
21
+ const yearMonthValue = ref('2024-03')
22
+ </script>
23
+
24
+ <template>
25
+ <!-- Стандартный ввод даты -->
26
+ <Input v-model="dateValue" type="date" language="ru-RU" label="Дата" />
27
+
28
+ <!-- Дата с английской локалью -->
29
+ <Input v-model="dateValue" type="date" language="en-US" label="Date" />
30
+
31
+ <!-- Дата и время -->
32
+ <Input v-model="datetimeValue" type="datetime" language="ru-RU" label="Дата и время" />
33
+
34
+ <!-- Только время -->
35
+ <Input v-model="timeValue" type="time" language="ru-RU" label="Время" />
36
+
37
+ <!-- Часы и минуты -->
38
+ <Input v-model="timeValue" type="hour-minute" language="ru-RU" label="Часы:Минуты" />
39
+
40
+ <!-- Год и месяц -->
41
+ <Input v-model="yearMonthValue" type="year-month" language="ru-RU" label="Период" />
42
+
43
+ <!-- Дата с ограничениями -->
44
+ <Input
45
+ v-model="dateValue"
46
+ type="date"
47
+ language="ru-RU"
48
+ min="2024-01-01"
49
+ max="2024-12-31"
50
+ label="Дата в 2024 году"
51
+ />
52
+ </template>
53
+ ```