@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
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
### `control`
|
|
2
|
-
|
|
3
|
-
Слот для размещения элемента управления (триггера) меню.
|
|
4
|
-
|
|
5
|
-
**Параметры:**
|
|
6
|
-
- `props: MenuControlItem` — объект с данными управления меню
|
|
7
|
-
|
|
8
1
|
### `title`
|
|
9
2
|
|
|
10
3
|
Слот для размещения заголовка окна меню.
|
|
@@ -35,28 +28,13 @@
|
|
|
35
28
|
|
|
36
29
|
```html
|
|
37
30
|
<script setup>
|
|
38
|
-
import { ref } from 'vue'
|
|
39
|
-
|
|
40
|
-
const isOpen = ref(false)
|
|
41
|
-
const menuItems = ref([
|
|
42
|
-
{ label: 'Элемент 1', value: '1' },
|
|
43
|
-
{ label: 'Элемент 2', value: '2' },
|
|
44
|
-
{ label: 'Элемент 3', value: '3' }
|
|
45
|
-
])
|
|
46
|
-
|
|
47
31
|
const handleSubmit = (values) => {
|
|
48
32
|
console.log('Выбранные значения:', values)
|
|
49
33
|
}
|
|
50
34
|
</script>
|
|
51
35
|
|
|
52
36
|
<template>
|
|
53
|
-
<
|
|
54
|
-
<template #control="{ onclick, isSelected, selectedNames }">
|
|
55
|
-
<button @click="onclick">
|
|
56
|
-
{{ isSelected ? selectedNames.join(', ') : 'Выбрать элементы' }}
|
|
57
|
-
</button>
|
|
58
|
-
</template>
|
|
59
|
-
|
|
37
|
+
<Component>
|
|
60
38
|
<template #title="{ selectedList }">
|
|
61
39
|
<h3>Выбор элементов</h3>
|
|
62
40
|
<span v-if="selectedList.length">
|
|
@@ -77,7 +55,7 @@ const handleSubmit = (values) => {
|
|
|
77
55
|
Применить
|
|
78
56
|
</button>
|
|
79
57
|
</template>
|
|
80
|
-
</
|
|
58
|
+
</Component>
|
|
81
59
|
</template>
|
|
82
60
|
```
|
|
83
61
|
|
|
@@ -2,26 +2,50 @@ import type { StorybookComponentsMdxItem } from '../../../types/storybookTypes'
|
|
|
2
2
|
|
|
3
3
|
import ajaxEn from './ajax.en.mdx'
|
|
4
4
|
import ajaxRu from './ajax.ru.mdx'
|
|
5
|
+
import eventUpdateValueEn from './event.updateValue.en.mdx'
|
|
6
|
+
import eventUpdateValueRu from './event.updateValue.ru.mdx'
|
|
7
|
+
import exposeNavigationEn from './expose.navigation.en.mdx'
|
|
8
|
+
import exposeNavigationRu from './expose.navigation.ru.mdx'
|
|
5
9
|
import menuEn from './menu.en.mdx'
|
|
6
10
|
import menuRu from './menu.ru.mdx'
|
|
11
|
+
import navigationEn from './navigation.en.mdx'
|
|
12
|
+
import navigationRu from './navigation.ru.mdx'
|
|
7
13
|
import slotsEn from './slots.en.mdx'
|
|
8
14
|
import slotsRu from './slots.ru.mdx'
|
|
15
|
+
import slotsControlEn from './slots.control.en.mdx'
|
|
16
|
+
import slotsControlRu from './slots.control.ru.mdx'
|
|
9
17
|
|
|
10
18
|
/** MDX документация для компонента Menu */
|
|
11
19
|
export const wikiMdxMenu: StorybookComponentsMdxItem = {
|
|
12
20
|
name: 'Menu',
|
|
13
21
|
descriptions: {
|
|
14
|
-
ajax: {
|
|
22
|
+
'ajax': {
|
|
15
23
|
en: ajaxEn,
|
|
16
24
|
ru: ajaxRu
|
|
17
25
|
},
|
|
18
|
-
|
|
26
|
+
'event.updateValue': {
|
|
27
|
+
en: eventUpdateValueEn,
|
|
28
|
+
ru: eventUpdateValueRu
|
|
29
|
+
},
|
|
30
|
+
'expose.navigation': {
|
|
31
|
+
en: exposeNavigationEn,
|
|
32
|
+
ru: exposeNavigationRu
|
|
33
|
+
},
|
|
34
|
+
'menu': {
|
|
19
35
|
en: menuEn,
|
|
20
36
|
ru: menuRu
|
|
21
37
|
},
|
|
22
|
-
|
|
38
|
+
'navigation': {
|
|
39
|
+
en: navigationEn,
|
|
40
|
+
ru: navigationRu
|
|
41
|
+
},
|
|
42
|
+
'slots': {
|
|
23
43
|
en: slotsEn,
|
|
24
44
|
ru: slotsRu
|
|
45
|
+
},
|
|
46
|
+
'slotsControl': {
|
|
47
|
+
en: slotsControlEn,
|
|
48
|
+
ru: slotsControlRu
|
|
25
49
|
}
|
|
26
50
|
}
|
|
27
51
|
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
## Differences between Modal, ActionSheet and Dialog
|
|
2
|
+
|
|
3
|
+
All three components are built on top of **Window**, but have different purposes and behaviors:
|
|
4
|
+
|
|
5
|
+
### Modal
|
|
6
|
+
|
|
7
|
+
**Modal** — a modal window with centered positioning for content requiring immediate user attention.
|
|
8
|
+
|
|
9
|
+
**Features:**
|
|
10
|
+
- Uses `adaptive: 'modal'` Window mode
|
|
11
|
+
- **Centered positioning** by default
|
|
12
|
+
- Semi-transparent overlay blocks interaction with the main interface
|
|
13
|
+
- Closes on ESC key and click outside (unless `persistent` is set)
|
|
14
|
+
- Supports slots for title, content, and footer
|
|
15
|
+
- Integrated with Bars and Actions components
|
|
16
|
+
|
|
17
|
+
**Common use cases:**
|
|
18
|
+
- Action confirmation dialogs
|
|
19
|
+
- Create/edit record forms
|
|
20
|
+
- Warnings and informational messages
|
|
21
|
+
- Viewing detailed information
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### ActionSheet
|
|
26
|
+
|
|
27
|
+
**ActionSheet** — a modal panel with a set of actions appearing from the bottom of the screen (on mobile devices) or as a context menu.
|
|
28
|
+
|
|
29
|
+
**Features:**
|
|
30
|
+
- Uses `adaptive: 'actionSheet'` Window mode
|
|
31
|
+
- **Bottom positioning** on mobile devices
|
|
32
|
+
- **Swipe down gesture** support for closing (`touchClose`)
|
|
33
|
+
- Automatically adds dividers between items (`divider: true`)
|
|
34
|
+
- Adaptive behavior: can transform into modal on larger screens
|
|
35
|
+
- Specialized for action lists
|
|
36
|
+
|
|
37
|
+
**Common use cases:**
|
|
38
|
+
- Action menus for objects (edit, delete, share)
|
|
39
|
+
- Selecting an option from a list
|
|
40
|
+
- Context menus on mobile devices
|
|
41
|
+
- Actions requiring quick access
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### Dialog
|
|
46
|
+
|
|
47
|
+
**Dialog** — a component for dialog windows with simplified API.
|
|
48
|
+
|
|
49
|
+
**Features:**
|
|
50
|
+
- Usually an even more simplified wrapper over Modal
|
|
51
|
+
- May have preset styles for system dialogs
|
|
52
|
+
- Often used for simple confirmations (yes/no, OK/Cancel)
|
|
53
|
+
|
|
54
|
+
**Common use cases:**
|
|
55
|
+
- Simple confirmations (alert, confirm)
|
|
56
|
+
- System notifications
|
|
57
|
+
- Quick dialogs without complex content
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### Choosing a component
|
|
62
|
+
|
|
63
|
+
- **Use Modal** when you need to display a form, detailed information, or content requiring user attention
|
|
64
|
+
- **Use ActionSheet** when you need to offer a list of actions, especially on mobile devices
|
|
65
|
+
- **Use Dialog** when you need a simple confirmation or system notification
|
|
66
|
+
## Разница между Modal, ActionSheet и Dialog
|
|
67
|
+
|
|
68
|
+
Все три компонента построены на базе **Window**, но имеют различное назначение и поведение:
|
|
69
|
+
|
|
70
|
+
### Modal
|
|
71
|
+
|
|
72
|
+
**Modal** — модальное окно с центрированным позиционированием для контента, требующего немедленного внимания пользователя.
|
|
73
|
+
|
|
74
|
+
**Особенности:**
|
|
75
|
+
- Использует `adaptive: 'modal'` режим Window
|
|
76
|
+
- **Центрированное позиционирование** по умолчанию
|
|
77
|
+
- Полупрозрачный оверлей блокирует взаимодействие с основным интерфейсом
|
|
78
|
+
- Закрывается по ESC и клику вне области (если не установлен `persistent`)
|
|
79
|
+
- Поддерживает слоты для заголовка, контента и футера
|
|
80
|
+
- Интегрирован с компонентами Bars и Actions
|
|
81
|
+
|
|
82
|
+
**Типичные сценарии:**
|
|
83
|
+
- Диалоги подтверждения действий
|
|
84
|
+
- Формы создания/редактирования записей
|
|
85
|
+
- Предупреждения и информационные сообщения
|
|
86
|
+
- Просмотр детальной информации
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
### ActionSheet
|
|
91
|
+
|
|
92
|
+
**ActionSheet** — модальная панель с набором действий, появляющаяся снизу экрана (на мобильных устройствах) или в виде контекстного меню.
|
|
93
|
+
|
|
94
|
+
**Особенности:**
|
|
95
|
+
- Использует `adaptive: 'actionSheet'` режим Window
|
|
96
|
+
- **Позиционирование снизу** экрана на мобильных устройствах
|
|
97
|
+
- Поддержка **жеста свайпа вниз** для закрытия (`touchClose`)
|
|
98
|
+
- Автоматически добавляет разделители между элементами (`divider: true`)
|
|
99
|
+
- Адаптивное поведение: может трансформироваться в modal на больших экранах
|
|
100
|
+
- Специализирован для списков действий
|
|
101
|
+
|
|
102
|
+
**Типичные сценарии:**
|
|
103
|
+
- Меню действий с объектом (редактировать, удалить, поделиться)
|
|
104
|
+
- Выбор опции из списка
|
|
105
|
+
- Контекстные меню на мобильных устройствах
|
|
106
|
+
- Действия, требующие быстрого доступа
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### Dialog
|
|
111
|
+
|
|
112
|
+
**Dialog** — компонент для диалоговых окон с упрощенным API (если реализован в вашей системе).
|
|
113
|
+
|
|
114
|
+
**Особенности:**
|
|
115
|
+
- Обычно является еще более упрощенной оберткой над Modal
|
|
116
|
+
- Может иметь предустановленные стили для системных диалогов
|
|
117
|
+
- Часто используется для простых подтверждений (да/нет, ОК/Отмена)
|
|
118
|
+
|
|
119
|
+
**Типичные сценарии:**
|
|
120
|
+
- Простые подтверждения (alert, confirm)
|
|
121
|
+
- Системные уведомления
|
|
122
|
+
- Быстрые диалоги без сложного контента
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### Выбор компонента
|
|
127
|
+
|
|
128
|
+
- **Используйте Modal**, когда нужно показать форму, детальную информацию или контент, требующий внимания пользователя
|
|
129
|
+
- **Используйте ActionSheet**, когда нужно предложить список действий, особенно на мобильных устройствах
|
|
130
|
+
- **Используйте Dialog**, когда нужно простое подтверждение или системное уведомление
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
## Разница между Modal, ActionSheet и Dialog
|
|
2
|
+
|
|
3
|
+
Все три компонента построены на базе **Window**, но имеют различное назначение и поведение:
|
|
4
|
+
|
|
5
|
+
### Modal
|
|
6
|
+
|
|
7
|
+
**Modal** — модальное окно с центрированным позиционированием для контента, требующего немедленного внимания пользователя.
|
|
8
|
+
|
|
9
|
+
**Особенности:**
|
|
10
|
+
- Использует `adaptive: 'modal'` режим Window
|
|
11
|
+
- **Центрированное позиционирование** по умолчанию
|
|
12
|
+
- Полупрозрачный оверлей блокирует взаимодействие с основным интерфейсом
|
|
13
|
+
- Закрывается по ESC и клику вне области (если не установлен `persistent`)
|
|
14
|
+
- Поддерживает слоты для заголовка, контента и футера
|
|
15
|
+
- Интегрирован с компонентами Bars и Actions
|
|
16
|
+
|
|
17
|
+
**Типичные сценарии:**
|
|
18
|
+
- Диалоги подтверждения действий
|
|
19
|
+
- Формы создания/редактирования записей
|
|
20
|
+
- Предупреждения и информационные сообщения
|
|
21
|
+
- Просмотр детальной информации
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### ActionSheet
|
|
26
|
+
|
|
27
|
+
**ActionSheet** — модальная панель с набором действий, появляющаяся снизу экрана (на мобильных устройствах) или в виде контекстного меню.
|
|
28
|
+
|
|
29
|
+
**Особенности:**
|
|
30
|
+
- Использует `adaptive: 'actionSheet'` режим Window
|
|
31
|
+
- **Позиционирование снизу** экрана на мобильных устройствах
|
|
32
|
+
- Поддержка **жеста свайпа вниз** для закрытия (`touchClose`)
|
|
33
|
+
- Автоматически добавляет разделители между элементами (`divider: true`)
|
|
34
|
+
- Адаптивное поведение: может трансформироваться в modal на больших экранах
|
|
35
|
+
- Специализирован для списков действий
|
|
36
|
+
|
|
37
|
+
**Типичные сценарии:**
|
|
38
|
+
- Меню действий с объектом (редактировать, удалить, поделиться)
|
|
39
|
+
- Выбор опции из списка
|
|
40
|
+
- Контекстные меню на мобильных устройствах
|
|
41
|
+
- Действия, требующие быстрого доступа
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### Dialog
|
|
46
|
+
|
|
47
|
+
**Dialog** — компонент для диалоговых окон с упрощенным API.
|
|
48
|
+
|
|
49
|
+
**Особенности:**
|
|
50
|
+
- Обычно является еще более упрощенной оберткой над Modal
|
|
51
|
+
- Может иметь предустановленные стили для системных диалогов
|
|
52
|
+
- Часто используется для простых подтверждений (да/нет, ОК/Отмена)
|
|
53
|
+
|
|
54
|
+
**Типичные сценарии:**
|
|
55
|
+
- Простые подтверждения (alert, confirm)
|
|
56
|
+
- Системные уведомления
|
|
57
|
+
- Быстрые диалоги без сложного контента
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### Выбор компонента
|
|
62
|
+
|
|
63
|
+
- **Используйте Modal**, когда нужно показать форму, детальную информацию или контент, требующий внимания пользователя
|
|
64
|
+
- **Используйте ActionSheet**, когда нужно предложить список действий, особенно на мобильных устройствах
|
|
65
|
+
- **Используйте Dialog**, когда нужно простое подтверждение или системное уведомление
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
A simplified wrapper over the Window component for creating modal dialogs with preconfigured centered positioning settings.
|
|
2
|
+
|
|
3
|
+
Modal is a specialized component that uses Window with a fixed `adaptive: 'modal'` mode. It is designed to display content that requires immediate user attention, blocking interaction with the main interface. The component automatically centers content, adds a semi-transparent backdrop (overlay), and manages focus.
|
|
4
|
+
|
|
5
|
+
**Key features:**
|
|
6
|
+
|
|
7
|
+
- Centered positioning by default
|
|
8
|
+
- Semi-transparent overlay with background blocking
|
|
9
|
+
- Control via v-model:open
|
|
10
|
+
- Close on ESC key and click outside
|
|
11
|
+
- Integration with Scrollbar for long content
|
|
12
|
+
- Slots for title, content, and footer
|
|
13
|
+
- Lifecycle events (preparation, opening, closing)
|
|
14
|
+
- Close button with customizable icon
|
|
15
|
+
|
|
16
|
+
**Differences from Window:**
|
|
17
|
+
|
|
18
|
+
Modal is a Window with preset `adaptive: 'modal'`, which simplifies usage for standard dialog windows without explicitly specifying the adaptive mode.
|
|
19
|
+
|
|
20
|
+
**Common use cases:**
|
|
21
|
+
|
|
22
|
+
- Action confirmation dialogs
|
|
23
|
+
- Create/edit forms
|
|
24
|
+
- Warnings and informational messages
|
|
25
|
+
- Viewing detailed information
|
|
26
|
+
- Multi-step wizards
|
|
27
|
+
|
|
28
|
+
```html
|
|
29
|
+
<script setup>
|
|
30
|
+
import { ref } from 'vue'
|
|
31
|
+
|
|
32
|
+
const isModalOpen = ref(false)
|
|
33
|
+
|
|
34
|
+
const handleBeforeClosing = async () => {
|
|
35
|
+
// Check before closing
|
|
36
|
+
return confirm('Close modal window?')
|
|
37
|
+
}
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<template>
|
|
41
|
+
<button @click="isModalOpen = true">Open Modal</button>
|
|
42
|
+
|
|
43
|
+
<Modal
|
|
44
|
+
v-model:open="isModalOpen"
|
|
45
|
+
:beforeClosing="handleBeforeClosing"
|
|
46
|
+
closeButton
|
|
47
|
+
>
|
|
48
|
+
<template #title>
|
|
49
|
+
<h2>Confirm Action</h2>
|
|
50
|
+
</template>
|
|
51
|
+
|
|
52
|
+
<template #default>
|
|
53
|
+
<p>Are you sure you want to perform this action?</p>
|
|
54
|
+
<p>This action cannot be undone.</p>
|
|
55
|
+
</template>
|
|
56
|
+
|
|
57
|
+
<template #footer="{ classesModal }">
|
|
58
|
+
<button :class="classesModal.close">Cancel</button>
|
|
59
|
+
<button @click="performAction">Confirm</button>
|
|
60
|
+
</template>
|
|
61
|
+
</Modal>
|
|
62
|
+
</template>
|
|
63
|
+
```
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
Упрощенная обертка над компонентом Window для создания модальных диалогов с предустановленными настройками центрированного позиционирования.
|
|
2
|
+
|
|
3
|
+
Modal является специализированным компонентом, который использует Window с фиксированным режимом `adaptive: 'modal'`. Он предназначен для отображения контента, требующего немедленного внимания пользователя, с блокировкой взаимодействия с основным интерфейсом. Компонент автоматически центрирует содержимое, добавляет полупрозрачный фон (overlay) и управляет фокусом.
|
|
4
|
+
|
|
5
|
+
**Основные возможности:**
|
|
6
|
+
|
|
7
|
+
- Центрированное позиционирование по умолчанию
|
|
8
|
+
- Полупрозрачный оверлей с блокировкой фона
|
|
9
|
+
- Управление через v-model:open
|
|
10
|
+
- Закрытие по ESC и клику вне области
|
|
11
|
+
- Интеграция со Scrollbar для длинного контента
|
|
12
|
+
- Слоты для заголовка, содержимого и футера
|
|
13
|
+
- События жизненного цикла (preparation, opening, closing)
|
|
14
|
+
- Кнопка закрытия с настраиваемой иконкой
|
|
15
|
+
|
|
16
|
+
**Отличия от Window:**
|
|
17
|
+
|
|
18
|
+
Modal - это Window с предустановленным `adaptive: 'modal'`, что упрощает использование для стандартных диалоговых окон без необходимости явно указывать режим адаптивности.
|
|
19
|
+
|
|
20
|
+
**Типичные сценарии использования:**
|
|
21
|
+
|
|
22
|
+
- Диалоги подтверждения действий
|
|
23
|
+
- Формы создания/редактирования
|
|
24
|
+
- Предупреждения и информационные сообщения
|
|
25
|
+
- Просмотр детальной информации
|
|
26
|
+
- Многошаговые мастера (wizards)
|
|
27
|
+
|
|
28
|
+
```html
|
|
29
|
+
<script setup>
|
|
30
|
+
import { ref } from 'vue'
|
|
31
|
+
|
|
32
|
+
const isModalOpen = ref(false)
|
|
33
|
+
|
|
34
|
+
const handleBeforeClosing = async () => {
|
|
35
|
+
// Проверка перед закрытием
|
|
36
|
+
return confirm('Закрыть модальное окно?')
|
|
37
|
+
}
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<template>
|
|
41
|
+
<button @click="isModalOpen = true">Открыть модальное окно</button>
|
|
42
|
+
|
|
43
|
+
<Modal
|
|
44
|
+
v-model:open="isModalOpen"
|
|
45
|
+
:beforeClosing="handleBeforeClosing"
|
|
46
|
+
closeButton
|
|
47
|
+
>
|
|
48
|
+
<template #title>
|
|
49
|
+
<h2>Подтверждение действия</h2>
|
|
50
|
+
</template>
|
|
51
|
+
|
|
52
|
+
<template #default>
|
|
53
|
+
<p>Вы уверены, что хотите выполнить это действие?</p>
|
|
54
|
+
<p>Это действие нельзя будет отменить.</p>
|
|
55
|
+
</template>
|
|
56
|
+
|
|
57
|
+
<template #footer="{ classesModal }">
|
|
58
|
+
<button :class="classesModal.close">Отмена</button>
|
|
59
|
+
<button @click="performAction">Подтвердить</button>
|
|
60
|
+
</template>
|
|
61
|
+
</Modal>
|
|
62
|
+
</template>
|
|
63
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { StorybookComponentsMdxItem } from '../../../types/storybookTypes'
|
|
2
|
+
|
|
3
|
+
import differencesEn from './differences.en.mdx'
|
|
4
|
+
import differencesRu from './differences.ru.mdx'
|
|
5
|
+
import modalEn from './modal.en.mdx'
|
|
6
|
+
import modalRu from './modal.ru.mdx'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* MDX files for Modal component
|
|
10
|
+
*
|
|
11
|
+
* MDX файлы для компонента Modal
|
|
12
|
+
*/
|
|
13
|
+
export const wikiMdxModal: StorybookComponentsMdxItem = {
|
|
14
|
+
name: 'Modal',
|
|
15
|
+
descriptions: {
|
|
16
|
+
differences: {
|
|
17
|
+
en: differencesEn,
|
|
18
|
+
ru: differencesRu
|
|
19
|
+
},
|
|
20
|
+
modal: {
|
|
21
|
+
en: modalEn,
|
|
22
|
+
ru: modalRu
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
### `motionTransformElement`
|
|
2
|
+
|
|
3
|
+
Reactive reference to the nested MotionTransform component's expose API, providing programmatic access to control methods.
|
|
4
|
+
|
|
5
|
+
**Type:** `Ref<ConstrBind<MotionTransformExpose> | undefined>`
|
|
6
|
+
|
|
7
|
+
**Methods via motionTransformElement.value:**
|
|
8
|
+
- `open` — reactive open state
|
|
9
|
+
- `isShow` — computed visibility state
|
|
10
|
+
- `setOpen(open: boolean)` — set open state
|
|
11
|
+
- `toOpen()` — open component
|
|
12
|
+
- `toClose()` — close component
|
|
13
|
+
- `toggle()` — toggle state
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
### `motionTransformElement`
|
|
2
|
+
|
|
3
|
+
Реактивная ссылка на expose API вложенного компонента MotionTransform, предоставляющая программный доступ к методам управления.
|
|
4
|
+
|
|
5
|
+
**Тип:** `Ref<ConstrBind<MotionTransformExpose> | undefined>`
|
|
6
|
+
|
|
7
|
+
**Методы через motionTransformElement.value:**
|
|
8
|
+
- `open` — реактивное состояние открытия
|
|
9
|
+
- `isShow` — вычисляемое состояние видимости
|
|
10
|
+
- `setOpen(open: boolean)` — установить состояние открытия
|
|
11
|
+
- `toOpen()` — открыть компонент
|
|
12
|
+
- `toClose()` — закрыть компонент
|
|
13
|
+
- `toggle()` — переключить состояние
|
|
14
|
+
|
|
@@ -8,6 +8,8 @@ import eventsEn from './events.en.mdx'
|
|
|
8
8
|
import eventsRu from './events.ru.mdx'
|
|
9
9
|
import exposeIsShowEn from './expose.isShow.en.mdx'
|
|
10
10
|
import exposeIsShowRu from './expose.isShow.ru.mdx'
|
|
11
|
+
import exposeMotionTransformElementEn from './expose.motionTransformElement.en.mdx'
|
|
12
|
+
import exposeMotionTransformElementRu from './expose.motionTransformElement.ru.mdx'
|
|
11
13
|
import ignoreEn from './ignore.en.mdx'
|
|
12
14
|
import ignoreRu from './ignore.ru.mdx'
|
|
13
15
|
import motionTransformEn from './motionTransform.en.mdx'
|
|
@@ -41,6 +43,10 @@ export const wikiMdxMotionTransform: StorybookComponentsMdxItem = {
|
|
|
41
43
|
en: exposeIsShowEn,
|
|
42
44
|
ru: exposeIsShowRu
|
|
43
45
|
},
|
|
46
|
+
'expose.motionTransformElement': {
|
|
47
|
+
en: exposeMotionTransformElementEn,
|
|
48
|
+
ru: exposeMotionTransformElementRu
|
|
49
|
+
},
|
|
44
50
|
'ignore': {
|
|
45
51
|
en: ignoreEn,
|
|
46
52
|
ru: ignoreRu
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
Component for creating dropdown selection lists with search, filtering, multiple selection, and validation support.
|
|
2
|
+
|
|
3
|
+
Select is a complete selection element that combines Field, Menu, SelectValue, and Input components to create an advanced selection interface. The component automatically displays selected values as text or chips (for multiple selection), provides built-in search and option filtering, supports AJAX data loading with caching. It integrates with all Field component features including validation, labels, counters, and messages.
|
|
4
|
+
|
|
5
|
+
**Key features:**
|
|
6
|
+
|
|
7
|
+
- Single or multiple value selection
|
|
8
|
+
- Built-in search and real-time option filtering
|
|
9
|
+
- AJAX data loading with caching support
|
|
10
|
+
- Editable selected value mode (editValue)
|
|
11
|
+
- Validation with standard Field features
|
|
12
|
+
- Keyboard navigation and accessibility support
|
|
13
|
+
- Automatic display of selected values (text or chips)
|
|
14
|
+
- Maximum number of selected items limitation
|
|
15
|
+
- Icon support for dropdown arrow and search
|
|
16
|
+
- Auto-close control for multiple selection
|
|
17
|
+
- Integration with Field, Menu, SelectValue, Input components
|
|
18
|
+
- Customization via slots and attributes
|
|
19
|
+
- Responsive design for mobile devices
|
|
20
|
+
|
|
21
|
+
**Typical use cases:**
|
|
22
|
+
|
|
23
|
+
- Selecting values from a predefined list of options
|
|
24
|
+
- Filtering and searching in large data lists
|
|
25
|
+
- Multiple item selection with quantity limitation
|
|
26
|
+
- Selection with AJAX data loading from server
|
|
27
|
+
- Forms with validation of selected values
|
|
28
|
+
- Combo boxes with editing capability
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<script setup>
|
|
32
|
+
import { ref } from 'vue'
|
|
33
|
+
|
|
34
|
+
const selectedCountry = ref('us')
|
|
35
|
+
const selectedLanguages = ref(['js', 'ts'])
|
|
36
|
+
|
|
37
|
+
const countries = [
|
|
38
|
+
{ label: 'Russia', value: 'ru' },
|
|
39
|
+
{ label: 'USA', value: 'us' },
|
|
40
|
+
{ label: 'Germany', value: 'de' }
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
const languages = [
|
|
44
|
+
{ label: 'JavaScript', value: 'js' },
|
|
45
|
+
{ label: 'TypeScript', value: 'ts' },
|
|
46
|
+
{ label: 'Python', value: 'py' }
|
|
47
|
+
]
|
|
48
|
+
</script>
|
|
49
|
+
|
|
50
|
+
<template>
|
|
51
|
+
<!-- Simple selection -->
|
|
52
|
+
<Select
|
|
53
|
+
v-model="selectedCountry"
|
|
54
|
+
label="Country"
|
|
55
|
+
placeholder="Choose a country"
|
|
56
|
+
:option="countries"
|
|
57
|
+
/>
|
|
58
|
+
|
|
59
|
+
<!-- Multiple selection -->
|
|
60
|
+
<Select
|
|
61
|
+
v-model="selectedLanguages"
|
|
62
|
+
label="Programming languages"
|
|
63
|
+
:multiple="true"
|
|
64
|
+
:max="3"
|
|
65
|
+
helper-message="Select up to 3 languages"
|
|
66
|
+
:option="languages"
|
|
67
|
+
/>
|
|
68
|
+
</template>
|
|
69
|
+
```
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
Компонент для создания выпадающих списков выбора с поддержкой поиска, фильтрации, множественного выбора и валидации.
|
|
2
|
+
|
|
3
|
+
Select представляет собой полнофункциональный элемент выбора, объединяющий компоненты Field, Menu, SelectValue и Input для создания продвинутого интерфейса выбора. Компонент автоматически отображает выбранные значения в виде текста или чипов (для множественного выбора), предоставляет встроенный поиск и фильтрацию опций, поддерживает AJAX загрузку данных с кешированием. Интегрируется со всеми возможностями компонента Field, включая валидацию, подписи, счётчики и сообщения.
|
|
4
|
+
|
|
5
|
+
**Основные возможности:**
|
|
6
|
+
|
|
7
|
+
- Одиночный или множественный выбор значений
|
|
8
|
+
- Встроенный поиск и фильтрация опций в реальном времени
|
|
9
|
+
- AJAX загрузка данных с поддержкой кеширования
|
|
10
|
+
- Режим редактирования выбранного значения (editValue)
|
|
11
|
+
- Валидация со стандартными функциями Field
|
|
12
|
+
- Клавиатурная навигация и поддержка accessibility
|
|
13
|
+
- Автоматическое отображение выбранных значений (текст или чипы)
|
|
14
|
+
- Ограничение максимального количества выбранных элементов
|
|
15
|
+
- Поддержка иконок для стрелки выпадающего списка и поиска
|
|
16
|
+
- Управление автозакрытием для множественного выбора
|
|
17
|
+
- Интеграция с компонентами Field, Menu, SelectValue, Input
|
|
18
|
+
- Кастомизация через слоты и атрибуты
|
|
19
|
+
- Адаптивный дизайн для мобильных устройств
|
|
20
|
+
|
|
21
|
+
**Типичные сценарии использования:**
|
|
22
|
+
|
|
23
|
+
- Выбор значений из предопределённого списка опций
|
|
24
|
+
- Фильтрация и поиск в больших списках данных
|
|
25
|
+
- Множественный выбор элементов с ограничением количества
|
|
26
|
+
- Выбор с AJAX загрузкой данных с сервера
|
|
27
|
+
- Формы с валидацией выбранных значений
|
|
28
|
+
- Комбо-боксы с возможностью редактирования
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<script setup>
|
|
32
|
+
import { ref } from 'vue'
|
|
33
|
+
|
|
34
|
+
const selectedCountry = ref('ru')
|
|
35
|
+
const selectedLanguages = ref(['js', 'ts'])
|
|
36
|
+
|
|
37
|
+
const countries = [
|
|
38
|
+
{ label: 'Россия', value: 'ru' },
|
|
39
|
+
{ label: 'США', value: 'us' },
|
|
40
|
+
{ label: 'Германия', value: 'de' }
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
const languages = [
|
|
44
|
+
{ label: 'JavaScript', value: 'js' },
|
|
45
|
+
{ label: 'TypeScript', value: 'ts' },
|
|
46
|
+
{ label: 'Python', value: 'py' }
|
|
47
|
+
]
|
|
48
|
+
</script>
|
|
49
|
+
|
|
50
|
+
<template>
|
|
51
|
+
<!-- Простой выбор -->
|
|
52
|
+
<Select
|
|
53
|
+
v-model="selectedCountry"
|
|
54
|
+
label="Страна"
|
|
55
|
+
placeholder="Выберите страну"
|
|
56
|
+
:option="countries"
|
|
57
|
+
/>
|
|
58
|
+
|
|
59
|
+
<!-- Множественный выбор -->
|
|
60
|
+
<Select
|
|
61
|
+
v-model="selectedLanguages"
|
|
62
|
+
label="Языки программирования"
|
|
63
|
+
:multiple="true"
|
|
64
|
+
:max="3"
|
|
65
|
+
helper-message="Выберите до 3 языков"
|
|
66
|
+
:option="languages"
|
|
67
|
+
/>
|
|
68
|
+
</template>
|
|
69
|
+
```
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { StorybookComponentsMdxItem } from '../../../types/storybookTypes'
|
|
2
|
+
|
|
3
|
+
import selectEn from './select.en.mdx'
|
|
4
|
+
import selectRu from './select.ru.mdx'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* MDX files for Select component
|
|
8
|
+
*
|
|
9
|
+
* MDX файлы для компонента Select
|
|
10
|
+
*/
|
|
11
|
+
export const wikiMdxSelect: StorybookComponentsMdxItem = {
|
|
12
|
+
name: 'Select',
|
|
13
|
+
descriptions: {
|
|
14
|
+
select: {
|
|
15
|
+
en: selectEn,
|
|
16
|
+
ru: selectRu
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|