Просмотр исходного кода

feat(文档更改): 文档植入demo

gemercheung 2 лет назад
Родитель
Сommit
ced5a5e377
84 измененных файлов с 225 добавлено и 20 удалено
  1. 13 0
      docs/.vitepress/i18n/pages/component.json
  2. 10 0
      docs/examples/audio/basic.vue
  3. 10 0
      docs/examples/tagsEditor/basic.vue
  4. 0 0
      docs/zh-CN/component-bk/affix.md
  5. 0 0
      docs/zh-CN/component-bk/alert.md
  6. 0 0
      docs/zh-CN/component-bk/autocomplete.md
  7. 0 0
      docs/zh-CN/component-bk/avatar.md
  8. 0 0
      docs/zh-CN/component-bk/backtop.md
  9. 0 0
      docs/zh-CN/component-bk/badge.md
  10. 0 0
      docs/zh-CN/component-bk/border.md
  11. 0 0
      docs/zh-CN/component-bk/breadcrumb.md
  12. 16 0
      docs/zh-CN/component-bk/button.md
  13. 0 0
      docs/zh-CN/component-bk/calendar.md
  14. 0 0
      docs/zh-CN/component-bk/card.md
  15. 0 0
      docs/zh-CN/component-bk/carousel.md
  16. 0 0
      docs/zh-CN/component-bk/cascader.md
  17. 0 0
      docs/zh-CN/component-bk/checkbox.md
  18. 0 0
      docs/zh-CN/component-bk/collapse.md
  19. 0 0
      docs/zh-CN/component-bk/color-picker.md
  20. 0 0
      docs/zh-CN/component-bk/color.md
  21. 0 0
      docs/zh-CN/component-bk/config-provider.md
  22. 0 0
      docs/zh-CN/component-bk/container.md
  23. 0 0
      docs/zh-CN/component-bk/date-picker.md
  24. 0 0
      docs/zh-CN/component-bk/datetime-picker.md
  25. 0 0
      docs/zh-CN/component-bk/descriptions.md
  26. 0 0
      docs/zh-CN/component-bk/dialog.md
  27. 0 0
      docs/zh-CN/component-bk/divider.md
  28. 0 0
      docs/zh-CN/component-bk/drawer.md
  29. 0 0
      docs/zh-CN/component-bk/dropdown.md
  30. 0 0
      docs/zh-CN/component-bk/empty.md
  31. 0 0
      docs/zh-CN/component-bk/form.md
  32. 0 0
      docs/zh-CN/component-bk/icon.md
  33. 0 0
      docs/zh-CN/component-bk/image.md
  34. 0 0
      docs/zh-CN/component-bk/infinite-scroll.md
  35. 0 0
      docs/zh-CN/component-bk/input-number.md
  36. 0 0
      docs/zh-CN/component-bk/input.md
  37. 0 0
      docs/zh-CN/component-bk/layout.md
  38. 0 0
      docs/zh-CN/component-bk/link.md
  39. 0 0
      docs/zh-CN/component-bk/loading.md
  40. 0 0
      docs/zh-CN/component-bk/menu.md
  41. 0 0
      docs/zh-CN/component-bk/message-box.md
  42. 0 0
      docs/zh-CN/component-bk/message.md
  43. 0 0
      docs/zh-CN/component-bk/notification.md
  44. 0 0
      docs/zh-CN/component-bk/page-header.md
  45. 0 0
      docs/zh-CN/component-bk/pagination.md
  46. 0 0
      docs/zh-CN/component-bk/popconfirm.md
  47. 0 0
      docs/zh-CN/component-bk/popover.md
  48. 0 0
      docs/zh-CN/component-bk/progress.md
  49. 0 0
      docs/zh-CN/component-bk/radio.md
  50. 0 0
      docs/zh-CN/component-bk/rate.md
  51. 0 0
      docs/zh-CN/component-bk/result.md
  52. 0 0
      docs/zh-CN/component-bk/scrollbar.md
  53. 0 0
      docs/zh-CN/component-bk/select-v2.md
  54. 0 0
      docs/zh-CN/component-bk/select.md
  55. 0 0
      docs/zh-CN/component-bk/skeleton.md
  56. 0 0
      docs/zh-CN/component-bk/slider.md
  57. 0 0
      docs/zh-CN/component-bk/space.md
  58. 0 0
      docs/zh-CN/component-bk/steps.md
  59. 0 0
      docs/zh-CN/component-bk/switch.md
  60. 0 0
      docs/zh-CN/component-bk/table-v2.md
  61. 0 0
      docs/zh-CN/component-bk/table.md
  62. 0 0
      docs/zh-CN/component-bk/tabs.md
  63. 0 0
      docs/zh-CN/component-bk/tag.md
  64. 0 0
      docs/zh-CN/component-bk/time-picker.md
  65. 0 0
      docs/zh-CN/component-bk/time-select.md
  66. 0 0
      docs/zh-CN/component-bk/timeline.md
  67. 0 0
      docs/zh-CN/component-bk/tooltip-v2.md
  68. 0 0
      docs/zh-CN/component-bk/tooltip.md
  69. 0 0
      docs/zh-CN/component-bk/transfer.md
  70. 0 0
      docs/zh-CN/component-bk/tree-select.md
  71. 0 0
      docs/zh-CN/component-bk/tree-v2.md
  72. 0 0
      docs/zh-CN/component-bk/tree.md
  73. 0 0
      docs/zh-CN/component-bk/typography.md
  74. 0 0
      docs/zh-CN/component-bk/upload.md
  75. 16 0
      docs/zh-CN/component/audio.md
  76. 1 1
      docs/zh-CN/component/button.md
  77. 16 0
      docs/zh-CN/component/tagsEditor.md
  78. 1 5
      packages/components/basic/group/ui-group-option.vue
  79. 1 0
      packages/components/basic/groupOption/constant.ts
  80. 4 0
      packages/components/basic/groupOption/index.ts
  81. 37 0
      packages/components/basic/groupOption/ui-group-option.vue
  82. 73 0
      packages/components/basic/groupOption/ui-group.vue
  83. 21 0
      packages/components/basic/slide/src/slide.ts
  84. 6 14
      packages/components/basic/slide/src/slide.vue

+ 13 - 0
docs/.vitepress/i18n/pages/component.json

@@ -6,6 +6,19 @@
                 {
                     "link": "/button",
                     "text": "按钮"
+                },
+                {
+                    "link": "/audio",
+                    "text": "音频"
+                }
+            ]
+        },
+        "advance": {
+            "text": "高级组件",
+            "children": [
+                {
+                    "link": "/tagsEditor",
+                    "text": "tag编辑器"
                 }
             ]
         }

+ 10 - 0
docs/examples/audio/basic.vue

@@ -0,0 +1,10 @@
+<template>
+    <el-row class="mb-4">
+        <UIAudio src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3" />
+    </el-row>
+</template>
+
+<script lang="ts" setup>
+import { UIAudio } from '@kankan-components/components'
+import '@kankan-components/theme-chalk/dist/index.css'
+</script>

+ 10 - 0
docs/examples/tagsEditor/basic.vue

@@ -0,0 +1,10 @@
+<template>
+    <el-row class="mb-4">
+        <UIAudio src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3" />
+    </el-row>
+</template>
+
+<script lang="ts" setup>
+import { UIAudio } from '@kankan-components/components'
+import '@kankan-components/theme-chalk/dist/index.css'
+</script>

docs/zh-CN/component/affix.md → docs/zh-CN/component-bk/affix.md


docs/zh-CN/component/alert.md → docs/zh-CN/component-bk/alert.md


docs/zh-CN/component/autocomplete.md → docs/zh-CN/component-bk/autocomplete.md


docs/zh-CN/component/avatar.md → docs/zh-CN/component-bk/avatar.md


docs/zh-CN/component/backtop.md → docs/zh-CN/component-bk/backtop.md


docs/zh-CN/component/badge.md → docs/zh-CN/component-bk/badge.md


docs/zh-CN/component/border.md → docs/zh-CN/component-bk/border.md


docs/zh-CN/component/breadcrumb.md → docs/zh-CN/component-bk/breadcrumb.md


+ 16 - 0
docs/zh-CN/component-bk/button.md

@@ -0,0 +1,16 @@
+---
+title: Button
+lang: zh-CN
+---
+
+# 按钮
+
+一般按钮使用如下。
+
+## 基本用法
+
+:::demo Use `type`, `plain`, `round` and `circle` to define Button's style.
+
+button/basic
+
+:::

docs/zh-CN/component/calendar.md → docs/zh-CN/component-bk/calendar.md


docs/zh-CN/component/card.md → docs/zh-CN/component-bk/card.md


docs/zh-CN/component/carousel.md → docs/zh-CN/component-bk/carousel.md


docs/zh-CN/component/cascader.md → docs/zh-CN/component-bk/cascader.md


docs/zh-CN/component/checkbox.md → docs/zh-CN/component-bk/checkbox.md


docs/zh-CN/component/collapse.md → docs/zh-CN/component-bk/collapse.md


docs/zh-CN/component/color-picker.md → docs/zh-CN/component-bk/color-picker.md


docs/zh-CN/component/color.md → docs/zh-CN/component-bk/color.md


docs/zh-CN/component/config-provider.md → docs/zh-CN/component-bk/config-provider.md


docs/zh-CN/component/container.md → docs/zh-CN/component-bk/container.md


docs/zh-CN/component/date-picker.md → docs/zh-CN/component-bk/date-picker.md


docs/zh-CN/component/datetime-picker.md → docs/zh-CN/component-bk/datetime-picker.md


docs/zh-CN/component/descriptions.md → docs/zh-CN/component-bk/descriptions.md


docs/zh-CN/component/dialog.md → docs/zh-CN/component-bk/dialog.md


docs/zh-CN/component/divider.md → docs/zh-CN/component-bk/divider.md


docs/zh-CN/component/drawer.md → docs/zh-CN/component-bk/drawer.md


docs/zh-CN/component/dropdown.md → docs/zh-CN/component-bk/dropdown.md


docs/zh-CN/component/empty.md → docs/zh-CN/component-bk/empty.md


docs/zh-CN/component/form.md → docs/zh-CN/component-bk/form.md


docs/zh-CN/component/icon.md → docs/zh-CN/component-bk/icon.md


docs/zh-CN/component/image.md → docs/zh-CN/component-bk/image.md


docs/zh-CN/component/infinite-scroll.md → docs/zh-CN/component-bk/infinite-scroll.md


docs/zh-CN/component/input-number.md → docs/zh-CN/component-bk/input-number.md


docs/zh-CN/component/input.md → docs/zh-CN/component-bk/input.md


docs/zh-CN/component/layout.md → docs/zh-CN/component-bk/layout.md


docs/zh-CN/component/link.md → docs/zh-CN/component-bk/link.md


docs/zh-CN/component/loading.md → docs/zh-CN/component-bk/loading.md


docs/zh-CN/component/menu.md → docs/zh-CN/component-bk/menu.md


docs/zh-CN/component/message-box.md → docs/zh-CN/component-bk/message-box.md


docs/zh-CN/component/message.md → docs/zh-CN/component-bk/message.md


docs/zh-CN/component/notification.md → docs/zh-CN/component-bk/notification.md


docs/zh-CN/component/page-header.md → docs/zh-CN/component-bk/page-header.md


docs/zh-CN/component/pagination.md → docs/zh-CN/component-bk/pagination.md


docs/zh-CN/component/popconfirm.md → docs/zh-CN/component-bk/popconfirm.md


docs/zh-CN/component/popover.md → docs/zh-CN/component-bk/popover.md


docs/zh-CN/component/progress.md → docs/zh-CN/component-bk/progress.md


docs/zh-CN/component/radio.md → docs/zh-CN/component-bk/radio.md


docs/zh-CN/component/rate.md → docs/zh-CN/component-bk/rate.md


docs/zh-CN/component/result.md → docs/zh-CN/component-bk/result.md


docs/zh-CN/component/scrollbar.md → docs/zh-CN/component-bk/scrollbar.md


docs/zh-CN/component/select-v2.md → docs/zh-CN/component-bk/select-v2.md


docs/zh-CN/component/select.md → docs/zh-CN/component-bk/select.md


docs/zh-CN/component/skeleton.md → docs/zh-CN/component-bk/skeleton.md


docs/zh-CN/component/slider.md → docs/zh-CN/component-bk/slider.md


docs/zh-CN/component/space.md → docs/zh-CN/component-bk/space.md


docs/zh-CN/component/steps.md → docs/zh-CN/component-bk/steps.md


docs/zh-CN/component/switch.md → docs/zh-CN/component-bk/switch.md


docs/zh-CN/component/table-v2.md → docs/zh-CN/component-bk/table-v2.md


docs/zh-CN/component/table.md → docs/zh-CN/component-bk/table.md


docs/zh-CN/component/tabs.md → docs/zh-CN/component-bk/tabs.md


docs/zh-CN/component/tag.md → docs/zh-CN/component-bk/tag.md


docs/zh-CN/component/time-picker.md → docs/zh-CN/component-bk/time-picker.md


docs/zh-CN/component/time-select.md → docs/zh-CN/component-bk/time-select.md


docs/zh-CN/component/timeline.md → docs/zh-CN/component-bk/timeline.md


docs/zh-CN/component/tooltip-v2.md → docs/zh-CN/component-bk/tooltip-v2.md


docs/zh-CN/component/tooltip.md → docs/zh-CN/component-bk/tooltip.md


docs/zh-CN/component/transfer.md → docs/zh-CN/component-bk/transfer.md


docs/zh-CN/component/tree-select.md → docs/zh-CN/component-bk/tree-select.md


docs/zh-CN/component/tree-v2.md → docs/zh-CN/component-bk/tree-v2.md


docs/zh-CN/component/tree.md → docs/zh-CN/component-bk/tree.md


docs/zh-CN/component/typography.md → docs/zh-CN/component-bk/typography.md


docs/zh-CN/component/upload.md → docs/zh-CN/component-bk/upload.md


+ 16 - 0
docs/zh-CN/component/audio.md

@@ -0,0 +1,16 @@
+---
+title: Audio
+lang: zh-CN
+---
+
+# 音频
+
+一般音频使用如下。
+
+## 基本用法
+
+:::demo
+
+audio/basic
+
+:::

+ 1 - 1
docs/zh-CN/component/button.md

@@ -9,7 +9,7 @@ lang: zh-CN
 
 ## 基本用法
 
-:::demo Use `type`, `plain`, `round` and `circle` to define Button's style.
+:::demo
 
 button/basic
 

+ 16 - 0
docs/zh-CN/component/tagsEditor.md

@@ -0,0 +1,16 @@
+---
+title: TagsEditor
+lang: zh-CN
+---
+
+# Tags 编辑器
+
+Tags 编辑器使用如下。
+
+## 基本用法
+
+:::demo
+
+tagsEditor/basic
+
+:::

+ 1 - 5
packages/components/basic/group/ui-group-option.vue

@@ -20,7 +20,7 @@ defineOptions({
 const brotherInstances = inject(Relation)
 const instance = getCurrentInstance()
 
-if (brotherInstances.value) {
+if (brotherInstances?.value) {
     onBeforeMount(() => (brotherInstances.value = [...brotherInstances.value, instance]))
     onUnmounted(() => {
         const index = brotherInstances.value.indexOf(instance)
@@ -31,7 +31,3 @@ if (brotherInstances.value) {
     })
 }
 </script>
-
-<!-- <script>
-export default { name: 'UiGroupOption' }
-</script> -->

+ 1 - 0
packages/components/basic/groupOption/constant.ts

@@ -0,0 +1 @@
+export const Relation = Symbol('group-children')

+ 4 - 0
packages/components/basic/groupOption/index.ts

@@ -0,0 +1,4 @@
+import Group from './ui-group.vue'
+import GroupOption from './ui-group-option.vue'
+
+export { Group, GroupOption }

+ 37 - 0
packages/components/basic/groupOption/ui-group-option.vue

@@ -0,0 +1,37 @@
+<template>
+    <div class="group-option">
+        <span v-if="props.label" class="group-option-label">
+            {{ props.label }}
+        </span>
+        <slot />
+    </div>
+</template>
+
+<script lang="ts" setup>
+import { getCurrentInstance, inject, onBeforeMount, onUnmounted } from 'vue'
+import { Relation } from './constant'
+const props = defineProps({
+    label: String,
+})
+defineOptions({
+    name: 'UIGroupOption',
+})
+
+const brotherInstances = inject(Relation)
+const instance = getCurrentInstance()
+
+if (brotherInstances.value) {
+    onBeforeMount(() => (brotherInstances.value = [...brotherInstances.value, instance]))
+    onUnmounted(() => {
+        const index = brotherInstances.value.indexOf(instance)
+        if (~index) {
+            brotherInstances.value.splice(index, 1)
+            brotherInstances.value = [...brotherInstances.value]
+        }
+    })
+}
+</script>
+
+<!-- <script>
+export default { name: 'UiGroupOption' }
+</script> -->

+ 73 - 0
packages/components/basic/groupOption/ui-group.vue

@@ -0,0 +1,73 @@
+<template>
+    <div class="ui-group" :class="{ control }">
+        <template v-if="!$slots.header">
+            <h3 v-if="props.title" class="group-title" :class="!$slots.default && contentStyle">
+                {{ props.title }}
+                <span v-if="$slots.icon || control" class="group-icon" :class="animationRef && { show: animationRef.show }" @click="control && animationRef.changeShow()">
+                    <slot v-if="$slots.icon" name="icon" />
+                    <icon v-else type="pull-down" size="12px" />
+                </span>
+            </h3>
+        </template>
+        <div v-else class="group-title" :class="!$slots.default && contentStyle">
+            <slot name="header" />
+
+            <span v-if="$slots.icon || control" class="group-icon" :class="animationRef && { show: animationRef.show }" @click="control && animationRef.changeShow()">
+                <slot v-if="$slots.icon" name="icon" />
+                <icon v-else type="pull-down" size="12px" />
+            </span>
+        </div>
+
+        <template v-if="$slots.default">
+            <UISizeAnimation v-if="control" ref="animationRef" class="group-content" :class="contentStyle">
+                <slot />
+            </UISizeAnimation>
+            <div v-else class="group-content" :class="contentStyle">
+                <slot />
+            </div>
+        </template>
+    </div>
+</template>
+
+<script lang="ts" setup>
+import { computed, provide, ref, watch, watchEffect } from 'vue'
+import icon from '../icon'
+import UISizeAnimation from '../size-animation'
+import { Relation } from './constant'
+
+defineOptions({
+    name: 'UIGroup',
+})
+
+const animationRef = ref(null)
+const props = defineProps({
+    title: String,
+    border: Boolean,
+    borderTop: Boolean,
+    borderBottom: Boolean,
+    control: Boolean,
+    show: Boolean,
+})
+
+const contentStyle = computed(() => ({
+    'border-bottom': props.borderBottom || props.border,
+    'border-top': props.borderTop || props.border,
+}))
+
+const contentInstances = ref([])
+provide(Relation, contentInstances)
+
+watchEffect(() => {
+    if (animationRef.value) {
+        animationRef.value.changeShow(props.show)
+    }
+})
+
+watch(contentInstances, () => {
+    animationRef.value && animationRef.value.refer()
+})
+</script>
+
+<!-- <script>
+export default { name: 'UiGroup' }
+</script> -->

+ 21 - 0
packages/components/basic/slide/src/slide.ts

@@ -0,0 +1,21 @@
+import { buildProps, definePropType } from '@kankan-components/utils'
+import type { ExtractPropTypes } from 'vue'
+import type Slide from './slide.vue'
+
+export const slideProps = buildProps({
+    items: {
+        type: definePropType<any[]>(Array),
+        default: [],
+    },
+    currentIndex: {
+        type: Number,
+        default: 0,
+    },
+    showCtrl: {
+        type: Boolean,
+    },
+})
+
+export type SlideProps = ExtractPropTypes<typeof slideProps>
+
+export type SlideInstance = InstanceType<typeof Slide>

+ 6 - 14
packages/components/basic/slide/src/slide.vue

@@ -1,10 +1,10 @@
 <template>
     <div class="ui-slide">
-        <Gate :index="index">
-            <GateContent v-for="(item, i) in items" :key="i">
+        <UIGate :index="index">
+            <UIgateContent v-for="(item, i) in items" :key="i">
                 <slot :raw="item" :active="items[index]" />
-            </GateContent>
-        </Gate>
+            </UIgateContent>
+        </UIGate>
         <template v-if="showCtrl">
             <span v-if="index !== 0" class="left" @click="prevHandler"><UIIcon type="left" /></span>
             <span v-if="index !== items.length - 1" class="right" @click="nextHandler"><UIIcon type="pull-more" /></span>
@@ -19,21 +19,13 @@ import UIIcon from '@kankan-components/components/basic/icon'
 // import { Gate, GateContent } from '../gate/src/src'
 import UIGate from '@kankan-components/components/basic/gate'
 import UIgateContent from '@kankan-components/components/basic/gateContent'
+import { slideProps } from './slide'
 
 defineOptions({
     name: 'UISlide',
 })
 
-const props = defineProps({
-    items: Array,
-    currentIndex: {
-        type: Number,
-        default: 0,
-    },
-    showCtrl: {
-        type: Boolean,
-    },
-})
+const props = defineProps(slideProps)
 const index = ref()
 
 watchEffect(() => (index.value = props.currentIndex))