Browse Source

修改

master
1549469775 3 years ago
parent
commit
b05191a32d
  1. 9
      packages/components/button/button.vue
  2. 3
      packages/components/button/index.ts
  3. 8
      packages/components/captcha/captcha.vue
  4. 3
      packages/components/captcha/index.ts
  5. 3
      packages/components/tree/index.ts
  6. 58
      packages/components/tree/node.vue
  7. 21
      packages/components/tree/tree.vue
  8. 2
      packages/components/tree/util.ts
  9. 1
      packages/playground/components.d.ts
  10. 2
      packages/playground/src/dev/captcha.vue
  11. 15
      packages/playground/src/dev/tree.vue
  12. 2
      packages/playground/vite.config.ts
  13. 2
      readme.md

9
packages/components/button/button.vue

@ -1,19 +1,12 @@
<template> <template>
<div>ffffffffffff-{{ test }}</div> <div>ffffffffffff</div>
</template> </template>
<script lang="ts">
export default defineComponent({
name: "ps-button"
})
</script>
<script lang="ts" setup> <script lang="ts" setup>
import { defineComponent, onBeforeUnmount, ref } from "vue" import { defineComponent, onBeforeUnmount, ref } from "vue"
const props = defineProps<{ const props = defineProps<{
test: string test: string
}>() }>()
console.log(props);
const emits = defineEmits<{ const emits = defineEmits<{

3
packages/components/button/index.ts

@ -1,8 +1,9 @@
import { App } from "vue" import { App } from "vue"
import PsButton from "./button.vue" import PsButton from "./button.vue"
PsButton.name="ps-button"
PsButton.install = function(app: App) { PsButton.install = function(app: App) {
app.component(PsButton.name || "ps-button", PsButton) app.component(PsButton.name, PsButton)
} }
export { export {

8
packages/components/captcha/captcha.vue

@ -8,14 +8,8 @@
</div> </div>
</template> </template>
<script lang="ts">
export default defineComponent({
name: "ps-captcha"
})
</script>
<script lang="ts" setup> <script lang="ts" setup>
import { defineComponent, onBeforeUnmount, ref } from "vue" import { onBeforeUnmount, ref } from "vue"
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
duration?: number duration?: number

3
packages/components/captcha/index.ts

@ -1,8 +1,9 @@
import { App } from "vue" import { App } from "vue"
import PsCaptcha from "./captcha.vue" import PsCaptcha from "./captcha.vue"
PsCaptcha.name = "ps-captcha"
PsCaptcha.install = function(app: App) { PsCaptcha.install = function(app: App) {
app.component(PsCaptcha.name || "ps-captcha", PsCaptcha) app.component(PsCaptcha.name, PsCaptcha)
} }
export { export {

3
packages/components/tree/index.ts

@ -4,8 +4,9 @@ import PsTree from "./tree.vue"
export * from "./util" export * from "./util"
export * from "./type" export * from "./type"
PsTree.name = "ps-tree"
PsTree.install = function(app: App) { PsTree.install = function(app: App) {
app.component(PsTree.name || "ps-tree", PsTree) app.component(PsTree.name, PsTree)
} }
export { export {

58
packages/components/tree/node.vue

@ -11,44 +11,39 @@
}"> }">
{{ data.title }} - {{ level * 10 + 'px' }} {{ data.title }} - {{ level * 10 + 'px' }}
</div> </div>
<NiuTreeDrag v-bind="props" :status="status" :style="{
marginLeft: level * 10 + 'px',
}"></NiuTreeDrag>
</slot> </slot>
<div :style="{ marginLeft: level * 10 + 'px' }" :class="[
{
'ps-tree-drag-up':
dataSourceKey != data.key &&
dataSourceKey != undefined &&
!isChildOf(data.key, dataSourceKey, list) &&
status === ENiuTreeStatus.DragUp,
'ps-tree-drag-in':
dataSourceKey != data.key &&
dataSourceKey &&
!isChildOf(data.key, dataSourceKey, list) &&
status === ENiuTreeStatus.DragIn,
'ps-tree-drag-down':
dataSourceKey != data.key &&
dataSourceKey &&
!isChildOf(data.key, dataSourceKey, list) &&
status === ENiuTreeStatus.DragDown,
},
]"></div>
</div> </div>
<div class="ps-tree-sub-node" v-if="(opts.justOpen || data.isExpand) && data.children && data.children.length"> <div class="ps-tree-sub-node" v-if="(opts.justOpen || data.isExpand) && data.children && data.children.length">
<template v-for="(item, index) in data.children" :key="item.key"> <slot name="children" :datalist="data.children" :level="level + 1" :status="status">
<node @onDragstart="(e: INiuTreeKey) => emit('onDragstart', e)"
@onDragend="(e: INiuTreeKey) => emit('onDragend', e)"
@onDrop="(e: INiuTreeKey, s?: ENiuTreeStatus) => emit('onDrop', e, s)"
@onDragover="(e: INiuTreeKey) => emit('onDragover', e)"
@onDragleave="(e: INiuTreeKey) => emit('onDragleave', e)"
@click="(e: INiuTreeData) => emit('click', e)" :data-source-key="dataSourceKey" :data="item"
:list="list" :level="level + 1">
<template
#default="{ data, deep, dataSourceKey, status }: { data: INiuTreeData, deep: number, dataSourceKey: INiuTreeKey, status: ENiuTreeStatus }">
<slot :data="data" :deep="deep" :dataSourceKey="dataSourceKey" :status="status">
<div :style="{
marginLeft: deep * 10 + 'px',
'position': 'relative',
zIndex: 10
}">
{{ data.title }} - {{ deep * 10 + 'px' }}
</div>
<NiuTreeDrag v-bind="props" :status="status" :style="{
marginLeft: deep * 10 + 'px',
}"></NiuTreeDrag>
</slot> </slot>
</template>
</node>
</template>
</div> </div>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import node from './node.vue'
import { inject, ref, provide, useSlots } from 'vue'
import { isChildOf } from './util' import { isChildOf } from './util'
import NiuTreeDrag from './tree-drag.vue'; import TreeDrag from './tree-drag.vue';
import { ENiuTreeStatus, INiuTreeData, INiuTreeKey } from './type'; import { ENiuTreeStatus, INiuTreeData, INiuTreeKey } from './type';
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
@ -61,6 +56,7 @@ const props = withDefaults(
level: 0, level: 0,
} }
) )
const opts = inject("tree:opts", { const opts = inject("tree:opts", {
justOpen: false justOpen: false
}) })
@ -146,9 +142,3 @@ function onDragleave() {
emit('onDragleave', props.data.key) emit('onDragleave', props.data.key)
} }
</script> </script>
<script lang="ts">
import { defineComponent, inject, ref, provide } from 'vue'
export default defineComponent({
name: 'ps-tree-node',
})
</script>

21
packages/components/tree/tree.vue

@ -7,11 +7,24 @@
#default="{ data, deep, dataSourceKey, status }: { data: INiuTreeData, deep: number, dataSourceKey: INiuTreeKey, status: ENiuTreeStatus }"> #default="{ data, deep, dataSourceKey, status }: { data: INiuTreeData, deep: number, dataSourceKey: INiuTreeKey, status: ENiuTreeStatus }">
<slot :data="data" :deep="deep" :dataSourceKey="dataSourceKey" :status="status"></slot> <slot :data="data" :deep="deep" :dataSourceKey="dataSourceKey" :status="status"></slot>
</template> </template>
<template #children="{datalist, level}">
<template v-for="(item, index) in datalist" :key="index">
<node @onDragstart="onDragstart" @onDragEnd="onDragEnd" @onDrop="onDrop" :data-source-key="dataSourceKey"
:data="item" :list="list" :level="level" @click="(item) => clickNode(item)">
<template
#default="{ data, deep, dataSourceKey, status }: { data: INiuTreeData, deep: number, dataSourceKey: INiuTreeKey, status: ENiuTreeStatus }">
<slot :data="data" :deep="deep" :dataSourceKey="dataSourceKey" :status="status"></slot>
</template>
</node>
</template>
</template>
</node> </node>
</template> </template>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { provide, ref } from "vue"
import node from './node.vue'
import { INiuTreeData, INiuTreeKey, ENiuTreeStatus } from './type' import { INiuTreeData, INiuTreeKey, ENiuTreeStatus } from './type'
import { import {
findByKey, findByKey,
@ -116,12 +129,4 @@ function onDrop(key: INiuTreeKey, status?: ENiuTreeStatus) {
dataSourceKey.value = undefined dataSourceKey.value = undefined
} }
</script> </script>
<script lang="ts">
import { defineComponent, provide, ref } from "vue"
import node from './node.vue'
export default defineComponent({
name: 'ps-tree',
})
</script>

2
packages/components/tree/util.ts

@ -41,6 +41,8 @@ export function isChildOf(
b_key: INiuTreeKey, b_key: INiuTreeKey,
treeData: INiuTreeData[] treeData: INiuTreeData[]
) { ) {
if (!a_key) return false
if (!b_key) return false
if (a_key === b_key) return false if (a_key === b_key) return false
let target_node = findByKey(b_key, treeData) let target_node = findByKey(b_key, treeData)

1
packages/playground/components.d.ts

@ -8,6 +8,7 @@ declare module '@vue/runtime-core' {
Panel: typeof import('./src/components/Panel.vue')['default'] Panel: typeof import('./src/components/Panel.vue')['default']
PsButton: typeof import('@princess-ui/components/button')['PsButton'] PsButton: typeof import('@princess-ui/components/button')['PsButton']
PsCaptcha: typeof import('@princess-ui/components/captcha')['PsCaptcha'] PsCaptcha: typeof import('@princess-ui/components/captcha')['PsCaptcha']
PsTree: typeof import('@princess-ui/components/tree')['PsTree']
} }
} }

2
packages/playground/src/dev/captcha.vue

@ -21,7 +21,7 @@ function send(start: () => void, done: (isDone: boolean) => void) {
<ps-captcha @send="send" border :duration="5">sada</ps-captcha> <ps-captcha @send="send" border :duration="5">sada</ps-captcha>
</div> </div>
</Panel> </Panel>
<Panel name="按钮"> <Panel name="按钮ss">
<ps-button></ps-button> <ps-button></ps-button>
</Panel> </Panel>
</template> </template>

15
packages/playground/src/dev/tree.vue

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from "vue" import { ref } from "vue"
import PsTree, { convertTreeData } from "@princess-ui/components/tree" import { convertTreeData } from "@princess-ui/components/tree"
const list = ref(convertTreeData([ const list = ref(convertTreeData([
{ {
@ -26,6 +26,17 @@ const list = ref(convertTreeData([
<template> <template>
<Panel name="Tree"> <Panel name="Tree">
<ps-tree :list="list"></ps-tree> <ps-tree :list="list">
<template #default="{ data, deep }">
<div :style="{
marginLeft: deep * 10 + 'px',
'position': 'relative',
zIndex: 10
}">
{{ data.isFolder }}-{{ data.title }} 11-22 {{ deep * 10 + 'px' }}
</div>
</template>
</ps-tree>
{{ list }}
</Panel> </Panel>
</template> </template>

2
packages/playground/vite.config.ts

@ -25,6 +25,8 @@ export default defineConfig({
resolve: (componentName: string) => { resolve: (componentName: string) => {
if (componentName.startsWith('Ps')) { if (componentName.startsWith('Ps')) {
const name = _.lowerFirst(componentName.slice(2)) const name = _.lowerFirst(componentName.slice(2))
console.log(name);
return { return {
name: componentName, name: componentName,
from: `@princess-ui/components/${name}`, from: `@princess-ui/components/${name}`,

2
readme.md

@ -2,3 +2,5 @@
- https://zhuanlan.zhihu.com/p/450698973 - https://zhuanlan.zhihu.com/p/450698973
- https://github.com/dewfall123/vitepress-for-component/blob/master/package.json - https://github.com/dewfall123/vitepress-for-component/blob/master/package.json
- https://d.umijs.org/zh-CN - https://d.umijs.org/zh-CN
https://rollupjs.org/guide/en/#input
Loading…
Cancel
Save