Bläddra i källkod

chore(组件): 临时分支,fix typescript typo

gemercheung 2 år sedan
förälder
incheckning
ab34e4f72a
100 ändrade filer med 3666 tillägg och 101 borttagningar
  1. 2 2
      docs/zh-CN/component/tagsEditor.md
  2. 0 3
      packages/components/advance/tag/src/showTag.vue
  3. 0 5
      packages/components/basic/index.ts
  4. 3 2
      packages/kankan-components/component.ts
  5. 7 0
      playground/src/components/CHANGELOG.md
  6. 14 0
      playground/src/components/README.md
  7. 1 0
      playground/src/components/advance/index.ts
  8. 0 0
      playground/src/components/advance/tag/index.ts
  9. 24 24
      playground/src/components/tag/src/TagView.vue
  10. 14 46
      playground/src/components/tag/src/metas/metasImage.vue
  11. 132 0
      playground/src/components/advance/tag/src/metas/metasVideo.vue
  12. 1 1
      playground/src/components/tag/src/props.ts
  13. 10 12
      playground/src/components/tag/src/showTag.vue
  14. 5 6
      playground/src/components/tag/tag.d.ts
  15. 0 0
      playground/src/components/basic/audio/__tests__/audio.test.tsx
  16. 0 0
      playground/src/components/basic/audio/index.ts
  17. 0 0
      playground/src/components/basic/audio/src/audio.vue
  18. 0 0
      playground/src/components/basic/bubble/index.ts
  19. 0 0
      playground/src/components/basic/bubble/src/bubble.ts
  20. 0 0
      playground/src/components/basic/bubble/src/bubble.vue
  21. 0 0
      playground/src/components/basic/button/index.ts
  22. 0 0
      playground/src/components/basic/button/src/button.ts
  23. 0 0
      playground/src/components/basic/button/src/button.vue
  24. 0 0
      playground/src/components/basic/config-provider/index.ts
  25. 0 0
      playground/src/components/basic/config-provider/src/config-provider.ts
  26. 0 0
      playground/src/components/basic/config-provider/style/css.ts
  27. 0 0
      playground/src/components/basic/config-provider/style/index.ts
  28. 0 0
      playground/src/components/basic/cropper/index.ts
  29. 0 0
      playground/src/components/basic/cropper/src/cropper.ts
  30. 0 0
      playground/src/components/basic/cropper/src/cropper.vue
  31. 0 0
      playground/src/components/basic/dialog/index.ts
  32. 0 0
      playground/src/components/basic/dialog/src/alert.vue
  33. 0 0
      playground/src/components/basic/dialog/src/confirm.vue
  34. 0 0
      playground/src/components/basic/dialog/src/dialog-content.vue
  35. 0 0
      playground/src/components/basic/dialog/src/dialog.ts
  36. 0 0
      playground/src/components/basic/dialog/src/dialog.vue
  37. 0 0
      playground/src/components/basic/dialog/src/toast.vue
  38. 0 0
      playground/src/components/basic/dialog/src/window.vue
  39. 0 0
      playground/src/components/basic/floating/index.ts
  40. 0 0
      playground/src/components/basic/floating/src/floating.ts
  41. 0 0
      playground/src/components/basic/floating/src/floating.vue
  42. 0 0
      playground/src/components/basic/gate/index.ts
  43. 0 0
      playground/src/components/basic/gate/src/constant.ts
  44. 0 0
      playground/src/components/basic/gate/src/gate.ts
  45. 0 0
      playground/src/components/basic/gate/src/gate.vue
  46. 0 0
      playground/src/components/basic/gateContent/index.ts
  47. 0 0
      playground/src/components/basic/gateContent/src/constant.ts
  48. 0 0
      playground/src/components/basic/gateContent/src/gateContent.ts
  49. 0 0
      playground/src/components/basic/gateContent/src/gateContent.vue
  50. 0 0
      playground/src/components/basic/group/constant.ts
  51. 0 0
      playground/src/components/basic/group/index.ts
  52. 0 0
      playground/src/components/basic/group/ui-group-option.vue
  53. 0 0
      playground/src/components/basic/group/ui-group.vue
  54. 0 0
      playground/src/components/basic/groupOption/constant.ts
  55. 0 0
      playground/src/components/basic/groupOption/index.ts
  56. 0 0
      playground/src/components/basic/groupOption/ui-group-option.vue
  57. 0 0
      playground/src/components/basic/groupOption/ui-group.vue
  58. 0 0
      playground/src/components/basic/guide/index.vue
  59. 539 0
      playground/src/components/basic/icon/iconfont/demo.css
  60. 1913 0
      playground/src/components/basic/icon/iconfont/demo_index.html
  61. 315 0
      playground/src/components/basic/icon/iconfont/iconfont.css
  62. 60 0
      playground/src/components/basic/icon/iconfont/iconfont.js
  63. 534 0
      playground/src/components/basic/icon/iconfont/iconfont.json
  64. BIN
      playground/src/components/basic/icon/iconfont/iconfont.ttf
  65. BIN
      playground/src/components/basic/icon/iconfont/iconfont.woff
  66. BIN
      playground/src/components/basic/icon/iconfont/iconfont.woff2
  67. 9 0
      playground/src/components/basic/icon/index.ts
  68. 29 0
      playground/src/components/basic/icon/src/icon.ts
  69. 48 0
      playground/src/components/basic/icon/src/icon.vue
  70. 6 0
      playground/src/components/basic/index.ts
  71. 0 0
      playground/src/components/basic/input/index.ts
  72. 0 0
      playground/src/components/basic/input/src/checkRadio/checkRadio.ts
  73. 0 0
      playground/src/components/basic/input/src/checkRadio/checkRadio.vue
  74. 0 0
      playground/src/components/basic/input/src/checkbox/checkbox.ts
  75. 0 0
      playground/src/components/basic/input/src/checkbox/checkbox.vue
  76. 0 0
      playground/src/components/basic/input/src/file/file.ts
  77. 0 0
      playground/src/components/basic/input/src/file/file.vue
  78. 0 0
      playground/src/components/basic/input/src/index copy.vue.bk
  79. 0 0
      playground/src/components/basic/input/src/input.ts
  80. 0 0
      playground/src/components/basic/input/src/input.vue
  81. 0 0
      playground/src/components/basic/input/src/number/number.ts
  82. 0 0
      playground/src/components/basic/input/src/number/number.vue
  83. 0 0
      playground/src/components/basic/input/src/radio/radio.ts
  84. 0 0
      playground/src/components/basic/input/src/radio/radio.vue
  85. 0 0
      playground/src/components/basic/input/src/range/range.ts
  86. 0 0
      playground/src/components/basic/input/src/range/range.vue
  87. 0 0
      playground/src/components/basic/input/src/richtext/richtext.ts
  88. 0 0
      playground/src/components/basic/input/src/richtext/richtext.vue
  89. 0 0
      playground/src/components/basic/input/src/search/search.ts
  90. 0 0
      playground/src/components/basic/input/src/search/search.vue
  91. 0 0
      playground/src/components/basic/input/src/select/select.ts
  92. 0 0
      playground/src/components/basic/input/src/select/select.vue
  93. 0 0
      playground/src/components/basic/input/src/state.js.bk
  94. 0 0
      playground/src/components/basic/input/src/switch/switch.ts
  95. 0 0
      playground/src/components/basic/input/src/switch/switch.vue
  96. 0 0
      playground/src/components/basic/input/src/text/text.ts
  97. 0 0
      playground/src/components/basic/input/src/text/text.vue
  98. 0 0
      playground/src/components/basic/input/src/textarea/textarea.ts
  99. 0 0
      playground/src/components/basic/input/src/textarea/textarea.vue
  100. 0 0
      packages/components/basic/menu-item/index.ts

+ 2 - 2
docs/zh-CN/component/tagsEditor.md

@@ -1,5 +1,5 @@
 ---
-title: TagsEditor
+title: Tags热点
 lang: zh-CN
 ---
 
@@ -11,6 +11,6 @@ Tags 编辑器使用如下。
 
 :::demo
 
-tagsEditor/basic
+tags/basic
 
 :::

+ 0 - 3
packages/components/advance/tag/src/showTag.vue

@@ -11,9 +11,6 @@
         <div class="tag-metas">
             <metasImage v-if="type == 'image'" :data="media.image" />
             <MetasVideo v-if="type == 'video'" :data="media.video" />
-            <!-- <metasImage v-if="hotData.type == 'image'" />
-            <metasVideo v-if="hotData.type == 'video'" />
-            <metasWeb v-if="hotData.type == 'link'" /> -->
         </div>
     </div>
 </template>

+ 0 - 5
packages/components/basic/index.ts

@@ -1,6 +1 @@
-export * from './audio'
 export * from './icon'
-export * from './button'
-export * from './input'
-export * from './menu-item'
-export * from './config-provider'

+ 3 - 2
packages/kankan-components/component.ts

@@ -1,5 +1,6 @@
-import { UIAudio } from '@kankan-components/components/basic/audio'
+import { UIIcon } from '@kankan-components/components/basic/icon'
 // import { UIButton } from '@kankan-components/components/basic/button'
+import { UITag } from '@kankan-components/components/advance/tag'
 import type { Plugin } from 'vue'
 
-export default [UIAudio] as Plugin[]
+export default [UIIcon, UITag] as Plugin[]

+ 7 - 0
playground/src/components/CHANGELOG.md

@@ -0,0 +1,7 @@
+# @kankan-components/components
+
+## 1.0.0
+
+### Major Changes
+
+-   初始发布

+ 14 - 0
playground/src/components/README.md

@@ -0,0 +1,14 @@
+# Components 组件库说明
+
+packages/components 组件目录结构
+```
+├── basic // 基础 UI 组件
+├── editor // 与编辑器相关
+├── advance // 高阶复杂
+
+```
+
+## 文件开发目录规范
+
+
+

+ 1 - 0
playground/src/components/advance/index.ts

@@ -0,0 +1 @@
+export * from './tag'

playground/src/components/tag/index.ts → playground/src/components/advance/tag/index.ts


+ 24 - 24
playground/src/components/tag/src/TagView.vue

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { type PropType, onMounted, ref, unref } from 'vue'
+import { type PropType, ref, useSlots } from 'vue'
 import ShowTag from './showTag.vue'
 
 const props = defineProps({
@@ -8,18 +8,21 @@ const props = defineProps({
         required: true,
     },
 })
+const slots = useSlots()
 
-const emit = defineEmits(['click'])
+const emit = defineEmits(['click', 'mouseEnter', 'mouseLeave'])
 
 const isShow = ref<boolean>(false)
 const isClick = ref<boolean>(false)
 const handleMouseEnter = (event: MouseEvent, tag: any, index?: number | undefined) => {
     // console.log('in', event)
     isShow.value = true
+    emit('mouseEnter', { ...event, ...tag })
 }
 const handleMouseLeave = (event: MouseEvent, tag: any, index?: number | undefined) => {
     // console.log('out', event)
     isShow.value = false
+    emit('mouseLeave', { ...event, ...tag })
     // isClick.value = false
 }
 
@@ -30,38 +33,35 @@ const handleTagClick = (tagId: string) => {
         isClick: isClick.value,
     })
 }
-
-onMounted(() => {
-    console.log('tag', props.tag)
-})
 </script>
 
 <template>
     <div
         :data-tag-id="tag.sid"
-        @mouseleave.prevent="handleMouseLeave($event, tag)"
         :style="{ transform: `translate(${props.tag.x}px,${props.tag.y}px)`, display: props.tag.visible ? 'block' : 'none' }"
+        @mouseleave.prevent="handleMouseLeave($event, tag)"
     >
-        <span
-            class="tag-icon animate"
-            @click="handleTagClick(tag.sid)"
-            @mouseenter.prevent="handleMouseEnter($event, tag)"
-            style="background-image: url(http://4dkk.4dage.com/v4/sdk/4.2.2/images/tag_icon_default.svg)"
-        ></span>
-        <div class="content">
-            <div class="trans" :class="{ active: isShow || isClick }">
-                <template v-if="isShow || isClick">
-                    <div class="arrow" :id="`arrow_${tag.sid}`">
-                        <!-- <ui-icon @click.stop="closeTag" v-if="getApp().config.mobile" type="close"></ui-icon> -->
-                    </div>
-                    <ShowTag :id="tag.sid" :title="tag.title" :type="tag.type" :content="tag.content" :media="tag.media" />
-                    <!-- <TagInfo v-if="true" /> -->
-                    <!-- <ShowTag @click.stop="" v-if="!isEdit && hotData" @open="openInfo" /> -->
-                </template>
+        <slot v-if="slots.content" :id="tag.sid" name="content" :data="tag" :is-click="isClick" :visible="tag.visible" :is-show="isShow" :x="tag.x" :y="tag.y" />
+        <template v-else>
+            <span
+                class="tag-icon animate"
+                style="background-image: url(http://4dkk.4dage.com/v4/sdk/4.2.2/images/tag_icon_default.svg)"
+                @click="handleTagClick(tag.sid)"
+                @mouseenter.prevent="handleMouseEnter($event, tag)"
+            />
+
+            <div class="content">
+                <div class="trans" :class="{ active: isShow || isClick }">
+                    <template v-if="isShow || isClick">
+                        <div :id="`arrow_${tag.sid}`" class="arrow" />
+                        <ShowTag :id="tag.sid" :title="tag.title" :type="tag.type" :content="tag.content" :media="tag.media" />
+                    </template>
+                </div>
             </div>
-        </div>
+        </template>
     </div>
 </template>
+
 <style scoped>
 /* div {
     position: absolute;

+ 14 - 46
playground/src/components/tag/src/metas/metasImage.vue

@@ -1,56 +1,24 @@
 <!--  -->
 <template>
-    <!-- <div v-if="imageList.length > 0 && type == 'IMAGE'" class="pic-box"> -->
     <div class="pic-box" :class="{ show: viewer }" :style="metasHeight ? `height:${metasHeight}px;` : ''">
         <div>
-            <div class="ctrl-btn left-btn" v-if="currentIndex != 0" @click.stop="changeImage('pre')">
-                <ui-icon type="left"></ui-icon>
+            <div v-if="currentIndex != 0" class="ctrl-btn left-btn" @click.stop="changeImage('pre')">
+                <ui-icon type="left" />
             </div>
-            <div class="ctrl-btn right-btn" v-if="currentIndex < data.length - 1" @click.stop="changeImage('next')">
-                <ui-icon type="right"></ui-icon>
+            <div v-if="currentIndex < data.length - 1" class="ctrl-btn right-btn" @click.stop="changeImage('next')">
+                <ui-icon type="right" />
             </div>
         </div>
         <div class="over-box">
             <div class="image-list" :style="`transform:translateX(${-100 * currentIndex}%);`">
-                <!-- :style="`transform:translateX(${100 * index}%);background-image:url(${common.changeUrl(i.src)});`" -->
-                <!-- v-for="(i, index) in imageList" -->
-                <div class="image-item" :style="`transform:translateX(${100 * index}%);background-image:url(${changeUrl(i.src)});`" v-for="(i, index) in data"></div>
-                <!-- <div v-else :style="`transform:translateX(${100 * index}%);`" class="image-item" v-for="(i, index) in imageList">
-                    <img @error="filesError(index)" :src="common.changeUrl(i.src)" alt="" />
-                </div> -->
+                <div v-for="(i, index) in data" :key="index" class="image-item" :style="`transform:translateX(${100 * index}%);background-image:url(${changeUrl(i.src)});`" />
             </div>
-            <ui-icon class="loading-icon" type="_loading_"></ui-icon>
-
+            <ui-icon class="loading-icon" type="_loading_" />
             <!-- <div class="del-btn">
                 <ui-icon type="del"></ui-icon>
             </div> -->
         </div>
         <div class="continue">
-            <!-- <ui-input
-                v-if="imageList.length < customer[type].maxNum && isEdit"
-                type="file"
-                :placeholder="customer[type].uploadPlace"
-                :disable="customer[type].upload"
-                :scale="customer[type].scale"
-                :accept="customer[type].accept"
-                :multiple="customer[type].multiple"
-                :maxSize="customer[type].maxSize"
-                :maxLen="customer[type].maxNum"
-                :othPlaceholder="customer[type].othPlaceholder"
-                @update:modelValue="data => hanlderFiles(data)"
-            >
-                <template v-slot:replace>
-                    <span class="continue-tips">{{ $t('tag.toolbox.continueAdd') }}</span>
-                    <span class="edit-pic-num">
-                        <span class="cur">{{ imageList.length }}</span>
-                        <span> / {{ customer[type].maxNum }}</span>
-                    </span>
-                </template>
-            </ui-input> -->
-            <!-- <span v-if="isEdit" class="pic-num">
-                <span class="cur">{{ imageList.length }}</span>
-                <span> / {{ custom[type].maxNum }}</span>
-            </span> -->
             <span class="pic-num">
                 <span class="cur">{{ currentIndex + 1 }}</span>
                 <span><span>&nbsp;</span>/<span>&nbsp;</span></span>
@@ -62,10 +30,10 @@
 </template>
 
 <script lang="ts">
-import { ref, defineEmits, defineComponent, PropType, inject } from 'vue'
+import { defineComponent, inject, ref } from 'vue'
 import { buildProps } from '@kankan-components/utils'
 import { UIIcon } from '@kankan-components/components'
-const emit = defineEmits(['close'])
+import type { PropType } from 'vue'
 
 const currentIndex = ref(0)
 
@@ -76,7 +44,7 @@ const props = buildProps({
     },
     data: {
         type: Array as PropType<SourceType[]>,
-        default: [],
+        default: () => [],
     },
     viewer: {
         type: Boolean,
@@ -89,18 +57,18 @@ const props = buildProps({
 })
 
 export default defineComponent({
-    name: 'metaImage',
-    props: props,
+    name: 'MetaImage',
     components: {
         'ui-icon': UIIcon,
     },
-    setup(props) {
+    props,
+    setup() {
         const __sdk: any = inject('__sdk')
         function changeUrl(name: string, now?: string) {
-            if (name.indexOf('http') != -1) {
+            if (name.includes('http')) {
                 return name
             } else {
-                if ((typeof name === 'string' && name.substring(0, 4) == 'blob') || (typeof name === 'string' && name.substring(0, 10) == 'data:image')) {
+                if ((typeof name === 'string' && name.slice(0, 4) == 'blob') || (typeof name === 'string' && name.slice(0, 10) == 'data:image')) {
                     return name
                 } else {
                     return __sdk.resource.getUserResourceURL(name, false, now)

+ 132 - 0
playground/src/components/advance/tag/src/metas/metasVideo.vue

@@ -0,0 +1,132 @@
+<template>
+    <div class="video-box">
+        <video
+            v-for="(i, index) in data"
+            id="video"
+            :key="index"
+            class="video-item"
+            x5-video-player-type="h5-page"
+            controlslist="nodownload"
+            disable-picture-in-picture
+            webkit-playsinline=""
+            x-webkit-airplay=""
+            playsinline
+            :controls="controls"
+            autoplay
+            :src="changeUrl(i.src)"
+            @error="filesError"
+        />
+    </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, inject, nextTick, onMounted, ref } from 'vue'
+import { buildProps } from '@kankan-components/utils'
+import type { PropType } from 'vue'
+
+const props = buildProps({
+    controls: {
+        type: Boolean,
+        default: true,
+    },
+    metasHeight: {
+        type: Number,
+        default: null,
+    },
+    data: {
+        type: Array as PropType<SourceType[]>,
+        default: () => [],
+    },
+})
+const loading = ref(true)
+
+export default defineComponent({
+    name: 'UIMetasVideo',
+    props,
+    setup: () => {
+        const filesError = () => {
+            loading.value = false
+            // Dialog.toast({
+            //     content: '视频文件加载失败',
+            //     type: 'warn',
+            // })
+        }
+        const __sdk: any = inject('__sdk')
+        function changeUrl(name: string, now?: string) {
+            if (name.includes('http')) {
+                return name
+            } else {
+                if ((typeof name === 'string' && name.slice(0, 4) == 'blob') || (typeof name === 'string' && name.slice(0, 10) == 'data:image')) {
+                    return name
+                } else {
+                    return __sdk.resource.getUserResourceURL(name, false, now)
+                }
+            }
+        }
+        onMounted(() => {
+            nextTick(() => {
+                const myVideo: HTMLElement | null = document.querySelector('#video')
+                if (myVideo) {
+                    myVideo.oncanplay = function () {
+                        loading.value = false
+                    }
+                }
+            })
+        })
+
+        return {
+            filesError,
+            changeUrl,
+        }
+    },
+})
+</script>
+<style lang="scss" scoped>
+.del-btn {
+    width: 24px;
+    height: 24px;
+    background: rgba(0, 0, 0, 0.3);
+    border-radius: 50%;
+    position: absolute;
+    cursor: pointer;
+    top: 10px;
+    right: 10px;
+    z-index: 10;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.video-box {
+    width: 100%;
+    height: 100%;
+    overflow: hidden;
+    position: absolute;
+    border-radius: 4px;
+    border: 1px solid rgba(255, 255, 255, 0.2);
+    top: 0;
+    left: 0;
+    z-index: 10;
+    .loading-icon {
+        color: var(--editor-main-color);
+        animation: rotate 2s infinite linear;
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        font-size: 30px;
+    }
+    @keyframes rotate {
+        0% {
+            transform: translate(-50%, -50%) rotate(0deg);
+        }
+        100% {
+            transform: translate(-50%, -50%) rotate(360deg);
+        }
+    }
+    .video-item {
+        width: 100%;
+        height: 100%;
+        object-fit: contain;
+    }
+}
+</style>

+ 1 - 1
playground/src/components/tag/src/props.ts

@@ -50,4 +50,4 @@ export const tagStatusProps = buildProps({
         type: Boolean,
         default: false,
     },
-})
+})

+ 10 - 12
playground/src/components/tag/src/showTag.vue

@@ -1,28 +1,24 @@
 <template>
-    <div class="show-tag" :id="`tagBox_${id}`">
+    <div :id="`tagBox_${id}`" class="show-tag">
         <div class="tag-title">
             <h2>
                 {{ title }}
             </h2>
         </div>
         <div class="desc">
-            <div class="text" v-html="content"></div>
+            <div class="text" v-html="content" />
         </div>
         <div class="tag-metas">
             <metasImage v-if="type == 'image'" :data="media.image" />
-            <!-- <metasImage v-if="hotData.type == 'image'" />
-            <metasVideo v-if="hotData.type == 'video'" />
-            <metasWeb v-if="hotData.type == 'link'" /> -->
-        </div>
-        <div class="edit-btn">
-            <!-- <span @click="edit()"><ui-icon type="edit"></ui-icon> {{ $t('common.revise') }}</span> -->
+            <MetasVideo v-if="type == 'video'" :data="media.video" />
         </div>
     </div>
 </template>
 <script lang="ts">
 import { type PropType, defineComponent } from 'vue'
-import { buildProps, definePropType } from '@kankan-components/utils'
+import { buildProps } from '@kankan-components/utils'
 import MetasImage from './metas/metasImage.vue'
+import MetasVideo from './metas/metasVideo.vue'
 // import demo from './metas/demo.vue'
 
 const props = buildProps({
@@ -54,9 +50,11 @@ const props = buildProps({
 
 export default defineComponent({
     name: 'UIShowTag',
-    props: props,
-    components: { MetasImage },
-    setup(props) {},
+    components: { MetasImage, MetasVideo },
+    props,
+    setup(props) {
+        console.log('')
+    },
 })
 </script>
 

+ 5 - 6
playground/src/components/tag/tag.d.ts

@@ -1,4 +1,3 @@
-
 type TagType = 'image' | 'video'
 
 type SourceType = {
@@ -25,13 +24,13 @@ interface TagContent {
     icon: string
     panoId: string
     position: {
-        x: number,
-        y: number,
+        x: number
+        y: number
         z: number
     }
     media: {
-        image?: SourceType[],
-        video?: SourceType[],
+        image?: SourceType[]
+        video?: SourceType[]
     }
     sid: string
     title: string
@@ -40,4 +39,4 @@ interface TagContent {
     x: number
     y: number
     visiblePanos?: any[]
-}
+}

packages/components/basic/audio/__tests__/audio.test.tsx → playground/src/components/basic/audio/__tests__/audio.test.tsx


packages/components/basic/audio/index.ts → playground/src/components/basic/audio/index.ts


packages/components/basic/audio/src/audio.vue → playground/src/components/basic/audio/src/audio.vue


packages/components/basic/bubble/index.ts → playground/src/components/basic/bubble/index.ts


packages/components/basic/bubble/src/bubble.ts → playground/src/components/basic/bubble/src/bubble.ts


packages/components/basic/bubble/src/bubble.vue → playground/src/components/basic/bubble/src/bubble.vue


packages/components/basic/button/index.ts → playground/src/components/basic/button/index.ts


packages/components/basic/button/src/button.ts → playground/src/components/basic/button/src/button.ts


packages/components/basic/button/src/button.vue → playground/src/components/basic/button/src/button.vue


packages/components/basic/config-provider/index.ts → playground/src/components/basic/config-provider/index.ts


packages/components/basic/config-provider/src/config-provider.ts → playground/src/components/basic/config-provider/src/config-provider.ts


packages/components/basic/config-provider/style/css.ts → playground/src/components/basic/config-provider/style/css.ts


packages/components/basic/config-provider/style/index.ts → playground/src/components/basic/config-provider/style/index.ts


packages/components/basic/cropper/index.ts → playground/src/components/basic/cropper/index.ts


packages/components/basic/cropper/src/cropper.ts → playground/src/components/basic/cropper/src/cropper.ts


packages/components/basic/cropper/src/cropper.vue → playground/src/components/basic/cropper/src/cropper.vue


packages/components/basic/dialog/index.ts → playground/src/components/basic/dialog/index.ts


packages/components/basic/dialog/src/alert.vue → playground/src/components/basic/dialog/src/alert.vue


packages/components/basic/dialog/src/confirm.vue → playground/src/components/basic/dialog/src/confirm.vue


packages/components/basic/dialog/src/dialog-content.vue → playground/src/components/basic/dialog/src/dialog-content.vue


packages/components/basic/dialog/src/dialog.ts → playground/src/components/basic/dialog/src/dialog.ts


packages/components/basic/dialog/src/dialog.vue → playground/src/components/basic/dialog/src/dialog.vue


packages/components/basic/dialog/src/toast.vue → playground/src/components/basic/dialog/src/toast.vue


packages/components/basic/dialog/src/window.vue → playground/src/components/basic/dialog/src/window.vue


packages/components/basic/floating/index.ts → playground/src/components/basic/floating/index.ts


packages/components/basic/floating/src/floating.ts → playground/src/components/basic/floating/src/floating.ts


packages/components/basic/floating/src/floating.vue → playground/src/components/basic/floating/src/floating.vue


packages/components/basic/gate/index.ts → playground/src/components/basic/gate/index.ts


packages/components/basic/gateContent/src/constant.ts → playground/src/components/basic/gate/src/constant.ts


packages/components/basic/gate/src/gate.ts → playground/src/components/basic/gate/src/gate.ts


packages/components/basic/gate/src/gate.vue → playground/src/components/basic/gate/src/gate.vue


packages/components/basic/gateContent/index.ts → playground/src/components/basic/gateContent/index.ts


packages/components/basic/gate/src/constant.ts → playground/src/components/basic/gateContent/src/constant.ts


packages/components/basic/gateContent/src/gateContent.ts → playground/src/components/basic/gateContent/src/gateContent.ts


packages/components/basic/gateContent/src/gateContent.vue → playground/src/components/basic/gateContent/src/gateContent.vue


packages/components/basic/groupOption/constant.ts → playground/src/components/basic/group/constant.ts


packages/components/basic/groupOption/index.ts → playground/src/components/basic/group/index.ts


packages/components/basic/group/ui-group-option.vue → playground/src/components/basic/group/ui-group-option.vue


packages/components/basic/groupOption/ui-group.vue → playground/src/components/basic/group/ui-group.vue


packages/components/basic/group/constant.ts → playground/src/components/basic/groupOption/constant.ts


packages/components/basic/group/index.ts → playground/src/components/basic/groupOption/index.ts


packages/components/basic/groupOption/ui-group-option.vue → playground/src/components/basic/groupOption/ui-group-option.vue


packages/components/basic/group/ui-group.vue → playground/src/components/basic/groupOption/ui-group.vue


packages/components/basic/guide/index.vue → playground/src/components/basic/guide/index.vue


+ 539 - 0
playground/src/components/basic/icon/iconfont/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1913 - 0
playground/src/components/basic/icon/iconfont/demo_index.html


+ 315 - 0
playground/src/components/basic/icon/iconfont/iconfont.css

@@ -0,0 +1,315 @@
+@font-face {
+  font-family: "iconfont"; /* Project id 2930899 */
+  src: url('iconfont.woff2?t=1639107133391') format('woff2'),
+       url('iconfont.woff?t=1639107133391') format('woff'),
+       url('iconfont.ttf?t=1639107133391') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-destination:before {
+  content: "\e678";
+}
+
+.icon-origin:before {
+  content: "\e679";
+}
+
+.icon-state_e:before {
+  content: "\e624";
+}
+
+.icon-state_f:before {
+  content: "\e625";
+}
+
+.icon-state_s:before {
+  content: "\e626";
+}
+
+.icon-clear:before {
+  content: "\e676";
+}
+
+.icon-cut:before {
+  content: "\e677";
+}
+
+.icon-copy:before {
+  content: "\e675";
+}
+
+.icon-v-m:before {
+  content: "\e674";
+}
+
+.icon-f-m:before {
+  content: "\e671";
+}
+
+.icon-v-r:before {
+  content: "\e672";
+}
+
+.icon-f-l:before {
+  content: "\e673";
+}
+
+.icon-h-l:before {
+  content: "\e66d";
+}
+
+.icon-h-m:before {
+  content: "\e66e";
+}
+
+.icon-v-l:before {
+  content: "\e66f";
+}
+
+.icon-h-r:before {
+  content: "\e670";
+}
+
+.icon-share:before {
+  content: "\e66c";
+}
+
+.icon-magnify:before {
+  content: "\e66b";
+}
+
+.icon-a-2d:before {
+  content: "\e669";
+}
+
+.icon-a-3d:before {
+  content: "\e66a";
+}
+
+.icon-left:before {
+  content: "\e668";
+}
+
+.icon-video:before {
+  content: "\e667";
+}
+
+.icon-pic:before {
+  content: "\e64e";
+}
+
+.icon-full:before {
+  content: "\e638";
+}
+
+.icon-del:before {
+  content: "\e632";
+}
+
+.icon-link:before {
+  content: "\e618";
+}
+
+.icon-uploading:before {
+  content: "\e619";
+}
+
+.icon-complete:before {
+  content: "\e61b";
+}
+
+.icon-web:before {
+  content: "\e635";
+}
+
+.icon-music:before {
+  content: "\e637";
+}
+
+.icon-element:before {
+  content: "\e666";
+}
+
+.icon-add:before {
+  content: "\e631";
+}
+
+.icon-edit:before {
+  content: "\e61f";
+}
+
+.icon-info:before {
+  content: "\e65e";
+}
+
+.icon-transmit:before {
+  content: "\e65f";
+}
+
+.icon-room:before {
+  content: "\e660";
+}
+
+.icon-point:before {
+  content: "\e661";
+}
+
+.icon-bulid:before {
+  content: "\e662";
+}
+
+.icon-floor:before {
+  content: "\e663";
+}
+
+.icon-pull-up1:before {
+  content: "\e664";
+}
+
+.icon-pull-down1:before {
+  content: "\e665";
+}
+
+.icon-checkbox1:before {
+  content: "\e65d";
+}
+
+.icon-minimize:before {
+  content: "\e65c";
+}
+
+.icon-reset:before {
+  content: "\e65a";
+}
+
+.icon-refresh:before {
+  content: "\e65b";
+}
+
+.icon-checkbox:before {
+  content: "\e659";
+}
+
+.icon-pull-down:before {
+  content: "\e61d";
+}
+
+.icon-pull-up:before {
+  content: "\e61e";
+}
+
+.icon-show_pic_s:before {
+  content: "\e658";
+}
+
+.icon-show_pic_n:before {
+  content: "\e650";
+}
+
+.icon-show_dot_s:before {
+  content: "\e64f";
+}
+
+.icon-show_dot_n:before {
+  content: "\e657";
+}
+
+.icon-share1:before {
+  content: "\e656";
+}
+
+.icon-portrait:before {
+  content: "\e655";
+}
+
+.icon-course:before {
+  content: "\e652";
+}
+
+.icon-self-more:before {
+  content: "\e64b";
+}
+
+.icon-search:before {
+  content: "\e64c";
+}
+
+.icon-pull-more:before {
+  content: "\e64d";
+}
+
+.icon-switch:before {
+  content: "\e651";
+}
+
+.icon-nav-hotspot:before {
+  content: "\e64a";
+}
+
+.icon-nav-measure:before {
+  content: "\e649";
+}
+
+.icon-nav-edit:before {
+  content: "\e642";
+}
+
+.icon-nav-setup:before {
+  content: "\e648";
+}
+
+.icon-close:before {
+  content: "\e633";
+}
+
+.icon-nav-browse:before {
+  content: "\e63d";
+}
+
+.icon-nav-correct:before {
+  content: "\e63e";
+}
+
+.icon-nav_data-setup:before {
+  content: "\e63f";
+}
+
+.icon-nav-coord:before {
+  content: "\e641";
+}
+
+.icon-nav-geography:before {
+  content: "\e643";
+}
+
+.icon-nav-space:before {
+  content: "\e644";
+}
+
+.icon-nav-download:before {
+  content: "\e645";
+}
+
+.icon-nav-data:before {
+  content: "\e646";
+}
+
+.icon-nav-house:before {
+  content: "\e647";
+}
+
+.icon-eye-s:before {
+  content: "\e653";
+}
+
+.icon-eye-n:before {
+  content: "\e654";
+}
+

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 60 - 0
playground/src/components/basic/icon/iconfont/iconfont.js


+ 534 - 0
playground/src/components/basic/icon/iconfont/iconfont.json

@@ -0,0 +1,534 @@
+{
+    "id": "2930899",
+    "name": "激光编辑器",
+    "font_family": "iconfont",
+    "css_prefix_text": "icon-",
+    "description": "",
+    "glyphs": [
+        {
+            "icon_id": "26384825",
+            "name": "destination",
+            "font_class": "destination",
+            "unicode": "e678",
+            "unicode_decimal": 59000
+        },
+        {
+            "icon_id": "26384826",
+            "name": "origin",
+            "font_class": "origin",
+            "unicode": "e679",
+            "unicode_decimal": 59001
+        },
+        {
+            "icon_id": "22132762",
+            "name": "state_e",
+            "font_class": "state_e",
+            "unicode": "e624",
+            "unicode_decimal": 58916
+        },
+        {
+            "icon_id": "22132763",
+            "name": "state_f",
+            "font_class": "state_f",
+            "unicode": "e625",
+            "unicode_decimal": 58917
+        },
+        {
+            "icon_id": "22132764",
+            "name": "state_s",
+            "font_class": "state_s",
+            "unicode": "e626",
+            "unicode_decimal": 58918
+        },
+        {
+            "icon_id": "26198013",
+            "name": "clear",
+            "font_class": "clear",
+            "unicode": "e676",
+            "unicode_decimal": 58998
+        },
+        {
+            "icon_id": "26198014",
+            "name": "cut",
+            "font_class": "cut",
+            "unicode": "e677",
+            "unicode_decimal": 58999
+        },
+        {
+            "icon_id": "26189441",
+            "name": "copy",
+            "font_class": "copy",
+            "unicode": "e675",
+            "unicode_decimal": 58997
+        },
+        {
+            "icon_id": "26077357",
+            "name": "v-m",
+            "font_class": "v-m",
+            "unicode": "e674",
+            "unicode_decimal": 58996
+        },
+        {
+            "icon_id": "26077354",
+            "name": "f-m",
+            "font_class": "f-m",
+            "unicode": "e671",
+            "unicode_decimal": 58993
+        },
+        {
+            "icon_id": "26077355",
+            "name": "v-r",
+            "font_class": "v-r",
+            "unicode": "e672",
+            "unicode_decimal": 58994
+        },
+        {
+            "icon_id": "26077356",
+            "name": "f-l",
+            "font_class": "f-l",
+            "unicode": "e673",
+            "unicode_decimal": 58995
+        },
+        {
+            "icon_id": "26077350",
+            "name": "h-l",
+            "font_class": "h-l",
+            "unicode": "e66d",
+            "unicode_decimal": 58989
+        },
+        {
+            "icon_id": "26077351",
+            "name": "h-m",
+            "font_class": "h-m",
+            "unicode": "e66e",
+            "unicode_decimal": 58990
+        },
+        {
+            "icon_id": "26077352",
+            "name": "v-l",
+            "font_class": "v-l",
+            "unicode": "e66f",
+            "unicode_decimal": 58991
+        },
+        {
+            "icon_id": "26077353",
+            "name": "h-r",
+            "font_class": "h-r",
+            "unicode": "e670",
+            "unicode_decimal": 58992
+        },
+        {
+            "icon_id": "26077297",
+            "name": "share",
+            "font_class": "share",
+            "unicode": "e66c",
+            "unicode_decimal": 58988
+        },
+        {
+            "icon_id": "26077227",
+            "name": "magnify",
+            "font_class": "magnify",
+            "unicode": "e66b",
+            "unicode_decimal": 58987
+        },
+        {
+            "icon_id": "26077202",
+            "name": "2d",
+            "font_class": "a-2d",
+            "unicode": "e669",
+            "unicode_decimal": 58985
+        },
+        {
+            "icon_id": "26077203",
+            "name": "3d",
+            "font_class": "a-3d",
+            "unicode": "e66a",
+            "unicode_decimal": 58986
+        },
+        {
+            "icon_id": "26008932",
+            "name": "left",
+            "font_class": "left",
+            "unicode": "e668",
+            "unicode_decimal": 58984
+        },
+        {
+            "icon_id": "26008166",
+            "name": "video",
+            "font_class": "video",
+            "unicode": "e667",
+            "unicode_decimal": 58983
+        },
+        {
+            "icon_id": "23786363",
+            "name": "pic",
+            "font_class": "pic",
+            "unicode": "e64e",
+            "unicode_decimal": 58958
+        },
+        {
+            "icon_id": "23773141",
+            "name": "full",
+            "font_class": "full",
+            "unicode": "e638",
+            "unicode_decimal": 58936
+        },
+        {
+            "icon_id": "23773069",
+            "name": "del",
+            "font_class": "del",
+            "unicode": "e632",
+            "unicode_decimal": 58930
+        },
+        {
+            "icon_id": "22099479",
+            "name": "link",
+            "font_class": "link",
+            "unicode": "e618",
+            "unicode_decimal": 58904
+        },
+        {
+            "icon_id": "22099480",
+            "name": "uploading",
+            "font_class": "uploading",
+            "unicode": "e619",
+            "unicode_decimal": 58905
+        },
+        {
+            "icon_id": "22099484",
+            "name": "complete",
+            "font_class": "complete",
+            "unicode": "e61b",
+            "unicode_decimal": 58907
+        },
+        {
+            "icon_id": "23773072",
+            "name": "web",
+            "font_class": "web",
+            "unicode": "e635",
+            "unicode_decimal": 58933
+        },
+        {
+            "icon_id": "23773074",
+            "name": "music",
+            "font_class": "music",
+            "unicode": "e637",
+            "unicode_decimal": 58935
+        },
+        {
+            "icon_id": "25764812",
+            "name": "element",
+            "font_class": "element",
+            "unicode": "e666",
+            "unicode_decimal": 58982
+        },
+        {
+            "icon_id": "23773068",
+            "name": "add",
+            "font_class": "add",
+            "unicode": "e631",
+            "unicode_decimal": 58929
+        },
+        {
+            "icon_id": "22099525",
+            "name": "edit",
+            "font_class": "edit",
+            "unicode": "e61f",
+            "unicode_decimal": 58911
+        },
+        {
+            "icon_id": "25713499",
+            "name": "info",
+            "font_class": "info",
+            "unicode": "e65e",
+            "unicode_decimal": 58974
+        },
+        {
+            "icon_id": "25713500",
+            "name": "transmit",
+            "font_class": "transmit",
+            "unicode": "e65f",
+            "unicode_decimal": 58975
+        },
+        {
+            "icon_id": "25713501",
+            "name": "room",
+            "font_class": "room",
+            "unicode": "e660",
+            "unicode_decimal": 58976
+        },
+        {
+            "icon_id": "25713502",
+            "name": "point",
+            "font_class": "point",
+            "unicode": "e661",
+            "unicode_decimal": 58977
+        },
+        {
+            "icon_id": "25713503",
+            "name": "bulid",
+            "font_class": "bulid",
+            "unicode": "e662",
+            "unicode_decimal": 58978
+        },
+        {
+            "icon_id": "25713504",
+            "name": "floor",
+            "font_class": "floor",
+            "unicode": "e663",
+            "unicode_decimal": 58979
+        },
+        {
+            "icon_id": "25713602",
+            "name": "pull-up",
+            "font_class": "pull-up1",
+            "unicode": "e664",
+            "unicode_decimal": 58980
+        },
+        {
+            "icon_id": "25713603",
+            "name": "pull-down",
+            "font_class": "pull-down1",
+            "unicode": "e665",
+            "unicode_decimal": 58981
+        },
+        {
+            "icon_id": "25671886",
+            "name": "checkbox",
+            "font_class": "checkbox1",
+            "unicode": "e65d",
+            "unicode_decimal": 58973
+        },
+        {
+            "icon_id": "25655073",
+            "name": "minimize",
+            "font_class": "minimize",
+            "unicode": "e65c",
+            "unicode_decimal": 58972
+        },
+        {
+            "icon_id": "25654903",
+            "name": "reset",
+            "font_class": "reset",
+            "unicode": "e65a",
+            "unicode_decimal": 58970
+        },
+        {
+            "icon_id": "25654904",
+            "name": "refresh",
+            "font_class": "refresh",
+            "unicode": "e65b",
+            "unicode_decimal": 58971
+        },
+        {
+            "icon_id": "25654199",
+            "name": "checkbox",
+            "font_class": "checkbox",
+            "unicode": "e659",
+            "unicode_decimal": 58969
+        },
+        {
+            "icon_id": "22099518",
+            "name": "pull-down",
+            "font_class": "pull-down",
+            "unicode": "e61d",
+            "unicode_decimal": 58909
+        },
+        {
+            "icon_id": "22099519",
+            "name": "pull-up",
+            "font_class": "pull-up",
+            "unicode": "e61e",
+            "unicode_decimal": 58910
+        },
+        {
+            "icon_id": "25633777",
+            "name": "show_pic_s",
+            "font_class": "show_pic_s",
+            "unicode": "e658",
+            "unicode_decimal": 58968
+        },
+        {
+            "icon_id": "25633765",
+            "name": "show_pic_n",
+            "font_class": "show_pic_n",
+            "unicode": "e650",
+            "unicode_decimal": 58960
+        },
+        {
+            "icon_id": "25633715",
+            "name": "show_dot_s",
+            "font_class": "show_dot_s",
+            "unicode": "e64f",
+            "unicode_decimal": 58959
+        },
+        {
+            "icon_id": "25633717",
+            "name": "show_dot_n",
+            "font_class": "show_dot_n",
+            "unicode": "e657",
+            "unicode_decimal": 58967
+        },
+        {
+            "icon_id": "25632561",
+            "name": "share",
+            "font_class": "share1",
+            "unicode": "e656",
+            "unicode_decimal": 58966
+        },
+        {
+            "icon_id": "25631621",
+            "name": "portrait",
+            "font_class": "portrait",
+            "unicode": "e655",
+            "unicode_decimal": 58965
+        },
+        {
+            "icon_id": "25631501",
+            "name": "course",
+            "font_class": "course",
+            "unicode": "e652",
+            "unicode_decimal": 58962
+        },
+        {
+            "icon_id": "25631463",
+            "name": "self-more",
+            "font_class": "self-more",
+            "unicode": "e64b",
+            "unicode_decimal": 58955
+        },
+        {
+            "icon_id": "25631464",
+            "name": "search",
+            "font_class": "search",
+            "unicode": "e64c",
+            "unicode_decimal": 58956
+        },
+        {
+            "icon_id": "25631466",
+            "name": "pull-more",
+            "font_class": "pull-more",
+            "unicode": "e64d",
+            "unicode_decimal": 58957
+        },
+        {
+            "icon_id": "25631470",
+            "name": "switch",
+            "font_class": "switch",
+            "unicode": "e651",
+            "unicode_decimal": 58961
+        },
+        {
+            "icon_id": "25631455",
+            "name": "nav-hotspot",
+            "font_class": "nav-hotspot",
+            "unicode": "e64a",
+            "unicode_decimal": 58954
+        },
+        {
+            "icon_id": "25631400",
+            "name": "nav-measure",
+            "font_class": "nav-measure",
+            "unicode": "e649",
+            "unicode_decimal": 58953
+        },
+        {
+            "icon_id": "25631122",
+            "name": "nav-edit",
+            "font_class": "nav-edit",
+            "unicode": "e642",
+            "unicode_decimal": 58946
+        },
+        {
+            "icon_id": "25631133",
+            "name": "nav-setup",
+            "font_class": "nav-setup",
+            "unicode": "e648",
+            "unicode_decimal": 58952
+        },
+        {
+            "icon_id": "23773070",
+            "name": "close",
+            "font_class": "close",
+            "unicode": "e633",
+            "unicode_decimal": 58931
+        },
+        {
+            "icon_id": "25629542",
+            "name": "nav-browse",
+            "font_class": "nav-browse",
+            "unicode": "e63d",
+            "unicode_decimal": 58941
+        },
+        {
+            "icon_id": "25629543",
+            "name": "nav-correct",
+            "font_class": "nav-correct",
+            "unicode": "e63e",
+            "unicode_decimal": 58942
+        },
+        {
+            "icon_id": "25629544",
+            "name": "nav_data-setup",
+            "font_class": "nav_data-setup",
+            "unicode": "e63f",
+            "unicode_decimal": 58943
+        },
+        {
+            "icon_id": "25629546",
+            "name": "nav-coord",
+            "font_class": "nav-coord",
+            "unicode": "e641",
+            "unicode_decimal": 58945
+        },
+        {
+            "icon_id": "25629548",
+            "name": "nav-geography",
+            "font_class": "nav-geography",
+            "unicode": "e643",
+            "unicode_decimal": 58947
+        },
+        {
+            "icon_id": "25629549",
+            "name": "nav-space",
+            "font_class": "nav-space",
+            "unicode": "e644",
+            "unicode_decimal": 58948
+        },
+        {
+            "icon_id": "25629550",
+            "name": "nav-download",
+            "font_class": "nav-download",
+            "unicode": "e645",
+            "unicode_decimal": 58949
+        },
+        {
+            "icon_id": "25629551",
+            "name": "nav-data",
+            "font_class": "nav-data",
+            "unicode": "e646",
+            "unicode_decimal": 58950
+        },
+        {
+            "icon_id": "25629552",
+            "name": "nav-house",
+            "font_class": "nav-house",
+            "unicode": "e647",
+            "unicode_decimal": 58951
+        },
+        {
+            "icon_id": "22930372",
+            "name": "eye-s",
+            "font_class": "eye-s",
+            "unicode": "e653",
+            "unicode_decimal": 58963
+        },
+        {
+            "icon_id": "22930373",
+            "name": "eye-n",
+            "font_class": "eye-n",
+            "unicode": "e654",
+            "unicode_decimal": 58964
+        }
+    ]
+}

BIN
playground/src/components/basic/icon/iconfont/iconfont.ttf


BIN
playground/src/components/basic/icon/iconfont/iconfont.woff


BIN
playground/src/components/basic/icon/iconfont/iconfont.woff2


+ 9 - 0
playground/src/components/basic/icon/index.ts

@@ -0,0 +1,9 @@
+import { withInstall } from '@kankan-components/utils'
+
+import Icon from './src/icon.vue'
+
+export const UIIcon = withInstall(Icon)
+
+export default UIIcon
+
+export * from './src/icon'

+ 29 - 0
playground/src/components/basic/icon/src/icon.ts

@@ -0,0 +1,29 @@
+import { buildProps, definePropType } from '@kankan-components/utils'
+import type { ExtractPropTypes } from 'vue'
+import type Icon from './icon.vue'
+
+export const iconProps = buildProps({
+    type: { type: String },
+    size: {
+        type: definePropType<number | string>([Number, String]),
+    },
+    color: { type: String },
+    small: { type: Boolean },
+    ctrl: { type: Boolean },
+    medium: { type: Boolean },
+    big: { type: Boolean },
+    disabled: { type: Boolean },
+    tip: { type: String },
+    tipH: {
+        type: String,
+        default: 'center',
+    },
+    tipV: {
+        type: String,
+        default: 'bottom',
+    },
+})
+
+export type IconProps = ExtractPropTypes<typeof iconProps>
+
+export type IconInstance = InstanceType<typeof Icon>

+ 48 - 0
playground/src/components/basic/icon/src/icon.vue

@@ -0,0 +1,48 @@
+<template>
+    <i class="iconfont ui-kankan-icon icon" :class="className" :style="style" @click="ev => emit('click', ev)">
+        <slot />
+
+        <p v-if="tip && os.isPc && !os.isTablet" class="tip">{{ tip }}</p>
+    </i>
+</template>
+
+<script lang="ts" setup>
+import { computed, defineEmits, defineProps } from 'vue'
+import { normalizeUnitToStyle, os } from '@kankan-components/utils'
+import { iconProps } from './icon'
+
+defineOptions({
+    name: 'UIIcon',
+})
+
+const props = defineProps(iconProps)
+
+const style = computed(() => ({
+    'font-size': normalizeUnitToStyle(props.size || 14),
+    color: props.color,
+}))
+const className = computed(() => {
+    const base = {
+        small: props.small,
+        medium: props.medium,
+        big: props.big,
+        disabled: props.disabled,
+        [`tip-h-${props.tipH}`]: true,
+        [`tip-v-${props.tipV}`]: true,
+        ['fun-ctrl']: props.ctrl,
+    }
+    if (props.type) {
+        return {
+            ...base,
+            [`icon-${props.type}`]: props.type,
+        }
+    } else {
+        return base
+    }
+})
+
+const emit = defineEmits(['click'])
+</script>
+<style>
+/* @import url('./iconfont/iconfont.css'); */
+</style>

+ 6 - 0
playground/src/components/basic/index.ts

@@ -0,0 +1,6 @@
+export * from './audio'
+export * from './icon'
+export * from './button'
+export * from './input'
+export * from './menu-item'
+export * from './config-provider'

packages/components/basic/input/index.ts → playground/src/components/basic/input/index.ts


packages/components/basic/input/src/checkRadio/checkRadio.ts → playground/src/components/basic/input/src/checkRadio/checkRadio.ts


packages/components/basic/input/src/checkRadio/checkRadio.vue → playground/src/components/basic/input/src/checkRadio/checkRadio.vue


packages/components/basic/input/src/checkbox/checkbox.ts → playground/src/components/basic/input/src/checkbox/checkbox.ts


packages/components/basic/input/src/checkbox/checkbox.vue → playground/src/components/basic/input/src/checkbox/checkbox.vue


packages/components/basic/input/src/file/file.ts → playground/src/components/basic/input/src/file/file.ts


packages/components/basic/input/src/file/file.vue → playground/src/components/basic/input/src/file/file.vue


packages/components/basic/input/src/index copy.vue.bk → playground/src/components/basic/input/src/index copy.vue.bk


packages/components/basic/input/src/input.ts → playground/src/components/basic/input/src/input.ts


packages/components/basic/input/src/input.vue → playground/src/components/basic/input/src/input.vue


packages/components/basic/input/src/number/number.ts → playground/src/components/basic/input/src/number/number.ts


packages/components/basic/input/src/number/number.vue → playground/src/components/basic/input/src/number/number.vue


packages/components/basic/input/src/radio/radio.ts → playground/src/components/basic/input/src/radio/radio.ts


packages/components/basic/input/src/radio/radio.vue → playground/src/components/basic/input/src/radio/radio.vue


packages/components/basic/input/src/range/range.ts → playground/src/components/basic/input/src/range/range.ts


packages/components/basic/input/src/range/range.vue → playground/src/components/basic/input/src/range/range.vue


packages/components/basic/input/src/richtext/richtext.ts → playground/src/components/basic/input/src/richtext/richtext.ts


packages/components/basic/input/src/richtext/richtext.vue → playground/src/components/basic/input/src/richtext/richtext.vue


packages/components/basic/input/src/search/search.ts → playground/src/components/basic/input/src/search/search.ts


packages/components/basic/input/src/search/search.vue → playground/src/components/basic/input/src/search/search.vue


packages/components/basic/input/src/select/select.ts → playground/src/components/basic/input/src/select/select.ts


packages/components/basic/input/src/select/select.vue → playground/src/components/basic/input/src/select/select.vue


packages/components/basic/input/src/state.js.bk → playground/src/components/basic/input/src/state.js.bk


packages/components/basic/input/src/switch/switch.ts → playground/src/components/basic/input/src/switch/switch.ts


packages/components/basic/input/src/switch/switch.vue → playground/src/components/basic/input/src/switch/switch.vue


packages/components/basic/input/src/text/text.ts → playground/src/components/basic/input/src/text/text.ts


packages/components/basic/input/src/text/text.vue → playground/src/components/basic/input/src/text/text.vue


packages/components/basic/input/src/textarea/textarea.ts → playground/src/components/basic/input/src/textarea/textarea.ts


packages/components/basic/input/src/textarea/textarea.vue → playground/src/components/basic/input/src/textarea/textarea.vue


+ 0 - 0
packages/components/basic/menu-item/index.ts


Vissa filer visades inte eftersom för många filer har ändrats