@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
@@ -0,0 +1,56 @@
1
+ ## Навигация по элементам меню
2
+
3
+ Методы `previous()` и `next()` предназначены для программного перемещения по элементам меню на основе текущего выбора и свойства `step`.
4
+
5
+ **Методы:**
6
+
7
+ - `previous()` — перемещает выбор на предыдущий элемент (назад на `step` позиций)
8
+ - `next()` — перемещает выбор на следующий элемент (вперед на `step` позиций)
9
+ - `step` — количество элементов для пропуска при навигации (по умолчанию: 1)
10
+
11
+ Методы работают совместно с реактивным состоянием `selected`: при вызове `previous()` или `next()` происходит автоматический расчёт новой позиции относительно текущего выделенного элемента. Если элемент не выбран, методы выбирают первый доступный элемент. При достижении границ списка (первый или последний элемент) навигация останавливается на граничном элементе, предотвращая выход за пределы списка.
12
+
13
+ ```html
14
+ <script setup>
15
+ import { ref } from 'vue'
16
+
17
+ const menuRef = ref()
18
+ const selected = ref('item2')
19
+ </script>
20
+
21
+ <template>
22
+ <!-- Вызов через ref -->
23
+ <button @click="menuRef?.previous()">Назад</button>
24
+ <button @click="menuRef?.next()">Вперед</button>
25
+
26
+ <Menu
27
+ ref="menuRef"
28
+ v-model:selected="selected"
29
+ :list="[
30
+ { label: 'Элемент 1', value: 'item1' },
31
+ { label: 'Элемент 2', value: 'item2' },
32
+ { label: 'Элемент 3', value: 'item3' }
33
+ ]"
34
+ :step="1"
35
+ />
36
+
37
+ <!-- Навигация в слоте control -->
38
+ <Menu v-model:selected="selected" :list="items">
39
+ <template #control="{ previous, next, selectedNames }">
40
+ <button @click="previous">◀</button>
41
+ <span>{{ selectedNames[0] }}</span>
42
+ <button @click="next">▶</button>
43
+ </template>
44
+ </Menu>
45
+
46
+ <!-- С пользовательским шагом -->
47
+ <Menu
48
+ ref="menuRef"
49
+ v-model:selected="selected"
50
+ :list="items"
51
+ :step="2"
52
+ />
53
+ </template>
54
+ ```
55
+
56
+
@@ -0,0 +1,65 @@
1
+ ### `control`
2
+
3
+ Slot for placing the menu control element (trigger).
4
+
5
+ **Parameters:**
6
+ - `props: MenuControlItem` — object with menu control data
7
+ - `onclick` — function to toggle menu open/close
8
+ - `isSelected` — computed boolean indicating if any item is selected
9
+ - `selectedNames` — computed array of selected item labels
10
+ - `selectedValues` — computed array of selected item values
11
+ - `selectedList` — computed array of selected list items
12
+ - `loading` — ref indicating AJAX loading state
13
+ - `previous()` — method to navigate to previous item(s)
14
+ - `next()` — method to navigate to next item(s)
15
+
16
+ ```html
17
+ <script setup>
18
+ import { ref } from 'vue'
19
+
20
+ const isOpen = ref(false)
21
+ const menuItems = ref([
22
+ { label: 'Item 1', value: '1' },
23
+ { label: 'Item 2', value: '2' },
24
+ { label: 'Item 3', value: '3' }
25
+ ])
26
+ </script>
27
+
28
+ <template>
29
+ <Menu v-model:open="isOpen" :list="menuItems">
30
+ <template #control="{ onclick, isSelected, selectedNames }">
31
+ <button @click="onclick">
32
+ {{ isSelected ? selectedNames.join(', ') : 'Select items' }}
33
+ </button>
34
+ </template>
35
+ </Menu>
36
+ </template>
37
+ ```
38
+
39
+ **Navigation Example:**
40
+
41
+ ```html
42
+ <script setup>
43
+ import { ref } from 'vue'
44
+
45
+ const selected = ref('item1')
46
+ const menuItems = ref([
47
+ { label: 'Item 1', value: 'item1' },
48
+ { label: 'Item 2', value: 'item2' },
49
+ { label: 'Item 3', value: 'item3' }
50
+ ])
51
+ </script>
52
+
53
+ <template>
54
+ <Menu v-model:selected="selected" :list="menuItems">
55
+ <template #control="{ previous, next, selectedNames }">
56
+ <div class="navigation-control">
57
+ <button @click="previous">◀</button>
58
+ <span>{{ selectedNames[0] }}</span>
59
+ <button @click="next">▶</button>
60
+ </div>
61
+ </template>
62
+ </Menu>
63
+ </template>
64
+ ```
65
+
@@ -0,0 +1,65 @@
1
+ ### `control`
2
+
3
+ Слот для размещения элемента управления (триггера) меню.
4
+
5
+ **Параметры:**
6
+ - `props: MenuControlItem` — объект с данными управления меню
7
+ - `onclick` — функция для переключения открытия/закрытия меню
8
+ - `isSelected` — computed boolean, указывающий, выбран ли какой-либо элемент
9
+ - `selectedNames` — computed массив меток выбранных элементов
10
+ - `selectedValues` — computed массив значений выбранных элементов
11
+ - `selectedList` — computed массив выбранных элементов списка
12
+ - `loading` — ref, указывающий на состояние загрузки AJAX
13
+ - `previous()` — метод для перехода к предыдущему элементу(ам)
14
+ - `next()` — метод для перехода к следующему элементу(ам)
15
+
16
+ ```html
17
+ <script setup>
18
+ import { ref } from 'vue'
19
+
20
+ const isOpen = ref(false)
21
+ const menuItems = ref([
22
+ { label: 'Элемент 1', value: '1' },
23
+ { label: 'Элемент 2', value: '2' },
24
+ { label: 'Элемент 3', value: '3' }
25
+ ])
26
+ </script>
27
+
28
+ <template>
29
+ <Menu v-model:open="isOpen" :list="menuItems">
30
+ <template #control="{ onclick, isSelected, selectedNames }">
31
+ <button @click="onclick">
32
+ {{ isSelected ? selectedNames.join(', ') : 'Выбрать элементы' }}
33
+ </button>
34
+ </template>
35
+ </Menu>
36
+ </template>
37
+ ```
38
+
39
+ **Пример навигации:**
40
+
41
+ ```html
42
+ <script setup>
43
+ import { ref } from 'vue'
44
+
45
+ const selected = ref('item1')
46
+ const menuItems = ref([
47
+ { label: 'Элемент 1', value: 'item1' },
48
+ { label: 'Элемент 2', value: 'item2' },
49
+ { label: 'Элемент 3', value: 'item3' }
50
+ ])
51
+ </script>
52
+
53
+ <template>
54
+ <Menu v-model:selected="selected" :list="menuItems">
55
+ <template #control="{ previous, next, selectedNames }">
56
+ <div class="navigation-control">
57
+ <button @click="previous">◀</button>
58
+ <span>{{ selectedNames[0] }}</span>
59
+ <button @click="next">▶</button>
60
+ </div>
61
+ </template>
62
+ </Menu>
63
+ </template>
64
+ ```
65
+
@@ -1,10 +1,3 @@
1
- ### `control`
2
-
3
- Slot for placing the menu control element (trigger).
4
-
5
- **Parameters:**
6
- - `props: MenuControlItem` — object with menu control data
7
-
8
1
  ### `title`
9
2
 
10
3
  Slot for placing the menu window title.
@@ -35,28 +28,13 @@ Slot for placing contextual area below the menu list (hints, final actions).
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: 'Item 1', value: '1' },
43
- { label: 'Item 2', value: '2' },
44
- { label: 'Item 3', value: '3' }
45
- ])
46
-
47
31
  const handleSubmit = (values) => {
48
32
  console.log('Selected values:', values)
49
33
  }
50
34
  </script>
51
35
 
52
36
  <template>
53
- <Menu v-model:open="isOpen" :list="menuItems">
54
- <template #control="{ onclick, isSelected, selectedNames }">
55
- <button @click="onclick">
56
- {{ isSelected ? selectedNames.join(', ') : 'Select items' }}
57
- </button>
58
- </template>
59
-
37
+ <Component>
60
38
  <template #title="{ selectedList }">
61
39
  <h3>Select Items</h3>
62
40
  <span v-if="selectedList.length">
@@ -77,7 +55,7 @@ const handleSubmit = (values) => {
77
55
  Apply
78
56
  </button>
79
57
  </template>
80
- </Menu>
58
+ </Component>
81
59
  </template>
82
60
  ```
83
61
 
@@ -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
- <Menu v-model:open="isOpen" :list="menuItems">
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
- </Menu>
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
- menu: {
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
- slots: {
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
+ ```