@thestarweb/ui 1.7.1 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_plugin-vue_export-helper.js +7 -0
- package/dist/components/base/button/button.vue.js +5 -0
- package/dist/components/base/button/button.vue_vue_type_script_setup_true_lang.js +35 -0
- package/dist/components/data/card/card.vue.js +5 -0
- package/dist/components/data/card/card.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/components/data/pagination/pagination.vue.js +5 -0
- package/dist/components/data/pagination/pagination.vue_vue_type_script_setup_true_lang.js +101 -0
- package/dist/components/data/popover/popover.vue.js +5 -0
- package/dist/components/data/popover/popover.vue_vue_type_script_setup_true_lang.js +122 -0
- package/dist/components/data/popover/utils.js +68 -0
- package/dist/components/data/table/table.vue.js +5 -0
- package/dist/components/data/table/table.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/components/data/tag/tag.vue.js +5 -0
- package/dist/components/data/tag/tag.vue_vue_type_script_setup_true_lang.js +21 -0
- package/dist/components/data/tree/tree-item.vue.js +5 -0
- package/dist/components/data/tree/tree-item.vue_vue_type_script_setup_true_lang.js +75 -0
- package/dist/components/data/tree/tree-raw.vue.js +5 -0
- package/dist/components/data/tree/tree-raw.vue_vue_type_script_setup_true_lang.js +104 -0
- package/dist/components/data/tree/tree.vue.js +4 -0
- package/dist/components/data/tree/tree.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/components/data/tree/utils.js +66 -0
- package/dist/components/form/checkbox/checkbox.vue.js +5 -0
- package/dist/components/form/checkbox/checkbox.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/components/form/input/input.vue.js +5 -0
- package/dist/components/form/input/input.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/components/form/select/select.vue.js +5 -0
- package/dist/components/form/select/select.vue_vue_type_script_setup_true_lang.js +146 -0
- package/dist/components/form/slider/slider.vue.js +5 -0
- package/dist/components/form/slider/slider.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/form/switch/switch.vue.js +5 -0
- package/dist/components/form/switch/switch.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/components/layout/layout/index.js +9 -0
- package/dist/components/layout/layout/layout-dividing.vue.js +10 -0
- package/dist/components/layout/layout/layout-main.vue.js +10 -0
- package/dist/components/layout/layout/layout.vue.js +5 -0
- package/dist/components/layout/layout/layout.vue_vue_type_script_setup_true_lang.js +14 -0
- package/dist/components/layout/page/Page.vue.js +5 -0
- package/dist/components/layout/page/Page.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/components/other/calendar/calendar.vue.js +5 -0
- package/dist/components/other/calendar/calendar.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/components/other/menu/index.vue.js +5 -0
- package/dist/components/other/menu/index.vue_vue_type_script_setup_true_lang.js +22 -0
- package/dist/components/other/menu/menu-h/index.vue.js +5 -0
- package/dist/components/other/menu/menu-h/index.vue_vue_type_script_setup_true_lang.js +22 -0
- package/dist/components/other/menu/menu-h/menu-h-item.vue.js +5 -0
- package/dist/components/other/menu/menu-h/menu-h-item.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/other/menu/menu-v/index.vue.js +4 -0
- package/dist/components/other/menu/menu-v/index.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/context/is-mobile.js +10 -0
- package/dist/icons/arrow-down.svg_component.js +12 -0
- package/dist/icons/arrow-right.svg_component.js +12 -0
- package/dist/icons/home.svg_component.js +12 -0
- package/dist/icons/menu.svg_component.js +12 -0
- package/dist/index.js +19 -0
- package/dist/style.css +2 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/z-index.js +6 -0
- package/package.json +38 -81
- package/types/src/components/base/button/button.vue.d.ts +22 -0
- package/types/src/components/base/button/example/base.vue.d.ts +3 -0
- package/types/src/components/base/button/index.d.ts +1 -0
- package/types/src/components/base/index.d.ts +1 -0
- package/types/src/components/data/card/card.vue.d.ts +32 -0
- package/types/src/components/data/card/index.d.ts +1 -0
- package/types/src/components/data/index.d.ts +6 -0
- package/types/src/components/data/pagination/example/base.vue.d.ts +3 -0
- package/types/src/components/data/pagination/index.d.ts +1 -0
- package/types/src/components/data/pagination/pagination.vue.d.ts +21 -0
- package/types/src/components/data/popover/example/base.vue.d.ts +3 -0
- package/types/src/components/data/popover/index.d.ts +1 -0
- package/types/src/components/data/popover/popover.vue.d.ts +39 -0
- package/types/src/components/data/popover/type.d.ts +1 -0
- package/types/src/components/data/popover/utils.d.ts +12 -0
- package/types/src/components/data/table/example/base.vue.d.ts +3 -0
- package/types/src/components/data/table/example/render.vue.d.ts +3 -0
- package/types/src/components/data/table/index.d.ts +2 -0
- package/types/src/components/data/table/table.vue.d.ts +36 -0
- package/types/src/components/data/table/types.d.ts +12 -0
- package/types/src/components/data/tag/example/base.vue.d.ts +3 -0
- package/types/src/components/data/tag/index.d.ts +1 -0
- package/types/src/components/data/tag/tag.vue.d.ts +20 -0
- package/types/src/components/data/tree/example/base.vue.d.ts +3 -0
- package/types/src/components/data/tree/index.d.ts +2 -0
- package/types/src/components/data/tree/tree-item.vue.d.ts +36 -0
- package/types/src/components/data/tree/tree-raw.vue.d.ts +47 -0
- package/types/src/components/data/tree/tree.vue.d.ts +34 -0
- package/types/src/components/data/tree/type.d.ts +40 -0
- package/types/src/components/data/tree/utils.d.ts +10 -0
- package/types/src/components/form/checkbox/checkbox.vue.d.ts +32 -0
- package/types/src/components/form/checkbox/example/base.vue.d.ts +3 -0
- package/types/src/components/form/checkbox/example/group.vue.d.ts +3 -0
- package/types/src/components/form/checkbox/index.d.ts +1 -0
- package/types/src/components/form/index.d.ts +5 -0
- package/types/src/components/form/input/example/base.vue.d.ts +3 -0
- package/types/src/components/form/input/index.d.ts +1 -0
- package/types/src/components/form/input/input.vue.d.ts +17 -0
- package/types/src/components/form/select/example/base.vue.d.ts +3 -0
- package/types/src/components/form/select/example/tree-select.vue.d.ts +3 -0
- package/types/src/components/form/select/index.d.ts +2 -0
- package/types/src/components/form/select/select.vue.d.ts +25 -0
- package/types/src/components/form/select/types.d.ts +25 -0
- package/types/src/components/form/slider/example/base.vue.d.ts +3 -0
- package/types/src/components/form/slider/index.d.ts +1 -0
- package/types/src/components/form/slider/slider.vue.d.ts +19 -0
- package/types/src/components/form/switch/example/base.vue.d.ts +3 -0
- package/types/src/components/form/switch/index.d.ts +1 -0
- package/types/src/components/form/switch/switch.vue.d.ts +17 -0
- package/types/src/components/index.d.ts +5 -0
- package/types/src/components/layout/index.d.ts +2 -0
- package/types/src/components/layout/layout/index.d.ts +42 -0
- package/types/src/components/layout/layout/layout-dividing.vue.d.ts +3 -0
- package/types/src/components/layout/layout/layout-main.vue.d.ts +15 -0
- package/types/src/components/layout/layout/layout.vue.d.ts +18 -0
- package/types/src/components/layout/page/Page.vue.d.ts +39 -0
- package/types/src/components/layout/page/index.d.ts +1 -0
- package/types/src/components/other/calendar/calendar.vue.d.ts +41 -0
- package/types/src/components/other/calendar/index.d.ts +1 -0
- package/types/src/components/other/index.d.ts +2 -0
- package/types/src/components/other/menu/index.d.ts +2 -0
- package/types/src/components/other/menu/index.vue.d.ts +46 -0
- package/types/src/components/other/menu/menu-h/index.vue.d.ts +19 -0
- package/types/src/components/other/menu/menu-h/menu-h-item.vue.d.ts +27 -0
- package/types/src/components/other/menu/menu-v/index.vue.d.ts +24 -0
- package/types/src/components/other/menu/types.d.ts +6 -0
- package/types/src/components/other/view-control/index.d.ts +1 -0
- package/types/src/components/other/view-control/view-control.vue.d.ts +20 -0
- package/types/src/context/index.d.ts +1 -0
- package/types/src/context/is-mobile.d.ts +4 -0
- package/types/src/icons/index.d.ts +4 -0
- package/types/src/index.d.ts +3 -0
- package/types/src/types.d.ts +2 -0
- package/types/src/utils/index.d.ts +6 -0
- package/types/src/utils/z-index.d.ts +1 -0
- package/types/vite.config.d.ts +2 -0
- package/build-ts/main.js +0 -63
- package/dist/demo.html +0 -8
- package/dist/star-ui.common.js +0 -33776
- package/dist/star-ui.common.js.map +0 -1
- package/dist/star-ui.umd.js +0 -33786
- package/dist/star-ui.umd.js.map +0 -1
- package/dist/star-ui.umd.min.js +0 -299
- package/dist/star-ui.umd.min.js.map +0 -1
- package/readme.md +0 -16
- package/src/components/button.vue +0 -34
- package/src/components/calendar.vue +0 -244
- package/src/components/call-render.tsx +0 -22
- package/src/components/card.vue +0 -126
- package/src/components/common/base-popper.vue +0 -132
- package/src/components/content/context-menu-box/index.vue +0 -117
- package/src/components/content/index.ts +0 -5
- package/src/components/content/menu/index.vue +0 -86
- package/src/components/content/menu/menu-h/index.vue +0 -68
- package/src/components/content/menu/menu-h/menu-h-child.vue +0 -74
- package/src/components/content/menu/menu-h/menu-h-item.vue +0 -66
- package/src/components/content/menu/menu-v/index.vue +0 -56
- package/src/components/content/modals/confirm.vue +0 -45
- package/src/components/content/modals/modal.vue +0 -110
- package/src/components/content/page.vue +0 -134
- package/src/components/form/form/form-item.vue +0 -116
- package/src/components/form/form/form.vue +0 -109
- package/src/components/form/form/index.ts +0 -2
- package/src/components/form/index.ts +0 -1
- package/src/components/input.vue +0 -89
- package/src/components/layout/auto-direction/index.vue +0 -28
- package/src/components/layout/index.ts +0 -1
- package/src/components/layout-h.vue +0 -34
- package/src/components/layout-main.vue +0 -25
- package/src/components/layout-v.vue +0 -36
- package/src/components/line-h.vue +0 -29
- package/src/components/line-v.vue +0 -29
- package/src/components/select.vue +0 -265
- package/src/components/slider.vue +0 -171
- package/src/components/switch.vue +0 -95
- package/src/components/table.vue +0 -59
- package/src/components/tree/index.vue +0 -116
- package/src/components/tree/tree-item.vue +0 -157
- package/src/components/view-control.vue +0 -83
- package/src/directives/is-focus.ts +0 -10
- package/src/func/download.ts +0 -15
- package/src/func/index.ts +0 -2
- package/src/func/modal/index.ts +0 -72
- package/src/global-style.css +0 -127
- package/src/icon-font/iconfont.css +0 -75
- package/src/icon-font/iconfont.eot +0 -0
- package/src/icon-font/iconfont.json +0 -114
- package/src/icon-font/iconfont.svg +0 -62
- package/src/icon-font/iconfont.ttf +0 -0
- package/src/icon-font/iconfont.woff +0 -0
- package/src/icon-font/iconfont.woff2 +0 -0
- package/src/main.ts +0 -57
- package/src/outher/index.ts +0 -8
- package/src/reg.ts +0 -129
- package/src/shims-vue.d.ts +0 -8
- package/src/types.d.ts +0 -15
- package/src/utils.ts +0 -24
- package/types/components/button.vue.d.ts +0 -5
- package/types/components/calendar.vue.d.ts +0 -26
- package/types/components/call-render.d.ts +0 -6
- package/types/components/card.vue.d.ts +0 -13
- package/types/components/common/base-popper.vue.d.ts +0 -21
- package/types/components/content/context-menu-box/index.vue.d.ts +0 -20
- package/types/components/content/index.d.ts +0 -5
- package/types/components/content/menu/index.vue.d.ts +0 -12
- package/types/components/content/menu/menu-h/index.vue.d.ts +0 -8
- package/types/components/content/menu/menu-h/menu-h-child.vue.d.ts +0 -7
- package/types/components/content/menu/menu-h/menu-h-item.vue.d.ts +0 -8
- package/types/components/content/menu/menu-v/index.vue.d.ts +0 -9
- package/types/components/content/modals/confirm.vue.d.ts +0 -7
- package/types/components/content/modals/modal.vue.d.ts +0 -12
- package/types/components/content/page.vue.d.ts +0 -9
- package/types/components/form/form/form-item.vue.d.ts +0 -22
- package/types/components/form/form/form.vue.d.ts +0 -24
- package/types/components/form/form/index.d.ts +0 -2
- package/types/components/form/index.d.ts +0 -1
- package/types/components/input.vue.d.ts +0 -17
- package/types/components/layout/auto-direction/index.vue.d.ts +0 -4
- package/types/components/layout/index.d.ts +0 -1
- package/types/components/layout-h.vue.d.ts +0 -4
- package/types/components/layout-main.vue.d.ts +0 -4
- package/types/components/layout-v.vue.d.ts +0 -4
- package/types/components/line-h.vue.d.ts +0 -4
- package/types/components/line-v.vue.d.ts +0 -4
- package/types/components/select.vue.d.ts +0 -26
- package/types/components/slider.vue.d.ts +0 -29
- package/types/components/switch.vue.d.ts +0 -12
- package/types/components/table.vue.d.ts +0 -5
- package/types/components/tree/index.vue.d.ts +0 -15
- package/types/components/tree/tree-item.vue.d.ts +0 -18
- package/types/components/view-control.vue.d.ts +0 -16
- package/types/directives/is-focus.d.ts +0 -4
- package/types/func/download.d.ts +0 -1
- package/types/func/index.d.ts +0 -2
- package/types/func/modal/index.d.ts +0 -13
- package/types/main.d.ts +0 -75
- package/types/outher/index.d.ts +0 -5
- package/types/reg.d.ts +0 -45
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div :class="['star-ui', 'su-select','star-ui-select',{'is-focus':isFocused}]" @click="isFocused=!isFocused">
|
|
3
|
-
<!-- 原生组件 -->
|
|
4
|
-
<select :name="name" style="display: none"></select>
|
|
5
|
-
<input v-if="false" type="text" :value="1" class="star-ui star-ui-select--inner">
|
|
6
|
-
<!-- 内容显示 -->
|
|
7
|
-
<div :class="['star-ui','star-ui-select--inner-content','star-ui-size-'+size]">{{this.showValue}}</div>
|
|
8
|
-
<!-- 后缀 -->
|
|
9
|
-
<div :class="['star-ui','start-ui-select--inner-suffix','star-ui-size-'+size]">
|
|
10
|
-
<i class="star-ui-icon-font star-ui-icon-arrow-down"/>
|
|
11
|
-
</div>
|
|
12
|
-
<!-- 选项弹窗 -->
|
|
13
|
-
<base-popper :from-item="$el" :visible="isFocused" @out-click="isFocused=false">
|
|
14
|
-
<div :class="['star-ui','star-ui-select--pooper',pooperClass]" :style="{width:isMobile?'100%':(width+'px')}">
|
|
15
|
-
<div class="star-ui star-ui-select--pooper-title" v-if="isMobile">请选择</div>
|
|
16
|
-
<div :class="['star-ui','star-ui-select--pooper-item-list','star-ui-size-'+size]">
|
|
17
|
-
|
|
18
|
-
<su-tree v-if="showAsTree" ref="tree" highlight-current :size="size" :treeData="options" :label="labelName" :value="valueName" :children="children" @node-click="haandleNodeClick"></su-tree>
|
|
19
|
-
<div v-else v-for="item in valueMap" :key="item[0]" :class="['star-ui','star-ui-select--option','star-ui-size-'+size,'star-ui-container',{
|
|
20
|
-
'star-ui-select--option-sel':item[0]==this.modelValue
|
|
21
|
-
}]" @click="handleSelect(item[0])">{{item[1]}}</div>
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
</base-popper>
|
|
25
|
-
</div>
|
|
26
|
-
</template>
|
|
27
|
-
|
|
28
|
-
<script lang="ts">
|
|
29
|
-
import { Vue } from 'vue-class-component';
|
|
30
|
-
import BasePopper from "./common/base-popper.vue";
|
|
31
|
-
import { Register, Emit, Prop } from "@ui-root/reg";
|
|
32
|
-
import { SuViewCtrlInjectIsMobile } from "@ui-root/outher";
|
|
33
|
-
import SuTree from "./tree/index.vue";
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
import "../global-style.css";
|
|
37
|
-
|
|
38
|
-
@Register({
|
|
39
|
-
name:"su-select",
|
|
40
|
-
components:{
|
|
41
|
-
BasePopper,
|
|
42
|
-
SuTree
|
|
43
|
-
},
|
|
44
|
-
watch:{
|
|
45
|
-
isFocused(v){
|
|
46
|
-
if(v){
|
|
47
|
-
if(this.$el){
|
|
48
|
-
if(this.$el.clientWidth){
|
|
49
|
-
this.width=this.$el.clientWidth;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
modelValue(){
|
|
55
|
-
this.updateTree();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
})
|
|
59
|
-
export default class SuSelect extends Vue {
|
|
60
|
-
mounted():void{
|
|
61
|
-
this.updateTree();
|
|
62
|
-
}
|
|
63
|
-
declare $refs:{
|
|
64
|
-
tree:SuTree
|
|
65
|
-
};
|
|
66
|
-
@Prop({
|
|
67
|
-
type:[String,Number,Array],
|
|
68
|
-
default:""
|
|
69
|
-
})
|
|
70
|
-
readonly modelValue!:string;
|
|
71
|
-
@Prop({
|
|
72
|
-
type:String,
|
|
73
|
-
default:""
|
|
74
|
-
})
|
|
75
|
-
readonly name!:string;
|
|
76
|
-
@Prop({
|
|
77
|
-
type:String,
|
|
78
|
-
default:"medium"
|
|
79
|
-
})
|
|
80
|
-
private size!:string;
|
|
81
|
-
@Prop({
|
|
82
|
-
type:Array,
|
|
83
|
-
default:function(){return [];}
|
|
84
|
-
})
|
|
85
|
-
readonly options!:Record<string, unknown>[];
|
|
86
|
-
@Prop({
|
|
87
|
-
type:String,
|
|
88
|
-
default:"value"
|
|
89
|
-
})
|
|
90
|
-
readonly valueName!:string;
|
|
91
|
-
@Prop({
|
|
92
|
-
type:String,
|
|
93
|
-
default:"label"
|
|
94
|
-
})
|
|
95
|
-
readonly labelName!:string;
|
|
96
|
-
@Prop({
|
|
97
|
-
type:[String,Function],
|
|
98
|
-
default:()=>{
|
|
99
|
-
return "children"
|
|
100
|
-
}
|
|
101
|
-
})
|
|
102
|
-
children!:string|((item:Record<string, unknown>)=>Record<string, unknown>[]);
|
|
103
|
-
@Prop({
|
|
104
|
-
type:Boolean,
|
|
105
|
-
default:false
|
|
106
|
-
})
|
|
107
|
-
readonly showAsTree!:boolean;
|
|
108
|
-
@Prop({
|
|
109
|
-
type:String,
|
|
110
|
-
default:""
|
|
111
|
-
})
|
|
112
|
-
readonly pooperClass!:string;
|
|
113
|
-
isFocused=false;
|
|
114
|
-
@SuViewCtrlInjectIsMobile readonly isMobile!: boolean;
|
|
115
|
-
get valueMap():Map<string|number,string>{
|
|
116
|
-
const map=new Map();
|
|
117
|
-
if(this.showAsTree){
|
|
118
|
-
let task:Record<string, unknown>[] = [];
|
|
119
|
-
task.push(...this.options);
|
|
120
|
-
while(task.length){
|
|
121
|
-
const item = task.pop() as Record<string, unknown>;
|
|
122
|
-
let itemValue:string|number|undefined;
|
|
123
|
-
if(typeof this.valueName == "string"){
|
|
124
|
-
itemValue = (item[this.valueName]) as string|number|undefined;
|
|
125
|
-
// }else{
|
|
126
|
-
// itemValue = this.value(this.current);
|
|
127
|
-
}
|
|
128
|
-
if(itemValue!=undefined){
|
|
129
|
-
map.set(itemValue,(this.labelName in item)?item[this.labelName]:itemValue);
|
|
130
|
-
}
|
|
131
|
-
let children:Record<string, unknown>[]|undefined;
|
|
132
|
-
if(typeof this.children == "string"){
|
|
133
|
-
children = (item[this.children]) as Record<string, unknown>[]|undefined;
|
|
134
|
-
}else{
|
|
135
|
-
children = this.children(item);
|
|
136
|
-
}
|
|
137
|
-
children&&task.push(...children);
|
|
138
|
-
}
|
|
139
|
-
}else{
|
|
140
|
-
this.options.map((item)=>{
|
|
141
|
-
if(this.valueName in item){
|
|
142
|
-
const value=item[this.valueName];
|
|
143
|
-
const label=(this.labelName in item)?item[this.labelName]:value
|
|
144
|
-
map.set(value,label);
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
return map;
|
|
149
|
-
}
|
|
150
|
-
get showValue():string{
|
|
151
|
-
if(this.valueMap.has(this.modelValue)){
|
|
152
|
-
return this.valueMap.get(this.modelValue) as string;
|
|
153
|
-
}
|
|
154
|
-
return this.modelValue;
|
|
155
|
-
}
|
|
156
|
-
private width=280;
|
|
157
|
-
private updateTree(){
|
|
158
|
-
if(this.modelValue&&this.showAsTree){
|
|
159
|
-
this.$refs.tree.setCurrentByValue(this.modelValue);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
@Emit("update:modelValue")
|
|
163
|
-
handleSelect(value:string):string{
|
|
164
|
-
//this.$emit("update:modelValue",value);
|
|
165
|
-
this.isFocused=false;
|
|
166
|
-
return value;
|
|
167
|
-
}
|
|
168
|
-
@Emit("update:modelValue")
|
|
169
|
-
haandleNodeClick(item:Record<string, unknown>,value:string|number|undefined):string|number|undefined{
|
|
170
|
-
this.isFocused=false;
|
|
171
|
-
this.$refs.tree.setCurrentByValue(this.modelValue);
|
|
172
|
-
return value;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
</script>
|
|
176
|
-
|
|
177
|
-
<style>
|
|
178
|
-
/*基本样式*/
|
|
179
|
-
.star-ui-select{
|
|
180
|
-
border: solid 1px var(--star-ui-input-border-color);
|
|
181
|
-
border-radius: var(--star-ui-border-radius);
|
|
182
|
-
display: inline-flex;
|
|
183
|
-
flex-direction: row;
|
|
184
|
-
width:var(--star-ui-input-default-width);
|
|
185
|
-
cursor: pointer;
|
|
186
|
-
color: var(--star-ui-regular-text-color);
|
|
187
|
-
background: var(--star-ui-backgorund-color);
|
|
188
|
-
}
|
|
189
|
-
/*选中时样式*/
|
|
190
|
-
.star-ui-select:hover,.star-ui-select.is-focus{
|
|
191
|
-
border: solid 1px var(--star-ui-base-color);
|
|
192
|
-
}
|
|
193
|
-
/*内容显示区域占用全部剩余空间*/
|
|
194
|
-
.star-ui-select--inner-content{
|
|
195
|
-
flex:1;
|
|
196
|
-
overflow: hidden;
|
|
197
|
-
white-space: nowrap;
|
|
198
|
-
text-overflow: ellipsis;
|
|
199
|
-
text-align: left;
|
|
200
|
-
}
|
|
201
|
-
/*清除原生输入框的样式*/
|
|
202
|
-
.star-ui-select--inner,.star-ui-select--inner:hover,.star-ui-select--inner:active,.star-ui-select--inner:focus{
|
|
203
|
-
border-width: 0px;
|
|
204
|
-
outline: none;
|
|
205
|
-
margin: 0;
|
|
206
|
-
padding: 0;
|
|
207
|
-
}
|
|
208
|
-
/*弹出层样式*/
|
|
209
|
-
.star-ui-select--pooper{
|
|
210
|
-
background: var(--star-ui-backgorund-color);
|
|
211
|
-
border: solid 1px var(--star-ui-input-border-color);
|
|
212
|
-
border-radius: var(--star-ui-border-radius);
|
|
213
|
-
color: var(--star-ui-regular-text-color);
|
|
214
|
-
}
|
|
215
|
-
.star-ui-select--option{
|
|
216
|
-
cursor: pointer;
|
|
217
|
-
}
|
|
218
|
-
/*选中选项样式*/
|
|
219
|
-
.star-ui-select--option-sel{
|
|
220
|
-
background: var(--star-ui-base-color);
|
|
221
|
-
color:var(--star-ui-backgorund-color);
|
|
222
|
-
}
|
|
223
|
-
/*选项的最大高度限制*/
|
|
224
|
-
.star-ui-select--pooper-item-list{
|
|
225
|
-
overflow-x: hidden;
|
|
226
|
-
overflow-y: auto;
|
|
227
|
-
padding: 0;
|
|
228
|
-
}
|
|
229
|
-
.star-ui-select--pooper-item-list.star-ui-size-medium{
|
|
230
|
-
max-height: calc(var(--star-ui-input-medium-font-size) * 15);
|
|
231
|
-
}
|
|
232
|
-
.star-ui-select--pooper-item-list.star-ui-size-mini{
|
|
233
|
-
max-height: calc(var(--star-ui-input-mini-font-size) * 15);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/*移动样式*/
|
|
237
|
-
.star-ui-select--pooper-title{
|
|
238
|
-
text-align: center;
|
|
239
|
-
line-height: 2;
|
|
240
|
-
font-weight: bold;
|
|
241
|
-
padding: var(--star-ui-default-padding);
|
|
242
|
-
}
|
|
243
|
-
.star-ui-view-control-mobile .star-ui-select--pooper{
|
|
244
|
-
width: 100%;
|
|
245
|
-
}
|
|
246
|
-
.star-ui-view-control.star-ui-view-control-mobile .star-ui-select--pooper{
|
|
247
|
-
border-radius: 0;
|
|
248
|
-
border-width: 0;
|
|
249
|
-
}
|
|
250
|
-
.star-ui-view-control.star-ui-view-control-mobile .star-ui-select--option{
|
|
251
|
-
border-radius: 0;
|
|
252
|
-
padding-left: 10px;
|
|
253
|
-
border-left: 5px solid transparent;
|
|
254
|
-
border-top: 1px solid var(--star-ui-input-border-color);
|
|
255
|
-
line-height: 1.5;
|
|
256
|
-
}
|
|
257
|
-
.star-ui-view-control.star-ui-view-control-mobile .star-ui-select--option-sel{
|
|
258
|
-
background: initial;
|
|
259
|
-
color: var(--star-ui-base-color);
|
|
260
|
-
border-left: 5px solid var(--star-ui-base-color);
|
|
261
|
-
}
|
|
262
|
-
.star-ui-view-control-mobile .star-ui-select--pooper-item-list.star-ui-size-medium{
|
|
263
|
-
max-height: 50vh;
|
|
264
|
-
}
|
|
265
|
-
</style>
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div :class="['star-ui','su-slider','star-ui-size-'+size,{'su-slider-moving':isHover}]">
|
|
3
|
-
<div ref="bar" class="su-slider--inner-runway" @click="handleBarClick">
|
|
4
|
-
<div class="su-slider--inner-button-wrapper" :style="{left:positionLeft+'%'}" @mousedown="handleMouseDown" @touchstart="handleTouchStart"></div>
|
|
5
|
-
</div>
|
|
6
|
-
</div>
|
|
7
|
-
</template>
|
|
8
|
-
|
|
9
|
-
<script lang="ts">
|
|
10
|
-
import { Vue } from 'vue-class-component';
|
|
11
|
-
import { Register, Prop, Emit } from "@ui-root/reg";
|
|
12
|
-
import "../global-style.css";
|
|
13
|
-
|
|
14
|
-
@Register({
|
|
15
|
-
name:"su-slider"
|
|
16
|
-
})
|
|
17
|
-
export default class SuSlider extends Vue {
|
|
18
|
-
declare $refs:{
|
|
19
|
-
bar:HTMLDivElement
|
|
20
|
-
};
|
|
21
|
-
private refBar:HTMLDivElement|null=null;
|
|
22
|
-
|
|
23
|
-
mounted():void{
|
|
24
|
-
this.refBar=this.$refs.bar;
|
|
25
|
-
}
|
|
26
|
-
beforeUnmount():void{
|
|
27
|
-
this.removeEvent;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
@Prop({
|
|
31
|
-
type:String,
|
|
32
|
-
default:"medium"
|
|
33
|
-
})
|
|
34
|
-
public readonly size!:string;
|
|
35
|
-
|
|
36
|
-
@Prop({
|
|
37
|
-
type:Number,
|
|
38
|
-
default:0
|
|
39
|
-
})
|
|
40
|
-
readonly modelValue!:number;
|
|
41
|
-
|
|
42
|
-
@Prop({
|
|
43
|
-
type:Number,
|
|
44
|
-
default:0
|
|
45
|
-
})
|
|
46
|
-
public readonly min!:number;
|
|
47
|
-
|
|
48
|
-
@Prop({
|
|
49
|
-
type:Number,
|
|
50
|
-
default:100
|
|
51
|
-
})
|
|
52
|
-
public readonly max!:number;
|
|
53
|
-
|
|
54
|
-
@Prop({
|
|
55
|
-
type:Number,
|
|
56
|
-
default:0
|
|
57
|
-
})
|
|
58
|
-
public readonly setp!:number;
|
|
59
|
-
|
|
60
|
-
private moveStartValue=0;
|
|
61
|
-
private get displayValue():number{
|
|
62
|
-
let res=this.modelValue;
|
|
63
|
-
if(this.refBar && this.dx){
|
|
64
|
-
res=this.moveStartValue+this.dx/this.refBar.clientWidth*(this.max-this.min);
|
|
65
|
-
}
|
|
66
|
-
if(this.setp&&this.setp>0){
|
|
67
|
-
res= Math.round((res-this.min)/this.setp)*this.setp;
|
|
68
|
-
}
|
|
69
|
-
if(res>this.max) res=this.max;
|
|
70
|
-
else if(res<this.min) res=this.min;
|
|
71
|
-
return res;
|
|
72
|
-
}
|
|
73
|
-
private get positionLeft():number{
|
|
74
|
-
return (this.displayValue-this.min)*100/(this.max-this.min);
|
|
75
|
-
}
|
|
76
|
-
@Emit("update:modelValue")
|
|
77
|
-
private updateEvent(value:number):number{
|
|
78
|
-
return value;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
private handleBarClick(ev:MouseEvent){
|
|
82
|
-
if(ev.target&&ev.target==this.refBar){
|
|
83
|
-
let res=this.min+ev.offsetX/this.refBar.clientWidth*(this.max-this.min);
|
|
84
|
-
if(this.setp&&this.setp>0){
|
|
85
|
-
res=Math.round((res-this.min)/this.setp)*this.setp;
|
|
86
|
-
}
|
|
87
|
-
this.updateEvent(res);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
private dx=0;
|
|
92
|
-
private isHover=false;
|
|
93
|
-
|
|
94
|
-
private handleMouseDown():void{
|
|
95
|
-
window.addEventListener("mousemove",this.handleMouseMove);
|
|
96
|
-
window.addEventListener("mouseup",this.handleMouseUp);
|
|
97
|
-
window.addEventListener("blur",this.handleMouseUp);
|
|
98
|
-
this.moveStartValue=this.modelValue;
|
|
99
|
-
this.isHover=true;
|
|
100
|
-
}
|
|
101
|
-
private touchstartPoint:Touch|null=null;
|
|
102
|
-
private handleTouchStart(ev:TouchEvent):void{
|
|
103
|
-
window.addEventListener("touchmove",this.handleTouchMove,{ passive: false });
|
|
104
|
-
window.addEventListener("touchend",this.handleMouseUp,{ passive: false });
|
|
105
|
-
window.addEventListener("blur",this.handleMouseUp);
|
|
106
|
-
this.touchstartPoint=ev.changedTouches[0];
|
|
107
|
-
this.moveStartValue=this.modelValue;
|
|
108
|
-
this.isHover=true;
|
|
109
|
-
}
|
|
110
|
-
private removeEvent():void{
|
|
111
|
-
window.removeEventListener("mousemove",this.handleMouseMove);
|
|
112
|
-
window.removeEventListener("mouseup",this.handleMouseUp);
|
|
113
|
-
window.removeEventListener("touchmove",this.handleTouchMove);
|
|
114
|
-
window.removeEventListener("touchend",this.handleMouseUp);
|
|
115
|
-
window.removeEventListener("blur",this.handleMouseUp);
|
|
116
|
-
}
|
|
117
|
-
private handleMouseMove(ev:MouseEvent):void{
|
|
118
|
-
this.dx+=ev.movementX;
|
|
119
|
-
this.updateEvent(this.displayValue);
|
|
120
|
-
}
|
|
121
|
-
private handleTouchMove(ev:TouchEvent):void{
|
|
122
|
-
if(!this.touchstartPoint) return;
|
|
123
|
-
ev.preventDefault();
|
|
124
|
-
for(let i=0;i<ev.changedTouches.length;i++){
|
|
125
|
-
if(ev.changedTouches[i].identifier==this.touchstartPoint.identifier){
|
|
126
|
-
this.dx=ev.changedTouches[i].pageX-this.touchstartPoint.pageX;
|
|
127
|
-
this.updateEvent(this.displayValue);
|
|
128
|
-
break;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
// this.dx+=ev.movementX;
|
|
132
|
-
}
|
|
133
|
-
private handleMouseUp():void{
|
|
134
|
-
this.updateEvent(this.displayValue);
|
|
135
|
-
this.dx=0;
|
|
136
|
-
this.removeEvent();
|
|
137
|
-
this.isHover=false;
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
</script>
|
|
142
|
-
|
|
143
|
-
<style>
|
|
144
|
-
.su-slider{
|
|
145
|
-
padding: calc(var(--star-ui-input-medium-font-size) );
|
|
146
|
-
user-select: none;
|
|
147
|
-
}
|
|
148
|
-
.su-slider--inner-runway{
|
|
149
|
-
height: 4px;
|
|
150
|
-
background-color: var(--star-ui-input-border-color);
|
|
151
|
-
cursor: pointer;
|
|
152
|
-
}
|
|
153
|
-
.su-slider--inner-button-wrapper{
|
|
154
|
-
width: var(--star-ui-input-medium-font-size);
|
|
155
|
-
height: var(--star-ui-input-medium-font-size);
|
|
156
|
-
border-radius: 50%;
|
|
157
|
-
border: 1px solid var(--star-ui-base-color);
|
|
158
|
-
display: inline-block;
|
|
159
|
-
position: relative;
|
|
160
|
-
margin-left: calc(2px - var(--star-ui-input-medium-font-size) / 2);
|
|
161
|
-
top: calc(2px - var(--star-ui-input-medium-font-size) / 2);
|
|
162
|
-
cursor: pointer;
|
|
163
|
-
background-color: var(--star-ui-backgorund-color);
|
|
164
|
-
background-image: radial-gradient(var(--star-ui-backgorund-color) 20%, var(--star-ui-base-color));
|
|
165
|
-
}
|
|
166
|
-
.su-slider .su-slider--inner-button-wrapper:hover,.su-slider.su-slider-moving .su-slider--inner-button-wrapper{
|
|
167
|
-
/*background-color: var(--star-ui-base-color);*/
|
|
168
|
-
background-image: radial-gradient(var(--star-ui-backgorund-color) 10%, var(--star-ui-base-color) 90%);
|
|
169
|
-
transform: scale(1.2,1.2);
|
|
170
|
-
}
|
|
171
|
-
</style>
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div :class="['star-ui', 'su-switch','star-ui-switch','star-ui-size-'+size]">
|
|
3
|
-
<label>
|
|
4
|
-
<input ref="input" type="checkbox" :name="name" :checked="modelValue" @change="handeleChange"/>
|
|
5
|
-
<div><span></span></div>
|
|
6
|
-
</label>
|
|
7
|
-
</div>
|
|
8
|
-
</template>
|
|
9
|
-
|
|
10
|
-
<script lang="ts">
|
|
11
|
-
import { Vue } from 'vue-class-component';
|
|
12
|
-
import { Watch } from "vue-property-decorator";
|
|
13
|
-
import { Register, Prop, Emit } from "@ui-root/reg";
|
|
14
|
-
import "../global-style.css";
|
|
15
|
-
|
|
16
|
-
@Register({
|
|
17
|
-
name:"su-switch"
|
|
18
|
-
})
|
|
19
|
-
export default class SuInput extends Vue {
|
|
20
|
-
declare $refs:{
|
|
21
|
-
input:HTMLInputElement
|
|
22
|
-
};
|
|
23
|
-
@Prop({
|
|
24
|
-
type:Boolean,
|
|
25
|
-
default:true
|
|
26
|
-
})
|
|
27
|
-
modelValue!:boolean;
|
|
28
|
-
@Prop({
|
|
29
|
-
type:String,
|
|
30
|
-
default:""
|
|
31
|
-
})
|
|
32
|
-
name!:string;
|
|
33
|
-
@Prop({
|
|
34
|
-
type:String,
|
|
35
|
-
default:"medium"
|
|
36
|
-
})
|
|
37
|
-
size!:string;
|
|
38
|
-
@Emit("update:modelValue")
|
|
39
|
-
private handeleChange():boolean{
|
|
40
|
-
const nowChecked = this.$refs.input.checked;
|
|
41
|
-
this.$refs.input.checked = this.modelValue;
|
|
42
|
-
return nowChecked;
|
|
43
|
-
}
|
|
44
|
-
@Watch("modelValue")
|
|
45
|
-
private modelValueChange(newValue:boolean){
|
|
46
|
-
this.$refs.input.checked = newValue;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
</script>
|
|
50
|
-
|
|
51
|
-
<style>
|
|
52
|
-
.star-ui-switch{
|
|
53
|
-
--size: 20px;
|
|
54
|
-
display: inline-block;
|
|
55
|
-
}
|
|
56
|
-
.star-ui-switch.star-ui-size-medium{
|
|
57
|
-
--size: calc(var(--star-ui-input-medium-font-size) * 1.2);
|
|
58
|
-
}
|
|
59
|
-
.star-ui-switch.star-ui-size-mini{
|
|
60
|
-
--size: calc(var(--star-ui-input-mini-font-size) * 1.2);
|
|
61
|
-
}
|
|
62
|
-
.star-ui-switch input{
|
|
63
|
-
display: none;
|
|
64
|
-
}
|
|
65
|
-
.star-ui-switch div{
|
|
66
|
-
width: calc(var(--size) * 2.5);
|
|
67
|
-
height: var(--size);
|
|
68
|
-
border: solid 1px var(--star-ui-base-color);
|
|
69
|
-
border-radius: var(--size);
|
|
70
|
-
overflow: hidden;
|
|
71
|
-
}
|
|
72
|
-
.star-ui-switch div span{
|
|
73
|
-
display: inline-block;
|
|
74
|
-
width: calc(var(--size) - 2px);
|
|
75
|
-
height: calc(var(--size) - 2px);
|
|
76
|
-
border-radius: 50%;
|
|
77
|
-
border: solid 1px var(--star-ui-base-color);
|
|
78
|
-
position: relative;
|
|
79
|
-
background: var(--star-ui-backgorund-color);
|
|
80
|
-
transition: margin-left 0.1s;
|
|
81
|
-
}
|
|
82
|
-
.star-ui-switch div span::before{
|
|
83
|
-
content: "";
|
|
84
|
-
width: 100px;
|
|
85
|
-
height: 100px;
|
|
86
|
-
background: var(--star-ui-base-color);
|
|
87
|
-
position: absolute;
|
|
88
|
-
right: 50%;
|
|
89
|
-
top:-20px;
|
|
90
|
-
z-index: -1;
|
|
91
|
-
}
|
|
92
|
-
.star-ui-switch input:checked+div span{
|
|
93
|
-
margin-left: calc(var(--size) * 1.5);
|
|
94
|
-
}
|
|
95
|
-
</style>
|
package/src/components/table.vue
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="star-ui su-table star-ui-table">
|
|
3
|
-
<table class="star-ui star-ui-table--inner" rules="none" frame="void">
|
|
4
|
-
<thead class="star-ui star-ui-table--inner-thead">
|
|
5
|
-
<tr class="star-ui star-ui-table--inner-tr">
|
|
6
|
-
<th v-for="item in columns" :key="item.name+item.key" class="star-ui star-ui-container star-ui-table--inner-th">{{item.name}}</th>
|
|
7
|
-
</tr>
|
|
8
|
-
</thead>
|
|
9
|
-
<tbody class="star-ui star-ui-table--inner-tbody">
|
|
10
|
-
<tr v-for="(row,index) in data" :key="index" class="star-ui star-ui-table--inner-tr">
|
|
11
|
-
<td v-for="item in columns" :key="item.name+item.key" class="star-ui star-ui-container star-ui-table--inner-td">{{row[item.field]}}</td>
|
|
12
|
-
</tr>
|
|
13
|
-
<slot></slot>
|
|
14
|
-
</tbody>
|
|
15
|
-
</table>
|
|
16
|
-
</div>
|
|
17
|
-
</template>
|
|
18
|
-
|
|
19
|
-
<script lang="ts">
|
|
20
|
-
import { Vue } from 'vue-class-component';
|
|
21
|
-
import { Register, Prop } from "@ui-root/reg";
|
|
22
|
-
import "../global-style.css";
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
@Register({
|
|
26
|
-
name:"su-table",
|
|
27
|
-
props: {
|
|
28
|
-
data:{
|
|
29
|
-
type:Array,
|
|
30
|
-
default:()=>[]
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
})
|
|
34
|
-
export default class SuTable extends Vue {
|
|
35
|
-
// @Prop({
|
|
36
|
-
// type:Array,
|
|
37
|
-
// default:()=>[]
|
|
38
|
-
// })
|
|
39
|
-
// data!:any[];
|
|
40
|
-
@Prop({
|
|
41
|
-
type:Array,
|
|
42
|
-
default:()=>[]
|
|
43
|
-
})
|
|
44
|
-
// eslint-disable-next-line
|
|
45
|
-
columns!:any[];
|
|
46
|
-
}
|
|
47
|
-
</script>
|
|
48
|
-
|
|
49
|
-
<style>
|
|
50
|
-
.star-ui-tabl{
|
|
51
|
-
width: 100%;
|
|
52
|
-
}
|
|
53
|
-
.star-ui-table--inner-thead{
|
|
54
|
-
background-color: var(--star-ui-table-head-color);
|
|
55
|
-
}
|
|
56
|
-
.star-ui-table--inner-tr{
|
|
57
|
-
border-bottom: 1px solid #e8eaec;
|
|
58
|
-
}
|
|
59
|
-
</style>
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div :class="[
|
|
3
|
-
'star-ui',
|
|
4
|
-
'su-tree',
|
|
5
|
-
'star-ui-tree',
|
|
6
|
-
{
|
|
7
|
-
'star-ui-tree-highlight-current':highlightCurrent
|
|
8
|
-
}
|
|
9
|
-
]">
|
|
10
|
-
<tree-item v-for="(item, index) in treeData" :key="index" :size="size" :item="item" :label="label" :value="value" :children="children" :current="current" current-value="currentValue" @node-click="haandleChildNodeClick"></tree-item>
|
|
11
|
-
</div>
|
|
12
|
-
</template>
|
|
13
|
-
|
|
14
|
-
<script lang="ts">
|
|
15
|
-
import { Vue } from 'vue-class-component';
|
|
16
|
-
import { Register, Prop } from "@ui-root/reg";
|
|
17
|
-
import treeItem from "./tree-item.vue"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
import "../../global-style.css";
|
|
21
|
-
|
|
22
|
-
@Register({
|
|
23
|
-
name:"su-tree",
|
|
24
|
-
components:{
|
|
25
|
-
treeItem
|
|
26
|
-
}
|
|
27
|
-
})
|
|
28
|
-
export default class SuTree extends Vue {
|
|
29
|
-
@Prop({
|
|
30
|
-
type:String,
|
|
31
|
-
default:()=>{
|
|
32
|
-
return "medium"
|
|
33
|
-
}
|
|
34
|
-
})
|
|
35
|
-
readonly size!:string;
|
|
36
|
-
@Prop({
|
|
37
|
-
type:Array,
|
|
38
|
-
default:()=>{
|
|
39
|
-
return []
|
|
40
|
-
}
|
|
41
|
-
})
|
|
42
|
-
readonly treeData!:Record<string, unknown>[];
|
|
43
|
-
@Prop({
|
|
44
|
-
type:[String,Function],
|
|
45
|
-
default:()=>{
|
|
46
|
-
return "label"
|
|
47
|
-
}
|
|
48
|
-
})
|
|
49
|
-
readonly label!:string|((item:Record<string, unknown>)=>string);
|
|
50
|
-
@Prop({
|
|
51
|
-
type:[String,Function],
|
|
52
|
-
default:()=>{
|
|
53
|
-
return "value"
|
|
54
|
-
}
|
|
55
|
-
})
|
|
56
|
-
readonly value!:string|((item:Record<string, unknown>)=>string|number);
|
|
57
|
-
@Prop({
|
|
58
|
-
type:[String,Function],
|
|
59
|
-
default:()=>{
|
|
60
|
-
return "children"
|
|
61
|
-
}
|
|
62
|
-
})
|
|
63
|
-
readonly children!:string|((item:Record<string, unknown>)=>Record<string, unknown>[]);
|
|
64
|
-
@Prop({
|
|
65
|
-
type:Boolean,
|
|
66
|
-
default:()=>{
|
|
67
|
-
return false
|
|
68
|
-
}
|
|
69
|
-
})
|
|
70
|
-
readonly highlightCurrent!:boolean;
|
|
71
|
-
|
|
72
|
-
private current:Record<string, unknown>={};
|
|
73
|
-
private get currentValue():string|number|undefined{
|
|
74
|
-
if(typeof this.value == "string"){
|
|
75
|
-
return (this.current[this.value]) as string|number|undefined;
|
|
76
|
-
}
|
|
77
|
-
return this.value(this.current);
|
|
78
|
-
}
|
|
79
|
-
public setCurrent(current:Record<string, unknown>):void{
|
|
80
|
-
this.current=current;
|
|
81
|
-
}
|
|
82
|
-
public setCurrentByValue(value:string|number):Record<string, unknown>|null{
|
|
83
|
-
let task:Record<string, unknown>[] = [];
|
|
84
|
-
task.push(...this.treeData);
|
|
85
|
-
while(task.length){
|
|
86
|
-
const item = task.pop() as Record<string, unknown>;
|
|
87
|
-
let itemValue:string|number|undefined;
|
|
88
|
-
if(typeof this.value == "string"){
|
|
89
|
-
itemValue = (item[this.value]) as string|number|undefined;
|
|
90
|
-
}else{
|
|
91
|
-
itemValue = this.value(item);
|
|
92
|
-
}
|
|
93
|
-
if(value == itemValue){
|
|
94
|
-
this.current = item;
|
|
95
|
-
return item;
|
|
96
|
-
}
|
|
97
|
-
let children:Record<string, unknown>[]|undefined;
|
|
98
|
-
if(typeof this.children == "string"){
|
|
99
|
-
children = (item[this.children]) as Record<string, unknown>[]|undefined;
|
|
100
|
-
}else{
|
|
101
|
-
children = this.children(item);
|
|
102
|
-
}
|
|
103
|
-
children&&task.push(...children);
|
|
104
|
-
}
|
|
105
|
-
this.current={};
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
haandleChildNodeClick(item:Record<string, unknown>,value:string|number|undefined,node:Record<string, unknown>):void{
|
|
109
|
-
this.current=item;
|
|
110
|
-
this.$emit("node-click",item,value,node);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
</script>
|
|
114
|
-
|
|
115
|
-
<style>
|
|
116
|
-
</style>
|