sard-uniapp 1.24.0 → 1.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/components/checkbox-input/checkbox-input.d.ts +1 -0
- package/components/checkbox-input/checkbox-input.vue +3 -0
- package/components/checkbox-input/common.d.ts +1 -0
- package/components/checkbox-popout/README.md +11 -10
- package/components/checkbox-popout/checkbox-popout.d.ts +1 -0
- package/components/checkbox-popout/checkbox-popout.vue +11 -1
- package/components/checkbox-popout/common.d.ts +2 -0
- package/components/config/index.d.ts +4 -0
- package/components/config/index.js +3 -0
- package/components/form/README.md +38 -36
- package/components/form/common.d.ts +3 -0
- package/components/form/form.d.ts +1 -0
- package/components/form/form.vue +2 -0
- package/components/form/useForm.js +1 -0
- package/components/form-item/form-item.vue +12 -3
- package/components/form-item/index.scss +4 -2
- package/components/form-item/useFormItem.d.ts +1 -0
- package/components/form-item/useFormItem.js +2 -0
- package/components/form-item-plain/form-item-plain.vue +2 -0
- package/components/form-plain/form-plain.d.ts +1 -0
- package/components/form-plain/form-plain.vue +2 -0
- package/components/input/README.md +48 -47
- package/components/input/input.vue +1 -0
- package/components/keyboard/README.md +12 -11
- package/components/keyboard/common.d.ts +1 -0
- package/components/keyboard/index.d.ts +1 -1
- package/components/keyboard/keyboard.d.ts +2 -0
- package/components/keyboard/keyboard.vue +20 -12
- package/components/locale/lang/ar-SA.d.ts +124 -0
- package/components/locale/lang/ar-SA.js +124 -0
- package/components/popout-input/index.scss +5 -0
- package/components/popout-input/popout-input.vue +11 -2
- package/components/popout-input/variables.scss +1 -0
- package/components/radio-input/common.d.ts +1 -0
- package/components/radio-input/radio-input.d.ts +1 -0
- package/components/radio-input/radio-input.vue +3 -0
- package/components/radio-popout/README.md +10 -9
- package/components/radio-popout/common.d.ts +2 -0
- package/components/radio-popout/radio-popout.d.ts +1 -0
- package/components/radio-popout/radio-popout.vue +10 -1
- package/components/rate/index.scss +2 -3
- package/components/stepper/index.scss +2 -3
- package/components/switch/index.scss +8 -4
- package/components/tree/README.md +1 -0
- package/components/tree/common.d.ts +5 -0
- package/components/tree/tree.d.ts +8 -0
- package/components/tree/tree.vue +11 -3
- package/components/tree-node/tree-node.vue +2 -1
- package/package.json +1 -1
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
:searchable="searchable"
|
|
33
33
|
:filter-placeholder="filterPlaceholder"
|
|
34
34
|
:resettable="resettable"
|
|
35
|
+
:icon-position="iconPosition"
|
|
35
36
|
@change="onChange"
|
|
36
37
|
@visible-hook="onVisibleHook"
|
|
37
38
|
@confirm="onConfirm"
|
|
@@ -70,6 +71,7 @@ import { usePopoutInput } from "../../use";
|
|
|
70
71
|
* @property {boolean} searchable 是否可搜索,默认值:false。
|
|
71
72
|
* @property {string} filterPlaceholder 搜索输入框占位符内容,默认值:-。
|
|
72
73
|
* @property {boolean} resettable 关闭弹出框后,是否可复位弹出框值,默认值:false。
|
|
74
|
+
* @property {'left' | 'right'} iconPosition 可定义单选按钮的位置,默认值:'left'。
|
|
73
75
|
* @property {boolean} clearable 是否显示清空按钮,默认值:false。
|
|
74
76
|
* @property {string} placeholder 输入框占位符内容,默认值:-。
|
|
75
77
|
* @property {() => any} valueOnClear 设置点击清除按钮后的值,默认值:() => undefined。
|
|
@@ -110,6 +112,7 @@ export default _defineComponent({
|
|
|
110
112
|
searchable: { type: Boolean, required: false },
|
|
111
113
|
filterPlaceholder: { type: String, required: false },
|
|
112
114
|
resettable: { type: Boolean, required: false },
|
|
115
|
+
iconPosition: { type: String, required: false },
|
|
113
116
|
rootStyle: { type: [Boolean, null, String, Object, Array], required: false, skipCheck: true },
|
|
114
117
|
rootClass: { type: String, required: false },
|
|
115
118
|
modelValue: { type: null, required: false },
|
|
@@ -42,15 +42,16 @@ import RadioPopout from 'sard-uniapp/components/radio-popout/radio-popout.vue'
|
|
|
42
42
|
|
|
43
43
|
继承 [`RadioGroupProps`](./radio#RadioGroupProps) 并有以下额外属性:
|
|
44
44
|
|
|
45
|
-
| 属性 | 描述 | 类型
|
|
46
|
-
| ----------------------------------- | -------------------------------- |
|
|
47
|
-
| popout-class | 弹窗框根元素类名 | string
|
|
48
|
-
| popout-style | 弹窗框根元素样式 | StyleValue
|
|
49
|
-
| visible (v-model) | 是否显示弹出框 | boolean
|
|
50
|
-
| title | 弹出框标题 | string
|
|
51
|
-
| searchable <sup>1.20+</sup> | 是否可搜索 | boolean
|
|
52
|
-
| filter-placeholder <sup>1.20+</sup> | 搜索输入框占位符内容 | string
|
|
53
|
-
| resettable <sup>1.23.3+</sup> | 关闭弹出框后,是否可复位弹出框值 | boolean
|
|
45
|
+
| 属性 | 描述 | 类型 | 默认值 |
|
|
46
|
+
| ----------------------------------- | -------------------------------- | ----------------- | ------ |
|
|
47
|
+
| popout-class | 弹窗框根元素类名 | string | - |
|
|
48
|
+
| popout-style | 弹窗框根元素样式 | StyleValue | - |
|
|
49
|
+
| visible (v-model) | 是否显示弹出框 | boolean | - |
|
|
50
|
+
| title | 弹出框标题 | string | - |
|
|
51
|
+
| searchable <sup>1.20+</sup> | 是否可搜索 | boolean | false |
|
|
52
|
+
| filter-placeholder <sup>1.20+</sup> | 搜索输入框占位符内容 | string | - |
|
|
53
|
+
| resettable <sup>1.23.3+</sup> | 关闭弹出框后,是否可复位弹出框值 | boolean | false |
|
|
54
|
+
| icon-position <sup>1.24.1+</sup> | 可定义单选按钮的位置 | 'left' \| 'right' | 'left' |
|
|
54
55
|
|
|
55
56
|
### RadioPopoutEmits
|
|
56
57
|
|
|
@@ -9,11 +9,13 @@ export interface RadioPopoutProps extends RadioGroupProps {
|
|
|
9
9
|
searchable?: boolean;
|
|
10
10
|
filterPlaceholder?: string;
|
|
11
11
|
resettable?: boolean;
|
|
12
|
+
iconPosition?: 'left' | 'right';
|
|
12
13
|
}
|
|
13
14
|
export declare const defaultRadioPopoutProps: () => {
|
|
14
15
|
options: () => never[];
|
|
15
16
|
validateEvent: boolean;
|
|
16
17
|
type: RadioPopoutProps["type"];
|
|
18
|
+
iconPosition: RadioPopoutProps["iconPosition"];
|
|
17
19
|
};
|
|
18
20
|
export interface RadioPopoutSlots {
|
|
19
21
|
default?(props: Record<string, never>): any;
|
|
@@ -9,6 +9,7 @@ declare const __VLS_component: import("vue").DefineComponent<RadioPopoutProps, {
|
|
|
9
9
|
}>, {
|
|
10
10
|
options: import("../radio/common").RadioGroupOption[];
|
|
11
11
|
type: import("../radio/common").IconType;
|
|
12
|
+
iconPosition: "left" | "right";
|
|
12
13
|
validateEvent: boolean;
|
|
13
14
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
14
15
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
|
|
@@ -50,7 +50,14 @@
|
|
|
50
50
|
:hover="!option.disabled"
|
|
51
51
|
@click="select(option, toggle)"
|
|
52
52
|
>
|
|
53
|
-
<template #icon>
|
|
53
|
+
<template v-if="iconPosition === 'left'" #icon>
|
|
54
|
+
<sar-radio
|
|
55
|
+
readonly
|
|
56
|
+
:disabled="option.disabled"
|
|
57
|
+
:value="option.value"
|
|
58
|
+
/>
|
|
59
|
+
</template>
|
|
60
|
+
<template v-if="iconPosition === 'right'" #value>
|
|
54
61
|
<sar-radio
|
|
55
62
|
readonly
|
|
56
63
|
:disabled="option.disabled"
|
|
@@ -104,6 +111,7 @@ import { useScrollSide, useFormPopout } from "../../use";
|
|
|
104
111
|
* @property {boolean} searchable 是否可搜索,默认值:false。
|
|
105
112
|
* @property {string} filterPlaceholder 搜索输入框占位符内容,默认值:-。
|
|
106
113
|
* @property {boolean} resettable 关闭弹出框后,是否可复位弹出框值,默认值:false。
|
|
114
|
+
* @property {'left' | 'right'} iconPosition 可定义单选按钮的位置,默认值:'left'。
|
|
107
115
|
* @event {(visible: boolean) => void} update 弹出框显隐时触发
|
|
108
116
|
* @event {(value: any | undefined) => void} change 单选输入组件值改变时触发
|
|
109
117
|
* @event {() => void} confirm 点击确定按钮时触发
|
|
@@ -142,6 +150,7 @@ export default _defineComponent({
|
|
|
142
150
|
searchable: { type: Boolean, required: false },
|
|
143
151
|
filterPlaceholder: { type: String, required: false },
|
|
144
152
|
resettable: { type: Boolean, required: false },
|
|
153
|
+
iconPosition: { type: String, required: false },
|
|
145
154
|
rootStyle: { type: [Boolean, null, String, Object, Array], required: false, skipCheck: true },
|
|
146
155
|
rootClass: { type: String, required: false },
|
|
147
156
|
modelValue: { type: null, required: false },
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
@include bem(stepper) {
|
|
4
4
|
@include b() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
justify-content: flex-start;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
display: inline-flex;
|
|
8
7
|
align-items: stretch;
|
|
9
8
|
gap: var(--sar-stepper-gap);
|
|
10
9
|
height: var(--sar-stepper-height);
|
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
@include bem(switch) {
|
|
4
4
|
@include b() {
|
|
5
|
-
|
|
5
|
+
position: relative;
|
|
6
|
+
box-sizing: border-box;
|
|
7
|
+
display: inline-flex;
|
|
6
8
|
width: var(--sar-switch-width);
|
|
7
9
|
height: var(--sar-switch-height);
|
|
8
10
|
border-radius: var(--sar-rounded-full);
|
|
9
11
|
font-size: var(--sar-switch-font-size);
|
|
10
12
|
background-color: var(--sar-switch-bg);
|
|
11
13
|
cursor: pointer;
|
|
12
|
-
transition:
|
|
14
|
+
transition:
|
|
15
|
+
background-color var(--sar-switch-transition-duration),
|
|
13
16
|
opacity var(--sar-switch-transition-duration);
|
|
14
17
|
|
|
15
18
|
@include m(checked) {
|
|
@@ -51,8 +54,9 @@
|
|
|
51
54
|
@include e(thumb) {
|
|
52
55
|
transform: translateX(
|
|
53
56
|
calc(
|
|
54
|
-
var(--sar-switch-width) - var(--sar-switch-thumb-width) -
|
|
55
|
-
|
|
57
|
+
var(--sar-switch-width) - var(--sar-switch-thumb-width) - var(
|
|
58
|
+
--sar-switch-thumb-gap
|
|
59
|
+
)
|
|
56
60
|
)
|
|
57
61
|
);
|
|
58
62
|
}
|
|
@@ -126,6 +126,7 @@ import Tree from 'sard-uniapp/components/tree/tree.vue'
|
|
|
126
126
|
| update:current <sup>1.17+</sup> | 选择节点后触发(单选) | (key: string \| number, node: TreeStateNode) => void |
|
|
127
127
|
| select <sup>1.17+</sup> | 选择节点后触发(单选) | (key: string \| number, node: TreeStateNode) => void |
|
|
128
128
|
| check <sup>1.24+</sup> | 点击树节点复选框时触发 | (event: {checked: boolean; node: TreeStateNode}) => void |
|
|
129
|
+
| node-click <sup>1.24.1+</sup> | 点击树节点时触发 | (event: {event: any; node: TreeStateNode}) => void |
|
|
129
130
|
|
|
130
131
|
### TreeExpose
|
|
131
132
|
|
|
@@ -67,6 +67,10 @@ export interface TreeEmits {
|
|
|
67
67
|
checked: boolean;
|
|
68
68
|
node: TreeStateNode;
|
|
69
69
|
}): void;
|
|
70
|
+
(e: 'node-click', event: {
|
|
71
|
+
event: any;
|
|
72
|
+
node: TreeStateNode;
|
|
73
|
+
}): void;
|
|
70
74
|
}
|
|
71
75
|
export interface TreeExpose {
|
|
72
76
|
setExpanded: (key: string | number, expanded: boolean) => void;
|
|
@@ -104,5 +108,6 @@ export interface TreeContext {
|
|
|
104
108
|
drop: (dropOriginNode: TreeStateNode, dropTargetNode: TreeStateNode, position: number) => void;
|
|
105
109
|
currentKey: string | number | undefined;
|
|
106
110
|
singleSelect: (node: TreeStateNode) => void;
|
|
111
|
+
nodeClick: (node: TreeStateNode, event: any) => void;
|
|
107
112
|
}
|
|
108
113
|
export declare const treeContextSymbol: unique symbol;
|
|
@@ -18,6 +18,10 @@ declare const _default: import("vue").DefineComponent<TreeProps, {
|
|
|
18
18
|
checked: boolean;
|
|
19
19
|
node: TreeStateNode;
|
|
20
20
|
}) => any;
|
|
21
|
+
"node-click": (event: {
|
|
22
|
+
event: any;
|
|
23
|
+
node: TreeStateNode;
|
|
24
|
+
}) => any;
|
|
21
25
|
}, string, import("vue").PublicProps, Readonly<TreeProps> & Readonly<{
|
|
22
26
|
onSelect?: ((key: string | number, node: TreeStateNode) => any) | undefined;
|
|
23
27
|
"onUpdate:current"?: ((key: string | number, node: TreeStateNode) => any) | undefined;
|
|
@@ -25,6 +29,10 @@ declare const _default: import("vue").DefineComponent<TreeProps, {
|
|
|
25
29
|
checked: boolean;
|
|
26
30
|
node: TreeStateNode;
|
|
27
31
|
}) => any) | undefined;
|
|
32
|
+
"onNode-click"?: ((event: {
|
|
33
|
+
event: any;
|
|
34
|
+
node: TreeStateNode;
|
|
35
|
+
}) => any) | undefined;
|
|
28
36
|
}>, {
|
|
29
37
|
data: TreeNode[];
|
|
30
38
|
accordion: boolean;
|
package/components/tree/tree.vue
CHANGED
|
@@ -76,6 +76,7 @@ import { recurAncestor, recurDescendant, recurNodes } from "./utils";
|
|
|
76
76
|
* @event {(key: string | number, node: TreeStateNode) => void} update 选择节点后触发(单选)
|
|
77
77
|
* @event {(key: string | number, node: TreeStateNode) => void} select 选择节点后触发(单选)
|
|
78
78
|
* @event {(event: {checked: boolean; node: TreeStateNode}) => void} check 点击树节点复选框时触发
|
|
79
|
+
* @event {(event: {event: any; node: TreeStateNode}) => void} node-click 点击树节点时触发
|
|
79
80
|
*/
|
|
80
81
|
export default _defineComponent({
|
|
81
82
|
components: {
|
|
@@ -111,7 +112,7 @@ export default _defineComponent({
|
|
|
111
112
|
filterMode: { type: String, required: false },
|
|
112
113
|
filterMethod: { type: Function, required: false }
|
|
113
114
|
}, defaultTreeProps()),
|
|
114
|
-
emits: ["update:current", "select", "check"],
|
|
115
|
+
emits: ["update:current", "select", "check", "node-click"],
|
|
115
116
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
116
117
|
const props = __props;
|
|
117
118
|
const emit = __emit;
|
|
@@ -554,6 +555,12 @@ export default _defineComponent({
|
|
|
554
555
|
emit("select", node.key, node);
|
|
555
556
|
}
|
|
556
557
|
};
|
|
558
|
+
const nodeClick = (node, event) => {
|
|
559
|
+
emit("node-click", {
|
|
560
|
+
node,
|
|
561
|
+
event
|
|
562
|
+
});
|
|
563
|
+
};
|
|
557
564
|
const context = reactive({
|
|
558
565
|
selectable: toRef(() => props.selectable),
|
|
559
566
|
draggable: toRef(() => props.draggable),
|
|
@@ -570,7 +577,8 @@ export default _defineComponent({
|
|
|
570
577
|
toggleCheck,
|
|
571
578
|
edit,
|
|
572
579
|
currentKey,
|
|
573
|
-
singleSelect
|
|
580
|
+
singleSelect,
|
|
581
|
+
nodeClick
|
|
574
582
|
});
|
|
575
583
|
provide(treeContextSymbol, context);
|
|
576
584
|
__expose({
|
|
@@ -605,7 +613,7 @@ export default _defineComponent({
|
|
|
605
613
|
return currentEditNode;
|
|
606
614
|
}, set currentEditNode(v) {
|
|
607
615
|
currentEditNode = v;
|
|
608
|
-
}, currentEditType, currentEditValue, mapEditTypeTitle, currentEditTitle, dialogVisible, toastVisible, onPopoverSelect, beforeClose, edit, focused, onVisibleHook, defaultFilterMethod, filter, currentKey, singleSelect, context, treeClass, treeStyle, SarTreeNode, SarPopover, SarInput, SarDialog, SarToast };
|
|
616
|
+
}, currentEditType, currentEditValue, mapEditTypeTitle, currentEditTitle, dialogVisible, toastVisible, onPopoverSelect, beforeClose, edit, focused, onVisibleHook, defaultFilterMethod, filter, currentKey, singleSelect, nodeClick, context, treeClass, treeStyle, SarTreeNode, SarPopover, SarInput, SarDialog, SarToast };
|
|
609
617
|
return __returned__;
|
|
610
618
|
}
|
|
611
619
|
});
|
|
@@ -268,13 +268,14 @@ export default _defineComponent({
|
|
|
268
268
|
const isLeaf = computed(() => {
|
|
269
269
|
return !props.node.children || props.node.children.length === 0;
|
|
270
270
|
});
|
|
271
|
-
const onNodeClick = () => {
|
|
271
|
+
const onNodeClick = (event) => {
|
|
272
272
|
if (!isLeaf.value) {
|
|
273
273
|
treeContext.toggleExpandedByNode(props.node);
|
|
274
274
|
}
|
|
275
275
|
if (canSingleSelectable.value && treeContext.leafOnly) {
|
|
276
276
|
treeContext.singleSelect(props.node);
|
|
277
277
|
}
|
|
278
|
+
treeContext.nodeClick(props.node, event);
|
|
278
279
|
};
|
|
279
280
|
const nodeActive = ref(false);
|
|
280
281
|
const onNodeTouchStart = () => {
|