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.
Files changed (50) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/components/checkbox-input/checkbox-input.d.ts +1 -0
  3. package/components/checkbox-input/checkbox-input.vue +3 -0
  4. package/components/checkbox-input/common.d.ts +1 -0
  5. package/components/checkbox-popout/README.md +11 -10
  6. package/components/checkbox-popout/checkbox-popout.d.ts +1 -0
  7. package/components/checkbox-popout/checkbox-popout.vue +11 -1
  8. package/components/checkbox-popout/common.d.ts +2 -0
  9. package/components/config/index.d.ts +4 -0
  10. package/components/config/index.js +3 -0
  11. package/components/form/README.md +38 -36
  12. package/components/form/common.d.ts +3 -0
  13. package/components/form/form.d.ts +1 -0
  14. package/components/form/form.vue +2 -0
  15. package/components/form/useForm.js +1 -0
  16. package/components/form-item/form-item.vue +12 -3
  17. package/components/form-item/index.scss +4 -2
  18. package/components/form-item/useFormItem.d.ts +1 -0
  19. package/components/form-item/useFormItem.js +2 -0
  20. package/components/form-item-plain/form-item-plain.vue +2 -0
  21. package/components/form-plain/form-plain.d.ts +1 -0
  22. package/components/form-plain/form-plain.vue +2 -0
  23. package/components/input/README.md +48 -47
  24. package/components/input/input.vue +1 -0
  25. package/components/keyboard/README.md +12 -11
  26. package/components/keyboard/common.d.ts +1 -0
  27. package/components/keyboard/index.d.ts +1 -1
  28. package/components/keyboard/keyboard.d.ts +2 -0
  29. package/components/keyboard/keyboard.vue +20 -12
  30. package/components/locale/lang/ar-SA.d.ts +124 -0
  31. package/components/locale/lang/ar-SA.js +124 -0
  32. package/components/popout-input/index.scss +5 -0
  33. package/components/popout-input/popout-input.vue +11 -2
  34. package/components/popout-input/variables.scss +1 -0
  35. package/components/radio-input/common.d.ts +1 -0
  36. package/components/radio-input/radio-input.d.ts +1 -0
  37. package/components/radio-input/radio-input.vue +3 -0
  38. package/components/radio-popout/README.md +10 -9
  39. package/components/radio-popout/common.d.ts +2 -0
  40. package/components/radio-popout/radio-popout.d.ts +1 -0
  41. package/components/radio-popout/radio-popout.vue +10 -1
  42. package/components/rate/index.scss +2 -3
  43. package/components/stepper/index.scss +2 -3
  44. package/components/switch/index.scss +8 -4
  45. package/components/tree/README.md +1 -0
  46. package/components/tree/common.d.ts +5 -0
  47. package/components/tree/tree.d.ts +8 -0
  48. package/components/tree/tree.vue +11 -3
  49. package/components/tree-node/tree-node.vue +2 -1
  50. 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 | false |
52
- | filter-placeholder <sup>1.20+</sup> | 搜索输入框占位符内容 | string | - |
53
- | resettable <sup>1.23.3+</sup> | 关闭弹出框后,是否可复位弹出框值 | boolean | false |
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(rate) {
4
4
  @include b() {
5
- @include universal;
6
- flex-direction: row;
7
- justify-content: flex-start;
5
+ box-sizing: border-box;
6
+ display: inline-flex;
8
7
  }
9
8
 
10
9
  @include e(content) {
@@ -2,9 +2,8 @@
2
2
 
3
3
  @include bem(stepper) {
4
4
  @include b() {
5
- @include universal;
6
- flex-direction: row;
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
- @include universal;
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: background-color var(--sar-switch-transition-duration),
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
- var(--sar-switch-thumb-gap)
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;
@@ -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 = () => {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "id": "sard-uniapp",
3
3
  "name": "sard-uniapp",
4
4
  "displayName": "sard-uniapp",
5
- "version": "1.24.0",
5
+ "version": "1.24.1",
6
6
  "description": "sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库",
7
7
  "main": "index.js",
8
8
  "scripts": {