@dxtmisha/wiki 0.24.3 → 0.25.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.
- package/package.json +7 -7
- package/src/classes/WikiStorybookItem.ts +24 -0
- package/src/media/descriptions/wikiDescriptions.ts +28 -0
- package/src/media/descriptions/wikiDescriptionsAccordion.ts +158 -0
- package/src/media/descriptions/wikiDescriptionsActionSheet.ts +211 -0
- package/src/media/descriptions/wikiDescriptionsActions.ts +161 -0
- package/src/media/descriptions/wikiDescriptionsAnchor.ts +42 -0
- package/src/media/descriptions/wikiDescriptionsArrow.ts +181 -0
- package/src/media/descriptions/wikiDescriptionsBlock.ts +97 -0
- package/src/media/descriptions/wikiDescriptionsButton.ts +0 -1
- package/src/media/descriptions/wikiDescriptionsCell.ts +2 -1
- package/src/media/descriptions/wikiDescriptionsChipGroup.ts +168 -0
- package/src/media/descriptions/wikiDescriptionsDialog.ts +182 -0
- package/src/media/descriptions/wikiDescriptionsField.ts +2 -0
- package/src/media/descriptions/wikiDescriptionsImage.ts +41 -6
- package/src/media/descriptions/wikiDescriptionsInput.ts +257 -0
- package/src/media/descriptions/wikiDescriptionsMenu.ts +123 -0
- package/src/media/descriptions/wikiDescriptionsModal.ts +145 -0
- package/src/media/descriptions/wikiDescriptionsMotionTransform.ts +2 -6
- package/src/media/descriptions/wikiDescriptionsSelect.ts +209 -0
- package/src/media/descriptions/wikiDescriptionsSelectValue.ts +78 -0
- package/src/media/descriptions/wikiDescriptionsTextareaAutosize.ts +50 -0
- package/src/media/descriptions/wikiDescriptionsTooltip.ts +89 -0
- package/src/media/functional/en/conversions.mdx +67 -0
- package/src/media/functional/en/dataUtils.mdx +25 -0
- package/src/media/functional/en/datetimeRef.mdx +1 -1
- package/src/media/functional/en/eventRef.mdx +1 -1
- package/src/media/functional/en/executionUtils.mdx +58 -0
- package/src/media/functional/en/geoFlagRef.mdx +1 -1
- package/src/media/functional/en/geoIntlRef.mdx +1 -1
- package/src/media/functional/en/geoRef.mdx +2 -2
- package/src/media/functional/en/meta.mdx +1206 -0
- package/src/media/functional/en/metaManager.mdx +376 -0
- package/src/media/functional/en/metaOg.mdx +694 -0
- package/src/media/functional/en/metaTwitter.mdx +853 -0
- package/src/media/functional/en/reactive.mdx +40 -0
- package/src/media/functional/en/refTypes.mdx +1 -1
- package/src/media/functional/en/useApiRef.mdx +5 -5
- package/src/media/functional/en/useMeta.mdx +431 -0
- package/src/media/functional/en/validationUtils.mdx +11 -0
- package/src/media/functional/ru/conversions.mdx +67 -0
- package/src/media/functional/ru/dataUtils.mdx +25 -0
- package/src/media/functional/ru/datetimeRef.mdx +2 -2
- package/src/media/functional/ru/eventRef.mdx +1 -1
- package/src/media/functional/ru/executionUtils.mdx +58 -0
- package/src/media/functional/ru/geoFlagRef.mdx +1 -1
- package/src/media/functional/ru/geoIntl.mdx +2 -2
- package/src/media/functional/ru/geoIntlRef.mdx +1 -1
- package/src/media/functional/ru/geoRef.mdx +2 -2
- package/src/media/functional/ru/listTypes.mdx +1 -1
- package/src/media/functional/ru/meta.mdx +1330 -0
- package/src/media/functional/ru/metaManager.mdx +376 -0
- package/src/media/functional/ru/metaOg.mdx +694 -0
- package/src/media/functional/ru/metaTwitter.mdx +853 -0
- package/src/media/functional/ru/reactive.mdx +40 -0
- package/src/media/functional/ru/refTypes.mdx +2 -2
- package/src/media/functional/ru/useApiRef.mdx +5 -5
- package/src/media/functional/ru/useMeta.mdx +431 -0
- package/src/media/functional/ru/validationUtils.mdx +11 -0
- package/src/media/mdx/Accordion/accordion.en.mdx +59 -0
- package/src/media/mdx/Accordion/accordion.ru.mdx +59 -0
- package/src/media/mdx/Accordion/slots.en.mdx +6 -0
- package/src/media/mdx/Accordion/slots.ru.mdx +6 -0
- package/src/media/mdx/Accordion/wikiMdxAccordion.ts +25 -0
- package/src/media/mdx/ActionSheet/actionSheet.en.mdx +61 -0
- package/src/media/mdx/ActionSheet/actionSheet.ru.mdx +61 -0
- package/src/media/mdx/ActionSheet/touchClose.en.mdx +21 -0
- package/src/media/mdx/ActionSheet/touchClose.ru.mdx +21 -0
- package/src/media/mdx/ActionSheet/wikiMdxActionSheet.ts +25 -0
- package/src/media/mdx/Actions/actions.en.mdx +48 -0
- package/src/media/mdx/Actions/actions.ru.mdx +48 -0
- package/src/media/mdx/Actions/flexible.en.mdx +19 -0
- package/src/media/mdx/Actions/flexible.ru.mdx +19 -0
- package/src/media/mdx/Actions/list.en.mdx +50 -0
- package/src/media/mdx/Actions/list.ru.mdx +50 -0
- package/src/media/mdx/Actions/wikiMdxActions.ts +31 -0
- package/src/media/mdx/Anchor/anchor.en.mdx +34 -0
- package/src/media/mdx/Anchor/anchor.ru.mdx +34 -0
- package/src/media/mdx/Anchor/expose.go.en.mdx +6 -0
- package/src/media/mdx/Anchor/expose.go.ru.mdx +6 -0
- package/src/media/mdx/Anchor/hide.en.mdx +28 -0
- package/src/media/mdx/Anchor/hide.ru.mdx +28 -0
- package/src/media/mdx/Anchor/isCopy.en.mdx +23 -0
- package/src/media/mdx/Anchor/isCopy.ru.mdx +23 -0
- package/src/media/mdx/Anchor/scroll.en.mdx +34 -0
- package/src/media/mdx/Anchor/scroll.ru.mdx +35 -0
- package/src/media/mdx/Anchor/wikiMdxAnchor.ts +43 -0
- package/src/media/mdx/Arrow/arrow.en.mdx +33 -0
- package/src/media/mdx/Arrow/arrow.ru.mdx +33 -0
- package/src/media/mdx/Arrow/wikiMdxArrow.ts +19 -0
- package/src/media/mdx/Block/block.en.mdx +42 -0
- package/src/media/mdx/Block/block.ru.mdx +42 -0
- package/src/media/mdx/Block/wikiMdxBlock.ts +19 -0
- package/src/media/mdx/ChipGroup/chipGroup.en.mdx +51 -0
- package/src/media/mdx/ChipGroup/chipGroup.ru.mdx +51 -0
- package/src/media/mdx/ChipGroup/selected.en.mdx +50 -0
- package/src/media/mdx/ChipGroup/selected.ru.mdx +50 -0
- package/src/media/mdx/ChipGroup/wikiMdxChipGroup.ts +25 -0
- package/src/media/mdx/Dialog/buttons.en.mdx +45 -0
- package/src/media/mdx/Dialog/buttons.ru.mdx +45 -0
- package/src/media/mdx/Dialog/dialog.en.mdx +66 -0
- package/src/media/mdx/Dialog/dialog.ru.mdx +65 -0
- package/src/media/mdx/Dialog/events.en.mdx +63 -0
- package/src/media/mdx/Dialog/events.ru.mdx +63 -0
- package/src/media/mdx/Dialog/states.en.mdx +58 -0
- package/src/media/mdx/Dialog/states.ru.mdx +57 -0
- package/src/media/mdx/Dialog/wikiMdxDialog.ts +37 -0
- package/src/media/mdx/Field/arrows.en.mdx +22 -6
- package/src/media/mdx/Field/arrows.ru.mdx +22 -6
- package/src/media/mdx/Field/slots.en.mdx +0 -13
- package/src/media/mdx/Field/slots.ru.mdx +0 -13
- package/src/media/mdx/Image/img-tag.en.mdx +105 -0
- package/src/media/mdx/Image/img-tag.ru.mdx +105 -0
- package/src/media/mdx/Image/wikiMdxImage.ts +6 -0
- package/src/media/mdx/Input/currency.en.mdx +38 -0
- package/src/media/mdx/Input/currency.ru.mdx +38 -0
- package/src/media/mdx/Input/date.en.mdx +53 -0
- package/src/media/mdx/Input/date.ru.mdx +53 -0
- package/src/media/mdx/Input/input.en.mdx +143 -0
- package/src/media/mdx/Input/input.ru.mdx +71 -0
- package/src/media/mdx/Input/mask.en.mdx +30 -0
- package/src/media/mdx/Input/mask.ru.mdx +30 -0
- package/src/media/mdx/Input/number.en.mdx +41 -0
- package/src/media/mdx/Input/number.ru.mdx +41 -0
- package/src/media/mdx/Input/type.en.mdx +26 -0
- package/src/media/mdx/Input/type.ru.mdx +26 -0
- package/src/media/mdx/Input/wikiMdxInput.ts +49 -0
- package/src/media/mdx/Menu/event.updateValue.en.mdx +29 -0
- package/src/media/mdx/Menu/event.updateValue.ru.mdx +30 -0
- package/src/media/mdx/Menu/expose.navigation.en.mdx +12 -0
- package/src/media/mdx/Menu/expose.navigation.ru.mdx +12 -0
- package/src/media/mdx/Menu/navigation.en.mdx +56 -0
- package/src/media/mdx/Menu/navigation.ru.mdx +56 -0
- package/src/media/mdx/Menu/slots.control.en.mdx +65 -0
- package/src/media/mdx/Menu/slots.control.ru.mdx +65 -0
- package/src/media/mdx/Menu/slots.en.mdx +2 -24
- package/src/media/mdx/Menu/slots.ru.mdx +2 -24
- package/src/media/mdx/Menu/wikiMdxMenu.ts +27 -3
- package/src/media/mdx/Modal/differences.en.mdx +130 -0
- package/src/media/mdx/Modal/differences.ru.mdx +65 -0
- package/src/media/mdx/Modal/modal.en.mdx +63 -0
- package/src/media/mdx/Modal/modal.ru.mdx +63 -0
- package/src/media/mdx/Modal/wikiMdxModal.ts +25 -0
- package/src/media/mdx/MotionTransform/expose.motionTransformElement.en.mdx +13 -0
- package/src/media/mdx/MotionTransform/expose.motionTransformElement.ru.mdx +14 -0
- package/src/media/mdx/MotionTransform/wikiMdxMotionTransform.ts +6 -0
- package/src/media/mdx/Select/select.en.mdx +69 -0
- package/src/media/mdx/Select/select.ru.mdx +69 -0
- package/src/media/mdx/Select/wikiMdxSelect.ts +19 -0
- package/src/media/mdx/SelectValue/selectValue.en.mdx +64 -0
- package/src/media/mdx/SelectValue/selectValue.ru.mdx +64 -0
- package/src/media/mdx/SelectValue/wikiMdxSelectValue.ts +19 -0
- package/src/media/mdx/TextareaAutosize/textarea-autosize.en.mdx +65 -0
- package/src/media/mdx/TextareaAutosize/textarea-autosize.ru.mdx +65 -0
- package/src/media/mdx/TextareaAutosize/wikiMdxTextareaAutosize.ts +19 -0
- package/src/media/mdx/Tooltip/event.tooltip.en.mdx +7 -0
- package/src/media/mdx/Tooltip/event.tooltip.ru.mdx +8 -0
- package/src/media/mdx/Tooltip/slot.control.en.mdx +14 -0
- package/src/media/mdx/Tooltip/slot.control.ru.mdx +14 -0
- package/src/media/mdx/Tooltip/tooltip.en.mdx +34 -0
- package/src/media/mdx/Tooltip/tooltip.ru.mdx +34 -0
- package/src/media/mdx/Tooltip/wikiMdxTooltip.ts +31 -0
- package/src/media/mdx/Window/classes.ru.mdx +1 -1
- package/src/media/mdx/event/events.actions.en.mdx +44 -0
- package/src/media/mdx/event/events.actions.ru.mdx +44 -0
- package/src/media/mdx/event/events.inputStandard.en.mdx +6 -0
- package/src/media/mdx/event/events.inputStandard.ru.mdx +6 -0
- package/src/media/mdx/event/wikiMdxEvent.ts +20 -8
- package/src/media/mdx/expose/expose.descriptionId.en.mdx +6 -0
- package/src/media/mdx/expose/expose.descriptionId.ru.mdx +6 -0
- package/src/media/mdx/expose/expose.id.en.mdx +6 -0
- package/src/media/mdx/expose/expose.id.ru.mdx +6 -0
- package/src/media/mdx/expose/expose.labelId.en.mdx +6 -0
- package/src/media/mdx/expose/expose.labelId.ru.mdx +6 -0
- package/src/media/mdx/expose/wikiMdxExpose.ts +18 -0
- package/src/media/mdx/slot/body.en.mdx +6 -0
- package/src/media/mdx/slot/body.ru.mdx +6 -0
- package/src/media/mdx/slot/headline.en.mdx +7 -0
- package/src/media/mdx/slot/headline.ru.mdx +6 -0
- package/src/media/mdx/slot/leading.en.mdx +7 -0
- package/src/media/mdx/slot/leading.ru.mdx +7 -0
- package/src/media/mdx/slot/secondary.en.mdx +5 -0
- package/src/media/mdx/slot/secondary.ru.mdx +5 -0
- package/src/media/mdx/slot/trailing.en.mdx +7 -0
- package/src/media/mdx/slot/trailing.ru.mdx +7 -0
- package/src/media/mdx/slot/wikiMdxSlot.ts +30 -0
- package/src/media/mdx/style/isSkeleton.en.mdx +2 -2
- package/src/media/mdx/style/isSkeleton.ru.mdx +2 -2
- package/src/media/mdx/value/v-model-selected.en.mdx +28 -0
- package/src/media/mdx/value/v-model-selected.ru.mdx +28 -0
- package/src/media/mdx/value/v-model.en.mdx +26 -0
- package/src/media/mdx/value/v-model.ru.mdx +26 -0
- package/src/media/mdx/value/wikiMdxValue.ts +24 -3
- package/src/media/mdx/wikiMdx.ts +29 -1
- package/src/media/props/wiki.ts +42 -0
- package/src/media/props/wikiActions.ts +43 -0
- package/src/media/props/wikiActionsInclude.ts +62 -0
- package/src/media/props/wikiAnchor.ts +84 -0
- package/src/media/props/wikiAria.ts +102 -0
- package/src/media/props/wikiArrow.ts +24 -0
- package/src/media/props/wikiArrowInclude.ts +45 -0
- package/src/media/props/wikiBarsInclude.ts +80 -0
- package/src/media/props/wikiChipGroup.ts +39 -0
- package/src/media/props/wikiDialog.ts +34 -0
- package/src/media/props/wikiField.ts +0 -21
- package/src/media/props/wikiFieldCounterInclude.ts +78 -0
- package/src/media/props/wikiForm.ts +248 -0
- package/src/media/props/wikiHook.ts +20 -0
- package/src/media/props/wikiIcon.ts +3 -3
- package/src/media/props/wikiIconInclude.ts +319 -0
- package/src/media/props/wikiImage.ts +71 -19
- package/src/media/props/wikiInformation.ts +160 -0
- package/src/media/props/wikiInput.ts +34 -0
- package/src/media/props/wikiListItem.ts +20 -0
- package/src/media/props/wikiMask.ts +0 -10
- package/src/media/props/wikiMaskInclude.ts +54 -0
- package/src/media/props/wikiMenu.ts +0 -10
- package/src/media/props/wikiMotionTransform.ts +0 -10
- package/src/media/props/wikiOption.ts +113 -0
- package/src/media/props/wikiSelect.ts +68 -0
- package/src/media/props/wikiSelectValue.ts +30 -0
- package/src/media/props/wikiStatus.ts +29 -41
- package/src/media/props/wikiStyle.ts +154 -243
- package/src/media/props/wikiTechnical.ts +65 -0
- package/src/media/props/wikiText.ts +57 -0
- package/src/media/props/wikiTooltip.ts +53 -0
- package/src/media/props/wikiValue.ts +14 -203
- package/src/media/props/wikiWindow.ts +0 -31
- package/src/styles/storybookStyle.scss +3 -1
- package/src/types/storybookTypes.ts +26 -4
|
@@ -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,8 @@ 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'
|
|
11
13
|
|
|
12
14
|
import eventLoadEn from './event.load.en.mdx'
|
|
13
15
|
import eventLoadRu from './event.load.ru.mdx'
|
|
@@ -34,6 +36,10 @@ export const wikiMdxImage: StorybookComponentsMdxItem = {
|
|
|
34
36
|
en: adaptiveEn,
|
|
35
37
|
ru: adaptiveRu
|
|
36
38
|
},
|
|
39
|
+
'img-tag': {
|
|
40
|
+
en: imgTagEn,
|
|
41
|
+
ru: imgTagRu
|
|
42
|
+
},
|
|
37
43
|
'event.load': {
|
|
38
44
|
en: eventLoadEn,
|
|
39
45
|
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
|
+
```
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
Text input field component with validation, masking and formatting support.
|
|
2
|
+
|
|
3
|
+
Input provides a flexible interface for entering various types of data: text, numbers, email, passwords, phones, URLs, dates and time. The component automatically applies appropriate validation, formatting and keyboard based on the specified type. Supports masking for structured input (phones, dates, custom patterns), currency and number formatting, password visibility control and integration with the Field component for consistent styling.
|
|
4
|
+
|
|
5
|
+
**Key features:**
|
|
6
|
+
|
|
7
|
+
- Multiple input types (text, number, email, password, tel, url, date, time and more)
|
|
8
|
+
- Built-in validation with custom messages
|
|
9
|
+
- Masking for formatted input
|
|
10
|
+
- Currency and number formatting with localization
|
|
11
|
+
- Password visibility toggle
|
|
12
|
+
- Prefix and suffix for additional context
|
|
13
|
+
- Character counter for length limits
|
|
14
|
+
- Navigation arrows for numeric values
|
|
15
|
+
- Autocomplete and spellcheck support
|
|
16
|
+
- Clear button for value reset
|
|
17
|
+
|
|
18
|
+
**Common use cases:**
|
|
19
|
+
|
|
20
|
+
- Registration and login forms
|
|
21
|
+
- Contact information fields (email, phone)
|
|
22
|
+
- Numeric fields (quantity, price, age)
|
|
23
|
+
- Password fields with visibility toggle
|
|
24
|
+
- Search fields with quick clear
|
|
25
|
+
- Formatted input (phones, dates, cards)
|
|
26
|
+
- Currency fields with automatic formatting
|
|
27
|
+
|
|
28
|
+
```html
|
|
29
|
+
<script setup>
|
|
30
|
+
import { ref } from 'vue'
|
|
31
|
+
|
|
32
|
+
const email = ref('')
|
|
33
|
+
const password = ref('')
|
|
34
|
+
|
|
35
|
+
const handleInput = (event, validation) => {
|
|
36
|
+
console.log('Input value:', validation.value)
|
|
37
|
+
console.log('Valid:', validation.status)
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<template>
|
|
42
|
+
<div class="form">
|
|
43
|
+
<Input
|
|
44
|
+
v-model="email"
|
|
45
|
+
type="email"
|
|
46
|
+
label="Email"
|
|
47
|
+
placeholder="example@mail.com"
|
|
48
|
+
required
|
|
49
|
+
@input="handleInput"
|
|
50
|
+
/>
|
|
51
|
+
|
|
52
|
+
<Input
|
|
53
|
+
v-model="password"
|
|
54
|
+
type="password"
|
|
55
|
+
label="Password"
|
|
56
|
+
placeholder="Enter password"
|
|
57
|
+
minlength="8"
|
|
58
|
+
required
|
|
59
|
+
iconVisibility="visibility"
|
|
60
|
+
iconVisibilityOff="visibility_off"
|
|
61
|
+
/>
|
|
62
|
+
|
|
63
|
+
<Input
|
|
64
|
+
type="currency"
|
|
65
|
+
label="Price"
|
|
66
|
+
currency="USD"
|
|
67
|
+
language="en-US"
|
|
68
|
+
/>
|
|
69
|
+
</div>
|
|
70
|
+
</template>
|
|
71
|
+
```
|
|
72
|
+
Компонент текстового поля ввода с поддержкой валидации, маскирования и форматирования.
|
|
73
|
+
|
|
74
|
+
Input предоставляет гибкий интерфейс для ввода данных различных типов: текст, числа, email, пароли, телефоны, URL, даты и время. Компонент автоматически применяет соответствующую валидацию, форматирование и клавиатуру в зависимости от указанного типа. Поддерживает маскирование для структурированного ввода (телефоны, даты, кастомные паттерны), форматирование валют и чисел, управление видимостью пароля и интеграцию с компонентом Field для единообразной стилизации.
|
|
75
|
+
|
|
76
|
+
**Основные возможности:**
|
|
77
|
+
|
|
78
|
+
- Множественные типы ввода (text, number, email, password, tel, url, date, time и другие)
|
|
79
|
+
- Встроенная валидация с пользовательскими сообщениями
|
|
80
|
+
- Маскирование для форматированного ввода
|
|
81
|
+
- Форматирование валюты и чисел с локализацией
|
|
82
|
+
- Переключатель видимости пароля
|
|
83
|
+
- Префикс и суффикс для дополнительного контекста
|
|
84
|
+
- Счётчик символов для ограничения длины
|
|
85
|
+
- Стрелки навигации для числовых значений
|
|
86
|
+
- Поддержка автозаполнения и проверки орфографии
|
|
87
|
+
- Кнопка очистки значения
|
|
88
|
+
|
|
89
|
+
**Типичные сценарии использования:**
|
|
90
|
+
|
|
91
|
+
- Формы регистрации и авторизации
|
|
92
|
+
- Поля ввода контактных данных (email, телефон)
|
|
93
|
+
- Числовые поля (количество, цена, возраст)
|
|
94
|
+
- Поля для ввода паролей с переключением видимости
|
|
95
|
+
- Поля поиска с быстрой очисткой
|
|
96
|
+
- Форматированный ввод (телефоны, даты, карты)
|
|
97
|
+
- Валютные поля с автоматическим форматированием
|
|
98
|
+
|
|
99
|
+
```html
|
|
100
|
+
<script setup>
|
|
101
|
+
import { ref } from 'vue'
|
|
102
|
+
|
|
103
|
+
const email = ref('')
|
|
104
|
+
const password = ref('')
|
|
105
|
+
|
|
106
|
+
const handleInput = (event, validation) => {
|
|
107
|
+
console.log('Введённое значение:', validation.value)
|
|
108
|
+
console.log('Валидно:', validation.status)
|
|
109
|
+
}
|
|
110
|
+
</script>
|
|
111
|
+
|
|
112
|
+
<template>
|
|
113
|
+
<div class="form">
|
|
114
|
+
<Input
|
|
115
|
+
v-model="email"
|
|
116
|
+
type="email"
|
|
117
|
+
label="Email"
|
|
118
|
+
placeholder="example@mail.com"
|
|
119
|
+
required
|
|
120
|
+
@input="handleInput"
|
|
121
|
+
/>
|
|
122
|
+
|
|
123
|
+
<Input
|
|
124
|
+
v-model="password"
|
|
125
|
+
type="password"
|
|
126
|
+
label="Пароль"
|
|
127
|
+
placeholder="Введите пароль"
|
|
128
|
+
minlength="8"
|
|
129
|
+
required
|
|
130
|
+
iconVisibility="visibility"
|
|
131
|
+
iconVisibilityOff="visibility_off"
|
|
132
|
+
/>
|
|
133
|
+
|
|
134
|
+
<Input
|
|
135
|
+
type="currency"
|
|
136
|
+
label="Цена"
|
|
137
|
+
currency="RUB"
|
|
138
|
+
language="ru-RU"
|
|
139
|
+
/>
|
|
140
|
+
</div>
|
|
141
|
+
</template>
|
|
142
|
+
```
|
|
143
|
+
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
Компонент текстового поля ввода с поддержкой валидации, маскирования и форматирования.
|
|
2
|
+
|
|
3
|
+
Input предоставляет гибкий интерфейс для ввода данных различных типов: текст, числа, email, пароли, телефоны, URL, даты и время. Компонент автоматически применяет соответствующую валидацию, форматирование и клавиатуру в зависимости от указанного типа. Поддерживает маскирование для структурированного ввода (телефоны, даты, кастомные паттерны), форматирование валют и чисел, управление видимостью пароля и интеграцию с компонентом Field для единообразной стилизации.
|
|
4
|
+
|
|
5
|
+
**Основные возможности:**
|
|
6
|
+
|
|
7
|
+
- Множественные типы ввода (text, number, email, password, tel, url, date, time и другие)
|
|
8
|
+
- Встроенная валидация с пользовательскими сообщениями
|
|
9
|
+
- Маскирование для форматированного ввода
|
|
10
|
+
- Форматирование валюты и чисел с локализацией
|
|
11
|
+
- Переключатель видимости пароля
|
|
12
|
+
- Префикс и суффикс для дополнительного контекста
|
|
13
|
+
- Счётчик символов для ограничения длины
|
|
14
|
+
- Стрелки навигации для числовых значений
|
|
15
|
+
- Поддержка автозаполнения и проверки орфографии
|
|
16
|
+
- Кнопка очистки значения
|
|
17
|
+
|
|
18
|
+
**Типичные сценарии использования:**
|
|
19
|
+
|
|
20
|
+
- Формы регистрации и авторизации
|
|
21
|
+
- Поля ввода контактных данных (email, телефон)
|
|
22
|
+
- Числовые поля (количество, цена, возраст)
|
|
23
|
+
- Поля для ввода паролей с переключением видимости
|
|
24
|
+
- Поля поиска с быстрой очисткой
|
|
25
|
+
- Форматированный ввод (телефоны, даты, карты)
|
|
26
|
+
- Валютные поля с автоматическим форматированием
|
|
27
|
+
|
|
28
|
+
```html
|
|
29
|
+
<script setup>
|
|
30
|
+
import { ref } from 'vue'
|
|
31
|
+
|
|
32
|
+
const email = ref('')
|
|
33
|
+
const password = ref('')
|
|
34
|
+
|
|
35
|
+
const handleInput = (event, validation) => {
|
|
36
|
+
console.log('Введённое значение:', validation.value)
|
|
37
|
+
console.log('Валидно:', validation.status)
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<template>
|
|
42
|
+
<div class="form">
|
|
43
|
+
<Input
|
|
44
|
+
v-model="email"
|
|
45
|
+
type="email"
|
|
46
|
+
label="Email"
|
|
47
|
+
placeholder="example@mail.com"
|
|
48
|
+
required
|
|
49
|
+
@input="handleInput"
|
|
50
|
+
/>
|
|
51
|
+
|
|
52
|
+
<Input
|
|
53
|
+
v-model="password"
|
|
54
|
+
type="password"
|
|
55
|
+
label="Пароль"
|
|
56
|
+
placeholder="Введите пароль"
|
|
57
|
+
minlength="8"
|
|
58
|
+
required
|
|
59
|
+
iconVisibility="visibility"
|
|
60
|
+
iconVisibilityOff="visibility_off"
|
|
61
|
+
/>
|
|
62
|
+
|
|
63
|
+
<Input
|
|
64
|
+
type="currency"
|
|
65
|
+
label="Цена"
|
|
66
|
+
currency="RUB"
|
|
67
|
+
language="ru-RU"
|
|
68
|
+
/>
|
|
69
|
+
</div>
|
|
70
|
+
</template>
|
|
71
|
+
```
|